From 5e53e4f9156c5712de7cdb7f72e7cd1605c279be Mon Sep 17 00:00:00 2001
From: 1 <1@123>
Date: 星期五, 30 一月 2026 19:21:32 +0800
Subject: [PATCH] lsh#
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskMissionSchedules.java | 156 +++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 142 insertions(+), 14 deletions(-)
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..fb76e08 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,17 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.vincent.rsf.framework.common.Cools;
-import com.vincent.rsf.server.manager.controller.params.LocToTaskParams;
-import com.vincent.rsf.server.manager.entity.BasContainer;
+import com.vincent.rsf.framework.common.SnowflakeIdWorker;
import com.vincent.rsf.server.manager.entity.Loc;
-import com.vincent.rsf.server.manager.entity.WarehouseAreas;
-import com.vincent.rsf.server.manager.enums.LocStsType;
-import com.vincent.rsf.server.manager.service.LocItemService;
+import com.vincent.rsf.server.manager.entity.Task;
+import com.vincent.rsf.server.manager.enums.TaskStsType;
+import com.vincent.rsf.server.manager.enums.TaskType;
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 +20,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;
@@ -43,13 +42,27 @@
@Autowired
private ConfigService configService;
@Autowired
- private WarehouseAreasServiceImpl warehouseAreasService;
- @Autowired
private LocService locService;
@Autowired
- private LocItemService locItemService;
+ private TaskPathTemplateMergeServiceImpl taskPathTemplateMergeService;
@Autowired
- private BasContainerServiceImpl basContainerService;
+ private TaskInstanceServiceImpl taskInstanceService;
+ @Autowired
+ private TaskPathTemplateServiceImpl taskPathTemplateService;
+ @Autowired
+ private TaskPathTemplateNodeServiceImpl taskPathTemplateNodeService;
+ @Autowired
+ private SubsystemFlowTemplateServiceImpl subsystemFlowTemplateService;
+ @Autowired
+ private FlowStepTemplateServiceImpl flowStepTemplateService;
+ @Autowired
+ private TaskInstanceNodeServiceImpl taskInstanceNodeService;
+ @Autowired
+ private SnowflakeIdWorker snowflakeIdWorker;
+ @Autowired
+ private FlowInstanceServiceImpl flowInstanceService;
+ @Autowired
+ private FlowStepInstanceServiceImpl flowStepInstanceService;
/**
* @author Munch D. Luffy
@@ -64,7 +77,122 @@
if (!Boolean.parseBoolean(config.getVal())) {
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();
+ task.setTaskStatus(TaskStsType.GENERATE_IN.id);
+ } 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();
+ task.setTaskStatus(TaskStsType.GENERATE_OUT.id);
+ }
+ List<TaskPathTemplateMerge> taskPathTemplateMergeList = taskPathTemplateMergeService.list(new LambdaQueryWrapper<TaskPathTemplateMerge>().eq(TaskPathTemplateMerge::getSourceType, sou).eq(TaskPathTemplateMerge::getTargetType, end));
+ if (Objects.isNull(taskPathTemplateMergeList) || taskPathTemplateMergeList.isEmpty()) {
+ List<TaskPathTemplateMerge> list = taskPathTemplateMergeService.list(new LambdaQueryWrapper<TaskPathTemplateMerge>().eq(TaskPathTemplateMerge::getStepSize,1));
+ 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()) {
+ TaskPathTemplateMerge taskPathTemplateMerge = new TaskPathTemplateMerge();
+ taskPathTemplateMerge.setTemplateCode(sou+"===>"+end);
+ taskPathTemplateMerge.setTemplateName(sou+"===>"+end);
+ taskPathTemplateMerge.setSourceType(sou);
+ taskPathTemplateMerge.setTargetType(end);
+ List<Integer> longList = new ArrayList<>();
+ for (Long id : longs) {
+ TaskPathTemplateMerge one = taskPathTemplateMergeService.getOne(new LambdaQueryWrapper<TaskPathTemplateMerge>().eq(TaskPathTemplateMerge::getId, id));
+ longList.addAll(one.getConditionExpression());
+ }
+ taskPathTemplateMerge.setConditionExpression(longList);
+ taskPathTemplateMerge.setStepSize(longList.size());
+ taskPathTemplateMergeService.save(taskPathTemplateMerge);
+ }
+ System.out.println("浠诲姟锛�"+task.getTaskCode()+"鏌ヨ姝ュ簭涓猴細"+longs);
+ }
+ } else {
+ //鐢熸垚瀹為檯璺緞
+ boolean actualPath = generateActualPath(task, taskPathTemplateMergeList.get(0));
+ if (!actualPath) {
+ log.error("鐢熸垚瀹為檯璺緞澶辫触");
+ }
+ }
+ });
}
+
+
+ public boolean generateActualPath(Task task,TaskPathTemplateMerge taskPathTemplateMerge) {
+ boolean actualPath = false;
+ List<Integer> conditionExpression = taskPathTemplateMerge.getConditionExpression();
+ Integer i = 0;//it椤哄簭
+ Integer j = 0;//suT椤哄簭
+
+ TaskInstance taskInstance = new TaskInstance(taskPathTemplateMerge,task);
+ boolean save = taskInstanceService.save(taskInstance);
+ if (!save) {
+ return false;
+ }
+ for (Integer id : conditionExpression) {
+ TaskPathTemplate taskPathTemplate = taskPathTemplateService.getById(id);
+ if (taskPathTemplate == null) {
+ return false;
+ }
+ List<TaskPathTemplateNode> taskPathTemplateNodeList = taskPathTemplateNodeService.list(new LambdaQueryWrapper<TaskPathTemplateNode>().eq(TaskPathTemplateNode::getTemplateId, taskPathTemplate.getId()));
+ for (TaskPathTemplateNode taskPathTemplateNode : taskPathTemplateNodeList) {
+ TaskInstanceNode taskInstanceNode = new TaskInstanceNode(taskPathTemplateNode);
+ taskInstanceNode.setTaskId(taskInstance.getId());
+ taskInstanceNode.setTaskNo(taskInstance.getTaskNo());
+ i++;
+ taskInstanceNode.setNodeOrder(i);
+ taskInstanceNode.setNodeCode(String.valueOf(snowflakeIdWorker.nextId()));
+ taskInstanceNodeService.save(taskInstanceNode);
+ List<SubsystemFlowTemplate> subsystemFlowTemplateList = subsystemFlowTemplateService.list(new LambdaQueryWrapper<SubsystemFlowTemplate>().eq(SubsystemFlowTemplate::getFlowCode, taskPathTemplateNode.getNodeCode())
+ .eq(SubsystemFlowTemplate::getSystemCode, taskPathTemplateNode.getSystemCode()));
+ for (SubsystemFlowTemplate subsystemFlowTemplate : subsystemFlowTemplateList) {
+ FlowInstance flowInstance = new FlowInstance(subsystemFlowTemplate);
+ flowInstance.setFlowInstanceNo(String.valueOf(snowflakeIdWorker.nextId()));
+ flowInstance.setTaskId(taskInstance.getId());
+ flowInstance.setTaskNo(taskInstance.getTaskNo());
+ flowInstance.setNodeInstanceId(taskInstanceNode.getId());
+ flowInstance.setNodeCode(String.valueOf(snowflakeIdWorker.nextId()));
+ flowInstanceService.save(flowInstance);
+ List<FlowStepTemplate> flowStepTemplateList = flowStepTemplateService.list(new LambdaQueryWrapper<FlowStepTemplate>().eq(FlowStepTemplate::getFlowId, subsystemFlowTemplate.getId()));
+ for (FlowStepTemplate flowStepTemplate : flowStepTemplateList) {
+ j++;
+ FlowStepInstance flowStepInstance = new FlowStepInstance(flowStepTemplate);
+ flowStepInstance.setFlowInstanceId(flowInstance.getId());
+ flowStepInstance.setFlowInstanceNo(flowInstance.getFlowInstanceNo());
+ flowStepInstance.setStepOrder(j);
+ flowStepInstance.setStepCode(String.valueOf(snowflakeIdWorker.nextId()));
+ flowStepInstanceService.save(flowStepInstance);
+ }
+ }
+ }
+ }
+ task.setDeviceSiteId(taskInstance.getId());
+ taskService.updateById(task);
+ return actualPath;
+ }
+
+
}
--
Gitblit v1.9.1