skyouc
22 小时以前 cf9211f711be85c8e0c1c739d01c8694d2cf5c51
src/main/java/com/zy/core/plugin/NormalProcess.java
@@ -9,6 +9,7 @@
import com.zy.common.service.CommonService;
import com.zy.common.utils.RedisUtil;
import com.zy.core.News;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.SlaveConnection;
import com.zy.core.dispatch.StationCommandDispatcher;
import com.zy.core.enums.RedisKeyType;
@@ -16,6 +17,7 @@
import com.zy.core.enums.StationCommandType;
import com.zy.core.enums.WrkIoType;
import com.zy.core.model.StationObjModel;
import com.zy.core.model.Task;
import com.zy.core.model.command.StationCommand;
import com.zy.core.model.protocol.StationProtocol;
import com.zy.core.plugin.api.MainProcessPluginApi;
@@ -30,10 +32,12 @@
import java.util.List;
import java.util.Map;
import java.util.Objects;
@Slf4j
@Component
public class NormalProcess implements MainProcessPluginApi, StoreInTaskPolicy {
    private static final long DISPATCH_INTERVAL_MS = 200L;
    @Autowired
    private CrnOperateProcessUtils crnOperateUtils;
@@ -57,19 +61,28 @@
        //请求生成入库任务
        generateStoreWrkFile();
        //执行堆垛机任务
        crnOperateUtils.crnIoExecute();
        //堆垛机任务执行完成
        crnOperateUtils.crnIoExecuteFinish();
        //执行输送站点入库任务
        stationOperateProcessUtils.stationInExecute();
        //执行输送站点出库任务
        stationOperateProcessUtils.crnStationOutExecute();
        //执行堆垛机任务,按 lane 串行提交
        crnOperateUtils.submitCrnIoTasks(DISPATCH_INTERVAL_MS);
        //检测输送站点是否运行堵塞
        stationOperateProcessUtils.checkStationRunBlock();
        //检测输送站点任务停留超时后重新计算路径
        stationOperateProcessUtils.checkStationIdleRecover();
        //堆垛机任务执行完成,按 lane 串行提交
        crnOperateUtils.submitCrnIoExecuteFinishTasks(DISPATCH_INTERVAL_MS);
        // 检测入库任务是否已经到达目标站台
        stationOperateProcessUtils.submitInboundStationArrivalTasks(DISPATCH_INTERVAL_MS);
        //执行输送站点入库任务,按 lane 串行提交
        stationOperateProcessUtils.submitStationInTasks(DISPATCH_INTERVAL_MS);
        //执行输送站点出库任务,按 lane 串行提交
        stationOperateProcessUtils.submitCrnStationOutTasks(DISPATCH_INTERVAL_MS);
        // 检测出库任务是否已经到达目标站台
        stationOperateProcessUtils.submitStationOutExecuteFinishTasks(DISPATCH_INTERVAL_MS);
        // 检测站台运行完成后的任务转完成
        stationOperateProcessUtils.submitCheckTaskToCompleteTasks(DISPATCH_INTERVAL_MS);
        //检测输送站点是否运行堵塞,按 lane 串行提交
        stationOperateProcessUtils.submitCheckStationRunBlockTasks(DISPATCH_INTERVAL_MS);
        //检测输送站点任务停留超时后重新计算路径,按 lane 串行提交
        stationOperateProcessUtils.submitCheckStationIdleRecoverTasks(DISPATCH_INTERVAL_MS);
    }
    /**
@@ -101,6 +114,23 @@
                }
                StationProtocol stationProtocol = stationMap.get(stationId);
                //扫码异常,退回入库站点
                if (stationProtocol.getError() > 0) {
                    Object object = redisUtil.get(RedisKeyType.GENERATE_STATION_BACK_LIMIT.key + stationProtocol.getTaskNo());
                    if (!Objects.isNull(object)) {
                        continue;
                    }
                    StationObjModel backStation = stationObjModel.getBackStation();
                    StationCommand command = stationThread.getCommand(StationCommandType.MOVE, commonService.getWorkNo(WrkIoType.STATION_BACK.id), stationId, backStation.getStationId(), 0);
                    if (Objects.isNull(command)) {
                        News.taskInfo(stationProtocol.getTaskNo(), "{}工作,获取输送线命令失败", stationProtocol.getTaskNo());
                        continue;
                    }
                    MessageQueue.offer(SlaveType.Devp, basDevp.getDevpNo(), new Task(2, command));
                    News.taskInfo(stationProtocol.getTaskNo(), "{}扫码异常,已退回至{}", backStation.getStationId());
                    redisUtil.set(RedisKeyType.GENERATE_STATION_BACK_LIMIT.key + stationProtocol.getTaskNo(), 10);
                }
                if (!canSubmitGenerateStoreTask(basDevp, stationThread, stationObjModel, stationProtocol)) {
                    continue;
                }