From cd32ca13746729913e72ffe021a3aee24ee01c67 Mon Sep 17 00:00:00 2001
From: 1 <1@123>
Date: 星期四, 29 一月 2026 17:12:19 +0800
Subject: [PATCH] lsh#

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Task.java                    |   12 ++++++
 rsf-server/src/main/java/com/vincent/rsf/server/system/entity/TaskPathTemplate.java         |   10 +++++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TaskStsType.java              |    2 +
 rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskMissionSchedules.java |   77 ++++++++++++++++++++++++++++++++++++--
 rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TaskType.java                 |    1 
 rsf-server/src/main/resources/lib/RouteUtils.jar                                            |    0 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskLog.java                 |   12 ++++++
 7 files changed, 108 insertions(+), 6 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Task.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Task.java
index 6ef59ff..eb42464 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Task.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Task.java
@@ -207,6 +207,18 @@
     @ApiModelProperty(value= "璺緞ID")
     private Long deviceSiteId;
 
+    /**
+     * 姝ュ簭璧风偣
+     */
+    @ApiModelProperty(value= "姝ュ簭璧风偣")
+    private String souStep;
+
+    /**
+     * 姝ュ簭缁堢偣
+     */
+    @ApiModelProperty(value= "姝ュ簭缁堢偣")
+    private String endStep;
+
     public Task() {}
 
     public Task(String taskCode,Integer taskStatus,Integer taskType,String orgLoc,String targLoc,String barcode,String robotCode,Short exceStatus,String expDesc,Integer sort,String expCode,Date startTime,Date endTime,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskLog.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskLog.java
index 5702492..bceb7c9 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskLog.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskLog.java
@@ -191,6 +191,18 @@
     @ApiModelProperty(value= "璺緞ID")
     private Long deviceSiteId;
 
+    /**
+     * 姝ュ簭璧风偣
+     */
+    @ApiModelProperty(value= "姝ュ簭璧风偣")
+    private String souStep;
+
+    /**
+     * 姝ュ簭缁堢偣
+     */
+    @ApiModelProperty(value= "姝ュ簭缁堢偣")
+    private String endStep;
+
     public TaskLog() {}
 
     public TaskLog(Long taskId,String taskCode,Integer taskStatus,Integer taskType,String orgLoc,String targLoc,String barcode,String robotCode,Short exceStatus,String expDesc,Short sort,String expCode,Date startTime,Date endTime,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TaskStsType.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TaskStsType.java
index e7e4223..db2ad73 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TaskStsType.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TaskStsType.java
@@ -2,6 +2,8 @@
 
 public enum TaskStsType {
     //浠诲姟鐘舵��
+
+    MISSION_INITIAL("0", "璺緞瑙勫垝涓�"),
     GENERATE_IN("1", "鍒涘缓鍏ュ簱浠诲姟"),
     WCS_EXECUTE_IN("2", "WCS銆丷CS浠诲姟宸蹭笅鍙�"),
     WCS_CONTAINER_RECEIVE("3", "WCS銆丷CS瀹瑰櫒鍒拌揪"),
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TaskType.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TaskType.java
index aa91093..7e246dd 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TaskType.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TaskType.java
@@ -9,7 +9,6 @@
  */
 public enum TaskType {
 
-    TASK_TYPE_INITIAL("0", "璺緞瑙勫垝涓�"),
     TASK_TYPE_IN("1", "鍏ュ簱"),
     TASK_TYPE_EMPTY_IN("10", "绌烘澘鍏ュ簱"),
     TASK_TYPE_LOC_MOVE("11", "搴撴牸绉昏浇"),
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskMissionSchedules.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskMissionSchedules.java
index 1d0d2af..217c10a 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskMissionSchedules.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskMissionSchedules.java
@@ -2,19 +2,22 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.vincent.rsf.framework.common.Cools;
+import com.vincent.rsf.framework.exception.CoolException;
 import com.vincent.rsf.server.manager.controller.params.LocToTaskParams;
-import com.vincent.rsf.server.manager.entity.BasContainer;
-import com.vincent.rsf.server.manager.entity.Loc;
-import com.vincent.rsf.server.manager.entity.WarehouseAreas;
+import com.vincent.rsf.server.manager.entity.*;
 import com.vincent.rsf.server.manager.enums.LocStsType;
+import com.vincent.rsf.server.manager.enums.StationTypeEnum;
+import com.vincent.rsf.server.manager.enums.TaskStsType;
+import com.vincent.rsf.server.manager.enums.TaskType;
 import com.vincent.rsf.server.manager.service.LocItemService;
 import com.vincent.rsf.server.manager.service.LocService;
 import com.vincent.rsf.server.manager.service.TaskService;
 import com.vincent.rsf.server.manager.service.impl.BasContainerServiceImpl;
 import com.vincent.rsf.server.manager.service.impl.WarehouseAreasServiceImpl;
 import com.vincent.rsf.server.system.constant.GlobalConfigCode;
-import com.vincent.rsf.server.system.entity.Config;
+import com.vincent.rsf.server.system.entity.*;
 import com.vincent.rsf.server.system.service.ConfigService;
+import com.vincent.rsf.server.system.service.impl.*;
 import lombok.extern.slf4j.Slf4j;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -22,6 +25,7 @@
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
+import routeR.calculationR.RouteWmsStepFlow;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -50,6 +54,24 @@
     private LocItemService locItemService;
     @Autowired
     private BasContainerServiceImpl basContainerService;
+    @Autowired
+    private TaskPathTemplateServiceImpl taskPathTemplateService;
+    @Autowired
+    private TaskPathTemplateNodeServiceImpl taskPathTemplateNodeService;
+    @Autowired
+    private TaskInstanceServiceImpl taskInstanceService;
+    @Autowired
+    private TaskInstanceNodeServiceImpl taskInstanceNodeService;
+    @Autowired
+    private SubsystemFlowTemplateServiceImpl subsystemFlowTemplateService;
+    @Autowired
+    private FlowStepLogServiceImpl flowStepLogService;
+    @Autowired
+    private FlowStepTemplateServiceImpl flowStepTemplateService;
+    @Autowired
+    private FlowStepInstanceServiceImpl flowStepInstanceService;
+    @Autowired
+    private FlowInstanceServiceImpl flowInstanceService;
 
     /**
      * @author Munch D. Luffy
@@ -65,6 +87,51 @@
             return;
         }
 
-
+        List<Task> taskList = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getTaskStatus, TaskStsType.MISSION_INITIAL.id));
+        if (Objects.isNull(taskList)) {
+            return;
+        }
+        taskList.forEach(task -> {
+            String sou = null;
+            String end = null;
+            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)) {
+                sou = task.getOrgSite();
+                Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, task.getTargLoc()));
+                end = loc.getAreaId().toString();
+            } 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)) {
+                Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, task.getOrgLoc()));
+                sou = loc.getAreaId().toString();
+                end = task.getTargSite();
+            }
+            List<TaskPathTemplate> taskPathTemplates = taskPathTemplateService.list(new LambdaQueryWrapper<TaskPathTemplate>().eq(TaskPathTemplate::getSourceType, sou).eq(TaskPathTemplate::getTargetType, end));
+            if (Objects.isNull(taskPathTemplates) || taskPathTemplates.isEmpty()) {
+                List<TaskPathTemplate> list = taskPathTemplateService.list(new LambdaQueryWrapper<>());
+                if (!Cools.isEmpty(list)) {
+                    List<String[]> stationList = new ArrayList<>();
+                    list.forEach(taskPathTemplate -> {
+                        stationList.add(taskPathTemplate.route());
+                    });
+                    List<Long> longs = RouteWmsStepFlow.routeGet(stationList, sou, end);
+                    if (longs != null && !longs.isEmpty()) {
+                        TaskPathTemplate taskPathTemplate = new TaskPathTemplate();
+                        taskPathTemplate.setTemplateCode(sou+"===>"+end);
+                        taskPathTemplate.setTemplateName(sou+"===>"+end);
+                        taskPathTemplate.setSourceType(sou);
+                        taskPathTemplate.setTargetType(end);
+                        taskPathTemplateService.save(taskPathTemplate);
+                    }
+                    System.out.println("浠诲姟锛�"+task.getTaskCode()+"鏌ヨ姝ュ簭涓猴細"+longs);
+                }
+            }
+        });
     }
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/entity/TaskPathTemplate.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/entity/TaskPathTemplate.java
index 6b33330..3c8c556 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/system/entity/TaskPathTemplate.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/entity/TaskPathTemplate.java
@@ -112,6 +112,12 @@
     private Integer timeoutMinutes;
 
     /**
+     * 姝ュ簭闀垮害
+     */
+    @ApiModelProperty(value= "姝ュ簭闀垮害")
+    private Integer stepSize;
+
+    /**
      * 鏈�澶ч噸璇曟鏁�
      */
     @ApiModelProperty(value= "鏈�澶ч噸璇曟鏁�")
@@ -251,4 +257,8 @@
         }
     }
 
+    public String[] route(){
+        return new String[]{this.sourceType, this.targetType, this.stepSize.toString(), this.id.toString()};
+    }
+
 }
diff --git a/rsf-server/src/main/resources/lib/RouteUtils.jar b/rsf-server/src/main/resources/lib/RouteUtils.jar
new file mode 100644
index 0000000..8cdc627
--- /dev/null
+++ b/rsf-server/src/main/resources/lib/RouteUtils.jar
Binary files differ

--
Gitblit v1.9.1