From 20a1449f65a9d577c2c9c0af62f3c4af3dd8d172 Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期一, 04 十二月 2023 15:02:10 +0800
Subject: [PATCH] 库位规则、库位编码规则bug修改

---
 src/main/java/com/zy/common/service/CommonService.java |   86 ++++++++++++++++++++++++++++++------------
 1 files changed, 61 insertions(+), 25 deletions(-)

diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index e322c8c..1388298 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -202,18 +202,8 @@
                 }
 
                 List<LocMast> locMasts = locMastService.queryFreeLocMast2(locTypeDto.getLocType1(), locRule.getRowBeg(), locRule.getRowEnd(), locRule.getBayBeg(), locRule.getBayEnd(), locRule.getLevBeg(), locRule.getLevEnd());
-                for (LocMast locMast0 : locMasts) {
-                    List<String> locNos = locDetlService.getSameDetl(locMast0.getLocNo());
-                    for (String locNo : locNos) {
-                        LocMast locMast1 = locMastService.findInnerLoc(locNo);
-                        if (null != locMast1) {
-                            //棰勭暀绌哄簱浣�
-                            if (locMastService.checkEmptyCount(locMast1, 10)) {
-                                return locMast1;
-                            }
-                        }
-                    }
-                }
+                locMast = locFilter(locMasts, matNos,locTypeDto);
+
             }
 
             if (locRules.get(0).getKeepGo() == 0) {
@@ -253,20 +243,8 @@
             if (locRule == null) {
                 continue;
             }
-
             List<LocMast> locMasts = locMastService.queryFreeLocMast2(locTypeDto.getLocType1(), locRule.getRowBeg(), locRule.getRowEnd(), locRule.getBayBeg(), locRule.getBayEnd(), locRule.getLevBeg(), locRule.getLevEnd());
-            for (LocMast locMast0 : locMasts) {
-                List<String> locNos = locDetlService.getSameDetl(locMast0.getLocNo());
-                for (String locNo : locNos) {
-                    LocMast locMast1 = locMastService.findInnerLoc(locNo);
-                    if (null != locMast1) {
-                        //棰勭暀绌哄簱浣�
-                        if (locMastService.checkEmptyCount(locMast1, 10)) {
-                            return locMast1;
-                        }
-                    }
-                }
-            }
+            locMast = locFilter(locMasts, matNos,locTypeDto);
         }
 
 //            if (locRules.get(0).getKeepGo() == 0) {
@@ -427,6 +405,64 @@
         return locMast;
     }
 
+    /*
+    搴撳瓨瑙勫垯鎼滅储鍒扮殑搴撲綅纭
+     */
+    private LocMast locFilter(List<LocMast> locMasts,List<String> matNos,LocTypeDto locTypeDto){
+        for (LocMast locMast0 : locMasts) {
+            if(!VersionUtils.checkLocType(locMast0,locTypeDto)){
+                continue;
+            }
+            if (matNos.size() == 1) {
+                //鍗曞搧鐗╂枡
+                if(Cools.isEmpty(Utils.getGroupDeepLoc(locMast0.getLocNo()))){
+                    return locMast0;
+                }else{
+                    List<String> groupInnerLoc = Utils.getGroupInnerLoc(locMast0.getLocNo());
+                    if (Cools.isEmpty(groupInnerLoc)) {
+                        return locMast0;
+                    }else {
+                        //鑾峰彇鏈�娣辩殑搴撲綅
+                        String loc = groupInnerLoc.get(groupInnerLoc.size() - 1);
+                        LocMast locMast1 = locMastService.selectByLoc(loc);
+                        if("O".equals(locMast1.getLocSts())){
+                            return locMast1;
+                        }else {
+                            if(!"F".equals(locMast1.getLocSts())){
+                                continue;
+                            }
+                            List<LocDetl> locDetls = locDetlService.selectByLocNo(loc);
+                            if(!Cools.eq(locDetls.get(0).getMatnr(),matNos.get(0))){
+                                continue;
+                            }
+                            for (int i=groupInnerLoc.size()-1; i>=0 ;i--){
+                                LocMast locMast2 = locMastService.selectByLoc(groupInnerLoc.get(i));
+                                if("O".equals(locMast2.getLocSts())){
+                                    return locMast2;
+                                }else if("F".equals(locMast2.getLocSts())){
+                                    if(i==0){
+                                        return locMast1;
+                                    }else {
+                                        continue;
+                                    }
+                                }else {
+                                    break;
+                                }
+                            }
+                        }
+
+                    }
+                }
+            }else {
+                if(Cools.isEmpty(Utils.getGroupDeepLoc(locMast0.getLocNo()))){
+                    return locMast0;
+                }
+            }
+
+        }
+        return null;
+    }
+
     //杩斿洖dto
     private StartupDto getLocNoStep6(Integer staDescId, Integer sourceStaNo, LocMast locMast) {
         StartupDto startupDto = new StartupDto();

--
Gitblit v1.9.1