From e666ab89158593e0ab2e44d6e61a2a3a4f8210b2 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 02 六月 2023 14:47:22 +0800
Subject: [PATCH] 随机可用堆垛机号

---
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java |  108 ++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 72 insertions(+), 36 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 89db0a0..45a92f5 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -160,41 +160,48 @@
     @Transactional
     public void startupFullTakeStore(StockOutParam param, Long userId) {
         ArrayList<String> locNos = new ArrayList<>();
-        List<StockOutParam.LocDetl> locDetls = new ArrayList<>();
-        ArrayList<String> matnrs = new ArrayList<>();//鐩殑鍋氭暟鎹幓閲�
-        for (StockOutParam.LocDetl locDetl : param.getLocDetls()) {
-            if (!matnrs.contains(locDetl.getMatnr())) {
-                matnrs.add(locDetl.getMatnr());
-
-                //1.鏍规嵁鐗╂枡鍙峰厛鎼滅储楂橀鍖哄煙鏄惁鏈夊簱瀛�
-                List<StockOutParam.LocDetl> locNoStep1 = this.findLocNoStep1(locDetl);
-                if (locNoStep1 != null) {
-                    locDetls.addAll(locNoStep1);
-                    continue;
-                }
-
-                //楂橀娣锋斁鍖哄煙娌℃湁婊¤冻鐨勫簱浣嶏紝鍦ㄥ崟鍝佸尯鍩熻繘琛屾悳绱�
-                List<StockOutParam.LocDetl> locNoStep2 = this.findLocNoStep2(locDetl);
-                if (locNoStep2 != null) {
-                    locDetls.addAll(locNoStep2);
-                    continue;
-                }
-
-                //浣庨娣锋斁鍖哄煙杩涜鎼滅储
-                List<StockOutParam.LocDetl> locNoStep3 = this.findLocNoStep3(locDetl);
-                if (locNoStep3 != null) {
-                    locDetls.addAll(locNoStep3);
-                    continue;
-                }
-
-            }
-        }
-
-        for (StockOutParam.LocDetl locDetl : locDetls) {
-            if (!locNos.contains(locDetl.getLocNo())) {
+        for (StockOutParam.LocDetl locDetl:param.getLocDetls()){
+            if (!locNos.contains(locDetl.getLocNo())){
                 locNos.add(locDetl.getLocNo());
             }
         }
+        List<StockOutParam.LocDetl> locDetls = param.getLocDetls();
+//        ArrayList<String> locNos = new ArrayList<>();
+//        List<StockOutParam.LocDetl> locDetls = new ArrayList<>();
+//        ArrayList<String> matnrs = new ArrayList<>();//鐩殑鍋氭暟鎹幓閲�
+//        for (StockOutParam.LocDetl locDetl : param.getLocDetls()) {
+//            if (!matnrs.contains(locDetl.getMatnr())) {
+//                matnrs.add(locDetl.getMatnr());
+//
+//                //1.鏍规嵁鐗╂枡鍙峰厛鎼滅储楂橀鍖哄煙鏄惁鏈夊簱瀛�
+//                List<StockOutParam.LocDetl> locNoStep1 = this.findLocNoStep1(locDetl);
+//                if (locNoStep1 != null) {
+//                    locDetls.addAll(locNoStep1);
+//                    continue;
+//                }
+//
+//                //楂橀娣锋斁鍖哄煙娌℃湁婊¤冻鐨勫簱浣嶏紝鍦ㄥ崟鍝佸尯鍩熻繘琛屾悳绱�
+//                List<StockOutParam.LocDetl> locNoStep2 = this.findLocNoStep2(locDetl);
+//                if (locNoStep2 != null) {
+//                    locDetls.addAll(locNoStep2);
+//                    continue;
+//                }
+//
+//                //浣庨娣锋斁鍖哄煙杩涜鎼滅储
+//                List<StockOutParam.LocDetl> locNoStep3 = this.findLocNoStep3(locDetl);
+//                if (locNoStep3 != null) {
+//                    locDetls.addAll(locNoStep3);
+//                    continue;
+//                }
+//
+//            }
+//        }
+//
+//        for (StockOutParam.LocDetl locDetl : locDetls) {
+//            if (!locNos.contains(locDetl.getLocNo())) {
+//                locNos.add(locDetl.getLocNo());
+//            }
+//        }
 
 //        //妫�娴嬫彁浜ょ殑鍑哄簱搴撲綅鏄惁鍚堟硶(娴呭簱浣嶆湁闈炵┖搴撲綅)
 //        Utils.checkStockOutLocNo(locNos);
@@ -245,7 +252,14 @@
                     if (locDetls1.size() == 0) {//鍐呬晶搴撲綅娌℃湁鐩稿悓鐨勭墿鏂欙紝璺宠繃
                         continue;
                     }
-
+                    int locRow = Utils.getRow(locDetl0.getLocNo());
+                    switch (locRow) {
+                        case 3:
+                        case 11:
+                        case 18:
+                            Collections.reverse(locDetls1);
+                            break;
+                    }
                     for (LocDetl detl : locDetls1) {
                         double lastCount = locDetl.getCount() - useCount;//鍓╀綑鎵�闇�鏁伴噺
                         double realCount = 0;//瀹為檯鎻愪緵鏁伴噺
@@ -302,7 +316,7 @@
                 double realCount = 0;//瀹為檯鎻愪緵鏁伴噺
                 if (locDetl0.getAnfme() >= lastCount) {//瀹為檯鏁伴噺澶т簬鎵�闇�鏁伴噺锛屾寜鎵�闇�鏁伴噺鎻愪緵
                     realCount = lastCount;
-                }else {
+                } else {
                     //瀹為檯灏忎簬鎵�闇�鏁伴噺锛屾寜瀹為檯鏁伴噺鎻愪緵
                     realCount = locDetl0.getAnfme();
                 }
@@ -314,6 +328,9 @@
                     return locDetlList;
                 }
             }
+
+            //搴撳瓨鏁伴噺涓嶆弧瓒�
+            throw new CoolException("鍗曞搧鍖哄煙鍙湁" + useCount + "涓揣鐗�");
         }
 
         return null;
@@ -393,9 +410,14 @@
                 }
             }
 
