From a5f32ab97a77e7f14aba3553ac33112e69763c8e Mon Sep 17 00:00:00 2001
From: skyouc <creaycat@gmail.com>
Date: 星期一, 15 十二月 2025 14:02:02 +0800
Subject: [PATCH] 并托出库优化

---
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java |  141 +++++++++++++++++++++++++++++++----------------
 1 files changed, 93 insertions(+), 48 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index d309d42..a308e60 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -1618,8 +1618,14 @@
 
         int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", param.getBarcode()));
         int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet", param.getBarcode()));
+        if (countWrk > 0 || countLoc > 0) {
+            WrkMast wrkDetl = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", param.getBarcode()));
+            if (!wrkDetl.getIoType().equals(TaskIOType.MERGE_OUT.type)) {
+                throw new CoolException("缁勬墭妗�/宸ヤ綔妗�/搴撳瓨鏉$爜鏁版嵁宸插瓨鍦�===>>" + param.getBarcode());
+            }
+        }
         int countwait = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode()));
-        if (countLoc > 0 || countWrk > 0 || countwait > 0) {
+        if (countwait > 0) {
             throw new CoolException("缁勬墭妗�/宸ヤ綔妗�/搴撳瓨鏉$爜鏁版嵁宸插瓨鍦�===>>" + param.getBarcode());
         }
 
@@ -1934,40 +1940,94 @@
         }
 
         BasDevp sourceStaNo = basDevpService.checkSiteStatus(Integer.parseInt(rela.getCrnSta()), true);
-
         sourceStaNo.setLocType1(locType);
         LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
         WaitPakin pakin = waitPakins.stream().findFirst().get();
         FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(pakin);
-        StartupDto dto = commonService.getLocNo(1, sourceStaNo.getDevNo(), findLocNoAttributeVo, locTypeDto);
-        int workNo = dto.getWorkNo();
-        // 鐢熸垚宸ヤ綔妗�
+
+        WrkMast mast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", pakin.getZpallet()));
         WrkMast wrkMast = new WrkMast();
