From dda8ddfb17583c7258ffb6ac8935a241d61d9b05 Mon Sep 17 00:00:00 2001
From: skyouc <creaycat@gmail.com>
Date: 星期六, 10 一月 2026 08:49:01 +0800
Subject: [PATCH] 出库再入库功能优化

---
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java |  135 ++++++++++++++++----------------------------
 1 files changed, 50 insertions(+), 85 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 76fa3af..fe161e4 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -25,6 +25,8 @@
 import com.zy.common.service.CommonService;
 import com.zy.common.web.WcsController;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.codec.binary.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -419,38 +421,8 @@
         //TODO 1. 濡傛灉鏄悓涓�鍙板爢鍨涙満锛岀敓鎴愮Щ搴擄紙鍑哄簱锛変换鍔�  2. 濡傛灉涓嶆槸锛岀敓鎴愬嚭搴撲换鍔★紝鍐嶇敓鎴愬叆搴撲换鍔�
         //TODO 鍙︿竴绉嶆柟妗堬紝涓嶇鏄惁褰撳墠宸烽亾锛岀粺涓�鍑哄簱锛屽啀鍏ュ簱
         if (!Objects.isNull(deviceNo)) {
-            wrkCode = wrkCode + "-1";
-//            BasDevice basDevice = basDeviceService.selectOne(new EntityWrapper<BasDevice>()
-//                    .eq("status", 1)
-//                    .eq("dev_no", deviceNo));
-//            if (Objects.isNull(basDevice)) {
-//                throw new CoolException("鏈哄彴淇℃伅涓嶅瓨鍦ㄦ垨宸茬鐢紒锛�");
-//            }
-//            List<LocAroundBind> binds = locAroundBindService.selectList(new EntityWrapper<LocAroundBind>().eq("dev_no", basDevice.getDevNo()));
-//            if (Objects.isNull(binds) || binds.isEmpty()) {
-//                throw new CoolException("鍙版満鏈粦瀹氬伐浣滅珯鍙帮紒锛�");
-//            }
-//            Set<String> locs = binds.stream().map(LocAroundBind::getBLocNo).collect(Collectors.toSet());
-//
-//            LocMast mast = locMastService.selectOne(new EntityWrapper<LocMast>()
-//                    .in("loc_no", locs)
-//                    .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type)
-//                    .eq("dev_no", basDevice.getDevNo())
-//                    .orderAsc(Arrays.asList("loc_no"))
-//                    .last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY"));
-//
-//            if (Objects.isNull(mast)) {
-//                throw new CoolException("褰撳墠鏈哄彴锛屾棤鍙敤宸ヤ綔鍙帮紒锛�");
-//            }
-//            //鐩稿悓琛ㄧず鍦ㄥ悓涓�涓贩閬�
-//            if (mast.getCrnNo().equals(locMast.getCrnNo())) {
-//
-//            } else {
-//                wrkCode = wrkCode + "-1";
-//
-//            }
+            wrkCode = workNo + "-1";
             generateOutStock(taskDto, userId, workNo, wrkCode, now, ioType, locMast, staDesc, deviceNo);
-
         } else {
             generateOutStock(taskDto, userId, workNo, wrkCode, now, ioType, locMast, staDesc, null);
         }
@@ -538,11 +510,10 @@
             OrderInAndOutUtil.updateOrder(Boolean.FALSE, orderDetl.getOrderId(), 2L, userId);
         }
 
-        //todo 鍒ゆ柇璁惧鍙凤紝鐢熸垚鍏ュ簱浠诲姟
+        //TODO 鍒ゆ柇璁惧鍙凤紝鐢熸垚鍏ュ簱浠诲姟銆傛病鏈夋満鍙板彿锛岃鏄庢槸鏅�氬嚭搴撲换鍔�
         if (!Objects.isNull(deviceNo)) {
             genInStock(wrkMast, deviceNo, userId);
         }
-
         // 淇敼搴撲綅鐘舵��:   F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
         locMast = locMastService.selectById(taskDto.getLocNo());
         if (locMast.getLocSts().equals("F")) {
@@ -1519,22 +1490,35 @@
         if (Objects.isNull(locMasts)) {
             throw new CoolException("褰撳墠鏈哄彴锛屾棤鍙敤宸ヤ綔鍙帮紒锛�");
         }
-       List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locMasts.getLocNo(),1);
-
+        int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(1));
+        List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locMasts.getLocNo(),1);
+        //TODO 1. 鑾峰彇鍏ュ簱绔欑偣锛� 鐩爣搴撲綅  3. 灏嗗嚭搴撴槑缁嗘坊鍔犺嚦鍏ュ簱鏄庣粏
+        Integer staNo = staNos.stream().findFirst().get();
         WrkMast wrkMast = new WrkMast();
-        StartupDto dto = commonService.getLocNo(1, sourceStaNo.getDevNo(), findLocNoAttributeVo, locTypeDto);
-//        int workNo = dto.getWorkNo();
+
+        if (Objects.isNull(wrkMast.getWrkCode())) {
+            throw new CoolException("鏁版嵁閿欒锛屼笂绾т换鍔$紪鐮佷负绌猴紒锛�");
+        }
+        String wrkCode;
+        int indexOf = outMast.getWrkCode().indexOf("-");
+        if (indexOf != -1) {
+            String substring = outMast.getWrkCode().substring(0, indexOf);
+            wrkCode = substring + "-2";
+        } else {
+            throw new CoolException("鏁版嵁閿欒锛屼笂绾т换鍔$紪鐮侀敊璇紒锛�");
+        }
         // 鐢熸垚宸ヤ綔妗�
         wrkMast.setWrkNo(workNo);
