From 15c8f00ab3a1e3d2d96b56bae0ec11efedd60231 Mon Sep 17 00:00:00 2001
From: 18516761980 <4761516tqsxp>
Date: 星期三, 29 九月 2021 11:14:15 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/common/service/erp/task/ErpScheduler.java |  212 ++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 146 insertions(+), 66 deletions(-)

diff --git a/src/main/java/com/zy/common/service/erp/task/ErpScheduler.java b/src/main/java/com/zy/common/service/erp/task/ErpScheduler.java
index c103a4e..cf2464e 100644
--- a/src/main/java/com/zy/common/service/erp/task/ErpScheduler.java
+++ b/src/main/java/com/zy/common/service/erp/task/ErpScheduler.java
@@ -4,12 +4,14 @@
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.core.common.Cools;
+import com.core.exception.CoolException;
 import com.zy.asrs.entity.MatCode;
 import com.zy.asrs.entity.WaitPakin;
 import com.zy.asrs.service.MatCodeService;
 import com.zy.asrs.service.OutStockMainService;
 import com.zy.asrs.service.OutStockService;
 import com.zy.asrs.service.WaitPakinService;
+import com.zy.asrs.task.AbstractHandler;
 import com.zy.asrs.utils.VersionUtils;
 import com.zy.common.service.erp.ErpService;
 import com.zy.common.service.erp.dto.InStockDto;
@@ -18,6 +20,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.PostConstruct;
 import java.util.Date;
@@ -31,7 +34,7 @@
  */
 @Slf4j
 @Component
