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

---
 src/main/webapp/views/pakStore/outStockNormalDetail.html        |    1 
 src/main/java/com/zy/common/service/erp/ErpService.java         |  180 +++++++++++++++++++----------
 src/main/java/com/zy/common/service/erp/task/ErpScheduler.java  |   36 +++++
 src/main/java/com/zy/common/service/erp/ErpModeController.java  |    2 
 src/main/webapp/views/pakStore/outStockDetail.html              |    1 
 src/main/webapp/static/js/pakStore/outStock.js                  |    2 
 src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java      |    2 
 src/main/java/com/zy/common/service/erp/ErpSqlServer.java       |   28 ++++
 src/main/java/com/zy/asrs/service/impl/OutStockServiceImpl.java |   37 ++++++
 src/main/webapp/static/js/locNormal/locNormal.js                |    8 +
 src/main/java/com/zy/asrs/controller/OutStockController.java    |   44 ++++++
 src/main/resources/mapper/OutStockMapper.xml                    |    9 +
 src/main/resources/application.yml                              |    6 
 13 files changed, 279 insertions(+), 77 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/OutStockController.java b/src/main/java/com/zy/asrs/controller/OutStockController.java
index 80d1214..71f9b4e 100644
--- a/src/main/java/com/zy/asrs/controller/OutStockController.java
+++ b/src/main/java/com/zy/asrs/controller/OutStockController.java
@@ -2,6 +2,7 @@
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.core.annotations.ManagerAuth;
 import com.core.common.Cools;
 import com.core.common.DateUtils;
@@ -18,17 +19,21 @@
 import com.zy.asrs.service.WorkService;
 import com.zy.asrs.utils.VersionUtils;
 import com.zy.common.service.erp.ErpService;
+import com.zy.common.service.erp.entity.OutStockBill;
 import com.zy.common.service.erp.entity.OutStockBillEntry;
 import com.zy.common.web.BaseController;
 import lombok.extern.slf4j.Slf4j;
 import net.bytebuddy.implementation.bytecode.Throw;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -47,6 +52,7 @@
     private ErpService erpService;
     @Autowired
     private LocNormalLogService locNormalLogService;
+
 
     /**
      *
@@ -102,15 +108,27 @@
      */
     @RequestMapping(value = "/outStock/locNormal")
     @ManagerAuth
