From 7d27cdccf8b92f32e80499f1f06c4b8ab93936c1 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期一, 26 五月 2025 19:25:34 +0800
Subject: [PATCH] 修改空板移库,任务完成后无法加入历史档问题
---
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java | 121 ++++++++++++++++++++++------------------
1 files changed, 66 insertions(+), 55 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 84f477e..8d97ef5 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
@@ -15,7 +15,7 @@
import com.vincent.rsf.server.manager.service.*;
import com.vincent.rsf.server.manager.service.impl.LocServiceImpl;
import com.vincent.rsf.server.system.constant.SerialRuleCode;
-import com.vincent.rsf.server.system.enums.LocStsType;
+import com.vincent.rsf.server.manager.enums.LocStsType;
import com.vincent.rsf.server.system.utils.SerialRuleUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
@@ -74,7 +74,7 @@
task.setTaskStatus(TaskStsType.WCS_EXECUTE_OUT_TOTE_LOAD.id);
taskService.updateById(task);
- basStation.setUseStatus(StaUseStatusType.TYPE_O.type);
+ basStation.setUseStatus(LocStsType.LOC_STS_TYPE_O.type);
basStation.setBarcode(null);
basStationService.updateById(basStation);
@@ -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(),
@@ -116,7 +122,6 @@
locNo.setWorkNo(ruleCode);
return locNo;
}
-
/**
@@ -165,8 +170,9 @@
String targetSite, String sourceSiteNo, Long loginUserId) {
Task task = new Task();
task.setTaskCode(ruleCode)
- .setTaskStatus(TaskStsType.GENERATE_IN.id.shortValue())
- .setTaskType(TaskType.TASK_TYPE_IN.type.shortValue())
+ .setTaskStatus(TaskStsType.GENERATE_IN.id)
+ .setTaskType(TaskType.TASK_TYPE_IN.type)
+ .setWarehType(WarehType.WAREHOUSE_TYPE_CRN.id)
.setTargLoc(targetLoc)
.setBarcode(barcode)
.setTargSite(targetSite)
@@ -297,10 +303,11 @@
// waitPakinItems.forEach(item -> {
// TaskItem taskItem = new TaskItem();
// BeanUtils.copyProperties(item, taskItem);
-//// AsnOrder order = asnOrderService.getOne(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getId, item.getAsnId()));
-//// if (Objects.isNull(order)) {
-//// throw new CoolException("鏁版嵁閿欒: 鍗曟嵁涓嶅瓨鍦紒锛�");
-//// }
+
+ /// / AsnOrder order = asnOrderService.getOne(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getId, item.getAsnId()));
+ /// / if (Objects.isNull(order)) {
+ /// / throw new CoolException("鏁版嵁閿欒: 鍗曟嵁涓嶅瓨鍦紒锛�");
+ /// / }
// taskItem.setTaskId(task.getId())
// .setOrderType(OrderType.ORDER_RECEIPT.type)
// .setSource(item.getId())
@@ -326,19 +333,20 @@
// locNo.setWorkNo(ruleCode);
// return locNo;
// }
-
- public InTaskMsgDto getLocNo(TaskInParam param) {
- String matnr = null; String batch = null;
+ @Override
+ 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()));
if (Cools.isEmpty(waitPakins) && param.getIoType().equals(TaskType.TASK_TYPE_IN.type)) {
throw new CoolException("鏈壘鍒扮粍鎵樹俊鎭紝璇风粍鎵�");
- }else if (!Cools.isEmpty(waitPakins)) {
+ } else if (!Cools.isEmpty(waitPakins)) {
matnr = waitPakins.get(0).getCode();
batch = waitPakins.get(0).getCode();
}
List<DeviceSite> deviceSites = deviceSiteService.list(new LambdaQueryWrapper<DeviceSite>()
.eq(DeviceSite::getSite, param.getSourceStaNo())
- .eq(DeviceSite::getType,param.getIoType())
+ .eq(DeviceSite::getType, param.getIoType())
);
if (Cools.isEmpty(deviceSites)) {
throw new CoolException("鏈壘鍒扮珯鐐硅矾寰勪俊鎭�");
@@ -355,18 +363,21 @@
InTaskMsgDto dto = null;
switch (warehouseArea.getType()) {
case "CRN": //鍫嗗灈鏈�
- dto = getLocNoCrn(deviceBind,warehouseArea.getId(), param.getSourceStaNo(), matnr,batch, locTypeDto, 0, param.getIoType());
+ 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());
+ 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;
}
return dto;
}
- private InTaskMsgDto getLocNoCrn(DeviceBind deviceBind,Long area,Integer sourceStaNo, String matnr, String batch,LocTypeDto locTypeDto, int times,Integer ioType){
+ private InTaskMsgDto getLocNoCrn(DeviceBind deviceBind, Long area, Integer sourceStaNo, String matnr, String batch, LocTypeDto locTypeDto, int times, Integer ioType) {
if (Cools.isEmpty(matnr)) { //鐗╂枡鍙�
matnr = "";
}
@@ -374,7 +385,7 @@
batch = "";
}
// 鍒濆鍖栧弬鏁�
- int deviceNo = 0; //鍫嗗灈鏈哄彿
+ int channel = 0; //鍫嗗灈鏈哄彿
int nearRow = 0; //鏈�娴呭簱浣嶆帓
int curRow = 0; //鏈�娣卞簱浣嶆帓
int rowCount = 0; //杞杞
@@ -394,7 +405,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;
@@ -403,7 +414,7 @@
throw new CoolException("鏃犲彲鐢ㄥ爢鍨涙満");
}
//鍏ュ簱闈犺繎鎽嗘斁
- if (ioType== 1 && deviceBind.getBeSimilar().equals("1") && !Cools.isEmpty(matnr)) {
+ if (ioType == 1 && deviceBind.getBeSimilar().equals("1") && !Cools.isEmpty(matnr)) {
if (nearRow != curRow) {
List<LocItem> locItems = locItemService.list(new LambdaQueryWrapper<LocItem>().eq(LocItem::getMatnrCode, matnr));
for (LocItem locItem : locItems) {
@@ -413,12 +424,12 @@
}
String shallowLocNo = LocUtils.getShallowLoc(slaveProperties, loc1.getCode());
// 妫�娴嬬洰鏍囧簱浣嶆槸鍚︿负绌哄簱浣�
- Loc shallowLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode,shallowLocNo));
+ 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();
- break;
+ loc = shallowLoc;
+ channel = shallowLoc.getChannel();
+ break;
}
}
@@ -454,11 +465,11 @@
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;
- }else {
+ if (Cools.isEmpty(deviceSite)) {
+ channel = 0;
+ } else {
inTaskMsgDto.setStaNo(Integer.parseInt(deviceSite.getDeviceSite()));
}
@@ -469,13 +480,13 @@
// 寮�濮嬫煡鎵惧簱浣� ==============================>>
// 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)
.eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
.eq(Loc::getType, locTypeDto.getLocType1())
- .eq(Loc::getAreaId,area)
+ .eq(Loc::getAreaId, area)
.orderByAsc(Loc::getLev)
.orderByAsc(Loc::getCol)
);
@@ -484,12 +495,12 @@
continue;
}
String shallowLoc = LocUtils.getDeepLoc(slaveProperties, locMast1.getCode());
- if ((ioType== 1 && deviceBind.getBeSimilar().equals("1"))) {
+ if ((ioType == 1 && deviceBind.getBeSimilar().equals("1"))) {
//鐩镐技鐗╂枡鎵撳紑锛屽垽鏂繁搴撲綅鏈夋病鏈夎揣锛屾病璐у氨鏀炬繁搴撲綅锛屾湁璐у氨涓嶆搷浣�
Loc locMast2 = locService.getOne(new LambdaQueryWrapper<Loc>()
- .eq(Loc::getRow, shallowLoc)
+ .eq(Loc::getCode, shallowLoc)
.eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
- .eq(Loc::getAreaId,area)
+ .eq(Loc::getAreaId, area)
);
if (!Cools.isEmpty(locMast2)) {
loc = locMast2;
@@ -499,17 +510,17 @@
//鐩镐技鐗╂枡鍏抽棴锛屽垽鏂繁搴撲綅鏈夋病鏈夎揣锛屾湁璐у氨鏀炬祬搴撲綅锛屾棤璐у氨涓嶆搷浣�
Loc locMast2 = locService.getOne(new LambdaQueryWrapper<Loc>()
.eq(Loc::getCode, shallowLoc)
- .in(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_D.type,LocStsType.LOC_STS_TYPE_F.type)
- .eq(Loc::getAreaId,area)
+ .in(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_D.type, LocStsType.LOC_STS_TYPE_F.type)
+ .eq(Loc::getAreaId, area)
);
if (!Cools.isEmpty(locMast2)) {
loc = locMast1;
break;
- }else{
+ } else {
locMast2 = locService.getOne(new LambdaQueryWrapper<Loc>()
.eq(Loc::getCode, shallowLoc)
.eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
- .eq(Loc::getAreaId,area)
+ .eq(Loc::getAreaId, area)
);
if (!Cools.isEmpty(locMast2)) {
loc = locMast2;
@@ -528,7 +539,7 @@
Loc locMast2 = locService.getOne(new LambdaQueryWrapper<Loc>()
.eq(Loc::getCode, shallowLoc)
.eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
- .eq(Loc::getAreaId,area)
+ .eq(Loc::getAreaId, area)
);
if (!Cools.isEmpty(locMast2)) {
loc = locMast2;
@@ -536,8 +547,8 @@
} else {
locMast2 = locService.getOne(new LambdaQueryWrapper<Loc>()
.eq(Loc::getCode, shallowLoc)
- .in(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_D.type,LocStsType.LOC_STS_TYPE_D.type)
- .eq(Loc::getAreaId,area)
+ .in(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_D.type, LocStsType.LOC_STS_TYPE_D.type)
+ .eq(Loc::getAreaId, area)
);
if (!Cools.isEmpty(locMast2)) {
loc = locMast1;
@@ -555,12 +566,12 @@
}
//鏌ヨ褰撳墠搴撲綅绫诲瀷绌哄簱浣� 灏忎簬5涓垯locmast = null
List<Loc> locTypeLocMasts = locService.list(new LambdaQueryWrapper<Loc>()
- .eq(Loc::getUseStatus,LocStsType.LOC_STS_TYPE_O.type)
- .eq(Loc::getDeviceNo, deviceNo)
+ .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
+ .eq(Loc::getChannel, channel)
.eq(Loc::getType, locTypeDto.getLocType1())
- .eq(Loc::getAreaId,area)
+ .eq(Loc::getAreaId, area)
);
- if (null !=locTypeLocMasts && locTypeLocMasts.size()<=5){
+ if (null != locTypeLocMasts && locTypeLocMasts.size() <= 5) {
loc = null;
}
// 閫掑綊鏌ヨ
@@ -568,28 +579,28 @@
// 褰撳墠宸烽亾鏃犵┖搴撲綅鏃讹紝閫掑綊璋冩暣鑷充笅涓�宸烽亾锛屾绱㈠叏閮ㄥ贩閬撴棤鏋滃悗锛岃烦鍑洪�掑綊
if (times < rowCount * 2) {
times = times + 1;
- return getLocNoCrn(deviceBind,area,sourceStaNo,matnr,batch,locTypeDto,times, ioType);
+ return getLocNoCrn(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(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);
return inTaskMsgDto;
}
- private InTaskMsgDto getLocNoCtu(DeviceBind deviceBind,Long area,Integer sourceStaNo, String matnr, String batch,LocTypeDto locTypeDto, int times,Integer ioType){
+ private InTaskMsgDto getLocNoCtu(DeviceBind deviceBind, Long area, Integer sourceStaNo, String matnr, String batch, LocTypeDto locTypeDto, int times, Integer ioType) {
if (Cools.isEmpty(matnr)) { //鐗╂枡鍙�
matnr = "";
}
@@ -607,7 +618,7 @@
.orderByAsc(Loc::getCol)
.orderByAsc(Loc::getRow)
);
- for (Loc loc2 :loc1){
+ for (Loc loc2 : loc1) {
if (!LocUtils.locMoveCheckLocTypeComplete(loc2, locTypeDto)) {
continue;
}
@@ -620,10 +631,10 @@
.eq(DeviceSite::getSite, sourceStaNo)
.eq(DeviceSite::getDeviceCode, loc.getDeviceNo())
);
- if (Cools.isEmpty(deviceSite)){
+ if (Cools.isEmpty(deviceSite)) {
deviceNo = 0;
loc = null;
- }else {
+ } else {
inTaskMsgDto.setStaNo(Integer.parseInt(deviceSite.getDeviceSite()));
}
// 閫掑綊鏌ヨ
@@ -631,14 +642,14 @@
// 褰撳墠宸烽亾鏃犵┖搴撲綅鏃讹紝閫掑綊璋冩暣鑷充笅涓�宸烽亾锛屾绱㈠叏閮ㄥ贩閬撴棤鏋滃悗锛岃烦鍑洪�掑綊
if (times < 5) {
times = times + 1;
- return getLocNoCtu(deviceBind,area,sourceStaNo,matnr,batch,locTypeDto,times, ioType);
+ return getLocNoCtu(deviceBind, area, sourceStaNo, matnr, batch, locTypeDto, times, ioType);
}
// 2.搴撲綅褰撳墠鎵�灞炲昂瀵告棤绌哄簱浣嶆椂锛岃皟鏁村昂瀵稿弬鏁帮紝鍚戜笂鍏煎妫�绱㈠簱浣�
if (locTypeDto.getLocType1() < 3) {
int i = locTypeDto.getLocType1() + 1;
locTypeDto.setLocType1(i);
- return getLocNoCtu(deviceBind,area,sourceStaNo,matnr,batch,locTypeDto,0, ioType);
+ return getLocNoCtu(deviceBind, area, sourceStaNo, matnr, batch, locTypeDto, 0, ioType);
}
throw new CoolException("娌℃湁绌哄簱浣�");
}
--
Gitblit v1.9.1