From 72ca54b5a36818de16acf81c9c395e9f35a39a67 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期三, 11 六月 2025 09:53:27 +0800
Subject: [PATCH] 下发执行页,添加默认请求方法
---
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java | 110 ++++++++++++++++++++++++++++++++++++-------------------
1 files changed, 72 insertions(+), 38 deletions(-)
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
index b6b4eff..971f036 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
@@ -84,8 +84,6 @@
@Override
@Transactional(rollbackFor = Exception.class)
public InTaskMsgDto createInTask(TaskInParam param) {
- // 鑾峰彇搴撲綅鍙�
- InTaskMsgDto locNo = getLocNo(param);
// 楠岃瘉璁惧绔欑偣
DeviceSite deviceSite = validateDeviceSite(param);
@@ -95,6 +93,14 @@
// 鐢熸垚浠诲姟缂栫爜
String ruleCode = generateTaskCode();
+
+ // 鑾峰彇搴撲綅鍙�
+ InTaskMsgDto locNo = null;
+ try {
+ locNo = getLocNo(param);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
// 鍒涘缓骞朵繚瀛樹换鍔�
Task task = createTask(ruleCode, locNo.getLocNo(), waitPakin.getBarcode(),
@@ -138,7 +144,7 @@
private WaitPakin validateWaitPakin(String barcode) {
WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>()
.eq(WaitPakin::getBarcode, barcode)
- .eq(WaitPakin::getIoStatus, Short.parseShort(PakinIOStatus.PAKIN_IO_STATUS_DONE.val)));
+ .eq(WaitPakin::getIoStatus, PakinIOStatus.PAKIN_IO_STATUS_DONE.val));
if (Cools.isEmpty(waitPakin)) {
throw new CoolException("璇锋鏌ョ粍鎷栫姸鎬佹槸鍚﹀畬鎴愶紒锛�");
@@ -166,7 +172,7 @@
task.setTaskCode(ruleCode)
.setTaskStatus(TaskStsType.GENERATE_IN.id)
.setTaskType(TaskType.TASK_TYPE_IN.type)
- .setWarehType(WarehType.WAREHOUSE_TYPE_CRN.id)
+ .setWarehType(WarehType.WAREHOUSE_TYPE_CRN.val)
.setTargLoc(targetLoc)
.setBarcode(barcode)
.setTargSite(targetSite)
@@ -188,7 +194,6 @@
.eq(Loc::getCode, locCode)
.set(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_S.type)
.set(Loc::getBarcode, barcode));
-
if (!updated) {
throw new CoolException("搴撲綅棰勭害澶辫触锛侊紒");
}
@@ -198,9 +203,7 @@
* 鑾峰彇骞堕獙璇佺粍鎷栨槑缁�
*/
private List<WaitPakinItem> getWaitPakinItems(Long pakinId) {
- List<WaitPakinItem> waitPakinItems = waitPakinItemService.list(
- new LambdaQueryWrapper<WaitPakinItem>().eq(WaitPakinItem::getPakinId, pakinId));
-
+ List<WaitPakinItem> waitPakinItems = waitPakinItemService.list(new LambdaQueryWrapper<WaitPakinItem>().eq(WaitPakinItem::getPakinId, pakinId));
if (waitPakinItems.isEmpty()) {
throw new CoolException("鏁版嵁閿欒锛氱粍鎷栨槑缁嗕笉瀛樺湪");
}
@@ -328,7 +331,7 @@
// return locNo;
// }
@Override
- public InTaskMsgDto getLocNo(TaskInParam param) {
+ public InTaskMsgDto getLocNo(TaskInParam param) throws Exception {
String matnr = null;
String batch = null;
List<WaitPakin> waitPakins = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, param.getBarcode()));
@@ -355,23 +358,21 @@
}
LocTypeDto locTypeDto = new LocTypeDto(param);
InTaskMsgDto dto = null;
- switch (warehouseArea.getType()) {
- case "CRN": //鍫嗗灈鏈�
- dto = getLocNoCrn(deviceBind, warehouseArea.getId(), param.getSourceStaNo(), matnr, batch, locTypeDto, 0, param.getIoType());
- break;
- case "SXC": //鍥涘悜搴�
- break;
- case "CTU": //ctu
- dto = getLocNoCtu(deviceBind, warehouseArea.getId(), param.getSourceStaNo(), matnr, batch, locTypeDto, 0, param.getIoType());
- break;
- default:
- dto = getLocNoCtu(deviceBind, warehouseArea.getId(), param.getSourceStaNo(), matnr, batch, locTypeDto, 0, param.getIoType());
- break;
+ //鏍规嵁绔嬪簱绫诲瀷鑾峰彇鑾峰彇搴撲綅
+ if (warehouseArea.getType().equals(WarehType.WAREHOUSE_TYPE_CRN.val)) {
+ //鍫嗗灈鏈�
+ dto = getLocNoCrn(param.getOrgLoc(),deviceBind, warehouseArea.getId(), param.getSourceStaNo(), matnr, batch, locTypeDto, 0, param.getIoType());
+
+ } else if (warehouseArea.getType().equals(WarehType.WAREHOUSE_TYPE_FOUR_DIRECTIONS.val)) {
+ //鍥涘悜搴�
+ } else {
+ //CTU 搴撲互鍙婂叾瀹�
+ dto = getLocNoCtu(deviceBind, warehouseArea.getId(), param.getSourceStaNo(), matnr, batch, locTypeDto, 0, param.getIoType());
}
return dto;
}
- private InTaskMsgDto getLocNoCrn(DeviceBind deviceBind, Long area, Integer sourceStaNo, String matnr, String batch, LocTypeDto locTypeDto, int times, Integer ioType) {
+ private InTaskMsgDto getLocNoCrn(String orgLoc,DeviceBind deviceBind, Long area, Integer sourceStaNo, String matnr, String batch, LocTypeDto locTypeDto, int times, Integer ioType) {
if (Cools.isEmpty(matnr)) { //鐗╂枡鍙�
matnr = "";
}
@@ -379,7 +380,7 @@
batch = "";
}
// 鍒濆鍖栧弬鏁�
- int deviceNo = 0; //鍫嗗灈鏈哄彿
+ int channel = 0; //鍫嗗灈鏈哄彿
int nearRow = 0; //鏈�娴呭簱浣嶆帓
int curRow = 0; //鏈�娣卞簱浣嶆帓
int rowCount = 0; //杞杞
@@ -399,7 +400,7 @@
for (int i = times; i <= deviceQty * 2; i++) {
int[] locNecessaryParameters = LocUtils.LocNecessaryParameters(deviceBind, curRow, deviceQty);
curRow = locNecessaryParameters[1];
- deviceNo = locNecessaryParameters[2];
+ channel = locNecessaryParameters[2];
rowCount = locNecessaryParameters[0];
nearRow = locNecessaryParameters[3];
break;
@@ -408,23 +409,22 @@
throw new CoolException("鏃犲彲鐢ㄥ爢鍨涙満");
}
//鍏ュ簱闈犺繎鎽嗘斁
- if (ioType == 1 && deviceBind.getBeSimilar().equals("1") && !Cools.isEmpty(matnr)) {
+ if (ioType == 1 && deviceBind.getBeSimilar().equals("1") && !Cools.isEmpty(matnr) && Cools.isEmpty(orgLoc)) {
if (nearRow != curRow) {
List<LocItem> locItems = locItemService.list(new LambdaQueryWrapper<LocItem>().eq(LocItem::getMatnrCode, matnr));
for (LocItem locItem : locItems) {
Loc loc1 = locService.getById(locItem.getLocId());
- if (LocUtils.isShallowLoc(slaveProperties, loc1.getCode())) {
+ if (LocUtils.isShallowLoc(loc1.getCode())) {
continue;
}
- String shallowLocNo = LocUtils.getShallowLoc(slaveProperties, loc1.getCode());
+ String shallowLocNo = LocUtils.getShallowLoc(loc1.getCode());
// 妫�娴嬬洰鏍囧簱浣嶆槸鍚︿负绌哄簱浣�
Loc shallowLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, shallowLocNo));
if (shallowLoc != null && shallowLoc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) {
if (LocUtils.locMoveCheckLocTypeComplete(shallowLoc, locTypeDto)) {
loc = shallowLoc;
- deviceNo = shallowLoc.getDeviceNo();
+ channel = shallowLoc.getChannel();
break;
-
}
}
}
@@ -459,10 +459,10 @@
DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>()
.eq(DeviceSite::getType, ioType)
.eq(DeviceSite::getSite, sourceStaNo)
- .eq(DeviceSite::getDeviceCode, deviceNo)
+ .eq(DeviceSite::getChannel, channel)
);
if (Cools.isEmpty(deviceSite)) {
- deviceNo = 0;
+ channel = 0;
} else {
inTaskMsgDto.setStaNo(Integer.parseInt(deviceSite.getDeviceSite()));
}
@@ -474,7 +474,7 @@
// 寮�濮嬫煡鎵惧簱浣� ==============================>>
// 1.鎸夎鍒欐煡鎵惧簱浣�
- if (Cools.isEmpty(loc) && deviceNo != 0) {
+ if (Cools.isEmpty(loc) && channel != 0) {
List<Loc> locMasts = null;
locMasts = locService.list(new LambdaQueryWrapper<Loc>()
.eq(Loc::getRow, nearRow)
@@ -484,11 +484,15 @@
.orderByAsc(Loc::getLev)
.orderByAsc(Loc::getCol)
);
+ Loc orgMoveLoc = null;
+ if (!Cools.isEmpty(orgLoc)) {
+ orgMoveLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, orgLoc));
+ }
for (Loc locMast1 : locMasts) {
if (!LocUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) {
continue;
}
- String shallowLoc = LocUtils.getDeepLoc(slaveProperties, locMast1.getCode());
+ String shallowLoc = LocUtils.getDeepLoc(locMast1.getCode());
if ((ioType == 1 && deviceBind.getBeSimilar().equals("1"))) {
//鐩镐技鐗╂枡鎵撳紑锛屽垽鏂繁搴撲綅鏈夋病鏈夎揣锛屾病璐у氨鏀炬繁搴撲綅锛屾湁璐у氨涓嶆搷浣�
Loc locMast2 = locService.getOne(new LambdaQueryWrapper<Loc>()
@@ -496,7 +500,13 @@
.eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
.eq(Loc::getAreaId, area)
);
+
if (!Cools.isEmpty(locMast2)) {
+ if (null != orgMoveLoc){
+ if (!locMast2.getChannel().equals(orgMoveLoc.getChannel())) {
+ break;
+ }
+ }
loc = locMast2;
break;
}
@@ -507,7 +517,13 @@
.in(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_D.type, LocStsType.LOC_STS_TYPE_F.type)
.eq(Loc::getAreaId, area)
);
+
if (!Cools.isEmpty(locMast2)) {
+ if (null != orgMoveLoc){
+ if (!locMast2.getChannel().equals(orgMoveLoc.getChannel())) {
+ break;
+ }
+ }
loc = locMast1;
break;
} else {
@@ -516,7 +532,13 @@
.eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
.eq(Loc::getAreaId, area)
);
+
if (!Cools.isEmpty(locMast2)) {
+ if (null != orgMoveLoc){
+ if (!locMast2.getChannel().equals(orgMoveLoc.getChannel())) {
+ break;
+ }
+ }
loc = locMast2;
break;
}
@@ -529,13 +551,19 @@
continue;
}
if (deviceBind.getBeSimilar().equals("1")) {
- String shallowLoc = LocUtils.getDeepLoc(slaveProperties, locMast1.getCode());
+ String shallowLoc = LocUtils.getDeepLoc(locMast1.getCode());
Loc locMast2 = locService.getOne(new LambdaQueryWrapper<Loc>()
.eq(Loc::getCode, shallowLoc)
.eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
.eq(Loc::getAreaId, area)
);
+
if (!Cools.isEmpty(locMast2)) {
+ if (null != orgMoveLoc){
+ if (!locMast2.getChannel().equals(orgMoveLoc.getChannel())) {
+ break;
+ }
+ }
loc = locMast2;
break;
} else {
@@ -544,7 +572,13 @@
.in(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_D.type, LocStsType.LOC_STS_TYPE_D.type)
.eq(Loc::getAreaId, area)
);
+
if (!Cools.isEmpty(locMast2)) {
+ if (null != orgMoveLoc){
+ if (!locMast2.getChannel().equals(orgMoveLoc.getChannel())) {
+ break;
+ }
+ }
loc = locMast1;
break;
}
@@ -561,7 +595,7 @@
//鏌ヨ褰撳墠搴撲綅绫诲瀷绌哄簱浣� 灏忎簬5涓垯locmast = null
List<Loc> locTypeLocMasts = locService.list(new LambdaQueryWrapper<Loc>()
.eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
- .eq(Loc::getChannel, deviceNo)
+ .eq(Loc::getChannel, channel)
.eq(Loc::getType, locTypeDto.getLocType1())
.eq(Loc::getAreaId, area)
);
@@ -573,21 +607,21 @@
// 褰撳墠宸烽亾鏃犵┖搴撲綅鏃讹紝閫掑綊璋冩暣鑷充笅涓�宸烽亾锛屾绱㈠叏閮ㄥ贩閬撴棤鏋滃悗锛岃烦鍑洪�掑綊
if (times < rowCount * 2) {
times = times + 1;
- return getLocNoCrn(deviceBind, area, sourceStaNo, matnr, batch, locTypeDto, times, ioType);
+ return getLocNoCrn(orgLoc,deviceBind, area, sourceStaNo, matnr, batch, locTypeDto, times, ioType);
}
// 2.搴撲綅褰撳墠鎵�灞炲昂瀵告棤绌哄簱浣嶆椂锛岃皟鏁村昂瀵稿弬鏁帮紝鍚戜笂鍏煎妫�绱㈠簱浣�
if (locTypeDto.getLocType1() < 3) {
int i = locTypeDto.getLocType1() + 1;
locTypeDto.setLocType1(i);
- return getLocNoCrn(deviceBind, area, sourceStaNo, matnr, batch, locTypeDto, 0, ioType);
+ return getLocNoCrn(orgLoc,deviceBind, area, sourceStaNo, matnr, batch, locTypeDto, 0, ioType);
}
throw new CoolException("娌℃湁绌哄簱浣�");
}
String locNo = loc.getCode();
// 杩斿洖dto
- inTaskMsgDto.setDeviceNo(deviceNo);
+ inTaskMsgDto.setDeviceNo(channel);
inTaskMsgDto.setSourceStaNo(sourceStaNo);
// inTaskMsgDto.setStaNo();
inTaskMsgDto.setLocNo(locNo);
--
Gitblit v1.9.1