From fc24c266d88751bc431b5d61c05c0c388d9f0350 Mon Sep 17 00:00:00 2001
From: LSH
Date: 星期四, 01 六月 2023 16:14:58 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/common/service/CommonService.java | 285 ++++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 211 insertions(+), 74 deletions(-)
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index 9519a45..fa334c9 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -1,7 +1,9 @@
package com.zy.common.service;
+import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.core.common.Arith;
import com.core.common.Cools;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
@@ -48,7 +50,7 @@
/**
* 鐢熸垚宸ヤ綔鍙�
- * @param wrkMk 0:鍏ュ簱 1 - 3000 ; 1:鎷f枡/骞舵澘/鐩樼偣 3001 - 6000 ; 2: 鍑哄簱 6001 -9000 ; 3:鍏朵粬 9001 -9999
+ * @param wrkMk
* @return workNo(宸ヤ綔鍙�)
*/
public int getWorkNo(Integer wrkMk) {
@@ -95,26 +97,38 @@
*/
@Transactional
public StartupDto getLocNo(Integer whsType, Integer staDescId, Integer sourceStaNo, List<String> matNos, LocTypeDto locTypeDto, int times) {
- StartupDto startupDto = new StartupDto();
- // 鐢熸垚宸ヤ綔鍙�
- int workNo = getWorkNo(0);
-
- switch (sourceStaNo) {
- case 202:
- whsType = 2;
- break;
- case 205:
- whsType = 1;
- break;
- case 126:
- whsType = 3;
- break;
+// whsType = getWhsType(sourceStaNo, times);
+ switch (sourceStaNo){
+ case 101:
case 109:
- whsType = 4;
+ case 117:
+ whsType=1; //1-8璐ф灦
+ slaveProperties.setDoubleDeep(false);
+ slaveProperties.setGroupCount(2);
+ break;
+ case 201:
+ slaveProperties.setDoubleDeep(true);
+ slaveProperties.setGroupCount(4);
+ whsType=2; //9-12璐ф灦
+ break;
+ case 207:
+ whsType=3; //13-14璐ф灦
+ slaveProperties.setDoubleDeep(false);
+ slaveProperties.setGroupCount(2);
+ break;
+ case 213:
+ slaveProperties.setDoubleDeep(true);
+ slaveProperties.setGroupCount(4);
+ whsType=4; //15-18璐ф灦
break;
default:
- throw new CoolException("搴撲綅鎺掑彿鍒嗛厤閿欒, 婧愮珯鍙凤細" + sourceStaNo);
+ throw new CoolException("鏍规嵁鍏ュ簱绔欒幏鍙栧簱浣嶆帓鍙峰垎閰嶅け璐ワ紝鍏ュ簱绔欙細" + sourceStaNo);
}
+
+ StartupDto startupDto = new StartupDto();
+
+
+
RowLastno rowLastno = rowLastnoService.selectById(whsType);
if (Cools.isEmpty(rowLastno)) {
throw new CoolException("鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛�");
@@ -132,7 +146,7 @@
LocMast locMast = null;
// 闈犺繎鎽嗘斁瑙勫垯 --- 鍚屽ぉ鍚岃鏍肩墿鏂�
- if (!Cools.isEmpty(matNos)) {
+ if (!Cools.isEmpty(matNos) && (whsType==2 || whsType==4)) {
List<String> locNos = locDetlService.getSameDetlToday(matNos.get(0), sRow, eRow);
for (String locNo : locNos) {
if (Utils.isShallowLoc(slaveProperties, locNo)) {
@@ -154,7 +168,7 @@
}
// 闈犺繎鎽嗘斁瑙勫垯 --- 绌烘墭
- if (staDescId == 10) {
+ if (staDescId == 10 && (whsType==2 || whsType==4)) {
List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "D").ge("row1", sRow).le("row1", eRow));
if (locMasts.size() > 0) {
for (LocMast loc : locMasts) {
@@ -176,53 +190,46 @@
}
// 濡傛灉娌℃湁鐩歌繎鐗╂枡锛屽垯鎸夎鍒欒疆璇㈣揣鏋�
- if (null == locMast) {
- Shelves shelves = new Shelves(rowCount, crn_qty);
- // 1-4鎺�
- if (whsType == 1) {
- for (int i = 0; i < shelves.group; i ++) {
- curRow = shelves.start(curRow);
- if (curRow < 0) {
- throw new CoolException("妫�绱㈠簱浣嶅け璐ワ紝璇疯仈绯荤鐞嗗憳");
- }
- Integer crnNo1 = shelves.get(curRow);
- if (basCrnpService.checkSiteError(crnNo1, true)) {
- crnNo = crnNo1;
- break;
- }
- }
- // 5-8鎺�
- } else if (whsType == 2) {
- curRow = curRow - 4;
- for (int i = 0; i < shelves.group; i ++) {
- curRow = shelves.start(curRow);
- if (curRow < 0) {
- throw new CoolException("妫�绱㈠簱浣嶅け璐ワ紝璇疯仈绯荤鐞嗗憳");
- }
- Integer crnNo1 = shelves.get(curRow);
- if (basCrnpService.checkSiteError(crnNo1 + 1, true)) {
- // 鍋忕Щ閲忚ˉ鍋�
- curRow = curRow + 4;
- crnNo = crnNo1 + 1;
- break;
- }
-
- }
- // 126绌烘澘鍏� 1-8鎺�
- } else {
- for (int i = 0; i < shelves.group; i ++) {
- curRow = shelves.start(curRow);
- if (curRow < 0) {
- throw new CoolException("妫�绱㈠簱浣嶅け璐ワ紝璇疯仈绯荤鐞嗗憳");
- }
- Integer crnNo1 = shelves.get(curRow);
- if (basCrnpService.checkSiteError(crnNo1, true)) {
- crnNo = crnNo1;
- break;
- }
- }
+ if (null == locMast){
+ curRow = getCurRow(curRow);
+ if (curRow == 0){
+ crnNo = 0;
+ }else if( curRow <= 8 && curRow > 0){
+ crnNo=(curRow+1)/2;
+ }else if (curRow <= 12 && curRow >= 9){
+ crnNo=5;
+ }else if (curRow <= 14 && curRow >= 13){
+ crnNo=6;
+ }else if (curRow <= 18 && curRow >= 15){
+ crnNo=7;
+ }
+ if (curRow!=0 && !basCrnpService.checkSiteError(crnNo, true)) {
+ crnNo = 0;
}
}
+
+// // 濡傛灉娌℃湁鐩歌繎鐗╂枡锛屽垯鎸夎鍒欒疆璇㈣揣鏋�
+// if (null == locMast) {
+// Shelves shelves = new Shelves(rowCount, crn_qty);
+// int divides = (int) Arith.divides(1, curRow - 1, 4);
+// curRow = (int) Arith.remainder(curRow, 4);
+// if (curRow == 0) {
+// curRow = 4;
+// }
+// for (int i = 0; i < shelves.group; i ++) {
+// curRow = shelves.start(curRow);
+// if (curRow < 0) {
+// throw new CoolException("妫�绱㈠簱浣嶅け璐ワ紝璇疯仈绯荤鐞嗗憳");
+// }
+// Integer crnNo1 = shelves.get(curRow);
+// crnNo1 = crnNo1 + divides*1;
+// if (basCrnpService.checkSiteError(crnNo1, true)) {
+// crnNo = crnNo1;
+// curRow = curRow + divides*4;
+// break;
+// }
+// }
+// }
if (crnNo == 0) {
throw new CoolException("娌℃湁鍙敤鐨勫爢鍨涙満");
@@ -241,34 +248,111 @@
if (!staNo.getAutoing().equals("Y")) {
throw new CoolException("鐩爣绔�"+staDesc.getCrnStn()+"涓嶅彲鐢�");
}
+
// 鏇存柊搴撲綅鎺掑彿
rowLastno.setCurrentRow(curRow);
rowLastnoService.updateById(rowLastno);
- // 鏌ユ壘搴撲綅
+
+ // 寮�濮嬫煡鎵惧簱浣� ==============================>>
+
+ // 1.褰撴绱㈠簱鎺掍负娴呭簱浣嶆帓鏃讹紝浼樺厛瀵绘壘褰撳墠搴撴帓鐨勬繁搴撲綅鎺�
if (locMast == null) {
- if (Utils.isShallowLoc(slaveProperties, curRow)) {
+ if ((whsType==2 || whsType==4) && Utils.isShallowLoc(slaveProperties, curRow)) {
Integer deepRow = Utils.getDeepRow(slaveProperties, curRow);
locMast = locMastService.queryFreeLocMast(deepRow, locTypeDto.getLocType1());
+ // todo:luxiaotao 濡傛灉鐢ㄦ祬鎺掓壘鍒扮殑娣卞簱浣嶏紝閭d箞鍒欓渶瑕佸垽鏂繖涓繁搴撲綅瀵瑰簲鐨勬祬搴撲綅鏄惁鏈夎揣锛團銆乆銆丏锛�
+ // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣�
+ if (!locMastService.checkEmptyCount(locMast)) {
+ locMast = null;
+ }
}
if (Cools.isEmpty(locMast)) {
locMast = locMastService.queryFreeLocMast(curRow, locTypeDto.getLocType1());
+ // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣�
+ if (!locMastService.checkEmptyCount(locMast)) {
+ locMast = null;
+ }
+ // 鐩爣搴撲綅 ===>> 娴呭簱浣嶏紝 鍒欐牎楠屽叾娣卞簱浣嶆槸鍚︿负 F D X
+ if ((whsType==2 || whsType==4) && null != locMast && Utils.isShallowLoc(slaveProperties, locMast.getLocNo())) {
+ LocMast deepLoc = locMastService.selectById(Utils.getDeepLoc(slaveProperties, locMast.getLocNo()));
+ if (!deepLoc.getLocSts().equals("F") && !deepLoc.getLocSts().equals("D") && !deepLoc.getLocSts().equals("X")) {
+ locMast = null;
+ }
+ }
+ // 鐩爣搴撲綅 ===>> 娣卞簱浣嶏紝 鍒欐牎楠屽叾娴呭簱浣嶆槸鍚︿负 O
+ if ((whsType==2 || whsType==4) && null != locMast && Utils.isDeepLoc(slaveProperties, locMast.getLocNo())) {
+ LocMast shallowLoc = locMastService.selectById(Utils.getShallowLoc(slaveProperties, locMast.getLocNo()));
+ if (!shallowLoc.getLocSts().equals("O")) {
+ locMast = null;
+ }
+ }
}
}
+ //20230203娣诲姞 lfd鏂欑搴撴牴鎹緭閫佺嚎绛涢�夊叆搴�
+ if (!Cools.isEmpty(locMast) && locMast.getCrnNo()<5){
+ int wrkMastsC0 = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("crn_no", locMast.getCrnNo()).eq("io_type",1));
+ if (wrkMastsC0>3 && times < rowCount){
+ int locO1 = locMastService.selectCount(new EntityWrapper<LocMast>().eq("loc_sts", "O").eq("crn_no", 1));
+ BasCrnp basCrnp1 = basCrnpService.selectById(1);
+ if (!Cools.isEmpty(locO1) && basCrnp1.getInEnable().equals("Y") && basCrnp1.getCrnSts().equals(3)){
+ int wrkMastsC1 = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("crn_no", 1).eq("io_type",1));
+ if (wrkMastsC0>wrkMastsC1){
+ locMast=null;
+ }
+ }
+ if (!Cools.isEmpty(locMast)){
+ locO1=locMastService.selectCount(new EntityWrapper<LocMast>().eq("loc_sts", "O").eq("crn_no", 2));
+ BasCrnp basCrnp2 = basCrnpService.selectById(2);
+ if (!Cools.isEmpty(locO1) && basCrnp2.getInEnable().equals("Y") && basCrnp2.getCrnSts().equals(3)){
+ int wrkMastsC2 = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("crn_no", 2).eq("io_type",1));
+ if (wrkMastsC0>wrkMastsC2){
+ locMast=null;
+ }
+ }
+ }
+ if (!Cools.isEmpty(locMast)){
+ locO1=locMastService.selectCount(new EntityWrapper<LocMast>().eq("loc_sts", "O").eq("crn_no", 2));
+ BasCrnp basCrnp3 = basCrnpService.selectById(3);
+ if (!Cools.isEmpty(locO1) && basCrnp3.getInEnable().equals("Y") && basCrnp3.getCrnSts().equals(3)){
+ int wrkMastsC3 = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("crn_no", 3).eq("io_type",1));
+ if (wrkMastsC0>wrkMastsC3){
+ locMast=null;
+ }
+ }
+ }
+ if (!Cools.isEmpty(locMast)){
+ locO1=locMastService.selectCount(new EntityWrapper<LocMast>().eq("loc_sts", "O").eq("crn_no", 2));
+ BasCrnp basCrnp4 = basCrnpService.selectById(4);
+ if (!Cools.isEmpty(locO1) && basCrnp4.getInEnable().equals("Y") && basCrnp4.getCrnSts().equals(3)){
+ int wrkMastsC4 = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("crn_no", 4).eq("io_type",1));
+ if (wrkMastsC0>wrkMastsC4){
+ locMast=null;
+ }
+ }
+ }
+ }
+ }
+
+ // 2.搴撲綅褰撳墠鎵�灞炲昂瀵告棤绌哄簱浣嶆椂锛岃皟鏁村昂瀵稿弬鏁帮紝鍚戜笂鍏煎妫�绱㈠簱浣�
if (Cools.isEmpty(locMast)) {
+ // 褰撳墠宸烽亾鏃犵┖搴撲綅鏃讹紝閫掑綊璋冩暣鑷充笅涓�宸烽亾锛屾绱㈠叏閮ㄥ贩閬撴棤鏋滃悗锛岃烦鍑洪�掑綊
+ if (times < rowCount) {
+ times = times + 1;
+ return getLocNo(1, staDescId, sourceStaNo, matNos, locTypeDto, times);
+ }
+
// 杞昏揣鐗╂壘杞诲簱浣嶄负绌烘椂锛屽彲浠ュ幓鎵鹃噸搴撲綅浠�
if (locTypeDto.getLocType1() == 1) {
locTypeDto.setLocType1((short) 2);
- return getLocNo(null, staDescId, sourceStaNo, matNos, locTypeDto, times);
+ return getLocNo(1, staDescId, sourceStaNo, matNos, locTypeDto, times);
}
- if (times >= rowCount) {
- log.error("娌℃湁绌哄簱浣�");
- throw new CoolException("娌℃湁绌哄簱浣�");
- }
- times = times + 1;
- return getLocNo(1, staDescId, sourceStaNo, matNos, locTypeDto, times);
+ log.error("绯荤粺娌℃湁绌哄簱浣嶏紒锛侊紒 灏哄瑙勬牸锛� {}锛� 杞娆℃暟锛歿}", JSON.toJSONString(locTypeDto), times);
+ throw new CoolException("娌℃湁绌哄簱浣�");
}
String locNo = locMast.getLocNo();
+ // 鐢熸垚宸ヤ綔鍙�
+ int workNo = getWorkNo(0);
// 杩斿洖dto
startupDto.setWorkNo(workNo);
startupDto.setCrnNo(crnNo);
@@ -293,4 +377,57 @@
}
}
-}
\ No newline at end of file
+ /**
+ * 鏍规嵁鍏ュ簱绔欒幏鍙栧簱浣嶆帓鍙峰垎閰�
+ */
+ private Integer getCurRow(Integer curRow) {
+ boolean sign=false;
+ int count=0;
+ while (!sign){
+ count=count+1;
+ if (count==5){
+ return 0;
+ }
+ switch (curRow){
+ case 1:
+ case 3:
+ case 5:
+ case 2:
+ case 4:
+ case 6:
+ curRow=curRow+2;
+ break;
+ case 7:
+ curRow=2;
+ break;
+ case 8:
+ curRow=1;
+ break;
+ case 13:
+ return 14;
+ case 14:
+ return 13;
+ case 9:
+ return 12;
+ case 10:
+ return 11;
+ case 11:
+ return 9;
+ case 12:
+ return 10;
+ case 15:
+ return 18;
+ case 16:
+ return 17;
+ case 17:
+ return 15;
+ case 18:
+ return 16;
+ default:
+ throw new CoolException("搴撲綅鎺掑彿寮傚父锛氭帓鍙凤細"+curRow);
+ }
+ sign = basCrnpService.checkSiteError((curRow+1)/2, true);
+ }
+ return curRow;
+ }
+}
--
Gitblit v1.9.1