#
Junjie
2024-06-18 95d473bc8c09ef41e1455f93dec49c5ee6ac548f
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/timer/MotionTimer.java
@@ -41,7 +41,7 @@
    @Autowired
    private ShuttleCommandService shuttleCommandService;
//    @Scheduled(cron = "0/1 * * * * ? ")
    @Scheduled(cron = "0/1 * * * * ? ")
    public synchronized void executeTask() {
        Date now = new Date();
        // ANALYZE_INBOUND
@@ -226,6 +226,63 @@
    }
    @Scheduled(cron = "0/1 * * * * ? ")
    public synchronized void executeMoveTask() {
        Date now = new Date();
        // ANALYZE_MOVE
        for (Task task : taskService.selectMoveByAnalyzeSts()) {
            Motion executingMotion = motionService.selectOfTop1(task.getUuid(), MotionStsType.EXECUTING.val(), task.getHostId());
            if (executingMotion != null) {//存在正在执行的motion
                continue;
            }
            Motion motion = motionService.selectOfTop1(task.getUuid(), MotionStsType.INIT.val(), task.getHostId());
            if (null != motion) {
                boolean result = this.executeMotion(motion);
                if (!result) {
                    continue;
                }
                // 更新Task
                switch (TaskStsType.query(task.getTaskSts())) {
                    case ANALYZE_MOVE:
                        task.setTaskSts(TaskStsType.EXECUTE_MOVE.sts);
                        break;
                }
                task.setUpdateTime(now);
                if (!taskService.updateById(task)) {
                    log.error("{}其他工作档更新状态失败!", task.getTaskNo());
                }
            }
        }
        // EXECUTE_MOVE
        for (Task task : taskService.selectMoveByExecuteSts()) {
            if (!motionService.hasRunningMotion(task.getUuid(), task.getHostId())) {
                Motion motion = motionService.selectOfTop1(task.getUuid(), MotionStsType.WAITING.val(), task.getHostId());
                if (null != motion) {
                    boolean result = this.executeMotion(motion);
                    if (!result) {
                        continue;
                    }
                } else {
                    if (motionService.selectOfTop1(task.getUuid(), MotionStsType.EXECUTING.val(), task.getHostId()) != null) {
                        continue;
                    }
                    // 更新Task
                    switch (TaskStsType.query(task.getTaskSts())) {
                        case EXECUTE_MOVE:
                            task.setTaskSts(TaskStsType.COMPLETE_MOVE.sts);
                            break;
                    }
                    task.setUpdateTime(now);
                    if (!taskService.updateById(task)) {
                        log.error("{}他工作档更新状态失败!", task.getTaskNo());
                    }
                }
            }
        }
    }
    @Scheduled(cron = "0/1 * * * * ? ")
    public void scanMotionByExecuting() {
        List<Motion> motionList = motionService.selectBySts(MotionStsType.EXECUTING.val());
        for (Motion motion : motionList) {
@@ -237,7 +294,7 @@
        Boolean executeRes = Boolean.FALSE;
        switch (Objects.requireNonNull(MotionCtgType.get(motion.getMotionCtgEl())).deviceCtg) {
            case CONVEYOR:
//                executeRes = conveyorCommandService.accept(motion);
                executeRes = conveyorCommandService.accept(motion);
                break;
            case CRANE:
                executeRes = craneCommandService.accept(motion);
@@ -284,7 +341,7 @@
                executeRes = shuttleCommandService.finish(motion);
                break;
            case CONVEYOR:
//                executeRes = conveyorCommandService.finish(motion);
                executeRes = conveyorCommandService.finish(motion);
                break;
            default:
                break;