From 862b5a105254850ea60be99452a658f7f4beb2d8 Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期三, 11 三月 2026 15:24:39 +0800
Subject: [PATCH] 任务管理完结-9999修改
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java | 54 ++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 38 insertions(+), 16 deletions(-)
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
index 9e8ca7d..3a89c44 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
@@ -854,39 +854,61 @@
|| TaskType.TASK_TYPE_CHECK_IN.type.equals(task.getTaskType())
|| TaskType.TASK_TYPE_EMPTY_IN.type.equals(task.getTaskType())
|| TaskType.TASK_TYPE_MERGE_IN.type.equals(task.getTaskType())
- || TaskType.TASK_TYPE_LOC_MOVE.type.equals(task.getTaskType())) {
- task.setTaskStatus(TaskStsType.COMPLETE_IN.id);
- } else if (TaskType.TASK_TYPE_OUT.type.equals(task.getTaskType())) {
- task.setTaskStatus(TaskStsType.COMPLETE_OUT.id);
- } else if (TaskType.TASK_TYPE_PICK_AGAIN_OUT.type.equals(task.getTaskType())
- || TaskType.TASK_TYPE_CHECK_OUT.type.equals(task.getTaskType())) {
- task.setTaskStatus(TaskStsType.AWAIT.id);
- } else if (TaskType.TASK_TYPE_MERGE_OUT.type.equals(task.getTaskType())) {
- task.setTaskStatus(TaskStsType.MISSION_TRANSFER.id);
- } else if (TaskType.TASK_TYPE_CROSS_DOCKING_OUT.type.equals(task.getTaskType())
+ || TaskType.TASK_TYPE_LOC_MOVE.type.equals(task.getTaskType())
+ || TaskType.TASK_TYPE_OUT.type.equals(task.getTaskType())
+ || TaskType.TASK_TYPE_PICK_AGAIN_OUT.type.equals(task.getTaskType())
+ || TaskType.TASK_TYPE_MERGE_OUT.type.equals(task.getTaskType())
+ || TaskType.TASK_TYPE_CHECK_OUT.type.equals(task.getTaskType())
+ || TaskType.TASK_TYPE_CROSS_DOCKING_OUT.type.equals(task.getTaskType())
|| TaskType.TASK_TYPE_EMPTY_OUT.type.equals(task.getTaskType())) {
- task.setTaskStatus(TaskStsType.COMPLETE_OUT.id);
+ task.setTaskStatus(TaskStsType.MISSION_TRANSFER.id);
} else {
return;
}
updateById(task);
}
- /** 缁堟�佹垨绛夊緟瀹氭椂浠诲姟鏇存柊搴撳瓨鐨勭姸鎬侊紝涓嶅睍绀哄畬鎴愭寜閽� */
+ /** 缁堟�佹垨绛夊緟瀹氭椂浠诲姟鏇存柊搴撳瓨鐨勭姸鎬併��9999锛屼笉灞曠ず瀹岀粨鎸夐挳 */
private static final Set<Integer> TERMINAL_OR_WAITING_STATUS = new HashSet<>(Arrays.asList(
TaskStsType.COMPLETE_IN.id, TaskStsType.REPORT_IN.id, TaskStsType.UPDATED_IN.id,
TaskStsType.COMPLETE_OUT.id, TaskStsType.WAVE_SEED.id, TaskStsType.UPDATED_OUT.id,
- TaskStsType.MISSION_TRANSFER_END.id));
+ TaskStsType.MISSION_TRANSFER.id, TaskStsType.MISSION_TRANSFER_END.id));
- /** 瀹岀粨涓嶄緷璧栨祦绋嬫楠わ紝浠呮湭缁堟�佷换鍔″睍绀哄畬鎴愭寜閽� */
+ /** 缁堟��/9999 鏃犳寜閽紱鐘舵�佸湪姝ラ涓壘涓嶅埌鎴栨棤涓嬩竴姝ワ紙鏈�鍚庝竴姝ワ級鍒欐棤瀹岀粨鎸夐挳 */
@Override
public void fillCanComplete(List<Task> tasks) {
if (tasks == null || tasks.isEmpty()) {
return;
}
+ Set<Integer> terminalSet = TERMINAL_OR_WAITING_STATUS;
+ List<String> codes = tasks.stream().map(Task::getTaskCode).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+ if (codes.isEmpty()) {
+ tasks.forEach(t -> t.setCanComplete(Boolean.FALSE));
+ return;
+ }
+ List<FlowStepInstance> steps = codes.size() == 1
+ ? flowStepInstanceService.list(new LambdaQueryWrapper<FlowStepInstance>().eq(FlowStepInstance::getTaskNo, codes.get(0)).orderByAsc(FlowStepInstance::getStepOrder))
+ : flowStepInstanceService.list(new LambdaQueryWrapper<FlowStepInstance>().in(FlowStepInstance::getTaskNo, codes).orderByAsc(FlowStepInstance::getStepOrder));
+ Map<String, List<FlowStepInstance>> stepsByTaskNo = steps.stream().collect(Collectors.groupingBy(FlowStepInstance::getTaskNo));
for (Task task : tasks) {
- boolean terminal = task.getTaskStatus() != null && TERMINAL_OR_WAITING_STATUS.contains(task.getTaskStatus());
- task.setCanComplete(!terminal);
+ if (task.getTaskStatus() != null && terminalSet.contains(task.getTaskStatus())) {
+ task.setCanComplete(Boolean.FALSE);
+ continue;
+ }
+ List<FlowStepInstance> taskSteps = stepsByTaskNo.get(task.getTaskCode());
+ if (taskSteps == null || taskSteps.isEmpty()) {
+ task.setCanComplete(Boolean.FALSE);
+ continue;
+ }
+ FlowStepInstance match = taskSteps.stream()
+ .filter(s -> s.getWmsNowTaskStatus() != null && s.getWmsNowTaskStatus().equals(task.getTaskStatus()))
+ .findFirst().orElse(null);
+ if (match == null) {
+ task.setCanComplete(Boolean.FALSE);
+ continue;
+ }
+ boolean isLastStep = match.getWmsNextTaskStatus() == null || match.getWmsNextTaskStatus().equals(TaskStsType.MISSION_TRANSFER.id);
+ task.setCanComplete(!isLastStep);
}
}
--
Gitblit v1.9.1