package com.zy.asrs.utils; import com.alibaba.fastjson.JSON; import com.core.common.SpringUtils; import com.zy.asrs.entity.CommandInfo; import com.zy.asrs.entity.TaskWrk; import com.zy.asrs.service.CommandInfoService; import com.zy.asrs.service.TaskWrkService; import com.zy.core.cache.MessageQueue; import com.zy.core.enums.CommandStatusType; import com.zy.core.enums.CommandType; import com.zy.core.enums.SlaveType; import com.zy.core.model.Task; import com.zy.core.model.command.CrnCommand; import com.zy.core.model.command.CommandPackage; import com.zy.core.model.protocol.StaProtocol; import java.util.Date; public class CommandUtils { public static boolean offer(SlaveType type, Integer id, Task task) { return offer(type, id, task, true); } public static boolean offer(SlaveType type, Integer id, Task task, Boolean auto) { CommandInfoService commandInfoService = SpringUtils.getBean(CommandInfoService.class); if (commandInfoService == null) { return false; } TaskWrkService taskWrkService = SpringUtils.getBean(TaskWrkService.class); if (taskWrkService == null) { return false; } CommandInfo commandInfo = null; TaskWrk taskWrk = null; int wrkNo = 0;//工作号 String taskNo = null;//任务号 if (type == SlaveType.Crn) { CommandPackage commandPackage = new CommandPackage<>(); CrnCommand command = (CrnCommand) task.getData(); wrkNo = command.getTaskNo(); if (auto && wrkNo != 0) { taskWrk = taskWrkService.selectByWrkNo(wrkNo); taskNo = taskWrk.getTaskNo(); } commandInfo = new CommandInfo(); commandInfo.setWrkNo(wrkNo); commandInfo.setTaskNo(taskNo); commandInfo.setCommandStatus(CommandStatusType.CREATE.id); commandInfo.setStartTime(new Date()); commandInfo.setDevice(SlaveType.Crn.toString()); commandInfo.setCommandType(auto? CommandType.AUTO.id : CommandType.MANUAL.id); commandInfoService.insert(commandInfo);//插入指令 command.setCommandId(commandInfo.getId()); commandPackage.setWrkNo(wrkNo); commandPackage.setDevice("堆垛机"); commandPackage.setCommand(command);//保存命令报文 commandInfo.setCommand(JSON.toJSONString(commandPackage)); commandInfoService.updateById(commandInfo); if (!auto) { //将指令进行投递 if (!MessageQueue.offer(type, id, task)) { return false; } } return true; } else if (type == SlaveType.Devp) { CommandPackage commandPackage = new CommandPackage<>(); StaProtocol staProtocol = (StaProtocol) task.getData(); wrkNo = staProtocol.getWorkNo(); if (auto && wrkNo != 0) { taskWrk = taskWrkService.selectByWrkNo(wrkNo); taskNo = taskWrk.getTaskNo(); } commandInfo = new CommandInfo(); commandInfo.setWrkNo(wrkNo); commandInfo.setTaskNo(taskNo); commandInfo.setCommandStatus(CommandStatusType.CREATE.id); commandInfo.setStartTime(new Date()); commandInfo.setDevice(SlaveType.Devp.toString()); commandInfo.setCommandType(auto? CommandType.AUTO.id : CommandType.MANUAL.id); commandInfoService.insert(commandInfo);//插入指令 // staProtocol.setCommandId(commandInfo.getId()); commandPackage.setCommand(staProtocol); commandPackage.setWrkNo(wrkNo); commandPackage.setDevice("输送线"); commandInfo.setCommand(JSON.toJSONString(commandPackage));//保存命令报文 commandInfoService.updateById(commandInfo); if (!auto) { //将指令进行投递 if (!MessageQueue.offer(type, id, task)) { return false; } } return true; } return false; } }