From 78067a1c03707766f3d6561c22e165af68ad36b9 Mon Sep 17 00:00:00 2001
From: Junjie <DELL@qq.com>
Date: 星期四, 18 十二月 2025 14:38:35 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java |  222 ++++++++++++++++++++++++++++++-------------------------
 1 files changed, 121 insertions(+), 101 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 3df1f55..30f354f 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -98,7 +98,7 @@
 
         StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 1, findLocNoAttributeVo, locTypeDto, param.getBarcode());
         // 鐢熸垚宸ヤ綔鍙�
-        int workNo = dto.getWorkNo();
+        int workNo = dto.getTaskNo();
         // 鐢熸垚宸ヤ綔妗�
         WrkMast wrkMast = new WrkMast();
         wrkMast.setWrkNo(workNo);
@@ -221,10 +221,6 @@
                 throw new CoolException(dto.getLocNo()+"鎵樼洏闈炲湪搴撶姸鎬�");
             }
 
-            Integer outSta = staNo.getDevNo();
-
-            // 鑾峰彇璺緞
-            StaDesc staDesc = staDescService.queryCrnStn(ioType, outSta);
             // 鐢熸垚宸ヤ綔鍙�
             int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
             // 鐢熸垚宸ヤ綔妗�
@@ -235,9 +231,8 @@
             wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
             wrkMast.setIoPri(10D); // 浼樺厛绾�
             wrkMast.setCrnNo(locMast.getCrnNo());
-            wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
-            wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
             wrkMast.setSourceLocNo(dto.getLocNo()); // 婧愬簱浣�
+            wrkMast.setStaNo(staNo.getDevNo());// 鐩爣绔�
             wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
             wrkMast.setPicking("N"); // 鎷f枡
             wrkMast.setExitMk("N"); // 閫�鍑�
@@ -284,94 +279,131 @@
                 throw new CoolException(dto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
             }
         }
+
+        //妫�娴嬫槸鍚﹀瓨鍦ㄦ祬搴撲綅
+        for (OutLocDto dto : dtos) {
+            //鍒ゆ柇鏄惁鏄繁搴撲綅 瑙﹀彂绉诲簱浠诲姟
+            if (Utils.isDeepLoc(dto.getLocNo())) {
+                String deepLoc = dto.getLocNo();
+                String shallowLocNo = Utils.getShallowLocNo(deepLoc);
+                LocMast shallowLocMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", shallowLocNo));
+                if (shallowLocMast.getLocSts().equals("F") || shallowLocMast.getLocSts().equals("D")) {
+                    //瑙﹀彂绉诲簱浠诲姟
+                    String locTransferLocNo = commonService.getLocTransferLocNo(shallowLocNo);
+                    if (locTransferLocNo == null) {
+                        throw new CoolException(shallowLocNo + "娴呭簱浣嶆悳绱㈢Щ搴撶┖搴撲綅澶辫触");
+                    }
+                    this.locMove(shallowLocNo, locTransferLocNo, userId);
+                }
+            }
+        }
+
     }
 
     @Override
     @Transactional
