From 8ae2f2dcfe7e263d42c21ed7644641c780445b95 Mon Sep 17 00:00:00 2001
From: skyouc <creaycat@gmail.com>
Date: 星期五, 16 一月 2026 17:45:50 +0800
Subject: [PATCH] 空板改余料回库优化

---
 src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java |   72 ++++++++++++++++++++++++++++++++----
 1 files changed, 64 insertions(+), 8 deletions(-)

diff --git a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
index 93576dc..003e018 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -6,10 +6,7 @@
 import com.zy.asrs.entity.*;
 import com.zy.asrs.enums.LocStsType;
 import com.zy.asrs.service.*;
-import com.zy.asrs.service.impl.BasStationServiceImpl;
-import com.zy.asrs.service.impl.LocCacheServiceImpl;
-import com.zy.asrs.service.impl.OrderPakinServiceImpl;
-import com.zy.asrs.service.impl.TaskDetlServiceImpl;
+import com.zy.asrs.service.impl.*;
 import com.zy.asrs.task.AbstractHandler;
 import com.zy.asrs.task.core.ReturnT;
 import lombok.extern.slf4j.Slf4j;
@@ -58,6 +55,8 @@
     private BasStationServiceImpl basStationService;
     @Autowired
     private WorkService workService;
+    @Autowired
+    private LocAroundBindService locAroundBindService;
 
     public ReturnT<String> start(WrkMast wrkMast) {
         // 4.鍏ュ簱瀹屾垚
@@ -115,7 +114,6 @@
                     }
                     // 閬嶅巻宸ヤ綔鏄庣粏锛屾洿鏂板簱瀛樻槑缁嗗拰鍏ュ簱閫氱煡妗�
                     for (WrkDetl wrkDetl : wrkDetls) {
-
                         LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand()
                                 , wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
                         if (null != locDetl) {
@@ -141,8 +139,34 @@
                         }
 
                         //鍒ゆ柇鍖归厤缂栫爜涓嶄负绌猴紝涓斾换鍔$紪鐮佸寘鍚�-2锛岀‘璁や负鏈変笂缁勪换鍔�
-                        if (!Objects.isNull(wrkMast.getWrkCode()) && wrkMast.getWrkCode().contains("-2")) {
-                            //涓嶉渶瑕佹洿鏂板崟鎹俊鎭紙瀛愪换鍔℃棤鍗曟嵁
+                        if (!Objects.isNull(wrkMast.getWrkCode())) {
+                            //TODO 鑾峰彇101鍑哄簱 涓讳换鍔℃。鎬绘暟閲� - 瀛愪换鍔℃。鐨勫疄闄呮暟閲� = 褰撳墠浣滀笟瀹屾垚鏁伴噺
+                            WrkDetl selectOne = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+
+                            Double v = Math.round((selectOne.getStockQty() - selectOne.getAnfme()) * 10000) / 10000.0;
+
+                            OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), null, null, null, null,
+                                    null, null, null);
+
+                            if (!Objects.isNull(orderDetlPakout)) {
+                                orderDetlPakout.setQty(v);
+                                if (!orderDetlPakoutService.updateById(orderDetlPakout)) {
+                                    throw new CoolException("鍗曟嵁瀹屾垚鏁伴噺淇敼澶辫触锛侊紒");
+                                }
+                            }
+                            int indexOf = wrkMast.getWrkCode().indexOf("-1");
+                            if (indexOf != -1) {
+                                String wrkNo = wrkMast.getWrkCode().substring(0, indexOf);
+                                WrkMast mast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", wrkNo));
+                                if (Objects.isNull(mast)) {
+
+                                    throw new CoolException("鏁版嵁閿欒锛屼富浠诲姟妗d笉瀛樺湪鎴栧凡鍒犻櫎锛侊紒");
+                                }
+                                mast.setWrkCode(null);
+                                if (!wrkMastService.updateById(mast)) {
+                                    throw new CoolException("鍘熶换鍔℃。鍒犻櫎澶辫触锛侊紒");
+                                }
+                            }
                         } else {
                             //姝e父鍗曟嵁鎵嶅瓨瀛樺叆搴撳崟锛屼綔鍏ュ簱鍗曟嵁淇℃伅鏇存柊
                             // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
@@ -444,6 +468,26 @@
             return FAIL.setMsg(e.getMessage());
         }
 
+        /***/
+        if (!Objects.isNull(wrkMast.getWrkCode())) {
+            LocMast lcmst = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast.getSourceLocNo()));
+            lcmst.setLocSts(LocStsType.LOC_STS_TYPE_O.type);
+            if (!locMastService.updateById(lcmst)) {
+                throw new CoolException("搴撲綅鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+            }
+
+            LocAroundBind bLocNo = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>().eq("b_loc_no", wrkMast.getSourceLocNo()));
+            if (Objects.isNull(bLocNo)) {
+                throw new CoolException("宸ヤ綅涓嶅瓨鍦� 锛侊紒");
+            }
+            bLocNo.setLocType(LocStsType.LOC_STS_TYPE_O.type);
+            if (!locAroundBindService.updateById(bLocNo)) {
+                throw new CoolException("宸ヤ綅鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+            }
+
+            locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo()));
+        }
+
         return SUCCESS;
     }
 
@@ -489,7 +533,8 @@
     }
 
 
-    private ReturnT<String> doOut(WrkMast wrkMast) {
+    @Transactional(rollbackFor = Exception.class)
+    public ReturnT<String> doOut(WrkMast wrkMast) {
         Date now = new Date();
         LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
         try {
@@ -507,7 +552,18 @@
                     if (!Objects.isNull(wrkMast.getWrkCode())) {
                         //TODO 绉诲簱
 //                        workService.locMove(wrkMast.getSourceLocNo(), wrkMast.getLocNo(), wrkMast.getAppeUser());
+
                         movLoc(wrkMast);
+
+                        //淇敼宸ヤ綅搴撴��
+                        LocAroundBind bLocNo = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>().eq("b_loc_no", wrkMast.getLocNo()));
+                        if (Objects.isNull(bLocNo)) {
+                            throw new CoolException("鏁版嵁閿欒锛� 鐩爣宸ヤ綅涓嶅瓨鍦紒锛�");
+                        }
+                        bLocNo.setLocType(LocStsType.LOC_STS_TYPE_F.type);
+                        if (!locAroundBindService.updateById(bLocNo)) {
+                            throw new CoolException("宸ヤ綅鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+                        }
                     } else {
 //                    // 鍑哄簱纭淇″彿浣�
 //                    if (Cools.isEmpty(wrkMast.getInvWh()) || wrkMast.getInvWh().equals("N")) {

--
Gitblit v1.9.1