From fca564ab5fc823047d3c416fff5b821ef7d0edf7 Mon Sep 17 00:00:00 2001
From: 18516761980 <4761516tqsxp>
Date: 星期日, 26 九月 2021 15:40:27 +0800
Subject: [PATCH] #

---
 src/main/webapp/views/pda/index.html                            |   26 +-
 src/main/java/com/zy/asrs/service/impl/OutStockServiceImpl.java |    3 
 src/main/java/com/zy/common/service/erp/ErpService.java         |  199 +++++++++++++++++++--------
 src/main/java/com/zy/common/service/erp/task/ErpScheduler.java  |  181 +++++++++++++++----------
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java     |    2 
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java   |    6 
 6 files changed, 268 insertions(+), 149 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index d382ec9..e4c2b59 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -82,6 +82,8 @@
                     waitPakin.setModiUser(userId);
                     waitPakin.setModiTime(new Date());
                     VersionUtils.setWaitPakIn(waitPakin, matCode);
+                    waitPakin.setMatnr(matCode.getMatNo()+"|"+combMat.getMnemonic()); //浜у搧缂栫爜|鐢熶骇鍗曞彿
+                    waitPakin.setBname(matCode.getMatNo());
                     // 濡傛灉鐢熸垚鍗曞彿涓嶄负绌烘彃鍏ョ敓浜у崟鍙�
                     if (!Cools.isEmpty(combMat.getMnemonic())) {
                         waitPakin.setMnemonic(combMat.getMnemonic());
@@ -130,7 +132,7 @@
                         String maxKeySql = "select min(FInterID) as num from CPICMO";
                         List<ERPselectParam> maxKeyList = erpSqlServer.select(maxKeySql, ERPselectParam.class);
                         Integer maxKey = maxKeyList.get(0).getNum();
-                        String ErpSql = "insert into CPICMO(FBrNo, FSourceBillNo, FBillNo, FTranType, FStatus, FMRP, FItemID, FQty, FCommitQty, FSourceEntryID, FClosed, FUnitID, FAuxCommitQty, FCancellation, FQtyFinish, FQtyScrap, FQtyLost, FAuxQtyFinish, FAuxQtyScrap, FAuxQtyLost, FMrpClosed, FBomInterID, FQtyPass, FAuxQtyPass, FQtyBack, FAuxQtyBack, FFinishTime, FReadyTIme, FPowerCutTime, FFixTime, FWaitItemTime, FWaitToolTime, FTaskID, FWorkTypeID, FCostObjID, FStockQty, FAuxStockQty, FSuspend, FReleasedQty, FReleasedAuxQty, FUnScheduledQty, FUnScheduledAuxQty, FSubEntryID, FScheduleID, FPlanOrderInterID, FProcessPrice, FProcessFee, FGMPBatchNo, FGMPCollectRate, FGMPItemBalance, FGMPBulkQty, FCustID, FMRPLockFlag, FHandworkClose, FInHighLimit, FInHighLimitQty, FInLowLimit, FInLowLimitQty, FChangeTimes, FCheckCommitQty, FAuxCheckCommitQty, FPlanConfirmed, FPlanMode, FMTONo, FPrintCount, FFinClosed, FStockFlag, FStartFlag, FVchBillNo, FVchInterID, FCardClosed, FHRReadyTime, FSourceTranType, FSourceInterId, FInterID, FAuxQty, FAuxInHighLimitQty, FAuxInLowLimitQty, Fnumber, FWorkShop) values (0, ''{6}'', '0', 85, 0, 1052, 0, 0, 0, 0, 0, 250, {5,number,#}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '0', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14036, '0', 0, 0, 14215, 0, '0', 0, 1059, 0, 0, 0, 0, {0,number,#}, {1,number,#}, {2,number,#}, {3,number,#}, ''{4}'', 11378)";
+                        String ErpSql = "insert into CPICMO(FBrNo, FSourceBillNo, FBillNo, FTranType, FStatus, FMRP, FItemID, FQty, FCommitQty, FSourceEntryID, FClosed, FUnitID, FAuxCommitQty, FCancellation, FQtyFinish, FQtyScrap, FQtyLost, FAuxQtyFinish, FAuxQtyScrap, FAuxQtyLost, FMrpClosed, FBomInterID, FQtyPass, FAuxQtyPass, FQtyBack, FAuxQtyBack, FFinishTime, FReadyTIme, FPowerCutTime, FFixTime, FWaitItemTime, FWaitToolTime, FTaskID, FWorkTypeID, FCostObjID, FStockQty, FAuxStockQty, FSuspend, FReleasedQty, FReleasedAuxQty, FUnScheduledQty, FUnScheduledAuxQty, FSubEntryID, FScheduleID, FPlanOrderInterID, FProcessPrice, FProcessFee, FGMPBatchNo, FGMPCollectRate, FGMPItemBalance, FGMPBulkQty, FCustID, FMRPLockFlag, FHandworkClose, FInHighLimit, FInHighLimitQty, FInLowLimit, FInLowLimitQty, FChangeTimes, FCheckCommitQty, FAuxCheckCommitQty, FPlanConfirmed, FPlanMode, FMTONo, FPrintCount, FFinClosed, FStockFlag, FStartFlag, FVchBillNo, FVchInterID, FCardClosed, FHRReadyTime, FSourceTranType, FSourceInterId, FInterID, FAuxQty, FAuxInHighLimitQty, FAuxInLowLimitQty, Fnumber, FWorkShop,Fflag_rw) values (0, ''{6}'', '0', 85, 0, 1052, 0, 0, 0, 0, 0, 250, {5,number,#}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '0', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14036, '0', 0, 0, 14215, 0, '0', 0, 1059, 0, 0, 0, 0, {0,number,#}, {1,number,#}, {2,number,#}, {3,number,#}, ''{4}'', 11378, 1)";
                         ErpSql = MessageFormat.format(ErpSql, maxKey - 1, es.getCount(), es.getCount(), es.getCount(), es.getMatNo(), es.getCount(), es.getMnemonic());
                         erpSqlServer.update(ErpSql);
                     }
