From 98b1835a279fd8c9ed2a21fae3501f24c470c39b Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期四, 09 十一月 2023 09:37:36 +0800
Subject: [PATCH] 修复权限无法修改bug 组托时检测料箱码是否存在库存中

---
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java |  129 ++++++++++++++++++++++++++++++++++--------
 1 files changed, 104 insertions(+), 25 deletions(-)

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 ced2c4c..36fe8aa 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -23,6 +23,7 @@
 import com.zy.common.web.BaseController;
 import com.zy.common.web.WcsController;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -77,6 +78,10 @@
     private RowLastnoService rowLastnoService;
     @Autowired
     private SlaveProperties slaveProperties;
+    @Autowired
+    private DocTypeService docTypeService;
+    @Autowired
+    private AgvWaitPakinService agvWaitPakinService;
 
     @Override
     @Transactional
@@ -124,9 +129,9 @@
         // 鐢熸垚宸ヤ綔妗f槑缁�
         List<DetlDto> detlDtos = new ArrayList<>();
         param.getList().forEach(elem -> {
-            DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme());
+            DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(), elem.getCsocode(), elem.getIsoseq(),elem.getContainerCode());
             if (DetlDto.has(detlDtos, detlDto)) {
-                DetlDto detlDto1 = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch());
+                DetlDto detlDto1 = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch(),detlDto.getCsocode(),detlDto.getIsoseq(),detlDto.getContainerCode());
                 assert detlDto1 != null;
                 detlDto1.setAnfme(detlDto1.getAnfme() + detlDto.getAnfme());
             } else {
@@ -190,13 +195,13 @@
                 }
             }
 
-            List<String> groupInsideLoc = Utils.getGroupInsideLoc(locNo);
-            if (!Cools.isEmpty(groupInsideLoc)) {
-                for (String insideLoc : groupInsideLoc) {
-                    if (locNos.contains(insideLoc)){
+            List<String> groupOuterLoc = Utils.getGroupOuterLoc(locNo);
+            if (!Cools.isEmpty(groupOuterLoc)) {
+                for (String outerLoc : groupOuterLoc) {
+                    if (locNos.contains(outerLoc)){
                         continue;
                     }
-                    LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", insideLoc));
+                    LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", outerLoc));
                     if (locMast != null) {
                         if (!locMast.getLocSts().equals("O") && !locMast.getLocSts().equals("R")){
                             sign=true;
@@ -216,7 +221,7 @@
         List<LocDetlDto> locDetlDtos = new ArrayList<>();
         for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
             if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) {
-                LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch());
+                LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch(), paramLocDetl.getContainerCode());
                 if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount()));
             }
         }
@@ -303,6 +308,21 @@
             StaDesc staDesc = staDescService.queryCrnStn(ioType, outCrnNo, staNo.getDevNo());
             // 鐢熸垚宸ヤ綔鍙�
             int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
+
+            Integer stnNo = staDesc.getStnNo();//鐩爣绔�
+            Integer sourceStaNo = staDesc.getCrnStn();//婧愮珯
+            if (stnNo == 325 || stnNo == 331 || stnNo == 333 || stnNo == 339) {
+                stnNo = staDesc.getCrnStn();
+                sourceStaNo = staDesc.getStnNo();
+            }
+
+            int lev = Utils.getLev(dto.getLocNo());
+            if (lev == 1 || lev == 2) {
+                if (!(stnNo == 100 || stnNo == 103 || stnNo == 105)) {
+                    throw new CoolException("1銆�2灞傝揣鐗╀粎鍏佽鍦ㄤ竴妤艰繘琛屽嚭搴�");
+                }
+            }
+
             // 鐢熸垚宸ヤ綔妗�
             WrkMast wrkMast = new WrkMast();
             wrkMast.setWrkNo(workNo);
@@ -313,8 +333,8 @@
             wrkMast.setIoPri(ioPri); // 浼樺厛绾э細13
             wrkMast.setOutMost(outMost?1:0);;
             wrkMast.setCrnNo(outMost?outCrnNo:locMast.getCrnNo());
-            wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
-            wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
+            wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯
+            wrkMast.setStaNo(stnNo); // 鐩爣绔�
             wrkMast.setSourceLocNo(dto.getLocNo()); // 婧愬簱浣�
             wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
             wrkMast.setPicking("N"); // 鎷f枡
@@ -381,6 +401,21 @@
         StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, outCrnNo, staNo.getDevNo());
         // 鐢熸垚宸ヤ綔鍙�
         int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
+
+        Integer stnNo = staDesc.getStnNo();//鐩爣绔�
+        Integer sourceStaNo = staDesc.getCrnStn();//婧愮珯
+        if (stnNo == 325 || stnNo == 331 || stnNo == 333 || stnNo == 339) {
+            stnNo = staDesc.getCrnStn();
+            sourceStaNo = staDesc.getStnNo();
+        }
+
+        int lev = Utils.getLev(taskDto.getLocNo());
+        if (lev == 1 || lev == 2) {
+            if (!(stnNo == 100 || stnNo == 103 || stnNo == 105)) {
+                throw new CoolException("1銆�2灞傝揣鐗╀粎鍏佽鍦ㄤ竴妤艰繘琛屽嚭搴�");
+            }
+        }
+
         // 鐢熸垚宸ヤ綔妗�
         WrkMast wrkMast = new WrkMast();
         wrkMast.setWrkNo(workNo);
