|  |  |  | 
|---|
|  |  |  | package com.zy.asrs.wcs.core.timer; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 
|---|
|  |  |  | import com.zy.asrs.wcs.core.action.LiftAction; | 
|---|
|  |  |  | import com.zy.asrs.wcs.core.action.ShuttleAction; | 
|---|
|  |  |  | import com.zy.asrs.wcs.core.model.enums.DeviceCtgType; | 
|---|
|  |  |  | import com.zy.asrs.wcs.core.utils.RedisUtil; | 
|---|
|  |  |  | import com.zy.asrs.wcs.rcs.constant.DeviceRedisConstant; | 
|---|
|  |  |  | import com.zy.asrs.wcs.rcs.entity.Device; | 
|---|
|  |  |  | import com.zy.asrs.wcs.rcs.service.DeviceService; | 
|---|
|  |  |  | import lombok.extern.slf4j.Slf4j; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.scheduling.annotation.Scheduled; | 
|---|
|  |  |  | import org.springframework.stereotype.Component; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Slf4j | 
|---|
|  |  |  | @Component | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private RedisUtil redisUtil; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private DeviceService deviceService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private ShuttleAction shuttleAction; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private LiftAction liftAction; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Scheduled(cron = "0/1 * * * * ? ") | 
|---|
|  |  |  | public synchronized void executeShuttle() { | 
|---|
|  |  |  | List<Device> list = deviceService.list(new LambdaQueryWrapper<Device>() | 
|---|
|  |  |  | .eq(Device::getStatus, 1) | 
|---|
|  |  |  | .eq(Device::getDeviceType, DeviceCtgType.SHUTTLE.val())); | 
|---|
|  |  |  | for (Device device : list) { | 
|---|
|  |  |  | //小车空闲且有跑库程序 | 
|---|
|  |  |  | shuttleAction.moveLoc(device); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Object object = redisUtil.get(DeviceRedisConstant.SHUTTLE_FLAG + device.getDeviceNo()); | 
|---|
|  |  |  | if (object == null) { | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Integer taskNo = Integer.valueOf(String.valueOf(object)); | 
|---|
|  |  |  | if (taskNo != 0) { | 
|---|
|  |  |  | //存在任务需要执行 | 
|---|
|  |  |  | boolean result = shuttleAction.executeWork(device, taskNo); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Scheduled(cron = "0/1 * * * * ? ") | 
|---|
|  |  |  | public synchronized void executeLift() { | 
|---|
|  |  |  | List<Device> list = deviceService.list(new LambdaQueryWrapper<Device>() | 
|---|
|  |  |  | .eq(Device::getStatus, 1) | 
|---|
|  |  |  | .eq(Device::getDeviceType, DeviceCtgType.LIFT.val())); | 
|---|
|  |  |  | for (Device device : list) { | 
|---|
|  |  |  | Object object = redisUtil.get(DeviceRedisConstant.LIFT_FLAG + device.getDeviceNo()); | 
|---|
|  |  |  | if (object == null) { | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Integer taskNo = Integer.valueOf(String.valueOf(object)); | 
|---|
|  |  |  | if (taskNo != 0) { | 
|---|
|  |  |  | //存在任务需要执行 | 
|---|
|  |  |  | boolean result = liftAction.executeWork(device, taskNo); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Scheduled(cron = "0/1 * * * * ? ") | 
|---|