@@ -167,7 +169,7 @@
                         String maxKeySql = "select min(FInterID) as num from CPICMO";
                         List<ERPselectParam> maxKeyList = erpSqlServer.select(maxKeySql, ERPselectParam.class);
                         Integer maxKey = maxKeyList.get(0).getNum();
-                        String ErpSql = "insert into CPICMO(FBrNo, FSourceBillNo, FBillNo, FTranType, FStatus, FMRP, FItemID, FQty, FCommitQty, FSourceEntryID, FClosed, FUnitID, FAuxCommitQty, FCancellation, FQtyFinish, FQtyScrap, FQtyLost, FAuxQtyFinish, FAuxQtyScrap, FAuxQtyLost, FMrpClosed, FBomInterID, FQtyPass, FAuxQtyPass, FQtyBack, FAuxQtyBack, FFinishTime, FReadyTIme, FPowerCutTime, FFixTime, FWaitItemTime, FWaitToolTime, FTaskID, FWorkTypeID, FCostObjID, FStockQty, FAuxStockQty, FSuspend, FReleasedQty, FReleasedAuxQty, FUnScheduledQty, FUnScheduledAuxQty, FSubEntryID, FScheduleID, FPlanOrderInterID, FProcessPrice, FProcessFee, FGMPBatchNo, FGMPCollectRate, FGMPItemBalance, FGMPBulkQty, FCustID, FMRPLockFlag, FHandworkClose, FInHighLimit, FInHighLimitQty, FInLowLimit, FInLowLimitQty, FChangeTimes, FCheckCommitQty, FAuxCheckCommitQty, FPlanConfirmed, FPlanMode, FMTONo, FPrintCount, FFinClosed, FStockFlag, FStartFlag, FVchBillNo, FVchInterID, FCardClosed, FHRReadyTime, FSourceTranType, FSourceInterId, FInterID, FAuxQty, FAuxInHighLimitQty, FAuxInLowLimitQty, Fnumber, FWorkShop) values (0, ''{6}'', '0', 85, 0, 1052, 0, 0, 0, 0, 0, 250, {5,number,#}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '0', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14036, '0', 0, 0, 14215, 0, '0', 0, 1059, 0, 0, 0, 0, {0,number,#}, {1,number,#}, {2,number,#}, {3,number,#}, ''{4}'', 11378)";
+                        String ErpSql = "insert into CPICMO(FBrNo, FSourceBillNo, FBillNo, FTranType, FStatus, FMRP, FItemID, FQty, FCommitQty, FSourceEntryID, FClosed, FUnitID, FAuxCommitQty, FCancellation, FQtyFinish, FQtyScrap, FQtyLost, FAuxQtyFinish, FAuxQtyScrap, FAuxQtyLost, FMrpClosed, FBomInterID, FQtyPass, FAuxQtyPass, FQtyBack, FAuxQtyBack, FFinishTime, FReadyTIme, FPowerCutTime, FFixTime, FWaitItemTime, FWaitToolTime, FTaskID, FWorkTypeID, FCostObjID, FStockQty, FAuxStockQty, FSuspend, FReleasedQty, FReleasedAuxQty, FUnScheduledQty, FUnScheduledAuxQty, FSubEntryID, FScheduleID, FPlanOrderInterID, FProcessPrice, FProcessFee, FGMPBatchNo, FGMPCollectRate, FGMPItemBalance, FGMPBulkQty, FCustID, FMRPLockFlag, FHandworkClose, FInHighLimit, FInHighLimitQty, FInLowLimit, FInLowLimitQty, FChangeTimes, FCheckCommitQty, FAuxCheckCommitQty, FPlanConfirmed, FPlanMode, FMTONo, FPrintCount, FFinClosed, FStockFlag, FStartFlag, FVchBillNo, FVchInterID, FCardClosed, FHRReadyTime, FSourceTranType, FSourceInterId, FInterID, FAuxQty, FAuxInHighLimitQty, FAuxInLowLimitQty, Fnumber, FWorkShop, Fflag_rw) values (0, ''{6}'', '0', 85, 0, 1052, 0, 0, 0, 0, 0, 250, {5,number,#}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '0', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14036, '0', 0, 0, 14215, 0, '0', 0, 1059, 0, 0, 0, 0, {0,number,#}, {1,number,#}, {2,number,#}, {3,number,#}, ''{4}'', 11378, 1)";
                         ErpSql = MessageFormat.format(ErpSql, maxKey - 1, es.getCount(), es.getCount(), es.getCount(), es.getMatNo(), es.getCount(), es.getMnemonic());
                         erpSqlServer.update(ErpSql);
                     }
