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 | 138 +++++++++++++++++++++++++++++++--------------- 1 files changed, 93 insertions(+), 45 deletions(-) diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java index 097f83e..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 @@ -189,14 +190,15 @@ } else if (matType == 2) {//楂橀绫诲瀷鍏ユ渶澶栦晶搴撲綅 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 @@ -238,18 +240,26 @@ } //鍗曞搧绫诲瀷鍏ュ簱 - 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<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()); + //闅忔満鍙敤鍫嗗灈鏈哄彿 + 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())) { + //鍐呬晶鍏朵粬搴撲綅涓嶆槸D銆丗銆乆銆丼銆備笉鑳介�夊彇璇ュ簱浣� + continue; + } + // 娴呭簱浣嶇鍚堝昂瀵告娴� if (VersionUtils.locMoveCheckLocType(locMast0, locTypeDto)) { // 娴呭簱浣嶅搴斿爢鍨涙満蹇呴』鍙敤涓旀棤寮傚父 - if (true || basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) { + if (basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) { // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣� if (locMastService.checkEmptyCount(locMast0, 10)) { locMast = locMast0; @@ -260,9 +270,58 @@ } } + //鎵惧唴渚х┖搴撲綅(闈炴渶澶栦晶搴撲綅) + 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, null); + 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; + } + } + } + } + } + } + //鏈壘鍒板贩閬擄紝鎵句竴鏉℃柊鐨勭┖宸烽亾 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; @@ -271,32 +330,25 @@ //楂橀绫诲瀷鍏ユ渶澶栦晶搴撲綅 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銆丗銆乆 - boolean flag = false; - List<String> insideLoc = Utils.getGroupInsideLoc(locMast0.getLocNo()); - if (insideLoc.size() > 0) { - List<LocMast> insideLocMast = locMastService.selectByLocNos(insideLoc); - for (LocMast mast : insideLocMast) { - if (!mast.getLocSts().equals("D") - && !mast.getLocSts().equals("F") - && !mast.getLocSts().equals("X")) { - //D銆丗銆乆(涓嶈兘閫夊畾杩欎釜澶栦晶搴撲綅) - flag = true; - break; - } - } - } - if (flag) { + if (Utils.checkInsideLocIsDFX(locMast0.getLocNo())) { + //鍐呬晶鍏朵粬搴撲綅涓嶆槸D銆丗銆乆銆備笉鑳介�夊彇璇ュ簱浣� continue; } // 娴呭簱浣嶇鍚堝昂瀵告娴� if (VersionUtils.locMoveCheckLocType(locMast0, locTypeDto)) { // 娴呭簱浣嶅搴斿爢鍨涙満蹇呴』鍙敤涓旀棤寮傚父 - if (true||basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) { + if (basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) { // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣� if (locMastService.checkEmptyCount(locMast0, 10)) { locMast = locMast0; @@ -309,26 +361,22 @@ } //浣庨绫诲瀷锛岀洿鎺ユ壘娣锋斁鍖哄煙 - 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銆丗銆乆 - boolean flag = false; - List<String> insideLoc = Utils.getGroupInsideLoc(locMast0.getLocNo()); - if (insideLoc.size() > 0) { - List<LocMast> insideLocMast = locMastService.selectByLocNos(insideLoc); - for (LocMast mast : insideLocMast) { - if (!mast.getLocSts().equals("D") - && !mast.getLocSts().equals("F") - && !mast.getLocSts().equals("X")) { - //D銆丗銆乆(涓嶈兘閫夊畾杩欎釜澶栦晶搴撲綅) - flag = true; - break; - } - } + if (Utils.checkInsideLocIsDFX(locMast0.getLocNo())) { + //鍐呬晶鍏朵粬搴撲綅涓嶆槸D銆丗銆乆銆備笉鑳介�夊彇璇ュ簱浣� + continue; } + //妫�娴嬪綋鍓嶅簱浣嶅渚у簱浣嶆槸鍚︿负O(绌哄簱浣�) + boolean flag = false; List<String> outerLoc = Utils.getGroupOuterLoc(locMast0.getLocNo()); if (outerLoc.size() > 0) { List<LocMast> outerLocMast = locMastService.selectByLocNos(outerLoc); @@ -347,7 +395,7 @@ // 娴呭簱浣嶇鍚堝昂瀵告娴� if (VersionUtils.locMoveCheckLocType(locMast0, locTypeDto)) { // 娴呭簱浣嶅搴斿爢鍨涙満蹇呴』鍙敤涓旀棤寮傚父 - if (true||basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) { + if (basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) { // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣� if (locMastService.checkEmptyCount(locMast0, 10)) { locMast = locMast0; -- Gitblit v1.9.1