From cac8fbf138586bdf451cdb656758b0b8958df07a Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期四, 26 三月 2026 08:51:01 +0800
Subject: [PATCH] #解决拣选回库后库存丢失问题,库存明细的预留字段与工作明细预留字段不一致情况

---
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java |   72 ++++++++++++++++++++++++++++++++++--
 1 files changed, 68 insertions(+), 4 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 7f833a0..231f907 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -119,7 +119,7 @@
 //        List<String> matnrs = param.getList().stream().map(FullStoreParam.MatCodeStore::getMatnr).distinct().collect(Collectors.toList());
 //        List<String> batchs = param.getList().stream().map(FullStoreParam.MatCodeStore::getBatch).distinct().collect(Collectors.toList());
         FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(param.getList().get(0));
-        StartupDto dto = commonService.getLocNo(1, param.getDevpNo(), findLocNoAttributeVo, locTypeDto);
+        StartupDto dto = commonService.getLocNo(1, param.getDevpNo(), findLocNoAttributeVo, locTypeDto, param.getBarcode());
         if (Cools.isEmpty(dto)) {
             throw new CoolException("鏌ヨ搴撲綅澶辫触锛侊紒==銆媠tartupFullPutStore ==銆� commonService.getLocNo");
         }
@@ -387,6 +387,7 @@
             wrkMast.setModiUser(userId);
             wrkMast.setModiTime(now);
             wrkMast.setPacked(itemId);
+            wrkMast.setMk(locMast.getMk());
             if (!wrkMastService.insert(wrkMast)) {
                 throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細" + dto.getLocNo());
             }
@@ -461,11 +462,24 @@
         }
         // 鑾峰彇搴撲綅
         LocMast locMast = locMastService.selectById(taskDto.getLocNo());
+        if(!locMast.getLocSts().equals("F")) {
+            throw new CoolException("璁㈠崟棰勮鏁版嵁宸茶繃鏈燂紝璇烽噸璇�");
+        }
+
         // 鍒ゆ柇鏄惁鏄洏鐐瑰崟
         String orderNo = taskDto.getLocDtos().get(0).getOrderNo();
         OrderPakout orderPakout = orderPakOutService.selectByNo(orderNo);
         int ioType = orderPakout.getDocType() == 8 ? 107 : (taskDto.isAll() ? 101 : 103);
         StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), staNo.getDevNo(),locMast.getRow1());
+        Integer crnStn = staDesc.getCrnStn();
+        if (locMast.getCrnNo() == 1) {
+            if (locMast.getRow1() <= 3) {
+                crnStn = 1013;
+            }else {
+                crnStn = 1016;
+            }
+        }
+
         // 鐢熸垚宸ヤ綔鍙�
         int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
         // 鐢熸垚宸ヤ綔妗�
@@ -476,7 +490,7 @@
         wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
         wrkMast.setIoPri(13D); // 浼樺厛绾э細13
         wrkMast.setCrnNo(locMast.getCrnNo());
-        wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
+        wrkMast.setSourceStaNo(crnStn); // 婧愮珯
         wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
         wrkMast.setSourceLocNo(taskDto.getLocNo()); // 婧愬簱浣�
         wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
@@ -489,6 +503,7 @@
         wrkMast.setAppeTime(now);
         wrkMast.setModiUser(userId);
         wrkMast.setModiTime(now);
+        wrkMast.setMk(locMast.getMk());
         if (!wrkMastService.insert(wrkMast)) {
             throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細" + taskDto.getLocNo());
         }
@@ -580,7 +595,7 @@
         LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
         FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo();
 
-        StartupDto dto = commonService.getLocNo(10, devpNo, findLocNoAttributeVo, locTypeDto);
+        StartupDto dto = commonService.getLocNo(10, devpNo, findLocNoAttributeVo, locTypeDto, null);
         int workNo = dto.getWorkNo();
         Date now = new Date();
         // 鐢熸垚宸ヤ綔妗�
@@ -665,6 +680,14 @@
             if (Cools.isEmpty(sourceStaNo)) {
                 throw new CoolException("妫�绱㈡簮绔欏け璐�");
             }
+            if (locMast.getCrnNo() == 1) {
+                if (locMast.getRow1() <= 3) {
+                    sourceStaNo = 1013;
+                }else {
+                    sourceStaNo = 1016;
+                }
+            }
+
             Date now = new Date();
             // 淇濆瓨宸ヤ綔妗�
             WrkMast wrkMast = new WrkMast();
@@ -686,6 +709,7 @@
             wrkMast.setAppeTime(now);
             wrkMast.setModiUser(userId);
             wrkMast.setModiTime(now);