diff --git a/src/main/java/com/zy/asrs/service/impl/OutStockServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OutStockServiceImpl.java
index 50b88fd..cce8080 100644
--- a/src/main/java/com/zy/asrs/service/impl/OutStockServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OutStockServiceImpl.java
@@ -94,11 +94,9 @@
         String sql = "update OutStockbillEntry set FAuxCommitQty = (FAuxCommitQty + {0,number,#}) where 1=1 and Fnumber = ''{1}'' and FInterID = {2,number,#}";
         sql = MessageFormat.format(sql, increment, Fnumber, FInterID);
         if (jdbcTemplate.update(sql) > 0) {
-            log.info("step 1 ======>> {}", sql);
             sql = "select * from OutStockbillEntry where 1=1 and Fnumber = ''{0}'' and FInterID = {1,number,#}";
             sql = MessageFormat.format(sql, Fnumber, FInterID);
             List<OutStockBillEntry> select = this.selectList(new EntityWrapper<OutStockBillEntry>().eq("Fnumber", Fnumber).eq("FInterID", FInterID));
-            log.info("step 2 ======>> {}", sql);
             OutStockBillEntry outStockBillEntry = select.get(0);
             boolean complete = false;
             if (outStockBillEntry.getFQty().compareTo(BigDecimal.ZERO) == 1) {
@@ -125,7 +123,6 @@
     private boolean completeCPakOut(String FBillNo){
         String sql = "update OutStockbill set Fflag_finish = 1 where FBillNo = ''{0}''";
         sql = MessageFormat.format(sql, FBillNo);
-        log.info("step 3 ======>> {}", sql);
         return jdbcTemplate.update(sql) > 0;
     }
 
diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
index 88f508c..07e58bd 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -182,7 +182,7 @@
                 String maxKeySql = "select min(FInterID) as num from CPICMO";
                 List<ERPselectParam> maxKeyList = erpSqlServer.select(maxKeySql, ERPselectParam.class);
                 Integer maxKey = maxKeyList.get(0).getNum();
-                String ErpSql = "insert into CPICMO(FBrNo, FSourceBillNo, FBillNo, FTranType, FStatus, FMRP, FItemID, FQty, FCommitQty, FSourceEntryID, FClosed, FUnitID, FAuxCommitQty, FCancellation, FQtyFinish, FQtyScrap, FQtyLost, FAuxQtyFinish, FAuxQtyScrap, FAuxQtyLost, FMrpClosed, FBomInterID, FQtyPass, FAuxQtyPass, FQtyBack, FAuxQtyBack, FFinishTime, FReadyTIme, FPowerCutTime, FFixTime, FWaitItemTime, FWaitToolTime, FTaskID, FWorkTypeID, FCostObjID, FStockQty, FAuxStockQty, FSuspend, FReleasedQty, FReleasedAuxQty, FUnScheduledQty, FUnScheduledAuxQty, FSubEntryID, FScheduleID, FPlanOrderInterID, FProcessPrice, FProcessFee, FGMPBatchNo, FGMPCollectRate, FGMPItemBalance, FGMPBulkQty, FCustID, FMRPLockFlag, FHandworkClose, FInHighLimit, FInHighLimitQty, FInLowLimit, FInLowLimitQty, FChangeTimes, FCheckCommitQty, FAuxCheckCommitQty, FPlanConfirmed, FPlanMode, FMTONo, FPrintCount, FFinClosed, FStockFlag, FStartFlag, FVchBillNo, FVchInterID, FCardClosed, FHRReadyTime, FSourceTranType, FSourceInterId, FInterID, FAuxQty, FAuxInHighLimitQty, FAuxInLowLimitQty, Fnumber, FWorkShop) values (0, ''{6}'', '0', 85, 0, 1052, 0, 0, 0, 0, 0, 250, {5,number,#}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '0', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14036, '0', 0, 0, 14215, 0, '0', 0, 1059, 0, 0, 0, 0, {0,number,#}, {1,number,#}, {2,number,#}, {3,number,#}, ''{4}'', 11378)";
+                String ErpSql = "insert into CPICMO(FBrNo, FSourceBillNo, FBillNo, FTranType, FStatus, FMRP, FItemID, FQty, FCommitQty, FSourceEntryID, FClosed, FUnitID, FAuxCommitQty, FCancellation, FQtyFinish, FQtyScrap, FQtyLost, FAuxQtyFinish, FAuxQtyScrap, FAuxQtyLost, FMrpClosed, FBomInterID, FQtyPass, FAuxQtyPass, FQtyBack, FAuxQtyBack, FFinishTime, FReadyTIme, FPowerCutTime, FFixTime, FWaitItemTime, FWaitToolTime, FTaskID, FWorkTypeID, FCostObjID, FStockQty, FAuxStockQty, FSuspend, FReleasedQty, FReleasedAuxQty, FUnScheduledQty, FUnScheduledAuxQty, FSubEntryID, FScheduleID, FPlanOrderInterID, FProcessPrice, FProcessFee, FGMPBatchNo, FGMPCollectRate, FGMPItemBalance, FGMPBulkQty, FCustID, FMRPLockFlag, FHandworkClose, FInHighLimit, FInHighLimitQty, FInLowLimit, FInLowLimitQty, FChangeTimes, FCheckCommitQty, FAuxCheckCommitQty, FPlanConfirmed, FPlanMode, FMTONo, FPrintCount, FFinClosed, FStockFlag, FStartFlag, FVchBillNo, FVchInterID, FCardClosed, FHRReadyTime, FSourceTranType, FSourceInterId, FInterID, FAuxQty, FAuxInHighLimitQty, FAuxInLowLimitQty, Fnumber, FWorkShop, Fflag_rw) values (0, ''{6}'', '0', 85, 0, 1052, 0, 0, 0, 0, 0, 250, {5,number,#}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '0', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14036, '0', 0, 0, 14215, 0, '0', 0, 1059, 0, 0, 0, 0, {0,number,#}, {1,number,#}, {2,number,#}, {3,number,#}, ''{4}'', 11378, 1)";
                 ErpSql = MessageFormat.format(ErpSql, maxKey - 1, es.getCount(), es.getCount(), es.getCount(), es.getMatNo(), es.getCount(), es.getStr5());
                 erpSqlServer.update(ErpSql);
             }
diff --git a/src/main/java/com/zy/common/service/erp/ErpService.java b/src/main/java/com/zy/common/service/erp/ErpService.java
index f4e3d9d..0408c57 100644
--- a/src/main/java/com/zy/common/service/erp/ErpService.java
+++ b/src/main/java/com/zy/common/service/erp/ErpService.java
@@ -40,8 +40,9 @@
         return erpSqlServer.update("delete from M_item where 1=1 and Mnumber = '" + Mnumber + "'") > 0;
     }
 
