From 005827136eeb432ca8b68925ffaf86b6b95c4a84 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期三, 06 十二月 2023 20:18:37 +0800
Subject: [PATCH] #盘点修改

---
 src/main/java/com/zy/common/service/CommonService.java |   80 ++++++++++++++++++++++++++++++---------
 1 files changed, 61 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..1388298 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,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