-public class ErpScheduler {
+public class ErpScheduler extends AbstractHandler<Exception> {
 
     @Autowired
     private ErpService erpService;
@@ -47,27 +50,24 @@
     private Map<Integer, M_item> itemMap = new HashMap<>();
 
     /**
-     * 鍘熸潗鏂�
+     * 鍘熸潗鏂欏叆搴撳崟
      */
-//    @Scheduled(cron = "0/3 * * * * ? ")
+    @Scheduled(cron = "0/5 * * * * ? ")
 //    @PostConstruct
     public void inStockExecute(){
-//        List<M_item> item = erpService.getItem();
-//        for (M_item item1 : item) {
-//            itemMap.put(item1.getMitemid(), item1);
-//        }
-
         List<InStockDto> readyInStock = erpService.getReadyInStock();
         for (InStockDto dto : readyInStock) {
-            for (InStockBillEntry entry : dto.getInStockBillEntries()) {
-//                if (entry.getFNumber() == null && itemMap.containsKey(entry.getFItemID())) {
-//                    entry.setFNumber(itemMap.get(entry.getFItemID()).getMnumber());
-//                    boolean b = erpService.updateFnumber(entry.getFItemID(), entry.getFNumber());
-//                    if (b) {
-//                        System.err.println(entry.getFItemID() + ": " + entry.getFNumber());
-//                    }
-//                }
 
+            //鍚屼竴鍗曞彿瀛樺湪鐩稿悓鐗╂枡缂栫爜鏁版嵁锛岃鍗曞彿涓嶄簣澶勭悊
+            Number fnumberCount = erpService.QueryFnumberInCount(dto.getInStockBill().getFInterID());
+            if(fnumberCount.intValue() > 1){
+                if (!erpService.haveReadInStock(dto.getInStockBill().getFBillNo(),-1)) {
+                    log.error("鏍囪鍘熸潗鏂欏叆搴撻�氱煡鍗曞凡璇籌nStockBill涓�-1澶辫触[FBillNo={},FInterID={}]", dto.getInStockBill().getFBillNo(),dto.getInStockBill().getFInterID());
+                }
+                continue;
+            }
+
+            for (InStockBillEntry entry : dto.getInStockBillEntries()) {
                 MatCode matCode = matCodeService.selectById(entry.getFnumber());
                 if (null != matCode) {
                     // 鐢熸垚鍏ュ簱閫氱煡鍗�
@@ -78,32 +78,40 @@
                     waitPakin.setAppeTime(new Date());
                     waitPakin.setModiTime(new Date());
                     VersionUtils.setWaitPakIn(waitPakin, matCode);
-                    waitPakin.setMnemonic(entry.getFSourceBillNo()); // todo:luxiaotao 鍗曟嵁缂栧彿
+                    waitPakin.setMnemonic(entry.getFOrderBillNo()); // todo:luxiaotao 鐢熶骇鍗曞彿
                     waitPakin.setSupplier(dto.getInStockBill().getFBillNo()); // todo:luxiaotao 閫氱煡鍗曞彿
+//                    String Fnumber = (Cools.isEmpty(entry.getFSourceBillNo())) ? matCode.getMatNo() : matCode.getMatNo() + "|" + entry.getFSourceBillNo();
+//                    waitPakin.setMatnr(Fnumber);  //浜у搧浠g爜|鐢熶骇鍗曞彿
+//                    waitPakin.setBname(matCode.getMatNo());
                     Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>()
                             .eq("supplier", waitPakin.getSupplier())
-                            .eq("matnr", waitPakin.getMatnr())
-                            .isNull("zpallet");
+                            .eq("matnr", waitPakin.getMatnr());
+//                            .isNull("zpallet");
                     WaitPakin one = waitPakinService.selectOne(wrapper);
                     try {
                         if (one == null) {
                             waitPakin.setAnfme(entry.getFAuxQty());
                             if (!waitPakinService.insert(waitPakin)) {
-                                log.error("{}鍘熸潗鏂欏叆搴撻�氱煡鍗曠殑{}鐗╂枡鏁版嵁澶勭悊澶辫触", waitPakin.getSupplier(), waitPakin.getMatnr());
+                                log.error("鎻愬彇鍘熸潗鏂欏叆搴撻�氱煡鍗旾nStockBillEntry澶辫触[FBillNo={},Fnumber={}]", waitPakin.getSupplier(), waitPakin.getMatnr());
+                            } else {
+                                log.info("鎻愬彇鍘熸潗鏂欏叆搴撻�氱煡鍗旾nStockBillEntry鎴愬姛[FBillNo={},Fnumber={}]", waitPakin.getSupplier(), waitPakin.getMatnr());
+                            }
+                        } else {
+                            waitPakin.setAnfme(entry.getFAuxQty());
+                            if (!waitPakinService.update(waitPakin, wrapper)) {
+                                log.error("鏇存柊鍘熸潗鏂欏叆搴撻�氱煡鍗旾nStockBillEntry澶辫触[FBillNo={},Fnumber={}]", waitPakin.getSupplier(), waitPakin.getMatnr());
+                            } else {
+                                log.info("鏇存柊鍘熸潗鏂欏叆搴撻�氱煡鍗旾nStockBillEntry鎴愬姛[FBillNo={},Fnumber={}]", waitPakin.getSupplier(), waitPakin.getMatnr());
                             }
                         }
-//                        else {
-//                            waitPakin.setAnfme(one.getAnfme() + entry.getFAuxQty());
-//                            waitPakinService.update(waitPakin, wrapper);
-//                        }
                     } catch (Exception e) {
                         e.printStackTrace();
                         System.out.println(JSON.toJSON(waitPakin));
                     }
                 }
             }
-            if (!erpService.haveReadInStock(dto.getInStockBill().getFBillNo())) {
-                log.error("{}鍘熸潗鏂欏叆搴撻�氱煡鍗曞凡璇诲け璐�", dto.getInStockBill().getFBillNo());
+            if (!erpService.haveReadInStock(dto.getInStockBill().getFBillNo(),1)) {
+                log.error("鏍囪鍘熸潗鏂欏叆搴撻�氱煡鍗曞凡璇籌nStockBill澶辫触[FBillNo={}]", dto.getInStockBill().getFBillNo());
             }
         }
 
@@ -111,25 +119,23 @@
 
 
     /**
-     * 鎴愬搧
+     * 鎴愬搧鍏ュ簱鍗�
      */
     @Scheduled(cron = "0/5 * * * * ? ")
 //    @PostConstruct
     public void inCPICMOExecute(){
-//        List<M_item> item = erpService.getItem();
-//        for (M_item item1 : item) {
-//            itemMap.put(item1.getMitemid(), item1);
-//        }
-
         List<CPICMO> cpicmos = erpService.getReadyCPICMO();
         for (CPICMO cpicmo : cpicmos) {
-//                if (Cools.isEmpty(cpicmo.getFnumber()) && itemMap.containsKey(cpicmo.getFItemID())) {
-//                    cpicmo.setFnumber(itemMap.get(cpicmo.getFItemID()).getMnumber());
-//                    boolean b = erpService.updateCFnumber(cpicmo.getFItemID(), cpicmo.getFnumber());
-//                    if (b) {
-//                        System.err.println(cpicmo.getFItemID() + ": " + cpicmo.getFnumber());
-//                    }
-//                }
+
+            //鍚屼竴鍗曞彿瀛樺湪鐩稿悓鐗╂枡缂栫爜鏁版嵁锛岃鍗曞彿涓嶄簣澶勭悊
+            Number fnumberCount = erpService.QueryFnumberCPICMOCount(cpicmo.getFInterID());
+            if(fnumberCount.intValue() > 1){
+                if (!erpService.haveReadCPICMO(cpicmo.getFInterID(),-1)) {
+                    log.error("鏍囪鎴愬搧鍏ュ簱閫氱煡鍗曞凡璇籆PICMO涓�-1澶辫触[Fnumber={},FInterID={}]", cpicmo.getFnumber(),cpicmo.getFInterID());
+                }
+                continue;
+            }
+
             MatCode matCode = matCodeService.selectById(cpicmo.getFnumber());
             if (null != matCode) {
                 // 鐢熸垚鍏ュ簱閫氱煡鍗�
@@ -140,21 +146,33 @@
                 waitPakin.setAppeTime(new Date());
                 waitPakin.setModiTime(new Date());
                 VersionUtils.setWaitPakIn(waitPakin, matCode);
-                waitPakin.setMnemonic(cpicmo.getFSourceBillNo()); // todo:luxiaotao 鍗曟嵁缂栧彿
+                waitPakin.setMnemonic(cpicmo.getFSourceBillNo()); // todo:luxiaotao 鐢熶骇鍗曞彿
                 waitPakin.setSupplier(cpicmo.getFBillNo()); // todo:luxiaotao 閫氱煡鍗曞彿
+//                String Fnumber = (Cools.isEmpty(cpicmo.getFSourceBillNo())) ? matCode.getMatNo() : matCode.getMatNo() + "|" + cpicmo.getFSourceBillNo();
+//                waitPakin.setMatnr(Fnumber);  //浜у搧浠g爜|鐢熶骇鍗曞彿
+//                waitPakin.setBname(matCode.getMatNo());
                 Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>()
                         .eq("supplier", waitPakin.getSupplier())
-                        .eq("matnr", waitPakin.getMatnr())
-                        .isNull("zpallet");
+                        .eq("matnr", waitPakin.getMatnr());
+//                        .isNull("zpallet");
                 WaitPakin one = waitPakinService.selectOne(wrapper);
                 if (one == null) {
                     waitPakin.setAnfme(cpicmo.getFAuxQty());
                     if (!waitPakinService.insert(waitPakin)) {
-                        log.error("{}鎴愬搧鍏ュ簱閫氱煡鍗曠殑{}鐗╂枡鏁版嵁澶勭悊澶辫触", waitPakin.getSupplier(), waitPakin.getMatnr());
+                        log.error("鎻愬彇鎴愬搧鍏ュ簱閫氱煡鍗旵PICMO澶辫触[FBillNo={},Fnumber={}]", waitPakin.getSupplier(), waitPakin.getMatnr());
+                    } else {
+                        log.info("鎻愬彇鎴愬搧鍏ュ簱閫氱煡鍗旵PICMO鎴愬姛[FBillNo={},Fnumber={}]", waitPakin.getSupplier(), waitPakin.getMatnr());
+                    }
+                } else {
+                    waitPakin.setAnfme(cpicmo.getFAuxQty());
+                    if (!waitPakinService.update(waitPakin, wrapper)) {
+                        log.error("鍚屾鏇存柊鎴愬搧鍏ュ簱閫氱煡鍗旵PICMO澶辫触[FBillNo={},Fnumber={}]", waitPakin.getSupplier(), waitPakin.getMatnr());
+                    } else {
+                        log.info("鍚屾鏇存柊鎴愬搧鍏ュ簱閫氱煡鍗旵PICMO澶辫触[FBillNo={},Fnumber={}]", waitPakin.getSupplier(), waitPakin.getMatnr());
                     }
                 }
-                if (!erpService.haveReadCPICMO(cpicmo.getFBillNo())) {
-                    log.error("{}鎴愬搧鍏ュ簱閫氱煡鍗曞凡璇诲け璐�", cpicmo.getFBillNo());
+                if (!erpService.haveReadCPICMO(cpicmo.getFInterID(),1)) {
+                    log.error("鏍囪鎴愬搧鍏ュ簱閫氱煡鍗曞凡璇籆PICMO澶辫触[FBillNo={}]", cpicmo.getFBillNo());
                 }
             }
         }
@@ -192,36 +210,98 @@
     }
 
     /**
-     * 鎴愬搧鍑哄簱-鍙戣揣閫氱煡鍗曡〃澶�
+     * 鎴愬搧鍑哄簱 鍙戣揣閫氱煡鍗曡〃澶�,琛ㄦ槑缁�
      */
     @Scheduled(cron = "0/15 * * * * ? ")
+    @Transactional
     public void syncOutStock(){
-        List<OutStockBill> result = erpService.syncOutStock();
-        for (Integer i = 0; i < result.size(); i++) {
-            OutStockBill main = outStockMainService.selectOne(new EntityWrapper<OutStockBill>().eq("FBrNo", result.get(i).getFBrNo()).and().eq("FInterID", result.get(i).getFInterID()));
+        List<OutStockBill> outStockBills = erpService.syncOutStock();
+        for (Integer i = 0; i < outStockBills.size(); i++) {
+            OutStockBill outStockBill = outStockBills.get(i);
+
+            //鍚屼竴鍗曞彿瀛樺湪鐩稿悓鐗╂枡缂栫爜鏁版嵁锛岃鍗曞彿涓嶄簣澶勭悊
+            Number fnumberCount = erpService.QueryFnumberOutCount(outStockBill.getFInterID());
+            if(fnumberCount.intValue() > 1){
+                if (!erpService.haveReadOutBill(outStockBill.getFBillNo(),outStockBill.getFInterID(),-1)) {
+                    log.error("鏇存柊鍑哄簱閫氱煡鍗曡鍙栫姸鎬佷负-1澶辫触[FBrNo={},FInterID={}]", outStockBill.getFBrNo(),outStockBill.getFInterID());
+                }
+                continue;
+            }
+
+            OutStockBill main = outStockMainService.selectOne(new EntityWrapper<OutStockBill>().eq("FBillNo",outStockBill.getFBillNo()).and().eq("FInterID", outStockBill.getFInterID()));
             if (null == main) {
-                if (!outStockMainService.insert(result.get(i))) {
-                    log.info("鍑哄簱閫氱煡涓昏〃OutStockBill鍚屾澶辫触");
+                outStockBill.setFflag_rw(1);
+                if (!outStockMainService.insert(outStockBill)) {
+                    log.info("鍚屾鍑哄簱閫氱煡涓昏〃OutStockBill澶辫触");
+                    exceptionHandle("鍚屾鍑哄簱閫氱煡涓昏〃OutStockBill澶辫触[FBillNo={0},FInterID={1}]",outStockBill.getFBillNo(),outStockBill.getFInterID());
                 };
+                List<OutStockBillEntry> outStockBillEntries = erpService.syncOutStockDetail(outStockBill.getFInterID());
+                for (Integer j = 0; j < outStockBillEntries.size(); j++) {
+                    OutStockBillEntry outStockBillEntry = outStockBillEntries.get(j);
+                    Wrapper<OutStockBillEntry> wrapper = new EntityWrapper<OutStockBillEntry>().eq("FInterID", outStockBillEntry.getFInterID()).
+                            eq("FEntryID", outStockBillEntry.getFEntryID()).eq("FBrNo",outStockBillEntry.getFBrNo());
+                    OutStockBillEntry one = outStockService.selectOne(wrapper);
+                    if (null == one) {
+//                        String Fnumber = (Cools.isEmpty(outStockBillEntry.getFSourceBillNo())) ? outStockBillEntry.getFnumber() : outStockBillEntry.getFnumber()+"|"+outStockBillEntry.getFSourceBillNo();
+//                        outStockBillEntry.setFnumber(Fnumber);  //浜у搧浠g爜|鐢熶骇鍗曞彿
+                        if (!outStockService.insert(outStockBillEntry)) {
+                            log.info("鎻愬彇鍑哄簱閫氱煡鏄庣粏琛∣utStockBillEntry澶辫触[FBrNo={},FInterID={},FEntryID={}]",outStockBillEntry.getFBrNo(),
+                                    outStockBillEntry.getFInterID(),outStockBillEntry.getFEntryID());
+                            exceptionHandle("鎻愬彇鍑哄簱閫氱煡鏄庣粏琛∣utStockBillEntry澶辫触[FBrNo={0},FInterID={1},FEntryID={2}]",outStockBillEntry.getFBrNo(),
+                                    outStockBillEntry.getFInterID(),outStockBillEntry.getFEntryID());
+                        } else {
+                            log.info("鎻愬彇鍑哄簱閫氱煡鏄庣粏琛∣utStockBillEntry鎴愬姛[FBrNo={},FInterID={},FEntryID={}]",outStockBillEntry.getFBrNo(),
+                                    outStockBillEntry.getFInterID(),outStockBillEntry.getFEntryID());
+                        }
+                    } else {
+                        // 鏁伴噺鏈夊彉鍖栬繘琛屾洿鏂�
+                        if (Double.doubleToLongBits(one.getFAuxQty().doubleValue()) != Double.doubleToLongBits(outStockBillEntry.getFAuxQty().doubleValue())) {
+                            if (!outStockService.update(outStockBillEntry, wrapper)) {
+                                log.info("鍚屾鏇存柊閫氱煡鏄庣粏琛∣utStockBillEntry澶辫触[FBrNo={},FInterID={},FEntryID={}]",outStockBillEntry.getFBrNo(),
+                                        outStockBillEntry.getFInterID(),outStockBillEntry.getFEntryID());
+                                exceptionHandle("鍚屾鏇存柊閫氱煡鏄庣粏琛∣utStockBillEntry澶辫触[FBrNo={0},FInterID={1},FEntryID={2}]",outStockBillEntry.getFBrNo(),
+                                        outStockBillEntry.getFInterID(),outStockBillEntry.getFEntryID());
+                            } else {
+                                log.info("鍚屾鏇存柊閫氱煡鏄庣粏琛∣utStockBillEntry鎴愬姛[FBrNo={},FInterID={},FEntryID={}]",outStockBillEntry.getFBrNo(),
+                                        outStockBillEntry.getFInterID(),outStockBillEntry.getFEntryID());
+                            }
+                        }
+                    }
+                }
+            } else {
+
+            }
+
+            if (!erpService.haveReadOutBill(outStockBill.getFBillNo(),outStockBill.getFInterID(),1)) {
+                log.error("鏇存柊鍑哄簱閫氱煡鍗曡鍙栫姸鎬佸け璐FBrNo={},FInterID={}]", outStockBill.getFBrNo(),outStockBill.getFInterID());
             }
         }
     }
 
-    /**
-     * 鎴愬搧鍑哄簱-鍙戣揣閫氱煡鍗曡〃浣�
-     */
-    @Scheduled(cron = "0/15 * * * * ? ")
-    public void syncOutStockDetail(){
-        List<OutStockBillEntry> result = erpService.syncOutStockDetail();
-        for (Integer i = 0; i < result.size(); i++) {
-            OutStockBillEntry main = outStockService.selectOne(new EntityWrapper<OutStockBillEntry>().eq("FInterID", result.get(i).getFInterID()).and().eq("FEntryID", result.get(i).getFEntryID()));
-            if (null == main) {
-                if (!outStockService.insert(result.get(i))) {
-                    log.info("鍑哄簱閫氱煡鏄庣粏琛∣utStockBillEntry鍚屾澶辫触");
-                };
-            }
-        }
-    }
+//    /**
+//     * 鎴愬搧鍑哄簱 鍙戣揣閫氱煡鍗曡〃浣�
+//     */
+//    @Scheduled(cron = "0/15 * * * * ? ")
+//    public void syncOutStockDetail(){
+//        List<OutStockBillEntry> result = erpService.syncOutStockDetail();
+//        for (Integer i = 0; i < result.size(); i++) {
+//            OutStockBillEntry main = outStockService.selectOne(new EntityWrapper<OutStockBillEntry>().eq("FInterID", result.get(i).getFInterID()).and().eq("FEntryID", result.get(i).getFEntryID()));
+//            if (null == main) {
+//                OutStockBillEntry outStockBillEntry = result.get(i);
+//                outStockBillEntry.setFnumber(outStockBillEntry.getFnumber()+"|"+outStockBillEntry.getFSourceBillNo());  //浜у搧浠g爜|鐢熶骇鍗曞彿
+//                if (!outStockService.insert(outStockBillEntry)) {
+//                    log.info("鍑哄簱閫氱煡鏄庣粏琛∣utStockBillEntry鍚屾澶辫触");
+//                };
+//            } else {
+//                // 鏁伴噺鏈夊彉鍖栬繘琛屾洿鏂�
+//                if (Double.doubleToLongBits(main.getFAuxQty().doubleValue()) != Double.doubleToLongBits(result.get(i).getFAuxQty().doubleValue())) {
+//                    if (!outStockService.update(result.get(i), new EntityWrapper<OutStockBillEntry>().eq("FInterID", result.get(i).getFInterID()).and().eq("FEntryID", result.get(i).getFEntryID()))) {
+//                        log.info("鍑哄簱閫氱煡鏄庣粏琛∣utStockBillEntry鍚屾澶辫触");
+//                    };
+//                }
+//            }
+//        }
+//    }
 
     /**
      * 鍘熸潗鏂欏嚭搴�

--
Gitblit v1.9.1