From b97ab3e077df3665663eb3a5b0c23d54c83a5548 Mon Sep 17 00:00:00 2001
From: tzsk <Administrator@qq.com>
Date: 星期五, 31 五月 2024 12:02:25 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java |  174 +++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 119 insertions(+), 55 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 188d814..0e8dc19 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -284,6 +284,12 @@
             }
         }
 
+        for (OutLocDto dto : dtos) {
+            dto.sortLocDetlDtos();
+        }
+
+
+        ArrayList<String> outerLocs = new ArrayList<>();
         //妫�娴嬫槸鍚︿负娴呭簱浣�
         boolean sign=false;
         String th = "";
@@ -301,17 +307,32 @@
                     LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", outerLoc));
                     if (locMast != null) {
                         if (!locMast.getLocSts().equals("O") && !locMast.getLocSts().equals("R")) {
-                            sign = true;
-                            th = "搴撲綅鍙凤細" + locNo + " 娴呭簱浣嶆湁闈炵┖搴撲綅锛�";
-                            break;
+//                            sign = true;
+//                            th = "搴撲綅鍙凤細" + locNo + " 娴呭簱浣嶆湁闈炵┖搴撲綅锛�";
+//                            break;
+
+                            OutLocDto outLocDto = new OutLocDto();
+                            outLocDto.setLocNo(locMast.getLocNo());
+                            List<LocDetlDto> locDetlDtos1 = new ArrayList<>();
+                            for (LocDetl locDetl : locDetlService.selectByLocNo(locMast.getLocNo())) {
+                                LocDetlDto locDetlDto = new LocDetlDto();
+                                locDetlDto.setLocDetl(locDetl);
+                                locDetlDto.setCount(locDetl.getAnfme());
+                                locDetlDtos1.add(locDetlDto);
+                            }
+                            outLocDto.setLocDetlDtos(locDetlDtos1);
+                            if (!outerLocs.contains(locMast.getLocNo())) {
+                                dtos.add(outLocDto);
+                                outerLocs.add(locMast.getLocNo());
+                            }
                         }
                     }
                 }
             }
         }
-        if (sign){
-            throw new CoolException("鍑哄簱澶辫触锛�"+th);
-        }
+//        if (sign){
+//            throw new CoolException("鍑哄簱澶辫触锛�"+th);
+//        }
 
         //**************325銆�331銆�333銆�339绔欑偣棰濆閫昏緫浠g爜**************
         HashMap<String, Object> tmpMap = new HashMap<>();
