Переглянути джерело

销售订单 定时同步添加更新逻辑

liuchaohui 2 роки тому
батько
коміт
d31b9c4cc8

+ 28 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/quartz/job/AddOrderJob.java

@@ -1,6 +1,7 @@
 package org.jeecg.modules.quartz.job;
 
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -155,8 +156,15 @@ public class AddOrderJob implements Job,ApplicationContextAware {
                 }
             }
             List<JSONObject> jian = JsonChangeUtils.toJSONObject(sumlist);
+            //是否是更新数据 true更新数据  false新数据
+            boolean isNewOrder = false;
             for (JSONObject jsonObject:jian) {
                 SyOrderData sy = JSONObject.toJavaObject(jsonObject,SyOrderData.class);
+                //判断该数据是否已存在 已存在则更新未参照的数据
+                SyOrderData haveOrder = syOrderDataService.getById(sy.getAccount()+sy.getId());
+                if(haveOrder!=null){
+                    isNewOrder=true;
+                }
                 String ID = sy.getId();
                 String sql = "SELECT " +
                         "s.AutoID AS id," +
@@ -206,6 +214,15 @@ public class AddOrderJob implements Job,ApplicationContextAware {
                 for (JSONObject Object:jianSon) {
                     SyOrderDataItem sy2 = JSONObject.toJavaObject(Object, SyOrderDataItem.class);
                     sy2.setId(sy.getAccount()+sy2.getId());
+                    if(isNewOrder){
+                        SyOrderDataItem item = syOrderDataItemService.queryItemMub(sy2.getId());
+                        if(item==null){
+                            continue;
+                        }else {
+                            //更新数据前 删除旧数据防止id冲突
+                            syOrderDataItemService.deleteByID(sy2.getId());
+                        }
+                    }
                     sy2.setSyOrderDataId(sy.getAccount()+sy2.getSyOrderDataId());
                     SyOrderDataVO ordervo = queryOrder(sy2.getId());
                     if(ordervo != null){
@@ -240,6 +257,10 @@ public class AddOrderJob implements Job,ApplicationContextAware {
                             sy2.setRSupplier(rsup.get(1));
                         }
                     }
+                    if(!isNewOrder){
+                        syOrderDataItemService.save(sy2);
+                        continue;
+                    }
                     syItemList.add(sy2);
                 }
                 //添加单证id 原数据账套+原数据id
@@ -262,7 +283,13 @@ public class AddOrderJob implements Job,ApplicationContextAware {
                 for (SyOrderDataItem sy2:syItemList) {
                     syOrderDataItemService.save(sy2);
                 }
-                syOrderDataService.save(sy);
+                if(isNewOrder){
+                    Wrapper<SyOrderData> wrapper = new QueryWrapper<>();
+                    syOrderDataService.update(sy,wrapper);
+                    isNewOrder=false;
+                }else {
+                    syOrderDataService.save(sy);
+                }
                 //回写拉取的数据状态 1
                 String blackWrite = "UPDATE SO_SOMain SET cdefine15 = '1' WHERE id='"+syId+"'";
                 if(sy.getAccount().equals("901")){