+    //////////////////////鎴愬搧銆佸師鏉愭枡鍏ュ簱閫氱煡鍗曟暟鎹彁鍙�//////////////////////////////////////////////////
     /**
-     * 鑾峰彇鏈鍙栬繃鐨勫師鏉愭枡鍏ュ簱鍗曟嵁
+     * 鎻愬彇涓棿琛ㄥ師鏉愭枡鍏ュ簱鍗曟嵁
      */
     public List<InStockDto> getReadyInStock() {
         List<InStockDto> result = new ArrayList<>();
@@ -63,11 +64,12 @@
     }
 
     /**
-     * 鑾峰彇鏈鍙栬繃鐨勬垚鍝佸叆搴撳崟鎹�
+     * 鑾峰彇鍏ュ簱鐗╂祦鏄庣粏
+     * @param fInterID 鍗曟嵁鍐呯爜
      */
-    public List<CPICMO> getReadyCPICMO() {
-        String sql = "select * from CPICMO where 1=1 and Fflag_rw = 0";
-        return erpSqlServer.select(sql, CPICMO.class);
+    private List<InStockBillEntry> getInStockBillEntry(Integer fInterID) {
+        String sql = "select * from InStockBillEntry where 1=1 and FSourceBillNo!='' and FAuxCommitQty=0 and FInterID = " + fInterID;
+        return erpSqlServer.select(sql, InStockBillEntry.class);
     }
 
     /**
@@ -80,6 +82,14 @@
     }
 
     /**
+     * 鎻愬彇涓棿琛ㄦ垚鍝佸叆搴撳崟鎹�
+     */
+    public List<CPICMO> getReadyCPICMO() {
+        String sql = "select * from CPICMO where 1=1 and FSourceBillNo!='' and FAuxCommitQty=0 and Fflag_rw = 0";
+        return erpSqlServer.select(sql, CPICMO.class);
+    }
+
+    /**
      * 灏嗘湭璇荤殑鎴愬搧鍏ュ簱鍗曟嵁璁剧疆涓哄凡璇�
      */
     public boolean haveReadCPICMO(String FBillNo){
@@ -87,6 +97,39 @@
         sql = MessageFormat.format(sql, FBillNo);
         return erpSqlServer.update(sql) > 0;
     }
+    ////////////////////////////////////////////////////////////////////////////////////////
+
+    ////////////////////// 鍑哄簱閫氱煡鍗曟暟鎹彁鍙�//////////////////////////////////////////////////
+    /**
+     * 鏌ヨerp涓棿琛ㄨ〃澶碠utStockBill鏁版嵁
+     * @return
+     */
+    public List<OutStockBill> syncOutStock() {
+        return erpSqlServer.select("SELECT * FROM  xtyasrs_dual.dbo.OutStockBill where Fflag_rw=0", OutStockBill.class);
+//        return erpSqlServer.select("SELECT * FROM  xtyasrs_dual.dbo.OutStockBill where Fflag_rw=0", OutStockBill.class);
+    }
+
+    /**
+     * 鏌ヨerp涓棿琛ㄨ〃浣揙utStockbillEntry鏁版嵁
+     * @param FInterID
+     * @return
+     */
+    public List<OutStockBillEntry> syncOutStockDetail(Integer FInterID) {
+        return erpSqlServer.select("SELECT * FROM  xtyasrs_dual.dbo.OutStockBillEntry where FSourceBillNo!='' and FAuxCommitQty=0 and FInterID=" + FInterID, OutStockBillEntry.class);
+    }
+
+    /**
+     * 灏嗘彁鍙栧畬鎴愮殑鎴愬搧鍑哄簱閫氱煡鍗曟嵁璁剧疆涓哄凡璇�
+     */
+    public boolean haveReadOutBill(String FBrNo, Integer FInterID){
+        String sql = "update OutStockbill set Fflag_rw = 1 where FBillNo = ''{0}'' and FInterID = {1,number,#} ";
+        sql = MessageFormat.format(sql, FBrNo, FInterID);
+        return erpSqlServer.update(sql) > 0;
+    }
+    ////////////////////////////////////////////////////////////////////////////////////////////
+
+
+
 
     /**
      * 鎻愪氦瀹為檯鏀惰揣鏁伴噺
@@ -103,15 +146,27 @@
     /**
      * 鍘熸潗鏂欏閲忓叆搴�
      */
-    public boolean incrementPakIn(String FBillNo, String Fnumber, Double increment) {
+    public boolean incrementPakIn(String FBillNo, String Fnumbers, Double increment) {
+        String[] arrays = Fnumbers.split("|");
+        String Fnumber="",sBillNo=""; //浜у搧浠g爜,鐢熶骇鍗曞彿
+
         String sql = "update ise \n" +
                 "set ise.FAuxCommitQty = (ise.FAuxCommitQty + {0,number,#}) \n" +
                 "from InStockBillEntry ise\n" +
                 "left join InStockbill isb on isb.FInterID = ise.FInterID\n" +
                 "where 1=1 \n" +
                 "and ise.Fnumber = ''{1}''\n" +
-                "and isb.FBillNo= ''{2}''";
-        sql = MessageFormat.format(sql, increment, Fnumber, FBillNo);
+                "and isb.FBillNo= ''{2}''\n";
+
+        Fnumber = arrays[0];
+        if(arrays.length>1){
+            sBillNo = arrays[1];
+            sql = sql + "and ise.FSourceBillNo= ''{3}''";
+            sql = MessageFormat.format(sql, increment, Fnumber, FBillNo, sBillNo);
+        } else {
+            sql = MessageFormat.format(sql, increment, Fnumber, FBillNo);
+        }
+
         if (erpSqlServer.update(sql) > 0) {
 //            log.error("鏇存柊ERP涓棿琛ㄦ垚鍔�===>>[FBillNo:{},Fnumber:{},increment:{}]",FBillNo,Fnumber,increment);
             List<InStockBillEntry> inStockBillEntries = getInStockBillEntry(FBillNo);
@@ -138,7 +193,7 @@
             }
             return true;
         } else {
-            log.error("鏇存柊ERP涓棿琛ㄥけ璐�===>>[FBillNo:{},Fnumber:{},increment:{}]",FBillNo,Fnumber,increment);
+            log.error("鏇存柊ERP涓棿琛ㄥけ璐�===>>[FBillNo:{},Fnumber:{},increment:{}]",FBillNo,Fnumbers,increment);
             return false;
         }
     }
@@ -146,12 +201,29 @@
     /**
      * 鎴愬搧澧為噺鍏ュ簱
      */
-    public boolean incrementCPakIn(String FBillNo, String Fnumber, Double increment) {
-        String sql = "update CPICMO set FAuxCommitQty = (FAuxCommitQty + {0,number,#}) where 1=1 and Fnumber = ''{1}'' and FBillNo = ''{2}''";
-        sql = MessageFormat.format(sql, increment, Fnumber, FBillNo);
+    public boolean incrementCPakIn(String FBillNo, String Fnumbers, Double increment) {
+        String[] arrays = Fnumbers.split("|");
+        String Fnumber="",sBillNo=""; //浜у搧浠g爜,鐢熶骇鍗曞彿
+
+        String sql = "update CPICMO set FAuxCommitQty = (FAuxCommitQty + {0,number,#}) where 1=1 and Fnumber = ''{1}'' and FBillNo = ''{2}'' ";
+
+        Fnumber = arrays[0];
+        if(arrays.length>1){
+            sBillNo = arrays[1];
+            sql = sql + " and FSourceBillNo= ''{3}''";
+            sql = MessageFormat.format(sql, increment, Fnumber, FBillNo, sBillNo);
+        } else {
+            sql = MessageFormat.format(sql, increment, Fnumber, FBillNo);
+        }
+
         if (erpSqlServer.update(sql) > 0) {
-            sql = "select * from CPICMO where 1=1 and Fnumber = ''{0}'' and FBillNo = ''{1}''";
-            sql = MessageFormat.format(sql, Fnumber, FBillNo);
+            if(arrays.length>1) {
+                sql = "select * from CPICMO where 1=1 and Fnumber = ''{0}'' and FBillNo = ''{1}'' and FSourceBillNo= ''{2}''";
+                sql = MessageFormat.format(sql, Fnumber, FBillNo, sBillNo);
+            } else {
+                sql = "select * from CPICMO where 1=1 and Fnumber = ''{0}'' and FBillNo = ''{1}''";
+                sql = MessageFormat.format(sql, Fnumber, FBillNo);
+            }
             List<CPICMO> select = erpSqlServer.select(sql, CPICMO.class);
             CPICMO cpicmo = select.get(0);
             boolean complete = false;
@@ -165,7 +237,7 @@
                 }
             }
             if (complete) {
-                if (!completeCPakIn(FBillNo, Fnumber)) {
+                if (!completeCPakIn(FBillNo, Fnumber, sBillNo)) {
                     log.error("{}鍏ュ簱鍗曟爣璁板畬鎴愬け璐�", FBillNo);
                 }
             }
@@ -234,6 +306,8 @@
      * @param qty 鏁伴噺锛堟琛ㄧず鐩樼泩銆佽礋琛ㄧず鐩樹簭锛�
      */
     public boolean checkStockEntity(String FNumber, Double qty){
+        String[] arrays = FNumber.split("|");
+        FNumber = arrays[0];
         String sql = "insert [dbo].[StockCheckRecord] ([FNumber],[CheckQty],[Fflag_rw],[Fflag_finish],[sync_id]) values (''{0}'', {1,number,#}, 0, 0, -1);";
         sql = MessageFormat.format(sql, FNumber, qty);
         if (erpSqlServer.update(sql) == 0) {
@@ -244,15 +318,6 @@
     }
 
     // 绉佹湁鏂规硶 --------------------------------------------------------------------------------------
-
-    /**
-     * 鑾峰彇鍏ュ簱鐗╂祦鏄庣粏
-     * @param fInterID 鍗曟嵁鍐呯爜
-     */
-    private List<InStockBillEntry> getInStockBillEntry(Integer fInterID) {
-        String sql = "select * from InStockBillEntry where 1=1 and FInterID = " + fInterID;
-        return erpSqlServer.select(sql, InStockBillEntry.class);
-    }
 
     private List<InStockBillEntry> getInStockBillEntry(String FBillNo) {
         String sql = "select ise.* from InStockBillEntry ise left join InStockbill isb on isb.FInterID = ise.FInterID where 1=1 and isb.FBillNo = '" + FBillNo +"'";
@@ -271,39 +336,53 @@
     /**
      * 鎴愬搧鍏ュ簱鍗曟爣璁板畬鎴�
      */
-    private boolean completeCPakIn(String FBillNo, String Fnumber){
-        String sql = "update CPICMO set Fflag_finish = 1 where FBillNo = ''{0}'' and Fnumber = ''{1}''";
-        sql = MessageFormat.format(sql, FBillNo, Fnumber);
-        return erpSqlServer.update(sql) > 0;
+    private boolean completeCPakIn(String FBillNo, String Fnumber, String sBillNo){
+        if(Cools.isEmpty(sBillNo)) {
+            String sql = "update CPICMO set Fflag_finish = 1 where FBillNo = ''{0}'' and Fnumber = ''{1}''";
+            sql = MessageFormat.format(sql, FBillNo, Fnumber);
+            return erpSqlServer.update(sql) > 0;
+        } else {
+            String sql = "update CPICMO set Fflag_finish = 1 where FBillNo = ''{0}'' and Fnumber = ''{1}'' and FSourceBillNo= ''{2}'' ";
+            sql = MessageFormat.format(sql, FBillNo, Fnumber, sBillNo);
+            return erpSqlServer.update(sql) > 0;
+        }
     }
 
 
-    /**
-     * 鍑哄簱鍗曟爣璁板畬鎴�
-     */
-    private boolean completePakOut(Integer fInterID){
-        String sql = "update OutStockBill set Fflag_finish = 1 where FInterID = {0,number,#}";
-        sql = MessageFormat.format(sql, fInterID);
-        return erpSqlServer.update(sql) > 0;
-    }
-
-    /* 鏌ヨerp涓勾琛∣utStockBill鏁版嵁 */
-    public List<OutStockBill> syncOutStock() {
-        return erpSqlServer.select("SELECT * FROM  xtyasrs_dual.dbo.OutStockBill", OutStockBill.class);
-    }
-
-    public List<OutStockBillEntry> syncOutStockDetail() {
-        return erpSqlServer.select("SELECT * FROM  xtyasrs_dual.dbo.OutStockBillEntry", OutStockBillEntry.class);
-    }
+//    /**
+//     * 鍑哄簱鍗曟爣璁板畬鎴�
+//     */
+//    private boolean completePakOut(Integer fInterID){
+//        String sql = "update OutStockBill set Fflag_finish = 1 where FInterID = {0,number,#}";
+//        sql = MessageFormat.format(sql, fInterID);
+//        return erpSqlServer.update(sql) > 0;
+//    }
 
     /* 鎴愬搧澧為噺鍑哄簱 */
-    public boolean incrementCPakOut(Integer FInterID, String Fnumber, Double increment, String FBillNo) {
-        String sql = "update OutStockbillEntry set FAuxCommitQty = (FAuxCommitQty + {0,number,#}) where 1=1 and Fnumber = ''{1}'' and FInterID = {2,number,#}";
-        sql = MessageFormat.format(sql, increment, Fnumber, FInterID);
+    public boolean incrementCPakOut(Integer FInterID, String Fnumbers, Double increment, String FBillNo) {
+        String[] arrays = Fnumbers.split("|");
+        String Fnumber="",sBillNo=""; //浜у搧浠g爜,鐢熶骇鍗曞彿
+
+        String sql = "update OutStockbillEntry set FAuxCommitQty = (FAuxCommitQty + {0,number,#}) where 1=1 and Fnumber = ''{1}'' and FInterID = {2,number,#} ";
+        Fnumber = arrays[0];
+        if(arrays.length>1){
+            sBillNo = arrays[1];
+            sql = sql + " and FSourceBillNo= ''{3}''";
+            sql = MessageFormat.format(sql, increment, Fnumber, FInterID, sBillNo);
+        } else {
+            sql = MessageFormat.format(sql, increment, Fnumber, FInterID);
+        }
+
         try {
             if (erpSqlServer.update(sql) > 0) {
-                sql = "select * from OutStockbillEntry where 1=1 and Fnumber = ''{0}'' and FInterID = {1,number,#}";
-                sql = MessageFormat.format(sql, Fnumber, FInterID);
+                if(arrays.length>1) {
+                    sql = "select * from OutStockbillEntry where 1=1 and Fnumber = ''{0}'' and FInterID = {1,number,#} and FSourceBillNo= ''{2}''";
+                    sql = MessageFormat.format(sql, Fnumber, FInterID, sBillNo);
+                } else {
+                    sql = "select * from OutStockbillEntry where 1=1 and Fnumber = ''{0}'' and FInterID = {1,number,#}";
+                    sql = MessageFormat.format(sql, Fnumber, FInterID);
+                }
+
                 List<OutStockBillEntry> select = erpSqlServer.select(sql, OutStockBillEntry.class);
                 OutStockBillEntry outStockBillEntry = select.get(0);
                 boolean complete = false;
@@ -341,17 +420,17 @@
     }
 
 
-    public boolean updateFnumber(Integer itemId, String FNumber){
-        String sql = "update InStockbillEntry set Fnumber = ''{0}'' where FItemID = {1,number,#}";
-        sql = MessageFormat.format(sql, FNumber, itemId);
-        return erpSqlServer.update(sql) > 0;
-    }
+//    public boolean updateFnumber(Integer itemId, String FNumber){
+//        String sql = "update InStockbillEntry set Fnumber = ''{0}'' where FItemID = {1,number,#}";
+//        sql = MessageFormat.format(sql, FNumber, itemId);
+//        return erpSqlServer.update(sql) > 0;
+//    }
 
-    public boolean updateCFnumber(Integer itemId, String FNumber){
-        String sql = "update CPICMO set Fnumber = ''{0}'' where FItemID = {1,number,#}";
-        sql = MessageFormat.format(sql, FNumber, itemId);
-        return erpSqlServer.update(sql) > 0;
-    }
+//    public boolean updateCFnumber(Integer itemId, String FNumber){
+//        String sql = "update CPICMO set Fnumber = ''{0}'' where FItemID = {1,number,#}";
+//        sql = MessageFormat.format(sql, FNumber, itemId);
+//        return erpSqlServer.update(sql) > 0;
+//    }
 
     public List<CPICMO> queryErpCPICMO(String fbillNo, String fsourceBillNo) {
         String sql = "select * from CPICMO";
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 5826690..dd291d0 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,14 @@
     private Map<Integer, M_item> itemMap = new HashMap<>();
 
     /**
-     * 鍘熸潗鏂�
+     * 鍘熸潗鏂欏叆搴撳崟
      */
     @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());
-//                    }
-//                }
-
                 MatCode matCode = matCodeService.selectById(entry.getFnumber());
                 if (null != matCode) {
                     // 鐢熸垚鍏ュ簱閫氱煡鍗�
@@ -80,22 +70,30 @@
                     VersionUtils.setWaitPakIn(waitPakin, matCode);
                     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));
@@ -103,7 +101,7 @@
                 }
             }
             if (!erpService.haveReadInStock(dto.getInStockBill().getFBillNo())) {
-                log.error("{}鍘熸潗鏂欏叆搴撻�氱煡鍗曞凡璇诲け璐�", dto.getInStockBill().getFBillNo());
+                log.error("鏍囪鍘熸潗鏂欏叆搴撻�氱煡鍗曞凡璇籌nStockBill澶辫触[FBillNo={}]", dto.getInStockBill().getFBillNo());
             }
         }
 
@@ -111,25 +109,13 @@
 
 
     /**
-     * 鎴愬搧
+     * 鎴愬搧鍏ュ簱鍗�
      */
     @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());
-//                    }
-//                }
             MatCode matCode = matCodeService.selectById(cpicmo.getFnumber());
             if (null != matCode) {
                 // 鐢熸垚鍏ュ簱閫氱煡鍗�
@@ -142,19 +128,31 @@
                 VersionUtils.setWaitPakIn(waitPakin, matCode);
                 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());
+                    log.error("鏍囪鎴愬搧鍏ュ簱閫氱煡鍗曞凡璇籆PICMO澶辫触[FBillNo={}]", cpicmo.getFBillNo());
                 }
             }
         }
@@ -192,46 +190,89 @@
     }
 
     /**
-     * 鎴愬搧鍑哄簱-鍙戣揣閫氱煡鍗曡〃澶�
+     * 鎴愬搧鍑哄簱 鍙戣揣閫氱煡鍗曡〃澶�,琛ㄦ槑缁�
      */
     @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);
