| package com.zy.asrs.wcs.core.timer; | 
|   | 
| import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 
| import com.zy.asrs.wcs.core.action.ShuttleAction; | 
| 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.entity.DeviceType; | 
| import com.zy.asrs.wcs.rcs.model.enums.SlaveType; | 
| import com.zy.asrs.wcs.rcs.service.DeviceService; | 
| import com.zy.asrs.wcs.rcs.service.DeviceTypeService; | 
| 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 | 
| public class DeviceTimer { | 
|   | 
|     @Autowired | 
|     private RedisUtil redisUtil; | 
|     @Autowired | 
|     private DeviceService deviceService; | 
|     @Autowired | 
|     private DeviceTypeService deviceTypeService; | 
|     @Autowired | 
|     private ShuttleAction shuttleAction; | 
|   | 
|     @Scheduled(cron = "0/1 * * * * ? ") | 
|     public synchronized void executeShuttle() { | 
|         DeviceType deviceType = deviceTypeService.getOne(new LambdaQueryWrapper<DeviceType>() | 
|                 .eq(DeviceType::getFlag, String.valueOf(SlaveType.Shuttle)) | 
|                 .eq(DeviceType::getStatus, 1)); | 
|         if (deviceType == null) { | 
|             return; | 
|         } | 
|   | 
|         List<Device> list = deviceService.list(new LambdaQueryWrapper<Device>() | 
|                 .eq(Device::getStatus, 1) | 
|                 .eq(Device::getDeviceType, deviceType.getId())); | 
|         for (Device device : list) { | 
|             Object object = redisUtil.get(DeviceRedisConstant.SHUTTLE_FLAG + device.getDeviceNo()); | 
|             if (object == null) { | 
|                 continue; | 
|             } | 
|   | 
|             Integer taskNo = Integer.valueOf(String.valueOf(object)); | 
|             if (taskNo != 0) { | 
|                 //存在任务需要执行 | 
|                 shuttleAction.executeWork(device, taskNo); | 
|             } | 
|         } | 
|     } | 
|   | 
|     @Scheduled(cron = "0/1 * * * * ? ") | 
|     public synchronized void executeLift() { | 
|   | 
|     } | 
|   | 
|     @Scheduled(cron = "0/1 * * * * ? ") | 
|     public synchronized void executeConveyor() { | 
|   | 
|     } | 
|   | 
| } |