|  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Scheduled(cron = "0/1 * * * * ? ") | 
 |  |  |     public synchronized void executeLadenMoveTask() { | 
 |  |  |         Date now = new Date(); | 
 |  |  |         // ANALYZE_CHARGE | 
 |  |  |         for (Task taskCharge : taskService.selectLadenMoveByAnalyzeSts()) { | 
 |  |  |             Motion executingMotion = motionService.selectOfTop1(taskCharge.getUuid(), MotionStsType.EXECUTING.val(), taskCharge.getHostId()); | 
 |  |  |             if (executingMotion != null) {//存在正在执行的motion | 
 |  |  |                 if (executingMotion.getSync() == 1) {//当前执行中的动作是同步动作,等待执行完成后再执行下一个动作 | 
 |  |  |                     continue; | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 //异步动作,只允许下一条动作被执行 | 
 |  |  |                 Motion nextMotion = motionService.getOne(new LambdaQueryWrapper<Motion>().eq(Motion::getUuid, executingMotion.getUuid()).eq(Motion::getPriority, executingMotion.getPriority() - 1)); | 
 |  |  |                 if (nextMotion != null) { | 
 |  |  |                     if (!(nextMotion.getMotionSts() == MotionStsType.INIT.val() || nextMotion.getMotionSts() == MotionStsType.WAITING.val())) { | 
 |  |  |                         continue;//下一条动作已经被执行,不允许再执行后续动作 | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             Motion motion = motionService.selectOfTop1(taskCharge.getUuid(), MotionStsType.INIT.val(), taskCharge.getHostId()); | 
 |  |  |             if (null != motion) { | 
 |  |  |                 boolean result = this.executeMotion(motion); | 
 |  |  |                 if (!result) { | 
 |  |  |                     continue; | 
 |  |  |                 } | 
 |  |  |                 // 更新Task | 
 |  |  |                 switch (TaskStsType.query(taskCharge.getTaskSts())) { | 
 |  |  |                     case ANALYZE_LADEN_MOVE: | 
 |  |  |                         taskCharge.setTaskSts(TaskStsType.EXECUTE_LADEN_MOVE.sts); | 
 |  |  |                         break; | 
 |  |  |                 } | 
 |  |  |                 taskCharge.setUpdateTime(now); | 
 |  |  |                 if (!taskService.updateById(taskCharge)) { | 
 |  |  |                     log.error("{}其他工作档更新状态失败!", taskCharge.getTaskNo()); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         // EXECUTE_CHARGE | 
 |  |  |         for (Task taskCharge : taskService.selectLadenMoveByExecuteSts()) { | 
 |  |  |             if (!motionService.hasRunningMotion(taskCharge.getUuid(), taskCharge.getHostId())) { | 
 |  |  |                 Motion motion = motionService.selectOfTop1(taskCharge.getUuid(), MotionStsType.WAITING.val(), taskCharge.getHostId()); | 
 |  |  |                 if (null != motion) { | 
 |  |  |                     boolean result = this.executeMotion(motion); | 
 |  |  |                     if (!result) { | 
 |  |  |                         continue; | 
 |  |  |                     } | 
 |  |  |                 } else { | 
 |  |  |                     if (motionService.selectOfTop1(taskCharge.getUuid(), MotionStsType.EXECUTING.val(), taskCharge.getHostId()) != null) { | 
 |  |  |                         continue; | 
 |  |  |                     } | 
 |  |  |  | 
 |  |  |                     // 更新Task | 
 |  |  |                     switch (TaskStsType.query(taskCharge.getTaskSts())) { | 
 |  |  |                         case EXECUTE_LADEN_MOVE: | 
 |  |  |                             taskCharge.setTaskSts(TaskStsType.COMPLETE_LADEN_MOVE.sts); | 
 |  |  |                             break; | 
 |  |  |                     } | 
 |  |  |                     taskCharge.setUpdateTime(now); | 
 |  |  |                     if (!taskService.updateById(taskCharge)) { | 
 |  |  |                         log.error("{}他工作档更新状态失败!", taskCharge.getTaskNo()); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Scheduled(cron = "0/1 * * * * ? ") | 
 |  |  |     public synchronized void executeMoveTask() { | 
 |  |  |         Date now = new Date(); | 
 |  |  |         // ANALYZE_MOVE |