From b6b46e1c4d390c80cf9bd7d4daa23202f2d11a22 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 26 五月 2023 13:47:57 +0800
Subject: [PATCH] 站点管理编辑高低库位

---
 src/main/java/com/zy/common/service/CommonService.java |   97 +++++++++++++++++++++++++++++++-----------------
 1 files changed, 62 insertions(+), 35 deletions(-)

diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index a080000..1ac22c2 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -188,6 +188,10 @@
                 }
             } else if (matType == 2) {//楂橀绫诲瀷鍏ユ渶澶栦晶搴撲綅
                 locMast = getLocNoStep3(locTypeDto, crnNos);
+                if (locMast == null) {
+                    //楂橀娌℃湁鎵惧埌搴撲綅锛屾壘浣庨娣锋斁鍖哄煙搴撲綅
+                    locMast = getLocNoStep4(locTypeDto);
+                }
                 if (locMast != null) {
                     //鎵惧埌搴撲綅锛岃繑鍥瀌to
                     return getLocNoFinalStep(staDescId, sourceStaNo, locMast);//杩斿洖dto
@@ -237,12 +241,19 @@
     //鍗曞搧绫诲瀷鍏ュ簱
     private LocMast getLocNoStep2(LocTypeDto locTypeDto, List<String> matNos, List<Integer> rows) {
         LocMast locMast = null;
-        //鎵惧唴渚х┖搴撲綅(闈炴渶澶栦晶搴撲綅)
-        List<String> locNos = locDetlService.getSameDetl(matNos.get(0));
-        for (String locNo : locNos) {
-            List<String> groupLoc = Utils.getGroupLoc(locNo);
-            LocMast locMast0 = locMastService.findEmptyLocMastByLocNos(locTypeDto.getLocType1(), groupLoc);
-            if (null != locMast0) {
+
+        //鍏堟壘宸ヤ綔妗�
+        List<WrkMast> wrkMasts = wrkMastService.selectSameWrkMast(matNos.get(0));
+        for (WrkMast wrkMast : wrkMasts) {
+            List<String> groupLoc = Utils.getGroupLoc(wrkMast.getLocNo());
+            List<LocMast> locMasts = locMastService.findEmptyLocMastByLocNos(locTypeDto.getLocType1(), groupLoc);
+            for (LocMast locMast0 : locMasts) {
+                //妫�娴嬪綋鍓嶅簱浣嶅唴渚у叾浠栧簱浣嶆槸鍚︿负D銆丗銆乆銆丼
+                if (Utils.checkInsideLocIsDFXS(locMast0.getLocNo())) {
+                    //鍐呬晶鍏朵粬搴撲綅涓嶆槸D銆丗銆乆銆丼銆備笉鑳介�夊彇璇ュ簱浣�
+                    continue;
+                }
+
                 // 娴呭簱浣嶇鍚堝昂瀵告娴�
                 if (VersionUtils.locMoveCheckLocType(locMast0, locTypeDto)) {
                     // 娴呭簱浣嶅搴斿爢鍨涙満蹇呴』鍙敤涓旀棤寮傚父
@@ -251,6 +262,34 @@
                         if (locMastService.checkEmptyCount(locMast0, 10)) {
                             locMast = locMast0;
                             break;
+                        }
+                    }
+                }
+            }
+        }
+
+        //鎵惧唴渚х┖搴撲綅(闈炴渶澶栦晶搴撲綅)
+        if (locMast == null) {
+            List<String> locNos = locDetlService.getSameDetl(matNos.get(0));
+            for (String locNo : locNos) {
+                List<String> groupLoc = Utils.getGroupLoc(locNo);
+                List<LocMast> locMasts = locMastService.findEmptyLocMastByLocNos(locTypeDto.getLocType1(), groupLoc);
+                for (LocMast locMast0 : locMasts) {
+                    //妫�娴嬪綋鍓嶅簱浣嶅唴渚у叾浠栧簱浣嶆槸鍚︿负D銆丗銆乆
+                    if (Utils.checkInsideLocIsDFX(locMast0.getLocNo())) {
+                        //鍐呬晶鍏朵粬搴撲綅涓嶆槸D銆丗銆乆銆備笉鑳介�夊彇璇ュ簱浣�
+                        continue;
+                    }
+
+                    // 娴呭簱浣嶇鍚堝昂瀵告娴�
+                    if (VersionUtils.locMoveCheckLocType(locMast0, locTypeDto)) {
+                        // 娴呭簱浣嶅搴斿爢鍨涙満蹇呴』鍙敤涓旀棤寮傚父
+                        if (true || basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) {
+                            // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣�
+                            if (locMastService.checkEmptyCount(locMast0, 10)) {
+                                locMast = locMast0;
+                                break;
+                            }
                         }
                     }
                 }
@@ -271,18 +310,9 @@
         //鎵炬渶澶栦晶绌哄簱浣�
         List<LocMast> locMasts = locMastService.findOutMast(locTypeDto.getLocType1(), crnNos);
         for (LocMast locMast0 : locMasts) {
-            //妫�娴嬪綋鍓嶅簱浣嶅唴渚у叾浠栧簱浣嶆槸鍚︿负R鎴朣(鍑哄叆搴撻绾︾姸鎬�)
-            boolean flag = false;
-            List<String> insideLoc = Utils.getGroupInsideLoc(locMast0.getLocNo());
-            List<LocMast> insideLocMast = locMastService.selectByLocNos(insideLoc);
-            for (LocMast mast : insideLocMast) {
-                if (mast.getLocSts().equals("R") || mast.getLocSts().equals("S")) {
-                    //R鎴朣(鍑哄叆搴撻绾︾姸鎬侊紝涓嶈兘閫夊畾杩欎釜澶栦晶搴撲綅)
-                    flag = true;
-                    break;
-                }
-            }
-            if (flag) {
+            //妫�娴嬪綋鍓嶅簱浣嶅唴渚у叾浠栧簱浣嶆槸鍚︿负D銆丗銆乆
+            if (Utils.checkInsideLocIsDFX(locMast0.getLocNo())) {
+                //鍐呬晶鍏朵粬搴撲綅涓嶆槸D銆丗銆乆銆備笉鑳介�夊彇璇ュ簱浣�
                 continue;
             }
 
@@ -306,31 +336,28 @@
         LocMast locMast = null;
         List<LocMast> locMasts = locMastService.findEmptyLowFrequencyLocMast(locTypeDto.getLocType1());
         for (LocMast locMast0 : locMasts) {
-            //妫�娴嬪綋鍓嶅簱浣嶅唴渚у叾浠栧簱浣嶆槸鍚︿负R鎴朣(鍑哄叆搴撻绾︾姸鎬�)
-            boolean flag = false;
-            List<String> insideLoc = Utils.getGroupInsideLoc(locMast0.getLocNo());
-            List<LocMast> insideLocMast = locMastService.selectByLocNos(insideLoc);
-            for (LocMast mast : insideLocMast) {
-                if (mast.getLocSts().equals("R") || mast.getLocSts().equals("S")) {
-                    //R鎴朣(鍑哄叆搴撻绾︾姸鎬侊紝涓嶈兘閫夊畾杩欎釜澶栦晶搴撲綅)
-                    flag = true;
-                    break;
-                }
+            //妫�娴嬪綋鍓嶅簱浣嶅唴渚у叾浠栧簱浣嶆槸鍚︿负D銆丗銆乆
+            if (Utils.checkInsideLocIsDFX(locMast0.getLocNo())) {
+                //鍐呬晶鍏朵粬搴撲綅涓嶆槸D銆丗銆乆銆備笉鑳介�夊彇璇ュ簱浣�
+                continue;
             }
+
             //妫�娴嬪綋鍓嶅簱浣嶅渚у簱浣嶆槸鍚︿负O(绌哄簱浣�)
+            boolean flag = false;
             List<String> outerLoc = Utils.getGroupOuterLoc(locMast0.getLocNo());
-            List<LocMast> outerLocMast = locMastService.selectByLocNos(outerLoc);
-            for (LocMast mast : outerLocMast) {
-                if (!mast.getLocSts().equals("O")) {
-                    //涓嶆槸绌哄簱浣嶏紝鎵句笅涓�涓�
-                    flag = true;
-                    break;
+            if (outerLoc.size() > 0) {
+                List<LocMast> outerLocMast = locMastService.selectByLocNos(outerLoc);
+                for (LocMast mast : outerLocMast) {
+                    if (!mast.getLocSts().equals("O")) {
+                        //涓嶆槸绌哄簱浣嶏紝鎵句笅涓�涓�
+                        flag = true;
+                        break;
+                    }
                 }
             }
             if (flag) {
                 continue;
             }
-
 
             // 娴呭簱浣嶇鍚堝昂瀵告娴�
             if (VersionUtils.locMoveCheckLocType(locMast0, locTypeDto)) {

--
Gitblit v1.9.1