From 82bcd0328dddbaad65933e2fada22bc68e82b3d5 Mon Sep 17 00:00:00 2001 From: whycq <913841844@qq.com> Date: 星期六, 26 八月 2023 10:07:46 +0800 Subject: [PATCH] # 导入订单增加单据类型 --- src/main/java/com/zy/common/service/CommonService.java | 187 +++++++++++++++++++++++++++++++++++----------- 1 files changed, 143 insertions(+), 44 deletions(-) diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java index 1ac22c2..62637a9 100644 --- a/src/main/java/com/zy/common/service/CommonService.java +++ b/src/main/java/com/zy/common/service/CommonService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.mapper.Wrapper; import com.core.common.Cools; import com.core.exception.CoolException; +import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ; import com.zy.asrs.entity.*; import com.zy.asrs.service.*; import com.zy.asrs.utils.Utils; @@ -16,7 +17,9 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; +import java.util.Random; /** * 璐ф灦鏍稿績鍔熻兘 @@ -110,6 +113,7 @@ int start; int end; Integer matType = null;//鐗╂枡绫诲瀷 + Integer crnNo = 0; //鏍规嵁鍏ュ簱绔欙紝鍐冲畾鎼滅储鎸囧畾鍫嗗灈鏈� ArrayList<Integer> crnNos = new ArrayList<>(); //鏍规嵁鍏ュ簱绔欙紝鎵惧埌搴撲綅缁勬渶鍐呬晶鎺� @@ -129,6 +133,7 @@ rows.add(7); rows.add(8); rows.add(14); + crnNo = 1; break; case 203://203鍏ュ簱绔� whsType = 2; @@ -144,6 +149,7 @@ rows.add(14); rows.add(15); rows.add(21); + crnNo = 3; break; default: throw new CoolException("妫�绱㈠簱浣嶅け璐ワ紝璇疯仈绯荤鐞嗗憳"); @@ -155,13 +161,23 @@ // 鐩爣搴撲綅 LocMast locMast = null; + boolean sign = false; + + // 闈犺繎鎽嗘斁瑙勫垯 --- 绌烘墭 + locMast = getLocNoStep1(staDescId, locTypeDto, start, end); + if (locMast != null) { + //鎵惧埌搴撲綅锛岃繑鍥瀌to + sign=true; + } + + //3鍙峰彲浠ュ叆搴撳墠蹇呴』鎵撳紑鎺у埗 if (!Cools.isEmpty(matNos)) { for (String matNo : matNos) { Mat mat = matService.selectByMatnr(matNo); if (matType == null) { matType = mat.getMatType(); } - if (matType != mat.getMatType()) { + if (!matType.equals(mat.getMatType())) { throw new CoolException("娣锋斁鐗╂枡绫诲瀷涓嶄竴鑷�"); } } @@ -172,38 +188,68 @@ } } - // 闈犺繎鎽嗘斁瑙勫垯 --- 绌烘墭 - locMast = getLocNoStep1(staDescId, locTypeDto, start, end); - if (locMast != null) { - //鎵惧埌搴撲綅锛岃繑鍥瀌to - return getLocNoFinalStep(staDescId, sourceStaNo, locMast);//杩斿洖dto - } - - if (matType != null) { + if (!sign && 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 + sign=true; + } else { + //鍗曞搧娌℃湁鎵惧埌搴撲綅锛屾壘楂橀娣锋斁鍖哄煙搴撲綅 + locMast = getLocNoStep3(locTypeDto, crnNos); + if (locMast != null) { + //鎵惧埌搴撲綅锛岃繑鍥瀌to + sign=true; + } } } 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 + sign=true; } } else if (matType == 3) {//浣庨娣锋斁绫诲瀷 - locMast = getLocNoStep4(locTypeDto); + locMast = getLocNoStep4(locTypeDto, crnNos); if (locMast != null) { //鎵惧埌搴撲綅锛岃繑鍥瀌to - return getLocNoFinalStep(staDescId, sourceStaNo, locMast);//杩斿洖dto + sign=true; } } } + + + +// if (!sign){ +// //----------------2023.06.02鍏煎浠g爜锛屽悗鏈熷簱浣嶈鍒欑鍚堣姹傚悗鍙垹闄�------------------------ +// //濡傛灉浠ヤ笂閮芥壘涓嶅埌搴撲綅锛屽垯寮哄埗鎼滅储2鍫嗗灈鏈虹┖搴撲綅杩涜鍏ュ簱锛屼繚闅�3鍙峰爢鍨涙満搴撲綅閮芥槸绗﹀悎瑕佹眰鐨� +// EntityWrapper<LocMast> wrapper = new EntityWrapper<>(); +// wrapper.eq("loc_type1", locTypeDto.getLocType1()); +// wrapper.in("crn_no", "2"); +// wrapper.eq("loc_sts", "O"); +// List<LocMast> locMasts = locMastService.selectList(wrapper); +// for (LocMast mast : locMasts) { +// //妫�娴嬪綋鍓嶅簱浣嶅唴渚у叾浠栧簱浣嶆槸鍚︿负D銆丗銆乆 +// if (Utils.checkInsideLocIsDFX(mast.getLocNo())) { +// //鍐呬晶鍏朵粬搴撲綅涓嶆槸D銆丗銆乆銆備笉鑳介�夊彇璇ュ簱浣� +// continue; +// } +// if(sourceStaNo==103 && mast.getRow1()>14) continue; +// if(sourceStaNo==103 && mast.getRow1()<8) continue; +// if(sourceStaNo==203 && mast.getRow1()<15) continue; +// //鎵惧埌搴撲綅锛岃繑鍥瀌to +// locMast=mast; +// sign = true; +// } +// } + + if (sign){ + return getLocNoFinalStep(staDescId, sourceStaNo, locMast);//杩斿洖dto + } + //----------------2023.06.02鍏煎浠g爜end--------------------- throw new CoolException("妫�绱㈠簱浣嶅け璐ワ紝璇疯仈绯荤鐞嗗憳"); } @@ -239,33 +285,37 @@ } //鍗曞搧绫诲瀷鍏ュ簱 - 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); - for (LocMast locMast0 : locMasts) { - //妫�娴嬪綋鍓嶅簱浣嶅唴渚у叾浠栧簱浣嶆槸鍚︿负D銆丗銆乆銆丼 - if (Utils.checkInsideLocIsDFXS(locMast0.getLocNo())) { - //鍐呬晶鍏朵粬搴撲綅涓嶆槸D銆丗銆乆銆丼銆備笉鑳介�夊彇璇ュ簱浣� - continue; - } + //闅忔満鍙敤鍫嗗灈鏈哄彿 + Integer randomCrnNo = Utils.getRandomCrnNo(crnNos, locTypeDto.getLocType1()); + for (Integer crnNo : crnNos) { + List<LocMast> locMasts = locMastService.findEmptyLocMastByLocNos(locTypeDto.getLocType1(), groupLoc, crnNo); + 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 (locMastService.checkEmptyCount(locMast0, 10)) { - locMast = locMast0; - break; + // 娴呭簱浣嶇鍚堝昂瀵告娴� + if (VersionUtils.locMoveCheckLocType(locMast0, locTypeDto)) { + // 娴呭簱浣嶅搴斿爢鍨涙満蹇呴』鍙敤涓旀棤寮傚父 + if (basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) { + // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣� + if (locMastService.checkEmptyCount(locMast0, 10)) { + locMast = locMast0; + break; + } } } } } + } //鎵惧唴渚х┖搴撲綅(闈炴渶澶栦晶搴撲綅) @@ -273,7 +323,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())) { @@ -284,7 +334,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; @@ -298,7 +348,30 @@ //鏈壘鍒板贩閬擄紝鎵句竴鏉℃柊鐨勭┖宸烽亾 if (locMast == null) { - locMast = locMastService.findInEmptyLocMast(locTypeDto.getLocType1(), rows);//鎵句竴鏉℃柊鐨勭┖宸烽亾 + //闅忔満鍙敤鍫嗗灈鏈哄彿 + Integer randomCrnNo = Utils.getRandomCrnNo(crnNos, locTypeDto.getLocType1()); + for (Integer crnNo : crnNos) { + List<LocMast> locMasts = locMastService.findInEmptyLocMast(locTypeDto.getLocType1(), rows, crnNo);//鎵句竴鏉℃柊鐨勭┖宸烽亾 + 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 +380,17 @@ //楂橀绫诲瀷鍏ユ渶澶栦晶搴撲綅 private LocMast getLocNoStep3(LocTypeDto locTypeDto, List<Integer> crnNos) { LocMast locMast = null; + + //闅忔満鍙敤鍫嗗灈鏈哄彿 + Integer randomCrnNo = Utils.getRandomCrnNo(crnNos, locTypeDto.getLocType1()); + if (randomCrnNo == null) { + return locMast; + } + 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())) { @@ -319,7 +401,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; @@ -332,12 +414,16 @@ } //浣庨绫诲瀷锛岀洿鎺ユ壘娣锋斁鍖哄煙 - 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())) { + if (Utils.checkInsideLocIsDFX2(locMast0.getLocNo())) { //鍐呬晶鍏朵粬搴撲綅涓嶆槸D銆丗銆乆銆備笉鑳介�夊彇璇ュ簱浣� continue; } @@ -362,11 +448,18 @@ // 娴呭簱浣嶇鍚堝昂瀵告娴� if (VersionUtils.locMoveCheckLocType(locMast0, locTypeDto)) { // 娴呭簱浣嶅搴斿爢鍨涙満蹇呴』鍙敤涓旀棤寮傚父 - if (true||basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) { - // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣� - if (locMastService.checkEmptyCount(locMast0, 10)) { + if (basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) { + Integer outermostRow = Utils.getOutermostRow(locMast0.getLocNo(), true); + LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("row1", outermostRow).eq("bay1", locMast0.getBay1()).eq("lev1", locMast0.getLev1())); + if (!locMast1.getLocSts().equals("O") && !locMast0.getRow1().equals(outermostRow)){ + // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣� + if (locMastService.checkEmptyCount0(locMast0, 5)) { + locMast = locMast0; + } + }else { locMast = locMast0; } + } } } @@ -384,7 +477,13 @@ StaDesc staDesc = staDescService.selectOne(wrapper); if (Cools.isEmpty(staDesc)) { log.error("鍏ュ簱璺緞涓嶅瓨鍦�, staDescId={}, sourceStaNo={}, crnNo={}", staDescId, sourceStaNo, locMast.getCrnNo()); - throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�"); + if (sourceStaNo==103 && locMast.getCrnNo()==3){ + throw new CoolException("璇锋斁鍒�203鍏ュ簱鍙�"); + }else if (sourceStaNo==203 && locMast.getCrnNo()==1){ + throw new CoolException("璇锋斁鍒�103鍏ュ簱鍙�"); + }else { + throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�"); + } } // 妫�娴嬬洰鏍囩珯 -- Gitblit v1.9.1