+    @Transactional
     public R outStockLocNormal(@RequestBody LocNormalStockOutParam param) {
         Long modiUser = getUserId();
         Date modiTime = new Date();
-        for (LocNormal locNormals:param.getList()) {
-            // erp涓棿琛ㄦ洿鏂版暟鎹�
-            Integer FInterI = outStockService.queryOutStockFInterID(param.getSupplier()); // 鑾峰彇鍑哄簱鍗曚富琛ㄤ富閿�
-            if (!erpService.incrementCPakOut(FInterI, locNormals.getMatnr(), locNormals.getAnfme().doubleValue(), param.getSupplier())) {
-                log.info("鏇存柊ERP鎴愬搧鍑哄簱鏁版嵁[matnr={0}]澶辫触", locNormals.getMatnr(), param.getSupplier());
+
+        Integer FInterI = outStockService.queryOutStockFInterID(param.getSupplier()); // 鑾峰彇鍑哄簱鍗曚富琛ㄤ富閿�
+        List<OutStockBillEntry>  entryList = outStockService.selectList(new EntityWrapper<OutStockBillEntry>().eq("FInterID",FInterI));
+        for(OutStockBillEntry one : entryList){
+            String Fnumber = one.getFnumber();
+            BigDecimal qty = new BigDecimal(0);
+            for (LocNormal locNormals:param.getList()) {
+                if(locNormals.getMatnr().equals(Fnumber)){
+                    qty = qty.add(locNormals.getAnfme());
+                }
             }
+            if(qty.compareTo(one.getFQty()) == 1){
+                return R.error("鍑哄簱鏁伴噺澶т簬閫氱煡妗f暟閲廩FInterID=" + FInterI + ",Fnumber=" + Fnumber + "]");
+            }
+        }
+
+        for (LocNormal locNormals:param.getList()) {
             LocNormal locNormal = locNormalService.selectOne(new EntityWrapper<LocNormal>().eq("id", locNormals.getId()));
             if (!Cools.isEmpty(locNormal)) {
                 if (locNormal.getAnfme().compareTo(locNormals.getAnfme()) == 1) {
@@ -150,6 +168,22 @@
                 }
             }
 
+//            Integer FInterI = outStockService.queryOutStockFInterID(param.getSupplier()); // 鑾峰彇鍑哄簱鍗曚富琛ㄤ富閿�
+
+            //鏇存柊ASRS鍑哄簱閫氱煡妗f槑缁嗗嚭搴撴暟閲�
+            Wrapper wrapper = new EntityWrapper<OutStockBillEntry>().eq("FInterID",FInterI).eq("Fnumber",locNormals.getMatnr());
+            OutStockBillEntry outStockBillEntry = outStockService.selectOne(wrapper);
+            outStockBillEntry.setFAuxCommitQty(outStockBillEntry.getFAuxCommitQty().add(locNormals.getAnfme()));
+            outStockBillEntry.setFAmount(outStockBillEntry.getFAmount().add(locNormals.getAnfme()));  //鍊熺敤amount瀛楁锛屾帶鍒朵笅鍙戝嚭搴撲换鍔℃暟閲�
+            if(!outStockService.update(outStockBillEntry,wrapper)){
+                throw new CoolException("鏇存柊鍑哄簱閫氱煡妗f槑缁嗗け璐FInterID="+FInterI+",Fnumber="+locNormals.getMatnr()+"]");
+            }
+
+            // erp涓棿琛ㄦ洿鏂版暟鎹�
+            if (!erpService.incrementCPakOut(FInterI, locNormals.getMatnr(), locNormals.getAnfme().doubleValue(), param.getSupplier())) {
+                log.error("鏇存柊ERP鎴愬搧鍑哄簱鏁版嵁[matnr={},FBillNo={}]澶辫触", locNormals.getMatnr(), param.getSupplier());
+            }
+
         }
         return R.ok("骞充粨鍑哄簱鎴愬姛");
     }
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 cce8080..2b6f447 100644
--- a/src/main/java/com/zy/asrs/service/impl/OutStockServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OutStockServiceImpl.java
@@ -5,6 +5,7 @@
 import com.baomidou.mybatisplus.plugins.Page;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import com.core.common.Cools;
+import com.core.common.R;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.StockOutParam;
@@ -49,6 +50,8 @@
     private LocNormalService locNormalService;
     @Autowired
     private JdbcTemplate jdbcTemplate;
+    @Autowired
+    private OutStockService outStockService;
 
     @Override
     public Page<OutStockBillEntry> queryOutStock(Page<OutStockBillEntry> page) {
@@ -129,6 +132,31 @@
     @Override
     @Transactional
     public void startupFullTakeStore(StockOutParam param, Long userId) {
+        //鍒ゆ柇鍑哄簱鐔熺粌鏄惁澶т簬搴撳瓨鏁伴噺
+        for (StockOutParam.LocDetl detl : param.getLocDetls()) {
+            LocDetl locDetl = locDetlService.selectById(detl.getLocNo());
+            if(locDetl != null){
+                if(detl.getCount() > locDetl.getAnfme()){
+                    throw new CoolException("鍑哄簱鏁伴噺瓒呰繃浜嗗簱瀛樻暟閲廩locNo=" + detl.getLocNo() + "]");
+                }
+            }
+        }
+        //鍒ゆ柇鍑哄簱鏁伴噺鏄惁澶т簬閫氱煡妗f暟閲�
+        Integer FInterI = outStockService.queryOutStockFInterID(param.getFbillNo()); // 鑾峰彇鍑哄簱鍗曚富琛ㄤ富閿�
+        List<OutStockBillEntry>  entryList = outStockService.selectList(new EntityWrapper<OutStockBillEntry>().eq("FInterID",FInterI));
+        for(OutStockBillEntry one : entryList){
+            String Fnumber = one.getFnumber();
+            BigDecimal qty = new BigDecimal(0);
+            for (StockOutParam.LocDetl detl : param.getLocDetls()) {
+                if(detl.getMatnr().equals(Fnumber)){
+                    qty = qty.add(BigDecimal.valueOf(detl.getCount()));
+                }
+            }
+            if(qty.compareTo(one.getFQty()) == 1){
+                throw new CoolException("鍑哄簱鏁伴噺澶т簬閫氱煡妗f暟閲廩FInterID=" + FInterI + ",Fnumber=" + Fnumber + "]");
+            }
+        }
+
         // 鐩爣绔欑偣鐘舵�佹娴�
         BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
         // 鑾峰彇搴撲綅鏄庣粏
@@ -238,6 +266,15 @@
                 if (!wrkDetlService.insert(wrkDetl)) {
                     throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
                 }
+
+                //鏇存柊鍑哄簱閫氱煡妗amount瀛楁锛岄槻姝㈤噸澶嶄笅鍙戜换鍔� 2021-09-28 TQS ADD
+                Integer FInterI = outStockService.queryOutStockFInterID(fbillNo); // 鑾峰彇鍑哄簱鍗曚富琛ㄤ富閿�
+                Wrapper wrapper1 = new EntityWrapper<OutStockBillEntry>().eq("FInterID",FInterI).eq("Fnumber",detlDto.getLocDetl().getMatnr());
+                OutStockBillEntry outStockBillEntry = outStockService.selectOne(wrapper1);
+                outStockBillEntry.setFAmount(outStockBillEntry.getFAmount().add(BigDecimal.valueOf(anfme)));  //鍊熺敤amount瀛楁锛屾帶鍒朵笅鍙戝嚭搴撲换鍔℃暟閲�
+                if(!outStockService.update(outStockBillEntry,wrapper1)){
+                    throw new CoolException("鏇存柊鍑哄簱閫氱煡妗f槑缁咶Amount澶辫触[FInterID="+FInterI+",Fnumber="+detlDto.getLocDetl().getMatnr()+"]");
+                }
             }
             // 淇敼搴撲綅鐘舵��:   F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
             locMast = locMastService.selectById(dto.getLocNo());
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
index 481a256..3f73da9 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
@@ -79,7 +79,7 @@
             }
 
             // erp鍏宠仈鍑哄簱璁㈠崟澶勭悊
-            if (wrkMast.getIoType() == 101) {
+            if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 53) {
                 EntityWrapper<WrkDetl> wrapper = new EntityWrapper<>();
                 // 鑾峰彇宸ヤ綔妗e唴鐗╂枡娓呭崟
                 List<WrkDetl> wrkDetls = wrkDetlService.selectList(wrapper.eq("wrk_no", wrkMast.getWrkNo()).and().isNotNull("supplier"));
diff --git a/src/main/java/com/zy/common/service/erp/ErpModeController.java b/src/main/java/com/zy/common/service/erp/ErpModeController.java
index f6bd74f..750a982 100644
--- a/src/main/java/com/zy/common/service/erp/ErpModeController.java
+++ b/src/main/java/com/zy/common/service/erp/ErpModeController.java
@@ -40,7 +40,7 @@
      */
     @GetMapping("/haveReadInStock")
     public R haveReadInStock(@RequestParam String FBillNo){
-        return R.ok().add(erpService.haveReadInStock(FBillNo));
+        return R.ok().add(erpService.haveReadInStock(FBillNo,1));
     }
 
     /**
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 0408c57..ee4d384 100644
--- a/src/main/java/com/zy/common/service/erp/ErpService.java
+++ b/src/main/java/com/zy/common/service/erp/ErpService.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
 import com.core.common.DateUtils;
+import com.core.exception.CoolException;
 import com.zy.asrs.service.OutStockMainService;
 import com.zy.asrs.service.OutStockService;
 import com.zy.common.service.erp.dto.InStockDto;
@@ -10,6 +11,7 @@
 import com.zy.common.service.erp.entity.*;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
@@ -27,6 +29,8 @@
 
     @Autowired
     private ErpSqlServer erpSqlServer;
+    @Autowired
+    private JdbcTemplate jdbcTemplate;
 
     public List<StockEntryCensus> get(){
         return erpSqlServer.select("select * from StockEntryCensus where 1=1",StockEntryCensus.class);
@@ -64,6 +68,20 @@
     }
 
     /**
+     * 鏌ヨ鍚屼竴鍗曞彿鏄惁瀛樺湪鐩稿悓鐗╂枡鐨勬渶澶ф暟閲忓�硷紝
+     * @return
+     */
+    public Number QueryFnumberInCount(Integer FInterID) {
+        String sql = "select top 1 qty from (\n" +
+                "select Fnumber,count(*) as qty from InStockbill a,InStockbillEntry b\n" +
+                "where a.FInterID=b.FInterID and a.FInterID=" + FInterID +
+                " group by Fnumber\n" +
+                ") a\n" +
+                "order by qty desc";
+        return erpSqlServer.executeQueryCount(sql,"qty");
+    }
+
+    /**
      * 鑾峰彇鍏ュ簱鐗╂祦鏄庣粏
      * @param fInterID 鍗曟嵁鍐呯爜
      */
@@ -75,9 +93,9 @@
     /**
      * 灏嗘湭璇荤殑鍘熸潗鏂欏叆搴撳崟鎹缃负宸茶
      */
-    public boolean haveReadInStock(String FBillNo){
-        String sql = "update InStockBill set Fflag_rw = 1 where FBillNo = ''{0}''";
-        sql = MessageFormat.format(sql, FBillNo);
+    public boolean haveReadInStock(String FBillNo, Integer value){
+        String sql = "update InStockBill set Fflag_rw = {1,number,#} where FBillNo = ''{0}''";
+        sql = MessageFormat.format(sql, FBillNo, value);
         return erpSqlServer.update(sql) > 0;
     }
 
@@ -90,11 +108,25 @@
     }
 
     /**
+     * 鏌ヨ鍚屼竴鍗曞彿鏄惁瀛樺湪鐩稿悓鐗╂枡鐨勬渶澶ф暟閲忓�硷紝
+     * @return
+     */
+    public Number QueryFnumberCPICMOCount(Integer FInterID) {
+        String sql = "select top 1 qty from (\n" +
+                "select count(*) as qty from CPICMO\n" +
+                "where FInterID=" + FInterID +
+                " group by Fnumber\n" +
+                ") a\n" +
+                "order by qty desc";
+        return erpSqlServer.executeQueryCount(sql,"qty");
+    }
+
+    /**
      * 灏嗘湭璇荤殑鎴愬搧鍏ュ簱鍗曟嵁璁剧疆涓哄凡璇�
      */
-    public boolean haveReadCPICMO(String FBillNo){
-        String sql = "update CPICMO set Fflag_rw = 1 where FBillNo = ''{0}''";
-        sql = MessageFormat.format(sql, FBillNo);
+    public boolean haveReadCPICMO(Integer FInterID, Integer value){
+        String sql = "update CPICMO set Fflag_rw = {1,number,#} where FInterID = ''{0,number,#}''";
+        sql = MessageFormat.format(sql, FInterID, value);
         return erpSqlServer.update(sql) > 0;
     }
     ////////////////////////////////////////////////////////////////////////////////////////
@@ -110,6 +142,20 @@
     }
 
     /**
+     * 鏌ヨ鍚屼竴鍗曞彿鏄惁瀛樺湪鐩稿悓鐗╂枡鐨勬渶澶ф暟閲忓�硷紝
+     * @return
+     */
+    public Number QueryFnumberOutCount(Integer FInterID) {
+        String sql = "select top 1 qty from (\n" +
+                "select Fnumber,count(*) as qty from OutStockbill a,OutStockbillEntry b\n" +
+                "where a.FInterID=b.FInterID and a.FInterID=" + FInterID +
+                " group by Fnumber\n" +
+                ") a\n" +
+                "order by qty desc";
+        return erpSqlServer.executeQueryCount(sql,"qty");
+    }
+
+    /**
      * 鏌ヨerp涓棿琛ㄨ〃浣揙utStockbillEntry鏁版嵁
      * @param FInterID
      * @return
@@ -121,9 +167,9 @@
     /**
      * 灏嗘彁鍙栧畬鎴愮殑鎴愬搧鍑哄簱閫氱煡鍗曟嵁璁剧疆涓哄凡璇�
      */
-    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);
+    public boolean haveReadOutBill(String FBrNo, Integer FInterID, Integer value){
+        String sql = "update OutStockbill set Fflag_rw = {2,number,#} where FBillNo = ''{0}'' and FInterID = {1,number,#} ";
+        sql = MessageFormat.format(sql, FBrNo, FInterID, value);
         return erpSqlServer.update(sql) > 0;
     }
     ////////////////////////////////////////////////////////////////////////////////////////////
@@ -146,9 +192,9 @@
     /**
      * 鍘熸潗鏂欏閲忓叆搴�
      */
-    public boolean incrementPakIn(String FBillNo, String Fnumbers, Double increment) {
-        String[] arrays = Fnumbers.split("|");
-        String Fnumber="",sBillNo=""; //浜у搧浠g爜,鐢熶骇鍗曞彿
+    public boolean incrementPakIn(String FBillNo, String Fnumber, Double increment) {
+//        String[] arrays = Fnumbers.split("|");
+//        String Fnumber="",sBillNo=""; //浜у搧浠g爜,鐢熶骇鍗曞彿
 
         String sql = "update ise \n" +
                 "set ise.FAuxCommitQty = (ise.FAuxCommitQty + {0,number,#}) \n" +
@@ -157,15 +203,16 @@
                 "where 1=1 \n" +
                 "and ise.Fnumber = ''{1}''\n" +
                 "and isb.FBillNo= ''{2}''\n";
+        sql = MessageFormat.format(sql, increment, Fnumber, FBillNo);
 
-        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);
-        }
+//        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);
@@ -193,7 +240,7 @@
             }
             return true;
         } else {
-            log.error("鏇存柊ERP涓棿琛ㄥけ璐�===>>[FBillNo:{},Fnumber:{},increment:{}]",FBillNo,Fnumbers,increment);
+            log.error("鏇存柊ERP涓棿琛ㄥけ璐�===>>[FBillNo:{},Fnumber:{},increment:{}]",FBillNo,Fnumber,increment);
             return false;
         }
     }
