From a63b44e4b7cdc19db7a91d6d9c4b3f1ec5acf4d1 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期二, 19 九月 2023 15:38:18 +0800
Subject: [PATCH] 修改

---
 server/service/src/main/java/com/doumee/service/business/impl/BaseDataServiceImpl.java |  158 +++++++++++++++++++++++++++-------------------------
 1 files changed, 83 insertions(+), 75 deletions(-)

diff --git a/server/service/src/main/java/com/doumee/service/business/impl/BaseDataServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/BaseDataServiceImpl.java
index 78f36fe..8ea175e 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/BaseDataServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/BaseDataServiceImpl.java
@@ -30,6 +30,7 @@
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.UUID;
@@ -315,6 +316,7 @@
     public static   boolean IS_RUNNING = false;
     @Override
     @Async
+    @Transactional(isolation = Isolation.READ_UNCOMMITTED)
     public   void dealBaseData() {
         if(IS_RUNNING){
             return;
@@ -349,87 +351,91 @@
             BigDecimal rate = systemDictDataBiz.getGoodsPriceRate();
             OssModel ossModel = initOssModel();
             Date date = new Date();
+            List<BaseCateParam> baseCateParamList = new ArrayList<>();
+            List<Multifile> fileList = new ArrayList<>();
+            List<BaseGoodsParam> baseGoodsParamList = new ArrayList<>();
             for(BaseData data : allLis){
-              dealPerData(ossModel,rate,date,data,cateList,brandList,paramList);
+                BaseGoods goods = new BaseGoods();
+                goods.setBaseDataId(data.getId());
+                goods.setIsdeleted(Constants.ZERO);
+                //鏌ヨ鏄惁瀛樺湪鍟嗗搧
+                BaseGoods model = baseGoodsMapper.selectOne(new QueryWrapper<>(goods).last(" limit 1"));
+                goods.setName(StringUtils.defaultString(data.getName(),data.getTitle()));
+                goods.setRemark(data.getTitle());
+                goods.setContent(data.getTitle());
+                goods.setStatus(Constants.ZERO);
+                goods.setOrigin(Constants.BasegoodsOrigin.basedata);
+                goods.setShortPinyin(PinYinUtil.getFirstSpell(goods.getName()));
+                goods.setPinyin(PinYinUtil.getFullSpell(goods.getName()));
+                goods.setZdPrice(data.getPrice());
+                //澶勭悊鍝佺墝鏁版嵁
+                Brand bModel = getBrandModelFromList(data.getBrand(),brandList);
+                if(bModel!= null){
+                    goods.setBrandId(bModel.getId());
+                }
+                //澶勭悊鍒楄〃鏁版嵁
+                BaseCategory cModel = getCateModelFromList(rate,data.getCategory(),ossModel,data.getCategoryImg(), cateList);
+                if(cModel!= null){
+                    goods.setCategoryId(cModel.getId());
+                }
+                goods.setImgurl(getOssImgurl(ossModel,ossModel.getGoodsFolder(), data.getImgurl()));
+                goods.setPrice(Constants.formatBigdecimal(data.getSaleprice()).multiply(Constants.formatBigdecimal(cModel.getPriceRate())));
+                if(model!=null){
+                    //濡傛灉宸茬粡瀛樺湪锛岄�昏緫鍒犻櫎鏃х殑鍟嗗搧鏁版嵁
+//            UpdateWrapper<BaseGoods> updateModel = new UpdateWrapper<>();
+//            updateModel.lambda().set(BaseGoods::getIsdeleted,Constants.ONE);
+//            updateModel.lambda().set(BaseGoods::getEditDate, new Date());
+//            updateModel.lambda().eq(BaseGoods::getBaseDataId, data.getId());
+//            baseGoodsMapper.update(null, updateModel);
+                    goods.setEditDate(date);
+                    goods.setId(model.getId());
+                    baseGoodsMapper.updateById(goods);
+                    //鍒犻櫎鍘熸湁闄勪欢澶у浘
+                    UpdateWrapper<Multifile> updateModel = new UpdateWrapper<>();
+                    updateModel.lambda().set(Multifile::getIsdeleted,Constants.ONE);
+                    updateModel.lambda().set(Multifile::getEditDate, new Date());
+                    updateModel.lambda().eq(Multifile::getObjId, goods.getId());
+                    updateModel.lambda().eq(Multifile::getObjType, Constants.ZERO);
+                    multifileMapper.delete(updateModel);
+                    //鍒犻櫎鍘熸湁鍟嗗搧灞炴��
+                    UpdateWrapper<BaseGoodsParam> bgModel = new UpdateWrapper<>();
+                    bgModel.lambda().set(BaseGoodsParam::getIsdeleted,Constants.ONE);
+                    bgModel.lambda().set(BaseGoodsParam::getEditDate, new Date());
+                    bgModel.lambda().eq(BaseGoodsParam::getGoodsId, goods.getId());
+                    baseGoodsParamMapper.delete(bgModel);
+                }else{
+                    //鎻掑叆鏂板晢鍝佹暟鎹�
+                    goods.setCreateDate(date);
+                    baseGoodsMapper.insert(goods);
+                }
+                 //澶勭悊鍒嗙被灞炴��
+                dealCateParamAll(cModel.getId(),goods.getId(),data,paramList, baseGoodsParamList );
+                 //澶勭悊鑳屾櫙鍥�
+                dealBgImgAll(ossModel,goods.getId(),data,fileList);
+                data.setEditDate(new Date());
+                data.setStatus(Constants.ONE);
+                //鏇存柊鏁版嵁澶勭悊鐘舵��
+                baseDataMapper.updateById(data);
+            }
+            if(fileList.size()>0){
+                multifileMapper.insertBatch(fileList);
+            }
+            if(baseGoodsParamList.size()>0){
+                baseGoodsParamMapper.insertBatch(baseGoodsParamList);
             }
             log.info("寮�濮嬪鐞嗘簮鏁版嵁=================success================澶勭悊鏁版嵁鍏憋紙"+allLis.size()+"锛変釜===");
         }catch (Exception e){
             e.printStackTrace();
             log.info("寮�濮嬪鐞嗘簮鏁版嵁=================error==================="+e.getMessage());
+            throw  e;
         }finally {
             IS_RUNNING = false;
             log.info("寮�濮嬪鐞嗘簮鏁版嵁=================end===================");
         }
     }
 
