From 45333415b7634fc20b03b7e8ae3b7eee91101bda Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期四, 07 十二月 2023 10:48:31 +0800
Subject: [PATCH] 增加筛选条件
---
src/main/java/com/zy/common/service/CommonService.java | 124 +++++++++++++++++++++++++++++++++++++++--
1 files changed, 117 insertions(+), 7 deletions(-)
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index 1633fd3..2718933 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -144,6 +144,13 @@
return getLocNoStep6(staDescId, sourceStaNo, locMast);//杩斿洖dto
}
+ //瀛樿揣鍒嗙被缂栫爜瑙勫垯
+ locMast = getLocNoCodeStepRule(matNos, locTypeDto);
+ if (locMast != null) {
+ //鎵惧埌搴撲綅锛岃繑鍥瀌to
+ return getLocNoStep6(staDescId, sourceStaNo, locMast);//杩斿洖dto
+ }
+
// 闈犺繎鎽嗘斁瑙勫垯 --- 鐩稿悓璁㈠崟鍙�, 鍚屽ぉ鍚岃鏍肩墿鏂�
locMast = getLocNoStep3(staDescId, matNos, locTypeDto);
if (locMast != null) {
@@ -195,12 +202,8 @@
}
List<LocMast> locMasts = locMastService.queryFreeLocMast2(locTypeDto.getLocType1(), locRule.getRowBeg(), locRule.getRowEnd(), locRule.getBayBeg(), locRule.getBayEnd(), locRule.getLevBeg(), locRule.getLevEnd());
- for (LocMast locMast0 : locMasts) {
- //棰勭暀绌哄簱浣�
- if (locMastService.checkEmptyCount(locMast0, 10)) {
- return locMast0;
- }
- }
+ locMast = locFilter(locMasts, matNos,locTypeDto);
+
}
if (locRules.get(0).getKeepGo() == 0) {
@@ -209,6 +212,46 @@
throw new CoolException("瑙勫垯鍖哄煙娌℃湁绌哄簱浣�");
}
}
+
+ return locMast;
+ }
+
+ /**
+ * 搴撲綅缂栫爜瑙勫垯
+ */
+ private LocMast getLocNoCodeStepRule(List<String> matNos, LocTypeDto locTypeDto) {
+ LocMast locMast = null;
+
+ //搴撲綅缂栫爜瑙勫垯鍙兘鍦ㄧ浉鍚岀紪鐮佽揣鐗╀腑鐢熸晥
+ String matnr = "";
+ for(String matNo : matNos){
+ if("".equals(matnr)){
+ matnr = matNo.substring(0, 4);
+ }
+ if(!matnr.equals(matNo.substring(0, 4))){
+ return null;
+ }
+ }
+
+ // 搴撳尯閿佸畾
+ List<LocRule> locRules = locRuleService.findCode(Cools.isEmpty(matNos) ? null : matNos.get(0),null);
+ if (locRules == null || locRules.isEmpty()) {
+ return null;//娌℃湁搴撲綅瑙勫垯锛岃烦鍑哄綋鍓嶄换鍔�
+ }
+
+ for (LocRule locRule : locRules) {
+ if (locRule == null) {
+ continue;
+ }
+ List<LocMast> locMasts = locMastService.queryFreeLocMast2(locTypeDto.getLocType1(), locRule.getRowBeg(), locRule.getRowEnd(), locRule.getBayBeg(), locRule.getBayEnd(), locRule.getLevBeg(), locRule.getLevEnd());
+ locMast = locFilter(locMasts, matNos,locTypeDto);
+ }
+
+// if (locRules.get(0).getKeepGo() == 0) {
+// //鎵句笉鍒扮┖搴撲綅锛屼笖绂佹缁х画瀵绘壘鍏朵粬闈炴贩杞藉尯鍩熷簱浣�
+// //鎵句笉鍒板簱浣嶏紝鎶涘嚭寮傚父
+// throw new CoolException("瑙勫垯鍖哄煙娌℃湁绌哄簱浣�");
+// }
return locMast;
}
@@ -232,7 +275,7 @@
//鍐嶅垽鏂簱瀛樻槑缁嗘。锛屾枡鍙风浉鍚岀殑鏄庣粏搴撲綅
List<String> locNos = locDetlService.getSameDetl(matNos.get(0));
for (String locNo : locNos) {
- LocMast locMast0 = locMastService.findNearloc(locNo);
+ LocMast locMast0 = locMastService.findInnerLoc(locNo);
if (null != locMast0) {
// 娴呭簱浣嶇鍚堝昂瀵告娴�
if (VersionUtils.checkLocType(locMast0, locTypeDto)) {
@@ -362,6 +405,73 @@
return locMast;
}
+ /*
+ 搴撳瓨瑙勫垯鎼滅储鍒扮殑搴撲綅纭
+ */
+ private LocMast locFilter(List<LocMast> locMasts,List<String> matNos,LocTypeDto locTypeDto){
+ for (LocMast locMast0 : locMasts) {
+ if(!VersionUtils.checkLocType(locMast0,locTypeDto)){
+ continue;
+ }
+ //鍗曞搧鐗╂枡
+ if (matNos.size() == 1) {
+ //濡傛灉涓嶆槸娣辨祬锛屽垯鐩存帴杩斿洖褰撳墠搴撲綅
+ if(Cools.isEmpty(Utils.getGroupDeepLoc(locMast0.getLocNo()))){
+ return locMast0;
+ }else{
+ List<String> groupInnerLoc = Utils.getGroupInnerLoc(locMast0.getLocNo());
+ //濡傛灉鏄繁娴呭簱浣嶏紝浣嗘槸鍐呮祴鏃犲簱浣嶇殑鎯呭喌涓嬶紝鍒欑洿鎺ヨ繑鍥炲綋鍓嶅簱浣�
+ if (Cools.isEmpty(groupInnerLoc)) {
+ return locMast0;
+ }else {
+ //鑾峰彇鏈�娣辩殑搴撲綅
+ String loc = groupInnerLoc.get(groupInnerLoc.size() - 1);
+ LocMast locMast1 = locMastService.selectByLoc(loc);
+ //濡傛灉鏈�娣辨祴搴撲綅涓虹┖搴撲綅锛屽垯鐩存帴杩斿洖鏈�娣卞簱浣�
+ if("O".equals(locMast1.getLocSts())){
+ return locMast1;
+ }else {
+ //濡傛灉鏈�娣卞簱浣嶇姸鎬佷笉涓篎鎴栬�匫锛屽垯璺冲嚭褰撳墠鐨勬繁娴呭簱浣嶆煡鎵�
+ if(!"F".equals(locMast1.getLocSts())){
+ continue;
+ }
+ List<LocDetl> locDetls = locDetlService.selectByLocNo(loc);
+ //濡傛灉褰撳墠娣卞簱浣嶇墿鏂欎笌鍏ュ簱鐗╂枡涓嶇浉绗︼紝鍒欒烦鍑哄綋鍓嶆繁娴呭簱浣嶆煡鎵�
+ if(!Cools.eq(locDetls.get(0).getMatnr(),matNos.get(0))){
+ continue;
+ }
+ //浠庨噷寰�澶栦緷娆¢亶鍘嗚缁勬繁娴呭簱浣�
+ for (int i=groupInnerLoc.size()-1; i>=0 ;i--){
+ LocMast locMast2 = locMastService.selectByLoc(groupInnerLoc.get(i));
+ if("O".equals(locMast2.getLocSts())){
+ //濡傛灉娣卞簱浣嶄腑鍚湁0鐘舵�佺殑搴撲綅锛屽垯鐩存帴杩斿洖璇ュ簱浣�
+ return locMast2;
+ }else if("F".equals(locMast2.getLocSts())){
+ //濡傛灉瀵逛簬locaMast0鏈�杩戠殑涓�涓簱浣嶄篃涓篎鐘舵�侊紝鍒欒繑鍥瀕ocaMastO
+ if(i==0){
+ return locMast0;
+ }else {
+ //濡傛灉璇ョ粍娣辨祬搴撲綅涓惈鏈夋棦涓嶄负F涔熶笉涓篛鐨勫簱浣嶏紝鍒欒烦鍑哄綋鍓嶆繁娴呭簱浣嶆煡鎵�
+ continue;
+ }
+ }else {
+ break;
+ }
+ }
+ }
+
+ }
+ }
+ }else {
+ if(Cools.isEmpty(Utils.getGroupDeepLoc(locMast0.getLocNo()))){
+ return locMast0;
+ }
+ }
+
+ }
+ return null;
+ }
+
//杩斿洖dto
private StartupDto getLocNoStep6(Integer staDescId, Integer sourceStaNo, LocMast locMast) {
StartupDto startupDto = new StartupDto();
--
Gitblit v1.9.1