1
11 小时以前 e711c834aec2293c53b07efe53e81e3573c289b6
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
@@ -26,6 +26,7 @@
import com.vincent.rsf.server.manager.entity.*;
import com.vincent.rsf.server.manager.service.*;
import com.vincent.rsf.server.manager.service.impl.LocServiceImpl;
import com.vincent.rsf.server.manager.utils.WarehouseLocationRetrievalUtil;
import com.vincent.rsf.server.system.constant.GlobalConfigCode;
import com.vincent.rsf.server.system.constant.SerialRuleCode;
import com.vincent.rsf.server.system.entity.*;
@@ -179,43 +180,11 @@
                    MissionTaskIssueParam missionTaskIssueParam = new MissionTaskIssueParam(flowStepInstance,subsystemFlowTemplate,flowStepTemplate);
                    missionTaskIssueParam.setType(RcsTaskType.getTypeDesc(task.getTaskType()));
                    boolean souSign = taskInstance.getSourceCode().matches("\\d+");
                    boolean souSign = new WarehouseLocationRetrievalUtil().retrieveMissionmMergeReservoirAreaIsItAvailable(taskInstance.getSourceCode());
                    if (souSign){
                        WarehouseAreas warehouseAreas = warehouseAreasService.getById(Long.parseLong(taskInstance.getSourceCode()));
                        if (Cools.isEmpty(warehouseAreas)){
                            BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, taskInstance.getSourceCode()).last("limit 1"));
                            if (Cools.isEmpty(basStation)){
                                basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
                                        .apply("station_alias != '[]'")  // 不是空数组
                                        .apply("JSON_CONTAINS(station_alias, '\"{0}\"') = 1", taskInstance.getSourceCode())
                                        .eq(BasStation::getDeleted, 0)  // 通常需要加上未删除条件
                                        .last("LIMIT 1"));
                            }
                            if (Cools.isEmpty(basStation)){
                                flowStepInstance.setRetryTimes(flowStepInstance.getRetryTimes() + 1);
                                if (flowStepInstance.getRetryTimes()>5){
                                    flowStepInstance.setStatus((short)4);
                                    flowStepInstanceService.updateById(flowStepInstance);
                                    log.error("任务下发失败,源点未查询到,重试次数大于等于五次,标记为失败!!!");
                                } else {
                                    flowStepInstanceService.updateById(flowStepInstance);
                                    log.error("任务下发失败,源点未查询到目标点未查询到,等待重试....");
                                }
                                continue;
                            } else {
                                missionTaskIssueParam.setSourceCode(basStation.getStationName());
                            }
                        } else {
                            missionTaskIssueParam.setSourceCode(taskInstance.getSourceCode());
                        }
                        missionTaskIssueParam.setSourceCode(taskInstance.getSourceCode());
                    } else {
                        BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, taskInstance.getSourceCode()).last("limit 1"));
                        if (Cools.isEmpty(basStation)){
                            basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
                                    .apply("station_alias != '[]'")  // 不是空数组
                                    .apply("JSON_CONTAINS(station_alias, '\"{0}\"') = 1", taskInstance.getSourceCode())
                                    .eq(BasStation::getDeleted, 0)  // 通常需要加上未删除条件
                                    .last("LIMIT 1"));                            }
                        BasStation basStation = new WarehouseLocationRetrievalUtil().retrieveMissionmMergeSizeIsItAvailable(taskInstance.getSourceCode());
                        if (Cools.isEmpty(basStation)){
                            flowStepInstance.setRetryTimes(flowStepInstance.getRetryTimes() + 1);
                            if (flowStepInstance.getRetryTimes()>5){
@@ -231,52 +200,20 @@
                            missionTaskIssueParam.setSourceCode(basStation.getStationName());
                        }
                    }
                    boolean endSign = taskInstance.getTargetCode().matches("\\d+");
                    boolean endSign = new WarehouseLocationRetrievalUtil().retrieveMissionmMergeReservoirAreaIsItAvailable(taskInstance.getTargetCode());
                    if (endSign){
                        WarehouseAreas warehouseAreas = warehouseAreasService.getById(Long.parseLong(taskInstance.getTargetCode()));
                        if (Cools.isEmpty(warehouseAreas)){
                            BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, taskInstance.getTargetCode()).last("limit 1"));
                            if (Cools.isEmpty(basStation)){
                                basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
                                        .apply("station_alias != '[]'")  // 不是空数组
                                        .apply("JSON_CONTAINS(station_alias, '\"{0}\"') = 1", taskInstance.getTargetCode())
                                        .eq(BasStation::getDeleted, 0)  // 通常需要加上未删除条件
                                        .last("LIMIT 1"));                                }
                            if (Cools.isEmpty(basStation)){
                                flowStepInstance.setRetryTimes(flowStepInstance.getRetryTimes() + 1);
                                if (flowStepInstance.getRetryTimes()>5){
                                    flowStepInstance.setStatus((short)4);
                                    flowStepInstanceService.updateById(flowStepInstance);
                                    log.error("任务下发失败,目标点未查询到,重试次数大于等于五次,标记为失败!!!");
                                } else {
                                    flowStepInstanceService.updateById(flowStepInstance);
                                    log.error("任务下发失败,目标点未查询到,等待重试....");
                                }
                                continue;
                            } else {
                                missionTaskIssueParam.setTargetCode(basStation.getStationName());
                            }
                        } else {
                            missionTaskIssueParam.setTargetCode(taskInstance.getTargetCode());
                        }
                        missionTaskIssueParam.setTargetCode(taskInstance.getTargetCode());
                    } else {
                        BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, taskInstance.getTargetCode()).last("limit 1"));
                        if (Cools.isEmpty(basStation)){
                            basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
                                    .apply("station_alias != '[]'")  // 不是空数组
                                    .apply("JSON_CONTAINS(station_alias, '\"{0}\"') = 1", taskInstance.getTargetCode())
                                    .eq(BasStation::getDeleted, 0)  // 通常需要加上未删除条件
                                    .last("LIMIT 1"));                                  }
                        BasStation basStation = new WarehouseLocationRetrievalUtil().retrieveMissionmMergeSizeIsItAvailable(taskInstance.getTargetCode());
                        if (Cools.isEmpty(basStation)){
                            flowStepInstance.setRetryTimes(flowStepInstance.getRetryTimes() + 1);
                            if (flowStepInstance.getRetryTimes()>5){
                                flowStepInstance.setStatus((short)4);
                                flowStepInstanceService.updateById(flowStepInstance);
                                log.error("任务下发失败,目标点未查询到,重试次数大于等于五次,标记为失败!!!");
                                log.error("任务下发失败,源点未查询到,重试次数大于等于五次,标记为失败!!!");
                            } else {
                                flowStepInstanceService.updateById(flowStepInstance);
                                log.error("任务下发失败,目标点未查询到,等待重试....");
                                log.error("任务下发失败,源点未查询到目标点未查询到,等待重试....");
                            }
                            continue;
                        } else {
@@ -455,7 +392,10 @@
                        || task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) {
                    task.setTaskStatus(TaskStsType.COMPLETE_IN.id);
                } else if (task.getTaskType().equals(TaskType.TASK_TYPE_OUT.type)){
                    if (task.getResource().equals(TaskResouceType.TASK_RESOUCE_WAVE_TYPE.val)){
                    if (task.getResource().equals(TaskResouceType.TASK_RESOUCE_WAVE_TYPE.val)
                            || task.getResource().equals(TaskResouceType.TASK_RESOUCE_STOCK_UP.val)
                            || task.getResource().equals(TaskResouceType.TASK_RESOUCE_STOCK_NOT_OUT.val)
                    ){
                        task.setTaskStatus(TaskStsType.AWAIT.id);
                    } else {
                        task.setTaskStatus(TaskStsType.COMPLETE_OUT.id);
@@ -467,9 +407,13 @@
                } else if (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)) {
                    if ((!Cools.isEmpty(task.getResource()) && task.getResource().equals(TaskResouceType.TASK_RESOUCE_WAVE_TYPE.val))
                            // 盘点出库先到 196(非波次)
                            ||task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type)
                    if ((!Cools.isEmpty(task.getResource())
                            && (task.getResource().equals(TaskResouceType.TASK_RESOUCE_WAVE_TYPE.val)
                                || task.getResource().equals(TaskResouceType.TASK_RESOUCE_STOCK_UP.val)
                                || task.getResource().equals(TaskResouceType.TASK_RESOUCE_STOCK_NOT_OUT.val)
                           )
                        )// 盘点出库先到 196(非波次)
                        ||task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type)
                    ) {
                        task.setTaskStatus(TaskStsType.AWAIT.id);
                    } else {
@@ -934,8 +878,8 @@
                            || 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>().eq(Task::getTaskCode, task.getTaskCode())
                                .set(Task::getTaskStatus, TaskStsType.WCS_EXECUTE_IN.id))) {
                        task.setTaskStatus(TaskStsType.WCS_EXECUTE_IN.id);
                        if (!taskService.updateById(task)) {
                            throw new CoolException("任务状态修改失败!!");
                        }
                        /**排除移库功能*/
@@ -955,8 +899,8 @@
                            || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_OUT.type)
                            || task.getTaskType().equals(TaskType.TASK_TYPE_EMPTY_OUT.type)
                            || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_AGAIN_OUT.type)) {
                        if (!taskService.update(new LambdaUpdateWrapper<Task>().eq(Task::getTaskCode, task.getTaskCode())
                                .set(Task::getTaskStatus, TaskStsType.WCS_EXECUTE_OUT.id))) {
                        task.setTaskStatus(TaskStsType.WCS_EXECUTE_OUT.id);
                        if (!taskService.updateById(task)) {
                            throw new CoolException("任务状态修改失败!!");
                        }
                        /**如果是普通站点,修改站点状态为入库预约*/