-        wrkMast.setWrkNo(workNo);
-        wrkMast.setIoTime(new Date());
-        wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
-        wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
-        wrkMast.setIoPri(13D); // 浼樺厛绾�
-        wrkMast.setCrnNo(dto.getCrnNo());
-        wrkMast.setSourceStaNo(dto.getSourceStaNo() + "");
-        wrkMast.setStaNo(dto.getStaNo() + "");
-        wrkMast.setLocNo(dto.getLocNo());
-        wrkMast.setBarcode(pakin.getZpallet()); // 鎵樼洏鐮�
-        wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
-        wrkMast.setPicking("N"); // 鎷f枡
-        wrkMast.setExitMk("N"); // 閫�鍑�
-        wrkMast.setEmptyMk("N"); // 绌烘澘
-        wrkMast.setLinkMis("Y");
-        wrkMast.setModiUser(userId);
-        wrkMast.setAppeUser(userId);
-        wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
-        // 鎿嶄綔浜哄憳鏁版嵁
-        wrkMast.setAppeTime(now);
-        wrkMast.setModiTime(now);
-        boolean res = wrkMastService.insert(wrkMast);
-        if (!res) {
-            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+        if (!Objects.isNull(mast)) {
+            if (mast.getIoType().equals(TaskIOType.MERGE_OUT.type) || mast.getIoType().equals(TaskIOType.PICK_OUT.type) || mast.getIoType().equals(TaskIOType.CHECK_OUT.type)) {
+                int ioType = mast.getIoType() - 50;
+                mast.setIoType(ioType);
+                mast.setWrkSts(2L);
+                mast.setSourceStaNo(mast.getSourceStaNo());
+                mast.setStaNo(mast.getSourceStaNo());
+                mast.setLocNo(mast.getSourceLocNo());
+                boolean res = wrkMastService.updateById(mast);
+                BeanUtils.copyProperties(mast, wrkMast);
+                if (!res) {
+                    throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+                }
+                // 鏇存柊婧愮珯鐐逛俊鎭�
+                sourceStaNo.setWrkNo(mast.getWrkNo());
+                sourceStaNo.setModiTime(now);
+                if (!basDevpService.updateById(sourceStaNo)) {
+                    throw new CoolException("鏇存柊婧愮珯澶辫触");
+                }
+                // 鏇存柊鐩爣搴撲綅鐘舵��
+                LocMast locMast = locMastService.selectById(mast.getLocNo());
+                if (locMast.getLocSts().equals("O")) {
+                    locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
+                    locMast.setModiTime(now);
+                    if (!locMastService.updateById(locMast)) {
+                        throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
+                    }
+                } else {
+                    throw new CoolException(mast.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
+                }
+            } else {
+                throw new CoolException("鎵樼洏宸插瓨鍦ㄤ换鍔℃。锛侊紒");
+            }
+        } else {
+            StartupDto dto = commonService.getLocNo(1, sourceStaNo.getDevNo(), findLocNoAttributeVo, locTypeDto);
+            int workNo = dto.getWorkNo();
+            // 鐢熸垚宸ヤ綔妗�
+            wrkMast.setWrkNo(workNo);
+            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.setIoPri(13D); // 浼樺厛绾�
+            wrkMast.setBarcode(pakin.getZpallet()); // 鎵樼洏鐮�
+            wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+            wrkMast.setPicking("N"); // 鎷f枡
+            wrkMast.setExitMk("N"); // 閫�鍑�
+            wrkMast.setEmptyMk("N"); // 绌烘澘
+            wrkMast.setLinkMis("Y");
+            wrkMast.setModiUser(userId);
+            wrkMast.setAppeUser(userId);
+            wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
+            // 鎿嶄綔浜哄憳鏁版嵁
+            wrkMast.setAppeTime(now);
+            wrkMast.setModiTime(now);
+            boolean res = wrkMastService.insert(wrkMast);
+            if (!res) {
+                throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+            }
+            // 鏇存柊婧愮珯鐐逛俊鎭�
+            sourceStaNo.setWrkNo(workNo);
+            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)) {
+                    throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
+                }
+            } else {
+                throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
+            }
         }
+
         // 鐢熸垚宸ヤ綔妗f槑缁�
         waitPakins.forEach(waitPakin -> {
             WrkDetl wrkDetl = new WrkDetl();
@@ -1980,6 +2040,9 @@
                 throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
             }
         });
+
+
+
 //        // 鏇存柊鍏ュ簱閫氱煡妗� ioStatus ===>> Y
 //        Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>()
 //                .eq("zpallet", pakin.getZpallet());
@@ -1990,24 +2053,6 @@
 //        if (!waitPakinService.update(setParam, wrapper)) {
 //            throw new CoolException("鏇存柊閫氱煡妗eけ璐�");
 //        }
-        // 鏇存柊婧愮珯鐐逛俊鎭�
-        sourceStaNo.setWrkNo(workNo);
-        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)) {
-                throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
-            }
-        } else {
-            throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
-        }
-
     }
 
     /**
@@ -2113,7 +2158,7 @@
                             }
                             //浣欎笅鏈�澶у彲鏀炬暟閲�
                             Double v = Math.round((mats.getUpQty() * suplus) * 10000) / 10000.0;
-                            // 鍏ュ簱鏁伴噺灏忎簬闆朵笖鍏ュ簱鏁伴噺鍑忓幓宸插嚭鏁伴噺澶т簬闆讹紙锛�
+                            // 鍏ュ簱鏁伴噺灏忎簬闆朵笖鍏ュ簱鏁伴噺鍑忓幓宸茶鍒掑嚭鏁伴噺澶т簬闆讹紙锛�
                             if (sum.compareTo(v) <= 0 && sum.compareTo(itemed.get()) > 0) {
                                 itemed.set(Math.round((itemed.get() + v) * 10000) / 10000.0);
                                 // 鍙斁涓�

--
Gitblit v1.9.1