|  |  | 
 |  |  | package com.zy.asrs.wcs.core.timer; | 
 |  |  |  | 
 |  |  | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 
 |  |  | import com.zy.asrs.framework.exception.CoolException; | 
 |  |  | import com.zy.asrs.wcs.core.entity.Task; | 
 |  |  | import com.zy.asrs.wcs.core.kernel.command.*; | 
 |  |  | 
 |  |  |     private LiftCommandService liftCommandService; | 
 |  |  |     @Autowired | 
 |  |  |     private ShuttleCommandService shuttleCommandService; | 
 |  |  |     @Autowired | 
 |  |  |     private MapCommandService mapCommandService; | 
 |  |  |  | 
 |  |  |     @Scheduled(cron = "0/1 * * * * ? ") | 
 |  |  |     public synchronized void executeTask() { | 
 |  |  | 
 |  |  |                 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(task.getUuid(), MotionStsType.INIT.val(), task.getHostId()); | 
 |  |  |             if (null != motion) { | 
 |  |  | 
 |  |  |             case AGV: | 
 |  |  |                 executeRes = agvCommandService.accept(motion); | 
 |  |  |                 break; | 
 |  |  |             case MAP: | 
 |  |  |                 executeRes = mapCommandService.accept(motion); | 
 |  |  |                 break; | 
 |  |  |             default: | 
 |  |  |                 break; | 
 |  |  |         } | 
 |  |  | 
 |  |  |             case CONVEYOR: | 
 |  |  |                 executeRes = conveyorCommandService.finish(motion); | 
 |  |  |                 break; | 
 |  |  |             case MAP: | 
 |  |  |                 executeRes = mapCommandService.finish(motion); | 
 |  |  |                 break; | 
 |  |  |             default: | 
 |  |  |                 break; | 
 |  |  |         } |