From 3660c986b3ebb3e665be1753b9a022cde7322640 Mon Sep 17 00:00:00 2001 From: lishuai <1793460677@qq.com> Date: Fri, 26 Jan 2024 17:57:59 +0800 Subject: [PATCH] =?UTF-8?q?add=20:=20=E4=B8=8B=E6=96=99=E8=A1=8C=E6=9E=B6?= =?UTF-8?q?=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../volume_two_manipulator/ItemProtocol.java | 209 +++++++ .../VolumeTwoManipulatorDefination.java | 56 ++ ...TwoManipulatorManipulatorDeviceDriver.java | 569 ++++++++++++++++++ .../org/nl/acs/enums/VolumeTwoTypeEnum.java | 21 + 4 files changed, 855 insertions(+) create mode 100644 acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/volume_two_manipulator/ItemProtocol.java create mode 100644 acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/volume_two_manipulator/VolumeTwoManipulatorDefination.java create mode 100644 acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/volume_two_manipulator/VolumeTwoManipulatorManipulatorDeviceDriver.java create mode 100644 acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/enums/VolumeTwoTypeEnum.java diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/volume_two_manipulator/ItemProtocol.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/volume_two_manipulator/ItemProtocol.java new file mode 100644 index 000000000..cf261edcf --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/volume_two_manipulator/ItemProtocol.java @@ -0,0 +1,209 @@ +package org.nl.acs.device_driver.one_manipulator.volume_two_manipulator; + +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.device.device_driver.standard_inspect.ItemDto; + +import java.util.ArrayList; +import java.util.List; + +@Slf4j +@Data +public class ItemProtocol { + /** + * 心跳 + */ + public static String item_heartbeat = "heartbeat"; + /** + * 工作模式 + */ + public static String item_mode = "mode"; + /** + * 光电信号 + */ + public static String item_move = "move"; + /** + * 动作信号 + */ + public static String item_action = "action"; + + /** + * 任务号 + */ + public static String item_task = "task"; + /** + * 报警 + */ + public static String item_error = "error"; + + /** + * 行走列 + */ + public static String item_walk_y = "walk_y"; + + /** + * 行走列 + */ + public static String item_x = "x"; + + /** + * 行走层号 + */ + public static String item_y = "y"; + + + + /** + * 下发命令 + */ + public static String item_to_command = "to_command"; + /** + * 下发起始站 + */ + public static String item_to_onset1 = "to_onset1"; + /** + * 下发目标站 + */ + public static String item_to_target1 = "to_target1"; + + + /** + * 下发起始站 + */ + public static String item_to_onset2 = "to_onset2"; + /** + * 下发目标站 + */ + public static String item_to_target2 = "to_target2"; + /** + * 下发任务号 + */ + public static String item_to_task = "to_task"; + + + /** + * 下发任务类型 + */ + public static String item_to_type = "to_type"; + + + + + + + + private VolumeTwoManipulatorManipulatorDeviceDriver driver; + + public ItemProtocol(VolumeTwoManipulatorManipulatorDeviceDriver driver){ + this.driver=driver; + } + + public int getTo_onset1() { + return this.getOpcIntegerValue(item_to_onset1); + } + public int getTo_target1() { + return this.getOpcIntegerValue(item_to_target1); + } + public int getTo_onset2() { + return this.getOpcIntegerValue(item_to_onset2); + } + public int getTo_target2() { + return this.getOpcIntegerValue(item_to_target2); + } + + public int getHeartbeat() { + return this.getOpcIntegerValue(item_heartbeat); + } + + public int getMode() { + return this.getOpcIntegerValue(item_mode); + } + + public int getMove() { + return this.getOpcIntegerValue(item_move); + } + + public int getAction() { + return this.getOpcIntegerValue(item_action); + } + + public int getError() { + return this.getOpcIntegerValue(item_error); + } + + public int getTask() { + return this.getOpcIntegerValue(item_task); + } + + public int getWalk_y() { + return this.getOpcIntegerValue(item_walk_y); + } + public Integer getItem_x() { + return this.getOpcIntegerValue(item_x); + } + + public Integer getItem_y() { + return this.getOpcIntegerValue(item_y); + } + + + + + + public int getTo_task() { + return this.getOpcIntegerValue(item_to_task); + } + + public int getTo_type() { + return this.getOpcIntegerValue(item_to_type); + } + + + public int getTo_command() { + return this.getOpcIntegerValue(item_to_command); + } + + + + + + Boolean isonline; + + public int getOpcIntegerValue(String protocol) { + Integer value = this.driver.getIntegeregerValue(protocol); + if (value == null) { + setIsonline(false); + } else { + setIsonline(true); + return value; + } + return 0; + } + + public static List getReadableItemDtos() { + ArrayList list = new ArrayList<>(); + list.add(new ItemDto(item_heartbeat, "心跳", "DB1.B0")); + list.add(new ItemDto(item_mode, "工作模式", "DB1.B1")); + list.add(new ItemDto(item_move, "光电信号", "DB1.B2")); + list.add(new ItemDto(item_action, "动作信号", "DB1.B3")); + list.add(new ItemDto(item_error, "报警信号", "DB1.B5")); + list.add(new ItemDto(item_task, "任务号", "DB1.D6")); + list.add(new ItemDto(item_walk_y, "行走列", "DB1.B4")); + list.add(new ItemDto(item_x, "行走列号", "DB101.B10")); + list.add(new ItemDto(item_y, "行走层号", "DB101.B11")); + return list; + } + + public static List getWriteableItemDtos() { + ArrayList list = new ArrayList<>(); + list.add(new ItemDto(item_to_command, "下发命令", "DB2.W0")); + list.add(new ItemDto(item_to_target1, "下发目标站1", "DB2.W4")); + list.add(new ItemDto(item_to_onset1, "下发起始站1", "DB2.W2")); + list.add(new ItemDto(item_to_target2, "下发目标站2", "DB2.W14")); + list.add(new ItemDto(item_to_onset2, "下发起始站2", "DB2.W12")); + list.add(new ItemDto(item_to_task, "下发任务号", "DB2.D6")); + list.add(new ItemDto(item_to_type, "木箱长度", "DB601.W10")); + + return list; + } +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/volume_two_manipulator/VolumeTwoManipulatorDefination.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/volume_two_manipulator/VolumeTwoManipulatorDefination.java new file mode 100644 index 000000000..1c2ae19fb --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/volume_two_manipulator/VolumeTwoManipulatorDefination.java @@ -0,0 +1,56 @@ +package org.nl.acs.device_driver.one_manipulator.volume_two_manipulator; + +import org.nl.acs.device.device_driver.standard_inspect.ItemDto; +import org.nl.acs.device.domain.Device; +import org.nl.acs.device.enums.DeviceType; +import org.nl.acs.device_driver.DeviceDriver; +import org.nl.acs.device_driver.defination.OpcDeviceDriverDefination; +import org.springframework.stereotype.Service; + +import java.util.LinkedList; +import java.util.List; + +@Service +public class VolumeTwoManipulatorDefination implements OpcDeviceDriverDefination { + @Override + public String getDriverCode() { + return "trapped_manipulator"; + } + + @Override + public String getDriverName() { + return "堆叠行架"; + } + + @Override + public String getDriverDescription() { + return "堆叠行架"; + } + + @Override + public DeviceDriver getDriverInstance(Device device) { + return (new VolumeTwoManipulatorManipulatorDeviceDriver()).setDevice(device).setDriverDefination(this); + } + + @Override + public Class getDeviceDriverType() { + return VolumeTwoManipulatorManipulatorDeviceDriver.class; + } + + @Override + public List getFitDeviceTypes() { + List types = new LinkedList(); + types.add(DeviceType.robot); + return types; + } + + @Override + public List getReadableItemDtos() { + return ItemProtocol.getReadableItemDtos(); + } + + @Override + public List getWriteableItemDtos() { + return ItemProtocol.getWriteableItemDtos(); + } +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/volume_two_manipulator/VolumeTwoManipulatorManipulatorDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/volume_two_manipulator/VolumeTwoManipulatorManipulatorDeviceDriver.java new file mode 100644 index 000000000..9f1ba4199 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/volume_two_manipulator/VolumeTwoManipulatorManipulatorDeviceDriver.java @@ -0,0 +1,569 @@ +package org.nl.acs.device_driver.one_manipulator.volume_two_manipulator; + +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.common.base.CommonFinalParam; +import org.nl.acs.device.domain.Device; +import org.nl.acs.device.service.DeviceExtraService; +import org.nl.acs.device.service.impl.DeviceExtraServiceImpl; +import org.nl.acs.device_driver.DeviceDriver; +import org.nl.acs.device_driver.FeedLmsRealFailed; +import org.nl.acs.device_driver.RouteableDeviceDriver; +import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; +import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; +import org.nl.acs.device_driver.one_manipulator.trapped_manipulator.InteractionJsonDTO; +import org.nl.acs.enums.VolumeTwoTypeEnum; +import org.nl.acs.history.ErrorUtil; +import org.nl.acs.history.service.DeviceErrorLogService; +import org.nl.acs.history.service.impl.DeviceErrorLogServiceImpl; +import org.nl.acs.instruction.domain.Instruction; +import org.nl.acs.instruction.service.InstructionService; +import org.nl.acs.log.service.DeviceExecuteLogService; +import org.nl.acs.monitor.DeviceStageMonitor; +import org.nl.acs.opc.DeviceAppService; +import org.nl.acs.opc.DeviceAppServiceImpl; +import org.nl.acs.route.service.RouteLineService; +import org.nl.acs.route.service.impl.RouteLineServiceImpl; +import org.nl.acs.task.enums.TaskTypeEnum; +import org.nl.acs.task.service.TaskService; +import org.nl.acs.task.service.dto.TaskDto; +import org.nl.config.SpringContextHolder; + +import java.util.*; + +/** + * 捆扎智能行架 + */ +@Slf4j +@Data +@RequiredArgsConstructor +public class VolumeTwoManipulatorManipulatorDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor, FeedLmsRealFailed { + + protected ItemProtocol itemProtocol = new ItemProtocol(this); + + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); + + TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); + + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); + + DeviceAppService deviceAppService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); + + RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineServiceImpl.class); + + DeviceExtraService deviceExtraService = SpringContextHolder.getBean(DeviceExtraServiceImpl.class); + + DeviceErrorLogService errorLogServer = SpringContextHolder.getBean(DeviceErrorLogServiceImpl.class); + + + int mode = 0; + int last_mode = 0; + int move = 0; + int last_move = 0; + int action = 0; + int last_action = 0; + int error = 0; + int last_error = 0; + int task = 0; + int last_task = 0; + + int walk_y = 0; + int last_walk_y = 0; + int heartbeat = 0; + int last_heartbeat = 0; + int to_command = 0; + int last_to_command = 0; + + int to_target1 = 0; + int last_to_target1 = 0; + + int to_onset1 = 0; + int last_to_onset1 = 0; + + int to_target2 = 0; + int last_to_target2 = 0; + + int to_onset2 = 0; + int last_to_onset2 = 0; + int to_type = 0; + int last_to_type = 0; + /** + * 行走列 + */ + Integer x = null; + Integer last_x = null; + /** + * 行走层号 + */ + Integer y = 0; + Integer last_y = 0; + + int to_task = 0; + int last_to_task = 0; + int to_layer = 0; + + Boolean isonline = true; + int hasGoods = 0; + String message = null; + Boolean iserror = false; + private Date instruction_update_time = new Date(); + private int instruction_update_time_out = 1000; + Integer heartbeat_tag; + private Date instruction_require_time = new Date(); + + private int instruction_require_time_out = 3000; + //行架机械手申请任务成功标识 + boolean requireSucess = false; + + private int instruction_finished_time_out; + + int branchProtocol = 0; + private String error_type = "hxhj_error_type"; + + //暂定 0就绪 1请求取货 2取货完成 3请求放货 4放货完成 5取货完成离开 6放货完成离开 7请求进入区域 8请求离开区域 + int flag; + + String device_code; + + //当前指令 + Instruction inst = null; + + + String notCreateTaskMessage = ""; + String notCreateInstMessage = ""; + String feedMessage = ""; + + + List getDeviceCodeList = null; + + List putDeviceCodeList = null; + + + @Override + public Device getDevice() { + return this.device; + } + + @Override + public void execute() { + String message = null; + try { + device_code = this.getDeviceCode(); + mode = this.itemProtocol.getMode(); + move = this.itemProtocol.getMove(); + action = this.itemProtocol.getAction(); + error = this.itemProtocol.getError(); + task = this.itemProtocol.getTask(); + heartbeat = this.itemProtocol.getHeartbeat(); + x = this.itemProtocol.getItem_x(); + y = this.itemProtocol.getItem_y(); + to_command = this.itemProtocol.getTo_command(); + to_target1 = this.itemProtocol.getTo_target1(); + to_onset1 = this.itemProtocol.getTo_onset1(); + to_target2 = this.itemProtocol.getTo_target2(); + to_onset2 = this.itemProtocol.getTo_onset2(); + to_task = this.itemProtocol.getTo_task(); + to_type = this.itemProtocol.getTo_type(); + + // 更新指令状态 + if (mode == 3 && task > 0) { + updateInstructionStatus(); + } + + } catch (Exception var17) { + var17.printStackTrace(); + feedMessage = var17.getMessage(); + logServer.deviceExecuteLog(this.device_code, "", "", "读取信号值时出现异常:" + var17.getMessage() + ",this.itemProtocol is null:" + ObjectUtil.isEmpty(this.itemProtocol)); + + } + + if (mode == 0) { + this.setIsonline(false); + message = "未联机"; + //有报警 + } else if (error != 0) { + this.setIserror(true); + message = "有报警"; + //无报警 + } else { + this.setIsonline(true); + this.setIserror(false); + message = ""; + Instruction instruction = null; + List toInstructions; + + //行架机械手申请任务 + if (mode == 2 && move == 0 && task == 0 && !requireSucess) { + boolean res = applyTask(); + if (res) { + notCreateInstMessage = ""; + notCreateTaskMessage = ""; + feedMessage = ""; + } + } else { + String remark = "未查找任务原因为:"; + if (mode != 2) { + remark = remark + "工作模式(mode)不是待机状态,"; + } + if (move != 0) { + remark = remark + "光电信号(move)为有货状态,"; + } + if (task != 0) { + remark = remark + "当前上报任务号(task)应该为0,"; + if (ObjectUtil.isNotEmpty(this.inst)) { + this.inst = null; + } + } + if (requireSucess) { + remark = remark + "请右击该图标,将请求任务复位标记(requireSucess)改为否。"; + } + this.setNotCreateTaskMessage(remark); + } + + } + last_mode = mode; + last_move = move; + last_action = action; + last_error = error; + last_task = task; + last_heartbeat = heartbeat; + last_walk_y = walk_y; + last_x = x; + last_y = y; + last_to_task = to_task; + last_to_command = to_command; + last_to_target1 = to_target1; + last_to_onset1 = to_onset1; + last_to_target2 = to_target2; + last_to_onset2 = to_onset2; + last_to_type = to_type; + } + + private void updateInstructionStatus() { + Date date = new Date(); + if (date.getTime() - this.instruction_update_time.getTime() < (long) this.instruction_update_time_out) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_update_time_out); + + } else { + this.instruction_update_time = date; + //更改指令状态 + if (task > 0) { + Instruction inst = checkInst(); + if (inst != null) { + if (StrUtil.equals(inst.getInstruction_status(), "0")) { + inst.setInstruction_status(CommonFinalParam.ONE); + inst.setExecute_device_code(this.device_code); + instructionService.update(inst); + } + } + } + + //放货完成 + if ( action == 4 && move == 0) { + if (inst != null) { + try { + logServer.deviceExecuteLog(this.device_code,"","","放货完成"); + finish_instruction(inst); + Map map1 = new HashMap<>(); + List list = new ArrayList(); + map1.put("code", "to_command"); + map1.put("value", 5); + list.add(map1); + this.writing(list); + message = "放货完成"; + } catch (Exception e) { + message = "放货失败"; + e.printStackTrace(); + } + feedMessage = ""; + }else { + feedMessage = "行架机械手:"; + if (mode != 3) { + feedMessage = feedMessage + "工作模式(mode)不为运行中状态,"; + } + if (action != 8) { + feedMessage = feedMessage + "动作信号(action)不为放货完成状态,"; + } + if (move != 0) { + feedMessage = feedMessage + "光电信号(move)不为无货状态,"; + } + if (task == 0) { + feedMessage = feedMessage + "当前上报任务号(task)不应该为0。"; + } + } + } + } + } + + public synchronized boolean applyTask() { + Date date = new Date(); + if (date.getTime() - this.instruction_require_time.getTime() < (long) this.instruction_require_time_out) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); + return false; + } else { + this.instruction_require_time = date; + //抓取工位 + if (ObjectUtil.isEmpty(getDeviceCodeList)) { + getDeviceCodeList = this.getExtraDeviceCodes("get_device_code"); + } + //放货工位 + if (ObjectUtil.isEmpty(putDeviceCodeList)) { + putDeviceCodeList = this.getExtraDeviceCodes("put_device_code"); + } + //找终点为入库输送线工位任务类型为行架的任务 + for (int i = 0; i < getDeviceCodeList.size(); i++) { + String startDeviceCode = getDeviceCodeList.get(i); + TaskDto taskDto = taskserver.findByStartCodeAndReady(startDeviceCode); + if (ObjectUtil.isNotEmpty(taskDto) && TaskTypeEnum.Truss_Task.getIndex().equals(taskDto.getTask_type())) { + String start_device_code = taskDto.getStart_device_code(); + String next_device_code = taskDto.getNext_device_code(); + String start_device_code2 = taskDto.getStart_device_code2(); + String next_device_code2 = taskDto.getNext_device_code2(); + Device startDevice = deviceAppService.findDeviceByCode(start_device_code); + Device nextDevice = deviceAppService.findDeviceByCode(next_device_code); + String start_addr = startDevice.getExtraValue().get("address").toString(); + String next_addr = nextDevice.getExtraValue().get("address").toString(); + + String taskid = taskDto.getTask_id(); + String taskcode = taskDto.getTask_code(); + String start_point_code = taskDto.getStart_point_code(); + String next_point_code = taskDto.getNext_point_code(); + String start_point_code2 = taskDto.getStart_point_code2(); + String next_point_code2 = taskDto.getNext_point_code2(); + String route_plan_code = taskDto.getRoute_plan_code(); + Instruction instdto = new Instruction(); + instdto.setInstruction_id(IdUtil.simpleUUID()); + instdto.setRoute_plan_code(route_plan_code); + instdto.setTask_id(taskid); + instdto.setTask_code(taskcode); + instdto.setCreate_by("auto"); + instdto.setStart_device_code(start_device_code); + instdto.setNext_device_code(next_device_code); + instdto.setStart_point_code(start_point_code); + instdto.setNext_point_code(next_point_code); + instdto.setStart_device_code2(start_device_code2); + instdto.setNext_device_code2(next_device_code2); + instdto.setStart_point_code2(start_point_code2); + instdto.setNext_point_code2(next_point_code2); + instdto.setInstruction_status("0"); + instdto.setExecute_device_code(device_code); + + try { + instructionService.create(instdto); + } catch (Exception e) { + notCreateInstMessage = e.getMessage(); + logServer.deviceExecuteLog(this.getDevice_code(), "", "", "创建指令时出现异常:" + e.getMessage()); + return false; + } + logServer.deviceExecuteLog(device_code, "", "", "当前设备:" + device_code + ",下发指令:" + + instdto.getInstruction_code() + ",指令起点:" + instdto.getStart_device_code() + + ",指令终点:" + instdto.getNext_device_code() ); + //创建指令后修改任务状态 + taskDto.setTask_status("1"); + taskserver.update(taskDto); + requireSucess = true; + + Map map1 = new HashMap<>(); + List list = new ArrayList(); + map1.put("code", "to_command"); + map1.put("value", 1); + list.add(map1); + Map map2 = new HashMap<>(); + map2.put("code", "to_target"); + map2.put("value", next_addr); + list.add(map2); + Map map3 = new HashMap<>(); + map3.put("code", "to_onset"); + map3.put("value", start_addr); + list.add(map3); + Map map4 = new HashMap<>(); + map4.put("code", "to_task"); + map4.put("value", instdto.getInstruction_code()); + list.add(map4); + String toType = VolumeTwoTypeEnum.TOW.getType(); + if (StrUtil.isNotEmpty(start_device_code2)) { + toType = VolumeTwoTypeEnum.FOUR.getType(); + Device startDevice2 = deviceAppService.findDeviceByCode(start_device_code2); + Device nextDevice2 = deviceAppService.findDeviceByCode(next_device_code2); + String start_addr2 = startDevice2.getExtraValue().get("address").toString(); + String next_addr2 = nextDevice2.getExtraValue().get("address").toString(); + Map map5 = new HashMap<>(); + map5.put("code", "to_target2"); + map5.put("value", next_addr2); + list.add(map5); + Map map6 = new HashMap<>(); + map6.put("code", "to_onset2"); + map6.put("value", start_addr2); + list.add(map6); + } + Map map7 = new HashMap<>(); + map7.put("code", "to_type"); + map7.put("value", toType); + list.add(map7); + try { + this.writing(list); + } catch (Exception e) { + logServer.deviceExecuteLog(device_code, "", "", "当前设备:" + device_code + ",下发指令:" + + instdto.getInstruction_code() + ",指令起点:" + instdto.getStart_device_code() + + ",指令终点:" + instdto.getNext_device_code() + ",指令执行失败:" + e.getMessage()); + } + this.setRequireSucess(true); + return true; + }else{ + notCreateInstMessage = "未找到关联设备的任务,指令无法创建"; + } + } + return true; + } + + } + + /** + * 完成指令 + * @param inst + * @return + * @throws Exception + */ + public synchronized boolean finish_instruction(Instruction inst) throws Exception { + instructionService.finish(inst); + return true; + } + + /** + * 下发信号 + * @param list + */ + public void writing(List list) { + + Map itemMap = new HashMap(); + for (int i = 0; i < list.size(); i++) { + Object ob = list.get(i); + JSONObject json = (JSONObject) JSONObject.toJSON(ob); + if (!StrUtil.isEmpty(json.getString("value"))) { + String to_param = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() + + "." + json.getString("code"); + itemMap.put(to_param, json.getString("value")); + } + } + logServer.deviceExecuteLog(device_code, "", "", "下发电气信号:" + itemMap); + try { + this.checkcontrol(itemMap); + } catch (Exception e) { + e.printStackTrace(); + try { + this.checkcontrol(itemMap); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + + } + + /** + * 抽取统一下发电气信号前缀 + * + * @return + */ + public String getToParam() { + return this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() + "."; + } + @Override + public JSONObject getDeviceStatusName() { + JSONObject jo = new JSONObject(); + String mode = ""; + String move = ""; + String action = ""; + String walk_y = ""; + if (this.getMode() == 0) { + mode = "脱机"; + } else if (this.getMode() == 1) { + mode = "单机"; + } else if (this.getMode() == 2) { + mode = "待机"; + } else if (this.getMode() == 3) { + mode = "运行中"; + } + + if (this.getMove() == 0) { + move = "无货"; + } else if (this.getMove() == 1) { + move = "有货"; + } + + String requireSucess = "0"; + if (this.requireSucess) { + requireSucess = "1"; + } + jo.put("requireSucess", requireSucess); + if (this.getAction() == 1) { + action = "取货中"; + } else if (this.getAction() == 2) { + action = "取货完成"; + } else if (this.getAction() == 3) { + action = "放货中"; + } else if (this.getAction() == 4) { + action = "放货完成"; + } + + jo.put("device_name", this.getDevice().getDevice_name()); + jo.put("mode", mode); + jo.put("move", move); + jo.put("action", action); + jo.put("task", task); + jo.put("isOnline", this.getIsonline()); + jo.put("error", this.getError()); + jo.put("isError", this.getIserror()); + jo.put("message", this.getMessage()); + jo.put("notCreateTaskMessage", notCreateTaskMessage); + jo.put("notCreateInstMessage", notCreateInstMessage); + jo.put("feedMessage", feedMessage); + jo.put("driver_type", "siemens_conveyor"); + jo.put("is_click", true); + return jo; + } + + @Override + public void setDeviceStatus(JSONObject data) { + String requestSucess = data.getString("requireSucess"); + if (StrUtil.equals(requestSucess, "0")) { + this.requireSucess = false; + } else if (StrUtil.equals(requestSucess, "1")) { + this.requireSucess = true; + } + } + + @Override + public JSONObject feedLmsRealFailedInfo() { + JSONObject jo = new JSONObject(); + jo.put("device_code", this.getDevice().getDevice_code()); + jo.put("device_name", this.getDevice().getDevice_name()); + jo.put("fault_code", String.valueOf(error)); + jo.put("fault_info", ErrorUtil.getDictDetail(error_type, String.valueOf(this.getError()))); + jo.put("fault_type", error_type); + return jo; + } + + + public Instruction checkInst() { + if (ObjectUtil.isNotEmpty(this.inst)) { + if (this.task > 0) { + if (this.inst.getInstruction_code().equals(String.valueOf(this.task))) { + return this.inst; + } else { + inst = instructionService.findByCodeFromCache(String.valueOf(task)); + return inst; + } + } + } else { + inst = instructionService.findByCodeFromCache(String.valueOf(task)); + return inst; + } + return null; + } +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/enums/VolumeTwoTypeEnum.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/enums/VolumeTwoTypeEnum.java new file mode 100644 index 000000000..164a3c7e9 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/enums/VolumeTwoTypeEnum.java @@ -0,0 +1,21 @@ +package org.nl.acs.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum VolumeTwoTypeEnum { + + TOW("1", "2点取放任务"), + + FOUR("2", "4点任务,取放满卷后取放空架子任务"); + /** + * 索引 + */ + private String type; + /** + * 编码 + */ + private String value; +}