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 public class DeviceTimer { @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 list = deviceService.list(new LambdaQueryWrapper() // .eq(Device::getStatus, 1) // .eq(Device::getDeviceType, DeviceCtgType.SHUTTLE.val())); // for (Device device : list) { // // } // } @Scheduled(cron = "0/1 * * * * ? ") public synchronized void executeLift() { List list = deviceService.list(new LambdaQueryWrapper() .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 * * * * ? ") public synchronized void executeConveyor() { } }