+        wrkMast.setWrkCode(wrkCode);
         wrkMast.setIoTime(new Date());
         wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
         wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
-        wrkMast.setCrnNo(dto.getCrnNo());
-        wrkMast.setSourceStaNo(dto.getSourceStaNo() + "");
-        wrkMast.setStaNo(dto.getStaNo() + "");
-        wrkMast.setLocNo(dto.getLocNo());
+        wrkMast.setCrnNo(locMasts.getCrnNo());
+        wrkMast.setSourceStaNo(outMast.getSourceStaNo());
+        wrkMast.setStaNo(staNo + "");
+        wrkMast.setLocNo(locMasts.getLocNo());
         wrkMast.setIoPri(13D); // 浼樺厛绾�
-        wrkMast.setBarcode(pakin.getZpallet()); // 鎵樼洏鐮�
+        wrkMast.setBarcode(outMast.getBarcode()); // 鎵樼洏鐮�
         wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
         wrkMast.setPicking("N"); // 鎷f枡
         wrkMast.setExitMk("N"); // 閫�鍑�
@@ -1542,60 +1526,41 @@
         wrkMast.setLinkMis("Y");
         wrkMast.setModiUser(userId);
         wrkMast.setAppeUser(userId);
-        wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
+        wrkMast.setCtnType(locMasts.getCtnType()); // 瀹瑰櫒绫诲瀷
         // 鎿嶄綔浜哄憳鏁版嵁
-        wrkMast.setAppeTime(now);
-        wrkMast.setModiTime(now);
+        wrkMast.setAppeTime(new Date());
+        wrkMast.setModiTime(new Date());
         boolean res = wrkMastService.insert(wrkMast);
         if (!res) {
             throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
         }
         // 鏇存柊婧愮珯鐐逛俊鎭�
-        sourceStaNo.setWrkNo(workNo);
-        sourceStaNo.setModiTime(now);
-        if (!basDevpService.updateById(sourceStaNo)) {
-            throw new CoolException("鏇存柊婧愮珯澶辫触");
-        }
+//        sourceStaNo.setModiTime(now);
+//        if (!basDevpService.updateById(sourceStaNo)) {
+//            throw new CoolException("鏇存柊婧愮珯澶辫触");
+//        }
         // 鏇存柊鐩爣搴撲綅鐘舵��
-        LocMast locMast = locMastService.selectById(dto.getLocNo());
-        if (locMast.getLocSts().equals("O")) {
-            locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
-            locMast.setModiTime(now);
-            if (!locMastService.updateById(locMast)) {
+//        LocMast locMast = locMastService.selectById(dto.getLocNo());
+        if (locMasts.getLocSts().equals("O")) {
+            locMasts.setLocSts("S"); // S.鍏ュ簱棰勭害
+            locMasts.setModiTime(new Date());
+            if (!locMastService.updateById(locMasts)) {
                 throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
             }
         } else {
-            throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
+            throw new CoolException(locMasts.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
         }
-
-        // 鏇存柊鍏ュ簱閫氱煡妗� ioStatus ===>> Y
-        Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>()
-                .eq("zpallet", pakin.getZpallet());
-        WaitPakin setParam = new WaitPakin();
-        setParam.setLocNo(dto.getLocNo());
-        setParam.setIoStatus("Y");
-        setParam.setModiTime(now);
-        if (!waitPakinService.update(setParam, wrapper)) {
-            throw new CoolException("鏇存柊閫氱煡妗eけ璐�");
+        List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrkNo", outMast.getWrkNo()));
+        if (Objects.isNull(wrkDetls) || wrkDetls.isEmpty()) {
+            throw new CoolException("浠诲姟鏄庣粏涓虹┖锛侊紒");
         }
+        wrkDetls.forEach(wrkDetl -> {
+            WrkDetl detl = new WrkDetl();
+            BeanUtils.copyProperties(wrkDetl, detl);
+            detl.setWrkNo(wrkMast.getWrkNo());
+            if (!wrkDetlService.insert(detl)) {
+                throw new CoolException("浠诲姟鏄庣粏淇濆瓨澶辫触锛侊紒");
+            }
+        });
     }
-
-    // 鐢熸垚宸ヤ綔妗f槑缁�
-        waitPakins.forEach(waitPakin ->
-
-    {
-        WrkDetl wrkDetl = new WrkDetl();
-        wrkDetl.sync(waitPakin);
-        wrkDetl.setWrkNo(wrkMast.getWrkNo());
-        wrkDetl.setIoTime(wrkMast.getIoTime());
-        double v = Math.round(waitPakin.getAnfme() * waitPakin.getVolume() * 100) / 100.0;
-        wrkDetl.setAnfme(v);
-        wrkDetl.setAppeTime(now);
-        wrkDetl.setModiTime(now);
-        if (!wrkDetlService.insert(wrkDetl)) {
-            throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
-        }
-    });
-}
-
 }

--
Gitblit v1.9.1