-            List<String> outerLoc = Utils.getGroupOuterSingleLoc(locNo);
+            List<String> outerLocs = Utils.getGroupOuterSingleLoc(locNo);
             Double wrkPri = 15D;
-            for (LocMast locMast : locMastService.selectByLocNos(outerLoc)) {
+            for (String outerLoc : outerLocs) {
+                LocMast locMast = locMastService.selectById(outerLoc);
+                if (locMast == null) {
+                    continue;
+                }
+
                 if (!locMast.getLocSts().equals("F")) {
                     continue;
                 }
@@ -457,6 +479,7 @@
                         wrkDetl.setModiTime(now);
                         wrkDetl.setModiUser(userId);
                         wrkDetl.setSpecs(locDetl.getSpecs());
+                        wrkDetl.setMatType(locDetl.getMatType());
                         if (!wrkDetlService.insert(wrkDetl)) {
                             throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
                         }
@@ -489,6 +512,15 @@
             assert ioType != null;
             // 鑾峰彇搴撲綅
             LocMast locMast = locMastService.selectById(dto.getLocNo());
+
+            //-----------------2023.6.2鍑哄簱鍏煎浠g爜-----------------------
+            List<LocDetl> locDetls = locDetlService.selectByLocNo(locMast.getLocNo());
+            if (locMast.getLocType2() == 1 && locDetls.size() > 1) {
+                //鍗曞搧鍖哄煙鍑哄簱鐗╂枡澶т簬1绉嶏紝寮哄埗鍙樻垚101鍏ㄦ澘鍑哄簱
+                ioType = 101;
+            }
+            //-----------------2023.6.2鍑哄簱鍏煎浠g爜end-----------------------
+
             // 鑾峰彇璺緞
             StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), staNo.getDevNo(), locMast.getRow1());
             if(staDesc == null){
@@ -540,6 +572,7 @@
                 wrkDetl.setModiTime(now);
                 wrkDetl.setModiUser(userId);
                 wrkDetl.setSpecs(detlDto.getLocDetl().getSpecs());
+                wrkDetl.setMatType(detlDto.getLocDetl().getMatType());
                 if (!wrkDetlService.insert(wrkDetl)) {
                     throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
                 }
@@ -626,6 +659,7 @@
             wrkDetl.setAppeUser(userId);
             wrkDetl.setModiTime(now);
             wrkDetl.setModiUser(userId);
+            wrkDetl.setMatType(locDetl.getMatType());
             if (!wrkDetlService.insert(wrkDetl)) {
                 throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
             }
@@ -948,6 +982,7 @@
             wrkDetl.setAppeUser(userId);
             wrkDetl.setModiTime(now);
             wrkDetl.setModiUser(userId);
+            wrkDetl.setMatType(locDetl.getMatType());
             if (!wrkDetlService.insert(wrkDetl)) {
                 throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
             }
@@ -1437,6 +1472,7 @@
                     wrkDetl.setAppeUser(9527L);
                     wrkDetl.setModiTime(now);
                     wrkDetl.setModiUser(9527L);
+                    wrkDetl.setMatType(locDetl.getMatType());
                     if (!wrkDetlService.insert(wrkDetl)) {
                         throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
                     }

--
Gitblit v1.9.1