package com.zy.asrs.wcs.core.map.websocket; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zy.asrs.wcs.core.map.entity.MapWsShuttleVo; import com.zy.asrs.wcs.core.map.entity.MapWsVo; import com.zy.asrs.wcs.core.model.enums.DeviceCtgType; import com.zy.asrs.wcs.core.service.BasShuttleService; import com.zy.asrs.wcs.rcs.cache.SlaveConnection; import com.zy.asrs.wcs.rcs.entity.Device; import com.zy.asrs.wcs.rcs.model.enums.SlaveType; import com.zy.asrs.wcs.rcs.model.protocol.ShuttleProtocol; import com.zy.asrs.wcs.rcs.service.DeviceService; import com.zy.asrs.wcs.rcs.service.DeviceTypeService; import com.zy.asrs.wcs.rcs.thread.ShuttleThread; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; /** * Created by vincent on 4/11/2024 */ @Component public class MapRealTimeDataScheduler { @Autowired private DeviceTypeService deviceTypeService; @Autowired private DeviceService deviceService; @Autowired private BasShuttleService basShuttleService; @Scheduled(cron = "0/1 * * * * ? ") public void sync() { MapWsVo wsVo = new MapWsVo(); // shuttle wsVo.setShuttleVos(syncShuttle()); MapWebSocket.broadcast(JSON.toJSONString(wsVo)); } private List syncShuttle() { List shuttleVos = new ArrayList<>(); List deviceList = deviceService.list(new LambdaQueryWrapper().eq(Device::getDeviceType, DeviceCtgType.SHUTTLE.val())); for (Device device : deviceList) { // basShuttleService. ShuttleThread thread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getId().intValue()); if (null == thread) { continue; } ShuttleProtocol protocol = thread.getStatus(); if (null == protocol) { continue; } MapWsShuttleVo shuttleVo = new MapWsShuttleVo(); // shuttleVo.setShuttleNo(); shuttleVos.add(shuttleVo); } return shuttleVos; } }