From 93fac3ecad495575f1dbe16a7eb40e70a7c87d9f Mon Sep 17 00:00:00 2001
From: 1 <1@123>
Date: 星期一, 02 二月 2026 17:36:00 +0800
Subject: [PATCH] lsh#

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java |   34 +++--
 rsf-server/src/main/java/com/vincent/rsf/server/api/entity/enums/CallBackEvent.java  |    1 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/MissionStepType.java   |   30 ++++
 rsf-server/src/main/java/com/vincent/rsf/server/system/entity/FlowStepInstance.java  |    6 +
 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/WcsController.java    |    6 
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java |  228 ++++++++++++++++++++++---------------
 6 files changed, 194 insertions(+), 111 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/WcsController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/WcsController.java
index b5daeb8..8f328d5 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/WcsController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/WcsController.java
@@ -143,9 +143,9 @@
     @OperationLog("WCS浠诲姟涓婃姤閫氱煡")
     @PostMapping("/task/report")
     public R wcsTaskReport(@RequestBody TaskReportParam params) {
-        if (params.getType() != 0){
-            return wcsService.wcsTaskReport2(params);
-        }
+//        if (params.getType() != 0){
+//            return wcsService.wcsTaskReport2(params);
+//        }
         return wcsService.wcsTaskReport(params);
     }
 
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/enums/CallBackEvent.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/enums/CallBackEvent.java
index d7a2dcb..a633c0a 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/enums/CallBackEvent.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/enums/CallBackEvent.java
@@ -12,7 +12,6 @@
     CALL_BACK_EVENT_OBIT("OTBIN", "鎼繍涓�"),
     CALL_BACK_EVENT_BIN("BIN", "鍑虹珯"),
     CALL_BACK_EVENT_END("END", "鏀剧瀹屾垚"),
