From 3ad65283c54059e0c61110589fb19398ac3525fe Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期二, 08 七月 2025 08:32:32 +0800
Subject: [PATCH] 完善拣料转全板
---
src/main/java/com/zy/common/service/CommonService.java | 133 ++++++++++++++++++++++++++++++++------------
1 files changed, 97 insertions(+), 36 deletions(-)
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index 003f292..6b0a0a8 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -110,15 +110,18 @@
return workNo;
}
- /**
- * 妫�绱㈠簱浣嶅彿
- * @param whsType 绫诲瀷 1:鍙屾繁寮忚揣鏋�
- * @param staDescId 璺緞ID
- * @param sourceStaNo 婧愮珯
- * @param matNos 鐗╂枡鍙烽泦鍚�
- * @return locNo 妫�绱㈠埌鐨勫簱浣嶅彿
- */
public StartupDto getLocNo(Integer whsType, Integer staDescId, Integer sourceStaNo, List<String> matNos, LocTypeDto locTypeDto, Integer matTypeIn) {
+ return getLocNo(whsType,staDescId,sourceStaNo,matNos,locTypeDto,matTypeIn,new ArrayList<>());
+ }
+ /**
+ * 妫�绱㈠簱浣嶅彿
+ * @param whsType 绫诲瀷 1:鍙屾繁寮忚揣鏋�
+ * @param staDescId 璺緞ID
+ * @param sourceStaNo 婧愮珯
+ * @param matNos 鐗╂枡鍙烽泦鍚�
+ * @return locNo 妫�绱㈠埌鐨勫簱浣嶅彿
+ */
+ public StartupDto getLocNo(Integer whsType, Integer staDescId, Integer sourceStaNo, List<String> matNos, LocTypeDto locTypeDto, Integer matTypeIn,List<LocMast> locMastList) {
int start;
int end;
Integer matType = null;//鐗╂枡绫诲瀷
@@ -198,39 +201,75 @@
}
}
- if (matNos.size() > 1 && matType == 1) {
- //鐗╂枡涓哄崟鍝佺被鍨嬶紝涓旂墿鏂欑绫昏秴杩�1(瀹為檯涓洪珮棰戞贩鏀�)锛屽垯绂佹鍏ュ簱
- throw new CoolException("鐗╂枡绫诲瀷鍜屽疄闄呯绫讳笉涓�鑷�");
- }
+// if (matNos.size() > 1 && matType == 1) {
+// //鐗╂枡涓哄崟鍝佺被鍨嬶紝涓旂墿鏂欑绫昏秴杩�1(瀹為檯涓洪珮棰戞贩鏀�)锛屽垯绂佹鍏ュ簱
+// throw new CoolException("鐗╂枡绫诲瀷鍜屽疄闄呯绫讳笉涓�鑷�");
+// }
}
if (!sign && matType != null) {
if (matType == 1) {//鍗曞搧绫诲瀷鍏ュ簱
- locMast = getLocNoStep2(locTypeDto, matNos, rows, crnNos);
+ locMast = getLocNoStep2(locTypeDto, matNos, rows, crnNos,locMastList);
if (locMast != null) {
+ locMastList.add(locMast);
+ Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+ .eq("type_no", staDescId)
+ .eq("stn_no", sourceStaNo)
+ .eq("crn_no", locMast.getCrnNo());
+ StaDesc staDesc = staDescService.selectOne(wrapper);
+ if (Cools.isEmpty(staDesc)) {
+ return getLocNo(whsType,staDescId,sourceStaNo,matNos,locTypeDto,matTypeIn,locMastList);
+ }
//鎵惧埌搴撲綅锛岃繑鍥瀌to
sign=true;
} else {
//鍗曞搧娌℃湁鎵惧埌搴撲綅锛屾壘楂橀娣锋斁鍖哄煙搴撲綅
- locMast = getLocNoStep3(locTypeDto, crnNos);
+ locMast = getLocNoStep3(locTypeDto, crnNos,locMastList);
if (locMast != null) {
+ locMastList.add(locMast);
+ Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+ .eq("type_no", staDescId)
+ .eq("stn_no", sourceStaNo)
+ .eq("crn_no", locMast.getCrnNo());
+ StaDesc staDesc = staDescService.selectOne(wrapper);
+ if (Cools.isEmpty(staDesc)) {
+ return getLocNo(whsType,staDescId,sourceStaNo,matNos,locTypeDto,matTypeIn,locMastList);
+ }
//鎵惧埌搴撲綅锛岃繑鍥瀌to
sign=true;
}
}
} else if (matType == 2) {//楂橀绫诲瀷鍏ユ渶澶栦晶搴撲綅
- locMast = getLocNoStep3(locTypeDto, crnNos);
+ locMast = getLocNoStep3(locTypeDto, crnNos,locMastList);
if (locMast == null) {
//楂橀娌℃湁鎵惧埌搴撲綅锛屾壘浣庨娣锋斁鍖哄煙搴撲綅
- locMast = getLocNoStep4(locTypeDto, crnNos);
+ locMast = getLocNoStep4(locTypeDto, crnNos,locMastList);
}
if (locMast != null) {
+ locMastList.add(locMast);
+ Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+ .eq("type_no", staDescId)
+ .eq("stn_no", sourceStaNo)
+ .eq("crn_no", locMast.getCrnNo());
+ StaDesc staDesc = staDescService.selectOne(wrapper);
+ if (Cools.isEmpty(staDesc)) {
+ return getLocNo(whsType,staDescId,sourceStaNo,matNos,locTypeDto,matTypeIn,locMastList);
+ }
//鎵惧埌搴撲綅锛岃繑鍥瀌to
sign=true;
}
} else if (matType == 3) {//浣庨娣锋斁绫诲瀷
- locMast = getLocNoStep4(locTypeDto, crnNos);
+ locMast = getLocNoStep4(locTypeDto, crnNos,locMastList);
if (locMast != null) {
+ locMastList.add(locMast);
+ Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+ .eq("type_no", staDescId)
+ .eq("stn_no", sourceStaNo)
+ .eq("crn_no", locMast.getCrnNo());
+ StaDesc staDesc = staDescService.selectOne(wrapper);
+ if (Cools.isEmpty(staDesc)) {
+ return getLocNo(whsType,staDescId,sourceStaNo,matNos,locTypeDto,matTypeIn,locMastList);
+ }
//鎵惧埌搴撲綅锛岃繑鍥瀌to
sign=true;
}
@@ -265,9 +304,12 @@
if (sign){
return getLocNoFinalStep(staDescId, sourceStaNo, locMast);//杩斿洖dto
}
+ if (!locMastList.isEmpty()){
+ return getLocNoFinalStep(staDescId, sourceStaNo, locMastList.get(0));//杩斿洖dto
+ }
//----------------2023.06.02鍏煎浠g爜end---------------------
- throw new CoolException("妫�绱㈠簱浣嶅け璐ワ紝璇疯仈绯荤鐞嗗憳");
+ throw new CoolException("800妫�绱㈠簱浣嶅け璐ワ紝璇疯仈绯荤鐞嗗憳");
}
// 闈犺繎鎽嗘斁瑙勫垯 --- 绌烘墭
@@ -301,7 +343,7 @@
}
//鍗曞搧绫诲瀷鍏ュ簱
- private LocMast getLocNoStep2(LocTypeDto locTypeDto, List<String> matNos, List<Integer> rows, List<Integer> crnNos) {
+ private LocMast getLocNoStep2(LocTypeDto locTypeDto, List<String> matNos, List<Integer> rows, List<Integer> crnNos,List<LocMast> locMastList) {
LocMast locMast = null;
//鍏堟壘宸ヤ綔妗�
@@ -311,6 +353,7 @@
//闅忔満鍙敤鍫嗗灈鏈哄彿
Integer randomCrnNo = Utils.getRandomCrnNo(crnNos, locTypeDto.getLocType1());
Collections.shuffle(crnNos);
+ loc:
for (Integer crnNo : crnNos) {
List<LocMast> locMasts = locMastService.findEmptyLocMastByLocNos(locTypeDto.getLocType1(), groupLoc, crnNo);
for (LocMast locMast0 : locMasts) {
@@ -326,8 +369,10 @@
if (basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) {
// 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣�
if (locMastService.checkEmptyCount(locMast0, 5)) {
- locMast = locMast0;
- break;
+ if (!locMastList.contains(locMast0)){
+ locMast = locMast0;
+ break loc;
+ }
}
}
}
@@ -339,6 +384,7 @@
//鎵惧唴渚х┖搴撲綅(闈炴渶澶栦晶搴撲綅)
if (locMast == null) {
List<String> locNos = locDetlService.getSameDetl(matNos.get(0));
+ loc:
for (String locNo : locNos) {
List<String> groupLoc = Utils.getGroupLoc(locNo);
List<LocMast> locMasts = locMastService.findEmptyLocMastByLocNos(locTypeDto.getLocType1(), groupLoc, null);
@@ -355,8 +401,10 @@
if (basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) {
// 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣�
if (locMastService.checkEmptyCount(locMast0, 5)) {
- locMast = locMast0;
- break;
+ if (!locMastList.contains(locMast0)){
+ locMast = locMast0;
+ break loc;
+ }
}
}
}
@@ -390,9 +438,11 @@
if (basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) {
// 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣�
if (locMastService.checkEmptyCount(locMast0, 5)) {
- locMast = locMast0;
- flag = true;
- break;
+ if (!locMastList.contains(locMast0)){
+ locMast = locMast0;
+ flag = true;
+ break;
+ }
}
}
}
@@ -407,9 +457,11 @@
if (basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) {
// 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣�
if (locMastService.checkEmptyCount(locMast0, 5)) {
- locMast = locMast0;
- flag = true;
- break;
+ if (!locMastList.contains(locMast0)){
+ locMast = locMast0;
+ flag = true;
+ break;
+ }
}
}
}
@@ -425,7 +477,7 @@
}
//楂橀绫诲瀷鍏ユ渶澶栦晶搴撲綅
- private LocMast getLocNoStep3(LocTypeDto locTypeDto, List<Integer> crnNos) {
+ private LocMast getLocNoStep3(LocTypeDto locTypeDto, List<Integer> crnNos,List<LocMast> locMastList) {
LocMast locMast = null;
//闅忔満鍙敤鍫嗗灈鏈哄彿
@@ -451,7 +503,10 @@
if (basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) {
// 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣�
if (locMastService.checkEmptyCount(locMast0, 5)) {
- locMast = locMast0;
+ if (!locMastList.contains(locMast0)){
+ locMast = locMast0;
+ break;
+ }
}
}
}
@@ -467,7 +522,7 @@
crns.add(crnNo);
}
if (!crns.isEmpty()) {
- return getLocNoStep3(locTypeDto, crns);
+ return getLocNoStep3(locTypeDto, crns,locMastList);
}
}
@@ -475,7 +530,7 @@
}
//浣庨绫诲瀷锛岀洿鎺ユ壘娣锋斁鍖哄煙
- private LocMast getLocNoStep4(LocTypeDto locTypeDto, List<Integer> crnNos) {
+ private LocMast getLocNoStep4(LocTypeDto locTypeDto, List<Integer> crnNos,List<LocMast> locMastList) {
LocMast locMast = null;
//闅忔満鍙敤鍫嗗灈鏈哄彿
@@ -515,10 +570,16 @@
if (!locMast1.getLocSts().equals("O") && !locMast0.getRow1().equals(outermostRow)){
// 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣�
if (locMastService.checkEmptyCount0(locMast0, 5)) {
- locMast = locMast0;
+ if (!locMastList.contains(locMast0)){
+ locMast = locMast0;
+ break;
+ }
}
}else {
- locMast = locMast0;
+ if (!locMastList.contains(locMast0)){
+ locMast = locMast0;
+ break;
+ }
}
}
@@ -535,7 +596,7 @@
crns.add(crnNo);
}
if (!crns.isEmpty()) {
- return getLocNoStep4(locTypeDto, crns);
+ return getLocNoStep4(locTypeDto, crns,locMastList);
}
}
--
Gitblit v1.9.1