| | |
| | | * @description: 初始任务规划路径 |
| | | * @version 1.0 |
| | | */ |
| | | @Scheduled(cron = "0/2 * * * * ?") |
| | | @Scheduled(cron = "0/1 * * * * ?") |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void missionTemplate() throws Exception { |
| | | Config config = configService.getOne(new LambdaQueryWrapper<Config>().eq(Config::getFlag, GlobalConfigCode.AUTO_TEMPLATE_PLANNING_STEP_FLOW)); |
| | |
| | | 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) |
| | |
| | | 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); |
| | | } else if (task.getTaskType().equals(TaskType.TASK_TYPE_CROSS_DOCKING_OUT.type)){ |
| | | Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, task.getOrgLoc())); |
| | | sou = loc.getAreaId().toString(); |
| | | end = loc.getAreaId().toString(); |
| | | } |
| | | List<TaskPathTemplateMerge> taskPathTemplateMergeList = taskPathTemplateMergeService.list(new LambdaQueryWrapper<TaskPathTemplateMerge>().eq(TaskPathTemplateMerge::getSourceType, sou).eq(TaskPathTemplateMerge::getTargetType, end)); |
| | | if (Objects.isNull(taskPathTemplateMergeList) || taskPathTemplateMergeList.isEmpty()) { |
| | |
| | | taskPathTemplateMerge.setStepSize(longList.size()); |
| | | taskPathTemplateMergeService.save(taskPathTemplateMerge); |
| | | } |
| | | System.out.println("任务:"+task.getTaskCode()+"查询步序为:"+longs); |
| | | // System.out.println("任务:"+task.getTaskCode()+"查询步序为:"+longs); |
| | | } |
| | | } else { |
| | | //生成实际路径 |
| | |
| | | Integer i = 0;//it顺序 |
| | | Integer j = 0;//suT顺序 |
| | | |
| | | TaskInstance taskInstance = new TaskInstance(taskPathTemplateMerge,task); |
| | | boolean save = taskInstanceService.save(taskInstance); |
| | | if (!save) { |
| | | return false; |
| | | } |
| | | // 用于存储所有FlowStepTemplate |
| | | List<FlowStepTemplate> allFlowStepTemplates = new ArrayList<>(); |
| | | |
| | | // 第一遍遍历:收集所有的FlowStepTemplate |
| | | 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())); |
| | | List<TaskPathTemplateNode> taskPathTemplateNodeList = taskPathTemplateNodeService.list( |
| | | new LambdaQueryWrapper<TaskPathTemplateNode>() |
| | | .eq(TaskPathTemplateNode::getTemplateId, taskPathTemplate.getId()).orderByAsc(TaskPathTemplateNode::getNodeOrder)); |
| | | |
| | | for (TaskPathTemplateNode taskPathTemplateNode : taskPathTemplateNodeList) { |
| | | List<SubsystemFlowTemplate> subsystemFlowTemplateList = subsystemFlowTemplateService.list( |
| | | new LambdaQueryWrapper<SubsystemFlowTemplate>() |
| | | .eq(SubsystemFlowTemplate::getFlowCode, taskPathTemplateNode.getNodeCode()) |
| | | .eq(SubsystemFlowTemplate::getSystemCode, taskPathTemplateNode.getSystemCode())); |
| | | |
| | | for (SubsystemFlowTemplate subsystemFlowTemplate : subsystemFlowTemplateList) { |
| | | List<FlowStepTemplate> flowStepTemplateList = flowStepTemplateService.list( |
| | | new LambdaQueryWrapper<FlowStepTemplate>() |
| | | .eq(FlowStepTemplate::getFlowId, subsystemFlowTemplate.getId()).orderByAsc(FlowStepTemplate::getStepOrder)); |
| | | |
| | | allFlowStepTemplates.addAll(flowStepTemplateList); |
| | | } |
| | | } |
| | | } |
| | | |
| | | TaskInstance taskInstance = new TaskInstance(taskPathTemplateMerge,task); |
| | | boolean save = taskInstanceService.save(taskInstance); |
| | | if (!save) { |
| | | return false; |
| | | } |
| | | |
| | | // 当前处理的FlowStepTemplate在全局列表中的索引 |
| | | int globalIndex = 0; |
| | | |
| | | 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()).orderByAsc(TaskPathTemplateNode::getNodeOrder)); |
| | | |
| | | for (TaskPathTemplateNode taskPathTemplateNode : taskPathTemplateNodeList) { |
| | | TaskInstanceNode taskInstanceNode = new TaskInstanceNode(taskPathTemplateNode); |
| | | taskInstanceNode.setTaskId(taskInstance.getId()); |
| | |
| | | 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())); |
| | | |
| | | 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.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())); |
| | | |
| | | List<FlowStepTemplate> flowStepTemplateList = flowStepTemplateService.list( |
| | | new LambdaQueryWrapper<FlowStepTemplate>() |
| | | .eq(FlowStepTemplate::getFlowId, subsystemFlowTemplate.getId()).orderByAsc(FlowStepTemplate::getStepOrder)); |
| | | |
| | | for (FlowStepTemplate flowStepTemplate : flowStepTemplateList) { |
| | | j++; |
| | | FlowStepInstance flowStepInstance = new FlowStepInstance(flowStepTemplate); |
| | |
| | | flowStepInstance.setFlowInstanceNo(flowInstance.getFlowInstanceNo()); |
| | | flowStepInstance.setStepOrder(j); |
| | | flowStepInstance.setStepCode(String.valueOf(snowflakeIdWorker.nextId())); |
| | | flowStepInstance.setWmsNowTaskStatus(flowStepTemplate.getWmsNowTaskStatus()); |
| | | flowStepInstance.setTaskNo(taskInstance.getTaskNo()); |
| | | |
| | | // 判断是否是最后一个 |
| | | if (globalIndex < allFlowStepTemplates.size() - 1) { |
| | | // 不是最后一个,取下一个的WmsNowTaskStatus |
| | | FlowStepTemplate nextFlowStep = allFlowStepTemplates.get(globalIndex + 1); |
| | | flowStepInstance.setWmsNextTaskStatus(nextFlowStep.getWmsNowTaskStatus()); |
| | | } else { |
| | | // 是最后一个,设置为9999 |
| | | flowStepInstance.setWmsNextTaskStatus(9999); |
| | | } |
| | | if (globalIndex == 0){ |
| | | task.setTaskStatus(flowStepTemplate.getWmsNowTaskStatus()); |
| | | flowStepInstance.setStatus((short)1); |
| | | } |
| | | flowStepInstanceService.save(flowStepInstance); |
| | | globalIndex++; // 更新全局索引 |
| | | } |
| | | } |
| | | } |