-    public void stockOut(BasDevp staNo, TaskDto taskDto, Long userId) {
-        Date now = new Date();
-        List<LocDto> locDtos = taskDto.getLocDtos();
-        for (LocDto locDto : locDtos) {
-            if (!taskDto.getLocNo().equals(locDto.getLocNo()) && !taskDto.getStaNo().equals(locDto.getStaNo())) {
-                throw new CoolException("璁㈠崟鍑哄簱寮傚父锛岃鑱旂郴绠$悊鍛�");
+    public void stockOut(List<TaskDto> taskDtoList, Long userId) {
+        for (TaskDto taskDto : taskDtoList) {
+            Date now = new Date();
+            List<LocDto> locDtos = taskDto.getLocDtos();
+            for (LocDto locDto : locDtos) {
+                if (!taskDto.getLocNo().equals(locDto.getLocNo()) && !taskDto.getStaNo().equals(locDto.getStaNo())) {
+                    throw new CoolException("璁㈠崟鍑哄簱寮傚父锛岃鑱旂郴绠$悊鍛�");
+                }
+            }
+            // 鑾峰彇搴撲綅
+            LocMast locMast = locMastService.selectById(taskDto.getLocNo());
+            // 鑾峰彇璺緞
+            int ioType = taskDto.isAll() ? 101 : 103;
+            // 鐢熸垚宸ヤ綔鍙�
+            int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
+            // 鐢熸垚宸ヤ綔妗�
+            WrkMast wrkMast = new WrkMast();
+            wrkMast.setWrkNo(workNo);
+            wrkMast.setIoTime(now);
+            wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+            wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
+            wrkMast.setIoPri(13D); // 浼樺厛绾э細13
+            wrkMast.setCrnNo(locMast.getCrnNo());
+            wrkMast.setSourceLocNo(taskDto.getLocNo()); // 婧愬簱浣�
+            wrkMast.setStaNo(taskDto.getStaNo());// 鐩爣绔�
+            wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+            wrkMast.setPicking("N"); // 鎷f枡
+            wrkMast.setExitMk("N"); // 閫�鍑�
+            wrkMast.setEmptyMk("N"); // 绌烘澘
+            wrkMast.setLinkMis("N");
+            wrkMast.setBarcode(locMast.getBarcode());
+            wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁
+            wrkMast.setAppeTime(now);
+            wrkMast.setModiUser(userId);
+            wrkMast.setModiTime(now);
+            if (!wrkMastService.insert(wrkMast)) {
+                throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細"+taskDto.getLocNo());
+            }
+            // 鐢熸垚宸ヤ綔妗f槑缁�
+            for (LocDto locDto : taskDto.getLocDtos()) {
+                if (locDto.getAnfme()==null || locDto.getAnfme() <= 0.0D) { continue; }
+                OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch());
+                if (orderDetl == null) {
+                    orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null);
+                }
+                LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locDto.getLocNo()).eq("matnr", locDto.getMatnr()));
+                Mat mat = matService.selectOne(new EntityWrapper<Mat>().eq("matnr", locDto.getMatnr()));
+                WrkDetl wrkDetl = new WrkDetl();
+                wrkDetl.sync(orderDetl);
+                wrkDetl.setZpallet(wrkMast.getBarcode());
+                wrkDetl.setIoTime(now);
+                wrkDetl.setWrkNo(workNo);
+                wrkDetl.setBatch(locDto.getBatch());
+                wrkDetl.setOrderNo(locDto.getOrderNo());
+                wrkDetl.setModel(mat.getModel());
+                wrkDetl.setPrice(locDetl.getAnfme());//搴撳瓨鏁伴噺
+                wrkDetl.setAnfme(locDto.getAnfme()); // 鏁伴噺
+                wrkDetl.setWeight(locDetl.getAnfme());//鎬绘暟
+                wrkDetl.setAppeTime(now);
+                wrkDetl.setAppeUser(userId);
+                wrkDetl.setModiTime(now);
+                wrkDetl.setModiUser(userId);
+                if (!wrkDetlService.insert(wrkDetl)) {
+                    throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+                }
+                // 淇敼璁㈠崟鏄庣粏
+                if (!orderDetlService.increaseWorkQty(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme())) {
+                    throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
+                }
+                orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
+            }
+            // 淇敼搴撲綅鐘舵��:   F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
+            locMast = locMastService.selectById(taskDto.getLocNo());
+            if (locMast.getLocSts().equals("F")) {
+                locMast.setLocSts(ioType==101?"R":"P");
+                locMast.setModiUser(userId);
+                locMast.setModiTime(now);
+                if (!locMastService.updateById(locMast)) {
+                    throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細"+taskDto.getLocNo());
+                }
+            } else {
+                throw new CoolException(taskDto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
             }
         }
-        // 鑾峰彇搴撲綅
-        LocMast locMast = locMastService.selectById(taskDto.getLocNo());
-        // 鑾峰彇璺緞
-        int ioType = taskDto.isAll() ? 101 : 103;
-        StaDesc staDesc = staDescService.queryCrnStn(ioType, staNo.getDevNo());
-        // 鐢熸垚宸ヤ綔鍙�
-        int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
-        int yz=staDesc.getStnNo()*10+Integer.valueOf(taskDto.getLocNo().substring(6));
-        // 鐢熸垚宸ヤ綔妗�
-        WrkMast wrkMast = new WrkMast();
-        wrkMast.setWrkNo(workNo);
-        wrkMast.setIoTime(now);
-        wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
-        wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
-        wrkMast.setIoPri(13D); // 浼樺厛绾э細13
-        wrkMast.setCrnNo(locMast.getCrnNo());
-        wrkMast.setSourceStaNo(yz); // 婧愮珯
-        wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
-        wrkMast.setSourceLocNo(taskDto.getLocNo()); // 婧愬簱浣�
-        wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
-        wrkMast.setPicking("N"); // 鎷f枡
-        wrkMast.setExitMk("N"); // 閫�鍑�
-        wrkMast.setEmptyMk("N"); // 绌烘澘
-        wrkMast.setLinkMis("N");
-        wrkMast.setBarcode(locMast.getBarcode());
-        wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁
-        wrkMast.setAppeTime(now);
-        wrkMast.setModiUser(userId);
-        wrkMast.setModiTime(now);
-        if (!wrkMastService.insert(wrkMast)) {
-            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細"+taskDto.getLocNo());
-        }
-        // 鐢熸垚宸ヤ綔妗f槑缁�
-        for (LocDto locDto : taskDto.getLocDtos()) {
-            if (locDto.getAnfme()==null || locDto.getAnfme() <= 0.0D) { continue; }
-            OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch());
-            if (orderDetl == null) {
-                orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null);
+
+
+        //妫�娴嬫槸鍚﹀瓨鍦ㄦ祬搴撲綅
+        for (TaskDto taskDto : taskDtoList) {
+            //鍒ゆ柇鏄惁鏄繁搴撲綅 瑙﹀彂绉诲簱浠诲姟
+            if (Utils.isDeepLoc(taskDto.getLocNo())) {
+                String deepLoc = taskDto.getLocNo();
+                String shallowLocNo = Utils.getShallowLocNo(deepLoc);
+                LocMast shallowLocMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", shallowLocNo));
+                if (shallowLocMast.getLocSts().equals("F") || shallowLocMast.getLocSts().equals("D")) {
+                    //瑙﹀彂绉诲簱浠诲姟
+                    String locTransferLocNo = commonService.getLocTransferLocNo(shallowLocNo);
+                    if (locTransferLocNo == null) {
+                        throw new CoolException(shallowLocNo + "娴呭簱浣嶆悳绱㈢Щ搴撶┖搴撲綅澶辫触");
+                    }
+                    this.locMove(shallowLocNo, locTransferLocNo, userId);
+                }
             }
-            LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locDto.getLocNo()).eq("matnr", locDto.getMatnr()));
-            Mat mat=matService.selectOne(new EntityWrapper<Mat>().eq("matnr",locDto.getMatnr()));
-            WrkDetl wrkDetl = new WrkDetl();
-            wrkDetl.sync(orderDetl);
-            wrkDetl.setZpallet(wrkMast.getBarcode());
-            wrkDetl.setIoTime(now);
-            wrkDetl.setWrkNo(workNo);
-            wrkDetl.setBatch(locDto.getBatch());
-            wrkDetl.setOrderNo(locDto.getOrderNo());
-            wrkDetl.setModel(mat.getModel());
-            wrkDetl.setPrice(locDetl.getAnfme());//搴撳瓨鏁伴噺
-            wrkDetl.setAnfme(locDto.getAnfme()); // 鏁伴噺
-            wrkDetl.setWeight(locDetl.getAnfme());//鎬绘暟
-            wrkDetl.setAppeTime(now);
-            wrkDetl.setAppeUser(userId);
-            wrkDetl.setModiTime(now);
-            wrkDetl.setModiUser(userId);
-            if (!wrkDetlService.insert(wrkDetl)) {
-                throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
-            }
-            // 淇敼璁㈠崟鏄庣粏
-            if (!orderDetlService.increaseWorkQty(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme())) {
-                throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
-            }
-            orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
-        }
-        // 淇敼搴撲綅鐘舵��:   F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
-        locMast = locMastService.selectById(taskDto.getLocNo());
-        if (locMast.getLocSts().equals("F")) {
-            locMast.setLocSts(ioType==101?"R":"P");
-            locMast.setModiUser(userId);
-            locMast.setModiTime(now);
-            if (!locMastService.updateById(locMast)) {
-                throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細"+taskDto.getLocNo());
-            }
-        } else {
-            throw new CoolException(taskDto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
         }
     }
 
@@ -386,7 +418,7 @@
         FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo();
 
         StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 10, findLocNoAttributeVo, locTypeDto, "");
-        int workNo = dto.getWorkNo();
+        int workNo = dto.getTaskNo();
         Date now = new Date();
         // 鐢熸垚宸ヤ綔妗�
         WrkMast wrkMast = new WrkMast();
@@ -851,18 +883,6 @@
             }
 
         }
-
-//        // 璁㈠崟鍏宠仈
-//        List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
-//        for (WrkDetl wrkDetl : wrkDetls) {
-//            if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
-//                if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) {
-//                    throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
-//                }
-//                // 鐢熸垚鏂扮殑鍑哄簱浣滀笟
-////                        stockOutRe(wrkMast, wrkDetls);
-//            }
-//        }
 
         // 鍙栨秷鎿嶄綔浜哄憳璁板綍
         wrkMast.setManuType("鎵嬪姩鍙栨秷");

--
Gitblit v1.9.1