#
Administrator
2026-04-25 e12b25d5fc8170099bfc48d1d4de158a7c4238dc
src/main/java/com/zy/core/plugin/XiaosongProcess.java
@@ -24,6 +24,8 @@
import com.zy.core.model.command.StationCommand;
import com.zy.core.model.protocol.StationProtocol;
import com.zy.core.plugin.api.MainProcessPluginApi;
import com.zy.core.task.MainProcessLane;
import com.zy.core.task.MainProcessTaskSubmitter;
import com.zy.core.thread.StationThread;
import com.zy.core.utils.CrnOperateProcessUtils;
import com.zy.core.utils.DualCrnOperateProcessUtils;
@@ -40,6 +42,8 @@
@Slf4j
@Component
public class XiaosongProcess implements MainProcessPluginApi {
    private static final long DISPATCH_INTERVAL_MS = 200L;
    private static final long MAINTENANCE_INTERVAL_MS = 500L;
    @Autowired
    private CrnOperateProcessUtils crnOperateUtils;
@@ -57,36 +61,46 @@
    private WmsOperateUtils wmsOperateUtils;
    @Autowired
    private DualCrnOperateProcessUtils dualCrnOperateProcessUtils;
    @Autowired
    private MainProcessTaskSubmitter mainProcessTaskSubmitter;
    @Override
    public void run() {
        //检测入库站是否有任务生成,并启动入库
        checkInStationHasTask();
        //请求生成入库任务
        generateStoreWrkFile();
        // 检测入库站是否有任务生成,并按站点 lane 异步启动入库
        stationOperateProcessUtils.submitStationEnableInTasks(DISPATCH_INTERVAL_MS);
        // 请求生成入库任务,放入独立 lane,避免拖慢其他主流程方法
        submitGenerateStoreWrkFileTask();
        //执行堆垛机任务
        crnOperateUtils.crnIoExecute();
        //堆垛机任务执行完成
        crnOperateUtils.crnIoExecuteFinish();
        //执行输送站点入库任务
        stationOperateProcessUtils.stationInExecute();
        //执行堆垛机输送站点出库任务
        stationOperateProcessUtils.crnStationOutExecute();
        //执行双工位堆垛机输送站点出库任务
        stationOperateProcessUtils.dualCrnStationOutExecute();
        //检测输送站点出库任务执行完成
        stationOperateProcessUtils.stationOutExecuteFinish();
        // 执行堆垛机任务
        crnOperateUtils.submitCrnIoTasks(DISPATCH_INTERVAL_MS);
        // 堆垛机任务执行完成
        crnOperateUtils.submitCrnIoExecuteFinishTasks(DISPATCH_INTERVAL_MS);
        // 执行输送站点入库任务
        stationOperateProcessUtils.submitStationInTasks(DISPATCH_INTERVAL_MS);
        // 执行堆垛机输送站点出库任务
        stationOperateProcessUtils.submitCrnStationOutTasks(DISPATCH_INTERVAL_MS);
        // 执行双工位堆垛机输送站点出库任务
        stationOperateProcessUtils.submitDualCrnStationOutTasks(DISPATCH_INTERVAL_MS);
        // 检测输送站点出库任务执行完成
        stationOperateProcessUtils.submitStationOutExecuteFinishTasks(DISPATCH_INTERVAL_MS);
        // 检测任务转完成
        stationOperateProcessUtils.checkTaskToComplete();
        //检测输送站点是否运行堵塞
        stationOperateProcessUtils.checkStationRunBlock();
        stationOperateProcessUtils.submitCheckTaskToCompleteTasks(DISPATCH_INTERVAL_MS);
        // 检测输送站点是否运行堵塞
        stationOperateProcessUtils.submitCheckStationRunBlockTasks(MAINTENANCE_INTERVAL_MS);
        // 执行双工位堆垛机任务
        dualCrnOperateProcessUtils.dualCrnIoExecute();
        dualCrnOperateProcessUtils.submitDualCrnIoTasks(DISPATCH_INTERVAL_MS);
        // 双工位堆垛机任务执行完成
        dualCrnOperateProcessUtils.dualCrnIoExecuteFinish();
        dualCrnOperateProcessUtils.submitDualCrnIoExecuteFinishTasks(DISPATCH_INTERVAL_MS);
    }
    private void submitGenerateStoreWrkFileTask() {
        mainProcessTaskSubmitter.submitSerialTask(
                MainProcessLane.GENERATE_STORE,
                "generateStoreWrkFile",
                DISPATCH_INTERVAL_MS,
                this::generateStoreWrkFile
        );
    }
    /**