+            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());
                 };
-            } else {
-
-            }
-        }
-    }
-
-    /**
-     * 鎴愬搧鍑哄簱-鍙戣揣閫氱煡鍗曡〃浣�
-     */
-    @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鍚屾澶辫触");
-                };
-            } 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鍚屾澶辫触");
-                    };
+                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())) {
+                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) {
+//                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鍚屾澶辫触");
+//                    };
+//                }
+//            }
+//        }
+//    }
+
     /**
      * 鍘熸潗鏂欏嚭搴�
      */
diff --git a/src/main/webapp/views/pda/index.html b/src/main/webapp/views/pda/index.html
index 5d6dfa5..c8b81fc 100644
--- a/src/main/webapp/views/pda/index.html
+++ b/src/main/webapp/views/pda/index.html
@@ -111,14 +111,14 @@
             <div id="combPro" onclick="nav(this.id)" style="font-size: 15px">绔嬪簱浠诲姟鍗曞叆搴�</div>
         </td>
     </tr>
-    <tr>
-        <td>
-            <div id="stockIn" onclick="nav(this.id)" class="nav-font-size">绔嬪簱閰嶄欢鍏ュ簱</div>
-        </td>
-        <td>
-            <div id="stockOut" onclick="nav(this.id)" class="nav-font-size">绔嬪簱閰嶄欢鍑哄簱</div>
-        </td>
-    </tr>
+<!--    <tr>-->
+<!--        <td>-->
+<!--            <div id="stockIn" onclick="nav(this.id)" class="nav-font-size">绔嬪簱閰嶄欢鍏ュ簱</div>-->
+<!--        </td>-->
+<!--        <td>-->
+<!--            <div id="stockOut" onclick="nav(this.id)" class="nav-font-size">绔嬪簱閰嶄欢鍑哄簱</div>-->
+<!--        </td>-->
+<!--    </tr>-->
     <tr>
         <td>
             <div id="locNormalIn1" onclick="nav(this.id)" class="nav-font-size">骞充粨鏉愭枡鍏ュ簱</div>
@@ -135,11 +135,11 @@
             <div id="locNormalOut" onclick="nav(this.id)" class="nav-font-size">骞充粨鎴愬搧鍑哄簱</div>
         </td>
     </tr>
-    <tr>
-        <td>
-            <div id="locNormalMove" onclick="nav(this.id)" class="nav-font-size">骞充粨鎴愬搧绉诲簱</div>
-        </td>
-    </tr>
+<!--    <tr>-->
+<!--        <td>-->
+<!--            <div id="locNormalMove" onclick="nav(this.id)" class="nav-font-size">骞充粨鎴愬搧绉诲簱</div>-->
+<!--        </td>-->
+<!--    </tr>-->
 </table>
 
 <!-- 涓讳綋鍐呭 -->

--
Gitblit v1.9.1