-    CALL_BACK_EVENT_TRANSFER("TRANSFER", "涓浆"),
     ;
 
     CallBackEvent( String event,  String desc) {
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 2d28fc9..1f79199 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,8 +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.User;
-import com.vincent.rsf.server.system.service.impl.UserServiceImpl;
+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;
@@ -86,6 +86,14 @@
     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
@@ -477,9 +485,40 @@
         if (Objects.isNull(task)) {
             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)
@@ -504,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));
@@ -1046,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)) {
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/MissionStepType.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/MissionStepType.java
index a417a16..76bbe56 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/MissionStepType.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/MissionStepType.java
@@ -1,5 +1,8 @@
 package com.vincent.rsf.server.manager.enums;
 
+import java.util.Arrays;
+import java.util.List;
+
 /**
  * @author Ryan
  * @version 1.0
@@ -10,13 +13,18 @@
 public enum MissionStepType {
     MISSION_STEP_TYPE_RESPONSE("RESPONSE", "鍝嶅簲"),
     MISSION_STEP_TYPE_RECEIVE("RECEIVE", "鎺ユ敹"),
+
+    MISSION_STEP_TYPE_RECEIVE_BIN("RECEIVE_BIN", "鎺ユ敹-瑙g粦"),
+
     MISSION_STEP_TYPE_REQUEST("REQUEST", "璇锋眰"),
-    MISSION_STEP_TYPE_BIND("BIND", "缁戝畾"),
     MISSION_STEP_TYPE_UNBIND("UNBIND", "瑙g粦"),
-    MISSION_STEP_TYPE_VALIDATE("VALIDATE", "鏍¢獙"),
-    MISSION_STEP_TYPE_TRANSFORM("TRANSFORM", "杞崲"),
+    MISSION_STEP_TYPE_BIND("BIND", "缁戝畾"),
     MISSION_STEP_TYPE_OBTAIN("OBTAIN", "鑾峰彇"),
     MISSION_STEP_TYPE_NO_EXECUTE("NO_EXECUTE", "瓒婅繃"),
+
+
+    MISSION_STEP_TYPE_VALIDATE("VALIDATE", "鏍¢獙"),
+    MISSION_STEP_TYPE_TRANSFORM("TRANSFORM", "杞崲"),
     ;
     public String type;
     public String desc;
@@ -26,4 +34,20 @@
         this.desc = desc;
     }
 
+    public static List<String> getTaskISSUE(){
+        return Arrays.asList(
+                MissionStepType.MISSION_STEP_TYPE_REQUEST.type,
+                MissionStepType.MISSION_STEP_TYPE_UNBIND.type,
+                MissionStepType.MISSION_STEP_TYPE_BIND.type,
+                MissionStepType.MISSION_STEP_TYPE_OBTAIN.type,
+                MissionStepType.MISSION_STEP_TYPE_NO_EXECUTE.type);
+    }
+
+    public static List<String> getTaskRECEIVE(){
+        return Arrays.asList(
+                MissionStepType.MISSION_STEP_TYPE_RESPONSE.type,
+                MissionStepType.MISSION_STEP_TYPE_RECEIVE_BIN.type,
+                MissionStepType.MISSION_STEP_TYPE_RECEIVE.type);
+    }
+
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
index bc90f6a..af89fb0 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
@@ -113,19 +113,17 @@
     @Scheduled(cron = "0/2 * * * * ?  ")
     @Transactional(rollbackFor = Exception.class)
     public void missionTaskEXECUTE() {
-        List<String> typeList = Arrays.asList(
-                MissionStepType.MISSION_STEP_TYPE_REQUEST.type,
-                MissionStepType.MISSION_STEP_TYPE_UNBIND.type,
-                MissionStepType.MISSION_STEP_TYPE_BIND.type,
-                MissionStepType.MISSION_STEP_TYPE_OBTAIN.type,
-                MissionStepType.MISSION_STEP_TYPE_NO_EXECUTE.type);
         List<FlowStepInstance> flowStepInstanceList = flowStepInstanceService.list(new LambdaQueryWrapper<FlowStepInstance>()
-                .eq(FlowStepInstance::getStatus, 1).in(FlowStepInstance::getStepType,typeList));
+                .eq(FlowStepInstance::getStatus, 1).in(FlowStepInstance::getStepType,MissionStepType.getTaskISSUE()));
         for (FlowStepInstance flowStepInstance : flowStepInstanceList) {
             FlowInstance flowInstance = flowInstanceService.getById(flowStepInstance.getFlowInstanceId());
             if (Cools.isEmpty(flowInstance)) { continue;}
+            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)) { continue;}
+            taskInstanceNode.setStatus(flowInstance.getStatus());
             TaskInstance taskInstance = taskInstanceService.getById(flowInstance.getTaskId());
             if (Cools.isEmpty(taskInstance)) { continue;}
             Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskCode, taskInstance.getTaskNo()));
@@ -147,14 +145,21 @@
 
                     if (flowStepInstance.getWmsNextTaskStatus() != 9999) {
                         FlowStepInstance nextFlowStepInstance = flowStepInstanceService.getOne(new LambdaQueryWrapper<FlowStepInstance>()
-                                .eq(FlowStepInstance::getFlowInstanceId, flowStepInstance.getFlowInstanceId())
-                                .eq(FlowStepInstance::getFlowInstanceNo, flowStepInstance.getFlowInstanceNo())
+                                .eq(FlowStepInstance::getStatus, (short)0)
                                 .eq(FlowStepInstance::getStepOrder, flowStepInstance.getStepOrder() + 1)
                                 .eq(FlowStepInstance::getWmsNowTaskStatus, flowStepInstance.getWmsNextTaskStatus()));
+                        if (Cools.isEmpty(nextFlowStepInstance)) {
+                            throw new CoolException("浠诲姟鍙�"+task.getTaskCode()+"浠诲姟姝ラ涓㈠け锛侊紒锛�");
+                        }
                         nextFlowStepInstance.setStatus((short)1);
 
                         flowStepInstanceService.updateById(nextFlowStepInstance);
+                    } else {
+                        taskInstance.setStatus((short)2);
+                        taskInstanceService.updateById(taskInstance);
                     }
+                    flowInstanceService.updateById(flowInstance);
+                    taskInstanceNodeService.updateById(taskInstanceNode);
                 } catch (Exception e) {
                     throw new CoolException(e.getMessage());
                 }
@@ -192,13 +197,18 @@
 
                             if (flowStepInstance.getWmsNextTaskStatus() != 9999) {
                                 FlowStepInstance nextFlowStepInstance = flowStepInstanceService.getOne(new LambdaQueryWrapper<FlowStepInstance>()
-                                        .eq(FlowStepInstance::getFlowInstanceId, flowStepInstance.getFlowInstanceId())
-                                        .eq(FlowStepInstance::getFlowInstanceNo, flowStepInstance.getFlowInstanceNo())
+                                        .eq(FlowStepInstance::getStatus, (short)0)
                                         .eq(FlowStepInstance::getStepOrder, flowStepInstance.getStepOrder() + 1)
                                         .eq(FlowStepInstance::getWmsNowTaskStatus, flowStepInstance.getWmsNextTaskStatus()));
+                                if (Cools.isEmpty(nextFlowStepInstance)) {
+                                    throw new CoolException("浠诲姟鍙�"+task.getTaskCode()+"浠诲姟姝ラ涓㈠け锛侊紒锛�");
+                                }
                                 nextFlowStepInstance.setStatus((short)1);
 
                                 flowStepInstanceService.updateById(nextFlowStepInstance);
+                            } else {
+                                taskInstance.setStatus((short)2);
+                                taskInstanceService.updateById(taskInstance);
                             }
                         } else {
                             flowStepInstance.setRetryTimes(flowStepInstance.getRetryTimes() + 1);
@@ -237,7 +247,7 @@
 
     public void completeStock9999() throws Exception {
         try{
-            List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getTaskStatus, TaskStsType.MISSION_TRANSFER.id).select(Task::getId));
+            List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getTaskStatus, TaskStsType.MISSION_TRANSFER.id));
             if (tasks.isEmpty()) {
                 return;
             }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/entity/FlowStepInstance.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/entity/FlowStepInstance.java
index 7167dc9..489e71b 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/system/entity/FlowStepInstance.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/entity/FlowStepInstance.java
@@ -152,6 +152,12 @@
     @ApiModelProperty(value= "wms褰撳墠浠诲姟绫诲瀷ID")
     private Integer wmsNowTaskStatus;
 
+    /**
+     * 浠诲姟鍙�
+     */
+    @ApiModelProperty(value= "浠诲姟鍙�")
+    private String taskNo;
+
     public FlowStepInstance() {}
     public FlowStepInstance(FlowStepTemplate  flowStepTemplate) {
         this.stepTemplateId = flowStepTemplate.getId();

--
Gitblit v1.9.1