From d4bd7c7bc326b68b622b8b1a7148181712969b50 Mon Sep 17 00:00:00 2001
From: 1 <1@123>
Date: 星期二, 03 二月 2026 11:05:20 +0800
Subject: [PATCH] lsh#
---
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java | 248 ++++++++++++++++++++++++++++++-------------------
1 files changed, 151 insertions(+), 97 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 9de8f34..fc647cb 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
@@ -31,6 +31,8 @@
import com.vincent.rsf.server.manager.service.impl.LocServiceImpl;
import com.vincent.rsf.server.system.constant.SerialRuleCode;
import com.vincent.rsf.server.manager.enums.LocStsType;
+import com.vincent.rsf.server.system.entity.*;
+import com.vincent.rsf.server.system.service.impl.*;
import com.vincent.rsf.server.system.utils.SerialRuleUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@@ -82,6 +84,16 @@
private RestTemplate restTemplate;
@Autowired
private RemotesInfoProperties.RcsApi rcsApi;
+ @Autowired
+ private UserServiceImpl userService;
+ @Autowired
+ private TaskInstanceServiceImpl taskInstanceService;
+ @Autowired
+ private TaskInstanceNodeServiceImpl taskInstanceNodeService;
+ @Autowired
+ private FlowStepInstanceServiceImpl flowStepInstanceService;
+ @Autowired
+ private FlowInstanceServiceImpl flowInstanceService;
@Override
@@ -201,7 +213,7 @@
String targetSite, String sourceSiteNo, Long loginUserId) {
Task task = new Task();
task.setTaskCode(ruleCode)
- .setTaskStatus(TaskStsType.GENERATE_IN.id)
+ .setTaskStatus(TaskStsType.MISSION_INITIAL.id)
.setTaskType(TaskType.TASK_TYPE_IN.type)
.setWarehType(WarehType.WAREHOUSE_TYPE_CRN.val)
.setTargLoc(targetLoc)
@@ -471,11 +483,42 @@
}
Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskCode, params.getSeqNum()));
if (Objects.isNull(task)) {
- throw new CoolException("浠诲姟涓嶅瓨鍦ㄥ彲宸茬粨鏉燂紒锛�");
+ throw new CoolException("浠诲姟涓嶅瓨鍦ㄥ彲浠ョ粨鏉燂紒锛�");
}
+ FlowStepInstance flowStepInstance = flowStepInstanceService.getOne(new LambdaQueryWrapper<FlowStepInstance>()
+ .eq(FlowStepInstance::getTaskNo, task.getTaskCode())
+ .eq(FlowStepInstance::getWmsNowTaskStatus, task.getTaskStatus())
+ .eq(FlowStepInstance::getStatus, (short) 1).last("limit 1"));
+ if (Cools.isEmpty(flowStepInstance)){
+ return R.error(task.getTaskCode()+"浠诲姟鍙�==>鏈煡璇㈠埌鐩稿叧浠诲姟鎵ц娴佺▼锛侊紒锛�");
+ }
+ if (!MissionStepType.getTaskRECEIVE().contains(flowStepInstance.getStepType())){
+ return R.error(task.getTaskCode()+"浠诲姟鍙�==>鐩稿叧浠诲姟绫诲瀷闈炴帴鏀跺瀷锛屾楠ら敊涔憋紒锛侊紒");
+ }
+
+ FlowInstance flowInstance = flowInstanceService.getById(flowStepInstance.getFlowInstanceId());
+ if (Cools.isEmpty(flowInstance)) {
+ return R.error(task.getTaskCode()+"浠诲姟鍙�==>鏈煡璇㈠埌鐩稿叧浠诲姟鎵ц娴佺▼锛侊紒锛�");
+ }
+ List<FlowStepInstance> flowStepInstances = flowStepInstanceService.list(new LambdaQueryWrapper<FlowStepInstance>()
+ .eq(FlowStepInstance::getFlowInstanceId, flowInstance.getId()).eq(FlowStepInstance::getStatus, (short) 0));
+ flowInstance.setStatus(flowStepInstances.isEmpty()? (short) 2:(short) 1);
+ TaskInstanceNode taskInstanceNode = taskInstanceNodeService.getById(flowInstance.getNodeInstanceId());
+ if (Cools.isEmpty(taskInstanceNode)) {
+ return R.error(task.getTaskCode()+"浠诲姟鍙�==>鏈煡璇㈠埌鐩稿叧浠诲姟鎵ц娴佺▼锛侊紒锛�");
+ }
+ taskInstanceNode.setStatus(flowInstance.getStatus());
+ TaskInstance taskInstance = taskInstanceService.getById(flowInstance.getTaskId());
+ if (Cools.isEmpty(taskInstance)) {
+ return R.error(task.getTaskCode()+"浠诲姟鍙�==>鏈煡璇㈠埌鐩稿叧浠诲姟鎵ц娴佺▼锛侊紒锛�");
+ }
+
/**鏂欑鎼繍涓紝 淇敼绔欑偣鐘舵��*/
if (params.getEventType().equals(CallBackEvent.CALL_BACK_EVENT_BIN.event)) {
+ if (!flowStepInstance.getStepType().equals(MissionStepType.MISSION_STEP_TYPE_RECEIVE_BIN.type)) {
+ return R.error(task.getTaskCode()+"浠诲姟鍙�==>鏈煡璇㈠埌鐩稿叧浠诲姟鎵ц娴佺▼锛侊紒锛�");
+ }
if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type)
|| task.getTaskType().equals(TaskType.TASK_TYPE_PICK_IN.type)
|| task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_IN.type)
@@ -500,92 +543,47 @@
|| task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_OUT.type)
|| task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type)
|| task.getTaskType().equals(TaskType.TASK_TYPE_EMPTY_OUT.type)) {
-
-
- /**淇敼鍑哄簱绔欑偣鐘舵��*/
- BasStation station = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
- .eq(BasStation::getStationName, task.getOrgLoc()));
- if (Objects.isNull(station)) {
- throw new CoolException("鏁版嵁閿欒锛岀珯鐐逛笉瀛樺湪锛侊紒");
- }
- if (station.getType().equals(StationTypeEnum.STATION_TYPE_NORMAL.type)) {
- station.setUseStatus(LocStsType.LOC_STS_TYPE_O.type);
- station.setBarcode(null);
- if (!basStationService.updateById(station)) {
- throw new CoolException("绔欑偣鐘舵�佷慨鏀瑰け璐ワ紒锛�");
- }
- }
+// /**淇敼鍑哄簱绔欑偣鐘舵��*/
+// BasStation station = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
+// .eq(BasStation::getStationName, task.getOrgLoc()));
+// if (Objects.isNull(station)) {
+// throw new CoolException("鏁版嵁閿欒锛岀珯鐐逛笉瀛樺湪锛侊紒");
+// }
+// if (station.getType().equals(StationTypeEnum.STATION_TYPE_NORMAL.type)) {
+// station.setUseStatus(LocStsType.LOC_STS_TYPE_O.type);
+// station.setBarcode(null);
+// if (!basStationService.updateById(station)) {
+// throw new CoolException("绔欑偣鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+// }
+// }
}
/**鍙栫瀹屾垚锛� 淇敼浠诲姟鐘舵��*/
- } else
- if (params.getEventType().equals(CallBackEvent.CALL_BACK_EVENT_END.event)) {
- if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type)
- || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_IN.type)
- || task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_IN.type)
- || task.getTaskType().equals(TaskType.TASK_TYPE_EMPTY_IN.type)
- || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_IN.type)
- || task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) {
-
- if (!task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) {
- BasStation station = basStationService.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, task.getOrgSite()));
- if (Objects.isNull(station)) {
- throw new CoolException("鏁版嵁閿欒锛岀珯鐐逛笉瀛樺湪锛侊紒");
- }
- if (station.getType().equals(StationTypeEnum.STATION_TYPE_NORMAL.type)) {
- station.setUseStatus(LocStsType.LOC_STS_TYPE_O.type);
- if (!basStationService.updateById(station)) {
- throw new CoolException("绔欑偣鐘舵�佷慨鏀瑰け璐ワ紒锛�");
- }
- }
- }
-
- if (!taskService.update(new LambdaUpdateWrapper<Task>()
- .lt(Task::getTaskStatus, TaskStsType.COMPLETE_IN.id)
- .eq(Task::getTaskCode, task.getTaskCode())
- .set(Task::getTaskStatus, TaskStsType.COMPLETE_IN.id))) {
- throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
- }
- } else if (task.getTaskType().equals(TaskType.TASK_TYPE_OUT.type)
- || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_AGAIN_OUT.type)
- || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_OUT.type)
- || task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type)
- || task.getTaskType().equals(TaskType.TASK_TYPE_EMPTY_OUT.type)) {
-
-
- /**淇敼鍑哄簱绔欑偣鐘舵��*/
- BasStation station = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
- .eq(BasStation::getStationName, task.getTargSite()));
- if (Objects.isNull(station)) {
- throw new CoolException("鏁版嵁閿欒锛岀珯鐐逛笉瀛樺湪锛侊紒");
- }
- if (station.getType().equals(StationTypeEnum.STATION_TYPE_NORMAL.type)) {
- station.setUseStatus(LocStsType.LOC_STS_TYPE_F.type);
- if (!basStationService.updateById(station)) {
- throw new CoolException("绔欑偣鐘舵�佷慨鏀瑰け璐ワ紒锛�");
- }
- }
-
- if (!taskService.update(new LambdaUpdateWrapper<Task>().eq(Task::getTaskCode, task.getTaskCode())
- .lt(Task::getTaskStatus, TaskStsType.COMPLETE_OUT.id)
- .set(Task::getTaskStatus, TaskStsType.AWAIT.id))) {
- throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
- }
+ } else if (params.getEventType().equals(CallBackEvent.CALL_BACK_EVENT_END.event)) {
+ if (flowStepInstance.getStepType().equals(MissionStepType.MISSION_STEP_TYPE_RECEIVE_BIN.type)) {
+ return R.error(task.getTaskCode()+"浠诲姟鍙�==>璇峰厛鍑虹珯璇锋眰锛侊紒锛�");
}
- } else if (params.getEventType().equals(CallBackEvent.CALL_BACK_EVENT_TRANSFER.event)) {
- if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type)
- || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_IN.type)
- || task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_IN.type)
- || task.getTaskType().equals(TaskType.TASK_TYPE_EMPTY_IN.type)
- || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_IN.type)
- || task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) {
- if (!taskService.update(new LambdaUpdateWrapper<Task>()
- .lt(Task::getTaskStatus, TaskStsType.WCS_EXECUTE_IN.id)
- .eq(Task::getTaskCode, task.getTaskCode())
- .set(Task::getOrgSite, task.getTargSite())
- .set(Task::getTaskStatus, TaskStsType.WCS_EXECUTE_IN.id))) {
- throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
- }
+ }
+
+
+ task.setTaskStatus(flowStepInstance.getWmsNextTaskStatus());
+ flowStepInstance.setStatus((short)3);
+
+ flowStepInstanceService.updateById(flowStepInstance);
+ taskService.updateById(task);
+ if (flowStepInstance.getWmsNextTaskStatus() != 9999) {
+ FlowStepInstance nextFlowStepInstance = flowStepInstanceService.getOne(new LambdaQueryWrapper<FlowStepInstance>()
+ .eq(FlowStepInstance::getStatus, (short)0)
+ .eq(FlowStepInstance::getStepOrder, flowStepInstance.getStepOrder() + 1)
+ .eq(FlowStepInstance::getWmsNowTaskStatus, flowStepInstance.getWmsNextTaskStatus()));
+ if (Cools.isEmpty(nextFlowStepInstance)) {
+ return R.error(task.getTaskCode()+"浠诲姟鍙�==>鏈煡璇㈠埌鐩稿叧浠诲姟鎵ц娴佺▼锛侊紒锛�");
}
+ nextFlowStepInstance.setStatus((short)1);
+
+ flowStepInstanceService.updateById(nextFlowStepInstance);
+ } else {
+ taskInstance.setStatus((short)2);
+ taskInstanceService.updateById(taskInstance);
}
log.info(JSONObject.toJSONString(params));
return R.ok(JSONObject.toJSONString(params));
@@ -991,12 +989,12 @@
throw new CoolException(params.getSourceStaNo()+"绔欑偣涓嶅瓨鍦紒锛�");
}
if (!basStation.getType().equals(StationTypeEnum.STATION_TYPE_MUTI.type)) {
- throw new CoolException(params.getSourceStaNo()+"绔欑偣闈炲厜鐢电珯鐐癸紒锛佽浣跨敤PDA缁戝畾鍏ュ簱");
+ throw new CoolException(params.getSourceStaNo()+"绔欑偣闈炴櫤鑳界珯鐐癸紒锛佽浣跨敤PDA缁戝畾鍏ュ簱");
}
Task one = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, params.getBarcode()));
if (!Cools.isEmpty(one)) {
- if (!one.getTaskStatus().equals(TaskStsType.WCS_EXECUTE_IN.id)) {
- return R.error("浠诲姟宸插瓨鍦ㄤ絾鏄姸鎬佷笉涓�鑷达紒锛侊紒").add("浠诲姟宸插瓨鍦ㄤ絾鏄姸鎬佷笉涓�鑷达紒锛侊紒");
+ if (one.getTaskStatus().equals(TaskStsType.MISSION_TRANSFER.id)) {
+ return R.error("浠诲姟宸插瓨鍦ㄤ絾鏄姸鎬佷笉涓�鑷达紒锛侊紒").add("浠诲姟宸插瓨鍦ㄤ絾鏄姸鎬佷笉涓�鑷达紒锛侊紒浠诲姟宸插畬鎴愶紒锛侊紒");
}
InTaskWcsReportParam inTaskWcsReportParam = new InTaskWcsReportParam();
inTaskWcsReportParam.setTaskNo(one.getTaskCode());
@@ -1011,7 +1009,13 @@
GenerateTaskParams taskParams = new GenerateTaskParams();
taskParams.setWaitPakins(waitPakins)
.setSiteId(basStation.getId());
- R r = taskService.generateTasksWcs(taskParams, 111L,params.getRowList());//lsh寰呬慨鏀� WCS鐢ㄦ埛淇℃伅
+
+ User wcs = userService.getByUsername("wcs", 1L);
+ Long wcsId = 1111L;
+ if (!Cools.isEmpty(wcs)) {
+ wcsId = wcs.getId();
+ }
+ R r = taskService.generateTasksWcs(taskParams, wcsId,params.getRowList());
if (r.get("msg").equals("浠诲姟鐢熸垚瀹屾瘯锛�")) {
one = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, params.getBarcode()));
InTaskWcsReportParam inTaskWcsReportParam = new InTaskWcsReportParam();
@@ -1036,18 +1040,68 @@
if (Objects.isNull(params)) {
return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
}
- Task one = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskCode, params.getSuperTaskNo()));
- if (Cools.isEmpty(one)) {
+ Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskCode, params.getSuperTaskNo()));
+ if (Cools.isEmpty(task)) {
return R.error(params.getSuperTaskNo()+"浠诲姟鍙�==>鏈煡璇㈠埌鐩稿叧浠诲姟锛侊紒锛�");
}
if (params.getMsgType().equals(WcsMsgTypeEvent.TASK_COMPLETE.event)){
- if (!Cools.isEmpty(one)) {
- one.setTaskStatus(one.getTaskType() < 100 ? TaskStsType.COMPLETE_IN.id : TaskStsType.AWAIT.id);
- if (!taskService.updateById(one)) {
-// throw new CoolException("瀹屾垚浠诲姟澶辫触");
- return R.error("瀹屾垚浠诲姟澶辫触").add(one);
+ if (!Cools.isEmpty(task)) {
+ FlowStepInstance flowStepInstance = flowStepInstanceService.getOne(new LambdaQueryWrapper<FlowStepInstance>()
+ .eq(FlowStepInstance::getTaskNo, task.getTaskCode())
+ .eq(FlowStepInstance::getWmsNowTaskStatus, task.getTaskStatus())
+ .eq(FlowStepInstance::getStatus, (short) 1).last("limit 1"));
+ if (Cools.isEmpty(flowStepInstance)){
+ return R.error(params.getSuperTaskNo()+"浠诲姟鍙�==>鏈煡璇㈠埌鐩稿叧浠诲姟鎵ц娴佺▼锛侊紒锛�");
}
- return R.ok("浠诲姟瀹屾垚鎴愬姛").add(one);
+
+ if (!MissionStepType.getTaskRECEIVE().contains(flowStepInstance.getStepType())){
+ return R.error(params.getSuperTaskNo()+"浠诲姟鍙�==>鐩稿叧浠诲姟绫诲瀷闈炴帴鏀跺瀷锛屾楠ら敊涔憋紒锛侊紒");
+ }
+
+ FlowInstance flowInstance = flowInstanceService.getById(flowStepInstance.getFlowInstanceId());
+ if (Cools.isEmpty(flowInstance)) {
+ return R.error(params.getSuperTaskNo()+"浠诲姟鍙�==>鏈煡璇㈠埌鐩稿叧浠诲姟鎵ц娴佺▼锛侊紒锛�");
+ }
+ List<FlowStepInstance> flowStepInstances = flowStepInstanceService.list(new LambdaQueryWrapper<FlowStepInstance>()
+ .eq(FlowStepInstance::getFlowInstanceId, flowInstance.getId()).eq(FlowStepInstance::getStatus, (short) 0));
+ flowInstance.setStatus(flowStepInstances.isEmpty()? (short) 2:(short) 1);
+ TaskInstanceNode taskInstanceNode = taskInstanceNodeService.getById(flowInstance.getNodeInstanceId());
+ if (Cools.isEmpty(taskInstanceNode)) {
+ return R.error(params.getSuperTaskNo()+"浠诲姟鍙�==>鏈煡璇㈠埌鐩稿叧浠诲姟鎵ц娴佺▼锛侊紒锛�");
+ }
+ taskInstanceNode.setStatus(flowInstance.getStatus());
+ TaskInstance taskInstance = taskInstanceService.getById(flowInstance.getTaskId());
+ if (Cools.isEmpty(taskInstance)) {
+ return R.error(params.getSuperTaskNo()+"浠诲姟鍙�==>鏈煡璇㈠埌鐩稿叧浠诲姟鎵ц娴佺▼锛侊紒锛�");
+ }
+ task.setTaskStatus(flowStepInstance.getWmsNextTaskStatus());
+ flowStepInstance.setStatus((short)3);
+
+ flowStepInstanceService.updateById(flowStepInstance);
+ taskService.updateById(task);
+ if (flowStepInstance.getWmsNextTaskStatus() != 9999) {
+ FlowStepInstance nextFlowStepInstance = flowStepInstanceService.getOne(new LambdaQueryWrapper<FlowStepInstance>()
+ .eq(FlowStepInstance::getStatus, (short)0)
+ .eq(FlowStepInstance::getStepOrder, flowStepInstance.getStepOrder() + 1)
+ .eq(FlowStepInstance::getWmsNowTaskStatus, flowStepInstance.getWmsNextTaskStatus()));
+ if (Cools.isEmpty(nextFlowStepInstance)) {
+ return R.error(task.getTaskCode()+"浠诲姟鍙�==>鏈煡璇㈠埌鐩稿叧浠诲姟鎵ц娴佺▼锛侊紒锛�");
+ }
+ nextFlowStepInstance.setStatus((short)1);
+
+ flowStepInstanceService.updateById(nextFlowStepInstance);
+ } else {
+ taskInstance.setStatus((short)2);
+ taskInstanceService.updateById(taskInstance);
+ }
+ return R.ok("浠诲姟瀹屾垚鎴愬姛").add(task);
+
+
+// one.setTaskStatus(one.getTaskType() < 100 ? TaskStsType.COMPLETE_IN.id : TaskStsType.AWAIT.id);
+// if (!taskService.updateById(one)) {
+//// throw new CoolException("瀹屾垚浠诲姟澶辫触");
+// return R.error("瀹屾垚浠诲姟澶辫触").add(one);
+// }
}
} else if (params.getMsgType().equals(WcsMsgTypeEvent.TASK_CANCEL.event)){
// if (!Cools.isEmpty(one)) {
@@ -1075,7 +1129,7 @@
}
if (params.getMsgType().equals(WcsMsgTypeEvent.TASK_COMPLETE.event)){
if (!Cools.isEmpty(one)) {
- one.setTaskStatus(TaskStsType.GENERATE_IN.id);
+ one.setTaskStatus(TaskStsType.MISSION_INITIAL.id);
one.setOrgSite(one.getTargSite());
if (!taskService.updateById(one)) {
// throw new CoolException("瀹屾垚浠诲姟澶辫触");
--
Gitblit v1.9.1