@@ -407,14 +428,15 @@
             }
             // 鐢熸垚宸ヤ綔妗f槑缁�
             for (LocDetlDto detlDto : dto.getLocDetlDtos()) {
-                if (detlDto.getCount()==null || detlDto.getCount() <= 0.0D) {continue;}
+                if (detlDto.getCount()==null) {continue;}
                 WrkDetl wrkDetl = new WrkDetl();
                 wrkDetl.sync(detlDto.getLocDetl());
                 wrkDetl.setOrderNo(""); // 鎵嬪姩鍑哄簱涓嶉渶瑕佸甫鍑哄簱瀛樹腑鐨勫崟鎹紪鍙�
                 wrkDetl.setWrkNo(workNo);
                 wrkDetl.setIoTime(now);
                 Double anfme = ioType==101?detlDto.getLocDetl().getAnfme():detlDto.getCount();
-                wrkDetl.setAnfme(anfme); // 鏁伴噺
+                wrkDetl.setAnfme(anfme); // 浣滀笟鏁伴噺
+                wrkDetl.setStock(detlDto.getLocDetl().getAnfme());
                 wrkDetl.setAppeTime(now);
                 wrkDetl.setAppeUser(userId);
                 wrkDetl.setModiTime(now);
@@ -442,6 +464,7 @@
     @Transactional
     public void stockOut(BasDevp staNo, TaskDto taskDto, Long userId) {
         Date now = new Date();
+        taskDto.sortLocDtos();
         List<LocDto> locDtos = taskDto.getLocDtos();
         for (LocDto locDto : locDtos) {
             if (!taskDto.getLocNo().equals(locDto.getLocNo()) && !taskDto.getStaNo().equals(locDto.getStaNo())) {
@@ -504,70 +527,107 @@
         }
         // 鐢熸垚宸ヤ綔妗f槑缁�
         for (LocDto locDto : taskDto.getLocDtos()) {
-            if (locDto.getAnfme()==null || locDto.getAnfme() <= 0.0D) { continue; }
+            if (locDto.getAnfme()==null) { continue; }
             LocDetl locDetl = locDetlService.selectItem(locDto.getLocNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getContainerCode());
             if (locDetl == null || locDetl.getAnfme() < locDto.getAnfme()) {
                 throw new CoolException(locDto.getLocNo() + "搴撲綅涓�" + locDto.getMatnr() + "鍟嗗搧搴撳瓨涓嶈冻锛�");
             }
             Mat mat = matService.selectByMatnr(locDto.getMatnr());
             assert mat != null;
-            WrkDetl wrkDetl = new WrkDetl();
-            wrkDetl.sync(mat);
-            wrkDetl.setZpallet(wrkMast.getBarcode());
-            wrkDetl.setIoTime(now);
-            wrkDetl.setWrkNo(workNo);
-            wrkDetl.setBatch(locDto.getBatch());
-            wrkDetl.setOrderNo(locDto.getOrderNo());
-            wrkDetl.setAnfme(locDto.getAnfme()); // 鏁伴噺
-            wrkDetl.setAppeTime(now);
-            wrkDetl.setAppeUser(userId);
-            wrkDetl.setModiTime(now);
-            wrkDetl.setModiUser(userId);
-            wrkDetl.setSuppCode(locDto.getContainerCode());
-            wrkDetl.setThreeCode(locDto.getCsocode());
-            wrkDetl.setDeadTime(locDto.getIsoseq());
-            if (!wrkDetlService.insert(wrkDetl)) {
-                throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+
+            if (locDto.getStock() < locDto.getAnfme()) {
+                //鎬诲簱瀛樺皬浜庝綔涓氭暟閲忥紝寮傚父鏁版嵁
+                throw new CoolException("搴撳瓨涓嶈冻锛岃绋嶅悗閲嶈瘯");
             }
-            //琛ヨ揣鍗曞垯鐢熸垚AGV鍏ュ簱閫氱煡妗�
-            generateAgvWaitpakin(wrkDetl);
 
-            // 淇敼璁㈠崟鏄庣粏
             if (!BaseController.isJSON(locDto.getOrderNo())) {
-                OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(),locDto.getCsocode(),locDto.getIsoseq());
-                if (orderDetl == null) {
-                    orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null,locDto.getCsocode(),locDto.getIsoseq());
+                WrkDetl wrkDetl = new WrkDetl();
+                wrkDetl.sync(mat);
+                wrkDetl.setZpallet(wrkMast.getBarcode());
+                wrkDetl.setIoTime(now);
+                wrkDetl.setWrkNo(workNo);
+                wrkDetl.setBatch(locDto.getBatch());
+                wrkDetl.setOrderNo(locDto.getOrderNo());
+                wrkDetl.setAnfme(locDto.getAnfme()); // 浣滀笟鏁伴噺
+                wrkDetl.setStock(locDto.getStock());//鎬诲簱瀛�
+                wrkDetl.setAppeTime(now);
+                wrkDetl.setAppeUser(userId);
+                wrkDetl.setModiTime(now);
+                wrkDetl.setModiUser(userId);
+                wrkDetl.setSuppCode(locDto.getContainerCode());
+                wrkDetl.setThreeCode(locDto.getCsocode());
+                wrkDetl.setDeadTime(locDto.getIsoseq());
+                if (!wrkDetlService.insert(wrkDetl)) {
+                    throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
                 }
-                if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme(),locDto.getCsocode(),locDto.getIsoseq())) {
-                    throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
-                }
-                orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
-            } else {
-                // 璁㈠崟鍚堝苟鍑哄簱
+                //琛ヨ揣鍗曞垯鐢熸垚AGV鍏ュ簱閫氱煡妗�
+                generateAgvWaitpakin(wrkDetl);
+            }else {
                 List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class);
+                orderDtoList.forEach(orderDto -> {
+                    WrkDetl wrkDetl = new WrkDetl();
+                    wrkDetl.sync(mat);
+                    wrkDetl.setZpallet(wrkMast.getBarcode());
+                    wrkDetl.setIoTime(now);
+                    wrkDetl.setWrkNo(workNo);
+                    wrkDetl.setBatch(locDto.getBatch());
+                    wrkDetl.setOrderNo(orderDto.getOrderNo());
+                    wrkDetl.setAnfme(orderDto.getAnfme()); // 鏁伴噺
+                    wrkDetl.setStock(locDto.getStock());//鎬诲簱瀛�
+                    wrkDetl.setAppeTime(now);
+                    wrkDetl.setAppeUser(userId);
+                    wrkDetl.setModiTime(now);
+                    wrkDetl.setModiUser(userId);
+                    wrkDetl.setSuppCode(locDto.getContainerCode());
+                    wrkDetl.setThreeCode(locDto.getCsocode());
+                    wrkDetl.setDeadTime(locDto.getIsoseq());
+                    if (!wrkDetlService.insert(wrkDetl)) {
+                        throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+                    }
+                    //琛ヨ揣鍗曞垯鐢熸垚AGV鍏ュ簱閫氱煡妗�
+                    generateAgvWaitpakin(wrkDetl);
+                });
+            }
 
-                //瀹為檯鍑哄簱鏁伴噺
-                Double locAnfme = locDto.getAnfme();
-                //璁㈠崟瀹為檯鍑哄簱鏁伴噺
-                Double orderAnfme;
-
-                for (OrderDto orderDto : orderDtoList) {
-                    OrderDetl orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(),locDto.getCsocode(),locDto.getIsoseq());
+            if (locDto.getAnfme() > 0) {
+                // 淇敼璁㈠崟鏄庣粏
+                if (!BaseController.isJSON(locDto.getOrderNo())) {
+                    OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(),locDto.getCsocode(),locDto.getIsoseq());
                     if (orderDetl == null) {
-                        orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), null,locDto.getCsocode(),locDto.getIsoseq());
+                        orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null,locDto.getCsocode(),locDto.getIsoseq());
                     }
