liuchaohui 2 years ago
parent
commit
a47c694277

+ 45 - 18
jeecg-boot-module-system/src/main/java/org/jeecg/modules/documents/orderData/service/impl/SyOrderDataServiceImpl.java

@@ -1,6 +1,7 @@
 package org.jeecg.modules.documents.orderData.service.impl;
 
 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;
@@ -164,10 +165,17 @@ public class SyOrderDataServiceImpl extends ServiceImpl<SyOrderDataMapper, SyOrd
                return result;
             }
             List<JSONObject> jian = JsonChangeUtils.toJSONObject(sumlist);
+            //是否是更新数据 true更新数据  false新数据
+            boolean isNewOrder = false;
             int jianMub = jian.size();
             for (JSONObject jsonObject:jian) {
                 jianMub--;
                 SyOrderData sy = JSONObject.toJavaObject(jsonObject,SyOrderData.class);
+                //判断该数据是否已存在 已存在则更新未参照的数据
+                SyOrderData haveOrder = getById(sy.getAccount()+sy.getId());
+                if(haveOrder!=null){
+                    isNewOrder=true;
+                }
                 String ID = sy.getId();
                 String sql = "SELECT " +
                         "s.AutoID AS id," +
@@ -217,6 +225,15 @@ public class SyOrderDataServiceImpl extends ServiceImpl<SyOrderDataMapper, SyOrd
                 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){
@@ -251,36 +268,46 @@ public class SyOrderDataServiceImpl extends ServiceImpl<SyOrderDataMapper, SyOrd
                             sy2.setRSupplier(rsup.get(1));
                         }
                     }
-
+                    if(!isNewOrder){
+                        syOrderDataItemService.save(sy2);
+                        continue;
+                    }
                     syItemList.add(sy2);
                 }
                 //添加单证id 原数据账套+原数据id
                 String syId = sy.getId();
                 sy.setId(sy.getAccount()+sy.getId());
 
-                if(syItemList.size()<jianSon.size()){
-                    //回写不拉取的数据状态 0
-                    String blackWrite = "UPDATE SO_SOMain SET cdefine15 = '0' WHERE id='"+syId+"'";
-                    if(sy.getAccount().equals("901")){
-                        senYuDataSourceOne.update(blackWrite);
-                    }else if(sy.getAccount().equals("902")){
-                        senYuDataSourceTwo.update(blackWrite);
-                    }else if(sy.getAccount().equals("903")){
-                        senYuDataSourceThree.update(blackWrite);
-                    }
-                    //进入下一个主表的添加,这里是单个订单同步 所以是返回同步失败且通知原因
-                    if(jianMub<1){
-                        result.setMessage("同步失败,销售订单不符合同步需求!!!");
-                        return result;
-                    }else {
-                        continue;
+                if(!isNewOrder){
+                    if(syItemList.size()<jianSon.size()){
+                        //回写不拉取的数据状态 0
+                        String blackWrite = "UPDATE SO_SOMain SET cdefine15 = '0' WHERE id='"+syId+"'";
+                        if(sy.getAccount().equals("901")){
+                            senYuDataSourceOne.update(blackWrite);
+                        }else if(sy.getAccount().equals("902")){
+                            senYuDataSourceTwo.update(blackWrite);
+                        }else if(sy.getAccount().equals("903")){
+                            senYuDataSourceThree.update(blackWrite);
+                        }
+                        //进入下一个主表的添加,这里是单个订单同步 所以是返回同步失败且通知原因
+                        if(jianMub<1){
+                            result.setMessage("同步失败,销售订单不符合同步需求!!!");
+                            return result;
+                        }else {
+                            continue;
+                        }
                     }
                 }
                 //添加主表数据进入数据库
                 for (SyOrderDataItem sy2:syItemList) {
                     syOrderDataItemService.save(sy2);
                 }
-                save(sy);
+                if(isNewOrder){
+                    updateById(sy);
+                    isNewOrder=false;
+                }else {
+                    save(sy);
+                }
                 //回写拉取的数据状态 1
                 String blackWrite = "UPDATE SO_SOMain SET cdefine15 = '1' WHERE id='"+syId+"'";
                 if(sy.getAccount().equals("901")){

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

@@ -216,7 +216,7 @@ public class AddOrderJob implements Job,ApplicationContextAware {
                     sy2.setId(sy.getAccount()+sy2.getId());
                     if(isNewOrder){
                         SyOrderDataItem item = syOrderDataItemService.queryItemMub(sy2.getId());
-                        if(item==null){
+                        if(item!=null){
                             continue;
                         }else {
                             //更新数据前 删除旧数据防止id冲突
@@ -267,25 +267,26 @@ public class AddOrderJob implements Job,ApplicationContextAware {
                 String syId = sy.getId();
                 sy.setId(sy.getAccount()+sy.getId());
 
-                if(syItemList.size()<jianSon.size()){
-                    //回写不拉取的数据状态 0
-                    String blackWrite = "UPDATE SO_SOMain SET cdefine15 = '0' WHERE id='"+syId+"'";
-                    if(sy.getAccount().equals("901")){
-                        senYuDataSourceOne.update(blackWrite);
-                    }else if(sy.getAccount().equals("902")){
-                        senYuDataSourceTwo.update(blackWrite);
-                    }else if(sy.getAccount().equals("903")){
-                        senYuDataSourceThree.update(blackWrite);
+                if(!isNewOrder){
+                    if(syItemList.size()<jianSon.size()){
+                        //回写不拉取的数据状态 0
+                        String blackWrite = "UPDATE SO_SOMain SET cdefine15 = '0' WHERE id='"+syId+"'";
+                        if(sy.getAccount().equals("901")){
+                            senYuDataSourceOne.update(blackWrite);
+                        }else if(sy.getAccount().equals("902")){
+                            senYuDataSourceTwo.update(blackWrite);
+                        }else if(sy.getAccount().equals("903")){
+                            senYuDataSourceThree.update(blackWrite);
+                        }
+                        continue;
                     }
-                    continue;
                 }
                 //添加主子表数据进入数据库
                 for (SyOrderDataItem sy2:syItemList) {
                     syOrderDataItemService.save(sy2);
                 }
                 if(isNewOrder){
-                    Wrapper<SyOrderData> wrapper = new QueryWrapper<>();
-                    syOrderDataService.update(sy,wrapper);
+                    syOrderDataService.updateById(sy);
                     isNewOrder=false;
                 }else {
                     syOrderDataService.save(sy);