@@ -391,8 +426,12 @@
         wrkMast.setIoPri(ioPri); // 浼樺厛绾э細13
         wrkMast.setOutMost(outMost?1:0);;
         wrkMast.setCrnNo(outMost?outCrnNo:locMast.getCrnNo());
-        wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
-        wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
+        wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯
+        wrkMast.setStaNo(stnNo); // 鐩爣绔�
+        if(ioType == 101 && taskDto.getStaNo()>=300){
+            wrkMast.setSourceStaNo(346); // 婧愮珯
+            wrkMast.setStaNo(346); // 鐩爣绔�
+        }
         wrkMast.setSourceLocNo(taskDto.getLocNo()); // 婧愬簱浣�
         wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
         wrkMast.setPicking("N"); // 鎷f枡
@@ -410,7 +449,7 @@
         // 鐢熸垚宸ヤ綔妗f槑缁�
         for (LocDto locDto : taskDto.getLocDtos()) {
             if (locDto.getAnfme()==null || locDto.getAnfme() <= 0.0D) { continue; }
-            LocDetl locDetl = locDetlService.selectItem(locDto.getLocNo(), locDto.getMatnr(), locDto.getBatch());
+            LocDetl locDetl = locDetlService.selectItem(locDto.getLocNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getContainerCode());
             if (locDetl == null || locDetl.getAnfme() < locDto.getAnfme()) {
                 throw new CoolException(locDto.getLocNo() + "搴撲綅涓�" + locDto.getMatnr() + "鍟嗗搧搴撳瓨涓嶈冻锛�");
             }
@@ -428,9 +467,15 @@
             wrkDetl.setAppeUser(userId);
             wrkDetl.setModiTime(now);
             wrkDetl.setModiUser(userId);
+            wrkDetl.setSuppCode(locDto.getContainerCode());
+            wrkDetl.setThreeCode(locDto.getCsocode());
+            wrkDetl.setDeadTime(locDto.getIsoseq());
             if (!wrkDetlService.insert(wrkDetl)) {
                 throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
             }
+            //琛ヨ揣鍗曞垯鐢熸垚AGV鍏ュ簱閫氱煡妗�
+            generateAgvWaitpakin(wrkDetl);
+
             // 淇敼璁㈠崟鏄庣粏
             if (!BaseController.isJSON(locDto.getOrderNo())) {
                 OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch());
@@ -554,9 +599,9 @@
             if (sign){
                 break;
             }
-            List<String> groupInsideLoc = Utils.getGroupInsideLoc(locNo);
-            if (!Cools.isEmpty(groupInsideLoc)) {
-                for (String insideLoc : groupInsideLoc) {
+            List<String> groupInnerLoc = Utils.getGroupInnerLoc(locNo);
+            if (!Cools.isEmpty(groupInnerLoc)) {
+                for (String insideLoc : groupInnerLoc) {
                     if (locNos.contains(insideLoc)){
                         continue;
                     }
@@ -597,8 +642,7 @@
             // 鑾峰彇婧愮珯
             Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
                     .eq("type_no", 110)
-                    .eq("stn_no", param.getOutSite())
-                    .eq("crn_no", outCrnNo);
+                    .eq("stn_no", param.getOutSite());
             StaDesc staDesc = staDescService.selectOne(wrapper);
             if (Cools.isEmpty(staDesc)) {
                 throw new CoolException("闈炴硶璺緞锛�");
@@ -654,7 +698,7 @@
         List<LocDetlDto> locDetlDtos = new ArrayList<>();
         for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
             if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) {
-                LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch());
+                LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch(),paramLocDetl.getContainerCode());
                 if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount()));
             }
         }
@@ -755,15 +799,22 @@
         if (Cools.isEmpty(wrkMast)){
             throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪");
         }
-        if (wrkMast.getWrkSts() == 9 || wrkMast.getWrkSts() == 17) {
+
+        if (wrkMast.getIoType() == 200) {
+            //灏忚溅绉诲簱浠诲姟锛岀洿鎺ュ垹闄ゅ伐浣滄。
+            wrkMastService.deleteById(wrkMast);
+            return;
+        }
+
+        if (wrkMast.getWrkSts() == 9 || wrkMast.getWrkSts() == 29) {
             throw new CoolException("褰撳墠宸ヤ綔妗e凡瀹屾垚");
         }
         // 鍏ュ簱 + 搴撲綅杞Щ
         if (wrkMast.getWrkSts() < 9 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType()==11)) {
             wrkMast.setWrkSts(9L);
             // 鍑哄簱
-        } else if (wrkMast.getWrkSts() > 10) {
-            wrkMast.setWrkSts(17L);
+        } else if (wrkMast.getWrkSts() > 20) {
+            wrkMast.setWrkSts(29L);
         }
         Date now = new Date();
         wrkMast.setCrnStrTime(DateUtils.calculate(now, 1L, TimeUnit.SECONDS, true));
