From baf4037cd0078c6ba1e30dfb949e0a6287f1b022 Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期五, 08 十二月 2023 15:11:55 +0800
Subject: [PATCH] 增加自动补货开关

---
 src/main/java/com/zy/common/service/CommonService.java |   89 +++++++++++++++++++++++++++++++++++---------
 1 files changed, 70 insertions(+), 19 deletions(-)

diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index b7887ae..2718933 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -202,15 +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) {
-                    LocMast locMast1 = locMastService.findInnerLoc(locMast0.getLocNo());//妫�娴嬪悓搴撲綅缁勬繁搴撲綅鏄惁鏈夌┖闂插簱浣�
-                    if (locMast1 != null) {
-                        //棰勭暀绌哄簱浣�
-                        if (locMastService.checkEmptyCount(locMast1, 10)) {
-                            return locMast1;
-                        }
-                    }
-                }
+                locMast = locFilter(locMasts, matNos,locTypeDto);
+
             }
 
             if (locRules.get(0).getKeepGo() == 0) {
@@ -250,17 +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) {
-                LocMast locMast1 = locMastService.findInnerLoc(locMast0.getLocNo());//妫�娴嬪悓搴撲綅缁勬繁搴撲綅鏄惁鏈夌┖闂插簱浣�
-                if (locMast1 != null) {
-                    //棰勭暀绌哄簱浣�
-                    if (locMastService.checkEmptyCount(locMast1, 10)) {
-                        return locMast1;
-                    }
-                }
-            }
+            locMast = locFilter(locMasts, matNos,locTypeDto);
         }
 
 //            if (locRules.get(0).getKeepGo() == 0) {
@@ -421,6 +405,73 @@
         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())){
+                                    //濡傛灉娣卞簱浣嶄腑鍚湁0鐘舵�佺殑搴撲綅锛屽垯鐩存帴杩斿洖璇ュ簱浣�
+                                    return locMast2;
+                                }else if("F".equals(locMast2.getLocSts())){
+                                    //濡傛灉瀵逛簬locaMast0鏈�杩戠殑涓�涓簱浣嶄篃涓篎鐘舵�侊紝鍒欒繑鍥瀕ocaMastO
+                                    if(i==0){
+                                        return locMast0;
+                                    }else {
+                                        //濡傛灉璇ョ粍娣辨祬搴撲綅涓惈鏈夋棦涓嶄负F涔熶笉涓篛鐨勫簱浣嶏紝鍒欒烦鍑哄綋鍓嶆繁娴呭簱浣嶆煡鎵�
+                                        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