From 5f2f3c16dd396f38d4b00791340852253450ed33 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期一, 28 四月 2025 17:59:19 +0800
Subject: [PATCH] 下发任务后,修改出库单状态
---
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java | 402 +++++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 316 insertions(+), 86 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 0d8bd8b..269072b 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
@@ -25,10 +25,12 @@
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
+import java.util.stream.Collectors;
@Service
public class WcsServiceImpl implements WcsService {
@@ -54,86 +56,248 @@
private WaitPakinItemService waitPakinItemService;
@Override
+ @Transactional(rollbackFor = Exception.class)
public InTaskMsgDto createInTask(TaskInParam param, Long loginUserId) {
+ // 鑾峰彇搴撲綅鍙�
InTaskMsgDto locNo = getLocNo(param);
- DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>()
- .eq(DeviceSite::getSite, param.getSourceStaNo())
- .eq(DeviceSite::getType,param.getIoType())
- );
- if (Objects.isNull(deviceSite)) {
- throw new CoolException("绔欑偣涓嶅瓨鍦紒锛�");
- }
- WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>()
- .eq(WaitPakin::getBarcode, param.getBarcode())
- .eq(WaitPakin::getIoStatus, Short.parseShort(PakinIOStatus.PAKIN_IO_STATUS_DONE.val)));
- if (Cools.isEmpty(waitPakin)) {
- throw new CoolException("璇锋鏌ョ粍鎷栫姸鎬佹槸鍚﹀畬鎴愶紒锛�");
- }
+ // 楠岃瘉璁惧绔欑偣
+ DeviceSite deviceSite = validateDeviceSite(param);
- List<TaskItem> taskItems = new ArrayList<>();
- String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_TASK_CODE, null);
- if (StringUtils.isBlank(ruleCode)) {
- throw new CoolException("缂栫爜閿欒锛氳纭缂栫爜銆孲YS_TASK_CODE銆嶆槸鍚﹀凡鐢熸垚!!");
- }
- Task task = new Task();
- task.setTaskCode(ruleCode)
- .setTaskStatus(TaskStsType.GENERATE_IN.id.shortValue())
- .setTaskType(TaskType.TASK_TYPE_IN.type.shortValue())
- .setTargLoc(locNo.getLocNo())
- .setBarcode(waitPakin.getBarcode())
- .setTargSite(deviceSite.getDeviceSite())
- .setCreateBy(loginUserId)
- .setUpdateBy(loginUserId)
- .setOrgSite(param.getSourceStaNo().toString());
+ // 楠岃瘉缁勬嫋鐘舵��
+ WaitPakin waitPakin = validateWaitPakin(param.getBarcode());
+ // 鐢熸垚浠诲姟缂栫爜
+ String ruleCode = generateTaskCode();
+ // 鍒涘缓骞朵繚瀛樹换鍔�
+ Task task = createTask(ruleCode, locNo.getLocNo(), waitPakin.getBarcode(),
+ deviceSite.getDeviceSite(), param.getSourceStaNo().toString(), loginUserId);
+ // 鏇存柊搴撲綅鐘舵��
+ updateLocStatus(task.getTargLoc(), waitPakin.getBarcode());
- if (!taskService.save(task)) {
- throw new CoolException("浠诲姟淇濆瓨澶辫触锛侊紒");
- }
- if (!locService.update(new LambdaUpdateWrapper<Loc>().eq(Loc::getCode, task.getTargLoc())
- .set(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_S.type).set(Loc::getBarcode, waitPakin.getBarcode()))) {
- throw new CoolException("搴撲綅棰勭害澶辫触锛侊紒");
- }
- /**鑾峰彇缁勬嫋鏄庣粏**/
- List<WaitPakinItem> waitPakinItems = waitPakinItemService.list(new LambdaQueryWrapper<WaitPakinItem>().eq(WaitPakinItem::getPakinId, waitPakin.getId()));
- if (waitPakinItems.isEmpty()) {
- throw new CoolException("鏁版嵁閿欒锛氱粍鎷栨槑缁嗕笉瀛樺湪");
- }
- 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("鏁版嵁閿欒: 鍗曟嵁涓嶅瓨鍦紒锛�");
-// }
- taskItem.setTaskId(task.getId())
- .setOrderType(OrderType.ORDER_RECEIPT.type)
- .setSource(item.getId())
- .setTrackCode(item.getTrackCode())
- .setCreateBy(loginUserId)
- .setUpdateBy(loginUserId)
- .setOrderId(item.getAsnId())
- .setOrderItemId(item.getAsnItemId());
- taskItems.add(taskItem);
- });
- if (!taskItemService.saveBatch(taskItems)) {
- throw new CoolException("浠诲姟鏄庣粏淇濆瓨澶辫触锛侊紒");
- }
+ // 鑾峰彇骞堕獙璇佺粍鎷栨槑缁�
+ List<WaitPakinItem> waitPakinItems = getWaitPakinItems(waitPakin.getId());
+ // 鍒涘缓骞朵繚瀛樹换鍔℃槑缁�
+ saveTaskItems(task.getId(), waitPakinItems, loginUserId);
- if (!waitPakinService.update(new LambdaUpdateWrapper<WaitPakin>()
- .eq(WaitPakin::getBarcode, param.getBarcode())
- .set(WaitPakin::getUpdateBy, loginUserId)
- .set(WaitPakin::getCreateBy, loginUserId)
- .set(WaitPakin::getIoStatus, PakinIOStatus.PAKIN_IO_STATUS_TASK_EXCE.val))) {
- throw new CoolException("缁勬墭鐘舵�佷慨鏀瑰け璐ワ紒锛�");
- }
+ // 鏇存柊缁勬墭鐘舵��
+ updateWaitPakinStatus(param.getBarcode(), loginUserId);
+
+ // 璁剧疆宸ヤ綔鍗曞彿骞惰繑鍥�
locNo.setWorkNo(ruleCode);
return locNo;
}
+
+ /**
+ * 楠岃瘉璁惧绔欑偣
+ */
+ private DeviceSite validateDeviceSite(TaskInParam param) {
+ DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>()
+ .eq(DeviceSite::getSite, param.getSourceStaNo())
+ .eq(DeviceSite::getType, param.getIoType()));
+
+ if (Objects.isNull(deviceSite)) {
+ throw new CoolException("绔欑偣涓嶅瓨鍦紒锛�");
+ }
+ return deviceSite;
+ }
+
+ /**
+ * 楠岃瘉缁勬嫋鐘舵��
+ */
+ 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)));
+
+ if (Cools.isEmpty(waitPakin)) {
+ throw new CoolException("璇锋鏌ョ粍鎷栫姸鎬佹槸鍚﹀畬鎴愶紒锛�");
+ }
+ return waitPakin;
+ }
+
+ /**
+ * 鐢熸垚浠诲姟缂栫爜
+ */
+ private String generateTaskCode() {
+ String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_TASK_CODE, null);
+ if (StringUtils.isBlank(ruleCode)) {
+ throw new CoolException("缂栫爜閿欒锛氳纭缂栫爜銆孲YS_TASK_CODE銆嶆槸鍚﹀凡鐢熸垚!!");
+ }
+ return ruleCode;
+ }
+
+ /**
+ * 鍒涘缓骞朵繚瀛樹换鍔�
+ */
+ private Task createTask(String ruleCode, String targetLoc, String barcode,
+ 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())
+ .setTargLoc(targetLoc)
+ .setBarcode(barcode)
+ .setTargSite(targetSite)
+ .setCreateBy(loginUserId)
+ .setUpdateBy(loginUserId)
+ .setOrgSite(sourceSiteNo);
+
+ if (!taskService.save(task)) {
+ throw new CoolException("浠诲姟淇濆瓨澶辫触锛侊紒");
+ }
+ return task;
+ }
+
+ /**
+ * 鏇存柊搴撲綅鐘舵��
+ */
+ private void updateLocStatus(String locCode, String barcode) {
+ boolean updated = locService.update(new LambdaUpdateWrapper<Loc>()
+ .eq(Loc::getCode, locCode)
+ .set(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_S.type)
+ .set(Loc::getBarcode, barcode));
+
+ if (!updated) {
+ throw new CoolException("搴撲綅棰勭害澶辫触锛侊紒");
+ }
+ }
+
+ /**
+ * 鑾峰彇骞堕獙璇佺粍鎷栨槑缁�
+ */
+ private List<WaitPakinItem> getWaitPakinItems(Long pakinId) {
+ List<WaitPakinItem> waitPakinItems = waitPakinItemService.list(
+ new LambdaQueryWrapper<WaitPakinItem>().eq(WaitPakinItem::getPakinId, pakinId));
+
+ if (waitPakinItems.isEmpty()) {
+ throw new CoolException("鏁版嵁閿欒锛氱粍鎷栨槑缁嗕笉瀛樺湪");
+ }
+ return waitPakinItems;
+ }
+
+ /**
+ * 鍒涘缓骞朵繚瀛樹换鍔℃槑缁�
+ */
+ private void saveTaskItems(Long taskId, List<WaitPakinItem> waitPakinItems, Long loginUserId) {
+ List<TaskItem> taskItems = waitPakinItems.stream().map(item -> {
+ TaskItem taskItem = new TaskItem();
+ BeanUtils.copyProperties(item, taskItem);
+
+ return taskItem.setTaskId(taskId)
+ .setOrderType(OrderType.ORDER_RECEIPT.type)
+ .setSource(item.getId())
+ .setTrackCode(item.getTrackCode())
+ .setCreateBy(loginUserId)
+ .setUpdateBy(loginUserId)
+ .setOrderId(item.getAsnId())
+ .setOrderItemId(item.getAsnItemId());
+ }).collect(Collectors.toList());
+
+ if (!taskItemService.saveBatch(taskItems)) {
+ throw new CoolException("浠诲姟鏄庣粏淇濆瓨澶辫触锛侊紒");
+ }
+ }
+
+ /**
+ * 鏇存柊缁勬墭鐘舵��
+ */
+ private void updateWaitPakinStatus(String barcode, Long loginUserId) {
+ boolean updated = waitPakinService.update(new LambdaUpdateWrapper<WaitPakin>()
+ .eq(WaitPakin::getBarcode, barcode)
+ .set(WaitPakin::getUpdateBy, loginUserId)
+ .set(WaitPakin::getCreateBy, loginUserId)
+ .set(WaitPakin::getIoStatus, PakinIOStatus.PAKIN_IO_STATUS_TASK_EXCE.val));
+
+ if (!updated) {
+ throw new CoolException("缁勬墭鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+ }
+ }
+
+// @Override
+// public InTaskMsgDto createInTask(TaskInParam param, Long loginUserId) {
+// InTaskMsgDto locNo = getLocNo(param);
+// DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>()
+// .eq(DeviceSite::getSite, param.getSourceStaNo())
+// .eq(DeviceSite::getType,param.getIoType())
+// );
+// if (Objects.isNull(deviceSite)) {
+// throw new CoolException("绔欑偣涓嶅瓨鍦紒锛�");
+// }
+//
+// WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>()
+// .eq(WaitPakin::getBarcode, param.getBarcode())
+// .eq(WaitPakin::getIoStatus, Short.parseShort(PakinIOStatus.PAKIN_IO_STATUS_DONE.val)));
+// if (Cools.isEmpty(waitPakin)) {
+// throw new CoolException("璇锋鏌ョ粍鎷栫姸鎬佹槸鍚﹀畬鎴愶紒锛�");
+// }
+//
+// List<TaskItem> taskItems = new ArrayList<>();
+// String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_TASK_CODE, null);
+// if (StringUtils.isBlank(ruleCode)) {
+// throw new CoolException("缂栫爜閿欒锛氳纭缂栫爜銆孲YS_TASK_CODE銆嶆槸鍚﹀凡鐢熸垚!!");
+// }
+// Task task = new Task();
+// task.setTaskCode(ruleCode)
+// .setTaskStatus(TaskStsType.GENERATE_IN.id.shortValue())
+// .setTaskType(TaskType.TASK_TYPE_IN.type.shortValue())
+// .setTargLoc(locNo.getLocNo())
+// .setBarcode(waitPakin.getBarcode())
+// .setTargSite(deviceSite.getDeviceSite())
+// .setCreateBy(loginUserId)
+// .setUpdateBy(loginUserId)
+// .setOrgSite(param.getSourceStaNo().toString());
+//
+//
+//
+//
+// if (!taskService.save(task)) {
+// throw new CoolException("浠诲姟淇濆瓨澶辫触锛侊紒");
+// }
+// if (!locService.update(new LambdaUpdateWrapper<Loc>().eq(Loc::getCode, task.getTargLoc())
+// .set(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_S.type).set(Loc::getBarcode, waitPakin.getBarcode()))) {
+// throw new CoolException("搴撲綅棰勭害澶辫触锛侊紒");
+// }
+// /**鑾峰彇缁勬嫋鏄庣粏**/
+// List<WaitPakinItem> waitPakinItems = waitPakinItemService.list(new LambdaQueryWrapper<WaitPakinItem>().eq(WaitPakinItem::getPakinId, waitPakin.getId()));
+// if (waitPakinItems.isEmpty()) {
+// throw new CoolException("鏁版嵁閿欒锛氱粍鎷栨槑缁嗕笉瀛樺湪");
+// }
+// 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("鏁版嵁閿欒: 鍗曟嵁涓嶅瓨鍦紒锛�");
+//// }
+// taskItem.setTaskId(task.getId())
+// .setOrderType(OrderType.ORDER_RECEIPT.type)
+// .setSource(item.getId())
+// .setTrackCode(item.getTrackCode())
+// .setCreateBy(loginUserId)
+// .setUpdateBy(loginUserId)
+// .setOrderId(item.getAsnId())
+// .setOrderItemId(item.getAsnItemId());
+// taskItems.add(taskItem);
+// });
+// if (!taskItemService.saveBatch(taskItems)) {
+// throw new CoolException("浠诲姟鏄庣粏淇濆瓨澶辫触锛侊紒");
+// }
+//
+//
+// if (!waitPakinService.update(new LambdaUpdateWrapper<WaitPakin>()
+// .eq(WaitPakin::getBarcode, param.getBarcode())
+// .set(WaitPakin::getUpdateBy, loginUserId)
+// .set(WaitPakin::getCreateBy, loginUserId)
+// .set(WaitPakin::getIoStatus, PakinIOStatus.PAKIN_IO_STATUS_TASK_EXCE.val))) {
+// throw new CoolException("缁勬墭鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+// }
+// locNo.setWorkNo(ruleCode);
+// return locNo;
+// }
public InTaskMsgDto getLocNo(TaskInParam param) {
String matnr = null; String batch = null;
@@ -151,7 +315,11 @@
if (Cools.isEmpty(deviceSites)) {
throw new CoolException("鏈壘鍒扮珯鐐硅矾寰勪俊鎭�");
}
- WarehouseAreas warehouseArea = warehouseAreasService.getById(param.getArea());
+ DeviceBind deviceBind = deviceBindService.getById(LocUtils.getAreaType(param.getSourceStaNo()));
+ if (Cools.isEmpty(deviceBind)) {
+ throw new CoolException("鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛�===>搴撲綅瑙勫垯鏈煡");
+ }
+ WarehouseAreas warehouseArea = warehouseAreasService.getById(deviceBind.getTypeId());
if (Cools.isEmpty(warehouseArea)) {
throw new CoolException("鏈壘鍒版墍灞炲簱鍖轰俊鎭�");
}
@@ -159,17 +327,18 @@
InTaskMsgDto dto = null;
switch (warehouseArea.getType()) {
case "CRN": //鍫嗗灈鏈�
- dto = getLocNoCrn(param.getArea(), 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": //鍥涘悜搴�
+ case "CTU": //ctu
+ dto = getLocNoCtu(deviceBind,warehouseArea.getId(), param.getSourceStaNo(), matnr,batch, locTypeDto, 0, param.getIoType());
break;
}
return dto;
}
- private InTaskMsgDto getLocNoCrn(Integer 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 = "";
}
@@ -184,10 +353,7 @@
Loc loc = null; // 鐩爣搴撲綅
InTaskMsgDto inTaskMsgDto = new InTaskMsgDto();
- DeviceBind deviceBind = deviceBindService.getById(LocUtils.getAreaType(sourceStaNo));
- if (Cools.isEmpty(deviceBind)) {
- throw new CoolException("鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛�===>搴撲綅瑙勫垯鏈煡");
- }
+
int sRow = deviceBind.getStartRow();
int eRow = deviceBind.getEndRow();
int deviceQty = deviceBind.getDeviceQty();
@@ -220,7 +386,7 @@
String shallowLocNo = LocUtils.getShallowLoc(slaveProperties, loc1.getCode());
// 妫�娴嬬洰鏍囧簱浣嶆槸鍚︿负绌哄簱浣�
Loc shallowLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode,shallowLocNo));
- if (shallowLoc != null && shallowLoc.getUseStatus().equals("O")) {
+ if (shallowLoc != null && shallowLoc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) {
if (LocUtils.locMoveCheckLocTypeComplete(shallowLoc, locTypeDto)) {
loc = shallowLoc;
deviceNo = shallowLoc.getDeviceNo();
@@ -279,7 +445,7 @@
List<Loc> locMasts = null;
locMasts = locService.list(new LambdaQueryWrapper<Loc>()
.eq(Loc::getRow, nearRow)
- .eq(Loc::getUseStatus, "O")
+ .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
.eq(Loc::getType, locTypeDto.getLocType1())
.eq(Loc::getAreaId,area)
.orderByAsc(Loc::getLev)
@@ -294,7 +460,7 @@
//鐩镐技鐗╂枡鎵撳紑锛屽垽鏂繁搴撲綅鏈夋病鏈夎揣锛屾病璐у氨鏀炬繁搴撲綅锛屾湁璐у氨涓嶆搷浣�
Loc locMast2 = locService.getOne(new LambdaQueryWrapper<Loc>()
.eq(Loc::getRow, shallowLoc)
- .eq(Loc::getUseStatus, "O")
+ .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
.eq(Loc::getAreaId,area)
);
if (!Cools.isEmpty(locMast2)) {
@@ -305,7 +471,7 @@
//鐩镐技鐗╂枡鍏抽棴锛屽垽鏂繁搴撲綅鏈夋病鏈夎揣锛屾湁璐у氨鏀炬祬搴撲綅锛屾棤璐у氨涓嶆搷浣�
Loc locMast2 = locService.getOne(new LambdaQueryWrapper<Loc>()
.eq(Loc::getCode, shallowLoc)
- .in(Loc::getUseStatus, "D","F")
+ .in(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_D.type,LocStsType.LOC_STS_TYPE_F.type)
.eq(Loc::getAreaId,area)
);
if (!Cools.isEmpty(locMast2)) {
@@ -314,7 +480,7 @@
}else{
locMast2 = locService.getOne(new LambdaQueryWrapper<Loc>()
.eq(Loc::getCode, shallowLoc)
- .eq(Loc::getUseStatus, "O")
+ .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
.eq(Loc::getAreaId,area)
);
if (!Cools.isEmpty(locMast2)) {
@@ -333,7 +499,7 @@
String shallowLoc = LocUtils.getDeepLoc(slaveProperties, locMast1.getCode());
Loc locMast2 = locService.getOne(new LambdaQueryWrapper<Loc>()
.eq(Loc::getCode, shallowLoc)
- .eq(Loc::getUseStatus, "O")
+ .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
.eq(Loc::getAreaId,area)
);
if (!Cools.isEmpty(locMast2)) {
@@ -342,7 +508,7 @@
} else {
locMast2 = locService.getOne(new LambdaQueryWrapper<Loc>()
.eq(Loc::getCode, shallowLoc)
- .in(Loc::getUseStatus, "D","F")
+ .in(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_D.type,LocStsType.LOC_STS_TYPE_D.type)
.eq(Loc::getAreaId,area)
);
if (!Cools.isEmpty(locMast2)) {
@@ -361,7 +527,7 @@
}
//鏌ヨ褰撳墠搴撲綅绫诲瀷绌哄簱浣� 灏忎簬5涓垯locmast = null
List<Loc> locTypeLocMasts = locService.list(new LambdaQueryWrapper<Loc>()
- .eq(Loc::getUseStatus, "O")
+ .eq(Loc::getUseStatus,LocStsType.LOC_STS_TYPE_O.type)
.eq(Loc::getDeviceNo, deviceNo)
.eq(Loc::getType, locTypeDto.getLocType1())
.eq(Loc::getAreaId,area)
@@ -370,18 +536,18 @@
loc = null;
}
// 閫掑綊鏌ヨ
- if (Cools.isEmpty(loc) || !loc.getUseStatus().equals("O")) {
+ if (Cools.isEmpty(loc) || !loc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) {
// 褰撳墠宸烽亾鏃犵┖搴撲綅鏃讹紝閫掑綊璋冩暣鑷充笅涓�宸烽亾锛屾绱㈠叏閮ㄥ贩閬撴棤鏋滃悗锛岃烦鍑洪�掑綊
if (times < rowCount * 2) {
times = times + 1;
- return getLocNoCrn(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(area,sourceStaNo,matnr,batch,locTypeDto,0, ioType);
+ return getLocNoCrn(deviceBind,area,sourceStaNo,matnr,batch,locTypeDto,0, ioType);
}
throw new CoolException("娌℃湁绌哄簱浣�");
}
@@ -394,4 +560,68 @@
inTaskMsgDto.setLocNo(locNo);
return inTaskMsgDto;
}
+
+ private InTaskMsgDto getLocNoCtu(DeviceBind deviceBind,Long area,Integer sourceStaNo, String matnr, String batch,LocTypeDto locTypeDto, int times,Integer ioType){
+ if (Cools.isEmpty(matnr)) { //鐗╂枡鍙�
+ matnr = "";
+ }
+ if (Cools.isEmpty(batch)) { //鎵规
+ batch = "";
+ }
+ int deviceNo = 0;
+ Loc loc = new Loc();
+ InTaskMsgDto inTaskMsgDto = new InTaskMsgDto();
+ List<Loc> loc1 = locService.list(new LambdaQueryWrapper<Loc>()
+ .eq(Loc::getAreaId, area)
+ .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
+ .eq(Loc::getType, locTypeDto.getLocType1())
+ .orderByAsc(Loc::getRow)
+ .orderByAsc(Loc::getCol)
+ .orderByAsc(Loc::getLev)
+ );
+ for (Loc loc2 :loc1){
+ if (!LocUtils.locMoveCheckLocTypeComplete(loc2, locTypeDto)) {
+ continue;
+ }
+ loc = loc2;
+ break;
+ }
+ //鏌ユ壘璺緞
+ DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>()
+ .eq(DeviceSite::getType, ioType)
+ .eq(DeviceSite::getSite, sourceStaNo)
+ .eq(DeviceSite::getDeviceCode, loc.getDeviceNo())
+ );
+ if (Cools.isEmpty(deviceSite)){
+ deviceNo = 0;
+ loc = null;
+ }else {
+ inTaskMsgDto.setStaNo(Integer.parseInt(deviceSite.getDeviceSite()));
+ }
+ // 閫掑綊鏌ヨ
+ if (Cools.isEmpty(loc) || !loc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) {
+ // 褰撳墠宸烽亾鏃犵┖搴撲綅鏃讹紝閫掑綊璋冩暣鑷充笅涓�宸烽亾锛屾绱㈠叏閮ㄥ贩閬撴棤鏋滃悗锛岃烦鍑洪�掑綊
+ if (times < 5) {
+ times = times + 1;
+ 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);
+ }
+ throw new CoolException("娌℃湁绌哄簱浣�");
+ }
+
+ String locNo = loc.getCode();
+
+ // 杩斿洖dto
+ inTaskMsgDto.setDeviceNo(deviceNo);
+ inTaskMsgDto.setSourceStaNo(sourceStaNo);
+// inTaskMsgDto.setStaNo();
+ inTaskMsgDto.setLocNo(locNo);
+ return inTaskMsgDto;
+ }
}
--
Gitblit v1.9.1