-
-                    if(locAnfme > orderDetl.getAnfme()){
-                        orderAnfme = orderDetl.getAnfme();
-                        locAnfme -= orderAnfme;
-                    }else {
-                        orderAnfme = locAnfme;
-                    }
-
-                    if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderAnfme,orderDetl.getThreeCode(),orderDetl.getDeadTime())) {
+                    if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme(),locDto.getCsocode(),locDto.getIsoseq())) {
                         throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
                     }
                     orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
+                } else {
+                    // 璁㈠崟鍚堝苟鍑哄簱
+                    List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class);
+
+                    //瀹為檯鍑哄簱鏁伴噺
+                    Double locAnfme = locDto.getAnfme();
+                    //璁㈠崟瀹為檯鍑哄簱鏁伴噺
+                    Double orderAnfme;
+
+                    for (OrderDto orderDto : orderDtoList) {
+                        OrderDetl orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(),locDto.getCsocode(),locDto.getIsoseq());
+                        if (orderDetl == null) {
+                            orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), null,locDto.getCsocode(),locDto.getIsoseq());
+                        }
+
+                        orderAnfme = orderDetl.getAnfme() - orderDetl.getQty();
+
+                        if(locAnfme > orderAnfme){
+                            locAnfme -= orderAnfme;
+                        }else {
+                            orderAnfme = locAnfme;
+                        }
+
+                        if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderAnfme,orderDetl.getThreeCode(),orderDetl.getDeadTime())) {
+                            throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
+                        }
+                        orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
+                    }
                 }
             }
         }
@@ -1215,6 +1275,10 @@
     }
 
     private void generateAgvWaitpakin(WrkDetl wrkDetl){
+        if (wrkDetl.getAnfme() <= 0D) {
+            return;
+        }
+
         String orderNo = wrkDetl.getOrderNo();
         if(orderNo.contains("{")){
             JSONArray orderArray = JSON.parseArray(orderNo);

--
Gitblit v1.9.1