package com.zy.core; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.zy.asrs.entity.DeviceConfig; import com.zy.asrs.service.DeviceConfigService; import com.zy.common.utils.RedisUtil; import com.zy.core.cache.MessageQueue; import com.zy.core.enums.SlaveType; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import java.util.List; /** * Created by vincent on 2020/8/4 */ @Slf4j @Component public class ServerBootstrap { @Autowired private MainProcess mainProcess; @Autowired private RedisUtil redisUtil; @Autowired private DeviceConfigService deviceConfigService; @PostConstruct @Async public void init() throws InterruptedException { News.info("核心控制层开始初始化..............................................."); Thread.sleep(2000); // 初始化消息队列 initMq(); // 初始化下位机线程 initThread(); // 开始主流程进程 mainProcess.start(); News.info("核心控制层已启动..............................................."); } private void initMq(){ // 初始化堆垛机mq List crnList = deviceConfigService.selectList(new EntityWrapper() .eq("device_type", String.valueOf(SlaveType.Crn))); for (DeviceConfig crn : crnList) { MessageQueue.init(SlaveType.Crn, crn.getDeviceNo()); } // 初始化Rgv小车mq List rgvList = deviceConfigService.selectList(new EntityWrapper() .eq("device_type", String.valueOf(SlaveType.Rgv))); for (DeviceConfig rgv : rgvList) { MessageQueue.init(SlaveType.Rgv, rgv.getDeviceNo()); } // 初始化输送线mq List devpList = deviceConfigService.selectList(new EntityWrapper() .eq("device_type", String.valueOf(SlaveType.Devp))); for (DeviceConfig devp : devpList) { MessageQueue.init(SlaveType.Devp, devp.getDeviceNo()); } // 初始化条码扫描仪mq List barcodeList = deviceConfigService.selectList(new EntityWrapper() .eq("device_type", String.valueOf(SlaveType.Barcode))); for (DeviceConfig barcode : barcodeList) { MessageQueue.init(SlaveType.Barcode, barcode.getDeviceNo()); } // 初始化Led灯mq List ledList = deviceConfigService.selectList(new EntityWrapper() .eq("device_type", String.valueOf(SlaveType.Led))); for (DeviceConfig led : ledList) { MessageQueue.init(SlaveType.Led, led.getDeviceNo()); } } private void initThread(){ // News.info("初始化堆垛机........................................................"); // List crnList = deviceConfigService.selectList(new EntityWrapper() // .eq("device_type", String.valueOf(SlaveType.Crn))); // for (DeviceConfig deviceConfig : crnList) { // BasLift basLift = basLiftService.selectOne(new EntityWrapper().eq("lift_no", deviceConfig.getDeviceNo())); // if (basLift == null) { // throw new CoolException("未配置货叉提升机数据"); // } // // ThreadHandler thread = null; // if (deviceConfig.getThreadImpl().equals("ZyForkLiftThread")) { // thread = new ZyForkLiftThread(deviceConfig, basLift.getStationList$(), redisUtil); // } else { // throw new CoolException("未知的线程实现"); // } // // new Thread(thread).start(); // SlaveConnection.put(SlaveType.ForkLift, deviceConfig.getDeviceNo(), thread); // // if (deviceConfig.getFake() == 1) { // fakeDevices.add(deviceConfig); // }else { // allDevices.add(deviceConfig); // } // } } @PreDestroy public void destroy() { } }