+            wrkMast.setMk(locMast.getMk());
             boolean res = wrkMastService.insert(wrkMast);
             if (!res) {
                 throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
@@ -727,6 +751,14 @@
             if (Cools.isEmpty(sourceStaNo)) {
                 throw new CoolException("妫�绱㈡簮绔欏け璐�");
             }
+            if (locMast.getCrnNo() == 1) {
+                if (locMast.getRow1() <= 3) {
+                    sourceStaNo = 1013;
+                }else {
+                    sourceStaNo = 1016;
+                }
+            }
+
             Date now = new Date();
             // 淇濆瓨宸ヤ綔妗�
 
@@ -748,6 +780,7 @@
             wrkMast.setAppeTime(now);
             wrkMast.setModiUser(1L);
             wrkMast.setModiTime(now);
+            wrkMast.setMk(locMast.getMk());
             wrkMast.setMemo("鐢熸垚鑷姩绌烘澘鍑哄簱");
             boolean res = wrkMastService.insert(wrkMast);
             if (!res) {
@@ -788,6 +821,7 @@
                 throw new CoolException(firstFrozenLocNo + "搴撲綅宸茶鍐荤粨!");
             }
             LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo()));
+
             if (locMast.getLocSts().equals("F")) {
                 // 鍚姩鍑哄簱寮�濮� 107.鐩樼偣鍑哄簱
                 stockOut(staNo, locDetlDtos, IoWorkType.CHECK_OUT, userId, param.getCheckId(), null);
@@ -807,10 +841,36 @@
         if (Cools.isEmpty(sourceLoc)) {
             throw new CoolException("鏈壘鍒板簱浣�");
         }
+
+        if (Utils.isDeepLoc(slaveProperties, sourceLocNo)) {
+            String shallowLoc = Utils.getShallowLoc(slaveProperties, sourceLocNo);
+            LocMast locMast = locMastService.selectById(shallowLoc);
+            if (locMast == null) {
+                throw new CoolException(shallowLoc + "娴呭簱浣嶄笉瀛樺湪");
+            }
+
+            if(!locMast.getLocSts().equals("O")) {
+                throw new CoolException(shallowLoc + "娴呭簱浣嶇姸鎬佷笉涓虹┖");
+            }
+        }
+
         LocMast loc = locMastService.selectById(locNo);
         if (Cools.isEmpty(loc)) {
             throw new CoolException("鏈壘鍒板簱浣�");
         }
+
+        if (Utils.isDeepLoc(slaveProperties, locNo)) {
+            String shallowLoc = Utils.getShallowLoc(slaveProperties, locNo);
+            LocMast locMast = locMastService.selectById(shallowLoc);
+            if (locMast == null) {
+                throw new CoolException(shallowLoc + "娴呭簱浣嶄笉瀛樺湪");
+            }
+
+            if(!locMast.getLocSts().equals("O")) {
+                throw new CoolException(shallowLoc + "娴呭簱浣嶆湁璐э紝鏃犳硶绉昏浆");
+            }
+        }
+
         // 鍒ゆ柇搴撲綅鏄惁鍐荤粨
         String sourceLocFrozen = locMastMapper.findFirstFrozenLocNo(Arrays.asList(sourceLoc.getLocNo(), loc.getLocNo()));
         if (sourceLocFrozen != null) {
@@ -853,6 +913,7 @@
         wrkMast.setAppeTime(now);
         wrkMast.setModiUser(userId);
         wrkMast.setModiTime(now);
+        wrkMast.setMemo("浜哄伐鎵嬪姩绉诲簱");
         boolean res = wrkMastService.insert(wrkMast);
         if (!res) {
             throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
@@ -983,7 +1044,7 @@
                         // todo 鐩樼偣璁板綍
                         // 淇敼搴撳瓨
                         if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(), locDetl.getBrand(),
-                                locDetl.getStandby1(), locDetl.getStandby2(), locDetl.getStandby3(), locDetl.getBoxType1(), locDetl.getBoxType2(), locDetl.getBoxType3())) {
+                                adjust.getStandby1(), locDetl.getStandby2(), locDetl.getStandby3(), locDetl.getBoxType1(), locDetl.getBoxType2(), locDetl.getBoxType3())) {
                             throw new CoolException(locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "鎵瑰彿淇敼鏁伴噺澶辫触");
                         }
                         // 淇濆瓨璋冩暣璁板綍
@@ -1157,6 +1218,9 @@
         if (Cools.isEmpty(wrkMast)) {
             throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
         }
+        if (wrkMast.getWrkSts() ==14|| wrkMast.getWrkSts() == 15) {
+            throw new CoolException(workNo + "宸ヤ綔妗e凡瀹屾垚涓嶅厑璁稿彇娑�");
+        }
         String locNo = ""; // 寰呬慨鏀圭洰鏍囧簱浣�
         String locSts = ""; // 寰呬慨鏀圭洰鏍囧簱浣嶇姸鎬�
         // 鍏ュ簱鍙栨秷锛堜慨鏀圭洰鏍囧簱浣嶏級

--
Gitblit v1.9.1