-    @Transactional(isolation = Isolation.READ_UNCOMMITTED)
-    private void dealPerData(OssModel ossModel, BigDecimal rate, Date date, BaseData data, List<BaseCategory> cateList, List<Brand> brandList, List<BaseCateParam> paramList) {
-        BaseGoods goods = new BaseGoods();
-        goods.setBaseDataId(data.getId());
-        goods.setIsdeleted(Constants.ZERO);
-        //鏌ヨ鏄惁瀛樺湪鍟嗗搧
-        BaseGoods model = baseGoodsMapper.selectOne(new QueryWrapper<>(goods).last(" limit 1"));
-        goods.setName(StringUtils.defaultString(data.getName(),data.getTitle()));
-        goods.setRemark(data.getTitle());
-        goods.setContent(data.getTitle());
-        goods.setStatus(Constants.ZERO);
-        goods.setOrigin(Constants.BasegoodsOrigin.basedata);
-        goods.setShortPinyin(PinYinUtil.getFirstSpell(goods.getName()));
-        goods.setPinyin(PinYinUtil.getFullSpell(goods.getName()));
-        goods.setZdPrice(data.getPrice());
-        //澶勭悊鍝佺墝鏁版嵁
-        Brand bModel = getBrandModelFromList(data.getBrand(),brandList);
-        if(bModel!= null){
-            goods.setBrandId(bModel.getId());
-        }
-        //澶勭悊鍒楄〃鏁版嵁
-        BaseCategory cModel = getCateModelFromList(rate,data.getCategory(),ossModel,data.getCategoryImg(), cateList);
-        if(cModel!= null){
-            goods.setCategoryId(cModel.getId());
-        }
-        goods.setImgurl(getOssImgurl(ossModel,ossModel.getGoodsFolder(), data.getImgurl()));
-        goods.setPrice(Constants.formatBigdecimal(data.getSaleprice()).multiply(Constants.formatBigdecimal(cModel.getPriceRate())));
-         if(model!=null){
-            //濡傛灉宸茬粡瀛樺湪锛岄�昏緫鍒犻櫎鏃х殑鍟嗗搧鏁版嵁
-//            UpdateWrapper<BaseGoods> updateModel = new UpdateWrapper<>();
-//            updateModel.lambda().set(BaseGoods::getIsdeleted,Constants.ONE);
-//            updateModel.lambda().set(BaseGoods::getEditDate, new Date());
-//            updateModel.lambda().eq(BaseGoods::getBaseDataId, data.getId());
-//            baseGoodsMapper.update(null, updateModel);
-             goods.setEditDate(date);
-             goods.setId(model.getId());
-             baseGoodsMapper.updateById(goods);
-             //鍒犻櫎鍘熸湁闄勪欢澶у浘
-             UpdateWrapper<Multifile> updateModel = new UpdateWrapper<>();
-             updateModel.lambda().set(Multifile::getIsdeleted,Constants.ONE);
-             updateModel.lambda().set(Multifile::getEditDate, new Date());
-             updateModel.lambda().eq(Multifile::getObjId, goods.getId());
-             updateModel.lambda().eq(Multifile::getObjType, Constants.ZERO);
-             multifileMapper.delete(updateModel);
-             //鍒犻櫎鍘熸湁鍟嗗搧灞炴��
-             UpdateWrapper<BaseGoodsParam> bgModel = new UpdateWrapper<>();
-             bgModel.lambda().set(BaseGoodsParam::getIsdeleted,Constants.ONE);
-             bgModel.lambda().set(BaseGoodsParam::getEditDate, new Date());
-             bgModel.lambda().eq(BaseGoodsParam::getGoodsId, goods.getId());
-             baseGoodsParamMapper.delete(bgModel);
-        }else{
-            //鎻掑叆鏂板晢鍝佹暟鎹�
-            goods.setCreateDate(date);
-            baseGoodsMapper.insert(goods);
-        }
-        //澶勭悊鍒嗙被灞炴��
-        dealCateParamAll(cModel.getId(),goods.getId(),data,paramList);
-        //澶勭悊鑳屾櫙鍥�
-        dealBgImgAll(ossModel,goods.getId(),data);
 
-        data.setEditDate(new Date());
-        data.setStatus(Constants.ONE);
-        //鏇存柊鏁版嵁澶勭悊鐘舵��
-        baseDataMapper.updateById(data);
-    }
-
-
-    private void dealBgImgAll(OssModel ossModel, Integer id, BaseData data) {
+    private void dealBgImgAll(OssModel ossModel, Integer id, BaseData data,List<Multifile> fileList) {
         int i =0;
         //澶氬浘锛岃嫳鏂囬�楀彿闅斿紑
         if(StringUtils.isNotBlank(data.getBgImg())){
@@ -437,7 +443,7 @@
             String[] imgs =tImg.split(",");
             for (int j = 0; j < imgs.length; j++) {
                 if(StringUtils.isNotBlank(imgs[j])){
-                    i += addImg(i,ossModel,id,imgs[j]);
+                    i += addImg(i,ossModel,id,imgs[j],fileList);
                 }
             }
         }
@@ -446,7 +452,7 @@
 //        addImg(i,ossModel,id,data.getBgImg3());
     }
 
-    private int addImg(int i,OssModel ossModel, Integer id,String bgImg) {
+    private int addImg(int i,OssModel ossModel, Integer id,String bgImg,List<Multifile> fileList) {
         if(StringUtils.isNotBlank(bgImg)){
             String img =getOssImgurl(ossModel, ossModel.getGoodsFolder() ,bgImg);
             if(StringUtils.isNotBlank(img)){
@@ -459,7 +465,8 @@
                 f.setCreateDate(new Date());
                 f.setIsdeleted(Constants.ZERO);
                 f.setSortnum(i);
-                multifileMapper.insert(f);
+                fileList.add(f);
+//                multifileMapper.insert(f);
                 return  1;
             }
         }
@@ -480,14 +487,14 @@
     }
 
 
-    private void dealCateParamAll(Integer cateId,Integer goodsId, BaseData data  ,List<BaseCateParam> cateList) {
+    private void dealCateParamAll(Integer cateId,Integer goodsId, BaseData data  ,List<BaseCateParam> cateList,List<BaseGoodsParam> paramList) {
         Method[] fields = data.getClass().getMethods();	// 鑾峰彇瀵硅薄鐨勬墍鏈夊睘鎬�
         for (Method item : fields) {
             String name = item.getName();
             if(name.indexOf("getAttr") == 0){
                 try {
                     String val =(String) item.invoke(data);
-                    dealCateParam(cateId,goodsId,val.toString(),cateList);
+                    dealCateParam(cateId,goodsId,val.toString(),cateList,paramList);
                 } catch (Exception e) {
 //                    throw new RuntimeException(e);
                 }
@@ -530,7 +537,7 @@
 //        dealCateParam(cateId,goodsId,data.getAttr34(),cateList);
     }
 
-    private void dealCateParam(Integer cateId, Integer goodsId, String attr,List<BaseCateParam> list) {
+    private void dealCateParam(Integer cateId, Integer goodsId, String attr,List<BaseCateParam> list,List<BaseGoodsParam> paramList) {
         if(StringUtils.isBlank(attr)){
             return;
         }
@@ -554,7 +561,8 @@
         p.setVal(val);
         p.setCreateDate(new Date());
         p.setGoodsId(goodsId);
-        baseGoodsParamMapper.insert(p);
+        paramList.add(p);
+//        baseGoodsParamMapper.insert(p);
     }
 
     /**

--
Gitblit v1.9.3