From 17810b3b68347e838f1d5966de25d206c0e63a83 Mon Sep 17 00:00:00 2001
From: CZT <czt18638530771@163.com>
Date: 星期一, 18 三月 2024 19:33:15 +0800
Subject: [PATCH] 优化出库数据同步

---
 src/main/java/com/fzzy/async/fzzy40/impl/Fzzy40Sync1205.java |  179 +++++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 136 insertions(+), 43 deletions(-)

diff --git a/src/main/java/com/fzzy/async/fzzy40/impl/Fzzy40Sync1205.java b/src/main/java/com/fzzy/async/fzzy40/impl/Fzzy40Sync1205.java
index 86a9d16..cc30aef 100644
--- a/src/main/java/com/fzzy/async/fzzy40/impl/Fzzy40Sync1205.java
+++ b/src/main/java/com/fzzy/async/fzzy40/impl/Fzzy40Sync1205.java
@@ -1,24 +1,23 @@
 package com.fzzy.async.fzzy40.impl;
 
 import com.fzzy.api.Constant;
-import com.fzzy.api.entity.Api1105;
-import com.fzzy.api.entity.Api1205;
-import com.fzzy.api.entity.ApiLog;
+import com.fzzy.api.entity.*;
 import com.fzzy.api.service.ApiCommonService;
 import com.fzzy.api.service.ApiTriggerService;
 import com.fzzy.api.utils.ContextUtil;
-import com.fzzy.api.view.repository.Api1205Rep;
-import com.fzzy.api.view.repository.ApiLogRep;
+import com.fzzy.api.view.repository.*;
 import com.fzzy.async.fzzy40.entity.Fz40InoutNoticeOut;
 import com.fzzy.async.fzzy40.entity.Fz40InoutRecord;
+import com.fzzy.async.fzzy40.entity.Fz40InoutRecordItem;
 import com.fzzy.async.fzzy40.repository.Fzzy40Sync1202Rep;
+import com.fzzy.async.fzzy40.repository.Fzzy40SyncInoutRecordItemRep;
 import com.fzzy.async.fzzy40.repository.Fzzy40SyncNoticeOutRep;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.time.DateFormatUtils;
+import org.apache.commons.lang.time.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
-
 import java.util.*;
 
 /**
@@ -35,11 +34,19 @@
     @Autowired
     private Fzzy40Sync1202Rep fzzySync1202Rep;
     @Autowired
+    private Fzzy40SyncInoutRecordItemRep fzzy40SyncInoutRecordItemRep;
+    @Autowired
     private Fzzy40SyncNoticeOutRep fzzySyncNoticeOutRep;
     @Autowired
     private ApiTriggerService apiTriggerService;
     @Autowired
+    private Api1201Rep api1201Rep;
+    @Autowired
     private Api1205Rep api1205Rep;
+    @Autowired
+    private Api1206Rep api1206Rep;
+    @Autowired
+    private Api1404Rep api1404Rep;
     @Autowired
     private ApiCommonService commonService;
     @Autowired
@@ -52,7 +59,7 @@
      * @param start
      * @param end
      */