@@ -807,7 +858,7 @@
                     if (!locDetl.getAnfme().equals(adjust.getCount())) {
                         // todo 鐩樼偣璁板綍
                         // 淇敼搴撳瓨
-                        if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) {
+                        if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(),locDetl.getSuppCode(),locDetl.getThreeCode(),locDetl.getDeadTime())) {
                             throw new CoolException(locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佷慨鏀规暟閲忓け璐�");
                         }
                         // 淇濆瓨璋冩暣璁板綍
@@ -821,6 +872,10 @@
                         adjDetl.setModiUser(userId);
                         adjDetl.setAppeTime(now);
                         adjDetl.setAppeUser(userId);
+                        adjDetl.setOrderNo(Utils.generateAdjustOrderNo());
+                        adjDetl.setCsocode(locDetl.getThreeCode());
+                        adjDetl.setIsoseq(locDetl.getDeadTime());
+
                         adjDetlService.save(adjDetl, userId);
                     }
                     iterator.remove();
@@ -832,7 +887,7 @@
         // 鍒犻櫎搴撳瓨
         for (LocDetl locDetl : locDetls) {
             // todo 鐩樼偣璁板綍
-            if (!locDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) {
+            if (!locDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(),locDetl.getSuppCode(),locDetl.getThreeCode(),locDetl.getDeadTime())) {
                 throw new CoolException("鍒犻櫎" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佸簱瀛樻槑缁嗗け璐�");
             }
             // 淇濆瓨璋冩暣璁板綍
@@ -846,6 +901,7 @@
             adjDetl.setModiUser(userId);
             adjDetl.setAppeTime(now);
             adjDetl.setAppeUser(userId);
+            adjDetl.setOrderNo(Utils.generateAdjustOrderNo());
             adjDetlService.save(adjDetl, userId);
         }
 
@@ -862,6 +918,8 @@
             locDetl.setModiTime(now);
             locDetl.setAppeUser(userId);
             locDetl.setAppeTime(now);
+            locDetl.setThreeCode(adjust.getThreeCode());
+            locDetl.setDeadTime(adjust.getDeadTime());
             if (!locDetlService.insert(locDetl)) {
                 throw new CoolException("娣诲姞" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佸簱瀛樻槑缁嗗け璐�");
             }
@@ -876,6 +934,10 @@
             adjDetl.setModiUser(userId);
             adjDetl.setAppeTime(now);
             adjDetl.setAppeUser(userId);
+            adjDetl.setCsocode(locDetl.getThreeCode());
+            adjDetl.setIsoseq(locDetl.getDeadTime());
+            adjDetl.setOrderNo(Utils.generateAdjustOrderNo());
+
             adjDetlService.save(adjDetl, userId);
         }
         // 淇敼搴撲綅鐘舵��
@@ -905,6 +967,13 @@
         if (Cools.isEmpty(wrkMast)){
             throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪");
         }
+
+        if (wrkMast.getIoType() == 200) {
+            //灏忚溅绉诲簱浠诲姟锛岀洿鎺ュ垹闄ゅ伐浣滄。
+            wrkMastService.deleteById(wrkMast);
+            return;
+        }
+
         String locNo = ""; // 寰呬慨鏀圭洰鏍囧簱浣�
         String locSts = ""; // 寰呬慨鏀圭洰鏍囧簱浣嶇姸鎬�
         // 鍏ュ簱鍙栨秷锛堜慨鏀圭洰鏍囧簱浣嶏級
@@ -925,7 +994,7 @@
                 locMastService.updateById(locMast);
             }
         // 鍑哄簱鍙栨秷锛堜慨鏀规簮搴撲綅锛�
-        } else if (wrkMast.getWrkSts() > 10 && wrkMast.getWrkSts() != 19) {
+        } else if (wrkMast.getWrkSts() > 20) {
             locNo = wrkMast.getSourceLocNo();
             // 鍑哄簱 ===>> F.鍦ㄥ簱
             if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) {
@@ -1089,4 +1158,14 @@
         return "";
     }
 
+    private void generateAgvWaitpakin(WrkDetl wrkDetl){
+        Order order = orderService.selectByNo(wrkDetl.getOrderNo());
+        DocType docType = docTypeService.selectById(order.getDocType());
+        if("浜哄伐琛ヨ揣鍗�".equals(docType.getDocName())){
+            AgvWaitPakin agvWaitPakin = new AgvWaitPakin();
+            BeanUtils.copyProperties(wrkDetl,agvWaitPakin);
+            agvWaitPakinService.insert(agvWaitPakin);
+        }
+    }
+
 }

--
Gitblit v1.9.1