| | |
| | | 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; |
| | |
| | | @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; |
| | |
| | | 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.submitCrnIoTasks(DISPATCH_INTERVAL_MS); |
| | | //堆垛机任务执行完成 |
| | | crnOperateUtils.crnIoExecuteFinish(); |
| | | crnOperateUtils.submitCrnIoExecuteFinishTasks(DISPATCH_INTERVAL_MS); |
| | | //执行输送站点入库任务 |
| | | stationOperateProcessUtils.stationInExecute(); |
| | | stationOperateProcessUtils.submitStationInTasks(DISPATCH_INTERVAL_MS); |
| | | //执行堆垛机输送站点出库任务 |
| | | stationOperateProcessUtils.crnStationOutExecute(); |
| | | stationOperateProcessUtils.submitCrnStationOutTasks(DISPATCH_INTERVAL_MS); |
| | | //执行双工位堆垛机输送站点出库任务 |
| | | stationOperateProcessUtils.dualCrnStationOutExecute(); |
| | | stationOperateProcessUtils.submitDualCrnStationOutTasks(DISPATCH_INTERVAL_MS); |
| | | //检测输送站点出库任务执行完成 |
| | | stationOperateProcessUtils.stationOutExecuteFinish(); |
| | | stationOperateProcessUtils.submitStationOutExecuteFinishTasks(DISPATCH_INTERVAL_MS); |
| | | // 检测任务转完成 |
| | | stationOperateProcessUtils.checkTaskToComplete(); |
| | | stationOperateProcessUtils.submitCheckTaskToCompleteTasks(DISPATCH_INTERVAL_MS); |
| | | //检测输送站点是否运行堵塞 |
| | | stationOperateProcessUtils.checkStationRunBlock(); |
| | | 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 |
| | | ); |
| | | } |
| | | |
| | | /** |