From 65b0504a31e97af4f80bd31eaf7b56eea7e80a38 Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期一, 08 十二月 2025 08:44:54 +0800
Subject: [PATCH] #出库单

---
 src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java |  192 ++++++++++++++++++++++++++++++++++++------------
 1 files changed, 144 insertions(+), 48 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 ef6f47d..2179a15 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -59,6 +59,8 @@
     private BasStationServiceImpl basStationService;
     @Autowired
     private CheckOrderDetlService checkOrderDetlService;
+    @Autowired
+    private WaitPakinLogService waitPakinLogService;
 
     public ReturnT<String> start(WrkMast wrkMast) {
         // 4.鍏ュ簱瀹屾垚
@@ -831,58 +833,152 @@
     @Transactional(rollbackFor = Exception.class)
     public ReturnT<String> agvDoIn(Task wrkMast) {
         LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", wrkMast.getLocNo()));
-        if (Objects.isNull(locCache)) {
-            throw new CoolException("鏁版嵁閿欒锛屽簱浣嶄笉瀛樺湪锛侊紒");
-        }
-        if (!locCache.getLocSts().equals(LocStsType.LOC_STS_TYPE_S.type)) {
-            throw new CoolException(
-                    "褰撳墠搴撲綅鐘舵�佷负锛�" + LocStsType.LOC_STS_TYPE_S.type + "." + LocStsType.LOC_STS_TYPE_S.desc + "锛屼笉鏄嚭搴撻绾︾姸鎬�");
-        }
-        List<WaitPakin> apallet = waitPakinService
-                .selectList(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()));
-        if (Objects.isNull(apallet)) {
-            throw new CoolException("鏁版嵁閿欒锛氱粍鎵樻暟鎹笉瀛樺湪锛侊紒");
-        }
-        apallet.forEach(pakin -> {
-            LocDetl detl = new LocDetl();
-            BeanUtils.copyProperties(pakin, detl);
-
-            detl.setBarcode(pakin.getBarcode());
-            detl.setAnfme(pakin.getAnfme());
-            detl.setBrand(pakin.getBrand());
-            detl.setAppeTime(new Date());
-            detl.setSpecs(pakin.getSpecs());
-            detl.setColor(pakin.getColor());
-            detl.setLocId(locCache.getId());
-            detl.setLocNo(locCache.getLocNo());
-            detl.setAreaId(locCache.getAreaId());
-            detl.setAreaName(locCache.getAreaName());
-            detl.setUnit(pakin.getUnit());
-            detl.setBatch(pakin.getBatch());
-            if (!locDetlService.insert(detl)) {
-                throw new CoolException("搴撲綅鏄庣粏淇濆瓨澶辫触锛侊紒");
+        if(wrkMast.getIoType().equals(1)){
+            if (Objects.isNull(locCache)) {
+                throw new CoolException("鏁版嵁閿欒锛屽簱浣嶄笉瀛樺湪锛侊紒");
             }
-        });
+            if (!locCache.getLocSts().equals(LocStsType.LOC_STS_TYPE_S.type)) {
+                throw new CoolException(
+                        "褰撳墠搴撲綅鐘舵�佷负锛�" + LocStsType.LOC_STS_TYPE_S.type + "." + LocStsType.LOC_STS_TYPE_S.desc + "锛屼笉鏄嚭搴撻绾︾姸鎬�");
+            }
+            List<WaitPakin> apallet = waitPakinService
+                    .selectList(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()));
+            if (Objects.isNull(apallet)) {
+                throw new CoolException("鏁版嵁閿欒锛氱粍鎵樻暟鎹笉瀛樺湪锛侊紒");
+            }
+            apallet.forEach(pakin -> {
+                LocDetl detl = new LocDetl();
+                BeanUtils.copyProperties(pakin, detl);
 
-        locCache.setLocSts(LocStsType.LOC_STS_TYPE_F.type);
-        locCache.setModiTime(new Date());
-        locCache.setBarcode(wrkMast.getBarcode());
-        locCache.setModiTime(new Date());
-        locCache.setIoTime(new Date());
-        if (!locCacheService.updateById(locCache)) {
-            throw new CoolException("搴撲綅鐘舵�佷慨鏀瑰け璐ワ紒");
-        }
-        wrkMast.setWrkSts(5L);
-        wrkMast.setModiTime(new Date());
-        if (!taskService.updateById(wrkMast)) {
-            throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+                detl.setBarcode(pakin.getBarcode());
+                detl.setAnfme(pakin.getAnfme());
+                detl.setBrand(pakin.getBrand());
+                detl.setAppeTime(new Date());
+                detl.setSpecs(pakin.getSpecs());
+                detl.setColor(pakin.getColor());
+                detl.setLocId(locCache.getId());
+                detl.setLocNo(locCache.getLocNo());
+                detl.setAreaId(locCache.getAreaId());
+                detl.setAreaName(locCache.getAreaName());
+                detl.setUnit(pakin.getUnit());
+                detl.setBatch(pakin.getBatch());
+                if (!locDetlService.insert(detl)) {
+                    throw new CoolException("搴撲綅鏄庣粏淇濆瓨澶辫触锛侊紒");
+                }
+            });
+
+            locCache.setLocSts(LocStsType.LOC_STS_TYPE_F.type);
+            locCache.setModiTime(new Date());
+            locCache.setBarcode(wrkMast.getBarcode());
+            locCache.setModiTime(new Date());
+            locCache.setIoTime(new Date());
+            if (!locCacheService.updateById(locCache)) {
+                throw new CoolException("搴撲綅鐘舵�佷慨鏀瑰け璐ワ紒");
+            }
+            wrkMast.setWrkSts(5L);
+            wrkMast.setModiTime(new Date());
+            if (!taskService.updateById(wrkMast)) {
+                throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+            }
+
+            for (WaitPakin pakin : apallet){
+                WaitPakinLog waitPakinLog = new WaitPakinLog();
+                BeanUtils.copyProperties(pakin, waitPakinLog);
+                waitPakinLogService.insert(waitPakinLog);
+                waitPakinService.deleteById(pakin.getId());
+            }
+
+            Set<Long> list = apallet.stream().map(WaitPakin::getOrderId).collect(Collectors.toSet());
+            List<OrderPakin> pakins = orderPakinService.selectList(new EntityWrapper<OrderPakin>().in("id", list));
+            if (Objects.isNull(pakins) || pakins.isEmpty()) {
+//            throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�");
+            }
+        }else if(wrkMast.getIoType().equals(53)){
+            // 鏍规嵁宸ヤ綔鍙凤紝鏌ヨ宸ヤ綔鏄庣粏妗�
+            List<TaskDetl> wrkDetls53 = taskDetlService
+                    .selectList(new EntityWrapper<TaskDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+            if (wrkDetls53.isEmpty()) {
+                // exceptionHandle("鎷f枡鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d负绌猴紱[workNo={0}]", wrkMast.getWrkNo());
+                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                return FAIL.setMsg("鎷f枡鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d负绌�; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
+                        + wrkMast.getLocNo() + "]");
+            }
+            for (TaskDetl wrkDetl : wrkDetls53) {
+
+                LocDetl locDetl = locDetlService.selectItem(locCache.getLocNo(), wrkDetl.getMatnr(),
+                        wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(),
+                        wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(),
+                        wrkDetl.getBoxType3());
+                if (null != locDetl) {
+                    if (!locDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(), locCache.getLocNo(),
+                            wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
+                            wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(),
+                            wrkDetl.getBoxType2(), wrkDetl.getBoxType3())) {
+                        // exceptionHandle("鎷f枡鍏ュ簱 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触锛沎workNo={0}],[locNo={1}]",
+                        // wrkMast.getWrkNo(), wrkMast.getLocNo());
+                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                        return FAIL.setMsg("鎷f枡鍏ュ簱 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
+                                + wrkMast.getLocNo() + "]");
+                    }
+                }
+
+                // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
+                OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(),
+                        wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(),
+                        wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+                        wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
+                if (orderDetlPakout == null) {
+                    orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
+                            wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
+                            wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+                            wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
+                }
+                try {
+                    if (!Cools.isEmpty(orderDetlPakout)) {
+                        if (!orderDetlPakinService.increaseQtyByOrderNo(wrkDetl.getOrderNo(),
+                                wrkDetl.getMatnr(),
+                                orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
+                                wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+                                wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(),
+                                wrkDetl.getAnfme())) {
+                            // exceptionHandle("鎷f枡鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触锛沎workNo={0}],[locNo={1}]",
+                            // wrkMast.getWrkNo(), wrkMast.getLocNo());
+                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                            return FAIL.setMsg("鎷f枡鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo()
+                                    + "],[locNo=" + wrkMast.getLocNo() + "]");
+                        }
+                    }
+                } catch (Exception ignore) {
+                }
+
+            }
+            Date now = new Date();
+            // 淇敼搴撲綅鐘舵�� Q ====>> F
+            if (locCache.getLocSts().equals("Q")) {
+                locCache.setLocSts("F");
+                locCache.setBarcode(wrkMast.getBarcode());
+                locCache.setIoTime(now);
+                locCache.setModiTime(now);
+                if (!locCacheService.updateById(locCache)) {
+                    // exceptionHandle("鎷f枡鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐ワ紱[workNo={0}],[locNo={1}]",
+                    // wrkMast.getWrkNo(), wrkMast.getLocNo());
+                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                    return FAIL.setMsg("鎷f枡鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
+                            + wrkMast.getLocNo() + "]");
+                }
+            }
+
+            // 淇敼宸ヤ綔涓绘。鐘舵��
+            wrkMast.setWrkSts(5L);
+            wrkMast.setModiTime(now);
+            if (!taskService.updateById(wrkMast)) {
+                // exceptionHandle("鏇存柊鍏ュ簱瀹屾垚鐘舵�佸け璐�;[workNo={0}]", wrkMast.getWrkNo());
+                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                return FAIL
+                        .setMsg("鏇存柊鍏ュ簱瀹屾垚鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+            }
         }
 
-        Set<Long> list = apallet.stream().map(WaitPakin::getOrderId).collect(Collectors.toSet());
-        List<OrderPakin> pakins = orderPakinService.selectList(new EntityWrapper<OrderPakin>().in("id", list));
-        if (Objects.isNull(pakins) || pakins.isEmpty()) {
-            throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�");
-        }
 
         return SUCCESS;
     }

--
Gitblit v1.9.1