@@ -201,29 +248,30 @@
     /**
      * 鎴愬搧澧為噺鍏ュ簱
      */
-    public boolean incrementCPakIn(String FBillNo, String Fnumbers, Double increment) {
-        String[] arrays = Fnumbers.split("|");
-        String Fnumber="",sBillNo=""; //浜у搧浠g爜,鐢熶骇鍗曞彿
+    public boolean incrementCPakIn(String FBillNo, String Fnumber, 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}'' ";
+        sql = MessageFormat.format(sql, increment, Fnumber, FBillNo);
 
-        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);
-        }
+//        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) {
-            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 {
+//            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;
@@ -237,7 +285,7 @@
                 }
             }
             if (complete) {
-                if (!completeCPakIn(FBillNo, Fnumber, sBillNo)) {
+                if (!completeCPakIn(FBillNo, Fnumber)) {
                     log.error("{}鍏ュ簱鍗曟爣璁板畬鎴愬け璐�", FBillNo);
                 }
             }
@@ -306,8 +354,8 @@
      * @param qty 鏁伴噺锛堟琛ㄧず鐩樼泩銆佽礋琛ㄧず鐩樹簭锛�
      */
     public boolean checkStockEntity(String FNumber, Double qty){
-        String[] arrays = FNumber.split("|");
-        FNumber = arrays[0];
+//        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) {
@@ -336,16 +384,16 @@
     /**
      * 鎴愬搧鍏ュ簱鍗曟爣璁板畬鎴�
      */
-    private boolean completeCPakIn(String FBillNo, String Fnumber, String sBillNo){
-        if(Cools.isEmpty(sBillNo)) {
+    private boolean completeCPakIn(String FBillNo, String Fnumber){
+//        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;
-        }
+//        } 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;
+//        }
     }
 
 
@@ -359,29 +407,31 @@
 //    }
 
     /* 鎴愬搧澧為噺鍑哄簱 */
-    public boolean incrementCPakOut(Integer FInterID, String Fnumbers, Double increment, String FBillNo) {
-        String[] arrays = Fnumbers.split("|");
-        String Fnumber="",sBillNo=""; //浜у搧浠g爜,鐢熶骇鍗曞彿
+    public boolean incrementCPakOut(Integer FInterID, String Fnumber, 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);
-        }
+        sql = MessageFormat.format(sql, increment, Fnumber, FInterID);
+
+//        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) {
-                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 {
+//                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);
@@ -399,6 +449,10 @@
                     if (!completeCPakOut(FBillNo)) {
                         log.error("{}鍑哄簱鍗曟爣璁板畬鎴愬け璐�", FBillNo);
                     }
+                    int updateCount = jdbcTemplate.update("update OutStockbill set Fflag_finish=1 where FBillNo='" + FBillNo + "'");
+                    if(updateCount<=0){
+                        throw new CoolException("鏇存柊鍑哄簱閫氱煡妗e畬鎴愭爣璁板け璐FBillNo="+FBillNo+"]");
+                    }
                 }
                 return true;
             } else {
diff --git a/src/main/java/com/zy/common/service/erp/ErpSqlServer.java b/src/main/java/com/zy/common/service/erp/ErpSqlServer.java
index 24a51e0..37c7b15 100644
--- a/src/main/java/com/zy/common/service/erp/ErpSqlServer.java
+++ b/src/main/java/com/zy/common/service/erp/ErpSqlServer.java
@@ -92,6 +92,34 @@
         }
     }
 
+    public Number executeQueryCount(String sql, String column) {
+        Number value = 0;
+        Connection conn = null;
+        try {
+            conn = getConn();
+            pstm = conn.prepareStatement(sql);
+            rs = pstm.executeQuery();
+//            ResultSetMetaData metaData = rs.getMetaData();
+            while (rs.next()) {
+                value = (Number) rs.getInt(column);
+            }
+            return value;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return 0;
+        } finally {
+            release();
+            if (conn != null) {
+                try {
+                    conn.close();
+                    conn = null;
+                } catch (SQLException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+
     private int executeUpdate(String sql) {
         Connection conn = null;
         try {
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 9a2bfa6..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
@@ -57,6 +57,16 @@
     public void inStockExecute(){
         List<InStockDto> readyInStock = erpService.getReadyInStock();
         for (InStockDto dto : readyInStock) {
+
+            //鍚屼竴鍗曞彿瀛樺湪鐩稿悓鐗╂枡缂栫爜鏁版嵁锛岃鍗曞彿涓嶄簣澶勭悊
+            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) {
@@ -100,7 +110,7 @@
                     }
                 }
             }
-            if (!erpService.haveReadInStock(dto.getInStockBill().getFBillNo())) {
+            if (!erpService.haveReadInStock(dto.getInStockBill().getFBillNo(),1)) {
                 log.error("鏍囪鍘熸潗鏂欏叆搴撻�氱煡鍗曞凡璇籌nStockBill澶辫触[FBillNo={}]", dto.getInStockBill().getFBillNo());
             }
         }
@@ -116,6 +126,16 @@
     public void inCPICMOExecute(){
         List<CPICMO> cpicmos = erpService.getReadyCPICMO();
         for (CPICMO cpicmo : cpicmos) {
+
+            //鍚屼竴鍗曞彿瀛樺湪鐩稿悓鐗╂枡缂栫爜鏁版嵁锛岃鍗曞彿涓嶄簣澶勭悊
+            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) {
                 // 鐢熸垚鍏ュ簱閫氱煡鍗�
@@ -151,7 +171,7 @@
                         log.info("鍚屾鏇存柊鎴愬搧鍏ュ簱閫氱煡鍗旵PICMO澶辫触[FBillNo={},Fnumber={}]", waitPakin.getSupplier(), waitPakin.getMatnr());
                     }
                 }
-                if (!erpService.haveReadCPICMO(cpicmo.getFBillNo())) {
+                if (!erpService.haveReadCPICMO(cpicmo.getFInterID(),1)) {
                     log.error("鏍囪鎴愬搧鍏ュ簱閫氱煡鍗曞凡璇籆PICMO澶辫触[FBillNo={}]", cpicmo.getFBillNo());
                 }
             }
@@ -198,6 +218,16 @@
         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) {
                 outStockBill.setFflag_rw(1);
@@ -242,7 +272,7 @@
 
             }
 
-            if (!erpService.haveReadOutBill(outStockBill.getFBillNo(),outStockBill.getFInterID())) {
+            if (!erpService.haveReadOutBill(outStockBill.getFBillNo(),outStockBill.getFInterID(),1)) {
                 log.error("鏇存柊鍑哄簱閫氱煡鍗曡鍙栫姸鎬佸け璐FBrNo={},FInterID={}]", outStockBill.getFBrNo(),outStockBill.getFInterID());
             }
         }
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index f94f1a1..f223338 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -8,7 +8,8 @@
     name: @pom.build.finalName@
   datasource:
     driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
-    url: jdbc:sqlserver://localhost:1433;databasename=xtyasrs
+    url: jdbc:sqlserver://192.168.4.208:1433;databasename=xtyasrs
+#    url: jdbc:sqlserver://localhost:1433;databasename=xtyasrs
     username: sa
     password: sa@123
   mvc:
@@ -44,7 +45,8 @@
 erp:
   db:
     driver_class_name: com.microsoft.sqlserver.jdbc.SQLServerDriver
-    ur: jdbc:sqlserver://192.168.0.253:1433;databasename=xtyasrs_dual
+#    ur: jdbc:sqlserver://192.168.0.253:1433;databasename=xtyasrs_dual
+    ur: jdbc:sqlserver://192.168.4.208:1433;databasename=xtyasrs_dual
     username: sa
     password: sa@123
 
diff --git a/src/main/resources/mapper/OutStockMapper.xml b/src/main/resources/mapper/OutStockMapper.xml
index 183ac69..c4b6c79 100644
--- a/src/main/resources/mapper/OutStockMapper.xml
+++ b/src/main/resources/mapper/OutStockMapper.xml
@@ -61,7 +61,7 @@
         b.FAdd,b.Fflag_finish, a.Fname, a.Fmodel
         from OutStockBillEntry a left join OutStockBill b on a.FInterID = b.FInterID
         where 1=1
-        and b.Fflag_finish != 1
+        and b.Fflag_finish != 1 and a.FQty > a.FAmount
         <if test="FSourceBillNo!=null and FSourceBillNo!='' ">
             and a.FSourceBillNo = #{FSourceBillNo}
         </if>
@@ -77,6 +77,13 @@
         from OutStockBillEntry a
         left join OutStockBill b on a.FInterID = b.FInterID
         where 1=1
+        and b.Fflag_finish != 1 and a.FQty > a.FAmount
+        <if test="FSourceBillNo!=null and FSourceBillNo!='' ">
+            and a.FSourceBillNo = #{FSourceBillNo}
+        </if>
+        <if test="FBillNo != null and FBillNo != ''">
+            and b.FBillNo = #{FBillNo}
+        </if>
     </select>
 
     <select id="queryMatnrWithBillNo" resultMap="OutStockResultMap">
diff --git a/src/main/webapp/static/js/locNormal/locNormal.js b/src/main/webapp/static/js/locNormal/locNormal.js
index 4aba517..1debf3e 100644
--- a/src/main/webapp/static/js/locNormal/locNormal.js
+++ b/src/main/webapp/static/js/locNormal/locNormal.js
@@ -288,6 +288,14 @@
         }
         switch (obj.event) {
             case 'outLocNormal':
+                var warehourse = data.warehouse;
+                console.log(warehourse);
+
+                if(warehourse !== 'cs'){
+                    layer.msg("鍙兘鍑烘潗鏂欏钩浠�");
+                    return;
+                }
+
                 layer.confirm('纭畾瑕佸嚭搴揫' + data.matnr + ']鍚楋紵', {
                     btn: ['纭畾', '鍙栨秷'] //鍙互鏃犻檺涓寜閽�
                 }, function (index, layero) {
diff --git a/src/main/webapp/static/js/pakStore/outStock.js b/src/main/webapp/static/js/pakStore/outStock.js
index 17efdfc..82dc21b 100644
--- a/src/main/webapp/static/js/pakStore/outStock.js
+++ b/src/main/webapp/static/js/pakStore/outStock.js
@@ -7,7 +7,7 @@
     var cols = [];
     cols.push(
         {field: 'fbillNo', merge: true, align: 'center', title: '鍗曟嵁缂栧彿', width: 150}
-        , {field: 'fsourceBillNo', align: 'center', title: '鐢熶骇鍗曞彿', width: 100}
+        , {field: 'fsourceBillNo', align: 'center', title: '鐢熶骇鍗曞彿', width: 150}
         , {field: 'fnumber', align: 'center', title: '鐗╂枡缂栧彿', width: 140}
         , {field: 'fname', align: 'center', title: '鐗╂枡鍚嶇О'}
         , {field: 'fmodel', align: 'center', title: '瑙勬牸', width: 200}
diff --git a/src/main/webapp/views/pakStore/outStockDetail.html b/src/main/webapp/views/pakStore/outStockDetail.html
index f2e7ba3..76d6039 100644
--- a/src/main/webapp/views/pakStore/outStockDetail.html
+++ b/src/main/webapp/views/pakStore/outStockDetail.html
@@ -156,6 +156,7 @@
                 success: function (res) {
                     if (res.code === 200){
                         parent.closeDetail(res.msg);
+                        parent.tableReload();
                     } else if (res.code === 403){
                         top.location.href = baseUrl+"/";
                     } else {
diff --git a/src/main/webapp/views/pakStore/outStockNormalDetail.html b/src/main/webapp/views/pakStore/outStockNormalDetail.html
index 4e5e1ae..9836df7 100644
--- a/src/main/webapp/views/pakStore/outStockNormalDetail.html
+++ b/src/main/webapp/views/pakStore/outStockNormalDetail.html
@@ -161,6 +161,7 @@
                 success: function (res) {
                     if (res.code === 200) {
                         parent.closeDetail(res.msg);
+                        parent.tableReload();
                     } else if (res.code === 403) {
                         top.location.href = baseUrl + "/";
                     } else {

--
Gitblit v1.9.1