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.CommandPackage;
|
import com.zy.core.model.command.CrnCommand;
|
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<CrnCommand> 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<StaProtocol> 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;
|
}
|
|
}
|