From 0f478c31b5327ffe4bfdebd72fdf23a6df5d37e6 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 02 六月 2023 11:55:11 +0800
Subject: [PATCH] 随机获取可用且有空库位的堆垛机号,找新巷道时增加判断

---
 src/main/java/com/zy/common/service/CommonService.java |   55 ++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 44 insertions(+), 11 deletions(-)

diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index 8df8722..32bdf6d 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -17,6 +17,7 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Random;
 
 /**
  * 璐ф灦鏍稿績鍔熻兘
@@ -181,7 +182,7 @@
 
         if (matType != null) {
             if (matType == 1) {//鍗曞搧绫诲瀷鍏ュ簱
-                locMast = getLocNoStep2(locTypeDto, matNos, rows);
+                locMast = getLocNoStep2(locTypeDto, matNos, rows, crnNos);
                 if (locMast != null) {
                     //鎵惧埌搴撲綅锛岃繑鍥瀌to
                     return getLocNoFinalStep(staDescId, sourceStaNo, locMast);//杩斿洖dto
@@ -190,14 +191,14 @@
                 locMast = getLocNoStep3(locTypeDto, crnNos);
                 if (locMast == null) {
                     //楂橀娌℃湁鎵惧埌搴撲綅锛屾壘浣庨娣锋斁鍖哄煙搴撲綅
-                    locMast = getLocNoStep4(locTypeDto);
+                    locMast = getLocNoStep4(locTypeDto, crnNos);
                 }
                 if (locMast != null) {
                     //鎵惧埌搴撲綅锛岃繑鍥瀌to
                     return getLocNoFinalStep(staDescId, sourceStaNo, locMast);//杩斿洖dto
                 }
             } else if (matType == 3) {//浣庨娣锋斁绫诲瀷
-                locMast = getLocNoStep4(locTypeDto);
+                locMast = getLocNoStep4(locTypeDto, crnNos);
                 if (locMast != null) {
                     //鎵惧埌搴撲綅锛岃繑鍥瀌to
                     return getLocNoFinalStep(staDescId, sourceStaNo, locMast);//杩斿洖dto
@@ -239,14 +240,15 @@
     }
 
     //鍗曞搧绫诲瀷鍏ュ簱
-    private LocMast getLocNoStep2(LocTypeDto locTypeDto, List<String> matNos, List<Integer> rows) {
+    private LocMast getLocNoStep2(LocTypeDto locTypeDto, List<String> matNos, List<Integer> rows, List<Integer> crnNos) {
         LocMast locMast = null;
-
         //鍏堟壘宸ヤ綔妗�
         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);
+            //闅忔満鍙敤鍫嗗灈鏈哄彿
+            Integer randomCrnNo = Utils.getRandomCrnNo(crnNos, locTypeDto.getLocType1());
+            List<LocMast> locMasts = locMastService.findEmptyLocMastByLocNos(locTypeDto.getLocType1(), groupLoc, randomCrnNo);
             for (LocMast locMast0 : locMasts) {
                 //妫�娴嬪綋鍓嶅簱浣嶅唴渚у叾浠栧簱浣嶆槸鍚︿负D銆丗銆乆銆丼
                 if (Utils.checkInsideLocIsDFXS(locMast0.getLocNo())) {
@@ -273,7 +275,7 @@
             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);
+                List<LocMast> locMasts = locMastService.findEmptyLocMastByLocNos(locTypeDto.getLocType1(), groupLoc, null);
                 for (LocMast locMast0 : locMasts) {
                     //妫�娴嬪綋鍓嶅簱浣嶅唴渚у叾浠栧簱浣嶆槸鍚︿负D銆丗銆乆
                     if (Utils.checkInsideLocIsDFX(locMast0.getLocNo())) {
@@ -298,7 +300,28 @@
 
         //鏈壘鍒板贩閬擄紝鎵句竴鏉℃柊鐨勭┖宸烽亾
         if (locMast == null) {
-            locMast = locMastService.findInEmptyLocMast(locTypeDto.getLocType1(), rows);//鎵句竴鏉℃柊鐨勭┖宸烽亾
+            //闅忔満鍙敤鍫嗗灈鏈哄彿
+            Integer randomCrnNo = Utils.getRandomCrnNo(crnNos, locTypeDto.getLocType1());
+            List<LocMast> locMasts = locMastService.findInEmptyLocMast(locTypeDto.getLocType1(), rows, randomCrnNo);//鎵句竴鏉℃柊鐨勭┖宸烽亾
+            for (LocMast locMast0 : locMasts) {
+                //妫�娴嬪綋鍓嶅簱浣嶅唴渚у叾浠栧簱浣嶆槸鍚︿负D銆丗銆乆
+                if (Utils.checkInsideLocIsDFX(locMast0.getLocNo())) {
+                    //鍐呬晶鍏朵粬搴撲綅涓嶆槸D銆丗銆乆銆備笉鑳介�夊彇璇ュ簱浣�
+                    continue;
+                }
+
+                // 娴呭簱浣嶇鍚堝昂瀵告娴�
+                if (VersionUtils.locMoveCheckLocType(locMast0, locTypeDto)) {
+                    // 娴呭簱浣嶅搴斿爢鍨涙満蹇呴』鍙敤涓旀棤寮傚父
+                    if (basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) {
+                        // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣�
+                        if (locMastService.checkEmptyCount(locMast0, 10)) {
+                            locMast = locMast0;
+                            break;
+                        }
+                    }
+                }
+            }
         }
 
         return locMast;
@@ -307,8 +330,14 @@
     //楂橀绫诲瀷鍏ユ渶澶栦晶搴撲綅
     private LocMast getLocNoStep3(LocTypeDto locTypeDto, List<Integer> crnNos) {
         LocMast locMast = null;
+
+        //闅忔満鍙敤鍫嗗灈鏈哄彿
+        Integer randomCrnNo = Utils.getRandomCrnNo(crnNos, locTypeDto.getLocType1());
+        ArrayList<Integer> randomCrnNos = new ArrayList<>();
+        randomCrnNos.add(randomCrnNo);
+
         //鎵炬渶澶栦晶绌哄簱浣�
-        List<LocMast> locMasts = locMastService.findOutMast(locTypeDto.getLocType1(), crnNos);
+        List<LocMast> locMasts = locMastService.findOutMast(locTypeDto.getLocType1(), randomCrnNos);
         for (LocMast locMast0 : locMasts) {
             //妫�娴嬪綋鍓嶅簱浣嶅唴渚у叾浠栧簱浣嶆槸鍚︿负D銆丗銆乆
             if (Utils.checkInsideLocIsDFX(locMast0.getLocNo())) {
@@ -332,9 +361,13 @@
     }
 
     //浣庨绫诲瀷锛岀洿鎺ユ壘娣锋斁鍖哄煙
-    private LocMast getLocNoStep4(LocTypeDto locTypeDto) {
+    private LocMast getLocNoStep4(LocTypeDto locTypeDto, List<Integer> crnNos) {
         LocMast locMast = null;
-        List<LocMast> locMasts = locMastService.findEmptyLowFrequencyLocMast(locTypeDto.getLocType1());
+
+        //闅忔満鍙敤鍫嗗灈鏈哄彿
+        Integer randomCrnNo = Utils.getRandomCrnNo(crnNos, locTypeDto.getLocType1());
+
+        List<LocMast> locMasts = locMastService.findEmptyLowFrequencyLocMast(locTypeDto.getLocType1(), randomCrnNo);
         for (LocMast locMast0 : locMasts) {
             //妫�娴嬪綋鍓嶅簱浣嶅唴渚у叾浠栧簱浣嶆槸鍚︿负D銆丗銆乆
             if (Utils.checkInsideLocIsDFX(locMast0.getLocNo())) {

--
Gitblit v1.9.1