-    public void syncData(String kqdm, String deptId, Date start, Date end) {
+    public void  syncData(String kqdm, String deptId, Date start, Date end) {
 
         log.info("-------------1205鎺ュ彛鏁版嵁寮�濮嬪悓姝�------------------");
 
@@ -77,10 +84,12 @@
         Api1105 api1105;
         List<Fz40InoutNoticeOut> listInoutNotice;
         List<Api1205> api1205List;
-        String ywsj = "";
-        String num = "";
-        Map<String, Integer> map = new HashMap<>();
+        List<Api1206> api1206List;
+        List<Fz40InoutRecordItem> listInoutRecordItem;
         for (Fz40InoutRecord sysData : list) {
+            if(sysData.getRecordStatus().equals("DEL") || sysData.getRecordStatus().equals("ERROR")){
+                continue;
+            }
             if(null == sysData.getRecordWeight() || sysData.getRecordWeight() == 0){
                 sysData.setRecordWeight(sysData.getSettleWeight());
             }
@@ -95,34 +104,43 @@
             }
             apiData = new Api1205();
             apiData.setCkywdh(Constant.INOUT_TYPE_15 + sysData.getId().substring(4));
-            //鍒ゆ柇涓氬姟鏃堕棿涓庡崟鎹彿鏄惁鍖归厤
-            ywsj = DateFormatUtils.format(sysData.getCompleteTime(),"yyMMdd");
-            if(!ywsj.equals(sysData.getId().substring(4, 10))){
-                if(null == map.get(ywsj)){
-                    map.put(ywsj, 10201);
-                }
-                num = String.valueOf(map.get(ywsj)).substring(1);
-                apiData.setCkywdh(Constant.INOUT_TYPE_15 + ywsj + num);
-                map.put(ywsj, map.get(ywsj) + 1);
-            }
 
             //璐т綅浠g爜
             apiData.setHwdm(api1105.getHwdm());
             apiData.setYwlx(Constant.INOUT_TYPE_1);
+            apiData.setYwrq(DateUtils.parseDate(sysData.getId().substring(2, 10), new String[] { "yyyyMMdd" }));
+            apiData.setCyr(sysData.getUserName());
+
+            //榛樿涓�涓殢渚垮��
+            apiData.setLxdh(StringUtils.isEmpty(sysData.getUserContact()) ? "13012345678" : sysData.getUserContact().trim());
+
+            if(StringUtils.isEmpty(sysData.getUserId()) || sysData.getUserId().length() != 18){
+                sysData.setUserId("410183199003187055");
+            }
+            apiData.setSfzh(sysData.getUserId());
 
             //閫氱煡鍗曞彿
             apiData.setCktzdh(sysData.getNoticeId());
-
-            apiData.setYwrq(sysData.getRegisterTime());
-
             //鑾峰彇鍚堝悓鍙�
             listInoutNotice = fzzySyncNoticeOutRep.listInoutNoticeOutById(sysData.getNoticeId());
-            if(null != listInoutNotice && listInoutNotice.size() >0){
-                apiData.setHth(api1105.getHwdm().substring(0,18) + listInoutNotice.get(0).getContractId());
-            }else {
-                apiData.setHth(api1105.getHwdm().substring(0,18) + apiData.getCkywdh());
+            if (null != listInoutNotice && listInoutNotice.size() > 0) {
+                //鍚堝悓鍙�
+                if (StringUtils.isNotEmpty(listInoutNotice.get(0).getContractId())) {
+                    List<Api1201> api1201List = api1201Rep.getDataByBizId(listInoutNotice.get(0).getContractId());
+                    if(null != api1201List && api1201List.size() > 0){
+                        apiData.setHth(api1201List.get(0).getHth());
+                    }
+                }
+                if (StringUtils.isNotEmpty(listInoutNotice.get(0).getPlanId())) {
+                    List<Api1404> api1404List = api1404Rep.getDataByBizIdAndKqdm(listInoutNotice.get(0).getPlanId(), kqdm);
+                    if(null != api1404List && api1404List.size() > 0){
+                        apiData.setJhmxh(api1404List.get(0).getJhmxdh());
+                        if(StringUtils.isEmpty(sysData.getFoodYear())){
+                            sysData.setFoodYear(api1404List.get(0).getShnd());
+                        }
+                    }
+                }
             }
-
 
             //杩愯緭宸ュ叿锛岃嫢涓虹┖锛屽垯榛樿缁�1-姹借溅
             apiData.setYsgj(StringUtils.isEmpty(sysData.getTransType()) ? "1":sysData.getTransType());
@@ -132,7 +150,7 @@
             apiData.setDjsj(sysData.getRegisterTime());
 
             //绮鍝佺
-            String mappingCode = apiTriggerService.getMappingCode(Constant.TRIGGER_P_LSPZ, sysData.getFoodVariety());
+            String mappingCode = apiTriggerService.getMappingCode(Constant.TRIGGER_P_LSPZ, sysData.getFoodVariety().substring(0, 3));
             apiData.setLspzdm(mappingCode);
 
             //绮绛夌骇
@@ -143,27 +161,68 @@
             mappingCode = apiTriggerService.getMappingCode(Constant.TRIGGER_P_LSXZ, sysData.getFoodType());
             apiData.setLsxzdm(mappingCode);
 
-            apiData.setShnd(StringUtils.isEmpty(sysData.getFoodYear())? DateFormatUtils.format(new Date(), "yyyy") :sysData.getFoodYear());
+            apiData.setShnd(StringUtils.isEmpty(sysData.getFoodYear())? DateFormatUtils.format(sysData.getRegisterTime(), "yyyy") :sysData.getFoodYear());
 
             //浜у湴浠g爜
-            String cddm = commonService.getFoodLocationIdFromCache(sysData.getFoodLocation());
-            apiData.setCddm(cddm);
+            mappingCode = commonService.getFoodLocationIdFromCache(sysData.getFoodLocation());
+            if(StringUtils.isEmpty(mappingCode)){
+                mappingCode = apiData.getHwdm().substring(2,8);
+            }
+            apiData.setCddm(mappingCode);
 
             //鐨噸淇℃伅
             apiData.setPz(sysData.getEmptyWeight());
+            if (null == sysData.getEmptyWeightTime()) {
+                sysData.setEmptyWeightTime(DateUtils.addMinutes(sysData.getRegisterTime(), 25));
+            }
+            if(!sysData.getEmptyWeightTime().after(sysData.getRegisterTime())){
+                sysData.setEmptyWeightTime(DateUtils.addMinutes(sysData.getRegisterTime(), 25));
+            }
             apiData.setPzjlsj(sysData.getEmptyWeightTime());
-            apiData.setPzjby(sysData.getEmptyWeightUser());
-            apiData.setPzjly(sysData.getEmptyWeightUser());
+            apiData.setPzjby(StringUtils.isEmpty(sysData.getEmptyWeightUser())?"鐩戠鍛�":sysData.getEmptyWeightUser());
+            apiData.setPzjly(StringUtils.isEmpty(sysData.getEmptyWeightUser())?"璁¢噺鍛�":sysData.getEmptyWeightUser());
 
             //姣涢噸淇℃伅
             apiData.setMz(sysData.getFullWeight());
+            if (null == sysData.getFullWeightTime()) {
+                sysData.setFullWeightTime(DateUtils.addMinutes(sysData.getEmptyWeightTime(), 60));
+            }
+            if(!sysData.getFullWeightTime().after(sysData.getEmptyWeightTime())){
+                sysData.setFullWeightTime(DateUtils.addMinutes(sysData.getEmptyWeightTime(), 60));
+            }
             apiData.setMzjlsj(sysData.getFullWeightTime());
-            apiData.setMzjby(sysData.getFullWeightUser());
-            apiData.setMzjly(sysData.getFullWeightUser());
+            apiData.setMzjby(StringUtils.isEmpty(sysData.getFullWeightUser())?"鐩戠鍛�":sysData.getFullWeightUser());
+            apiData.setMzjly(StringUtils.isEmpty(sysData.getFullWeightUser())?"璁¢噺鍛�":sysData.getFullWeightUser());
 
             //鍑�閲�
             apiData.setJz(sysData.getRecordWeight());
+            if(!sysData.getCompleteTime().after(sysData.getFullWeightTime())){
+                sysData.setCompleteTime(DateUtils.addMinutes(sysData.getFullWeightTime(), 10));
+            }
             apiData.setCmsj(sysData.getCompleteTime());
+            //缁撶畻鍗曞彿
+            if(StringUtils.isNotEmpty(sysData.getSettleId())){
+                apiData.setCkjsdh(kqdm + sysData.getSettleId());
+            }
+            if(StringUtils.isNotEmpty(apiData.getHth())){
+                api1206List = api1206Rep.getDataByHthAndHwdm(apiData.getHth(), apiData.getHwdm());
+                if(null == api1206List || api1206List.isEmpty()){
+                    api1206List = api1206Rep.getDataByHth(apiData.getHth());
+                    if(null != api1206List && api1206List.size() > 0){
+                        apiData.setCkjsdh(api1206List.get(0).getCkjsdh());
+                    }
+                }else {
+                    apiData.setCkjsdh(api1206List.get(0).getCkjsdh());
+                }
+            }
+
+            apiData.setCchlx("01");
+            apiData.setXldd("搴撳唴");
+            apiData.setBzbdbz(25);
+            apiData.setCmqrmgryxm(StringUtils.isEmpty(sysData.getRegisterUser())?"鐧昏浜�":sysData.getRegisterUser());
+            apiData.setDjmgryxm(StringUtils.isEmpty(sysData.getRegisterUser())?"鐧昏浜�":sysData.getRegisterUser());
+            apiData.setZcbgyxm(StringUtils.isEmpty(sysData.getHandleUser())?"鍊间粨鍛�":sysData.getHandleUser());
+            apiData.setZxzydw("澶栬仒鍗曚綅");
 
             //鎿嶄綔鏍囧織鍙婃渶鍚庢洿鏂版椂闂�
             apiData.setZhgxsj(sysData.getUpdateTime());
@@ -172,16 +231,50 @@
             apiData.setBizId(sysData.getId());
             apiData.setKqdm(kqdm);
             apiData.setSyncTime(new Date());
-            log.info("1201---鍚屾鏁版嵁锛歿}",apiData.toString());
+            log.info("1205---鍚屾鏁版嵁锛歿}",apiData.toString());
 
-            api1205List = api1205Rep.getDataById(apiData.getCkywdh());
-            if(null == api1205List || api1205List.isEmpty()){
-                apiData.setCzbz(Constant.CZBZ_I);
+            //鍒ゆ柇鏄惁涓鸿埞杩�
+            if(StringUtils.isNotEmpty(sysData.getTransType()) && sysData.getTransType().equals("3")){
+                listInoutRecordItem = fzzy40SyncInoutRecordItemRep.findDataByRecordId(sysData.getId());
+                if(null == listInoutRecordItem || listInoutRecordItem.isEmpty()){
+                    api1205Rep.save(apiData);
+                    continue;
+                }
+
+                int idNum = Integer.valueOf(sysData.getId().substring(12))*100 + 10001;
+                for (Fz40InoutRecordItem fz40InoutRecordItem : listInoutRecordItem) {
+                    if ("DEL".equals(fz40InoutRecordItem.getRecordStatus())) {
+                        continue;
+                    }
+                    if(fz40InoutRecordItem.getSettleWeight() <= 0){
+                        continue;
+                    }
+                    apiData.setCkywdh(Constant.INOUT_TYPE_15 + sysData.getId().substring(4,10) + String.valueOf(idNum).substring(1));
+                    apiData.setMz(fz40InoutRecordItem.getFullWeight());
+                    apiData.setPz(fz40InoutRecordItem.getEmptyWeight());
+                    apiData.setJz(fz40InoutRecordItem.getSettleWeight());
+                    apiData.setMzjlsj(fz40InoutRecordItem.getFullWeightTime());
+                    apiData.setPzjlsj(fz40InoutRecordItem.getEmptyWeightTime());
+                    apiData.setKzl(0 - fz40InoutRecordItem.getDe());
+                    api1205List = api1205Rep.getDataById(apiData.getCkywdh());
+                    if(null == api1205List || api1205List.isEmpty()){
+                        apiData.setCzbz(Constant.CZBZ_I);
+                    }else {
+                        apiData.setCzbz(api1205List.get(0).getCzbz());
+                    }
+                    api1205Rep.save(apiData);
+                    idNum ++;
+                }
             }else {
-                apiData.setCzbz(api1205List.get(0).getCzbz());
+                api1205List = api1205Rep.getDataById(apiData.getCkywdh());
+                if(null == api1205List || api1205List.isEmpty()){
+                    apiData.setCzbz(Constant.CZBZ_I);
+                }else {
+                    apiData.setCzbz(api1205List.get(0).getCzbz());
+                }
+                //淇濆瓨鏁版嵁
+                api1205Rep.save(apiData);
             }
-            //淇濆瓨鏁版嵁
-            api1205Rep.save(apiData);
         }
         } catch (Exception e) {
             log.error("---鍚屾澶辫触----{}", e);

--
Gitblit v1.9.3