diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndctwo/AgvNdcTwoDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndctwo/AgvNdcTwoDeviceDriver.java index b8ea52bd9..1b3be020d 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndctwo/AgvNdcTwoDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndctwo/AgvNdcTwoDeviceDriver.java @@ -242,16 +242,19 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); } else if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); + try { standardInspectSiteDeviceDriver.writing("to_command", "1"); } catch (Exception e) { e.printStackTrace(); } - if ((standardInspectSiteDeviceDriver.getMove() == 1 && standardInspectSiteDeviceDriver.getAction() == 1) || standardInspectSiteDeviceDriver.getIs_force() == 1) { + if ((standardInspectSiteDeviceDriver.getMove() == 1 && standardInspectSiteDeviceDriver.getAction() == 1 && standardInspectSiteDeviceDriver.getError() == 0) + || standardInspectSiteDeviceDriver.getIs_force() == 1 ) { data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); } else { - message = "设备号:" + device_code + "光电信号:" + standardInspectSiteDeviceDriver.getMove() + ",动作信号:" + standardInspectSiteDeviceDriver.getAction() + ",指令号:" + ikey + "不满足取货条件"; - log.info("设备{}当前光电信号{},动作信号{},不满足取货条件,指令号{}", device_code, standardInspectSiteDeviceDriver.getMove(), standardInspectSiteDeviceDriver.getAction(), ikey); + message = "设备号:" + device_code + "光电信号:" + standardInspectSiteDeviceDriver.getMove() + ",动作信号:" + standardInspectSiteDeviceDriver.getAction()+ "报警信号:" + standardInspectSiteDeviceDriver.getError() + ",指令号:" + ikey + "不满足取货条件"; + log.info("设备{}当前光电信号{},动作信号{} ,错误信号{},不满足取货条件,指令号{}", device_code, standardInspectSiteDeviceDriver.getMove(), standardInspectSiteDeviceDriver.getAction() + ,standardInspectSiteDeviceDriver.getError(), ikey); } standardInspectSiteDeviceDriver.setIs_force(0); } else { @@ -518,8 +521,13 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic } else if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); standardInspectSiteDeviceDriver.writing("to_command", "1"); - if ((standardInspectSiteDeviceDriver.getMove() == 0 && standardInspectSiteDeviceDriver.getAction() == 1) || standardInspectSiteDeviceDriver.getIs_force() == 1) { + if ((standardInspectSiteDeviceDriver.getMove() == 0 && standardInspectSiteDeviceDriver.getAction() == 1 && standardInspectSiteDeviceDriver.getError() == 0) + || standardInspectSiteDeviceDriver.getIs_force() == 1) { data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); + }else { + message = "设备号:" + device_code + "光电信号:" + standardInspectSiteDeviceDriver.getMove() + ",动作信号:" + standardInspectSiteDeviceDriver.getAction()+ "报警信号:" + standardInspectSiteDeviceDriver.getError() + ",指令号:" + ikey + "不满足放货条件"; + log.info("设备{}当前光电信号{},动作信号{} ,报警信号{},不满足放货条件,指令号{}", device_code, standardInspectSiteDeviceDriver.getMove(), standardInspectSiteDeviceDriver.getAction() + ,standardInspectSiteDeviceDriver.getError(), ikey); } standardInspectSiteDeviceDriver.setIs_force(0); } else { diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/casing_station/CasingStationConveyorDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/casing_station/CasingStationConveyorDeviceDriver.java index 81e68a0c0..f2b24e088 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/casing_station/CasingStationConveyorDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/casing_station/CasingStationConveyorDeviceDriver.java @@ -291,7 +291,11 @@ public class CasingStationConveyorDeviceDriver extends AbstractOpcDeviceDriver i if (ObjectUtil.isNotEmpty(inst1)) { String task_code = inst1.getTask_code(); if (Long.parseLong(task_code) < 1) { - message = "任务ACS创建,不反馈LMS取货完成"; + Map map = new LinkedHashMap<>(); + map.put("to_command", 6); + this.writing(map); + requireSucess = true; + message = "任务ACS创建,不反馈LMS套管工位取货完成"; return; } applyManipulatorActionRequest.setAction("1"); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/indoor_manipulator/IndoorManipulatorDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/indoor_manipulator/IndoorManipulatorDeviceDriver.java index b338c56ca..f6ae2ec2b 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/indoor_manipulator/IndoorManipulatorDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/indoor_manipulator/IndoorManipulatorDeviceDriver.java @@ -243,6 +243,7 @@ public class IndoorManipulatorDeviceDriver extends AbstractOpcDeviceDriver imple // this.setNow_steps_type(0); // logServer.deviceExecuteLog(this.device_code, "", "", "当前执行步骤复位后:" + this.getNow_steps_type()); // } + requireSucess = false; feedMessage = ""; notCreateInstMessage = ""; notCreateTaskMessage = ""; @@ -393,6 +394,7 @@ public class IndoorManipulatorDeviceDriver extends AbstractOpcDeviceDriver imple itemMap.put(getToParam() + key, value); } }); + logServer.deviceExecuteLog(device_code, "", "", "下发电气信号:" + itemMap); if (ObjectUtil.isNotEmpty(itemMap)) { try { this.checkcontrol(itemMap); @@ -442,7 +444,11 @@ public class IndoorManipulatorDeviceDriver extends AbstractOpcDeviceDriver imple if (mode == 3 && action == 2) { String task_code = inst1.getTask_code(); if(Long.parseLong(task_code) < 1){ + Map map = new LinkedHashMap<>(); + map.put("to_command", 2); + this.writing(map); message = "任务ACS创建,不反馈LMS尺寸"; + feedbackSucess = true; return; } applyManipulatorActionRequest.setType("2"); @@ -454,7 +460,7 @@ public class IndoorManipulatorDeviceDriver extends AbstractOpcDeviceDriver imple message = "反馈尺寸LMS成功..."; logServer.deviceExecuteLog(this.device_code, "", "", "反馈尺寸成请求成功,响应参数:" + JSON.toJSONString(applyManipulatorActionResponse)); Map map = new LinkedHashMap<>(); - map.put("to_command", 2); + map.put("to_command", "2"); this.writing(map); } else { feedbackSucess = false; @@ -480,7 +486,7 @@ public class IndoorManipulatorDeviceDriver extends AbstractOpcDeviceDriver imple Map map = new LinkedHashMap<>(); map.put("inflatableShaftVersion", applyManipulatorActionResponse.getVersion()); map.put("to_size", applyManipulatorActionResponse.getSize()); - map.put("to_command", 3); + map.put("to_command", "3"); map.put("to_putpoint", Integer.parseInt(to_putpoint)); this.writing(map); feedbackSucess = true; @@ -506,7 +512,7 @@ public class IndoorManipulatorDeviceDriver extends AbstractOpcDeviceDriver imple Device device = deviceAppService.findDeviceByCode(get_device_code); String to_new_getpoint = device.getExtraValue().get("address").toString(); Map map = new LinkedHashMap<>(); - map.put("to_command", 4); + map.put("to_command", "4"); map.put("inflatableShaftVersion", applyManipulatorActionResponse.getVersion()); map.put("to_new_getpoint", Integer.parseInt(to_new_getpoint)); this.writing(map); @@ -535,8 +541,7 @@ public class IndoorManipulatorDeviceDriver extends AbstractOpcDeviceDriver imple String to_two_putpoint = device.getExtraValue().get("address").toString(); Map map = new LinkedHashMap<>(); map.put("inflatableShaftVersion", applyManipulatorActionResponse.getVersion()); -// map.put("to_size", applyManipulatorActionResponse.getSize()); - map.put("to_command", 5); + map.put("to_command", "5"); map.put("to_two_putpoint", Integer.parseInt(to_two_putpoint)); this.writing(map); feedbackSucess = true; @@ -552,6 +557,10 @@ public class IndoorManipulatorDeviceDriver extends AbstractOpcDeviceDriver imple if (mode == 3 && action == 6) { String task_code = inst1.getTask_code(); if(Long.parseLong(task_code) < 1){ + Map map = new LinkedHashMap<>(); + map.put("to_command", "6"); + this.writing(map); + feedbackSucess = true; message = "任务ACS创建,不反馈LMS缓存库取货成功"; return; } @@ -561,7 +570,7 @@ public class IndoorManipulatorDeviceDriver extends AbstractOpcDeviceDriver imple if (applyManipulatorActionResponse1.getstatus() == 200) { logServer.deviceExecuteLog(this.device_code, "", "", "缓存库取货请求成功,响应参数:" + JSON.toJSONString(applyManipulatorActionResponse1)); Map map = new LinkedHashMap<>(); - map.put("to_command", 6); + map.put("to_command", "6"); this.writing(map); message = "缓存库取货完成"; feedbackSucess = true; @@ -575,6 +584,10 @@ public class IndoorManipulatorDeviceDriver extends AbstractOpcDeviceDriver imple if (mode == 3 && action == 7) { String task_code = inst1.getTask_code(); if(Long.parseLong(task_code) < 1){ + Map map = new LinkedHashMap<>(); + map.put("to_command", "7"); + this.writing(map); + feedbackSucess = true; message = "任务ACS创建,不反馈LMS缓存库放货完成"; return; } @@ -584,7 +597,7 @@ public class IndoorManipulatorDeviceDriver extends AbstractOpcDeviceDriver imple if (applyManipulatorActionResponse1.getstatus() == 200) { logServer.deviceExecuteLog(this.device_code, "", "", "缓存库放货完成,响应参数:" + JSON.toJSONString(applyManipulatorActionResponse1)); Map map = new LinkedHashMap<>(); - map.put("to_command", 7); + map.put("to_command", "7"); this.writing(map); feedbackSucess = true; message = "缓存库放货成功"; @@ -604,7 +617,7 @@ public class IndoorManipulatorDeviceDriver extends AbstractOpcDeviceDriver imple taskserver.cancel(byTaskCode.getTask_id()); logServer.deviceExecuteLog(this.device_code, "", "", "取消任务完成"); Map map = new LinkedHashMap<>(); - map.put("to_command", 9); + map.put("to_command", "9"); this.writing(map); feedbackSucess = true; message = "异常气胀轴任务取消成功"; @@ -622,7 +635,7 @@ public class IndoorManipulatorDeviceDriver extends AbstractOpcDeviceDriver imple feedbackSucess = true; finish_instruction(inst1); Map map = new LinkedHashMap<>(); - map.put("to_command", 8); + map.put("to_command", "8"); this.writing(map); message = "放货完成"; } catch (Exception e) { @@ -868,18 +881,26 @@ public class IndoorManipulatorDeviceDriver extends AbstractOpcDeviceDriver imple String is_bushing = taskDto.getIs_bushing(); String version = taskDto.getVersion(); String bushing_num = taskDto.getBushing_num(); - - Map map = new LinkedHashMap<>(); - map.put("to_command", 1); + /*Map map = new LinkedHashMap<>(); + map.put("to_command", "1"); map.put("inflatableShaftVersion", version); - map.put("tube_num", bushing_num); - map.put("is_wrapped", is_bushing); + map.put("tube_num", StrUtil.isEmpty(bushing_num) ? "0" : bushing_num); + map.put("is_wrapped",StrUtil.isEmpty(is_bushing) ? "0" : is_bushing ); map.put("to_task_type", taskDto.getTruss_type()); map.put("to_onset", start_addr); map.put("to_task", instruction.getInstruction_code()); - map.put("to_target", next_addr); + map.put("to_target", next_addr);*/ + List list = new ArrayList(); + writing(list,"to_command","1"); + writing(list,"inflatableShaftVersion",version); + writing(list,"tube_num",StrUtil.isEmpty(bushing_num) ? "0" : bushing_num); + writing(list,"is_wrapped",StrUtil.isEmpty(is_bushing) ? "0" : is_bushing); + writing(list,"to_task_type",taskDto.getTruss_type()); + writing(list,"to_onset",start_addr); + writing(list,"to_task",instruction.getInstruction_code()); + writing(list,"to_target",next_addr); try { - this.writing(map); + this.writing(list); } catch (Exception e) { logServer.deviceExecuteLog(device_code, "", "", "下发指令:" + instruction.getInstruction_code() + ",指令起点:" + instruction.getStart_device_code() + ",指令终点:" + instruction.getNext_device_code() + ",指令执行失败:" + e.getMessage()); @@ -987,21 +1008,30 @@ public class IndoorManipulatorDeviceDriver extends AbstractOpcDeviceDriver imple String next_addr = nextDevice.getExtraValue().get("address").toString(); logServer.deviceExecuteLog(device_code, "", "", "当前设备:" + device_code + ",下发指令:" + instdto.getInstruction_code() + ",指令起点:" + instdto.getStart_device_code() - + ",指令终点:" + instdto.getNext_device_code()); - Map map = new LinkedHashMap<>(); - map.put("to_command", 1); - map.put("to_task_type", Integer.parseInt(task.getTruss_type())); - map.put("to_onset", Integer.parseInt(start_addr)); - map.put("to_task", Integer.parseInt(instdto.getInstruction_code())); - map.put("to_target", Integer.parseInt(next_addr)); + + ",指令终点:" + instdto.getNext_device_code()+ "指令号:" + instdto.getInstruction_code()+ + "行架任务类型: "+ task.getTruss_type() + "起点:"+ start_addr + "终点"+ next_addr); + /*Map map = new LinkedHashMap<>(); + map.put("to_command", "1"); + map.put("to_task_type", task.getTruss_type()); + map.put("to_onset", start_addr); + map.put("to_task", instdto.getInstruction_code()); + map.put("to_target", next_addr); if (!StrUtil.isEmpty(task.getVersion())) { map.put("inflatableShaftVersion", task.getVersion()); - } - this.writing(map); + }*/ + + List list = new ArrayList(); + writing(list,"to_command","1"); + writing(list,"to_task_type",task.getTruss_type()); + writing(list,"to_onset",start_addr); + writing(list,"to_task",instdto.getInstruction_code()); + writing(list,"to_target",next_addr); + writing(list,"inflatableShaftVersion",StrUtil.isEmpty(task.getVersion()) ? "0" : task.getVersion()); try { - this.writing(map); + this.writing(list); } catch (Exception e) { - logServer.deviceExecuteLog(device_code, "", "", "下发指令:" + instdto.getInstruction_code() + ",指令起点:" + instdto.getStart_device_code() + logServer.deviceExecuteLog(device_code, "", "", "下发指令:" + instdto.getInstruction_code() + + ",指令起点:" + instdto.getStart_device_code() + ",指令终点:" + instdto.getNext_device_code() + ",指令执行失败:" + e.getMessage()); } this.setRequireSucess(true); @@ -1015,6 +1045,38 @@ public class IndoorManipulatorDeviceDriver extends AbstractOpcDeviceDriver imple } } + public void writing(List list,String writingName,String writeValue) { + Map map = new HashMap(); + map.put("code", writingName); + map.put("value", writeValue); + list.add(map); + } + + 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(); + } + } + + } + private Boolean checkAgv(TaskDto taskDto) { StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; RgvDeviceDriver rgv1; diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/plugging_unplugging_machine/PluggingUnpluggingMachineDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/plugging_unplugging_machine/PluggingUnpluggingMachineDeviceDriver.java index e89644ebd..a72785729 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/plugging_unplugging_machine/PluggingUnpluggingMachineDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/plugging_unplugging_machine/PluggingUnpluggingMachineDeviceDriver.java @@ -107,7 +107,7 @@ public class PluggingUnpluggingMachineDeviceDriver extends AbstractOpcDeviceDriv if (mode != last_mode) { this.requireSucess = false; - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode + "复位请求标记"); + logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode + "复位请求标记" + requireSucess); } if (move != last_move) { logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + last_move + "->" + move); @@ -147,7 +147,7 @@ public class PluggingUnpluggingMachineDeviceDriver extends AbstractOpcDeviceDriv case 3: break; case 4: - if ((task1 > 0) && !requireSucess) { + if (!requireSucess) { applyBushing(); } break; @@ -185,24 +185,32 @@ public class PluggingUnpluggingMachineDeviceDriver extends AbstractOpcDeviceDriv private void deliveryCompleted() { ApplyManipulatorActionRequest applyManipulatorActionRequest = new ApplyManipulatorActionRequest(); applyManipulatorActionRequest.setAction("1"); - applyManipulatorActionRequest.setTask_code1(String.valueOf(task1)); - ApplyManipulatorActionResponse applyManipulatorActionResponse = acsToWmsService.actionFinishRequest(applyManipulatorActionRequest); - if (applyManipulatorActionResponse.getstatus() == 200) { - logServer.deviceExecuteLog(this.device_code, "", "", "插拔机取货完成,请求成功响应参数:" + JSON.toJSONString(applyManipulatorActionResponse)); - Map map = new LinkedHashMap<>(); + Instruction inst1 = instructionService.findByCode(String.valueOf(task1)); + String task_code1 = inst1.getTask_code(); + Map map = new LinkedHashMap<>(); + if (Long.parseLong(task_code1) < 1) { map.put("to_command", 7); this.writing(map); requireSucess = true; - message = "缓存库放货成功"; + message = "任务ACS创建,不向LMS反馈插拔机取货完成"; + return; + } + applyManipulatorActionRequest.setTask_code1(task_code1); + ApplyManipulatorActionResponse applyManipulatorActionResponse = acsToWmsService.actionFinishRequest(applyManipulatorActionRequest); + if (applyManipulatorActionResponse.getstatus() == 200) { + logServer.deviceExecuteLog(this.device_code, "", "", "插拔机取货完成,请求成功响应参数:" + JSON.toJSONString(applyManipulatorActionResponse)); + map.put("to_command", 7); + this.writing(map); + requireSucess = true; + message = "插拔机取货完成反馈成功"; } else { requireSucess = false; logServer.deviceExecuteLog(this.device_code, "", "", "插拔机取货完成,请求失败响应参数:" + JSON.toJSONString(applyManipulatorActionResponse)); - message = "缓存库放货失败"; + message = "插拔机取货完成反馈失败"; } } private synchronized void pullingSucess() { - List list = new ArrayList(); ApplyManipulatorActionRequest applyManipulatorActionRequest = new ApplyManipulatorActionRequest(); ApplyManipulatorActionResponse applyManipulatorActionResponse; Instruction inst1 = instructionService.findByCode(String.valueOf(task1)); @@ -264,45 +272,41 @@ public class PluggingUnpluggingMachineDeviceDriver extends AbstractOpcDeviceDriv } private synchronized void applyBushing() { - List list = new ArrayList(); ApplyManipulatorActionRequest applyManipulatorActionRequest = new ApplyManipulatorActionRequest(); ApplyManipulatorActionResponse applyManipulatorActionResponse; - Instruction inst1 = instructionService.findByCode(String.valueOf(task1)); -// Instruction inst2 = instructionService.findByCode(String.valueOf(task2)); + /*Instruction inst1 = instructionService.findByCode(String.valueOf(task1)); String task_code1 = inst1.getTask_code(); if (Long.parseLong(task_code1) < 1) { message = "任务ACS创建,不向LMS申请套轴"; return; - } -// String task_code2 = inst2.getTask_code(); + }*/ applyManipulatorActionRequest.setDevice_code(device_code); - applyManipulatorActionRequest.setTask_code1(task_code1); -// applyManipulatorActionRequest.setTask_code2(task_code2); + //applyManipulatorActionRequest.setTask_code1(task_code1); applyManipulatorActionRequest.setType("6"); applyManipulatorActionResponse = acsToWmsService.applyManipulatorActionRequest(applyManipulatorActionRequest); - if (ObjectUtils.isNotEmpty(applyManipulatorActionResponse) && "1".equals(applyManipulatorActionResponse.getIs_bushing())) { + if (ObjectUtils.isNotEmpty(applyManipulatorActionResponse) && ("1".equals(applyManipulatorActionResponse.getIs_bushing()))) { + logServer.deviceExecuteLog(this.device_code, "", "", "申请套轴成功,返回参数:" + applyManipulatorActionResponse); Map map = new LinkedHashMap<>(); - map.put("to_command", 4); + map.put("to_command", "4"); this.writing(map); requireSucess = true; - logServer.deviceExecuteLog(this.device_code, "", "", "申请套轴成功,返回参数:" + applyManipulatorActionResponse); message = "套轴申请成功"; - } else if (ObjectUtils.isNotEmpty(applyManipulatorActionResponse) && "2".equals(applyManipulatorActionResponse.getIs_bushing())) { + } else if (ObjectUtils.isNotEmpty(applyManipulatorActionResponse) && ("2".equals(applyManipulatorActionResponse.getIs_bushing()))) { message = applyManipulatorActionResponse.getMessage(); + logServer.deviceExecuteLog(this.device_code, "", "", "等待套轴,返回参数:" + applyManipulatorActionResponse); Map map = new LinkedHashMap<>(); - map.put("to_command", 98); + map.put("to_command", "98"); this.writing(map); requireSucess = true; message = "等待套轴"; - logServer.deviceExecuteLog(this.device_code, "", "", "等待套轴,返回参数:" + applyManipulatorActionResponse); - } else { + } else if (ObjectUtils.isNotEmpty(applyManipulatorActionResponse) && ("0".equals(applyManipulatorActionResponse.getIs_bushing()))){ message = applyManipulatorActionResponse.getMessage(); + logServer.deviceExecuteLog(this.device_code, "", "", "套轴申请失败,返回参数:" + applyManipulatorActionResponse); Map map = new LinkedHashMap<>(); - map.put("to_command", 99); + map.put("to_command", "99"); this.writing(map); requireSucess = true; message = "套轴申请失败"; - logServer.deviceExecuteLog(this.device_code, "", "", "套轴申请失败,返回参数:" + applyManipulatorActionResponse); } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/rgv/RgvDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/rgv/RgvDeviceDriver.java index 993fa5c68..30ee81d0a 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/rgv/RgvDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/rgv/RgvDeviceDriver.java @@ -63,6 +63,8 @@ public class RgvDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDr int last_error = 0; int move1 = 0; int last_move1 = 0; + int to_command = 0; + int last_to_command = 0; Integer move2 = 0; Integer last_move2 = 0; Float qty1 = 0f; @@ -105,7 +107,7 @@ public class RgvDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDr qty1 = this.itemProtocol.getQty1(); qty2 = this.itemProtocol.getQty2(); task = this.itemProtocol.getTask(); - + to_command = this.itemProtocol.getToCommand(); if (mode != last_mode) { this.requireSucess = false; @@ -126,6 +128,9 @@ public class RgvDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDr if(task != last_task){ logServer.deviceExecuteLog(this.device_code, "", "", "信号task:" + last_task + "->" + task); } + if(to_command != last_to_command){ + logServer.deviceExecuteLog(this.device_code, "", "", "信号to_command:" + last_to_command + "->" + to_command); + } } catch (Exception var17) { @@ -179,6 +184,7 @@ public class RgvDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDr last_task = task; last_qty1 = qty1; last_qty2 = qty2; + last_to_command = to_command; } private void manualFeedbackQty() { @@ -201,14 +207,14 @@ public class RgvDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDr message = "手动反馈LMS成功..."; logServer.deviceExecuteLog(this.device_code, "", "", "手动反馈重量请求成功,响应参数:" + JSON.toJSONString(applyManipulatorActionResponse)); Map map = new LinkedHashMap<>(); - map.put("to_command", 5); + map.put("to_command", "5"); this.writing(map); } else { requireSucess = false; message = "手动完成反馈LMS失败," + applyManipulatorActionResponse.getMessage(); logServer.deviceExecuteLog(this.device_code, "", "", "手动反馈重量请求失败,响应参数:" + JSON.toJSONString(applyManipulatorActionResponse)); Map map = new LinkedHashMap<>(); - map.put("to_command", 99); + map.put("to_command", "99"); this.writing(map); } } @@ -232,14 +238,14 @@ public class RgvDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDr message = "自动反馈LMS成功..."; logServer.deviceExecuteLog(this.device_code, "", "", "自动反馈重量请求成功,响应参数:" + JSON.toJSONString(applyManipulatorActionResponse)); Map map = new LinkedHashMap<>(); - map.put("to_command", 4); + map.put("to_command", "4"); this.writing(map); } else { requireSucess = false; message = "自动完成反馈LMS失败," + String.valueOf(applyManipulatorActionResponse); logServer.deviceExecuteLog(this.device_code, "", "", "自动反馈重量请求失败,响应参数:" + JSON.toJSONString(applyManipulatorActionResponse)); Map map = new LinkedHashMap<>(); - map.put("to_command", 99); + map.put("to_command", "99"); this.writing(map); } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor/SiemensConveyorDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor/SiemensConveyorDeviceDriver.java index 03990b473..8dd8baaf5 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor/SiemensConveyorDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor/SiemensConveyorDeviceDriver.java @@ -659,7 +659,6 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme } public void writing(List list) { - Map itemMap = new HashMap(); for (int i = 0; i < list.size(); i++) { Object ob = list.get(i); @@ -1091,7 +1090,6 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme JSONObject jo = JSON.parseObject(str); if (ObjectUtil.isEmpty(jo)) { message = "申请补码AGV搬运任务接口不通"; -// requireSucess = true; } else { if (jo.getInteger("status") == 200) { message = "申请补码AGV搬运任务成功"; @@ -1109,7 +1107,6 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme logServer.deviceExecuteLog(this.device_code, "", "", "申请补码AGV任务,返回参数:" + jo); requireSucess = true; } else { -// requireSucess = true; message = "申请补码AGV搬运任务失败," + jo.get("message").toString(); } } @@ -1161,7 +1158,6 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme logServer.deviceExecuteLog(this.device_code, "", "", "申请AGV任务,返回参数:" + jo); requireSucess = true; } else { -// requireSucess = true; message = "申请AGV搬运任务失败," + jo.get("message").toString(); } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/driver/AbstractOpcDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/driver/AbstractOpcDeviceDriver.java index ab5de46c6..dc02d7d5a 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/driver/AbstractOpcDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/driver/AbstractOpcDeviceDriver.java @@ -64,8 +64,10 @@ public class AbstractOpcDeviceDriver extends AbstractDeviceDriver implements Opc try{ if(i == 0){ control( itemValues); + log.info("i等于0:{}",itemValues); } else { controlByNewConn( itemValues); + log.info("i不等于0:{}",itemValues); } } catch (Exception e){ @@ -108,10 +110,11 @@ public class AbstractOpcDeviceDriver extends AbstractDeviceDriver implements Opc String itemString = (String)var24.next(); if (!ObjectUtl.isEquals(String.valueOf(itemValues.get(itemString)), String.valueOf(read.get(itemString)))) { check = false; + log.info("写入失败,写入值为{},读取值为==={}" , itemValues.get(itemString), read.get(itemString)); } } } catch (Exception e){ - e.printStackTrace(); + log.info("写入信号出现异常:{}",e.getMessage()); check = false; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/task/service/dto/TaskDto.java b/acs/nladmin-system/src/main/java/org/nl/acs/task/service/dto/TaskDto.java index a1ea21fb0..2f5f4f03b 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/task/service/dto/TaskDto.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/task/service/dto/TaskDto.java @@ -342,6 +342,14 @@ public class TaskDto implements Serializable { private String paper_array; private JSONArray paperArray; + /** + * 仓位 + */ + private String device_code; + /** + * 数量 + */ + private String qty; diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java index 62229877c..1504c8294 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java @@ -1,11 +1,15 @@ package org.nl.acs.task.service.impl; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpResponse; +import cn.hutool.json.InternalJSONUtil; +import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -20,6 +24,7 @@ import org.nl.acs.device.service.DeviceService; import org.nl.acs.device.service.StorageCellService; import org.nl.acs.device.service.dto.DeviceAssignedDto; import org.nl.acs.device.service.impl.DeviceServiceImpl; +import org.nl.acs.device_driver.basedriver.paper_tube_device2.Paper; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.instruction.service.dto.Instruction; @@ -210,6 +215,28 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { Integer currentPageNumber = page.getPageNumber() + 1; Integer pageMaxSize = page.getPageSize(); + for (TaskDto taskDto : taskList) { + if("10".equals(taskDto.getTask_type())){ + cn.hutool.json.JSONArray jsonArray = JSONUtil.parseArray(taskDto.getPaper_array()); + List papers = JSONUtil.toList(jsonArray, Paper.class); + StringBuilder task_paper = new StringBuilder(); + StringBuilder task_qty = new StringBuilder(); + for (Paper paper : papers) { + task_qty.append(paper.getQty()).append(","); + task_paper.append(paper.getDevice_code()).append(","); + } + String qty = task_qty.toString(); + if (qty.endsWith(",")) { + qty = qty.substring(0, qty.length() - 1); + } + String device_code = task_paper.toString(); + if (device_code.endsWith(",")) { + device_code = device_code.substring(0, device_code.length() - 1); + } + taskDto.setDevice_code(device_code); + taskDto.setQty(qty); + } + } List taskDtoList = taskList.stream() .skip((currentPageNumber - 1) * pageMaxSize) diff --git a/acs/nladmin-system/src/main/resources/config/application-dev.yml b/acs/nladmin-system/src/main/resources/config/application-dev.yml index e0243e89f..e4b08d5dc 100644 --- a/acs/nladmin-system/src/main/resources/config/application-dev.yml +++ b/acs/nladmin-system/src/main/resources/config/application-dev.yml @@ -13,11 +13,11 @@ spring: driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy # url: jdbc:log4jdbc:mysql://${DB_HOST:10.1.3.91}:${DB_PORT:3306}/${DB_NAME:acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true # url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:lzhl_one_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true - url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:lzhl_a1_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true + url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:lzhl_a1_acs1}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true username: ${DB_USER:root} # password: ${DB_PWD:P@ssw0rd} # password: ${DB_PWD:Root.123456} - password: ${DB_PWD:root} + password: ${DB_PWD:123456} # 初始连接数 initial-size: 5 diff --git a/acs/nladmin-ui/.env.production b/acs/nladmin-ui/.env.production index 762ac12e7..2c75e4bb6 100644 --- a/acs/nladmin-ui/.env.production +++ b/acs/nladmin-ui/.env.production @@ -2,6 +2,6 @@ ENV = 'production' # 如果使用 Nginx 代理后端接口,那么此处需要改为 '/',文件查看 Docker 部署篇,Nginx 配置 # 接口地址,注意协议,如果你没有配置 ssl,需要将 https 改为 http -VUE_APP_BASE_API = 'http://127.0.0.1:8010' +VUE_APP_BASE_API = 'http://10.1.3.94:8011' # 如果接口是 http 形式, wss 需要改为 ws -VUE_APP_WS_API = 'ws://127.0.0.1:8010' +VUE_APP_WS_API = 'ws://10.1.3.94:8011' diff --git a/acs/nladmin-ui/public/config.js b/acs/nladmin-ui/public/config.js index c4d32ea74..4c79c8a78 100644 --- a/acs/nladmin-ui/public/config.js +++ b/acs/nladmin-ui/public/config.js @@ -1,9 +1,9 @@ window.g = { dev: { - VUE_APP_BASE_API: 'http://127.0.0.1:8010' + VUE_APP_BASE_API: 'http://10.1.3.94:8011' }, prod: { - VUE_APP_BASE_API: 'http://127.0.0.1:8010' + VUE_APP_BASE_API: 'http://10.1.3.94:8011' } diff --git a/acs/nladmin-ui/src/views/acs/task/index.vue b/acs/nladmin-ui/src/views/acs/task/index.vue index 20a170eb3..619b3ce01 100644 --- a/acs/nladmin-ui/src/views/acs/task/index.vue +++ b/acs/nladmin-ui/src/views/acs/task/index.vue @@ -60,6 +60,7 @@ + + @@ -599,7 +602,9 @@ export default { device_code: '', material_code: '', qty: '' - }] + }], + device_code: null, + qty: null }, rules: { start_height: [ diff --git a/acs2/nladmin-system/nlsso-server/pom.xml b/acs2/nladmin-system/nlsso-server/pom.xml index 04f263103..841f5d7a8 100644 --- a/acs2/nladmin-system/nlsso-server/pom.xml +++ b/acs2/nladmin-system/nlsso-server/pom.xml @@ -92,11 +92,11 @@ - + @@ -435,11 +435,11 @@ poi-ooxml-schemas 4.1.2 - + diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/AgvWaitUtil.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/AgvWaitUtil.java new file mode 100644 index 000000000..fc61d1dde --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/AgvWaitUtil.java @@ -0,0 +1,108 @@ +package org.nl.acs.agv; + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.device.domain.Device; +import org.nl.acs.device.service.DeviceService; +import org.nl.acs.device_driver.conveyor.standard_inspect_site.StandardInspectSiteDeviceDriver; +import org.nl.acs.device_driver.one_manipulator.box_storage_manipulator.BoxStorageManipulatorDeviceDriver; +import org.nl.acs.ext.wms.service.AcsToWmsService; +import org.nl.acs.instruction.domain.Instruction; +import org.nl.acs.instruction.service.InstructionService; +import org.nl.acs.opc.DeviceAppService; +import org.nl.common.exception.BadRequestException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; + +/** + * @author zhangjiangwei + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class AgvWaitUtil { + + @Lazy + @Autowired + AcsToWmsService acsToWmsService; + + @Autowired + InstructionService instructionService; + + @Autowired + private DeviceAppService deviceAppService; + + //取货前等待 + public JSONObject waitInGet(String startDeviceCode, Instruction inst) { + log.info("仙工AGV请求取货,设备号 - {}", startDeviceCode); + Device startDevice = deviceAppService.findDeviceByCode(startDeviceCode); + StandardInspectSiteDeviceDriver standardInspectSiteDeviceDriver; + if(startDevice.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver){ + standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) startDevice.getDeviceDriver(); + if(standardInspectSiteDeviceDriver.getError() != 0){ + JSONObject map = new JSONObject(); + map.put("status", 500); + map.put("message", "不允许取货!"); + log.info("不允许仙工AGV取货,烘箱对接位有报警,设备号 - {}", startDeviceCode); + return map; + } + } + JSONObject map = new JSONObject(); + map.put("status", 200); + map.put("message", "允许取货!"); + log.info("允许仙工AGV取货,设备号 - {}", startDeviceCode); + return map; + } + + //取货完成等待 + public JSONObject waitOutGet(String startDeviceCode, Instruction inst) { + log.info("仙工AGV取货完成后请求离开,设备号 - {}", startDeviceCode); + inst.setExecute_status("2"); + instructionService.update(inst); + JSONObject map = new JSONObject(); + map.put("status", 200); + map.put("message", "允许离开!"); + log.info("允许仙工AGV取货完成后请求离开,设备号 - {}", startDeviceCode); + return map; + } + + //放货前等待 + public JSONObject waitInPut(String endDeviceCode, Instruction inst) { + log.info("仙工AGV请求放货,设备号 - {}", endDeviceCode); + Device endDevice = deviceAppService.findDeviceByCode(endDeviceCode); + StandardInspectSiteDeviceDriver standardInspectSiteDeviceDriver; + if(endDevice.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver){ + standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) endDevice.getDeviceDriver(); + if(standardInspectSiteDeviceDriver.getError() != 0){ + JSONObject map = new JSONObject(); + map.put("status", 500); + map.put("message", "不允许放货!"); + log.info("不允许仙工AGV放货,烘箱对接位有报警,设备号 - {}", endDeviceCode); + return map; + } + } + JSONObject map = new JSONObject(); + map.put("status", 200); + map.put("message", "允许放货!"); + log.info("允许仙工AGV放货,设备号 - {}", endDeviceCode); + return map; + } + + + //放货完成等待 + public JSONObject waitOutPut(String endDeviceCode, Instruction inst) { + log.info("仙工AGV放货完成后请求离开,设备号 - {}", endDeviceCode); + inst.setExecute_status("2"); + instructionService.update(inst); + JSONObject map = new JSONObject(); + map.put("status", 200); + map.put("message", "允许离开!"); + log.info("允许仙工AGV放货完成后请求离开,设备号 - {}", endDeviceCode); + return map; + } +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/QueryAGVStatus.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/QueryAGVStatus.java new file mode 100644 index 000000000..8588c6eaf --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/QueryAGVStatus.java @@ -0,0 +1,79 @@ +package org.nl.acs.agv; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.AcsConfig; +import org.nl.acs.instruction.domain.Instruction; +import org.nl.acs.instruction.service.InstructionService; +import org.nl.config.SpringContextHolder; +import org.nl.system.service.param.ISysParamService; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * 定时查询AGV状态 + */ +@Slf4j +@Component("queryAGVStatus") +public class QueryAGVStatus { + + public void run() { + InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class); + ISysParamService paramService = SpringContextHolder.getBean(ISysParamService.class); + List allInstFromCache = instructionService.findAllInstFromCache(); + if(CollUtil.isEmpty(allInstFromCache) || allInstFromCache.size() < 1){ + return; + } + for (Instruction instruction : allInstFromCache) { + if ("4".equals(instruction.getInstruction_type())) { + String agvurl =paramService.findByCode(AcsConfig.AGVURL).getValue(); + String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); + JSONObject param = new JSONObject(); + agvurl = agvurl + ":" + agvport + "/" + instruction.getInstruction_code(); + log.info("根据运单号查询运单状态的请求:{}", agvurl); + HttpResponse result = HttpRequest.get(agvurl) + .timeout(20000)//超时,毫秒 + .execute(); + log.info("根据运单号查询运单状态的请求反馈:{}", result); + String body = result.body(); + JSONObject json = JSONObject.parseObject(body); + if(result.getStatus() == 200 && json.getString("id").equals(instruction.getInstruction_code())){ + // 已创建=CREATED, + // 待分配=TOBEDISPATCHED, + // 正在执行=RUNNING, + // 完成=FINISHED, + // 失败=FAILED(主动失败), + // 终止=STOPPED(被人为终止), + // 无法执行=Error(参数错误), + // 等待=WAITING + //执行中 + String state = json.getString("state"); + if ("RUNNING".equals(state) || "CREATED".equals(state) || "TOBEDISPATCHED".equals(state) || "WAITING".equals(state)) { + instruction.setInstruction_status("1"); + instructionService.update(instruction); + } else if ("FINISHED".equals(state)) { + instruction.setInstruction_status("2"); + try { + instructionService.finish(instruction); + } catch (Exception e) { + log.error("执行完成,但无法更新状态,可能由于参数错误导致的异常"); + e.printStackTrace(); + } + } else if ("STOPPED".equals(state) || "FAILED".equals(state) || "Error".equals(state)) { + instruction.setInstruction_status("1"); + instructionService.update(instruction); + } + } + } + } + } +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/rest/XianGongAgvController.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/rest/XianGongAgvController.java index 3be96d23d..2bccb2f2b 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/rest/XianGongAgvController.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/rest/XianGongAgvController.java @@ -1,7 +1,30 @@ package org.nl.acs.agv.rest; +import com.alibaba.fastjson.JSONObject; +import org.nl.acs.agv.server.XianGongAgvService; +import org.nl.common.logging.annotation.Log; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Configurable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + /** * @author 20220102CG\noblelift */ + +@Controller public class XianGongAgvController { + + @Autowired + private XianGongAgvService xianGongAgentService; + + @PostMapping("/waitPointRequest") + @Log("仙工AGV请求取放货") + public ResponseEntity xgAGVWaitPointRequest(@RequestBody JSONObject requestParam) { + return new ResponseEntity<>(xianGongAgentService.xgAGVWaitPointRequest(requestParam), HttpStatus.OK); + } + } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/XianGongAgvService.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/XianGongAgvService.java index 918a269ab..a0a3d1c72 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/XianGongAgvService.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/XianGongAgvService.java @@ -102,4 +102,21 @@ public interface XianGongAgvService { */ public JSONObject createOrederData(Instruction inst, String type); + /** + * 请求取货放货 + * @param requestParam + * @return + */ + JSONObject xgAGVWaitPointRequest(JSONObject requestParam); + + /** + * 运单号查询运单状态 + */ + public HttpResponse selectOrderByInstCode(String instCode); + + + /** + * 查询场景中指定机器人信息 + */ + HttpResponse getRobotInfo(String robotCode); } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/XianGongAgvServiceImpl.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/XianGongAgvServiceImpl.java index 51384aff0..2472995e7 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/XianGongAgvServiceImpl.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/XianGongAgvServiceImpl.java @@ -11,6 +11,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.AcsConfig; import org.nl.acs.agv.AgvUtil; +import org.nl.acs.agv.AgvWaitUtil; import org.nl.acs.agv.server.XianGongAgvService; import org.nl.acs.agv.server.dto.AgvDto; import org.nl.acs.angle.domain.AcsPointAngle; @@ -19,6 +20,7 @@ import org.nl.acs.common.base.CommonFinalParam; import org.nl.acs.device.domain.Device; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.instruction.domain.Instruction; +import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.log.LokiLog; import org.nl.acs.log.LokiLogType; import org.nl.acs.opc.DeviceAppService; @@ -50,6 +52,11 @@ public class XianGongAgvServiceImpl implements XianGongAgvService { @Autowired private IAcsPointAngleService acsPointAngleService; + @Autowired + private InstructionService instructionService; + + @Autowired + private AgvWaitUtil agvWaitUtil; Map AGVDeviceStatus = new HashMap(); @@ -286,23 +293,47 @@ public class XianGongAgvServiceImpl implements XianGongAgvService { } } - public com.alibaba.fastjson.JSONArray createBlocksData(Instruction inst) { + /** + * 下发运单 + * @param inst + * @return + */ + public JSONArray createBlocksData(Instruction inst) { JSONArray ja = new JSONArray(); - Device startDevice = deviceAppService.findDeviceByCode(inst.getStart_device_code()); + sendStartDeviceOrder(ja,inst.getStart_device_code(), inst.getStart_point_code(),inst.getInstruction_code()); + sendEndDeviceOrder(ja,inst.getStart_device_code(),inst.getInstruction_code(),inst.getNext_point_code(),inst.getNext_device_code()); + if(StrUtil.isNotEmpty(inst.getStart_device_code2())){ + sendStartDeviceOrder(ja,inst.getStart_device_code2(), inst.getStart_point_code2(),inst.getInstruction_code()); + } + if(StrUtil.isNotEmpty(inst.getNext_device_code2())){ + sendEndDeviceOrder(ja,inst.getNext_device_code2(),inst.getInstruction_code(),inst.getNext_point_code2(),inst.getNext_device_code2()); + } + return ja; + } + + /** + * 下发取货 + * @param device_code + * @param instCode + */ + public void sendStartDeviceOrder(JSONArray ja,String pointCode, String device_code,String instCode){ + + Device startDevice = deviceAppService.findDeviceByCode(device_code); + //忽略取货校验 if ("true".equals(startDevice.getExtraValue().get("ignore_pickup_check"))) { //取货前等待 JSONObject jo = new JSONObject(); jo.put("blockId", IdUtil.simpleUUID()); - jo.put("location", inst.getStart_point_code() + "INGET"); + jo.put("location", pointCode + "INGET"); jo.put("operation", "script"); - jo.put("id", inst.getStart_point_code() + "INGET"); + jo.put("id", pointCode + "INGET"); jo.put("script_name", "userpy/interact.py"); JSONObject script_args = new JSONObject(); script_args.put("addr", addr); JSONObject data = new JSONObject(); JSONObject reach = new JSONObject(); - reach.put("task_code", inst.getInstruction_code()); - reach.put("address", inst.getStart_point_code() + "INGET"); + reach.put("task_code", instCode); + reach.put("address", pointCode + "INGET"); data.put("reach", reach); script_args.put("data", data); script_args.put("protocol", "HTTP"); @@ -312,44 +343,52 @@ public class XianGongAgvServiceImpl implements XianGongAgvService { JSONObject jo1 = new JSONObject(); jo1.put("blockId", IdUtil.simpleUUID()); - jo1.put("location", inst.getStart_point_code()); + jo1.put("location", pointCode); jo1.put("operation", "JackLoad"); ja.add(jo1); //取货完成等待 JSONObject jo2 = new JSONObject(); jo2.put("blockId", IdUtil.simpleUUID()); - jo2.put("location", inst.getStart_point_code() + "OUTGET"); + jo2.put("location", pointCode + "OUTGET"); jo2.put("operation", "script"); - jo2.put("id", inst.getStart_point_code() + "OUTGET"); + jo2.put("id", pointCode + "OUTGET"); jo2.put("script_name", "userpy/interact.py"); JSONObject script_args2 = new JSONObject(); script_args2.put("addr", addr); JSONObject data2 = new JSONObject(); JSONObject reach2 = new JSONObject(); - reach2.put("task_code", inst.getInstruction_code()); - reach2.put("address", inst.getStart_point_code() + "OUTGET"); + reach2.put("task_code", instCode); + reach2.put("address", pointCode + "OUTGET"); data2.put("reach", reach2); script_args2.put("data", data2); script_args2.put("protocol", "HTTP"); jo2.put("script_args", script_args2); ja.add(jo2); + } - Device nextDevice = deviceAppService.findDeviceByCode(inst.getNext_device_code()); + /** + * 下发放货 + * @param device_code + * @param instCode + */ + public void sendEndDeviceOrder(JSONArray ja,String device_code,String instCode,String pointCode,String nextDeviceCode){ + Device nextDevice = deviceAppService.findDeviceByCode(nextDeviceCode); + //忽略放货校验 if ("true".equals(nextDevice.getExtraValue().get("ignore_release_check"))) { //放货前等待 JSONObject jo3 = new JSONObject(); jo3.put("blockId", IdUtil.simpleUUID()); - jo3.put("location", inst.getNext_point_code() + "INPUT"); + jo3.put("location", pointCode + "INPUT"); jo3.put("operation", "script"); - jo3.put("id", inst.getNext_point_code() + "INPUT"); + jo3.put("id", pointCode + "INPUT"); jo3.put("script_name", "userpy/interact.py"); JSONObject script_args3 = new JSONObject(); script_args3.put("addr", addr); JSONObject data3 = new JSONObject(); JSONObject reach3 = new JSONObject(); - reach3.put("task_code", inst.getInstruction_code()); - reach3.put("address", inst.getNext_point_code() + "INPUT"); + reach3.put("task_code", instCode); + reach3.put("address", pointCode + "INPUT"); data3.put("reach", reach3); script_args3.put("data", data3); script_args3.put("protocol", "HTTP"); @@ -359,7 +398,7 @@ public class XianGongAgvServiceImpl implements XianGongAgvService { //放货前下发旋转角度 JSONObject json1 = new JSONObject(); - AcsPointAngle acsPointAngleDto = acsPointAngleService.findByCode(inst.getStart_device_code(),inst.getNext_device_code()); + AcsPointAngle acsPointAngleDto = acsPointAngleService.findByCode(device_code,nextDeviceCode); if (ObjectUtil.isNotEmpty(acsPointAngleDto)){ log.info("acsPointAngleDto----參數,{}", acsPointAngleDto.toString()); com.alibaba.fastjson.JSONObject operation_args = new com.alibaba.fastjson.JSONObject(); @@ -367,38 +406,37 @@ public class XianGongAgvServiceImpl implements XianGongAgvService { operation_args.put("increase_spin_angle",next_point_angle);//弧度值,如3.14 operation_args.put("skill_name","GoByOdometer"); json1.put("blockId", IdUtil.simpleUUID()); - json1.put("location", inst.getNext_point_code() + "INPUT"); + json1.put("location", pointCode + "INPUT"); json1.put("operation_args",operation_args); ja.add(json1); } com.alibaba.fastjson.JSONObject jo4 = new com.alibaba.fastjson.JSONObject(); jo4.put("blockId", IdUtil.simpleUUID()); - jo4.put("location", inst.getNext_point_code()); + jo4.put("location", pointCode); jo4.put("operation", "JackUnload"); ja.add(jo4); - + //忽略放货校验 if ("true".equals(nextDevice.getExtraValue().get("ignore_release_check"))) { //放货完成等待 com.alibaba.fastjson.JSONObject jo5 = new com.alibaba.fastjson.JSONObject(); jo5.put("blockId", IdUtil.simpleUUID()); - jo5.put("location", inst.getNext_point_code() + "OUTPUT"); + jo5.put("location", pointCode + "OUTPUT"); jo5.put("operation", "script"); - jo5.put("id", inst.getNext_point_code() + "OUTPUT"); + jo5.put("id", pointCode + "OUTPUT"); jo5.put("script_name", "userpy/interact.py"); com.alibaba.fastjson.JSONObject script_args5 = new com.alibaba.fastjson.JSONObject(); script_args5.put("addr", addr); com.alibaba.fastjson.JSONObject data5 = new com.alibaba.fastjson.JSONObject(); com.alibaba.fastjson.JSONObject reach5 = new com.alibaba.fastjson.JSONObject(); - reach5.put("task_code", inst.getInstruction_code()); - reach5.put("address", inst.getNext_point_code() + "OUTPUT"); + reach5.put("task_code", instCode); + reach5.put("address", pointCode + "OUTPUT"); data5.put("reach", reach5); script_args5.put("data", data5); script_args5.put("protocol", "HTTP"); jo5.put("script_args", script_args5); ja.add(jo5); } - return ja; } @LokiLog(type = LokiLogType.AGV) @@ -632,4 +670,85 @@ public class XianGongAgvServiceImpl implements XianGongAgvService { return AGVDeviceStatus; } + + @Override + public JSONObject xgAGVWaitPointRequest(JSONObject requestParam) { + log.info("仙工AGV请求取放货,请求参数 - {}", requestParam); + String inst_code = requestParam.getString("task_code"); + Instruction instructionDto = instructionService.findByCodeFromCache(inst_code); + if (ObjectUtil.isEmpty(instructionDto)) { + throw new BadRequestException("请求失败,未找到指令!"); + } + String address = requestParam.getString("address"); + if (StrUtil.isBlank(address)) { + throw new BadRequestException("请求失败,地址为空!"); + } + if (address.contains("IN")) { + String deviceCodeNow = address.substring(0, address.length() - 5); + if (ObjectUtil.isEmpty(deviceAppService.findDeviceByCode(deviceCodeNow))) { + throw new BadRequestException("设备号 " + deviceCodeNow + " 不存在!"); + } + + if (address.contains("GET")) { + return agvWaitUtil.waitInGet(deviceCodeNow, instructionDto); + } else if (address.contains("PUT")) { + return agvWaitUtil.waitInPut(deviceCodeNow, instructionDto); + } + } + if (address.contains("OUT")) { + String deviceCodeNow = address.substring(0, address.length() - 6); + if (ObjectUtil.isEmpty(deviceAppService.findDeviceByCode(deviceCodeNow))) { + throw new BadRequestException("设备号 " + deviceCodeNow + " 不存在!"); + } + + if (address.contains("GET")) { + return agvWaitUtil.waitOutGet(deviceCodeNow, instructionDto); + } else if (address.contains("PUT")) { + return agvWaitUtil.waitOutPut(deviceCodeNow, instructionDto); + } + } + + throw new BadRequestException("请求失败,IN OUT 站点错误!"); + } + + @Override + public HttpResponse selectOrderByInstCode(String instCode) { + if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), "1")) { + String agvurl =paramService.findByCode(AcsConfig.AGVURL).getValue(); + String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); + + com.alibaba.fastjson.JSONObject param = new com.alibaba.fastjson.JSONObject(); + param.put("id", instCode); + param.put("disableVehicle", false); + agvurl = agvurl + ":" + agvport + "/" + instCode; + log.info("根据运单号查询运单状态的请求:{}", agvurl); + HttpResponse result = HttpRequest.post(agvurl) + .body(param.toJSONString()) + .timeout(20000)//超时,毫秒 + .execute(); + log.info("根据运单号查询运单状态的请求反馈:{}", result); + return result; + } else { + return null; + } + } + + @Override + public HttpResponse getRobotInfo(String robotCode) { + if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), "1")) { + String agvurl =paramService.findByCode(AcsConfig.AGVURL).getValue(); + String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); + + agvurl = agvurl + ":" + agvport + "/"+ " robotsStatus?vehicles=" + robotCode; + log.info("根据指定机器人查询状态的请求:{}", agvurl); + HttpResponse result = HttpRequest.get(agvurl) + .timeout(20000)//超时,毫秒 + .execute(); + log.info("根据指定机器人查询状态的请求反馈:{}", result); + return result; + } else { + return null; + } + } + } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/common/base/CommonFinalParam.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/common/base/CommonFinalParam.java index 3d2adc4ba..31c6d132a 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/common/base/CommonFinalParam.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/common/base/CommonFinalParam.java @@ -16,9 +16,7 @@ public class CommonFinalParam { */ private final String BARRE = "-"; private final String POINT = "."; - /** - * 开门 - */ + public static final String ONE = "1"; public static final String TWO = "2"; diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/enums/DeviceType.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/enums/DeviceType.java index 6061a8079..dff18ec45 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/enums/DeviceType.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/enums/DeviceType.java @@ -18,6 +18,7 @@ public enum DeviceType { group("设备组", 12), plcDb("plcDb块", 13), shadow("影子设备", 15), + button("按钮",14), other("其他设备", 16); diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/service/impl/DeviceServiceImpl.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/service/impl/DeviceServiceImpl.java index e79944bd9..6ad4e3b4c 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/service/impl/DeviceServiceImpl.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/service/impl/DeviceServiceImpl.java @@ -17,6 +17,7 @@ import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapp import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.map.ListOrderedMap; +import org.apache.commons.lang.LocaleUtils; import org.nl.acs.auto.initial.ApplicationAutoInitial; import org.nl.acs.device.device_driver.standard_inspect.ItemDto; import org.nl.acs.device.domain.Device; @@ -653,8 +654,8 @@ public class DeviceServiceImpl extends CommonServiceImpl i // String device_code = jo.getString("device_code"); // String device_name = jo.getString("device_name"); // Device device = appService.findDeviceByCode(device_code); -// if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { -// standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); +// if (device.getDeviceDriver() instanceof XgAgvCarDeviceDriver) { +// standardOrdinarySiteDeviceDriver = (XgAgvCarDeviceDriver) device.getDeviceDriver(); // int branchProtocol = standardOrdinarySiteDeviceDriver.getBranchProtocol(); // devicejo.put("device_code",device_code); // devicejo.put("branchProtocol",branchProtocol); @@ -1893,6 +1894,9 @@ public class DeviceServiceImpl extends CommonServiceImpl i String is_config = list.get(3).toString(); String is_route = list.get(4).toString(); String region = list.get(5).toString(); + String in_device_name = list.get(6).toString(); + String en_device_name = list.get(7).toString(); + String zh_device_name = list.get(8).toString(); if (StrUtil.isEmpty(device_code)) { throw new BadRequestException(LangProcess.msg("error_checkNull", "device_code")); } @@ -1912,6 +1916,16 @@ public class DeviceServiceImpl extends CommonServiceImpl i if (ObjectUtil.isNotEmpty(dto)) { continue; } + if(StrUtil.isEmpty(zh_device_name)){ + //throw new BadRequestException(LangProcess.msg("zh_device_name_isNotNull")); + zh_device_name = StrUtil.isNotEmpty(device_name) ? device_name : device_code; + } + if(StrUtil.isEmpty(en_device_name)){ + en_device_name = StrUtil.isNotEmpty(device_name) ? device_name : device_code; + } + if (StrUtil.isEmpty(in_device_name)){ + in_device_name = StrUtil.isNotEmpty(device_name) ? device_name : device_code; + } //按照列获取 param.put("device_id", IdUtil.getSnowflake(1, 1).nextId()); param.put("device_code", device_code); @@ -1924,8 +1938,10 @@ public class DeviceServiceImpl extends CommonServiceImpl i param.put("update_by", nickName); param.put("update_time", now); param.put("region", region); + param.put("in_device_name", in_device_name); + param.put("en_device_name", en_device_name); + param.put("zh_device_name", zh_device_name); -// wo.insert(param); Device entity = ConvertUtil.convert(param, Device.class); deviceMapper.insert(entity); } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/xg_agv_car/XgAgvCarDefination.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/xg_agv_car/XgAgvCarDefination.java new file mode 100644 index 000000000..e07d85d95 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/xg_agv_car/XgAgvCarDefination.java @@ -0,0 +1,49 @@ +package org.nl.acs.device_driver.agv.xg_agv_car; + +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.DeviceDriverDefination; +import org.springframework.stereotype.Service; + +import java.util.LinkedList; +import java.util.List; + +/** + * 仙工AGV + */ +@Service +public class XgAgvCarDefination implements DeviceDriverDefination { + @Override + public String getDriverCode() { + return "xg_agv_car"; + } + + @Override + public String getDriverName() { + return "仙工AGV车"; + } + + @Override + public String getDriverDescription() { + return "仙工AGV车"; + } + + @Override + public DeviceDriver getDriverInstance(Device device) { + return (new XgAgvCarDeviceDriver()).setDevice(device).setDriverDefination(this); + + } + + @Override + public Class getDeviceDriverType() { + return XgAgvCarDeviceDriver.class; + } + + @Override + public List getFitDeviceTypes() { + List types = new LinkedList(); + types.add(DeviceType.agv); + return types; + } +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/xg_agv_car/XgAgvCarDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/xg_agv_car/XgAgvCarDeviceDriver.java new file mode 100644 index 000000000..9a72fcf30 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/xg_agv_car/XgAgvCarDeviceDriver.java @@ -0,0 +1,178 @@ +package org.nl.acs.device_driver.agv.xg_agv_car; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.http.HttpResponse; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.agv.server.NDCAgvService; +import org.nl.acs.agv.server.XianGongAgvService; +import org.nl.acs.common.base.CommonFinalParam; +import org.nl.acs.device.service.DeviceService; +import org.nl.acs.device_driver.DeviceDriver; +import org.nl.acs.device_driver.RouteableDeviceDriver; +import org.nl.acs.device_driver.driver.AbstractDeviceDriver; +import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; +import org.nl.acs.ext.wms.service.AcsToWmsService; +import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; +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.route.service.RouteLineService; +import org.nl.acs.task.service.TaskService; +import org.nl.config.SpringContextHolder; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.Date; + + +/** + * 普通站点仙工AGV + */ +@Slf4j +@Data +@RequiredArgsConstructor +public class XgAgvCarDeviceDriver extends AbstractDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { + @Autowired + DeviceAppService deviceAppservice = SpringContextHolder.getBean(DeviceAppService.class); + @Autowired + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); + @Autowired + DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); + @Autowired + RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); + @Autowired + TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); + @Autowired + RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineService.class); + @Autowired + AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsServiceImpl.class); + @Autowired + DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); + @Autowired + NDCAgvService agvService = SpringContextHolder.getBean(NDCAgvService.class); + @Autowired + private XianGongAgvService xianGongAgvService; + + Integer hasGoods = 0; + int error = 0; + Boolean iserror = false; + Boolean islock = false; + + int branchProtocol = 0; + int last_branchProtocol = 0; + /** + * 是否需要输入物料 + */ + String input_material = "0"; + /** + * 备注 + */ + String remark = ""; + /** + * 数量 + */ + String qty = ""; + /** + * 批次 + */ + String batch = ""; + /** + * 物料 + */ + String material = ""; + /** + * 目标点位 + */ + String purpose = ""; + /** + * 当前指令 + */ + Instruction inst = null; + /** + * 上次指令 + */ + Instruction last_inst = null; + + boolean requireSucess = false; + + /** + * 触摸屏手动触发任务 + */ + private Boolean is_has_task = false; + + /** + * 申请搬运任务 + */ + private Boolean apply_handling = false; + /** + * 申请物料 + */ + private Boolean apply_material = false; + + /** + * 1取货完成 2放货完成 3进入区域 4离开区域 + */ + private int flag; + + /** + * 人工确认信号 默认0 agv到达后请求置1 等人工确认后变为2 反馈agv后继续为0 + */ + private int manua_confirm = 0; + + String device_code = null; + String container; + String container_type_desc; + String last_container_type_desc; + String last_container; + private Date instruction_require_time = new Date(); + private Date instruction_finished_time = new Date(); + + private int instruction_require_time_out; + + String message; + + // 1 上位系统允许进入 2 上位系统允许离开 + int status = 0; + + int agvphase = 0; + int index = 0; + + int mode = 2; + + int move; + + @Override + public void execute() { + + } + + @Override + public JSONObject getDeviceStatusName() { + return null; + } + + + @Override + public void setDeviceStatus(JSONObject data) { + + } + + + /** + * 获取机器人信息 + */ + private void getAgvStatus() { + HttpResponse robotInfo = xianGongAgvService.getRobotInfo(this.getDevice().getDevice_name()); + if(robotInfo.getStatus() == 200){ + JSONObject jsonObject = JSONObject.parseObject(robotInfo.body()); + + }else{ + log.info("请求{}机器人状态失败", this.getDevice().getDevice_name()); + } + } +} + diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/belt_conveyor/BeltConveyorDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/belt_conveyor/BeltConveyorDeviceDriver.java index ce380413f..951e8cb05 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/belt_conveyor/BeltConveyorDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/belt_conveyor/BeltConveyorDeviceDriver.java @@ -4,11 +4,14 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpResponse; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import lombok.Data; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; +import org.nl.acs.AcsConfig; import org.nl.acs.agv.server.AgvService; import org.nl.acs.common.base.CommonFinalParam; import org.nl.acs.device.domain.Device; @@ -18,6 +21,7 @@ import org.nl.acs.device_driver.DeviceDriver; 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.enums.AcsToLmsApplyTaskTypeEnum; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; import org.nl.acs.history.ErrorUtil; @@ -35,6 +39,7 @@ import org.nl.acs.route.service.dto.RouteLineDto; import org.nl.acs.task.service.TaskService; import org.nl.acs.task.service.dto.TaskDto; import org.nl.config.SpringContextHolder; +import org.nl.system.service.param.ISysParamService; import org.springframework.beans.factory.annotation.Autowired; import java.util.*; @@ -68,6 +73,9 @@ public class BeltConveyorDeviceDriver extends AbstractOpcDeviceDriver implements @Autowired DeviceErrorLogService errorLogServer = SpringContextHolder.getBean(DeviceErrorLogServiceImpl.class); + + ISysParamService paramService = SpringContextHolder.getBean(ISysParamService.class); + private Date instruction_update_time = new Date(); private Date require_apply_strangulation_time = new Date(); private int instruction_update_time_out = 500; @@ -213,6 +221,7 @@ public class BeltConveyorDeviceDriver extends AbstractOpcDeviceDriver implements to_container_no = this.itemProtocol.getContainer_direction(); to_container_type = this.itemProtocol.getContainer_no(); + if (mode != last_mode) { JSONObject param = new JSONObject(); param.put("device_code", this.device_code); @@ -304,7 +313,6 @@ public class BeltConveyorDeviceDriver extends AbstractOpcDeviceDriver implements Instruction instruction = null; List toInstructions; - //纸管库申请任务 switch (mode) { case 1: log.debug("弃用(留作兼容)"); @@ -324,6 +332,20 @@ public class BeltConveyorDeviceDriver extends AbstractOpcDeviceDriver implements //request_for_shipment(String.valueOf(mode), item_out_seq_arr, item_out_qty_arr); } break; + case 5: + //申请AGV任务 + //TODO 申请AGV任务待确认 + if (move == 1 && !requireSucess) { + applyAgvTask(); + } + break; + case 6: + //二楼到一楼输送线申请行架任务 + //TODO 申请行架任务 + if (move == 1 && !requireSucess) { + applyManipulatorTask(); + } + break; default: break; } @@ -345,6 +367,17 @@ public class BeltConveyorDeviceDriver extends AbstractOpcDeviceDriver implements } + private void applyManipulatorTask() { + + JSONObject param = new JSONObject(); + param.put("device_code", device_code); + logServer.deviceExecuteLog(this.device_code, "", "", "二楼到一楼输送线申请行架任务,参数:" + param); + HttpResponse response = acsToWmsService.shipDeviceUpdate(param); + if (response == null || response.getStatus() == 200) { + logServer.deviceExecuteLog(this.device_code, "", "", "二楼到一楼输送线申请行架任务,接口返回:" + response.body()); + } + } + public void writing(int command) { String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() @@ -355,6 +388,106 @@ public class BeltConveyorDeviceDriver extends AbstractOpcDeviceDriver implements } + public synchronized void applyAgvTask() { + 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; + } else { + String hand_barcode = null; + this.instruction_require_time = date; + if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), "1")) { + //判断是否有手动补码 如果有就申请补码agv任务 + if (StrUtil.isNotEmpty(hand_barcode)) { + message = "申请补码AGV搬运任务中..."; + JSONObject apply = new JSONObject(); + apply.put("device_code", device_code); + apply.put("type", AcsToLmsApplyTaskTypeEnum.AGV.getType()); + apply.put("vehicle_code", hand_barcode); + + String str = acsToWmsService.applyTaskToWms(apply); + logServer.deviceExecuteLog(this.device_code, "", "", "申请AGV任务,请求参数:" + apply + ",响应参数," + str); + + JSONObject jo = JSON.parseObject(str); + if (ObjectUtil.isEmpty(jo)) { + message = "申请补码AGV搬运任务接口不通"; + } else { + if (jo.getInteger("status") == 200) { + message = "申请补码AGV搬运任务成功"; + List list = new ArrayList(); + while (!StrUtil.equals(this.getOpcValueAccessor().getValue(this.getOpcServer() + "." + this.getOpcPlc() + "." + this.getDevice_code() + ".to_command").toString() + , "8")) { + this.writing(list); + logServer.deviceExecuteLog(device_code, "", "", "再次下发mode信号"); + try { + Thread.sleep(500); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + logServer.deviceExecuteLog(this.device_code, "", "", "申请补码AGV任务,返回参数:" + jo); + requireSucess = true; + } else { + message = "申请补码AGV搬运任务失败," + jo.get("message").toString(); + } + } + return; + } + //没有就正常申请agv任务 + Instruction instruction = instructionService.findByCode(String.valueOf(task)); + if (ObjectUtil.isEmpty(instruction)) { + message = "指令号" + task + "未找到对应指令"; + return; + } + if (StrUtil.isEmpty(instruction.getVehicle_code())) { + message = "指令号" + task + "未找到对应木箱号"; + return; + } + + message = "申请AGV搬运任务中..."; + JSONObject apply = new JSONObject(); + apply.put("device_code", device_code); + apply.put("type", AcsToLmsApplyTaskTypeEnum.AGV.getType()); + apply.put("vehicle_code", instruction.getVehicle_code()); + + String str = acsToWmsService.applyTaskToWms(apply); + logServer.deviceExecuteLog(this.device_code, "", "", "申请AGV任务,请求参数:" + apply + ",响应参数"); + + JSONObject jo = JSON.parseObject(str); + if (ObjectUtil.isEmpty(jo)) { + message = "申请AGV搬运任务接口不通"; +// requireSucess = true; + } else { + if (jo.getInteger("status") == 200) { + message = "申请AGV搬运任务成功"; + List list = new ArrayList(); + Map map = new HashMap(); + map.put("code", "to_command"); + map.put("value", "8"); + list.add(map); + this.writing(list); + while (!StrUtil.equals(this.getOpcValueAccessor().getValue(this.getOpcServer() + "." + this.getOpcPlc() + "." + this.getDevice_code() + ".to_command").toString() + , "8")) { + this.writing(list); + logServer.deviceExecuteLog(device_code, "", "", inst.getInstruction_code() + "再次下发mode信号"); + try { + Thread.sleep(500); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + logServer.deviceExecuteLog(this.device_code, "", "", "申请AGV任务,返回参数:" + jo); + requireSucess = true; + } else { + message = "申请AGV搬运任务失败," + jo.get("message").toString(); + } + } + + } + } + } + + public void writing(Map map) { DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); Map itemMap = new LinkedHashMap<>(); diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/oven_inspection_site/ItemProtocol.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/oven_inspection_site/ItemProtocol.java new file mode 100644 index 000000000..fee278b2d --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/oven_inspection_site/ItemProtocol.java @@ -0,0 +1,114 @@ +package org.nl.acs.device_driver.conveyor.oven_inspection_site; + +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_error = "error"; + public static String item_to_command = "to_command"; + public static String item_to_target = "to_target"; + public static String item_to_task = "to_task"; + public static String item_weight = "weight"; + public static String item_material_type = "material_type"; + public static String item_barcode = "barcode"; + + private OvenInspectSiteDeviceDriver driver; + + public ItemProtocol(OvenInspectSiteDeviceDriver driver) { + this.driver = driver; + } + + 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 getMaterialType() { + return this.getOpcIntegerValue(item_material_type); + } + + public int getBarcode() { + return this.getOpcIntegerValue(item_barcode); + } + + public int getToCommand() { + return this.getOpcIntegerValue(item_to_command); + } + + public int getToTarget() { + return this.getOpcIntegerValue(item_to_target); + } + + public int getToTask() { + return this.getOpcIntegerValue(item_to_task); + } + + /** + *是否有货 + */ + public int hasGoods(int move) { + return move; + } + + Boolean isonline; + + public int getOpcIntegerValue(String protocol) { + Integer value = this.driver.getIntegeregerValue(protocol); + if (value == null) { + // log.error(this.getDriver().getDeviceCode() + ":protocol " + protocol + " 信号同步异常!"); + setIsonline(false); + } else { + setIsonline(true); + return value; + } + return 0; + + } + + public static List getReadableItemDtos() { + ArrayList list = new ArrayList(); + list.add(new ItemDto(item_heartbeat, "心跳", "DB600.B0")); + list.add(new ItemDto(item_mode, "工作状态", "DB600.B2", Boolean.valueOf(true))); + list.add(new ItemDto(item_move, "光电开关信号", "DB600.B3")); + list.add(new ItemDto(item_action, "取放信号", "DB600.B4")); + list.add(new ItemDto(item_material_type, "物料类型", "DB600.D6")); + list.add(new ItemDto(item_error, "报警信号", "DB600.B7")); + list.add(new ItemDto(item_barcode, "条码", "DB600.D8")); + return list; + } + + public static List getWriteableItemDtos() { + ArrayList list = new ArrayList(); + list.add(new ItemDto(item_to_command, "作业命令", "DB601.W2", Boolean.valueOf(true))); + return list; + } + +} + diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/oven_inspection_site/OvenInspectSiteDefination.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/oven_inspection_site/OvenInspectSiteDefination.java new file mode 100644 index 000000000..8d1b0b5eb --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/oven_inspection_site/OvenInspectSiteDefination.java @@ -0,0 +1,61 @@ +package org.nl.acs.device_driver.conveyor.oven_inspection_site; + +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 OvenInspectSiteDefination implements OpcDeviceDriverDefination { + @Override + public String getDriverCode() { + return "oven_inspect_site"; + } + + @Override + public String getDriverName() { + return "标准版-烘箱检测站点"; + } + + @Override + public String getDriverDescription() { + return "标准版-烘箱检测站点"; + } + + @Override + public DeviceDriver getDriverInstance(Device device) { + return (new OvenInspectSiteDeviceDriver()).setDevice(device).setDriverDefination(this); + } + + @Override + public Class getDeviceDriverType() { + return OvenInspectSiteDeviceDriver.class; + } + + @Override + public List getFitDeviceTypes() { + List types = new LinkedList(); + types.add(DeviceType.conveyor); + 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/conveyor/oven_inspection_site/OvenInspectSiteDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/oven_inspection_site/OvenInspectSiteDeviceDriver.java new file mode 100644 index 000000000..743392dea --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/oven_inspection_site/OvenInspectSiteDeviceDriver.java @@ -0,0 +1,464 @@ +package org.nl.acs.device_driver.conveyor.oven_inspection_site; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.device.domain.Device; +import org.nl.acs.device.service.DeviceService; +import org.nl.acs.device_driver.DeviceDriver; +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.ext.wms.service.AcsToWmsService; +import org.nl.acs.instruction.domain.Instruction; +import org.nl.acs.instruction.service.InstructionService; +import org.nl.acs.monitor.DeviceStageMonitor; +import org.nl.acs.opc.WcsConfig; +import org.nl.acs.route.service.RouteLineService; +import org.nl.acs.route.service.dto.RouteLineDto; +import org.nl.acs.task.domain.Task; +import org.nl.acs.task.enums.TaskStatusEnum; +import org.nl.acs.task.service.TaskService; +import org.nl.acs.task.service.dto.TaskDto; +import org.nl.acs.task.service.mapper.TaskMapper; +import org.nl.acs.utils.ConvertUtil; +import org.nl.common.utils.CodeUtil; +import org.nl.config.SpringContextHolder; +import org.openscada.opc.lib.da.Server; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 烘箱检测站点 + */ +@Slf4j +@Data +@RequiredArgsConstructor +public class OvenInspectSiteDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { + protected ItemProtocol itemProtocol = new ItemProtocol(this); + + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); + + DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); + + RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); + + TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); + + TaskMapper taskMapper; + + AcsToWmsService acsToWmsService = SpringContextHolder.getBean("acsToWmsServiceImpl"); + + String container; + String container_type_desc; + String last_container_type_desc; + String last_container; + /** + * 放货准备锁 + */ + String putReadyLock = null; + /** + * 有货标记 + */ + protected boolean has_goods_tag = false; + + private Date time = new Date(); + + int mode = 0; + int error = 0; + int move = 0; + int task = 0; + int action = 0; + int last_mode = 0; + int last_error = 0; + int last_move = 0; + int last_task = 0; + Boolean isonline = true; + int hasGoods = 0; + String message = null; + Boolean iserror = false; + + int io_action = 0; + int last_io_action = 0; + int material_type = 0; + int last_material_type = 0; + int barcode = 0; + int last_barcode = 0; + + + boolean hasVehicle = false; + boolean isReady = false; + protected int instruction_num = 0; + protected int instruction_num_truth = 0; + boolean isFold = false; + private String assemble_check_tag; + + protected String current_stage_instruction_message; + protected String last_stage_instruction_message; + Integer heartbeat_tag; + private Date instruction_require_time = new Date(); + private Date instruction_finished_time = new Date(); + + private int instruction_require_time_out; + boolean requireSucess = false; + + private int instruction_finished_time_out; + + int branchProtocol = 0; + /** + * 备注 + */ + String remark; + /** + * 数量 + */ + String qty; + /** + * 物料 + */ + String material; + /** + * 批次 + */ + String batch; + /** + * 当前指令 + */ + Instruction inst = null; + /** + * 上次指令 + */ + Instruction last_inst = null; + + /** + * 触摸屏手动触发任务 + */ + private Boolean is_has_task = false; + + /** + * 满盅入库请求标记 + */ + boolean Sucess = false; + + /** + * 暂定 0就绪 1请求取货 2取货完成 3请求放货 4放货完成 5取货完成离开 6放货完成离开 7请求进入区域 8请求离开区域 + */ + int flag; + + String devicecode; + + @Override + public Device getDevice() { + return this.device; + } + + + @Override + public void execute() { + String message = null; + try { + devicecode = this.getDeviceCode(); + mode = this.itemProtocol.getMode(); + error = this.itemProtocol.getError(); + move = this.itemProtocol.getMove(); + hasGoods = this.itemProtocol.getMove(); + action = this.itemProtocol.getAction(); + material_type = this.itemProtocol.getMaterialType(); + barcode = this.itemProtocol.getBarcode(); + if (mode != last_mode) { + this.setRequireSucess(false); + if (mode == 2) { + this.writing(0); + } + } + if (move != last_move) { + } + if (error != last_error) { + } + + + } catch (Exception var17) { + return; + } + + if (!this.itemProtocol.getIsonline()) { + this.setIsonline(false); + this.setIserror(true); + message = "信号量同步异常"; + //未联机 + } else if (mode == 0) { + this.setIsonline(false); + this.setIserror(true); + message = "未联机"; + //有报警 + } else if (error != 0) { + this.setIsonline(false); + this.setIserror(true); + message = "有报警"; + //无报警 + } else { + this.setIsonline(true); + this.setIserror(false); + message = ""; + Instruction instruction = null; + List toInstructions; + switch (mode) { + case 1: + log.debug("设备运转模式:等待工作"); + return; + case 2: + break; + case 4: + //叫料 + if (move == 0 && !requireSucess) { + apply(4); + } + break; + case 5: + //满料出库 + if (move == 1 && !requireSucess) { + apply(5); + } + break; + case 6: + //申请空盘 + if (move == 0 && !requireSucess) { + apply(6); + } + break; + case 7: + //空托盘出库 + if (move == 1 && !requireSucess) { + apply(7); + } + break; + default: + break; + } + + switch (flag) { + //取货完成 + case 1: + writing(2); + return; + //放货完成 + case 2: + writing(3); + return; + default: + break; + } + + } + last_mode = mode; + last_error = error; + last_move = move; + last_task = task; + last_material_type = material_type; + last_barcode = barcode; + + } + + + public boolean exe_error() { + if (this.error == 0) { + return true; + } else { + log.debug("设备报警"); + return false; + } + } + + protected void thingToNothing() { + log.debug("从有货到无货 清理数据"); + this.set_last_container(container, container_type_desc); + } + + public void set_last_container(String barcode, String type_desc) { + this.set_last_container(barcode); + this.set_last_container_type_desc(type_desc); + } + + public void set_last_container(String barcode) { + } + + public void set_last_container_type_desc(String type) { + } + + public boolean exe_business() { + return true; + } + + protected void executing(Instruction instruction) { + this.executing(1, instruction, ""); + } + + public void executing(int command, Instruction instruction, String appendMessage) { + String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() + + "." + ItemProtocol.item_to_command; + String to_target = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() + + "." + ItemProtocol.item_to_target; + String to_task = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() + + "." + ItemProtocol.item_to_task; + if (appendMessage == null) { + appendMessage = ""; + } + if (instruction != null) { + instruction_num = Integer.parseInt(instruction.getInstruction_code()); + } + //String opcservcerid = this.getDevice().getOpc_server_id(); +//Server server = ReadUtil.getServer(opcservcerid); + Map itemMap = new HashMap(); + itemMap.put(to_command, 1); + itemMap.put(to_task, instruction_num); + this.control(itemMap); + + } + + public void executing(Server server, Map itemMap) { + this.control(itemMap); + } + + public void writing(int command) { + String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() + + "." + ItemProtocol.item_to_command; + + //String opcservcerid = this.getDevice().getOpc_server_id(); +//Server server = ReadUtil.getServer(opcservcerid); + Map itemMap = new HashMap(); + itemMap.put(to_command, command); + this.control(itemMap); + + } + + public void writing(int type, int command) { + String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() + + "." + ItemProtocol.item_to_command; + String to_target = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() + + "." + ItemProtocol.item_to_target; + String to_task = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() + + "." + ItemProtocol.item_to_task; + //String opcservcerid = this.getDevice().getOpc_server_id(); +//Server server = ReadUtil.getServer(opcservcerid); + Map itemMap = new HashMap(); + if (type == 1) { + itemMap.put(to_command, command); + } else if (type == 2) { + itemMap.put(to_target, command); + + } else if (type == 3) { + itemMap.put(to_task, command); + } + this.control(itemMap); + + } + + public boolean instruction_require(String container_code) { + return instruction_require(container_code, WcsConfig.task_container_type_default_desc); + } + + /** + * 请求指令 + * + * @param container_code + * @param container_type + */ + public synchronized boolean instruction_require(String container_code, String container_type) { + 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; + TaskDto dto = new TaskDto(); + String now = DateUtil.now(); + dto.setTask_id(IdUtil.simpleUUID()); + dto.setCreate_by(this.getDevice().getDevice_code()); + dto.setUpdate_by(this.getDevice().getDevice_code()); + dto.setStart_point_code(this.getDevice().getDevice_code()); + dto.setVehicle_code(container_code); + dto.setVehicle_type(container_type); + + String taskcode = CodeUtil.getNewCode("TASK_NO"); + dto.setTask_code("-" + taskcode); + dto.setTask_status(TaskStatusEnum.READY.getIndex()); + dto.setPriority("101"); + RouteLineDto jo = routelineserver.findByCode(this.getDevice().getDevice_code()); + String next_device_codecode = jo.getNext_device_code(); + if (StrUtil.isEmpty(next_device_codecode)) { + throw new RuntimeException("该设备未找到对应路由"); + } + dto.setNext_point_code(next_device_codecode); + dto.setUpdate_time(now); + dto.setCreate_time(now); + +// WQLObject wo = WQLObject.getWQLObject("acs_task"); +// JSONObject json = (JSONObject) JSONObject.toJSON(dto); +// +// wo.insert(json); + + Task entity = ConvertUtil.convert(dto, Task.class); + taskMapper.insert(entity); + requireSucess = false; + return true; + } + } + + @Override + public JSONObject getDeviceStatusName() { + JSONObject jo = new JSONObject(); + String mode = ""; + String action = ""; + String move = ""; + 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 = "无货"; + jo.put("hasGoods", false); + } else if (this.getMove() == 1) { + move = "有货"; + jo.put("hasGoods", true); + } else if (this.getMove() == 2) { + move = "有托盘有货"; + jo.put("hasGoods", true); + } + jo.put("device_name", this.getDevice().getDevice_name()); + jo.put("mode", mode); + jo.put("move", move); + jo.put("action", action); + jo.put("isOnline", this.getIsonline()); + jo.put("error", this.getError()); + jo.put("isError", this.getIserror()); + jo.put("task", this.getTask()); + return jo; + } + + @Override + public void setDeviceStatus(JSONObject data) { + + } + + /** + * lms申请任务 + * + * @param + */ + public synchronized boolean apply(Integer type) { + return false; + } +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/oven_manipulator/ItemProtocol.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/oven_manipulator/ItemProtocol.java deleted file mode 100644 index b2396e6d6..000000000 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/oven_manipulator/ItemProtocol.java +++ /dev/null @@ -1,150 +0,0 @@ -//package org.nl.acs.device_driver.conveyor.oven_manipulator; -// -//import cn.hutool.core.util.StrUtil; -//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_walk_y = "walk_y"; -// /** -// * 报警 -// */ -// public static String item_error = "error"; -// /** -// * 任务号 -// */ -// public static String item_task = "task"; -// -// /** -// * 行走列 -// */ -// public static String item_to_command = "to_command"; -// /** -// * 下发起始站 -// */ -// public static String item_to_onset = "to_onset"; -// /** -// * 下发目标站 -// */ -// public static String item_to_target = "to_target"; -// /** -// * 下发任务号 -// */ -// public static String item_to_task = "to_task"; -// -// -// private OvenGantryManipulatorDeviceDriver driver; -// -// public ItemProtocol(OvenGantryManipulatorDeviceDriver driver) { -// this.driver = driver; -// } -// -// 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 getWalk_y() { -// return this.getOpcIntegerValue(item_walk_y); -// } -// -// public int getError() { -// return this.getOpcIntegerValue(item_error); -// } -// -// public int getTask() { -// return this.getOpcIntegerValue(item_task); -// } -// -// -// -// -// Boolean isonline; -// -// public int getOpcIntegerValue(String protocol) { -// Integer value = this.driver.getIntegeregerValue(protocol); -// if (value == null) { -// // log.error(this.getDriver().getDeviceCode() + ":protocol " + protocol + " 信号同步异常!"); -// setIsonline(false); -// } else { -// setIsonline(true); -// return value; -// } -// return 0; -// -// } -// -// public String getOpcStringValue(String protocol) { -// String value = this.driver.getStringValue(protocol); -// if (StrUtil.isEmpty(value)) { -// -// } else { -// 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_walk_y, "行走列", "DB1.B4")); -// list.add(new ItemDto(item_error, "报警信号", "DB1.B5")); -// list.add(new ItemDto(item_task, "任务号", "DB1.D6")); -// 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_onset, "下发起始站", "DB2.W2")); -// list.add(new ItemDto(item_to_target, "下发目标站", "DB2.W4")); -// list.add(new ItemDto(item_to_task, "下发任务号", "DB2.D6")); -// return list; -// } -// -// @Override -// public String toString() { -// return ""; -// } -//} -// diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/oven_manipulator/OvenGantryManipulatorDefination.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/oven_manipulator/OvenGantryManipulatorDefination.java deleted file mode 100644 index c77d28ef4..000000000 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/oven_manipulator/OvenGantryManipulatorDefination.java +++ /dev/null @@ -1,62 +0,0 @@ -//package org.nl.acs.device_driver.conveyor.oven_manipulator; -// -//import org.nl.acs.device.device_driver.standard_inspect.ItemDto; -//import org.nl.acs.device.domain.Device; -//import org.nl.acs.device_driver.DeviceDriver; -//import org.nl.acs.device_driver.defination.OpcDeviceDriverDefination; -//import org.nl.acs.device.enums.DeviceType; -//import org.springframework.stereotype.Service; -// -//import java.util.LinkedList; -//import java.util.List; -// -///** -// * 烘箱-行架机械手 -// */ -//@Service -//public class OvenGantryManipulatorDefination implements OpcDeviceDriverDefination { -// @Override -// public String getDriverCode() { -// return "oven_manipulator"; -// } -// -// @Override -// public String getDriverName() { -// return "烘箱-行架机械手"; -// } -// -// @Override -// public String getDriverDescription() { -// return "烘箱-行架机械手"; -// } -// -// @Override -// public DeviceDriver getDriverInstance(Device device) { -// return (new OvenGantryManipulatorDeviceDriver()).setDevice(device).setDriverDefination(this); -// -// } -// -// @Override -// public Class getDeviceDriverType() { -// return OvenGantryManipulatorDeviceDriver.class; -// } -// -// @Override -// public List getFitDeviceTypes() { -// List types = new LinkedList(); -// types.add(DeviceType.station); -// 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/conveyor/oven_manipulator/OvenGantryManipulatorDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/oven_manipulator/OvenGantryManipulatorDeviceDriver.java deleted file mode 100644 index f8b548938..000000000 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/oven_manipulator/OvenGantryManipulatorDeviceDriver.java +++ /dev/null @@ -1,1204 +0,0 @@ -////package org.nl.acs.device_driver.conveyor.oven_manipulator; -//// -////import cn.hutool.core.date.DateUtil; -////import cn.hutool.core.util.IdUtil; -////import cn.hutool.core.util.ObjectUtil; -////import cn.hutool.core.util.StrUtil; -////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.DeviceService; -////import org.nl.acs.device_driver.DeviceDriver; -////import org.nl.acs.device_driver.RouteableDeviceDriver; -////import org.nl.acs.device_driver.conveyor.hongxiang_device.HongXiangConveyorDeviceDriver; -////import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; -////import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; -////import org.nl.acs.ext.wms.service.AcsToWmsService; -////import org.nl.acs.instruction.domain.Instruction; -////import org.nl.acs.instruction.enums.InstructionStatusEnum; -////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.task.enums.TaskStatusEnum; -////import org.nl.acs.task.service.TaskService; -////import org.nl.acs.task.service.dto.TaskDto; -////import org.nl.common.exception.BadRequestException; -////import org.nl.config.SpringContextHolder; -////import org.nl.config.language.LangProcess; -////import org.openscada.opc.lib.da.Server; -////import org.springframework.beans.factory.annotation.Autowired; -//// -////import java.util.*; -//// -/////** -//// * 烘箱-行架机械手 -//// */ -////@Slf4j -////@Data -////@RequiredArgsConstructor -////public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { -//// protected ItemProtocol itemProtocol = new ItemProtocol(this); -//// @Autowired -//// InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); -//// @Autowired -//// DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); -//// @Autowired -//// RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); -//// @Autowired -//// TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); -//// @Autowired -//// DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); -//// @Autowired -//// AcsToWmsService acsToWmsService = SpringContextHolder.getBean("acsToWmsServiceImpl"); -//// @Autowired -//// DeviceAppService deviceAppService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); -//// -//// /** -//// * 工作模式 -//// */ -//// int mode = 0; -//// int last_mode = 0; -//// /** -//// * 光电信号 -//// */ -//// int move = 0; -//// int last_move = 0; -//// /** -//// * 动作信号 -//// */ -//// int action = 0; -//// int last_action = 0; -//// /** -//// * 行走列 -//// */ -//// int walk_y = 0; -//// int last_walk_y = 0; -//// /** -//// * 报警 -//// */ -//// int error = 0; -//// int last_error = 0; -//// /** -//// * 任务号 -//// */ -//// int task = 0; -//// int last_task = 0; -//// -//// -//// Boolean isonline = true; -//// int hasGoods = 0; -//// String message = null; -//// Boolean iserror = false; -//// -//// Integer heartbeat_tag; -//// private Date instruction_require_time = new Date(); -//// -//// private int instruction_require_time_out; -//// /** -//// * 行架机械手申请任务成功标识 -//// */ -//// boolean requireSucess = false; -//// -//// private int instruction_finished_time_out; -//// -//// int branchProtocol = 0; -//// -//// -//// /** -//// * 暂定 0就绪 1请求取货 2取货完成 3请求放货 4放货完成 5取货完成离开 6放货完成离开 7请求进入区域 8请求离开区域 -//// */ -//// int flag; -//// -//// String device_code; -//// -//// /** -//// * 0 无任务执行 1更新指令状态 2下发电气信号 3允许取货 允许放货 5放货完成 -//// */ -//// int now_steps_type = 0; -//// String notCreateTaskMessage = ""; -//// String notCreateInstMessage = ""; -//// String feedMessage = ""; -//// -//// -//// @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(); -//// walk_y = this.itemProtocol.getWalk_y(); -//// error = this.itemProtocol.getError(); -//// task = this.itemProtocol.getTask(); -//// if (mode != last_mode) { -//// if (mode == 2) { -//// logServer.deviceExecuteLog(this.device_code, "", "", "信号复位前requireSuccess:" + requireSucess); -//// this.setRequireSucess(false); -//// message = null; -//// logServer.deviceExecuteLog(this.device_code, "", "", "信号复位后requireSuccess:" + requireSucess); -//// } -//// logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); -//// logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode); -//// } -//// if (move != last_move) { -//// logServer.deviceItemValue(this.device_code, "move", String.valueOf(move)); -//// logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + last_move + "->" + move); -//// } -//// if (action != last_action) { -//// logServer.deviceItemValue(this.device_code, "action", String.valueOf(action)); -//// logServer.deviceExecuteLog(this.device_code, "", "", "信号action:" + last_action + "->" + action); -//// } -//// if (error != last_error) { -//// logServer.deviceItemValue(this.device_code, "error", String.valueOf(error)); -//// logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error); -//// } -//// if (walk_y != last_walk_y) { -//// logServer.deviceItemValue(this.device_code, "walk_y", String.valueOf(walk_y)); -//// logServer.deviceExecuteLog(this.device_code, "", "", "信号walk_y:" + last_walk_y + "->" + walk_y); -//// } -//// if (task != last_task) { -//// logServer.deviceItemValue(this.device_code, "task", String.valueOf(task)); -//// logServer.deviceExecuteLog(this.device_code, "", "", "信号task:" + last_task + "->" + task); -//// } -//// -//// //更改任务状态 -//// if (task > 0) { -//// //inst_message -//// Instruction inst1 = instructionService.findByCodeFromCache(String.valueOf(task)); -//// if (inst1 != null) { -//// if (StrUtil.equals(inst1.getInstruction_status(), InstructionStatusEnum.READY.getIndex())) { -//// inst1.setInstruction_status(InstructionStatusEnum.BUSY.getIndex()); -//// inst1.setExecute_device_code(this.device_code); -//// instructionService.update(inst1); -////// TaskDto tas未反馈电气信号原因kDto = taskserver.findByCodeFromCache(inst1.getTask_code()); -////// if (ObjectUtil.isNotEmpty(taskDto)) { -////// if (StrUtil.isNotEmpty(taskDto.getExt_task_id())) { -////// JSONArray array = new JSONArray(); -////// JSONObject map = new JSONObject(); -////// map.put("task_id", taskDto.getExt_task_id()); -////// map.put("task_status", CommonFinalParam.ONE); -////// array.add(map); -////// acsToWmsService.feedbackTaskStatusToWms(array); -////// } -////// } -//// } -//// } -//// } -//// -//// //申请取货 -//// if (mode == 3 && action == 1 && move == 0 && task > 0) { -//// Instruction inst2 = instructionService.findByCodeFromCache(String.valueOf(task)); -//// if (ObjectUtil.isNotEmpty(inst2)) { -//// String start_device_code = inst2.getStart_device_code(); -//// Device device = deviceAppService.findDeviceByCode(start_device_code); -//// HongXiangConveyorDeviceDriver hongXiangConveyorDeviceDriver; -//// if (device.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { -//// hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) device.getDeviceDriver(); -//// //hongXiangConveyorDeviceDriver.writing("to_open_door", CommonFinalParam.ONE); -//// int mode = hongXiangConveyorDeviceDriver.getMode(); -//// int door = hongXiangConveyorDeviceDriver.getDoor(); -//// int action = hongXiangConveyorDeviceDriver.getAction(); -//// int error1 = hongXiangConveyorDeviceDriver.getError1(); -//// if (mode == 1 && door == 1 && action == 1 && error1 == 0) { -//// if (this.getNow_steps_type() == 2) { -//// this.writing("to_command", "2"); -//// this.setNow_steps_type(3); -//// } else { -//// logServer.deviceExecuteLog(this.device_code, "", "", "未反馈电气信号原因:当前步骤不为下发电气信号(now_steps_type!=2)"); -//// } -//// } else { -//// if (this.getNow_steps_type() == 2) { -//// feedMessage = "烘箱:" + hongXiangConveyorDeviceDriver.getDevice_code(); -//// if (mode != 1) { -//// feedMessage = feedMessage + "mode未联机,"; -//// } -//// if (door != 1) { -//// feedMessage = feedMessage + "door未开门,"; -//// } -//// if (action != 1) { -//// feedMessage = feedMessage + "action未允许取放,"; -//// } -//// if (error1 != 0) { -//// feedMessage = feedMessage + "error1出现故障。"; -//// } -//// } -//// } -//// } else { -//// if (this.getNow_steps_type() == 2) { -//// this.writing("to_command", "2"); -//// this.setNow_steps_type(3); -//// } else { -//// logServer.deviceExecuteLog(this.device_code, "", "", "未反馈电气信号原因:当前步骤不为下发电气信号(now_steps_type!=2)\")"); -//// } -//// } -//// } -//// } else { -//// if (this.getNow_steps_type() == 2) { -//// feedMessage = "行架机械手:"; -//// if (mode != 3) { -//// feedMessage = feedMessage + "mode不为运行中状态,"; -//// } -//// if (action != 1) { -//// feedMessage = feedMessage + "action不为取货中状态,"; -//// } -//// if (move != 0) { -//// feedMessage = feedMessage + "move不为无货状态,"; -//// } -//// if (task == 0) { -//// feedMessage = feedMessage + "task为0。"; -//// } -//// } -//// } -//// -//// //取货完成关闭烘箱门 -//// if (mode == 3 && action == 2 && move == 1 && task > 0) { -//// Instruction inst2 = instructionService.findByCodeFromCache(String.valueOf(task)); -//// if (ObjectUtil.isNotEmpty(inst2)) { -//// String start_device_code = inst2.getStart_device_code(); -//// Device device = deviceAppService.findDeviceByCode(start_device_code); -//// HongXiangConveyorDeviceDriver hongXiangConveyorDeviceDriver; -//// if (device.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { -//// hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) device.getDeviceDriver(); -//// hongXiangConveyorDeviceDriver.writing("to_close_door", CommonFinalParam.ONE); -//// } -//// if (this.getNow_steps_type() == 3) { -//// this.writing("to_command", "3"); -//// this.setNow_steps_type(4); -//// } else { -//// logServer.deviceExecuteLog(this.device_code, "", "", "未反馈电气信号原因:当前步骤不为允许取货(now_steps_type!=3)"); -//// } -//// } -//// } else { -//// if (this.getNow_steps_type() == 3) { -//// feedMessage = "行架机械手:"; -//// if (mode != 3) { -//// feedMessage = feedMessage + "mode不为运行中状态,"; -//// } -//// if (action != 2) { -//// feedMessage = feedMessage + "action不为取货完成状态,"; -//// } -//// if (move != 1) { -//// feedMessage = feedMessage + "move不为有货状态,"; -//// } -//// if (task == 0) { -//// feedMessage = feedMessage + "task为0。"; -//// } -//// } -//// } -//// -//// //申请放货 -//// if (mode == 3 && action == 3 && move == 1 && task > 0) { -//// Instruction instructionDto = instructionService.findByCode(String.valueOf(task)); -//// String next_device_code = instructionDto.getNext_device_code(); -//// Device nextDevice = deviceAppService.findDeviceByCode(next_device_code); -//// HongXiangConveyorDeviceDriver hongXiangConveyorDeviceDriver; -//// if (nextDevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { -//// hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) nextDevice.getDeviceDriver(); -//// //hongXiangConveyorDeviceDriver.writing("to_open_door", CommonFinalParam.ONE); -//// int mode = hongXiangConveyorDeviceDriver.getMode(); -//// int door = hongXiangConveyorDeviceDriver.getDoor(); -//// int action = hongXiangConveyorDeviceDriver.getAction(); -//// int error1 = hongXiangConveyorDeviceDriver.getError1(); -//// if (mode == 1 && door == 1 && action == 1 && error1 == 0) { -//// if (this.getNow_steps_type() == 4) { -//// this.writing("to_command", "4"); -//// this.setNow_steps_type(5); -//// } else { -//// logServer.deviceExecuteLog(this.device_code, "", "", "未反馈电气信号原因:当前步骤不为允许放货(now_steps_type!=4)"); -//// } -//// } else { -//// feedMessage = "烘箱:" + hongXiangConveyorDeviceDriver.getDevice_code(); -//// if (mode != 1) { -//// feedMessage = feedMessage + "mode未联机,"; -//// } -//// if (door != 1) { -//// feedMessage = feedMessage + "door未开门,"; -//// } -//// if (action != 1) { -//// feedMessage = feedMessage + "action未允许取放,"; -//// } -//// if (error1 != 0) { -//// feedMessage = feedMessage + "error1出现故障。"; -//// } -//// } -//// } else { -//// if (this.getNow_steps_type() == 4) { -//// this.writing("to_command", "4"); -//// this.setNow_steps_type(5); -//// } else { -//// logServer.deviceExecuteLog(this.device_code, "", "", "未反馈电气信号原因:当前步骤不为允许放货(now_steps_type!=4)"); -//// } -//// } -//// } else { -//// if (this.getNow_steps_type() == 4) { -//// feedMessage = "行架机械手:"; -//// if (mode != 3) { -//// feedMessage = feedMessage + "mode不为运行中状态,"; -//// } -//// if (action != 3) { -//// feedMessage = feedMessage + "action不为放货中状态,"; -//// } -//// if (move != 1) { -//// feedMessage = feedMessage + "move不为有货状态,"; -//// } -//// if (task == 0) { -//// feedMessage = feedMessage + "task为0。"; -//// } -//// } -//// } -//// -//// //放货完成 -//// if (mode == 3 && action == 4 && move == 0 && task > 0) { -//// Instruction inst2 = instructionService.findByCodeFromCache(String.valueOf(task)); -//// if (inst2 != null) { -//// if (StrUtil.equals(inst2.getInstruction_status(), InstructionStatusEnum.BUSY.getIndex())) { -//// try { -//// finish_instruction(inst2); -//// } catch (Exception e) { -//// e.printStackTrace(); -//// } -//// TaskDto taskDto = taskserver.findByCode(inst2.getTask_code()); -//// -//// String next_device_code = taskDto.getNext_device_code(); -//// //String start_device_code = taskDto.getStart_device_code(); -//// //Device startDevice = deviceAppService.findDeviceByCode(start_device_code); -//// Device nextDevice = deviceAppService.findDeviceByCode(next_device_code); -//// HongXiangConveyorDeviceDriver hongXiangConveyorDeviceDriver; -////// if (startDevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { -////// hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) startDevice.getDeviceDriver(); -////// hongXiangConveyorDeviceDriver.writing("to_close_door", CommonFinalParam.ONE); -////// } -//// if (nextDevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { -//// hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) nextDevice.getDeviceDriver(); -//// hongXiangConveyorDeviceDriver.writing("to_close_door", CommonFinalParam.ONE); -//// if (StrUtil.isNotEmpty(taskDto.getOven_time())) { -//// //下发烘箱时间 -//// int time = Integer.parseInt(taskDto.getOven_time()); -//// int hours = (time % (60 * 60 * 24)) / (60 * 60); -//// int minutes = (time % (60 * 60)) / 60; -//// hongXiangConveyorDeviceDriver.writing("to_time_house", String.valueOf(hours)); -//// hongXiangConveyorDeviceDriver.writing("to_time_min", String.valueOf(minutes)); -//// } -//// } -//// if (this.getNow_steps_type() == 5) { -//// this.writing("to_command", "5"); -//// this.setNow_steps_type(6); -//// this.setNow_steps_type(0); -//// feedMessage = ""; -//// } else { -//// logServer.deviceExecuteLog(this.device_code, "", "", "未反馈电气信号原因:当前步骤不为放货完成(now_steps_type!=5)"); -//// } -////// this.writing("to_onset", "0"); -////// this.writing("to_target", "0"); -////// this.writing("to_task", "0"); -//// } -//// } -//// } else { -//// if (this.getNow_steps_type() == 5) { -//// feedMessage = "行架机械手:"; -//// if (mode != 3) { -//// feedMessage = feedMessage + "mode不为运行中状态,"; -//// } -//// if (action != 4) { -//// feedMessage = feedMessage + "action不为放货完成状态,"; -//// } -//// if (move != 0) { -//// feedMessage = feedMessage + "move不为无货状态,"; -//// } -//// if (task == 0) { -//// feedMessage = feedMessage + "task为0。"; -//// } -//// } -//// } -//// -//// } catch (Exception var17) { -//// feedMessage = var17.getMessage(); -//// logServer.deviceExecuteLog(this.getDevice_code(), "", "", "读取信号值时出现异常:" + var17.getMessage()); -//// } -//// -////// if (!this.itemProtocol.getIsonline()) { -////// this.setIsonline(false); -////// this.setIserror(true); -////// message = "信号量同步异常"; -////// //未联机 -////// } else -//// 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) { -//// applyTask(); -//// notCreateInstMessage = ""; -//// notCreateTaskMessage = ""; -//// feedMessage = ""; -//// } else { -//// if (mode == 2) { -//// //if (!requireSucess) { -//// String remark = "未查找任务原因为:"; -//// if (mode != 2) { -//// remark = remark + "mode不是待机状态,"; -//// } -//// if (move != 0) { -//// remark = remark + "move为有货状态,"; -//// } -//// if (task != 0) { -//// remark = remark + "task任务号不为0,"; -//// } -//// if (requireSucess) { -//// remark = remark + "请求标记requireSucess为true。"; -//// } -//// this.setNotCreateTaskMessage(remark); -//// //} -//// } -//// } -//// -//// } -//// last_mode = mode; -//// last_move = move; -//// last_action = action; -//// last_walk_y = walk_y; -//// last_error = error; -//// last_task = task; -//// } -//// -//// -//// public boolean exe_error() { -//// if (this.error == 0) { -//// return true; -//// } else { -//// log.debug("设备报警"); -//// return false; -//// } -//// } -//// -//// -//// /** -//// * 申请任务 -//// * -//// * @param -//// */ -//// 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; -//// //抓取工位 -//// List getDeviceCodeList = this.getExtraDeviceCodes("get_device_code"); -//// //放货工位 -//// List putDeviceCodeList = this.getExtraDeviceCodes("put_device_code"); -//// TaskDto task = null; -//// for (int i = 0; i < getDeviceCodeList.size(); i++) { -//// String startDeviceCode = getDeviceCodeList.get(i); -//// List taskDtos = taskserver.queryTaskByDeviceCodeAndStatus(startDeviceCode); -//// if (ObjectUtil.isNotEmpty(taskDtos)) { -//// //按照优先级排序 优先级相等按照创建时间排序 -//// taskDtos = this.sortTask(taskDtos); -//// TaskDto taskDto = taskDtos.get(0); -//// Instruction instruction = instructionService.findByTaskcode(taskDto.getTask_code()); -//// String start_device_code = instruction.getStart_device_code(); -//// String next_device_code = instruction.getNext_device_code(); -//// //判断关联的同一列烘箱设备是否都关门 都关门返回false,有一个不关门就返回true -//// boolean isCloseDoor = this.judgeCloseDoor(start_device_code, next_device_code); -//// //未关门结束 -//// if (isCloseDoor) { -//// return false; -//// } -//// instruction.setInstruction_status(InstructionStatusEnum.BUSY.getIndex()); -//// instruction.setUpdate_time(DateUtil.now()); -//// instructionService.update(instruction); -//// Device startDevice = deviceAppService.findDeviceByCode(start_device_code); -//// Device nextDevice = deviceAppService.findDeviceByCode(next_device_code); -//// if (ObjectUtil.isEmpty(startDevice.getExtraValue().get("address"))) { -//// throw new BadRequestException(LangProcess.msg("device_checkAdd", startDevice.getDevice_code())); -//// } -//// if (ObjectUtil.isEmpty(nextDevice.getExtraValue().get("address"))) { -//// throw new BadRequestException(LangProcess.msg("device_checkAdd", nextDevice.getDevice_code())); -//// } -//// String start_addr = startDevice.getExtraValue().get("address").toString(); -//// String next_addr = nextDevice.getExtraValue().get("address").toString(); -//// this.writing("to_onset", start_addr); -//// this.writing("to_target", next_addr); -//// this.writing("to_task", instruction.getInstruction_code()); -//// this.writing("to_command", CommonFinalParam.ONE); -//// -//// this.setNow_steps_type(2); -//// this.setRequireSucess(true); -//// return true; -//// } else { -//// List taskDtoList = taskserver.queryTaskByDeviceCode(startDeviceCode); -//// if (ObjectUtil.isNotEmpty(taskDtoList)) { -//// //按照优先级排序 优先级相等按照创建时间排序 -//// taskDtoList = this.sortTask(taskDtoList); -//// task = taskDtoList.get(0); -//// } -//// if (ObjectUtil.isNotEmpty(task)) { -//// break; -//// } -//// } -//// } -//// if (!ObjectUtil.isEmpty(task)) { -//// String taskid = task.getTask_id(); -//// String taskcode = task.getTask_code(); -//// String vehiclecode = task.getVehicle_code(); -//// String priority = task.getPriority(); -//// String start_point_code = task.getStart_point_code(); -//// String start_device_code = task.getStart_device_code(); -//// String route_plan_code = task.getRoute_plan_code(); -//// String next_point_code = task.getNext_point_code(); -//// String next_device_code = task.getNext_device_code(); -//// -//// Instruction instdto = new Instruction(); -//// instdto.setInstruction_id(IdUtil.simpleUUID()); -//// instdto.setRoute_plan_code(route_plan_code); -//// instdto.setRemark(task.getRemark()); -//// instdto.setMaterial(task.getMaterial()); -//// instdto.setQuantity(task.getQuantity()); -//// instdto.setTask_id(taskid); -//// instdto.setTask_code(taskcode); -//// instdto.setVehicle_code(vehiclecode); -//// String now = DateUtil.now(); -//// instdto.setCreate_time(now); -//// 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.setPriority(priority); -//// instdto.setInstruction_status(InstructionStatusEnum.READY.getIndex()); -//// instdto.setExecute_device_code(start_point_code); -//// -//// //判断关联的同一列烘箱设备是否都关门 都关门返回false,有一个不关门就返回true -//// boolean isCloseDoor = this.judgeCloseDoor(instdto.getStart_device_code(), instdto.getNext_device_code()); -//// //如果未关门结束 -//// if (isCloseDoor) { -//// return false; -//// } -//// -//// try { -//// instructionService.create(instdto); -//// } catch (Exception e) { -//// notCreateInstMessage = e.getMessage(); -//// logServer.deviceExecuteLog(this.getDevice_code(), "", "", "创建指令时出现异常:" + e.getMessage()); -//// return false; -//// } -//// //创建指令后修改任务状态 -//// task.setTask_status(TaskStatusEnum.BUSY.getIndex()); -//// task.setUpdate_time(DateUtil.now()); -//// taskserver.update(task); -//// -//// Device startDevice = deviceAppService.findDeviceByCode(instdto.getStart_device_code()); -//// Device nextDevice = deviceAppService.findDeviceByCode(instdto.getNext_device_code()); -//// if (ObjectUtil.isEmpty(startDevice.getExtraValue().get("address"))) { -//// notCreateInstMessage = "设备:" + startDevice.getDevice_code() + "未设置电气调度号!"; -//// logServer.deviceExecuteLog(this.getDevice_code(), "", "", "设备:" + startDevice.getDevice_code() + "未设置电气调度号!"); -//// throw new BadRequestException(LangProcess.msg("device_checkAdd", startDevice.getDevice_code())); -//// } -//// if (ObjectUtil.isEmpty(nextDevice.getExtraValue().get("address"))) { -//// notCreateInstMessage = "设备:" + nextDevice.getDevice_code() + "未设置电气调度号!"; -//// logServer.deviceExecuteLog(this.getDevice_code(), "", "", "设备:" + nextDevice.getDevice_code() + "未设置电气调度号!"); -//// throw new BadRequestException(LangProcess.msg("device_checkAdd", nextDevice.getDevice_code())); -//// -//// } -//// String start_addr = startDevice.getExtraValue().get("address").toString(); -//// String next_addr = nextDevice.getExtraValue().get("address").toString(); -//// this.writing("to_onset", start_addr); -//// this.writing("to_target", next_addr); -//// this.writing("to_task", instdto.getInstruction_code()); -//// this.writing("to_command", CommonFinalParam.ONE); -//// HongXiangConveyorDeviceDriver hongXiangConveyorDeviceDriver; -//// if (nextDevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { -//// hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) nextDevice.getDeviceDriver(); -//// hongXiangConveyorDeviceDriver.writing("to_open_door", CommonFinalParam.ONE); -//// hongXiangConveyorDeviceDriver.writing("to_open_door", CommonFinalParam.ONE); -//// } -//// if (startDevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { -//// hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) startDevice.getDeviceDriver(); -//// hongXiangConveyorDeviceDriver.writing("to_open_door", CommonFinalParam.ONE); -//// hongXiangConveyorDeviceDriver.writing("to_open_door", CommonFinalParam.ONE); -//// } -//// this.setNow_steps_type(2); -//// this.setRequireSucess(true); -//// notCreateInstMessage = ""; -//// notCreateTaskMessage = ""; -//// } else { -//// notCreateInstMessage = "未找到关联设备的任务,指令无法创建"; -//// } -//// return true; -//// } -//// } -//// -//// public boolean exe_business() { -//// return true; -//// } -//// -//// public synchronized boolean finish_instruction(Instruction inst) throws Exception { -//// instructionService.finish(inst); -//// return true; -//// } -//// -//// public void writing(String param, String value) { -//// -//// String to_param = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() -//// + "." + param; -//// //String opcservcerid = this.getDevice().getOpc_server_id(); -//////Server server = ReadUtil.getServer(opcservcerid); -//// Map itemMap = new HashMap(); -//// -//// itemMap.put(to_param, Integer.parseInt(value)); -////// itemMap.put(to_param, Integer.parseInt(value)); -//// this.control(itemMap); -//// logServer.deviceExecuteLog(device_code, "", "", "下发电气信号设备号:" + device_code + ",下发电气:" + to_param + ",下发电气值:" + value); -//// } -//// -//// public void executing(Server server, Map itemMap) { -//// this.control(itemMap); -//// } -//// -//// /** -//// * 判断取货位或放货位为烘箱设备时关联的同一列烘箱设备是否有开门 -//// * @param start_device_code -//// * @param next_device_code -//// * @return -//// */ -//// public boolean judgeCloseDoor(String start_device_code, String next_device_code) { -//// Boolean isClose = false; -//// -//// try { -//// Device startDevice = deviceAppService.findDeviceByCode(start_device_code); -//// Device nextDevice = deviceAppService.findDeviceByCode(next_device_code); -//// HongXiangConveyorDeviceDriver hongXiangConveyorDeviceDriver; -//// if (ObjectUtil.isEmpty(startDevice)) { -//// throw new BadRequestException(LangProcess.msg("error_isNull", start_device_code)); -//// } -//// if (startDevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { -//// hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) startDevice.getDeviceDriver(); -//// List deviceCodes = hongXiangConveyorDeviceDriver.getExtraDeviceCodes("link_device_code"); -//// if (ObjectUtil.isNotEmpty(deviceCodes)) { -//// for (String deviceCode : deviceCodes) { -//// Device linkDevice = deviceAppService.findDeviceByCode(deviceCode); -//// if (ObjectUtil.isEmpty(linkDevice)) { -//// throw new BadRequestException(LangProcess.msg("device_checkrelate", start_device_code, deviceCode, "is null")); -//// } -// if (nextDevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { -// hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) nextDevice.getDeviceDriver(); -// hongXiangConveyorDeviceDriver.writing("to_close_door", CommonFinalParam.ONE); -// if (StrUtil.isNotEmpty(taskDto.getOven_time())) { -// //下发烘箱时间 -// int time = Integer.parseInt(taskDto.getOven_time()); -// int hours = (time % (60 * 60 * 24)) / (60 * 60); -// int minutes = (time % (60 * 60)) / 60; -// hongXiangConveyorDeviceDriver.writing("to_time_house", String.valueOf(hours)); -// hongXiangConveyorDeviceDriver.writing("to_time_min", String.valueOf(minutes)); -// } -// } -// if (this.getNow_steps_type() == 5) { -// this.writing("to_command", "5"); -// this.setNow_steps_type(6); -// this.setNow_steps_type(0); -// feedMessage = ""; -// } else { -// logServer.deviceExecuteLog(this.device_code, "", "", "未反馈电气信号原因:当前步骤不为放货完成(now_steps_type!=5)"); -// } -//// this.writing("to_onset", "0"); -//// this.writing("to_target", "0"); -//// this.writing("to_task", "0"); -// } -// } -// } else { -// if (this.getNow_steps_type() == 5) { -// feedMessage = "行架机械手:"; -// if (mode != 3) { -// feedMessage = feedMessage + "mode不为运行中状态,"; -// } -// if (action != 4) { -// feedMessage = feedMessage + "action不为放货完成状态,"; -// } -// if (move != 0) { -// feedMessage = feedMessage + "move不为无货状态,"; -// } -// if (task == 0) { -// feedMessage = feedMessage + "task为0。"; -// } -// } -// } -// -// } catch (Exception var17) { -// feedMessage = var17.getMessage(); -// logServer.deviceExecuteLog(this.getDevice_code(), "", "", "读取信号值时出现异常:" + var17.getMessage()); -// } -// -//// if (!this.itemProtocol.getIsonline()) { -//// this.setIsonline(false); -//// this.setIserror(true); -//// message = "信号量同步异常"; -//// //未联机 -//// } else -// 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) { -// applyTask(); -// notCreateInstMessage = ""; -// notCreateTaskMessage = ""; -// feedMessage = ""; -// } else { -// if (mode == 2) { -// //if (!requireSucess) { -// String remark = "未查找任务原因为:"; -// if (mode != 2) { -// remark = remark + "mode不是待机状态,"; -// } -// if (move != 0) { -// remark = remark + "move为有货状态,"; -// } -// if (task != 0) { -// remark = remark + "task任务号不为0,"; -// } -// if (requireSucess) { -// remark = remark + "请求标记requireSucess为true。"; -// } -// this.setNotCreateTaskMessage(remark); -// //} -// } -// } -// -// } -// last_mode = mode; -// last_move = move; -// last_action = action; -// last_walk_y = walk_y; -// last_error = error; -// last_task = task; -// } -// -// -// public boolean exe_error() { -// if (this.error == 0) { -// return true; -// } else { -// log.debug("设备报警"); -// return false; -// } -// } -// -// -// /** -// * 申请任务 -// * -// * @param -// */ -// 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; -// //抓取工位 -// List getDeviceCodeList = this.getExtraDeviceCodes("get_device_code"); -// //放货工位 -// List putDeviceCodeList = this.getExtraDeviceCodes("put_device_code"); -// TaskDto task = null; -// for (int i = 0; i < getDeviceCodeList.size(); i++) { -// String startDeviceCode = getDeviceCodeList.get(i); -// List taskDtos = taskserver.queryTaskByDeviceCodeAndStatus(startDeviceCode); -// if (ObjectUtil.isNotEmpty(taskDtos)) { -// //按照优先级排序 优先级相等按照创建时间排序 -// taskDtos = this.sortTask(taskDtos); -// TaskDto taskDto = taskDtos.get(0); -// Instruction instruction = instructionService.findByTaskcode(taskDto.getTask_code()); -// String start_device_code = instruction.getStart_device_code(); -// String next_device_code = instruction.getNext_device_code(); -// //判断关联的同一列烘箱设备是否都关门 都关门返回false,有一个不关门就返回true -// boolean isCloseDoor = this.judgeCloseDoor(start_device_code, next_device_code); -// //未关门结束 -// if (isCloseDoor) { -// return false; -// } -// instruction.setInstruction_status(InstructionStatusEnum.BUSY.getIndex()); -// instruction.setUpdate_time(DateUtil.now()); -// instructionService.update(instruction); -// Device startDevice = deviceAppService.findDeviceByCode(start_device_code); -// Device nextDevice = deviceAppService.findDeviceByCode(next_device_code); -// if (ObjectUtil.isEmpty(startDevice.getExtraValue().get("address"))) { -// throw new BadRequestException(LangProcess.msg("device_checkAdd", startDevice.getDevice_code())); -// } -// if (ObjectUtil.isEmpty(nextDevice.getExtraValue().get("address"))) { -// throw new BadRequestException(LangProcess.msg("device_checkAdd", nextDevice.getDevice_code())); -// } -// String start_addr = startDevice.getExtraValue().get("address").toString(); -// String next_addr = nextDevice.getExtraValue().get("address").toString(); -// this.writing("to_onset", start_addr); -// this.writing("to_target", next_addr); -// this.writing("to_task", instruction.getInstruction_code()); -// this.writing("to_command", CommonFinalParam.ONE); -// -// this.setNow_steps_type(2); -// this.setRequireSucess(true); -// return true; -// } else { -// List taskDtoList = taskserver.queryTaskByDeviceCode(startDeviceCode); -// if (ObjectUtil.isNotEmpty(taskDtoList)) { -// //按照优先级排序 优先级相等按照创建时间排序 -// taskDtoList = this.sortTask(taskDtoList); -// task = taskDtoList.get(0); -// } -// if (ObjectUtil.isNotEmpty(task)) { -// break; -// } -// } -// } -// if (!ObjectUtil.isEmpty(task)) { -// String taskid = task.getTask_id(); -// String taskcode = task.getTask_code(); -// String vehiclecode = task.getVehicle_code(); -// String priority = task.getPriority(); -// String start_point_code = task.getStart_point_code(); -// String start_device_code = task.getStart_device_code(); -// String route_plan_code = task.getRoute_plan_code(); -// String next_point_code = task.getNext_point_code(); -// String next_device_code = task.getNext_device_code(); -// -// Instruction instdto = new Instruction(); -// instdto.setInstruction_id(IdUtil.simpleUUID()); -// instdto.setRoute_plan_code(route_plan_code); -// instdto.setRemark(task.getRemark()); -// instdto.setMaterial(task.getMaterial()); -// instdto.setQuantity(task.getQuantity()); -// instdto.setTask_id(taskid); -// instdto.setTask_code(taskcode); -// instdto.setVehicle_code(vehiclecode); -// String now = DateUtil.now(); -// instdto.setCreate_time(now); -// 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.setPriority(priority); -// instdto.setInstruction_status(InstructionStatusEnum.READY.getIndex()); -// instdto.setExecute_device_code(start_point_code); -// -// //判断关联的同一列烘箱设备是否都关门 都关门返回false,有一个不关门就返回true -// boolean isCloseDoor = this.judgeCloseDoor(instdto.getStart_device_code(), instdto.getNext_device_code()); -// //如果未关门结束 -// if (isCloseDoor) { -// return false; -// } -// -// try { -// instructionService.create(instdto); -// } catch (Exception e) { -// notCreateInstMessage = e.getMessage(); -// logServer.deviceExecuteLog(this.getDevice_code(), "", "", "创建指令时出现异常:" + e.getMessage()); -// return false; -// } -// //创建指令后修改任务状态 -// task.setTask_status(TaskStatusEnum.BUSY.getIndex()); -// task.setUpdate_time(DateUtil.now()); -// taskserver.update(task); -// -// Device startDevice = deviceAppService.findDeviceByCode(instdto.getStart_device_code()); -// Device nextDevice = deviceAppService.findDeviceByCode(instdto.getNext_device_code()); -// if (ObjectUtil.isEmpty(startDevice.getExtraValue().get("address"))) { -// notCreateInstMessage = "设备:" + startDevice.getDevice_code() + "未设置电气调度号!"; -// logServer.deviceExecuteLog(this.getDevice_code(), "", "", "设备:" + startDevice.getDevice_code() + "未设置电气调度号!"); -// throw new BadRequestException(LangProcess.msg("device_checkAdd", startDevice.getDevice_code())); -// } -// if (ObjectUtil.isEmpty(nextDevice.getExtraValue().get("address"))) { -// notCreateInstMessage = "设备:" + nextDevice.getDevice_code() + "未设置电气调度号!"; -// logServer.deviceExecuteLog(this.getDevice_code(), "", "", "设备:" + nextDevice.getDevice_code() + "未设置电气调度号!"); -// throw new BadRequestException(LangProcess.msg("device_checkAdd", nextDevice.getDevice_code())); -// -// } -// String start_addr = startDevice.getExtraValue().get("address").toString(); -// String next_addr = nextDevice.getExtraValue().get("address").toString(); -// this.writing("to_onset", start_addr); -// this.writing("to_target", next_addr); -// this.writing("to_task", instdto.getInstruction_code()); -// this.writing("to_command", CommonFinalParam.ONE); -// HongXiangConveyorDeviceDriver hongXiangConveyorDeviceDriver; -// if (nextDevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { -// hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) nextDevice.getDeviceDriver(); -// hongXiangConveyorDeviceDriver.writing("to_open_door", CommonFinalParam.ONE); -// hongXiangConveyorDeviceDriver.writing("to_open_door", CommonFinalParam.ONE); -// } -// if (startDevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { -// hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) startDevice.getDeviceDriver(); -// hongXiangConveyorDeviceDriver.writing("to_open_door", CommonFinalParam.ONE); -// hongXiangConveyorDeviceDriver.writing("to_open_door", CommonFinalParam.ONE); -// } -// this.setNow_steps_type(2); -// this.setRequireSucess(true); -// notCreateInstMessage = ""; -// notCreateTaskMessage = ""; -// } else { -// notCreateInstMessage = "未找到关联设备的任务,指令无法创建"; -// } -// return true; -// } -// } -// -// public boolean exe_business() { -// return true; -// } -// -// public synchronized boolean finish_instruction(Instruction inst) throws Exception { -// instructionService.finish(inst); -// return true; -// } -// -// public void writing(String param, String value) { -// -// String to_param = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() -// + "." + param; -// //String opcservcerid = this.getDevice().getOpc_server_id(); -////Server server = ReadUtil.getServer(opcservcerid); -// Map itemMap = new HashMap(); -// -// itemMap.put(to_param, Integer.parseInt(value)); -//// itemMap.put(to_param, Integer.parseInt(value)); -// this.control(itemMap); -// logServer.deviceExecuteLog(device_code, "", "", "下发电气信号设备号:" + device_code + ",下发电气:" + to_param + ",下发电气值:" + value); -// } -// -// public void executing(Server server, Map itemMap) { -// this.control(itemMap); -// } -// -// /** -// * 判断取货位或放货位为烘箱设备时关联的同一列烘箱设备是否有开门 -// * @param start_device_code -// * @param next_device_code -// * @return -// */ -// public boolean judgeCloseDoor(String start_device_code, String next_device_code) { -// Boolean isClose = false; -// -// try { -// Device startDevice = deviceAppService.findDeviceByCode(start_device_code); -// Device nextDevice = deviceAppService.findDeviceByCode(next_device_code); -// HongXiangConveyorDeviceDriver hongXiangConveyorDeviceDriver; -// if (ObjectUtil.isEmpty(startDevice)) { -// throw new BadRequestException(LangProcess.msg("error_isNull", start_device_code)); -// } -// if (startDevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { -// hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) startDevice.getDeviceDriver(); -// List deviceCodes = hongXiangConveyorDeviceDriver.getExtraDeviceCodes("link_device_code"); -// if (ObjectUtil.isNotEmpty(deviceCodes)) { -// for (String deviceCode : deviceCodes) { -// Device linkDevice = deviceAppService.findDeviceByCode(deviceCode); -// if (ObjectUtil.isEmpty(linkDevice)) { -// throw new BadRequestException(LangProcess.msg("device_checkrelate", start_device_code, deviceCode, "is null")); -// } -// if (linkDevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { -// hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) linkDevice.getDeviceDriver(); -// //判断关联设备是否开门 -// if (hongXiangConveyorDeviceDriver.getDoor() == 1) { -// isClose = true; -// notCreateInstMessage = start_device_code + "关联设备->" + deviceCode + "烘箱门未关闭!"; -// break; -// } -// } -// } -// return isClose; -// } -// } -// if (ObjectUtil.isEmpty(nextDevice)) { -// throw new BadRequestException(LangProcess.msg("error_isNull", next_device_code)); -// } -// if (nextDevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { -// hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) nextDevice.getDeviceDriver(); -// List deviceCodes = hongXiangConveyorDeviceDriver.getExtraDeviceCodes("link_device_code"); -// if (ObjectUtil.isNotEmpty(deviceCodes)) { -// for (String deviceCode : deviceCodes) { -// Device linkDevice = deviceAppService.findDeviceByCode(deviceCode); -// if (ObjectUtil.isEmpty(linkDevice)) { -// throw new BadRequestException(LangProcess.msg("device_checkrelate", next_device_code, deviceCode, "is null")); -// } -// if (linkDevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { -// hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) linkDevice.getDeviceDriver(); -// //判断关联设备是否开门 -// if (hongXiangConveyorDeviceDriver.getDoor() == 1) { -// isClose = true; -// notCreateInstMessage = next_device_code + "关联设备->" + deviceCode + "烘箱门未关闭!"; -// break; -// } -// } -// } -// return isClose; -// } -// } -// } catch (Exception e) { -// isClose = true; -// logServer.deviceExecuteLog(this.getDevice_code(), "", "", "检查烘箱是否关门时出现异常:" + e.getMessage()); -// notCreateInstMessage = "检查烘箱是否关门时出现异常:" + e.getMessage(); -// } -// return isClose; -// } -// -// public void writing(int command) { -// //String opcservcerid = this.getDevice().getOpc_server_id(); -////Server server = ReadUtil.getServer(opcservcerid); -// Map itemMap = new HashMap(); -// this.control(itemMap); -// -// } -// -// /** -// * 将扩展表中的字符串数据转换成集合 -// */ -// @Override -// public List getExtraDeviceCodes(String extraName) { -// String extraValue = (String) this.getDevice().getExtraValue().get(extraName); -// if (StrUtil.isEmpty(extraValue)) { -// return new ArrayList<>(); -// } -// String devicesString = extraValue.substring(1, extraValue.length() - 1); -// List devicesList = new ArrayList<>(); -// String[] devices = devicesString.split(","); -// for (int i = 0; i < devices.length; i++) { -// String s = devices[i].replace("\"", "").replace("\"", ""); -// devicesList.add(s); -// } -// return devicesList; -// } -// -// public List sortTask(List taskDtos) { -// Collections.sort(taskDtos, new Comparator() { -// @Override -// public int compare(TaskDto t1, TaskDto t2) { -// //优先级从大到小 -// int i = t2.getPriority().compareTo(t1.getPriority()); -// //如果优先级相等 -// if (i == 0) { -// //时间从早到晚 -// i = t1.getCreate_time().compareTo(t2.getCreate_time()); -// } -// return i; -// } -// }); -// return taskDtos; -// } -// -// -// @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 = CommonFinalParam.ONE; -// } -// 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("walk_y", walk_y); -// 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, CommonFinalParam.ONE)) { -// this.requireSucess = true; -// } -// } -// -//// public void writing(int type, int command) { -//// String to_material_code = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() -//// + "." + ItemProtocol.item_to_material_code; -//// String opcservcerid = this.getDevice().getOpc_server_id(); -//// Server server = ReadUtil.getServer(opcservcerid); -//// Map itemMap = new HashMap(); -//// if (type == 2) { -//// itemMap.put(to_material_code, command); -//// } -//// this.control(itemMap); -//// -//// } -// -//} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/oven_manipulator/Test.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/oven_manipulator/Test.java deleted file mode 100644 index 1a4b7bfd5..000000000 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/oven_manipulator/Test.java +++ /dev/null @@ -1,56 +0,0 @@ -package org.nl.acs.device_driver.conveyor.oven_manipulator; - -import java.text.DecimalFormat; - -public class Test { - public static String beautifyTime(double second) { - if (second <= 0) { - return "0"; - } - final String[] units = new String[]{"秒", "分钟", "小时"}; - int digitGroups = (int) (Math.log10(second) / Math.log10(60)); - String value = "0"; - if (digitGroups < 3) { - value = new DecimalFormat("#,##0.#").format(second / Math.pow(60, digitGroups)) + "" + units[digitGroups]; - } else if (digitGroups >= 3) { - //如果超过了小时的表达范围则,则转换为天,小时,分,秒格式 - - value = secondToDate(second); - } - - return value; - } - - public static String secondToDate(double second) { - Long time = new Long(new Double(second).longValue()); - String strTime = null; - Long days = time / (60 * 60 * 24); - Long hours = (time % (60 * 60 * 24)) / (60 * 60); - Long minutes = (time % (60 * 60)) / 60; - Long seconds = time % 60; - if (days > 0) { - strTime = days + "天" + hours + "小时" + minutes + "分钟"; - } else if (hours > 0) { - strTime = hours + "小时" + minutes + "分钟"; - } else if (minutes > 0) { - strTime = minutes + "分钟" + seconds + "秒"; - } else { - strTime = second + "秒"; - } - return strTime; - } - - - public static void main(String[] args) { - - Long time = new Long(new Double(7500).longValue()); - Long hours = (time % (60 * 60 * 24)) / (60 * 60); - Long minutes = (time % (60 * 60)) / 60; - Long seconds = time % 60; - System.out.println(hours); - System.out.println(minutes); - System.out.println(seconds); - - } - -} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/siemens_conveyor/SiemensConveyorDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/siemens_conveyor/SiemensConveyorDeviceDriver.java index f818d37f7..af1d6786b 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/siemens_conveyor/SiemensConveyorDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/siemens_conveyor/SiemensConveyorDeviceDriver.java @@ -81,27 +81,27 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme */ Instruction inst = null; - /** + /** * 工作模式 */ int mode = 0; int last_mode = 0; - /** + /** * 光电信号 */ int move = 0; int last_move = 0; - /** + /** * 托盘方向 */ int carrier_direction = 0; int last_carrier_direction = 0; - /** + /** * 报警 */ int error = 0; int last_error = 0; - /** + /** * 任务号 */ int task = 0; @@ -308,16 +308,16 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme break; case 4: /** - * 申请捆扎 - */ + * 申请捆扎 + */ if (move > 0) { applyLaStrangulation(); } break; case 5: /** - * 申请贴标 - */ + * 申请贴标 + */ if (move > 0 && !requireSucess) { applyLabeling(); @@ -526,15 +526,27 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme this.checkcontrol(itemMap); } catch (Exception e) { e.printStackTrace(); - try{ + try { this.checkcontrol(itemMap); - } catch (Exception e1){ + } catch (Exception e1) { e1.printStackTrace(); } } } + public void writing(String param, String value) { + + String to_param = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() + + "." + param; + + Map itemMap = new HashMap(); + + itemMap.put(to_param, Integer.parseInt(value)); + this.control(itemMap); + logServer.deviceExecuteLog(device_code, "", "", "下发电气信号设备号:" + device_code + ",下发电气:" + to_param + ",下发电气值:" + value); + } + /** * 请求指令 @@ -740,13 +752,11 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme } ApplyLabelingAndBindingRequest applyLabelingAndBindingRequest = new ApplyLabelingAndBindingRequest(); -// JSONObject device_json = WQLObject.getWQLObject("acs_storage_cell").query("storage_code ='" + this.device_code + "'").uniqueResult(0); StorageCell storageCell = new LambdaQueryChainWrapper<>(storageCellMapper) .eq(StorageCell::getStorage_code, this.device_code) .one(); String start_point_code = null; if (!ObjectUtil.isEmpty(storageCell)) { -// start_point_code = (String) device_json.get("parent_storage_code") == null ? this.device_code : (String) device_json.get("parent_storage_code"); start_point_code = (String) storageCell.getParent_storage_code() == null ? this.device_code : (String) storageCell.getParent_storage_code(); } applyLabelingAndBindingRequest.setDevice_code(start_point_code); @@ -788,30 +798,25 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme if (ObjectUtil.isEmpty(instruction)) { message = "申请捆扎电气设备任务号:" + task + "未找到对应指令"; return; -// throw new RuntimeException("该电气任务号未找到对应指令!"); } vehicle_code = instruction.getVehicle_code(); } else { logServer.deviceExecuteLog(device_code, "", "", "申请捆扎电气设备任务号:" + task + "异常"); message = "申请捆扎电气设备任务号:" + task + "异常"; return; -// throw new RuntimeException("任务号为空!"); } if (StrUtil.isEmpty(vehicle_code)) { logServer.deviceExecuteLog(device_code, "", "", "申请捆扎电气设备任务号:" + task + "未找到载具号"); message = "申请捆扎电气设备任务号:" + task + "未找到载具号"; return; -// throw new RuntimeException("载具号为空!"); } ApplyLabelingAndBindingRequest applyLabelingAndBindingRequest = new ApplyLabelingAndBindingRequest(); -// JSONObject device_json = WQLObject.getWQLObject("acs_storage_cell").query("storage_code ='" + this.device_code + "'").uniqueResult(0); StorageCell storageCell = new LambdaQueryChainWrapper<>(storageCellMapper) .eq(StorageCell::getStorage_code, this.device_code) .one(); String start_point_code = null; if (!ObjectUtil.isEmpty(storageCell)) { -// start_point_code = (String) device_json.get("parent_storage_code") == null ? this.device_code : (String) device_json.get("parent_storage_code"); start_point_code = (String) storageCell.getParent_storage_code() == null ? this.device_code : (String) storageCell.getParent_storage_code(); } applyLabelingAndBindingRequest.setDevice_code(start_point_code); diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/driver/AbstractOpcDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/driver/AbstractOpcDeviceDriver.java index 45cfc5d8b..530bc7739 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/driver/AbstractOpcDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/driver/AbstractOpcDeviceDriver.java @@ -116,7 +116,7 @@ public class AbstractOpcDeviceDriver extends AbstractDeviceDriver implements Opc } if (i > 3) { -// log.info("写入次数超过3次而失败"); +// log.info("写入次数超过3次而失败"); throw new RuntimeException("写入次数超过3次而失败"); } ++i; diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/box_storage_out_conveyor/BoxStorageOutConveyorDefination.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/box_storage_out_conveyor/BoxStorageOutConveyorDefination.java index 7c0997ebc..b6d85f0f3 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/box_storage_out_conveyor/BoxStorageOutConveyorDefination.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/box_storage_out_conveyor/BoxStorageOutConveyorDefination.java @@ -18,17 +18,17 @@ import java.util.List; public class BoxStorageOutConveyorDefination implements OpcDeviceDriverDefination { @Override public String getDriverCode() { - return "box_storage_conveyor"; + return "box_storage_out_conveyor"; } @Override public String getDriverName() { - return "一楼木箱入库站点"; + return "一楼木箱出入库标准站点"; } @Override public String getDriverDescription() { - return "一楼木箱入库站点"; + return "一楼木箱出入库标准站点"; } @Override @@ -45,7 +45,7 @@ public class BoxStorageOutConveyorDefination implements OpcDeviceDriverDefinatio @Override public List getFitDeviceTypes() { List types = new LinkedList(); - types.add(DeviceType.station); + types.add(DeviceType.conveyor); return types; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/box_storage_out_conveyor/BoxStorageOutConveyorDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/box_storage_out_conveyor/BoxStorageOutConveyorDeviceDriver.java index fc511ca50..55be68eed 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/box_storage_out_conveyor/BoxStorageOutConveyorDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/box_storage_out_conveyor/BoxStorageOutConveyorDeviceDriver.java @@ -23,6 +23,7 @@ import org.nl.acs.history.service.DeviceErrorLogService; import org.nl.acs.history.service.dto.DeviceErrorLogDto; import org.nl.acs.history.service.impl.DeviceErrorLogServiceImpl; import org.nl.acs.instruction.domain.Instruction; +import org.nl.acs.instruction.enums.InstructionStatusEnum; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.log.service.DeviceExecuteLogService; import org.nl.acs.monitor.DeviceStageMonitor; @@ -203,8 +204,8 @@ public class BoxStorageOutConveyorDeviceDriver extends AbstractOpcDeviceDriver i log.debug("设备运转模式:等待工作"); break; case 2: - //木箱出库申请任务 - if (move > 0 && !requireSucess) { + //申请任务 + if (move > 0 && task == 0 && !requireSucess) { instruction_require(); } break; @@ -281,9 +282,8 @@ public class BoxStorageOutConveyorDeviceDriver extends AbstractOpcDeviceDriver i instructionService.update(inst); logServer.deviceExecuteLog(device_code, "", "", "纸箱入库输送线任务开始反馈执行中状态,反馈成功,指令号:" + task + ",载具号:" + inst.getVehicle_code()); } - if (StrUtil.equals(inst.getInstruction_status(), "1") || StrUtil.equals(inst.getInstruction_status(), "0")) { + if (StrUtil.equals(inst.getInstruction_status(), InstructionStatusEnum.BUSY.getIndex()) || StrUtil.equals(inst.getInstruction_status(), InstructionStatusEnum.READY.getIndex())) { if (StrUtil.equals(this.getDeviceCode(), inst.getNext_device_code())) { - vehicle_code = inst.getVehicle_code(); inst.setExecute_device_code(this.device_code); if (mode == 2) { finish_instruction(); diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/box_storage_out_conveyor/ItemProtocol.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/box_storage_out_conveyor/ItemProtocol.java index bb7b6b759..0c3193f9a 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/box_storage_out_conveyor/ItemProtocol.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/box_storage_out_conveyor/ItemProtocol.java @@ -134,15 +134,7 @@ public class ItemProtocol { } - public String getOpcStringValue(String protocol) { - String value = this.driver.getStringValue(protocol); - if (StrUtil.isEmpty(value)) { - } else { - return value; - } - return "0"; - } public static List getReadableItemDtos() { ArrayList list = new ArrayList(); diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/box_subvolumes_conveyor/BoxSubvolumesConveyorDefination.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/box_subvolumes_conveyor/BoxSubvolumesConveyorDefination.java index a6b8444dc..49523a5ba 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/box_subvolumes_conveyor/BoxSubvolumesConveyorDefination.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/box_subvolumes_conveyor/BoxSubvolumesConveyorDefination.java @@ -19,7 +19,7 @@ import java.util.List; public class BoxSubvolumesConveyorDefination implements OpcDeviceDriverDefination { @Override public String getDriverCode() { - return "box_out_subvolumes_conveyor"; + return "box_subvolumes_conveyor"; } @Override @@ -46,7 +46,7 @@ public class BoxSubvolumesConveyorDefination implements OpcDeviceDriverDefinatio @Override public List getFitDeviceTypes() { List types = new LinkedList(); - types.add(DeviceType.station); + types.add(DeviceType.conveyor); return types; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/finished_product_out_with_bind_lable_conveyor/FinishedProductOutBindLableConveyorDefination.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/finished_product_out_with_bind_lable_conveyor/FinishedProductOutBindLableConveyorDefination.java index 264665037..368f69b3f 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/finished_product_out_with_bind_lable_conveyor/FinishedProductOutBindLableConveyorDefination.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/finished_product_out_with_bind_lable_conveyor/FinishedProductOutBindLableConveyorDefination.java @@ -46,7 +46,7 @@ public class FinishedProductOutBindLableConveyorDefination implements OpcDeviceD @Override public List getFitDeviceTypes() { List types = new LinkedList(); - types.add(DeviceType.station); + types.add(DeviceType.conveyor); return types; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/finished_product_out_with_bind_lable_conveyor/FinishedProductOutBindLableDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/finished_product_out_with_bind_lable_conveyor/FinishedProductOutBindLableDeviceDriver.java index 2244fd103..9159cdb3d 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/finished_product_out_with_bind_lable_conveyor/FinishedProductOutBindLableDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/finished_product_out_with_bind_lable_conveyor/FinishedProductOutBindLableDeviceDriver.java @@ -5,6 +5,7 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import lombok.Data; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -17,6 +18,9 @@ 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.enums.AcsToLmsApplyTaskTypeEnum; +import org.nl.acs.ext.wms.data.one.ApplyLabelingAndBindingRequest; +import org.nl.acs.ext.wms.data.one.ApplyLabelingAndBindingResponse; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.history.ErrorUtil; import org.nl.acs.history.service.DeviceErrorLogService; @@ -28,6 +32,8 @@ import org.nl.acs.monitor.DeviceStageMonitor; import org.nl.acs.opc.DeviceAppService; import org.nl.acs.route.service.RouteLineService; import org.nl.acs.route.service.dto.RouteLineDto; +import org.nl.acs.storage_cell.domain.StorageCell; +import org.nl.acs.storage_cell.service.mapper.StorageCellMapper; import org.nl.acs.task.service.TaskService; import org.nl.acs.task.service.dto.TaskDto; import org.nl.config.SpringContextHolder; @@ -70,6 +76,8 @@ public class FinishedProductOutBindLableDeviceDriver extends AbstractOpcDeviceDr //当前指令 Instruction inst = null; + private StorageCellMapper storageCellMapper; + private String error_type = "ssx_error_type"; //工作模式 @@ -172,37 +180,6 @@ public class FinishedProductOutBindLableDeviceDriver extends AbstractOpcDeviceDr - if (to_length != last_to_length) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_length:" + last_to_length + "->" + to_length); - } - if (to_weight != last_to_weight) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_weight:" + last_to_weight + "->" + to_weight); - } - if (to_height != last_to_height) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_height:" + last_to_height + "->" + to_height); - } - if (to_command != last_to_command) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_command:" + last_to_command + "->" + to_command); - } - if (to_target != last_to_target) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_target:" + last_to_target + "->" + to_target); - } - if (to_task != last_to_task) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_task:" + last_to_task + "->" + to_task); - } - if (mode != last_mode) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode + "复位请求标记:" + requireSucess); - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode); - } - - if (carrier_direction != last_carrier_direction) { - logServer.deviceItemValue(this.device_code, "carrier_direction", String.valueOf(carrier_direction)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号carrier_direction:" + last_carrier_direction + "->" + carrier_direction); - } - if (error != last_error) { - logServer.deviceItemValue(this.device_code, "error", String.valueOf(error)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error); - } if (move != 0 && task > 0) { @@ -241,6 +218,12 @@ public class FinishedProductOutBindLableDeviceDriver extends AbstractOpcDeviceDr instruction_require(); } break; + case 10: + //申请捆轧贴标信息 + if (move > 0 && !requireSucess) { + applyLaStrangulationAndLabeling(); + } + break; } } last_mode = mode; @@ -258,6 +241,131 @@ public class FinishedProductOutBindLableDeviceDriver extends AbstractOpcDeviceDr last_to_height = to_height; } + private void applyLaStrangulationAndLabeling() { + Date date = new Date(); + if (date.getTime() - this.require_apply_strangulation_time.getTime() < (long) this.instruction_require_time_out) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); + return; + } else { + this.require_apply_strangulation_time = date; + String vehicle_code = ""; + if (task > 0) { + Instruction instruction = instructionService.findByCodeFromCache(String.valueOf(task)); + if (ObjectUtil.isEmpty(instruction)) { + message = "申请捆扎电气设备任务号:" + task + "未找到对应指令"; + return; + } + vehicle_code = instruction.getVehicle_code(); + } else { + logServer.deviceExecuteLog(device_code, "", "", "申请捆扎电气设备任务号:" + task + "异常"); + message = "申请捆扎电气设备任务号:" + task + "异常"; + return; + } + if (StrUtil.isEmpty(vehicle_code)) { + logServer.deviceExecuteLog(device_code, "", "", "申请捆扎电气设备任务号:" + task + "未找到载具号"); + message = "申请捆扎电气设备任务号:" + task + "未找到载具号"; + return; + } + ApplyLabelingAndBindingRequest applyLabelingAndBindingRequest = + new ApplyLabelingAndBindingRequest(); + StorageCell storageCell = new LambdaQueryChainWrapper<>(storageCellMapper) + .eq(StorageCell::getStorage_code, this.device_code) + .one(); + String start_point_code = null; + if (!ObjectUtil.isEmpty(storageCell)) { + start_point_code = (String) storageCell.getParent_storage_code() == null ? this.device_code : (String) storageCell.getParent_storage_code(); + } + applyLabelingAndBindingRequest.setDevice_code(start_point_code); + applyLabelingAndBindingRequest.setType(AcsToLmsApplyTaskTypeEnum.LABEL_BIND.getType()); + applyLabelingAndBindingRequest.setVehicle_code(vehicle_code); + ApplyLabelingAndBindingResponse applyLabelingAndBindingResponse = acsToWmsService.applyLabelingAndBindingRequest(applyLabelingAndBindingRequest); + if (applyLabelingAndBindingResponse.getstatus() == 200) { + if (ObjectUtil.isNotEmpty(applyLabelingAndBindingResponse.getData())) { + Map datas = applyLabelingAndBindingResponse.getData(); + packagePLCData(datas); + message = "申请捆扎成功"; + requireSucess = true; + } else { + message = "未返回尺寸信息"; + } + + } else { + message = applyLabelingAndBindingResponse.getMessage(); + } + + } + } + + private void packagePLCData(Map datas) { + String length = datas.get("length").toString(); + String weight = datas.get("weight").toString(); + String height = datas.get("height").toString(); + String isBinding = datas.get("isBinding").toString(); + String isLabeling = datas.get("isLabeling").toString(); + String printQty = datas.get("printQty").toString(); + String labelingTemplate = datas.get("labelingTemplate").toString(); + String bindingTemplate = datas.get("bindingTemplate").toString(); + String printDevice = datas.get("printDevice").toString(); + String bundleTimes = datas.get("bundleTimes").toString(); + + List list = new ArrayList(); + Map map = new HashMap(); + map.put("code", "to_length"); + map.put("value", length); + list.add(map); + Map map2 = new HashMap(); + map2.put("code", "to_weight"); + map2.put("value", weight); + list.add(map2); + Map map3 = new HashMap(); + map3.put("code", "to_height"); + map3.put("value", height); + list.add(map3); + Map map4 = new HashMap(); + map4.put("code", "to_is_binding"); + map4.put("value", isBinding); + list.add(map4); + Map map5 = new HashMap(); + map5.put("code", "to_command"); + map5.put("value", "10"); + list.add(map5); + Map map6 = new HashMap(); + map6.put("code", "to_is_labeling"); + map6.put("value", isLabeling); + list.add(map6); + Map map7 = new HashMap(); + map7.put("code", "to_print_qty"); + map7.put("value", printQty); + list.add(map7); + Map map8 = new HashMap(); + map8.put("code", "to_print_qty"); + map8.put("value", printQty); + list.add(map8); + Map map9 = new HashMap(); + map9.put("code", "to_print_device"); + map9.put("value", printDevice); + list.add(map9); + Map map10 = new HashMap(); + map10.put("code", "to_binding_template"); + map10.put("value", bindingTemplate); + list.add(map10); + Map map11 = new HashMap(); + map11.put("code", "to_binding_times"); + map11.put("value", bundleTimes); + list.add(map11); + Map map12 = new HashMap(); + map12.put("code", "to_labeling_template"); + map12.put("value", labelingTemplate); + list.add(map12); + try { + this.writing(list); + } catch (Exception e) { + message = "写入信号失败"; + } + this.setRequireSucess(true); + + } + public boolean exe_error() { if (this.error == 0) { diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/scanner_weight_conveyor/ConveyorWithScannerWeightDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/scanner_weight_conveyor/ConveyorWithScannerWeightDeviceDriver.java index cae8d3361..c5afabe01 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/scanner_weight_conveyor/ConveyorWithScannerWeightDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/scanner_weight_conveyor/ConveyorWithScannerWeightDeviceDriver.java @@ -1,5 +1,6 @@ package org.nl.acs.device_driver.one_conveyor.scanner_weight_conveyor; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; @@ -25,6 +26,7 @@ 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.enums.InstructionStatusEnum; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.log.service.DeviceExecuteLogService; import org.nl.acs.monitor.DeviceStageMonitor; @@ -33,6 +35,7 @@ import org.nl.acs.opc.DeviceAppServiceImpl; import org.nl.acs.route.service.RouteLineService; import org.nl.acs.route.service.dto.RouteLineDto; 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; @@ -154,6 +157,9 @@ public class ConveyorWithScannerWeightDeviceDriver extends AbstractOpcDeviceDriv String notCreateTaskMessage = ""; String notCreateInstMessage = ""; String feedMessage = ""; + String inst_message; + String task_code = null; + String vehicle_code; List getDeviceCodeList = null; @@ -185,66 +191,13 @@ public class ConveyorWithScannerWeightDeviceDriver extends AbstractOpcDeviceDriv carrier_direction = this.itemProtocol.getCarrier_direction(); qty = this.itemProtocol.getQty(); weight = this.itemProtocol.getWeight(); - barcode = this.itemProtocol.getBarcode(); + // barcode = this.itemProtocol.getBarcode(); - if (to_container_type != last_to_container_type) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_container_type:" + last_to_container_type + "->" + to_container_type); - } - if (container_type != last_container_type) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号container_type:" + last_container_type + "->" + container_type); - } - if (hj_task != last_hj_task) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号hj_task:" + last_hj_task + "->" + hj_task); - } - if (qty != last_qty) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号qty:" + last_qty + "->" + qty); - } - if (weight != last_weight) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号weight:" + last_weight + "->" + weight); - } - if (barcode != last_barcode) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号barcode:" + last_barcode + "->" + barcode); - } - if (carrier_direction != last_carrier_direction) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号carrier_direction:" + last_carrier_direction + "->" + carrier_direction); - } - if (to_command != last_to_command) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_command:" + last_to_command + "->" + to_command); - } - if (to_target != last_to_target) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_target:" + last_to_target + "->" + to_target); - } - if (to_task != last_to_task) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_task:" + last_to_task + "->" + to_task); - } - if (mode != last_mode) { - requireSucess = false; - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode); - } - if (move != last_move) { - logServer.deviceItemValue(this.device_code, "move", String.valueOf(move)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + last_move + "->" + move); - } - if (action != last_action) { - logServer.deviceItemValue(this.device_code, "action", String.valueOf(action)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号action:" + last_action + "->" + action); - } - if (error != last_error) { - //存在报警信号,则下发去异常处理位的任务 - applyErrorTask(); + if (move != 0 && task > 0) { - logServer.deviceItemValue(this.device_code, "error", String.valueOf(error)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error); + update_instruction_status(); } - if (task != last_task) { - logServer.deviceItemValue(this.device_code, "task", String.valueOf(task)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号task:" + last_task + "->" + task); - } - - // 更新指令状态 - updateInstruct(); } catch (Exception e) { logServer.deviceExecuteLog(this.device_code, "", "", "读取信号值时出现异常:" + Arrays.toString(e.getStackTrace())); @@ -258,7 +211,8 @@ public class ConveyorWithScannerWeightDeviceDriver extends AbstractOpcDeviceDriv } else if (error != 0) { this.setIserror(true); message = "有报警"; - //无报警 + //申请异常位任务 + applyErrorTask(); } else { this.setIsonline(true); this.setIserror(false); @@ -271,7 +225,7 @@ public class ConveyorWithScannerWeightDeviceDriver extends AbstractOpcDeviceDriv } //申请入库指令、异常位指令 - if (mode == 2 && move == 1 && task > 0 && !requireSucess) { + if (mode == 2 && move == 1 && !requireSucess) { boolean res = instruction_require(); if (res) { notCreateInstMessage = ""; @@ -366,27 +320,43 @@ public class ConveyorWithScannerWeightDeviceDriver extends AbstractOpcDeviceDriv } } + /** + * 更新指令状态 + */ + public synchronized void update_instruction_status() throws Exception { + 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); - private void updateInstruct() { - if (mode == 3 && task > 0) { - 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); + } else { + this.instruction_update_time = date; + inst = checkInst(); + if (inst != null) { + inst_message = "当前指令号:" + inst.getInstruction_code() + " " + inst.getStart_point_code() + "->" + inst.getNext_point_code() + " 载具号:" + inst.getVehicle_code(); + vehicle_code = inst.getVehicle_code(); + task_code = inst.getTask_code(); + if (StrUtil.equals(inst.getInstruction_status(), "0") && StrUtil.equals(this.getDeviceCode(), inst.getStart_device_code())) { + inst.setInstruction_status("1"); + inst.setExecute_device_code(this.device_code); + instructionService.update(inst); + logServer.deviceExecuteLog(device_code, "", "", "纸箱入库输送线任务开始反馈执行中状态,反馈成功,指令号:" + task + ",载具号:" + inst.getVehicle_code()); + } + if (StrUtil.equals(inst.getInstruction_status(), InstructionStatusEnum.BUSY.getIndex()) || StrUtil.equals(inst.getInstruction_status(), InstructionStatusEnum.READY.getIndex())) { + if (StrUtil.equals(this.getDeviceCode(), inst.getNext_device_code())) { + inst.setExecute_device_code(this.device_code); + if (mode == 2) { + finish_instruction(); } + logServer.deviceExecuteLog(device_code, "", "", "纸箱入库输送线任务开始反馈完成状态,反馈成功,指令号:" + task + ",载具号:" + inst.getVehicle_code()); + } else { + } } + } else { +// message = "输送线任务反馈状态,查询不到指令号:" + task +"指令已完成"; + inst_message = null; } + } } @@ -408,36 +378,27 @@ public class ConveyorWithScannerWeightDeviceDriver extends AbstractOpcDeviceDriv String taskcode = taskdto.getTask_code(); String vehiclecode = taskdto.getVehicle_code(); String priority = taskdto.getPriority(); - String route_plan_code = taskdto.getRoute_plan_code(); - - List shortPathsList = routeLineService.getShortPathLines(taskdto.getStart_device_code(), taskdto.getNext_device_code(), route_plan_code); - RouteLineDto routeLineDto = shortPathsList.get(0); - String path = routeLineDto.getPath(); - String[] str = path.split("->"); - List pathlist = Arrays.asList(str); - Integer start = 2; - String start_point_code = pathlist.get(start); - String start_device_code = pathlist.get(start); - String next_device_code = pathlist.get(start+1); Instruction instdto = new Instruction(); - instdto.setInstruction_id(IdUtil.simpleUUID()); - instdto.setRoute_plan_code(route_plan_code); - instdto.setRemark(taskdto.getRemark()); - instdto.setMaterial(taskdto.getMaterial()); - instdto.setQuantity(taskdto.getQuantity()); - instdto.setTask_id(taskid); - instdto.setTask_code(taskcode); - instdto.setVehicle_code(vehiclecode); - String now = DateUtil.now(); - instdto.setCreate_time(now); - 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_device_code); - instdto.setPriority(priority); - instdto.setInstruction_status("0"); - instdto.setExecute_device_code(start_point_code); + if (TaskTypeEnum.AGV_Task.equals(taskdto.getTask_type())){ + String route_plan_code = taskdto.getRoute_plan_code(); + + List shortPathsList = routeLineService.getShortPathLines(taskdto.getStart_device_code(), taskdto.getNext_device_code(), route_plan_code); + if (CollectionUtil.isEmpty(shortPathsList)){ + return false; + } + RouteLineDto routeLineDto = shortPathsList.get(0); + String path = routeLineDto.getPath(); + String[] str = path.split("->"); + List pathlist = Arrays.asList(str); + Integer start = 1; + String start_device_code = pathlist.get(start); + String next_device_code = pathlist.get(start+1); + packageInstrcutData(instdto, taskdto, taskid, taskcode, vehiclecode, priority,start_device_code,next_device_code); + }else { + + + packageInstrcutData(instdto, taskdto, taskid, taskcode, vehiclecode, priority,taskdto.getStart_device_code(),taskdto.getNext_device_code()); + } try { instructionService.create(instdto); } catch (Exception e) { @@ -445,12 +406,11 @@ public class ConveyorWithScannerWeightDeviceDriver extends AbstractOpcDeviceDriv log.error("指令创建失败!", e.getMessage()); return false; } - Device nextdevice = deviceAppservice.findDeviceByCode(next_device_code); + Device nextdevice = deviceAppservice.findDeviceByCode(taskdto.getNext_device_code()); //创建指令后修改任务状态 taskdto.setTask_status("1"); taskserver.update(taskdto); - requireSucess = true; String next_addr = nextdevice.getExtraValue().get("address").toString(); List list = new ArrayList(); @@ -487,6 +447,28 @@ public class ConveyorWithScannerWeightDeviceDriver extends AbstractOpcDeviceDriv } } + private void packageInstrcutData(Instruction instdto, TaskDto taskdto, String taskid, String taskcode, String vehiclecode, String priority,String startCode, String endCode) { + instdto.setInstruction_id(IdUtil.simpleUUID()); + instdto.setRoute_plan_code(taskdto.getRoute_plan_code()); + instdto.setRemark(taskdto.getRemark()); + instdto.setMaterial(taskdto.getMaterial()); + instdto.setQuantity(taskdto.getQuantity()); + instdto.setTask_id(taskid); + instdto.setTask_code(taskcode); + instdto.setVehicle_code(vehiclecode); + String now = DateUtil.now(); + instdto.setCreate_time(now); + instdto.setCreate_by("auto"); + instdto.setStart_device_code(startCode); + instdto.setNext_device_code(endCode); + instdto.setStart_point_code(startCode); + instdto.setNext_point_code(endCode); + instdto.setPriority(priority); + instdto.setInstruction_status("0"); + instdto.setExecute_device_code(device_code); + instdto.setInstruction_type(taskdto.getTask_type()); + } + public void writing(List list) { @@ -513,7 +495,10 @@ public class ConveyorWithScannerWeightDeviceDriver extends AbstractOpcDeviceDriv } } - + public synchronized boolean finish_instruction() throws Exception { + instructionService.finish(inst); + return true; + } @Override public JSONObject getDeviceStatusName() { diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/scanner_weight_conveyor/ItemProtocol.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/scanner_weight_conveyor/ItemProtocol.java index 19567eef7..397f2d946 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/scanner_weight_conveyor/ItemProtocol.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/scanner_weight_conveyor/ItemProtocol.java @@ -1,5 +1,6 @@ package org.nl.acs.device_driver.one_conveyor.scanner_weight_conveyor; +import cn.hutool.core.util.StrUtil; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ItemDto; @@ -153,13 +154,13 @@ public class ItemProtocol { public String getOpcStringValue(String protocol) { String value = this.driver.getStringValue(protocol); - if (value == null) { + if (StrUtil.isBlank(value)) { //throw new BusinessException("{} : {}", new Object[]{protocol, DeviceErrorProtocol.getMessage(10000)}); } else { return value; } - return null; + return "0"; } public int getOpcIntegerValue(String protocol) { diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/un_box_lable_conveyor/UnBoxLableConveyorDefination.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/un_box_lable_conveyor/UnBoxLableConveyorDefination.java index d3400ee22..5e5a5b340 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/un_box_lable_conveyor/UnBoxLableConveyorDefination.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/un_box_lable_conveyor/UnBoxLableConveyorDefination.java @@ -45,7 +45,7 @@ public class UnBoxLableConveyorDefination implements OpcDeviceDriverDefination { @Override public List getFitDeviceTypes() { List types = new LinkedList(); - types.add(DeviceType.station); + types.add(DeviceType.conveyor); return types; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/box_package_manipulator/BoxPackageManipulatorDefination.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/box_package_manipulator/BoxPackageManipulatorDefination.java index 4e95e75e3..cf236ecc7 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/box_package_manipulator/BoxPackageManipulatorDefination.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/box_package_manipulator/BoxPackageManipulatorDefination.java @@ -41,7 +41,7 @@ public class BoxPackageManipulatorDefination implements OpcDeviceDriverDefinatio @Override public List getFitDeviceTypes() { List types = new LinkedList(); - types.add(DeviceType.station); + types.add(DeviceType.robot); return types; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/box_package_manipulator/BoxPackageManipulatorDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/box_package_manipulator/BoxPackageManipulatorDeviceDriver.java index 682a9fd1d..7511d9a9d 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/box_package_manipulator/BoxPackageManipulatorDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/box_package_manipulator/BoxPackageManipulatorDeviceDriver.java @@ -265,14 +265,17 @@ public class BoxPackageManipulatorDeviceDriver extends AbstractOpcDeviceDriver i } //放货完成 - if (mode == 3 && action == 4 && move == 0) { + if ( action == 4 && move == 0) { if (inst != null) { try { logServer.deviceExecuteLog(this.device_code,"","","放货完成"); finish_instruction(inst); - Map map = new LinkedHashMap<>(); - map.put("to_command", 5); - this.writing(map); + 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 = "放货失败"; @@ -305,82 +308,114 @@ public class BoxPackageManipulatorDeviceDriver extends AbstractOpcDeviceDriver i return false; } else { this.instruction_require_time = date; - //找符合条件的任务 - BoxSubvolumesConveyorDeviceDriver boxOutSubvolumesConveyorDeviceDriver = new BoxSubvolumesConveyorDeviceDriver(); - String deviceCode = boxOutSubvolumesConveyorDeviceDriver.getDevice_code(); - TaskDto taskDto = taskserver.findByEndCodeAndReady(deviceCode, TaskTypeEnum.Truss_Task.getIndex()); - if (ObjectUtil.isNotEmpty(taskDto)) { + //抓取工位 + 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 interactionJson = taskDto.getInteraction_json(); + InteractionJsonDTO interactionJsonDTO = JSON.parseObject(interactionJson, InteractionJsonDTO.class); + String start_device_code = taskDto.getStart_device_code(); + String next_device_code = taskDto.getNext_device_code(); + 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 route_plan_code = taskDto.getRoute_plan_code(); + String next_point_code = taskDto.getNext_point_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.setInstruction_status("0"); + instdto.setExecute_device_code(device_code); - String interactionJson = taskDto.getInteraction_json(); - InteractionJsonDTO interactionJsonDTO = JSON.parseObject(interactionJson, InteractionJsonDTO.class); - String start_device_code = taskDto.getStart_device_code(); - String next_device_code = taskDto.getNext_device_code(); - 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 route_plan_code = taskDto.getRoute_plan_code(); - String next_point_code = taskDto.getNext_point_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); - String now = DateUtil.now(); - instdto.setCreate_time(now); - 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.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() + ",交互参数:" + interactionJsonDTO.toString()); - - - Map map = new LinkedHashMap<>(); - map.put("to_command", 1); - map.put("to_target", next_addr); - map.put("to_onset", start_addr); - map.put("to_task", instdto.getInstruction_code()); - if (ObjectUtil.isNotEmpty(interactionJsonDTO.getItem_to_seq())) { - map.put("to_seq", interactionJsonDTO.getItem_to_seq()); - } - if (ObjectUtil.isNotEmpty(interactionJsonDTO.getItem_to_last_one())) { - map.put("to_last_one", interactionJsonDTO.getItem_to_last_one()); - } - if (ObjectUtil.isNotEmpty(interactionJsonDTO.getItem_to_direction())) { - map.put("to_direction", interactionJsonDTO.getItem_to_direction()); - } - if (ObjectUtil.isNotEmpty(interactionJsonDTO.getItem_to_max_no())) { - map.put("to_max_no", interactionJsonDTO.getItem_to_max_no()); - } - - - try { - this.writing(map); - } catch (Exception e) { + 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() + ",交互参数:" + interactionJsonDTO.toString() + ",指令执行失败:" + e.getMessage()); + + ",指令终点:" + instdto.getNext_device_code() + ",交互参数:" + interactionJsonDTO.toString()); + //创建指令后修改任务状态 + 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); + if (ObjectUtil.isNotEmpty(interactionJsonDTO.getSeq())) { + Map map5 = new HashMap<>(); + map5.put("code", "to_seq"); + map5.put("value", interactionJsonDTO.getSeq()); + list.add(map5); + } + if (ObjectUtil.isNotEmpty(interactionJsonDTO.getLastOne())) { + Map map6 = new HashMap<>(); + map6.put("code", "to_last_one"); + map6.put("value", interactionJsonDTO.getLastOne()); + list.add(map6); + } + if (ObjectUtil.isNotEmpty(interactionJsonDTO.getDirection())) { + Map map7 = new HashMap<>(); + map7.put("code", "to_direction"); + map7.put("value", interactionJsonDTO.getDirection()); + list.add(map7); + } + if (ObjectUtil.isNotEmpty(interactionJsonDTO.getMaxNo())) { + Map map8 = new HashMap<>(); + map8.put("code", "to_max_no"); + map8.put("value", interactionJsonDTO.getMaxNo()); + list.add(map8); + } + + try { + this.writing(list); + } catch (Exception e) { + logServer.deviceExecuteLog(device_code, "", "", "当前设备:" + device_code + ",下发指令:" + + instdto.getInstruction_code() + ",指令起点:" + instdto.getStart_device_code() + + ",指令终点:" + instdto.getNext_device_code() + ",交互参数:" + interactionJsonDTO.toString() + ",指令执行失败:" + e.getMessage()); + } + this.setRequireSucess(true); + return true; + }else{ + notCreateInstMessage = "未找到关联设备的任务,指令无法创建"; } - this.setRequireSucess(true); - return true; - } else { - notCreateInstMessage = "未找到关联设备的任务,指令无法创建"; } return true; } @@ -394,24 +429,33 @@ public class BoxPackageManipulatorDeviceDriver extends AbstractOpcDeviceDriver i /** * 下发 - * @param map + * */ - public void writing(Map map) { - DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); - Map itemMap = new LinkedHashMap<>(); - map.forEach((key, value) -> { - if (ObjectUtil.isNotEmpty(value)) { - itemMap.put(getToParam() + key, value); + + 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")); } - }); - if (ObjectUtil.isNotEmpty(itemMap)) { + } + logServer.deviceExecuteLog(device_code, "", "", "下发电气信号:" + itemMap); + try { + this.checkcontrol(itemMap); + } catch (Exception e) { + e.printStackTrace(); try { this.checkcontrol(itemMap); - } catch (Exception e) { - throw new RuntimeException(e); + } catch (Exception e1) { + e1.printStackTrace(); } - logServer.deviceExecuteLog(this.getDevice().getDevice_code(), "", "", "下发多个电气信号:" + itemMap); } + } /** diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/box_package_manipulator/InteractionJsonDTO.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/box_package_manipulator/InteractionJsonDTO.java index 4b130885d..63c199bea 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/box_package_manipulator/InteractionJsonDTO.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/box_package_manipulator/InteractionJsonDTO.java @@ -6,22 +6,22 @@ import lombok.Data; public class InteractionJsonDTO { /** - *木箱长度 + *木箱最大数量 */ - private String item_to_max_no = "to_max_no"; + private String maxNo; /** - *木箱宽度 + *子卷摆放方向 */ - private String item_to_direction = "to_direction"; + private String direction; /** - *木箱高度 + *下发木箱工位顺序 */ - private String item_to_seq = "to_seq"; + private String seq; /** - *下发木箱条码 + *是否最后子卷 */ - private String item_to_last_one = "to_last_one"; + private String lastOne; diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/box_package_manipulator/ItemProtocol.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/box_package_manipulator/ItemProtocol.java index 554b039a2..41cfd2387 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/box_package_manipulator/ItemProtocol.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/box_package_manipulator/ItemProtocol.java @@ -1,5 +1,6 @@ package org.nl.acs.device_driver.one_manipulator.box_package_manipulator; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import lombok.Data; import lombok.extern.slf4j.Slf4j; diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/box_storage_manipulator/BoxStorageManipulatorDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/box_storage_manipulator/BoxStorageManipulatorDeviceDriver.java index b07a8953d..0074079b9 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/box_storage_manipulator/BoxStorageManipulatorDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/box_storage_manipulator/BoxStorageManipulatorDeviceDriver.java @@ -23,6 +23,7 @@ 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.enums.InstructionStatusEnum; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.log.service.DeviceExecuteLogService; import org.nl.acs.monitor.DeviceStageMonitor; @@ -89,8 +90,8 @@ public class BoxStorageManipulatorDeviceDriver extends AbstractOpcDeviceDriver i int last_to_task = 0; int to_layer = 0; int last_to_layer = 0; - int to_barcode = 0; - int last_to_barcode = 0; + String to_barcode = null; + String last_to_barcode = null; Boolean isonline = true; int hasGoods = 0; @@ -154,7 +155,6 @@ public class BoxStorageManipulatorDeviceDriver extends AbstractOpcDeviceDriver i to_barcode = this.itemProtocol.getTo_barcode(); - // 更新指令状态 if (mode == 3 && task > 0) { updateInstructionStatus(); @@ -235,33 +235,36 @@ public class BoxStorageManipulatorDeviceDriver extends AbstractOpcDeviceDriver i Instruction inst = checkInst(); if (inst != null) { if (StrUtil.equals(inst.getInstruction_status(), "0")) { - inst.setInstruction_status(CommonFinalParam.ONE); + inst.setInstruction_status(InstructionStatusEnum.BUSY.getIndex()); inst.setExecute_device_code(this.device_code); instructionService.update(inst); } } //放货完成 - if (mode == 3 && action == 4 && move == 0) { + if (action == 4 && move == 0) { if (inst != null) { try { - logServer.deviceExecuteLog(this.device_code,"","","放货完成"); + logServer.deviceExecuteLog(this.device_code, "", "", "放货完成"); finish_instruction(inst); - Map map = new LinkedHashMap<>(); - map.put("to_command", 5); - this.writing(map); + 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 { + } else { feedMessage = "行架机械手:"; if (mode != 3) { feedMessage = feedMessage + "工作模式(mode)不为运行中状态,"; } - if (action != 8) { + if (action != 5) { feedMessage = feedMessage + "动作信号(action)不为放货完成状态,"; } if (move != 0) { @@ -285,113 +288,155 @@ public class BoxStorageManipulatorDeviceDriver extends AbstractOpcDeviceDriver i 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"); + } //找终点为入库输送线工位任务类型为行架的任务 - BoxSubvolumesConveyorDeviceDriver boxOutSubvolumesConveyorDeviceDriver = new BoxSubvolumesConveyorDeviceDriver(); - String deviceCode = boxOutSubvolumesConveyorDeviceDriver.getDevice_code(); - TaskDto taskDto = taskserver.findByEndCodeAndReady(deviceCode, TaskTypeEnum.Box_Storage.getIndex()); - if (ObjectUtil.isNotEmpty(taskDto)) { + 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 interactionJson = taskDto.getInteraction_json(); + InteractionJsonDTO interactionJsonDTO = JSON.parseObject(interactionJson, InteractionJsonDTO.class); + String start_device_code = taskDto.getStart_device_code(); + String next_device_code = taskDto.getNext_device_code(); + 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 route_plan_code = taskDto.getRoute_plan_code(); + String next_point_code = taskDto.getNext_point_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.setInstruction_status("0"); + instdto.setExecute_device_code(device_code); - String interactionJson = taskDto.getInteraction_json(); - InteractionJsonDTO interactionJsonDTO = JSON.parseObject(interactionJson, InteractionJsonDTO.class); - String start_device_code = taskDto.getStart_device_code(); - String next_device_code = taskDto.getNext_device_code(); - 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 route_plan_code = taskDto.getRoute_plan_code(); - String next_point_code = taskDto.getNext_point_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); - String now = DateUtil.now(); - instdto.setCreate_time(now); - 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.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() + ",交互参数:" + interactionJsonDTO.toString()); - - - Map map = new LinkedHashMap<>(); - map.put("to_command", 1); - map.put("to_target", next_addr); - map.put("to_onset", start_addr); - map.put("to_task", instdto.getInstruction_code()); - if (ObjectUtil.isNotEmpty(interactionJsonDTO.getItem_to_weight())) { - map.put("to_wedth", interactionJsonDTO.getItem_to_weight()); - } - if (ObjectUtil.isNotEmpty(interactionJsonDTO.getItem_to_length())) { - map.put("to_length", interactionJsonDTO.getItem_to_length()); - } - if (ObjectUtil.isNotEmpty(interactionJsonDTO.getItem_to_height())) { - map.put("to_height", interactionJsonDTO.getItem_to_height()); - } - if (ObjectUtil.isNotEmpty(interactionJsonDTO.getItem_to_barcode())) { - map.put("to_barcode", interactionJsonDTO.getItem_to_barcode()); - } - if (ObjectUtil.isNotEmpty(interactionJsonDTO.getItem_to_layer())) { - map.put("to_layer", interactionJsonDTO.getItem_to_layer()); - } - - - try { - this.writing(map); - } catch (Exception e) { + 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() + ",交互参数:" + interactionJsonDTO.toString() + ",指令执行失败:" + e.getMessage()); + + ",指令终点:" + instdto.getNext_device_code() + ",交互参数:" + interactionJsonDTO.toString()); + //创建指令后修改任务状态 + 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); + if (ObjectUtil.isNotEmpty(interactionJsonDTO.getWeight())) { + Map map5 = new HashMap<>(); + map5.put("code", "to_weight"); + map5.put("value", interactionJsonDTO.getWeight()); + list.add(map5); + } + if (ObjectUtil.isNotEmpty(interactionJsonDTO.getLength())) { + Map map6 = new HashMap<>(); + map6.put("code", "to_length"); + map6.put("value", interactionJsonDTO.getLength()); + list.add(map6); + } + if (ObjectUtil.isNotEmpty(interactionJsonDTO.getHeight())) { + Map map7 = new HashMap<>(); + map7.put("code", "to_height"); + map7.put("value", interactionJsonDTO.getHeight()); + list.add(map7); + } + if (ObjectUtil.isNotEmpty(interactionJsonDTO.getBarcode())) { + Map map8 = new HashMap<>(); + map8.put("code", "to_barcode"); + map8.put("value", interactionJsonDTO.getBarcode()); + list.add(map8); + } + if (ObjectUtil.isNotEmpty(interactionJsonDTO.getLayer())) { + Map map9 = new HashMap<>(); + map9.put("code", "to_layer"); + map9.put("value", interactionJsonDTO.getLayer()); + list.add(map9); + } + + try { + this.writing(list); + } catch (Exception e) { + logServer.deviceExecuteLog(device_code, "", "", "当前设备:" + device_code + ",下发指令:" + + instdto.getInstruction_code() + ",指令起点:" + instdto.getStart_device_code() + + ",指令终点:" + instdto.getNext_device_code() + ",交互参数:" + interactionJsonDTO.toString() + ",指令执行失败:" + e.getMessage()); + } + this.setRequireSucess(true); + return true; + }else{ + notCreateInstMessage = "未找到关联设备的任务,指令无法创建"; } - this.setRequireSucess(true); - return true; - } else { - notCreateInstMessage = "未找到关联设备的任务,指令无法创建"; } return true; } } - /** - * 下发 - * @param map - */ - public void writing(Map map) { - DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); - Map itemMap = new LinkedHashMap<>(); - map.forEach((key, value) -> { - if (ObjectUtil.isNotEmpty(value)) { - itemMap.put(getToParam() + key, value); + + + 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")); } - }); - if (ObjectUtil.isNotEmpty(itemMap)) { + } + logServer.deviceExecuteLog(device_code, "", "", "下发电气信号:" + itemMap); + try { + this.checkcontrol(itemMap); + } catch (Exception e) { + e.printStackTrace(); try { this.checkcontrol(itemMap); - } catch (Exception e) { - throw new RuntimeException(e); + } catch (Exception e1) { + e1.printStackTrace(); } - logServer.deviceExecuteLog(this.getDevice().getDevice_code(), "", "", "下发多个电气信号:" + itemMap); } + } + public synchronized boolean finish_instruction(Instruction inst) throws Exception { instructionService.finish(inst); return true; @@ -405,6 +450,7 @@ public class BoxStorageManipulatorDeviceDriver extends AbstractOpcDeviceDriver i 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(); diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/box_storage_manipulator/InteractionJsonDTO.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/box_storage_manipulator/InteractionJsonDTO.java index 2f193a52e..d791018fb 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/box_storage_manipulator/InteractionJsonDTO.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/box_storage_manipulator/InteractionJsonDTO.java @@ -8,24 +8,24 @@ public class InteractionJsonDTO { /** *木箱长度 */ - private String item_to_length = "to_length"; + private String length; /** *木箱宽度 */ - private String item_to_weight = "to_weight"; + private String weight; /** *木箱高度 */ - private String item_to_height = "to_height"; + private String height; /** *下发木箱条码 */ - private String item_to_barcode = "to_barcode"; + private String barcode; /** *下发木箱层数 */ - private String item_to_layer = "to_layer"; + private String layer; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/box_storage_manipulator/ItemProtocol.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/box_storage_manipulator/ItemProtocol.java index 45549bef7..796dee308 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/box_storage_manipulator/ItemProtocol.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/box_storage_manipulator/ItemProtocol.java @@ -1,5 +1,6 @@ package org.nl.acs.device_driver.one_manipulator.box_storage_manipulator; +import cn.hutool.core.util.StrUtil; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ItemDto; @@ -132,8 +133,8 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_to_layer); } - public int getTo_barcode() { - return this.getOpcIntegerValue(item_to_barcode); + public String getTo_barcode() { + return this.getOpcStringValue(item_to_barcode); } public int getTo_command() { @@ -160,6 +161,16 @@ public class ItemProtocol { return 0; } + public String getOpcStringValue(String protocol) { + String value = this.driver.getStringValue(protocol); + if (StrUtil.isBlank(value)) { +// log.error("读取错误!"); + } else { + return value; + } + return "0"; + } + public static List getReadableItemDtos() { ArrayList list = new ArrayList<>(); list.add(new ItemDto(item_heartbeat, "心跳", "DB1.B0")); @@ -181,6 +192,8 @@ public class ItemProtocol { list.add(new ItemDto(item_to_length, "木箱长度", "DB601.W14")); list.add(new ItemDto(item_to_weight, "木箱宽度", "DB601.W16")); list.add(new ItemDto(item_to_height, "木箱高度", "DB601.W18")); + list.add(new ItemDto(item_to_barcode, "下发木箱条码", "DB601.STRING1.50")); + list.add(new ItemDto(item_to_layer, "下发木箱层数", "DB601.W22")); return list; } } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/return_good_manipulator/InteractionJsonDTO.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/return_good_manipulator/InteractionJsonDTO.java new file mode 100644 index 000000000..d5a90e47a --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/return_good_manipulator/InteractionJsonDTO.java @@ -0,0 +1,31 @@ +package org.nl.acs.device_driver.one_manipulator.return_good_manipulator; + +import lombok.Data; + +@Data +public class InteractionJsonDTO { + + /** + *木箱长度 + */ + private String length; + /** + *木箱宽度 + */ + private String weight; + /** + *木箱高度 + */ + private String height; + + /** + *下发木箱条码 + */ + private String barcode; + + /** + *下发托盘类型 + */ + private String containerType; + +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/return_good_manipulator/ReturnGoodManipulatorDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/return_good_manipulator/ReturnGoodManipulatorDeviceDriver.java index 569993033..98604f505 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/return_good_manipulator/ReturnGoodManipulatorDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/return_good_manipulator/ReturnGoodManipulatorDeviceDriver.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; 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; @@ -23,6 +24,7 @@ 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.enums.InstructionStatusEnum; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.log.service.DeviceExecuteLogService; import org.nl.acs.monitor.DeviceStageMonitor; @@ -150,41 +152,6 @@ public class ReturnGoodManipulatorDeviceDriver extends AbstractOpcDeviceDriver i to_target = this.itemProtocol.getTo_target(); to_onset = this.itemProtocol.getTo_onset(); to_task = this.itemProtocol.getTo_task(); - if (mode != last_mode) { - requireSucess = false; - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode); - } - if (move != last_move) { - logServer.deviceItemValue(this.device_code, "move", String.valueOf(move)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + last_move + "->" + move); - } - if (action != last_action) { - logServer.deviceItemValue(this.device_code, "action", String.valueOf(action)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号action:" + last_action + "->" + action); - } - if (error != last_error) { - logServer.deviceItemValue(this.device_code, "error", String.valueOf(error)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error); - } - if (task != last_task) { - logServer.deviceItemValue(this.device_code, "task", String.valueOf(task)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号task:" + last_task + "->" + task); - } - if (to_command != last_to_command) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_command:" + last_to_command + "->" + to_command); - } - if (to_target != last_to_target) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_target:" + last_to_target + "->" + to_target); - } - if (to_onset != last_to_onset) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_onset:" + last_to_target + "->" + to_target); - } - if (to_task != last_to_task) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_task:" + last_to_task + "->" + to_task); - } - - // 更新指令状态 if (mode == 3 && task > 0) { updateInstructionStatus(); @@ -265,12 +232,49 @@ public class ReturnGoodManipulatorDeviceDriver extends AbstractOpcDeviceDriver i Instruction inst = checkInst(); if (inst != null) { if (StrUtil.equals(inst.getInstruction_status(), "0")) { - inst.setInstruction_status(CommonFinalParam.ONE); + inst.setInstruction_status(InstructionStatusEnum.BUSY.getIndex()); 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 != 5) { + feedMessage = feedMessage + "动作信号(action)不为放货完成状态,"; + } + if (move != 0) { + feedMessage = feedMessage + "光电信号(move)不为无货状态,"; + } + if (task == 0) { + feedMessage = feedMessage + "当前上报任务号(task)不应该为0。"; + } + } + } } + + } } @@ -281,93 +285,159 @@ public class ReturnGoodManipulatorDeviceDriver extends AbstractOpcDeviceDriver i return false; } else { this.instruction_require_time = date; - BoxStorageOutConveyorDeviceDriver boxStorageConveyorDeviceDriver = new BoxStorageOutConveyorDeviceDriver(); - String deviceCode = boxStorageConveyorDeviceDriver.getDevice_code(); - TaskDto taskDto = taskserver.findByEndCodeAndReady(deviceCode, TaskTypeEnum.Return_Good.getIndex()); - if (ObjectUtil.isNotEmpty(taskDto)) { - String start_device_code = taskDto.getStart_device_code(); - String next_device_code = taskDto.getNext_device_code(); - 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 route_plan_code = taskDto.getRoute_plan_code(); - String next_point_code = taskDto.getNext_point_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); - String now = DateUtil.now(); - instdto.setCreate_time(now); - 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.setInstruction_status("0"); - instdto.setExecute_device_code(device_code); + //抓取工位 + 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 interactionJson = taskDto.getInteraction_json(); + InteractionJsonDTO interactionJsonDTO = JSON.parseObject(interactionJson, InteractionJsonDTO.class); + String start_device_code = taskDto.getStart_device_code(); + String next_device_code = taskDto.getNext_device_code(); + 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 route_plan_code = taskDto.getRoute_plan_code(); + String next_point_code = taskDto.getNext_point_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.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() ); - - - Map map = new LinkedHashMap<>(); - map.put("to_command", 1); - map.put("to_target", next_addr); - map.put("to_onset", start_addr); - map.put("to_task", instdto.getInstruction_code()); - - - - try { - this.writing(map); - } catch (Exception e) { + 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() + ",指令执行失败:" + e.getMessage()); + + ",指令终点:" + instdto.getNext_device_code() + ",交互参数:" + interactionJsonDTO.toString()); + //创建指令后修改任务状态 + 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); + if (ObjectUtil.isNotEmpty(interactionJsonDTO.getWeight())) { + Map map5 = new HashMap<>(); + map5.put("code", "to_weight"); + map5.put("value", interactionJsonDTO.getWeight()); + list.add(map5); + } + if (ObjectUtil.isNotEmpty(interactionJsonDTO.getLength())) { + Map map6 = new HashMap<>(); + map6.put("code", "to_length"); + map6.put("value", interactionJsonDTO.getLength()); + list.add(map6); + } + if (ObjectUtil.isNotEmpty(interactionJsonDTO.getHeight())) { + Map map7 = new HashMap<>(); + map7.put("code", "to_height"); + map7.put("value", interactionJsonDTO.getHeight()); + list.add(map7); + } + if (ObjectUtil.isNotEmpty(interactionJsonDTO.getBarcode())) { + Map map8 = new HashMap<>(); + map8.put("code", "to_barcode"); + map8.put("value", interactionJsonDTO.getBarcode()); + list.add(map8); + } + if (ObjectUtil.isNotEmpty(interactionJsonDTO.getContainerType())) { + Map map9 = new HashMap<>(); + map9.put("code", "to_container_type"); + map9.put("value", interactionJsonDTO.getContainerType()); + list.add(map9); + } + + try { + this.writing(list); + } catch (Exception e) { + logServer.deviceExecuteLog(device_code, "", "", "当前设备:" + device_code + ",下发指令:" + + instdto.getInstruction_code() + ",指令起点:" + instdto.getStart_device_code() + + ",指令终点:" + instdto.getNext_device_code() + ",交互参数:" + interactionJsonDTO.toString() + ",指令执行失败:" + e.getMessage()); + } + this.setRequireSucess(true); + return true; + }else{ + notCreateInstMessage = "未找到关联设备的任务,指令无法创建"; } - this.setRequireSucess(true); - return true; - } else { - notCreateInstMessage = "未找到关联设备的任务,指令无法创建"; } return true; } - } /** * 下发 - * @param map + * @param list */ - public void writing(Map map) { - DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); - Map itemMap = new LinkedHashMap<>(); - map.forEach((key, value) -> { - if (ObjectUtil.isNotEmpty(value)) { - itemMap.put(getToParam() + key, value); + 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")); } - }); - if (ObjectUtil.isNotEmpty(itemMap)) { + } + logServer.deviceExecuteLog(device_code, "", "", "下发电气信号:" + itemMap); + try { + this.checkcontrol(itemMap); + } catch (Exception e) { + e.printStackTrace(); try { this.checkcontrol(itemMap); - } catch (Exception e) { - throw new RuntimeException(e); + } catch (Exception e1) { + e1.printStackTrace(); } - logServer.deviceExecuteLog(this.getDevice().getDevice_code(), "", "", "下发多个电气信号:" + itemMap); } + + } + + + public synchronized boolean finish_instruction(Instruction inst) throws Exception { + instructionService.finish(inst); + return true; } /** diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/trapped_manipulator/InteractionJsonDTO.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/trapped_manipulator/InteractionJsonDTO.java index d9feac1f8..a83144b2c 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/trapped_manipulator/InteractionJsonDTO.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/trapped_manipulator/InteractionJsonDTO.java @@ -8,20 +8,23 @@ public class InteractionJsonDTO { /** *木箱长度 */ - private String item_to_length = "to_length"; + private String length; /** *木箱宽度 */ - private String item_to_weight = "to_weight"; + private String weight; /** *木箱高度 */ - private String item_to_height = "to_height"; + private String height; /** *下发堆叠模板 */ - private String item_to_template = "to_template"; - + private String template; + /** + *是否是最后一个 + */ + private String isLastOne; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/trapped_manipulator/TrappedManipulatorDefination.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/trapped_manipulator/TrappedManipulatorDefination.java index b6365b2d1..9bfeb0868 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/trapped_manipulator/TrappedManipulatorDefination.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/trapped_manipulator/TrappedManipulatorDefination.java @@ -19,12 +19,12 @@ public class TrappedManipulatorDefination implements OpcDeviceDriverDefination { @Override public String getDriverName() { - return "捆扎智能行架"; + return "堆叠行架"; } @Override public String getDriverDescription() { - return "捆扎智能行架"; + return "堆叠行架"; } @Override diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/trapped_manipulator/TrappedManipulatorManipulatorDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/trapped_manipulator/TrappedManipulatorManipulatorDeviceDriver.java index ab27b0910..a5eeeffd9 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/trapped_manipulator/TrappedManipulatorManipulatorDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/trapped_manipulator/TrappedManipulatorManipulatorDeviceDriver.java @@ -35,10 +35,7 @@ import org.nl.acs.task.service.TaskService; import org.nl.acs.task.service.dto.TaskDto; import org.nl.config.SpringContextHolder; -import java.util.Date; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * 捆扎智能行架 @@ -153,40 +150,6 @@ public class TrappedManipulatorManipulatorDeviceDriver extends AbstractOpcDevice to_target = this.itemProtocol.getTo_target(); to_onset = this.itemProtocol.getTo_onset(); to_task = this.itemProtocol.getTo_task(); - if (mode != last_mode) { - requireSucess = false; - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode); - } - if (move != last_move) { - logServer.deviceItemValue(this.device_code, "move", String.valueOf(move)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + last_move + "->" + move); - } - if (action != last_action) { - logServer.deviceItemValue(this.device_code, "action", String.valueOf(action)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号action:" + last_action + "->" + action); - } - if (error != last_error) { - logServer.deviceItemValue(this.device_code, "error", String.valueOf(error)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error); - } - if (task != last_task) { - logServer.deviceItemValue(this.device_code, "task", String.valueOf(task)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号task:" + last_task + "->" + task); - } - if (to_command != last_to_command) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_command:" + last_to_command + "->" + to_command); - } - if (to_target != last_to_target) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_target:" + last_to_target + "->" + to_target); - } - if (to_onset != last_to_onset) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_onset:" + last_to_target + "->" + to_target); - } - if (to_task != last_to_task) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_task:" + last_to_task + "->" + to_task); - } - // 更新指令状态 if (mode == 3 && task > 0) { @@ -276,6 +239,41 @@ public class TrappedManipulatorManipulatorDeviceDriver extends AbstractOpcDevice } } } + + //放货完成 + 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。"; + } + } + } } } @@ -286,81 +284,119 @@ public class TrappedManipulatorManipulatorDeviceDriver extends AbstractOpcDevice 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 interactionJson = taskDto.getInteraction_json(); + InteractionJsonDTO interactionJsonDTO = JSON.parseObject(interactionJson, InteractionJsonDTO.class); + String start_device_code = taskDto.getStart_device_code(); + String next_device_code = taskDto.getNext_device_code(); + 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 route_plan_code = taskDto.getRoute_plan_code(); + String next_point_code = taskDto.getNext_point_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.setInstruction_status("0"); + instdto.setExecute_device_code(device_code); - BoxManipulatorSiteDeviceDriver boxManipulatorSiteDeviceDriver = new BoxManipulatorSiteDeviceDriver(); - String deviceCode = boxManipulatorSiteDeviceDriver.getDevice_code(); - TaskDto taskDto = taskserver.findByEndCodeAndReady(deviceCode, TaskTypeEnum.Truss_Task.getIndex()); - String interactionJson = taskDto.getInteraction_json(); - InteractionJsonDTO interactionJsonDTO = JSON.parseObject(interactionJson, InteractionJsonDTO.class); - if (ObjectUtil.isNotEmpty(taskDto)) { - String start_device_code = taskDto.getStart_device_code(); - String next_device_code = taskDto.getNext_device_code(); - 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 route_plan_code = taskDto.getRoute_plan_code(); - String next_point_code = taskDto.getNext_point_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); - String now = DateUtil.now(); - instdto.setCreate_time(now); - 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.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() ); - - - Map map = new LinkedHashMap<>(); - map.put("to_command", 1); - map.put("to_target", next_addr); - map.put("to_onset", start_addr); - map.put("to_task", instdto.getInstruction_code()); - if (ObjectUtil.isNotEmpty(interactionJsonDTO.getItem_to_weight())) { - map.put("to_wedth", interactionJsonDTO.getItem_to_weight()); - } - if (ObjectUtil.isNotEmpty(interactionJsonDTO.getItem_to_length())) { - map.put("to_length", interactionJsonDTO.getItem_to_length()); - } - if (ObjectUtil.isNotEmpty(interactionJsonDTO.getItem_to_height())) { - map.put("to_height", interactionJsonDTO.getItem_to_height()); - } - if (ObjectUtil.isNotEmpty(interactionJsonDTO.getItem_to_template())) { - map.put("to_template", interactionJsonDTO.getItem_to_template()); - } - - - try { - this.writing(map); - } catch (Exception e) { + 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() + ",指令执行失败:" + e.getMessage()); + + ",指令终点:" + instdto.getNext_device_code() + ",交互参数:" + interactionJsonDTO.toString()); + //创建指令后修改任务状态 + 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); + if (ObjectUtil.isNotEmpty(interactionJsonDTO.getWeight())) { + Map map5 = new HashMap<>(); + map5.put("code", "to_weight"); + map5.put("value", interactionJsonDTO.getWeight()); + list.add(map5); + } + if (ObjectUtil.isNotEmpty(interactionJsonDTO.getLength())) { + Map map6 = new HashMap<>(); + map6.put("code", "to_length"); + map6.put("value", interactionJsonDTO.getLength()); + list.add(map6); + } + if (ObjectUtil.isNotEmpty(interactionJsonDTO.getHeight())) { + Map map7 = new HashMap<>(); + map7.put("code", "to_height"); + map7.put("value", interactionJsonDTO.getHeight()); + list.add(map7); + } + if (ObjectUtil.isNotEmpty(interactionJsonDTO.getTemplate())) { + Map map8 = new HashMap<>(); + map8.put("code", "to_template"); + map8.put("value", interactionJsonDTO.getTemplate()); + list.add(map8); + } + if (ObjectUtil.isNotEmpty(interactionJsonDTO.getTemplate())) { + Map map9 = new HashMap<>(); + map9.put("code", "to_last_one"); + map9.put("value", interactionJsonDTO.getIsLastOne()); + list.add(map9); + } + try { + this.writing(list); + } catch (Exception e) { + logServer.deviceExecuteLog(device_code, "", "", "当前设备:" + device_code + ",下发指令:" + + instdto.getInstruction_code() + ",指令起点:" + instdto.getStart_device_code() + + ",指令终点:" + instdto.getNext_device_code() + ",交互参数:" + interactionJsonDTO.toString() + ",指令执行失败:" + e.getMessage()); + } + this.setRequireSucess(true); + return true; + }else{ + notCreateInstMessage = "未找到关联设备的任务,指令无法创建"; } - this.setRequireSucess(true); - return true; - } else { - notCreateInstMessage = "未找到关联设备的任务,指令无法创建"; } return true; } @@ -368,25 +404,44 @@ public class TrappedManipulatorManipulatorDeviceDriver extends AbstractOpcDevice } /** - * 下发 - * @param map + * 完成指令 + * @param inst + * @return + * @throws Exception */ - public void writing(Map map) { - DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); - Map itemMap = new LinkedHashMap<>(); - map.forEach((key, value) -> { - if (ObjectUtil.isNotEmpty(value)) { - itemMap.put(getToParam() + key, value); + 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")); } - }); - if (ObjectUtil.isNotEmpty(itemMap)) { + } + logServer.deviceExecuteLog(device_code, "", "", "下发电气信号:" + itemMap); + try { + this.checkcontrol(itemMap); + } catch (Exception e) { + e.printStackTrace(); try { this.checkcontrol(itemMap); - } catch (Exception e) { - throw new RuntimeException(e); + } catch (Exception e1) { + e1.printStackTrace(); } - logServer.deviceExecuteLog(this.getDevice().getDevice_code(), "", "", "下发多个电气信号:" + itemMap); } + } /** diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/rgv/RgvDefination.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/rgv/RgvDefination.java index c11d03914..80da861c4 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/rgv/RgvDefination.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/rgv/RgvDefination.java @@ -40,7 +40,7 @@ public class RgvDefination implements OpcDeviceDriverDefination { @Override public List getFitDeviceTypes() { List types = new LinkedList(); - types.add(DeviceType.conveyor); + types.add(DeviceType.rgv); return types; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/stacker/standard_stacker/StandardStackerDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/stacker/standard_stacker/StandardStackerDeviceDriver.java index 0f8581b1b..68dc6e048 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/stacker/standard_stacker/StandardStackerDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/stacker/standard_stacker/StandardStackerDeviceDriver.java @@ -292,161 +292,7 @@ public class StandardStackerDeviceDriver extends AbstractOpcDeviceDriver impleme special2 = this.itemProtocol.getItem_special2(); trayCode = this.itemProtocol.getItem_trayCode(); storage_cache = this.itemProtocol.getItem_storage_cache(); - /*stacker_rpm = this.itemProtocol.getstacker_rpm(); - stacker_electricCurrent = this.itemProtocol.getstacker_electricCurrent(); - stacker_runing_time = this.itemProtocol.getstacker_runing_time(); - stacker_workingHours = this.itemProtocol.getstacker_workingHours(); - cargo_rpm = this.itemProtocol.getcargo_rpm(); - cargo_electric_Current = this.itemProtocol.getcargo_electric_Current(); - cargo_workingHour = this.itemProtocol.getcargo_workingHours(); - cargo_runingTimes = this.itemProtocol.getcargo_runingTimes(); - fork_rpm = this.itemProtocol.getfork_rpm(); - fork_electric_Current = this.itemProtocol.getfork_electric_Current(); - fork_workingHours = this.itemProtocol.getfork_workingHours(); - fork_runingTimes = this.itemProtocol.getfork_runingTimes();*/ - if (!item_deviceCode.equals(last_item_deviceCode)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(item_deviceCode)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_item_deviceCode + "->" + item_deviceCode); - } - if (!mode.equals(last_mode)) { - requireSucess = false; - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode); - } - if (!command.equals(last_command)) { - requireSucess = false; - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(command)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号command:" + last_command + "->" + command); - } - if (!task.equals(last_task)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号task:" + last_task + "->" + task); - } - if (!error.equals(last_error)) { - if (0 != error) { - DeviceErrorLogDto acsDeviceErrorLog = new DeviceErrorLogDto(); - acsDeviceErrorLog.setDevice_code(this.device_code); - acsDeviceErrorLog.setError_code(String.valueOf(error)); - String errorInfo = ErrorUtil.getDictDetail(ErrorType.STACKER_ERROR.getErrorType(), String.valueOf(error)); - acsDeviceErrorLog.setError_info(errorInfo); - errorLogServer.create(acsDeviceErrorLog); - } - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(error)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error); - } - if (!z.equals(last_z)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(z)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号z:" + last_z + "->" + z); - } - if (!x.equals(last_x)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(x)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号z:" + last_x + "->" + x); - } - if (!y.equals(last_y)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(y)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号y:" + last_y + "->" + y); - } - if (!move.equals(last_move)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(move)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + last_move + "->" + move); - } - if (!cargoMove.equals(last_cargoMove)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(cargoMove)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号cargoMove:" + last_cargoMove + "->" + cargoMove); - } - if (!action.equals(last_action)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(action)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号action:" + last_action + "->" + action); - } - if (!distancex.equals(last_distancex)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(distancex)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号distancex:" + last_distancex + "->" + distancex); - } - if (!distancey.equals(last_distancey)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(distancey)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号distancey:" + last_distancey + "->" + distancey); - } - if (!cargoError.equals(last_cargoError)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(cargoError)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号cargoError:" + last_cargoError + "->" + cargoError); - } - if (!forkCargo.equals(last_forkCargo)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(forkCargo)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号forkCargo:" + last_forkCargo + "->" + forkCargo); - } - if (!forkLocation.equals(last_forkLocation)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(forkLocation)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号forkLocation:" + last_forkLocation + "->" + forkLocation); - } - if (!forkAction.equals(last_forkAction)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(forkAction)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号forkAction:" + last_forkAction + "->" + forkAction); - } - if (!special1.equals(last_special1)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(special1)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号special1:" + last_special1 + "->" + special1); - } - if (!special2.equals(last_special2)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(special2)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号special2:" + last_special2 + "->" + special2); - } - if (!Arrays.equals(trayCode, last_trayCode)) { - logServer.deviceItemValue(this.device_code, "mode", Arrays.toString(trayCode)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号trayCode:" + Arrays.toString(last_trayCode) + "->" + Arrays.toString(trayCode)); - } - if (!storage_cache.equals(last_storage_cache)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(storage_cache)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号storage_cache:" + last_storage_cache + "->" + storage_cache); - } - /*if (!stacker_rpm.equals(last_stacker_rpm)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(stacker_rpm)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_stacker_rpm + "->" + stacker_rpm); - } - if (!stacker_electricCurrent.equals(last_stacker_electricCurrent)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(stacker_electricCurrent)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_stacker_electricCurrent + "->" + stacker_electricCurrent); - } - if (!stacker_runing_time.equals(last_stacker_runing_time)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(stacker_runing_time)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_stacker_runing_time + "->" + stacker_runing_time); - } - if (!stacker_workingHours.equals(last_stacker_workingHours)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(stacker_workingHours)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_stacker_workingHours + "->" + stacker_workingHours); - } - if (!cargo_rpm.equals(last_cargo_rpm)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(stacker_workingHours)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_cargo_rpm + "->" + cargo_rpm); - } - if (!cargo_electric_Current.equals(last_cargo_electric_Current)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(cargo_electric_Current)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_cargo_electric_Current + "->" + cargo_electric_Current); - } - if (!cargo_workingHour.equals(last_cargo_workingHour)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(cargo_workingHour)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_cargo_workingHour + "->" + cargo_workingHour); - } - if (!cargo_runingTimes.equals(last_cargo_runingTimes)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(cargo_runingTimes)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_cargo_runingTimes + "->" + cargo_runingTimes); - } - if (!fork_rpm.equals(last_fork_rpm)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(fork_rpm)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_fork_rpm + "->" + fork_rpm); - } - if (!fork_electric_Current.equals(last_fork_electric_Current)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(fork_electric_Current)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_fork_electric_Current + "->" + fork_electric_Current); - } - if (!fork_workingHours.equals(last_fork_workingHours)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(fork_workingHours)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_fork_workingHours + "->" + fork_workingHours); - } - if (!fork_runingTimes.equals(last_fork_runingTimes)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(fork_runingTimes)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_fork_runingTimes + "->" + fork_runingTimes); - }*/ // 更新指令状态 if (mode == 3 && task > 0) { diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/blank_manipulator/BlankManipulatorDefination.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/blank_manipulator/BlankManipulatorDefination.java index d9e8e193a..1b8123a8e 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/blank_manipulator/BlankManipulatorDefination.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/blank_manipulator/BlankManipulatorDefination.java @@ -41,7 +41,7 @@ public class BlankManipulatorDefination implements OpcDeviceDriverDefination { @Override public List getFitDeviceTypes() { List types = new LinkedList(); - types.add(DeviceType.station); + types.add(DeviceType.robot); return types; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/blank_manipulator/BlankManipulatorDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/blank_manipulator/BlankManipulatorDeviceDriver.java index 5e43e0b13..abfb2f655 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/blank_manipulator/BlankManipulatorDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/blank_manipulator/BlankManipulatorDeviceDriver.java @@ -4,6 +4,9 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpResponse; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.Data; import lombok.RequiredArgsConstructor; @@ -17,6 +20,9 @@ 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.ext.wms.data.ApplyManipulatorActionRequest; +import org.nl.acs.ext.wms.data.ApplyManipulatorActionResponse; +import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.history.ErrorUtil; import org.nl.acs.history.service.DeviceErrorLogService; import org.nl.acs.history.service.impl.DeviceErrorLogServiceImpl; @@ -61,7 +67,8 @@ public class BlankManipulatorDeviceDriver extends AbstractOpcDeviceDriver implem DeviceExtraService deviceExtraService = SpringContextHolder.getBean(DeviceExtraServiceImpl.class); @Autowired DeviceErrorLogService errorLogServer = SpringContextHolder.getBean(DeviceErrorLogServiceImpl.class); - + @Autowired + AcsToWmsService acsToWmsService = SpringContextHolder.getBean("acsToWmsServiceImpl"); //工作模式 int mode = 0; int last_mode = 0; @@ -233,12 +240,31 @@ public class BlankManipulatorDeviceDriver extends AbstractOpcDeviceDriver implem if (mode == 3 && action == 5 && move == 1 && task > 0) { Instruction inst2 = instructionService.findByCodeFromCache(String.valueOf(task)); if (ObjectUtil.isNotEmpty(inst2)) { - Map map = new LinkedHashMap<>(); - //todo:反馈重量、条码 - map.put("to_command", "5"); - this.writing(map); + String task_code = inst2.getTask_code(); + TaskDto dto = taskserver.findByCode(task_code); + JSONObject jo = new JSONObject(); + jo.put("task_id", dto.getTask_id()); + jo.put("task_code", dto.getTask_code()); + jo.put("task_status", dto.getTask_status()); + jo.put("productin_qty", String.valueOf(this.weight)); + jo.put("scroll_code", String.valueOf(this.barcode)); + JSONArray ja = new JSONArray(); + ja.add(jo); + HttpResponse body = acsToWmsService.feedbackTaskStatusToWms(ja); + if (body.getStatus() == 200) { + message = "反馈重量以及收卷轴LMS成功..."; + requireSucess = true; + logServer.deviceExecuteLog(this.device_code, "", "", "反馈尺寸成请求成功,响应参数:" + JSON.toJSONString(body)); + Map map = new LinkedHashMap<>(); + map.put("to_command", "5"); + this.writing(map); + } else { + message = "反馈重量以及收卷轴LMS失败..."; + requireSucess = false; + message = "反馈LMS尺寸失败"; + } } else { - logServer.deviceExecuteLog(this.device_code, "", "", "未反馈电气信号原因:当前步骤不为允许取货(now_steps_type!=3)"); + logServer.deviceExecuteLog(this.device_code, "", "", "当前指令号为空"); } } else { feedMessage = "行架机械手:"; @@ -262,6 +288,8 @@ public class BlankManipulatorDeviceDriver extends AbstractOpcDeviceDriver implem if (inst2 != null) { if (StrUtil.equals(inst2.getInstruction_status(), InstructionStatusEnum.BUSY.getIndex())) { try { + requireSucess = true; + message = "任务完成..."; finish_instruction(inst2); Map map = new LinkedHashMap<>(); map.put("to_command", "6"); diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/blanking_button/BlankingButtonDefination.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/blanking_button/BlankingButtonDefination.java index 71c613085..89fdf4219 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/blanking_button/BlankingButtonDefination.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/blanking_button/BlankingButtonDefination.java @@ -17,12 +17,12 @@ import java.util.List; public class BlankingButtonDefination implements OpcDeviceDriverDefination { @Override public String getDriverCode() { - return "green_foil_machine_button"; + return "blanking_button"; } @Override public String getDriverName() { - return "下料按钮"; + return "表处下料按钮"; } @Override @@ -43,7 +43,7 @@ public class BlankingButtonDefination implements OpcDeviceDriverDefination { @Override public List getFitDeviceTypes() { List types = new LinkedList(); - types.add(DeviceType.conveyor); + types.add(DeviceType.button); return types; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/blanking_button/ItemProtocol.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/blanking_button/ItemProtocol.java index 2bb83e2e6..5b8840b4b 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/blanking_button/ItemProtocol.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/blanking_button/ItemProtocol.java @@ -71,17 +71,17 @@ public class ItemProtocol { public static List getReadableItemDtos() { ArrayList list = new ArrayList(); - list.add(new ItemDto(item_heartbeat, "心跳", "251")); - list.add(new ItemDto(item_mode, "工作模式", "7990")); - list.add(new ItemDto(item_move, "光电信号", "550")); - list.add(new ItemDto(item_action, "取放信号", "450")); - list.add(new ItemDto(item_error, "故障", "8055")); + list.add(new ItemDto(item_heartbeat, "心跳", "DB3.B0")); + list.add(new ItemDto(item_mode, "工作模式", "DB3.B1")); + list.add(new ItemDto(item_move, "光电信号", "DB3.B2")); + list.add(new ItemDto(item_action, "取放信号", "DB3.B3")); + list.add(new ItemDto(item_error, "故障", "DB3.B4")); return list; } public static List getWriteableItemDtos() { ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command, "下发命令", "40226")); + list.add(new ItemDto(item_to_command, "下发命令", "DB4.W0")); return list; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/green_foil_machine_button/GreenFoilMachineButtonDefination.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/green_foil_machine_button/GreenFoilMachineButtonDefination.java index 6503a8da0..fc02f5c8c 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/green_foil_machine_button/GreenFoilMachineButtonDefination.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/green_foil_machine_button/GreenFoilMachineButtonDefination.java @@ -22,12 +22,12 @@ public class GreenFoilMachineButtonDefination implements OpcDeviceDriverDefinati @Override public String getDriverName() { - return "生箔机按钮协议"; + return "生箔机按钮"; } @Override public String getDriverDescription() { - return "生箔机按钮协议"; + return "生箔机按钮"; } @Override @@ -43,7 +43,7 @@ public class GreenFoilMachineButtonDefination implements OpcDeviceDriverDefinati @Override public List getFitDeviceTypes() { List types = new LinkedList(); - types.add(DeviceType.conveyor); + types.add(DeviceType.button); return types; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/green_foil_machine_button/GreenFoilMachineButtonDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/green_foil_machine_button/GreenFoilMachineButtonDriver.java index fed8362f9..946995173 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/green_foil_machine_button/GreenFoilMachineButtonDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/green_foil_machine_button/GreenFoilMachineButtonDriver.java @@ -161,7 +161,7 @@ public class GreenFoilMachineButtonDriver extends AbstractOpcDeviceDriver implem break; case 4: // 申请AGV取空取满放空放满任务 - if (move > 0 && !requireSucess) { + if (!requireSucess) { applyAgvTask(mode); } break; @@ -169,31 +169,19 @@ public class GreenFoilMachineButtonDriver extends AbstractOpcDeviceDriver implem /** * 申请AGV取空放空的任务 */ - if (move > 0 && !requireSucess) { + if (!requireSucess) { applyAgvTask(mode); } break; case 6: // 申请取满放满任务 - if (move > 0 && !requireSucess) { - applyAgvTask(mode); - } - break; - case 7: - // 允许AGV进入 - if (move == 0 && !requireSucess) { - applyAgvTask(mode); - } - break; - case 8: - // 允许AGV离开 - if (move == 0 && !requireSucess) { + if (!requireSucess) { applyAgvTask(mode); } break; case 9: // 取消任务 - if (move == 0 && !requireSucess) { + if (!requireSucess) { applyAgvTask(mode); } break; diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/green_foil_machine_button/ItemProtocol.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/green_foil_machine_button/ItemProtocol.java index 4dfd566b4..ffb4cde15 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/green_foil_machine_button/ItemProtocol.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/green_foil_machine_button/ItemProtocol.java @@ -71,17 +71,17 @@ public class ItemProtocol { public static List getReadableItemDtos() { ArrayList list = new ArrayList(); - list.add(new ItemDto(item_heartbeat, "心跳", "251")); - list.add(new ItemDto(item_mode, "工作模式", "7990")); - list.add(new ItemDto(item_move, "光电信号", "550")); - list.add(new ItemDto(item_action, "取放信号", "450")); - list.add(new ItemDto(item_error, "故障", "8055")); + list.add(new ItemDto(item_heartbeat, "心跳", "DB5.B0")); + list.add(new ItemDto(item_mode, "工作模式", "DB5.B1")); + list.add(new ItemDto(item_move, "光电信号", "DB5.B2")); + list.add(new ItemDto(item_action, "取放信号", "DB5.B3")); + list.add(new ItemDto(item_error, "故障", "DB5.B4")); return list; } public static List getWriteableItemDtos() { ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command, "下发命令", "40226")); + list.add(new ItemDto(item_to_command, "下发命令", "DB6.W0")); return list; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/hongxiang_conveyor/HongXiangStationDefination.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/hongxiang_conveyor/HongXiangStationDefination.java index 96587d5cc..e1328e807 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/hongxiang_conveyor/HongXiangStationDefination.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/hongxiang_conveyor/HongXiangStationDefination.java @@ -43,7 +43,7 @@ public class HongXiangStationDefination implements OpcDeviceDriverDefination { @Override public List getFitDeviceTypes() { List types = new LinkedList(); - types.add(DeviceType.conveyor); + types.add(DeviceType.station); return types; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/hongxiang_device/HongXiangConveyorDefination.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/hongxiang_device/HongXiangConveyorDefination.java index 0615adcd8..eece99cad 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/hongxiang_device/HongXiangConveyorDefination.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/hongxiang_device/HongXiangConveyorDefination.java @@ -43,7 +43,7 @@ public class HongXiangConveyorDefination implements OpcDeviceDriverDefination { @Override public List getFitDeviceTypes() { List types = new LinkedList(); - types.add(DeviceType.conveyor); + types.add(DeviceType.station); return types; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/hongxiang_device/ItemProtocol.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/hongxiang_device/ItemProtocol.java index 5db6a4c44..ab12aae7a 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/hongxiang_device/ItemProtocol.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/hongxiang_device/ItemProtocol.java @@ -150,40 +150,40 @@ public class ItemProtocol { public static List getReadableItemDtos() { ArrayList list = new ArrayList(); - list.add(new ItemDto(item_heartbeat, "心跳", "251")); - list.add(new ItemDto(item_mode, "工作模式", "7990")); - list.add(new ItemDto(item_move, "光电信号", "550")); - list.add(new ItemDto(item_door, "门状态", "450")); - list.add(new ItemDto(item_temperature, "工位温度", "7991")); - list.add(new ItemDto(item_countdown_house, "恒温倒计时(时)", "80500")); - list.add(new ItemDto(item_countdown_min, "恒温倒计时(分)", "80502")); - list.add(new ItemDto(item_countdown_sec, "恒温倒计时(秒)", "80504")); - list.add(new ItemDto(item_finish, "烘干完成", "8025")); - list.add(new ItemDto(item_action, "取放信号", "450")); - list.add(new ItemDto(item_task, "任务号", "220")); - list.add(new ItemDto(item_error, "故障", "8055")); - list.add(new ItemDto(item_error1, "故障1", "216")); - list.add(new ItemDto(item_material, "物料", "223")); - list.add(new ItemDto(item_consumption, "电能耗", "8092")); - list.add(new ItemDto(item_voltageA, "A相电压", "8080")); - list.add(new ItemDto(item_voltageB, "B相电压", "8082")); - list.add(new ItemDto(item_voltageC, "C相电压", "8084")); - list.add(new ItemDto(item_currentA, "A相电流", "8086")); - list.add(new ItemDto(item_currentB, "B相电流", "8088")); - list.add(new ItemDto(item_currentC, "C相电流", "8090")); + list.add(new ItemDto(item_heartbeat, "心跳", "DB118.B251")); + list.add(new ItemDto(item_mode, "工作模式", "DB118.B7990")); + list.add(new ItemDto(item_move, "光电信号", "DB118.B550")); + list.add(new ItemDto(item_door, "门状态", "DB118.B450")); + list.add(new ItemDto(item_temperature, "工位温度", "DB118.B7991")); + list.add(new ItemDto(item_countdown_house, "恒温倒计时(时)", "DB118.B80500")); + list.add(new ItemDto(item_countdown_min, "恒温倒计时(分)", "DB118.B80502")); + list.add(new ItemDto(item_countdown_sec, "恒温倒计时(秒)", "DB118.B80504")); + list.add(new ItemDto(item_finish, "烘干完成", "DB118.B8025")); + list.add(new ItemDto(item_action, "取放信号", "DB118.B450")); + list.add(new ItemDto(item_task, "任务号", "DB118.B220")); + list.add(new ItemDto(item_error, "故障", "DB118.B8055")); + list.add(new ItemDto(item_error1, "故障1", "DB118.B216")); + list.add(new ItemDto(item_material, "物料", "DB118.B223")); + list.add(new ItemDto(item_consumption, "电能耗", "DB118.B8092")); + list.add(new ItemDto(item_voltageA, "A相电压", "DB118.B8080")); + list.add(new ItemDto(item_voltageB, "B相电压", "DB118.B8082")); + list.add(new ItemDto(item_voltageC, "C相电压", "DB118.B8084")); + list.add(new ItemDto(item_currentA, "A相电流", "DB118.B8086")); + list.add(new ItemDto(item_currentB, "B相电流", "DB118.B8088")); + list.add(new ItemDto(item_currentC, "C相电流", "DB118.B8090")); return list; } public static List getWriteableItemDtos() { ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command, "下发命令", "40226")); - list.add(new ItemDto(item_to_open_door, "开门", "00111")); - list.add(new ItemDto(item_to_close_door, "关门", "00112")); - list.add(new ItemDto(item_to_temperature, "生产温度", "48100")); - list.add(new ItemDto(item_to_material, "生产物料", "40229")); - list.add(new ItemDto(item_to_time_house, "生产时间(时)", "48771")); - list.add(new ItemDto(item_to_time_min, "生产时间(分)", "48770")); - list.add(new ItemDto(item_to_task, "任务号", "40232")); + list.add(new ItemDto(item_to_command, "下发命令", "DB118.B40226")); + list.add(new ItemDto(item_to_open_door, "开门", "DB118.B00111")); + list.add(new ItemDto(item_to_close_door, "关门", "DB118.B00112")); + list.add(new ItemDto(item_to_temperature, "生产温度", "DB118.B48100")); + list.add(new ItemDto(item_to_material, "生产物料", "DB118.B40229")); + list.add(new ItemDto(item_to_time_house, "生产时间(时)", "DB118.B48771")); + list.add(new ItemDto(item_to_time_min, "生产时间(分)", "DB118.B48770")); + list.add(new ItemDto(item_to_task, "任务号", "DB118.B40232")); return list; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/inflatable_shaft_library/ItemProtocol.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/inflatable_shaft_library/ItemProtocol.java index 30d6e1975..216ec59ab 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/inflatable_shaft_library/ItemProtocol.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/inflatable_shaft_library/ItemProtocol.java @@ -78,19 +78,19 @@ public class ItemProtocol { 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_qty, "数量", "DB1.B4")); - list.add(new ItemDto(item_error, "报警信号", "DB1.B5")); - list.add(new ItemDto(item_type, "类型", "DB1.B6")); + list.add(new ItemDto(item_heartbeat, "心跳", "DB7.B0")); + list.add(new ItemDto(item_mode, "工作模式", "DB7.B1")); + list.add(new ItemDto(item_move, "光电信号", "DB7.B2")); + list.add(new ItemDto(item_action, "动作信号", "DB7.B3")); + list.add(new ItemDto(item_qty, "数量", "DB7.B4")); + list.add(new ItemDto(item_error, "报警信号", "DB7.B5")); + list.add(new ItemDto(item_type, "类型", "DB7.B6")); 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_command, "下发命令", "DB8.W0")); return list; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/oven_manipulator/ItemProtocol.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/oven_manipulator/ItemProtocol.java index 9c623ff07..0866f40b6 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/oven_manipulator/ItemProtocol.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/oven_manipulator/ItemProtocol.java @@ -115,7 +115,8 @@ public class ItemProtocol { public String getOpcStringValue(String protocol) { String value = this.driver.getStringValue(protocol); - if (StrUtil.isEmpty(value)) { + if (StrUtil.isBlank(value)) { + //throw new BusinessException("{} : {}", new Object[]{protocol, DeviceErrorProtocol.getMessage(10000)}); } else { return value; @@ -128,9 +129,6 @@ public class ItemProtocol { if (value == null) { // log.error(this.getDriver().getDeviceCode() + ":protocol " + protocol + " 信号同步异常!"); setIsonline(false); - } else { - setIsonline(true); - return value; } return 0; diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/oven_manipulator/OvenGantryManipulatorDefination.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/oven_manipulator/OvenGantryManipulatorDefination.java index 51c5d15ee..241c7b961 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/oven_manipulator/OvenGantryManipulatorDefination.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/oven_manipulator/OvenGantryManipulatorDefination.java @@ -45,7 +45,7 @@ public class OvenGantryManipulatorDefination implements OpcDeviceDriverDefinatio @Override public List getFitDeviceTypes() { List types = new LinkedList(); - types.add(DeviceType.station); + types.add(DeviceType.robot); return types; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/oven_manipulator/OvenGantryManipulatorDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/oven_manipulator/OvenGantryManipulatorDeviceDriver.java index 954d26cbe..d025e19d4 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/oven_manipulator/OvenGantryManipulatorDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/oven_manipulator/OvenGantryManipulatorDeviceDriver.java @@ -1,10 +1,12 @@ package org.nl.acs.device_driver.two_conveyor.oven_manipulator; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.Data; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -13,6 +15,7 @@ import org.nl.acs.device.service.DeviceService; 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.conveyor.oven_inspection_site.OvenInspectSiteDeviceDriver; import org.nl.acs.device_driver.conveyor.standard_inspect_site.StandardInspectSiteDeviceDriver; import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; @@ -23,7 +26,10 @@ 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.domain.InstructionMybatis; import org.nl.acs.instruction.service.InstructionService; +import org.nl.acs.limit_regional.server.LimitRegionalService; +import org.nl.acs.limit_regional.server.dto.LimitRegionalDto; import org.nl.acs.log.service.DeviceExecuteLogService; import org.nl.acs.monitor.DeviceStageMonitor; import org.nl.acs.opc.DeviceAppService; @@ -61,6 +67,8 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i DeviceAppService deviceAppService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); @Autowired DeviceErrorLogService deviceErrorLogService = SpringContextHolder.getBean(DeviceErrorLogServiceImpl.class); + @Autowired + private LimitRegionalService limitRegionalService=SpringContextHolder.getBean(LimitRegionalService.class); //工作模式 int mode = 0; @@ -136,6 +144,7 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i List getDeviceCodeList = null; + List putDeviceCodeList = null; @@ -156,8 +165,8 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i error = this.itemProtocol.getError(); task = this.itemProtocol.getTask(); heartbeat = this.itemProtocol.getHeartbeat(); - to_command = this.itemProtocol.getTo_command(); to_target = this.itemProtocol.getTo_target(); + to_command = this.itemProtocol.getTo_command(); to_task = this.itemProtocol.getTo_task(); to_onset = this.itemProtocol.getTo_onset(); x_position = this.itemProtocol.getX_position(); @@ -339,9 +348,10 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i String next_device_code = instruction.getNext_device_code(); Device nextdevice = deviceAppService.findDeviceByCode(next_device_code); Device startdevice = deviceAppService.findDeviceByCode(start_device_code); -// PhotoelectricInspectionSiteDeviceDriver photoelectricInspectionSiteDeviceDriver; + //PhotoelectricInspectionSiteDeviceDriver photoelectricInspectionSiteDeviceDriver; HongXiangConveyorDeviceDriver hongXiangConveyorDeviceDriver; StandardInspectSiteDeviceDriver standardInspectSiteDeviceDriver; + OvenInspectSiteDeviceDriver ovenInspectSiteDeviceDriver; // if (startdevice.getDeviceDriver() instanceof PhotoelectricInspectionSiteDeviceDriver) { // photoelectricInspectionSiteDeviceDriver = (PhotoelectricInspectionSiteDeviceDriver) startdevice.getDeviceDriver(); // if (photoelectricInspectionSiteDeviceDriver.getMove() != 1) { @@ -349,6 +359,36 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i // return false; // } // } + if(startdevice.getDeviceDriver() instanceof OvenInspectSiteDeviceDriver && nextdevice.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver){ + ovenInspectSiteDeviceDriver = (OvenInspectSiteDeviceDriver) startdevice.getDeviceDriver(); + standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) nextdevice.getDeviceDriver(); + if(ovenInspectSiteDeviceDriver.getMove() != 1 || standardInspectSiteDeviceDriver.getMove() == 1){ + notCreateInstMessage = "手动创建指令未下发电气信号原因->烘箱检测站点-普通检测站点:" + ovenInspectSiteDeviceDriver.getDevicecode() + + "无货,无法下发指令或"+standardInspectSiteDeviceDriver.getDevicecode()+ "有货,无法下发指令!" +"!指令号:" + instruction.getInstruction_code(); + return false; + } + //判断经过的烘箱是否关门 + boolean hongxiangCloseDoor = this.hongxiangCloseDoor(start_device_code, next_device_code); + if(!hongxiangCloseDoor){ + notCreateInstMessage = "手动创建指令未下发电气信号原因->取货位:" + start_device_code + ",放货位:" + next_device_code + ",存在关联的同一列烘箱设备未关门!指令号:" + instruction.getInstruction_code(); + return false; + } + } + if(nextdevice.getDeviceDriver() instanceof OvenInspectSiteDeviceDriver && startdevice.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver){ + ovenInspectSiteDeviceDriver = (OvenInspectSiteDeviceDriver) nextdevice.getDeviceDriver(); + standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) startdevice.getDeviceDriver(); + if(ovenInspectSiteDeviceDriver.getMove() != 1 || standardInspectSiteDeviceDriver.getMove() == 1){ + notCreateInstMessage = "手动创建指令未下发电气信号原因->烘箱检测站点-普通检测站点:" + ovenInspectSiteDeviceDriver.getDevicecode() + + "无货,无法下发指令或"+standardInspectSiteDeviceDriver.getDevicecode()+ "有货,无法下发指令!" +"!指令号:" + instruction.getInstruction_code(); + return false; + } + //判断经过的烘箱是否关门 + boolean hongxiangCloseDoor = this.hongxiangCloseDoor( next_device_code, start_device_code); + if(!hongxiangCloseDoor){ + notCreateInstMessage = "手动创建指令未下发电气信号原因->取货位:" + start_device_code + ",放货位:" + next_device_code + ",存在关联的同一列烘箱设备未关门!指令号:" + instruction.getInstruction_code(); + return false; + } + } if (startdevice.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) startdevice.getDeviceDriver(); if (standardInspectSiteDeviceDriver.getMove() != 1) { @@ -401,10 +441,14 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i logServer.deviceExecuteLog(device_code, "", "", "当前设备:" + device_code + ",下发指令:" + instruction.getInstruction_code() + ",指令起点:" + instruction.getStart_device_code() + ",指令终点:" + instruction.getNext_device_code()); - this.writing("to_onset", start_addr); - this.writing("to_target", next_addr); - this.writing("to_task", instruction.getInstruction_code()); - this.writing("to_command", "1"); + List list = new ArrayList<>(); + Map map = new HashMap(); + map.put("to_onset", start_addr); + map.put("to_target", next_addr); + map.put("to_task", instruction.getInstruction_code()); + map.put("to_command", "1"); + list.add(map); + this.writing(list); if (startdevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) startdevice.getDeviceDriver(); hongXiangConveyorDeviceDriver.writing("to_open_door", "1"); @@ -438,9 +482,9 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i if (!ObjectUtil.isEmpty(task)) { Device nextdevice = deviceAppService.findDeviceByCode(task.getNext_device_code()); Device startdevice = deviceAppService.findDeviceByCode(task.getStart_device_code()); -// PhotoelectricInspectionSiteDeviceDriver photoelectricInspectionSiteDeviceDriver; HongXiangConveyorDeviceDriver hongXiangConveyorDeviceDriver; StandardInspectSiteDeviceDriver standardInspectSiteDeviceDriver; + OvenInspectSiteDeviceDriver ovenInspectSiteDeviceDriver; // if (startdevice.getDeviceDriver() instanceof PhotoelectricInspectionSiteDeviceDriver) { // photoelectricInspectionSiteDeviceDriver = (PhotoelectricInspectionSiteDeviceDriver) startdevice.getDeviceDriver(); // if (photoelectricInspectionSiteDeviceDriver.getMove() != 1) { @@ -448,6 +492,36 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i // return false; // } // } + if(startdevice.getDeviceDriver() instanceof OvenInspectSiteDeviceDriver && nextdevice.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver){ + ovenInspectSiteDeviceDriver = (OvenInspectSiteDeviceDriver) startdevice.getDeviceDriver(); + standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) nextdevice.getDeviceDriver(); + if(ovenInspectSiteDeviceDriver.getMove() != 1 || standardInspectSiteDeviceDriver.getMove() == 1){ + notCreateInstMessage = "手动创建指令未下发电气信号原因->烘箱检测站点-普通检测站点:" + ovenInspectSiteDeviceDriver.getDevicecode() + + "无货,无法下发指令或"+standardInspectSiteDeviceDriver.getDevicecode()+ "有货,无法下发指令!" +"!任务号:" + task.getTask_code(); + return false; + } + //判断经过的烘箱是否关门 + boolean hongxiangCloseDoor = this.hongxiangCloseDoor(task.getStart_device_code(), task.getNext_device_code()); + if(!hongxiangCloseDoor){ + notCreateInstMessage = "手动创建指令未下发电气信号原因->取货位:" + task.getStart_device_code() + ",放货位:" + task.getNext_device_code() + ",存在关联的同一列烘箱设备未关门!任务号:" + task.getTask_code(); + return false; + } + } + if(nextdevice.getDeviceDriver() instanceof OvenInspectSiteDeviceDriver && startdevice.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver){ + ovenInspectSiteDeviceDriver = (OvenInspectSiteDeviceDriver) nextdevice.getDeviceDriver(); + standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) startdevice.getDeviceDriver(); + if(ovenInspectSiteDeviceDriver.getMove() != 1 || standardInspectSiteDeviceDriver.getMove() == 1){ + notCreateInstMessage = "手动创建指令未下发电气信号原因->烘箱检测站点-普通检测站点:" + ovenInspectSiteDeviceDriver.getDevicecode() + + "无货,无法下发指令或"+standardInspectSiteDeviceDriver.getDevicecode()+ "有货,无法下发指令!" +"!任务号:" + task.getTask_code(); + return false; + } + //判断经过的烘箱是否关门 + boolean hongxiangCloseDoor = this.hongxiangCloseDoor(task.getStart_device_code(), task.getNext_device_code()); + if(!hongxiangCloseDoor){ + notCreateInstMessage = "手动创建指令未下发电气信号原因->取货位:" + task.getStart_device_code() + ",放货位:" + task.getNext_device_code() + ",存在关联的同一列烘箱设备未关门!任务号:" + task.getTask_code(); + return false; + } + } if (startdevice.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) startdevice.getDeviceDriver(); if (standardInspectSiteDeviceDriver.getMove() != 1) { @@ -484,6 +558,7 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i return false; } } + String taskid = task.getTask_id(); String taskcode = task.getTask_code(); String vehiclecode = task.getVehicle_code(); @@ -520,7 +595,6 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i if (isCloseDoor) { return false; } - try { instructionService.create(instdto); } catch (Exception e) { @@ -550,10 +624,24 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i logServer.deviceExecuteLog(device_code, "", "", "当前设备:" + device_code + ",下发指令:" + instdto.getInstruction_code() + ",指令起点:" + instdto.getStart_device_code() + ",指令终点:" + instdto.getNext_device_code()); - this.writing("to_onset", start_addr); - this.writing("to_target", next_addr); - this.writing("to_task", instdto.getInstruction_code()); - this.writing("to_command", "1"); + List list = new ArrayList<>(); + Map map = new HashMap(); + map.put("code", "to_onset"); + map.put("value",StrUtil.isNotBlank(start_addr)? start_addr : "0"); + Map map1 = new HashMap(); + map1.put("code", "to_target"); + map1.put("value",StrUtil.isNotBlank(next_addr)? next_addr : "0"); + Map map2 = new HashMap(); + map2.put("code", "to_task"); + map2.put("value",instdto.getInstruction_code()); + Map map3 = new HashMap(); + map3.put("code", "to_command"); + map3.put("value","1"); + list.add(map); + list.add(map1); + list.add(map2); + list.add(map3); + this.writing(list); //HongXiangConveyorDeviceDriver hongXiangConveyorDeviceDriver; if (nextDevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) nextDevice.getDeviceDriver(); @@ -576,10 +664,44 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i } } + /** + * 判断经过的烘箱是否关门 + */ + private boolean hongxiangCloseDoor(String start_device_code,String next_device_code) { + boolean flag = true; + List ovenDeviceCodeList = null; + Device startDevice = deviceAppService.findDeviceByCode(start_device_code); + Device nextDevice = deviceAppService.findDeviceByCode(next_device_code); + OvenInspectSiteDeviceDriver ovenInspectSiteDeviceDriver; + if (ObjectUtil.isEmpty(ovenDeviceCodeList) && startDevice.getDeviceDriver() instanceof OvenInspectSiteDeviceDriver) { + ovenInspectSiteDeviceDriver = (OvenInspectSiteDeviceDriver) startDevice.getDeviceDriver(); + ovenDeviceCodeList = ovenInspectSiteDeviceDriver.getExtraDeviceCodes("link_device_code"); + } + if (ObjectUtil.isEmpty(ovenDeviceCodeList) && nextDevice.getDeviceDriver() instanceof OvenInspectSiteDeviceDriver) { + ovenInspectSiteDeviceDriver = (OvenInspectSiteDeviceDriver) nextDevice.getDeviceDriver(); + ovenDeviceCodeList = ovenInspectSiteDeviceDriver.getExtraDeviceCodes("link_device_code"); + } + HongXiangConveyorDeviceDriver hongXiangConveyorDeviceDriver; + if(CollUtil.isNotEmpty(ovenDeviceCodeList)){ + for (String s : ovenDeviceCodeList) { + Device device = deviceAppService.findDeviceByCode(s); + if (device.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { + hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) device.getDeviceDriver(); + //判断关联设备是否开门 + if (hongXiangConveyorDeviceDriver.getDoor() == 1) { + notCreateInstMessage = "关联设备->" + device + "烘箱门未关闭!"; + flag = false; + break; + } + } + } + } + return flag; + } + //判断取货位或放货位为烘箱设备时关联的同一列烘箱设备是否有开门 public boolean judgeCloseDoor(String start_device_code, String next_device_code) { Boolean isClose = false; - try { Device startDevice = deviceAppService.findDeviceByCode(start_device_code); Device nextDevice = deviceAppService.findDeviceByCode(next_device_code); @@ -1006,6 +1128,31 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i logServer.deviceExecuteLog(device_code, "", "", "下发电气信号设备号:" + device_code + ",下发电气:" + to_param + ",下发电气值:" + value); } + 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(); + } + } + + } + @Override public JSONObject feedLmsRealFailedInfo() { JSONObject jo = new JSONObject(); diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/plug_pull_device_site/ItemProtocol.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/plug_pull_device_site/ItemProtocol.java index 09015c4b6..87e2188a2 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/plug_pull_device_site/ItemProtocol.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/plug_pull_device_site/ItemProtocol.java @@ -151,30 +151,30 @@ public class ItemProtocol { 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_barcode, "气胀轴条码", "DB1.B4")); - list.add(new ItemDto(item_weight1, "纸管1重量", "DB1.B4")); - list.add(new ItemDto(item_material1, "纸管1规格", "DB1.B4")); - list.add(new ItemDto(item_weight2, "纸管2重量", "DB1.B4")); - list.add(new ItemDto(item_material2, "纸管2规格", "DB1.B4")); - list.add(new ItemDto(item_error, "报警信号", "DB1.B5")); - list.add(new ItemDto(item_task, "任务号", "DB1.D6")); + list.add(new ItemDto(item_heartbeat, "心跳", "DB9.B0")); + list.add(new ItemDto(item_mode, "工作模式", "DB9.B1")); + list.add(new ItemDto(item_move, "光电信号", "DB9.B2")); + list.add(new ItemDto(item_action, "动作信号", "DB9.B3")); + list.add(new ItemDto(item_barcode, "气胀轴条码", "DB9.B4")); + list.add(new ItemDto(item_weight1, "纸管1重量", "DB9.B5")); + list.add(new ItemDto(item_material1, "纸管1规格", "DB9.B6")); + list.add(new ItemDto(item_weight2, "纸管2重量", "DB9.B7")); + list.add(new ItemDto(item_material2, "纸管2规格", "DB9.B8")); + list.add(new ItemDto(item_error, "报警信号", "DB9.B9")); + list.add(new ItemDto(item_task, "任务号", "DB9.D10")); 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_material1, "纸管1规格", "DB2.W2")); - list.add(new ItemDto(item_to_material2, "纸管2规格", "DB2.W4")); - list.add(new ItemDto(item_to_qty, "纸管数量", "DB2.W6")); - list.add(new ItemDto(item_to_qzz_type, "气胀轴类型", "DB2.W8")); - list.add(new ItemDto(item_to_is_changeShaft, "是否换轴", "DB2.W")); - list.add(new ItemDto(item_to_location, "存储位置", "DB2.W10")); - list.add(new ItemDto(item_to_size, "尺寸", "DB2.W12")); + list.add(new ItemDto(item_to_command, "下发命令", "DB10.W0")); + list.add(new ItemDto(item_to_material1, "纸管1规格", "DB10.W2")); + list.add(new ItemDto(item_to_material2, "纸管2规格", "DB10.W4")); + list.add(new ItemDto(item_to_qty, "纸管数量", "DB10.W6")); + list.add(new ItemDto(item_to_qzz_type, "气胀轴类型", "DB10.W8")); + list.add(new ItemDto(item_to_is_changeShaft, "是否换轴", "DB10.W10")); + list.add(new ItemDto(item_to_location, "存储位置", "DB10.W12")); + list.add(new ItemDto(item_to_size, "尺寸", "DB10.W14")); return list; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/plug_pull_device_site/PlugPullDeviceSiteDefination.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/plug_pull_device_site/PlugPullDeviceSiteDefination.java index d04b51944..7f9d77409 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/plug_pull_device_site/PlugPullDeviceSiteDefination.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/plug_pull_device_site/PlugPullDeviceSiteDefination.java @@ -43,7 +43,7 @@ public class PlugPullDeviceSiteDefination implements OpcDeviceDriverDefination { @Override public List getFitDeviceTypes() { List types = new LinkedList(); - types.add(DeviceType.conveyor); + types.add(DeviceType.station); return types; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/plug_pull_device_site/PlugPullDeviceSiteDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/plug_pull_device_site/PlugPullDeviceSiteDeviceDriver.java index 04ccab4b7..36b906812 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/plug_pull_device_site/PlugPullDeviceSiteDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/plug_pull_device_site/PlugPullDeviceSiteDeviceDriver.java @@ -13,6 +13,10 @@ import org.nl.acs.device_driver.DeviceDriver; 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.ext.wms.data.ApplyManipulatorActionRequest; +import org.nl.acs.ext.wms.data.ApplyManipulatorActionResponse; +import org.nl.acs.ext.wms.data.ApplyPlugPullSitResponse; +import org.nl.acs.ext.wms.data.ApplyPlugPullSiteRequest; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; import org.nl.acs.instruction.domain.Instruction; @@ -324,29 +328,88 @@ public class PlugPullDeviceSiteDeviceDriver extends AbstractOpcDeviceDriver impl * 申请套管 */ private synchronized void apply_casing(int mode) { - this.writeSignal(mode); - logServer.deviceExecuteLog(this.device_code, "", "", "申请套管,返回参数:" + "applyResponse"); - message = "申请套管成功"; + ApplyPlugPullSiteRequest applyPlugPullSiteRequest = new ApplyPlugPullSiteRequest(); + ApplyPlugPullSitResponse applyPlugPullSitResponse; + Instruction inst1 = instructionService.findByCode(String.valueOf(task)); + String task_code1 = inst1.getTask_code(); + applyPlugPullSiteRequest.setDevice_code(device_code); + applyPlugPullSiteRequest.setTask_code(task_code1); + applyPlugPullSiteRequest.setType("1"); + applyPlugPullSitResponse = acsToWmsService.applyPlugPullSiteRequest(applyPlugPullSiteRequest); + if (applyPlugPullSitResponse.getCode() == 200) { + this.writeSignal(mode); + logServer.deviceExecuteLog(this.device_code, "", "", "申请套管,返回参数:" + applyPlugPullSitResponse); + message = "申请套管成功"; + } else { + message = applyPlugPullSitResponse.getMessage(); + Map map = new LinkedHashMap<>(); + map.put("to_command", 99); + this.writing(map); + requireSucess = true; + message = "申请套管失败"; + logServer.deviceExecuteLog(this.device_code, "", "", "申请套管反馈失败,返回参数:" + applyPlugPullSitResponse); + } } /** * 套管完成 */ private synchronized void bushingSucess(int mode) { - this.writeSignal(mode); - logServer.deviceExecuteLog(this.device_code, "", "", "反馈套管完成,返回参数:" + "applyResponse"); - message = "套管完成成功"; + ApplyPlugPullSiteRequest applyPlugPullSiteRequest = new ApplyPlugPullSiteRequest(); + ApplyPlugPullSitResponse applyPlugPullSitResponse; + Instruction inst1 = instructionService.findByCode(String.valueOf(task)); + String task_code1 = inst1.getTask_code(); + applyPlugPullSiteRequest.setDevice_code(device_code); + applyPlugPullSiteRequest.setTask_code(task_code1); + applyPlugPullSiteRequest.setType("2"); + applyPlugPullSitResponse = acsToWmsService.applyPlugPullSiteRequest(applyPlugPullSiteRequest); + if (applyPlugPullSitResponse.getCode() == 200) { + this.writeSignal(mode); + logServer.deviceExecuteLog(this.device_code, "", "", "反馈套管完成,返回参数:" + applyPlugPullSitResponse); + message = "套管完成成功"; + } else { + message = applyPlugPullSitResponse.getMessage(); + Map map = new LinkedHashMap<>(); + map.put("to_command", 99); + this.writing(map); + requireSucess = true; + message = "申请套管失败"; + logServer.deviceExecuteLog(this.device_code, "", "", "申请套管反馈失败,返回参数:" + applyPlugPullSitResponse); + } + } /** * 拔轴完成 */ private synchronized void pullShaftSucess(int mode) { - this.writeSignal(mode); - logServer.deviceExecuteLog(this.device_code, "", "", "申请拔轴,返回参数:" + "applyResponse"); - message = "拔轴完成成功"; + ApplyPlugPullSiteRequest applyPlugPullSiteRequest = new ApplyPlugPullSiteRequest(); + ApplyPlugPullSitResponse applyPlugPullSitResponse; + Instruction inst1 = instructionService.findByCode(String.valueOf(task)); + String task_code1 = inst1.getTask_code(); + applyPlugPullSiteRequest.setDevice_code(device_code); + applyPlugPullSiteRequest.setTask_code(task_code1); + applyPlugPullSiteRequest.setType("3"); + applyPlugPullSitResponse = acsToWmsService.applyPlugPullSiteRequest(applyPlugPullSiteRequest); + if (applyPlugPullSitResponse.getCode() == 200) { + this.writeSignal(mode); + logServer.deviceExecuteLog(this.device_code, "", "", "申请拔轴,返回参数:" + applyPlugPullSitResponse); + message = "拔轴完成成功"; + } else { + message = applyPlugPullSitResponse.getMessage(); + Map map = new LinkedHashMap<>(); + map.put("to_command", 99); + this.writing(map); + requireSucess = true; + message = "申请拔轴失败"; + logServer.deviceExecuteLog(this.device_code, "", "", "申请拔轴反馈失败,返回参数:" + applyPlugPullSitResponse); + } } + /** + * 下发电气信号 + * @param mode + */ public void writeSignal(int mode){ Map map = new LinkedHashMap<>(); map.put("to_command", mode); diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/pull_head_manipulator/ItemProtocol.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/pull_head_manipulator/ItemProtocol.java index 207c653cd..9c800791e 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/pull_head_manipulator/ItemProtocol.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/pull_head_manipulator/ItemProtocol.java @@ -180,31 +180,31 @@ public class ItemProtocol { 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_walk_y, "行走列", "DB1.B4")); - list.add(new ItemDto(item_error, "报警信号", "DB1.B5")); - list.add(new ItemDto(item_task, "任务号", "DB1.D6")); - list.add(new ItemDto(item_x_position, "x坐标", "DB1.REAL10")); - list.add(new ItemDto(item_y_position, "y坐标", "DB1.REAL14")); + list.add(new ItemDto(item_heartbeat, "心跳", "DB11.B0")); + list.add(new ItemDto(item_mode, "工作模式", "DB11.B1")); + list.add(new ItemDto(item_move, "光电信号", "DB11.B2")); + list.add(new ItemDto(item_action, "动作信号", "DB11.B3")); + list.add(new ItemDto(item_walk_y, "行走列", "DB11.B4")); + list.add(new ItemDto(item_error, "报警信号", "DB11.B5")); + list.add(new ItemDto(item_task, "任务号", "DB11.D6")); + list.add(new ItemDto(item_x_position, "x坐标", "DB11.REAL10")); + list.add(new ItemDto(item_y_position, "y坐标", "DB11.REAL14")); 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_onset, "下发起始站", "DB2.W2")); - list.add(new ItemDto(item_to_target, "下发目标站", "DB2.W4")); - list.add(new ItemDto(item_to_task, "下发任务号", "DB2.D6")); - list.add(new ItemDto(item_to_pull, "是否拔轴", "DB2.W8")); - list.add(new ItemDto(item_to_sleeve, "是否套轴", "DB2.W10")); - list.add(new ItemDto(item_to_size, "尺寸", "DB2.W12")); - list.add(new ItemDto(item_to_version, "代数", "DB2.W14")); - list.add(new ItemDto(item_to_qty, "子卷数量", "DB2.W16")); - list.add(new ItemDto(item_to_length1, "子卷1长度", "DB2.W18")); - list.add(new ItemDto(item_to_length2, "子卷2长度", "DB2.W20")); + list.add(new ItemDto(item_to_command, "下发命令", "DB12.W0")); + list.add(new ItemDto(item_to_onset, "下发起始站", "DB12.W2")); + list.add(new ItemDto(item_to_target, "下发目标站", "DB12.W4")); + list.add(new ItemDto(item_to_task, "下发任务号", "DB12.D6")); + list.add(new ItemDto(item_to_pull, "是否拔轴", "DB12.W8")); + list.add(new ItemDto(item_to_sleeve, "是否套轴", "DB12.W10")); + list.add(new ItemDto(item_to_size, "尺寸", "DB12.W12")); + list.add(new ItemDto(item_to_version, "代数", "DB12.W14")); + list.add(new ItemDto(item_to_qty, "子卷数量", "DB12.W16")); + list.add(new ItemDto(item_to_length1, "子卷1长度", "DB12.W18")); + list.add(new ItemDto(item_to_length2, "子卷2长度", "DB12.W20")); return list; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/pull_head_manipulator/PullHeadManipulatorDefination.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/pull_head_manipulator/PullHeadManipulatorDefination.java index aad3c1d08..fd8fd33c4 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/pull_head_manipulator/PullHeadManipulatorDefination.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/pull_head_manipulator/PullHeadManipulatorDefination.java @@ -41,7 +41,7 @@ public class PullHeadManipulatorDefination implements OpcDeviceDriverDefination @Override public List getFitDeviceTypes() { List types = new LinkedList(); - types.add(DeviceType.station); + types.add(DeviceType.robot); return types; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/pull_tail_manipulator/ItemProtocol.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/pull_tail_manipulator/ItemProtocol.java index fcd35a5cd..b900f3ac5 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/pull_tail_manipulator/ItemProtocol.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/pull_tail_manipulator/ItemProtocol.java @@ -143,25 +143,25 @@ public class ItemProtocol { 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_walk_y, "行走列", "DB1.B4")); - list.add(new ItemDto(item_error, "报警信号", "DB1.B5")); - list.add(new ItemDto(item_task, "任务号", "DB1.D6")); - list.add(new ItemDto(item_x_position, "x坐标", "DB1.REAL10")); - list.add(new ItemDto(item_y_position, "y坐标", "DB1.REAL14")); - list.add(new ItemDto(item_weight, "重量", "DB1.REAL16")); + list.add(new ItemDto(item_heartbeat, "心跳", "DB13.B0")); + list.add(new ItemDto(item_mode, "工作模式", "DB13.B1")); + list.add(new ItemDto(item_move, "光电信号", "DB13.B2")); + list.add(new ItemDto(item_action, "动作信号", "DB13.B3")); + list.add(new ItemDto(item_walk_y, "行走列", "DB13.B4")); + list.add(new ItemDto(item_error, "报警信号", "DB13.B5")); + list.add(new ItemDto(item_task, "任务号", "DB13.D6")); + list.add(new ItemDto(item_x_position, "x坐标", "DB13.REAL10")); + list.add(new ItemDto(item_y_position, "y坐标", "DB13.REAL14")); + list.add(new ItemDto(item_weight, "重量", "DB13.REAL16")); 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_onset, "下发起始站", "DB2.W2")); - list.add(new ItemDto(item_to_target, "下发目标站", "DB2.W4")); - list.add(new ItemDto(item_to_task, "下发任务号", "DB2.D6")); + list.add(new ItemDto(item_to_command, "下发命令", "DB14.W0")); + list.add(new ItemDto(item_to_onset, "下发起始站", "DB14.W2")); + list.add(new ItemDto(item_to_target, "下发目标站", "DB14.W4")); + list.add(new ItemDto(item_to_task, "下发任务号", "DB14.D6")); return list; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/pull_tail_manipulator/PullTailManipulatorDefination.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/pull_tail_manipulator/PullTailManipulatorDefination.java index 936d8a5f7..32acdd093 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/pull_tail_manipulator/PullTailManipulatorDefination.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/pull_tail_manipulator/PullTailManipulatorDefination.java @@ -41,7 +41,7 @@ public class PullTailManipulatorDefination implements OpcDeviceDriverDefination @Override public List getFitDeviceTypes() { List types = new LinkedList(); - types.add(DeviceType.station); + types.add(DeviceType.robot); return types; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/slit_two_manipulator/ItemProtocol.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/slit_two_manipulator/ItemProtocol.java index 44a78f0f1..c2bed26ee 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/slit_two_manipulator/ItemProtocol.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/slit_two_manipulator/ItemProtocol.java @@ -12,57 +12,52 @@ import java.util.List; @Data public class ItemProtocol { - /** + /** * 心跳 */ public static String item_heartbeat = "heartbeat"; - /** + /** * 工作模式 */ public static String item_mode = "mode"; - //设备状态 - public static String item_status = "status"; //前工位光电信号 public static String item_move1 = "move1"; //后工位光电信号 public static String item_move2 = "move2"; - //前工位动作信号 - public static String item_action1 = "action1"; - //后工位动作信号 - public static String item_action2 = "action2"; + //动作信号 + public static String item_action = "action"; /** * 行走列 */ public static String item_walk_y = "walk_y"; - /** + //x坐标 + public static String item_x_position = "x_position"; + //动作信号 + public static String item_y_position = "y_position"; + /** * 报警 */ public static String item_error = "error"; - //任务类型 - public static String item_type = "type"; - //前工位任务号 - public static String item_task1 = "task1"; - //后工位任务号 - public static String item_task2 = "task2"; + //任务号 + public static String item_task = "task"; - //前工位下发命令 - public static String item_to_command1 = "to_command1"; - //前工位下发起始站 + + //下发命令 + 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_task1 = "to_task1"; - //后工位下发命令 - public static String item_to_command2 = "to_command2"; - //后工位下发起始站 + //下发任务号 + public static String item_to_task = "to_task"; + //下发起始站2 public static String item_to_onset2 = "to_onset2"; - //后工位下发目标站 + //下发目标站2 public static String item_to_target2 = "to_target2"; - //后工位下发任务号 - public static String item_to_task2 = "to_task2"; - //任务类型 1前工位 2后工位 3双工位 + //下发空轴位 + public static String item_to_empty_shaft_site = "to_empty_shaft_site"; + //下发任务类型 public static String item_to_type = "to_type"; @@ -80,10 +75,6 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_mode); } - public int getStatus() { - return this.getOpcIntegerValue(item_status); - } - public int getError() { return this.getOpcIntegerValue(item_error); } @@ -96,28 +87,24 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_move2); } - public int getAction1() { - return this.getOpcIntegerValue(item_action1); - } - - public int getAction2() { - return this.getOpcIntegerValue(item_action2); + public int getAction() { + return this.getOpcIntegerValue(item_action); } public int getWalk_y() { return this.getOpcIntegerValue(item_walk_y); } - public int getType() { - return this.getOpcIntegerValue(item_type); + public float getX_position() { + return this.getOpcFloatValue(item_x_position); } - public int getTask1() { - return this.getOpcIntegerValue(item_task1); + public float getY_position() { + return this.getOpcFloatValue(item_y_position); } - public int getTask2() { - return this.getOpcIntegerValue(item_task2); + public int getTask() { + return this.getOpcIntegerValue(item_task); } @@ -143,6 +130,19 @@ public class ItemProtocol { } + public float getOpcFloatValue(String protocol) { + Float value = this.driver.getDoubleValue(protocol); + if (value == null) { + // log.error(this.getDriver().getDeviceCode() + ":protocol " + protocol + " 信号同步异常!"); + setIsonline(false); + } else { + setIsonline(true); + return value; + } + return 0; + + } + public String getOpcStringValue(String protocol) { String value = this.driver.getStringValue(protocol); if (StrUtil.isEmpty(value)) { @@ -155,32 +155,29 @@ public class ItemProtocol { 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_status, "设备状态", "DB1.B2")); - list.add(new ItemDto(item_move1, "前工位光电信号", "DB1.B3")); - list.add(new ItemDto(item_move2, "后工位光电信号", "DB1.B4")); - list.add(new ItemDto(item_action1, "前工位动作信号", "DB1.B5")); - list.add(new ItemDto(item_action2, "后工位动作信号", "DB2.B6")); - list.add(new ItemDto(item_walk_y, "行走列", "DB1.B7")); - list.add(new ItemDto(item_error, "报警信号", "DB1.B8")); - list.add(new ItemDto(item_type, "任务类型", "DB1.B9")); - list.add(new ItemDto(item_task1, "前工位任务号", "DB1.D10")); - list.add(new ItemDto(item_task2, "后工位任务号", "DB1.D14")); + list.add(new ItemDto(item_heartbeat, "心跳", "DB15.B0")); + list.add(new ItemDto(item_mode, "工作模式", "DB15.B1")); + list.add(new ItemDto(item_move1, "前工位光电信号", "DB15.B2")); + list.add(new ItemDto(item_move2, "后工位光电信号", "DB15.B3")); + list.add(new ItemDto(item_action, "动作信号", "DB15.B4")); + list.add(new ItemDto(item_walk_y, "行走列", "DB15.B5")); + list.add(new ItemDto(item_error, "报警信号", "DB15.B6")); + list.add(new ItemDto(item_x_position, "x坐标", "DB15.REAL10")); + list.add(new ItemDto(item_y_position, "y坐标", "DB15.REAL14")); + list.add(new ItemDto(item_y_position, "y坐标", "DB15.B7")); return list; } public static List getWriteableItemDtos() { ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command1, "前工位下发命令", "DB2.W0")); - list.add(new ItemDto(item_to_onset1, "前工位下发起始站", "DB2.W2")); - list.add(new ItemDto(item_to_target1, "前工位下发目标站", "DB2.W4")); - list.add(new ItemDto(item_to_task1, "前工位下发任务号", "DB2.D6")); - list.add(new ItemDto(item_to_command2, "后工位下发命令", "DB2.W10")); - list.add(new ItemDto(item_to_onset2, "后工位下发起始站", "DB2.W12")); - list.add(new ItemDto(item_to_target2, "后工位下发目标站", "DB2.W14")); - list.add(new ItemDto(item_to_task2, "后工位下发任务号", "DB2.D16")); - list.add(new ItemDto(item_to_type, "下发任务类型", "DB2.W20")); + list.add(new ItemDto(item_to_command, "下发命令", "DB16.W0")); + list.add(new ItemDto(item_to_onset1, "下发起始站1", "DB16.W2")); + list.add(new ItemDto(item_to_target1, "下发目标站1", "DB16.W4")); + list.add(new ItemDto(item_to_task, "下发任务号", "DB16.D6")); + list.add(new ItemDto(item_to_onset2, "下发起始站2", "DB16.W12")); + list.add(new ItemDto(item_to_target2, "下发目标站2", "DB16.W14")); + list.add(new ItemDto(item_to_empty_shaft_site, "下发空轴位", "DB16.W16")); + list.add(new ItemDto(item_to_type, "下发任务类型", "DB16.W20")); return list; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/slit_two_manipulator/SlitTwoManipulatorDefination.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/slit_two_manipulator/SlitTwoManipulatorDefination.java index e61a92d09..4256c8608 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/slit_two_manipulator/SlitTwoManipulatorDefination.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/slit_two_manipulator/SlitTwoManipulatorDefination.java @@ -44,7 +44,7 @@ public class SlitTwoManipulatorDefination implements OpcDeviceDriverDefination { @Override public List getFitDeviceTypes() { List types = new LinkedList(); - types.add(DeviceType.station); + types.add(DeviceType.robot); return types; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/slit_two_manipulator/SlitTwoManipulatorDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/slit_two_manipulator/SlitTwoManipulatorDeviceDriver.java index acc05e971..00f37490d 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/slit_two_manipulator/SlitTwoManipulatorDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/slit_two_manipulator/SlitTwoManipulatorDeviceDriver.java @@ -24,7 +24,6 @@ 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.task.enums.TaskStatusEnum; import org.nl.acs.task.service.TaskService; import org.nl.acs.task.service.dto.TaskDto; import org.nl.common.exception.BadRequestException; @@ -60,24 +59,31 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl //分切行架机械手是否禁用 0否 1是 private int is_disable = 0; + int heartbeat = 0; + int last_heartbeat = 0; + /** * 工作模式 */ int mode = 0; int last_mode = 0; - //设备状态 - int status = 0; - int last_status = 0; + //任务号 + int task = 0; + int last_task = 0; //前后工位光电信号 int move1 = 0; int last_move1 = 0; int move2 = 0; int last_move2 = 0; - //前后工位动作信号 - int action1 = 0; - int last_action1 = 0; - int action2 = 0; - int last_action2 = 0; + //动作信号 + int action = 0; + int last_action = 0; + //x坐标 + float x_position = 0; + float last_x_position = 0; + //y坐标 + float y_position = 0; + float last_y_position = 0; /** * 报警 */ @@ -88,14 +94,6 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl */ int walk_y = 0; int last_walk_y = 0; - //任务类型 - int type = 0; - int last_type = 0; - //前后工位任务号 - int task1 = 0; - int last_task1 = 0; - int task2 = 0; - int last_task2 = 0; Boolean isonline = true; @@ -112,16 +110,9 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl //暂定 0就绪 1请求取货 2取货完成 3请求放货 4放货完成 5取货完成离开 6放货完成离开 7请求进入区域 8请求离开区域 int flag; + //1普通任务按点执行 2.下2满轴上2空轴 3.下1满轴上2空轴 4.下2满轴上1空轴 + String truss_type; - //前工位任务执行当前步骤 - //0未执行 1更改指令状态 2下发电气任务信息 3前工位允许取货 4前工位取货完成 5前工位允许放货 6放货完成 - int now_steps_type1 = 0; - //后工位当前执行步骤 - //0未执行 1更改指令状态 2下发电气任务信息 3后工位允许取货4后工位取货完成 5后工位允许放货 6放货完成 - int now_steps_type2 = 0; - //双工位任务当前执行步骤 - //0未执行 1更改指令状态 2下发电气任务信息 3后工位允许取货 4后工位取货完成 5前工位允许取货 6前工位取货完成 7后工位允许放货 8后工位放货完成 9前工位允许放货 10前工位放货完成 - int now_steps_type3 = 0; String device_code; @@ -139,6 +130,13 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl String notCreateInstMessage = ""; String feedMessage = ""; + //当前指令 + Instruction inst = null; + + List getDeviceCodeList = null; + + List putDeviceCodeList = null; + @Override public Device getDevice() { @@ -152,69 +150,17 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl try { device_code = this.getDeviceCode(); mode = this.itemProtocol.getMode(); - status = this.itemProtocol.getStatus(); move1 = this.itemProtocol.getMove1(); move2 = this.itemProtocol.getMove2(); - action1 = this.itemProtocol.getAction1(); - action2 = this.itemProtocol.getAction2(); + action = this.itemProtocol.getAction(); walk_y = this.itemProtocol.getWalk_y(); error = this.itemProtocol.getError(); - type = this.itemProtocol.getType(); - task1 = this.itemProtocol.getTask1(); - task2 = this.itemProtocol.getTask2(); + task = this.itemProtocol.getTask(); + x_position = this.itemProtocol.getX_position(); + y_position = this.itemProtocol.getY_position(); - if (mode != last_mode) { - if (mode == 2) { - logServer.deviceExecuteLog(device_code, "", "", "开始请求标记复位`此时请求标记值为:" + requireSucess); - requireSucess = false; - logServer.deviceExecuteLog(device_code, "", "", "请求标记复位成功`此时请求标记值为:" + requireSucess); - } - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode); - } - if (type != last_type) { - logServer.deviceItemValue(this.device_code, "type", String.valueOf(type)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号type:" + last_type + "->" + type); - } - if (error != last_error) { - logServer.deviceItemValue(this.device_code, "error", String.valueOf(error)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error); - } - if (status != last_status) { - logServer.deviceItemValue(this.device_code, "status", String.valueOf(status)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号status:" + last_status + "->" + status); - } - if (move1 != last_move1) { - logServer.deviceItemValue(this.device_code, "move1", String.valueOf(move1)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号move1:" + last_move1 + "->" + move1); - } - if (move2 != last_move2) { - logServer.deviceItemValue(this.device_code, "move2", String.valueOf(move2)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号move2:" + last_move2 + "->" + move2); - } - if (action1 != last_action1) { - logServer.deviceItemValue(this.device_code, "action1", String.valueOf(action1)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号action1:" + last_action1 + "->" + action1); - } - if (action2 != last_action2) { - logServer.deviceItemValue(this.device_code, "action2", String.valueOf(action2)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号action2:" + last_action2 + "->" + action2); - } - if (walk_y != last_walk_y) { - logServer.deviceItemValue(this.device_code, "walk_y", String.valueOf(walk_y)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号walk_y:" + last_walk_y + "->" + walk_y); - } - if (task1 != last_task1) { - logServer.deviceItemValue(this.device_code, "task1", String.valueOf(task1)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号task1:" + last_task1 + "->" + task1); - } - if (task2 != last_task2) { - logServer.deviceItemValue(this.device_code, "task2", String.valueOf(task2)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号task2:" + last_task2 + "->" + task2); - } - - if (task1 > 0 && task2 > 0 && !requireSucess) { - update_instruction_status1(); + if (task > 0 && !requireSucess) { + update_instruction_status(); } @@ -247,34 +193,14 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl return; case 2: //申请任务 - if (move1 == 0 && move2 == 0 && action1 == 0 && action2 == 0 && task1 == 0 && task2 == 0 && !requireSucess) { - //获取关联设备驱动信息 判断关联设备是否禁用 - String link_device_code = String.valueOf(this.getDevice().getExtraValue().get("link_device_code")); - Device device = deviceAppservice.findDeviceByCode(link_device_code); - SlitTwoManipulatorDeviceDriver slitTwoManipulatorDeviceDriver; - if (device.getDeviceDriver() instanceof SlitTwoManipulatorDeviceDriver) { - slitTwoManipulatorDeviceDriver = (SlitTwoManipulatorDeviceDriver) device.getDeviceDriver(); - //如果禁用 - if (slitTwoManipulatorDeviceDriver.getIs_disable() == 1) { - boolean flag = false; - try { - //就去走关联设备异常取放货工位的任务 任务生成成功返回true 就不会走下面正常生成任务的逻辑 - flag = instruction_require2(); - } catch (Exception e) { - flag = false; - } - if (flag) { - break; - } - } - } - //没有生成异常取放货工位的任务 就生成正常关联取放货工位的任务 + if (move1 == 0 && move2 == 0 && task == 0 && !requireSucess) { + //生成正常关联取放货工位的任务 boolean res = applyTask(); if (res) { feedMessage = ""; notCreateInstMessage = ""; notCreateTaskMessage = ""; - logServer.deviceExecuteLog(device_code, "", String.valueOf(task1), "move2:" + move2 + ",action2:" + action2 + ",move1:" + move1 + ",action1:" + action1 + ",requireSucess:" + requireSucess); + logServer.deviceExecuteLog(device_code, "", String.valueOf(task), "move2:" + move2 + ",action:" + action + ",move1:" + move1 + ",requireSucess:" + requireSucess); } } else { // if (!requireSucess) { @@ -291,17 +217,11 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl if (move2 != 0) { remark = remark + "后工位有货(move2 != 0),"; } - if (action1 != 0) { - remark = remark + "前工位动作信号不为0(action1 != 0),"; + if (action != 0) { + remark = remark + "动作信号不为0(action != 0),"; } - if (action2 != 0) { - remark = remark + "后工位动作信号不为0(action2 != 0),"; - } - if (task1 != 0) { - remark = remark + "前工位存在任务(task1 != 0),"; - } - if (task2 != 0) { - remark = remark + "后工位存在任务(task2 != 0),"; + if (task != 0) { + remark = remark + "存在任务(task != 0),"; } this.setNotCreateTaskMessage(remark); } @@ -316,119 +236,72 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl } last_mode = mode; last_error = error; - last_status = status; last_move1 = move1; last_move2 = move2; - last_action1 = action1; - last_action2 = action2; + last_action = action; last_walk_y = walk_y; - last_type = type; - last_task1 = task1; - last_task2 = task2; + last_task = task; + last_x_position = x_position; + last_y_position = y_position; } /** - * 更新分切机下双卷指令状态 + * 更新指令状态 */ - public synchronized void update_instruction_status1() throws Exception { + public synchronized void update_instruction_status() throws Exception { 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 (task1 > 0 && type == 1) { - Instruction inst1 = instructionService.findByCodeFromCache(String.valueOf(task1)); + //更改任务状态 + if (task > 0) { + //inst_message + Instruction inst1 = checkInst(); if (inst1 != null) { if (StrUtil.equals(inst1.getInstruction_status(), "0")) { - //当前执行步骤为更新任务状态 inst1.setInstruction_status("1"); - inst1.setExecute_device_code(this.getDevice_code()); + inst1.setExecute_device_code(this.device_code); instructionService.update(inst1); } } } -// if (mode = 3 && move1 = 0 && move2 = 0 && action1 = 5 && action2 = 5) { -// -// } + //任务完成 + if (mode == 3 && move1 == 0 && move2 == 0 && action == 9) { + try { + finish_instruction(inst); + Map map = new LinkedHashMap<>(); + map.put("to_command", 9); + this.writing(map); + this.setRequireSucess(true); + } catch (Exception e) { + e.printStackTrace(); + } + feedMessage = "任务完成"; + } else { + feedMessage = "任务完成后未反馈原因-->"; + if (mode != 3) { + feedMessage += "行架工作模式不为运行中(mode != 3),"; + } + if (action != 9) { + feedMessage += "动作信号不是任务完成(action != 9),"; + } + if (move1 != 0) { + feedMessage += "前工位光电信号不应该为有货状态(move2 != 0),"; + } + if (move2 != 0) { + feedMessage += "后工位光电信号不应该为有货状态(move2 != 0),"; + } + if (task == 0) { + feedMessage += "没有任务号(task == 0),"; + } + } } } - //关联设备异常申请任务 - public synchronized boolean instruction_require2() { - Boolean flag = false; - Date date = new Date(); - if (date.getTime() - this.instruction_head_time.getTime() < (long) this.instruction_require_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_head_time); - return false; - } else { - this.instruction_head_time = date; - //前工位取货关联设备 - List getDeviceCodeList = this.getExtraDeviceCodes("error_head_get_device_code"); - //后工位取货关联设备 - List backGetDeviceCodeList = this.getExtraDeviceCodes("error_back_get_device_code"); - TaskDto taskDto = null; - //遍历前工位取货点设备 - for (String getDeviceCode : getDeviceCodeList) { - //去任务表中查询是否有前工位关联设备的重新创建指令的任务 - List taskDtos = taskserver.queryTaskByStartAndIntStatus(getDeviceCode); - //如果有 - if (ObjectUtil.isNotEmpty(taskDtos)) { - //按照优先级排序 优先级相等按照创建时间排序 - taskDtos = this.sortTask(taskDtos); - taskDto = taskDtos.get(0); - flag = this.executeBusiness(taskDto, getDeviceCodeList, backGetDeviceCodeList); - return flag; - } else { - //去任务表中查询是否有前工位关联设备的就绪状态下的任务 - taskDtos = taskserver.queryTaskByStartDeviceCode(getDeviceCode); - if (ObjectUtil.isNotEmpty(taskDtos)) { - //按照优先级排序 优先级相等按照创建时间排序 - taskDtos = this.sortTask(taskDtos); - taskDto = taskDtos.get(0); - break; - } - } - } - //如果任务表中起点1或起点2中 无前工位取货点关联设备 - //就去查询任务表中查找起点1或起点2为后工位取货点关联设备的任务 - if (ObjectUtil.isEmpty(taskDto)) { - for (String backGetDeviceCode : backGetDeviceCodeList) { - //去任务表中查询是否有前工位关联设备的重新创建指令的任务 - List taskDtos = taskserver.queryTaskByNextAndIntStatus(backGetDeviceCode); - if (ObjectUtil.isNotEmpty(taskDtos)) { - //按照优先级排序 优先级相等按照创建时间排序 - taskDtos = this.sortTask(taskDtos); - taskDto = taskDtos.get(0); - flag = this.executeBusiness(taskDto, getDeviceCodeList, backGetDeviceCodeList); - return flag; - } else { - //去任务表中查询是否有后工位关联设备的就绪状态下的任务 - taskDtos = taskserver.queryTaskByBackDeviceCode(backGetDeviceCode); - if (ObjectUtil.isNotEmpty(taskDtos)) { - //按照优先级排序 优先级相等按照创建时间排序 - taskDtos = this.sortTask(taskDtos); - taskDto = taskDtos.get(0); - break; - } - } - } - } - if (!ObjectUtil.isEmpty(taskDto)) { - flag = this.executeReadyBusiness(taskDto, getDeviceCodeList, backGetDeviceCodeList); - if (flag) { - notCreateInstMessage = ""; - } - } else { - notCreateTaskMessage = ""; - notCreateInstMessage = "未找到关联设备禁用的任务!"; - } - } - return flag; - } //正常申请任务 public synchronized boolean applyTask() { @@ -439,87 +312,56 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl return false; } else { this.instruction_head_time = date; - //前工位取货关联设备 - List getDeviceCodeList = this.getExtraDeviceCodes("head_get_device_code"); - //后工位取货关联设备 - List backGetDeviceCodeList = this.getExtraDeviceCodes("back_get_device_code"); - TaskDto taskDto = null; - //遍历前工位取货点设备 - for (String getDeviceCode : getDeviceCodeList) { - //去任务表中查询是否有前工位关联设备的重新创建指令的任务 - List taskDtos = taskserver.queryTaskByStartAndIntStatus(getDeviceCode); - //如果有 + //抓取工位 + if (ObjectUtil.isEmpty(getDeviceCodeList)) { + getDeviceCodeList = this.getExtraDeviceCodes("get_device_code"); + } + //放货工位 + if (ObjectUtil.isEmpty(putDeviceCodeList)) { + putDeviceCodeList = this.getExtraDeviceCodes("put_device_code"); + } + TaskDto task = null; + for (int i = 0; i < getDeviceCodeList.size(); i++) { + String startDeviceCode = getDeviceCodeList.get(i); + List taskDtos = taskserver.queryTaskByDeviceCodeAndStatus(startDeviceCode); if (ObjectUtil.isNotEmpty(taskDtos)) { //按照优先级排序 优先级相等按照创建时间排序 taskDtos = this.sortTask(taskDtos); - taskDto = taskDtos.get(0); - //分切机出双卷任务 - if (StrUtil.equals(taskDto.getTruss_type(), "1")) { - inst_require1(taskDto, getDeviceCodeList, backGetDeviceCodeList); + TaskDto taskDto = taskDtos.get(0); + truss_type = taskDto.getTruss_type(); + // 9 行架任务 + if (!StrUtil.equals(taskDto.getTask_type(), "9")) { + taskDto = null; + continue; } - //分切机出上卷-行架取单轴 - else if (StrUtil.equals(taskDto.getTruss_type(), "2")) { -// inst_require2(taskDto, getDeviceCodeList, backGetDeviceCodeList); - } - //分切机出下卷-行架取单轴 - else if (StrUtil.equals(taskDto.getTruss_type(), "3")) { -// inst_require3(taskDto, getDeviceCodeList, backGetDeviceCodeList); - } - flag = this.executeBusiness(taskDto, getDeviceCodeList, backGetDeviceCodeList); - return flag; + flag = this.executeReadyInst(taskDto); } else { - //去任务表中查询是否有前工位关联设备的就绪状态下的任务 - taskDtos = taskserver.queryTaskByStartDeviceCode(getDeviceCode); - if (ObjectUtil.isNotEmpty(taskDtos)) { + List taskDtoList = taskserver.queryTaskByDeviceCode(startDeviceCode); + if (ObjectUtil.isNotEmpty(taskDtoList)) { //按照优先级排序 优先级相等按照创建时间排序 - taskDtos = this.sortTask(taskDtos); - taskDto = taskDtos.get(0); - break; - } - } - } - //如果任务表中起点1或起点2中 无前工位取货点关联设备 - //就去查询任务表中查找起点1或起点2为后工位取货点关联设备的任务 - if (ObjectUtil.isEmpty(taskDto)) { - for (String backGetDeviceCode : backGetDeviceCodeList) { - //去任务表中查询是否有前工位关联设备的重新创建指令的任务 - List taskDtos = taskserver.queryTaskByNextAndIntStatus(backGetDeviceCode); - if (ObjectUtil.isNotEmpty(taskDtos)) { - //按照优先级排序 优先级相等按照创建时间排序 - taskDtos = this.sortTask(taskDtos); - taskDto = taskDtos.get(0); - flag = this.executeBusiness(taskDto, getDeviceCodeList, backGetDeviceCodeList); - return flag; - } else { - //去任务表中查询是否有后工位关联设备的就绪状态下的任务 - taskDtos = taskserver.queryTaskByBackDeviceCode(backGetDeviceCode); - if (ObjectUtil.isNotEmpty(taskDtos)) { - //按照优先级排序 优先级相等按照创建时间排序 - taskDtos = this.sortTask(taskDtos); - taskDto = taskDtos.get(0); - break; + taskDtoList = this.sortTask(taskDtoList); + for (int j = 0; j < taskDtoList.size(); j++) { + task = taskDtoList.get(j); + + // 9 行架任务 + if (ObjectUtil.isNotEmpty(task) && !StrUtil.equals(task.getTask_type(), "9")) { + task = null; + continue; + } + if (ObjectUtil.isNotEmpty(task)) break; } } } } - - if (!ObjectUtil.isEmpty(taskDto)) { - flag = this.executeReadyBusiness(taskDto, getDeviceCodeList, backGetDeviceCodeList); - if (flag) { - notCreateInstMessage = ""; - notCreateTaskMessage = ""; - } - } else { - notCreateTaskMessage = ""; - notCreateInstMessage = "未找到正常关联设备的任务!"; + if (!ObjectUtil.isEmpty(task)) { + flag = this.executeReadyTask(task); } } return flag; } - //执行重新生成分切机出双卷的任务 - public synchronized boolean inst_require1(TaskDto taskDto, List getDeviceCodeList, List backGetDeviceCodeList) { - boolean flag = false; + //执行已有就绪指令 + public synchronized boolean executeReadyInst(TaskDto taskDto) { //获取指令信息 Instruction instructionDto = instructionService.findByTaskcodeAndStatus(taskDto.getTask_code()); //获取指令表中的取货点1 @@ -530,136 +372,46 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl String next_device_code = instructionDto.getNext_device_code(); //获取指令表中的放货点2 String next_device_code2 = instructionDto.getNext_device_code2(); - //判断任务点位是否配置电气信号 + //判断位是否设置电气值 Device startDevice = deviceAppservice.findDeviceByCode(start_device_code); - Device startDevice2 = deviceAppservice.findDeviceByCode(start_device_code2); Device nextDevice = deviceAppservice.findDeviceByCode(next_device_code); - Device nextDevice2 = deviceAppservice.findDeviceByCode(next_device_code2); this.isSetAddress(startDevice); this.isSetAddress(nextDevice); - this.isSetAddress(startDevice2); - this.isSetAddress(nextDevice2); - - //修改指令状态 - instructionDto.setInstruction_status(InstructionStatusEnum.BUSY.getIndex()); - instructionDto.setUpdate_time(DateUtil.now()); - instructionService.update(instructionDto); - flag = true; - //下发电气信号 - this.sendSignal(instructionDto, taskDto); - //请求任务成功 - requireSucess = true; - return flag; - } - - //下发电气信号 - public synchronized void sendSignal(Instruction dto, TaskDto taskDto) { - logServer.deviceExecuteLog(this.getDeviceCode(), "", "", "开始下发电气信号,即下发电气指令信息为:" - + dto.toString()); - String start_device_code = dto.getStart_device_code(); - String next_device_code = dto.getNext_device_code(); - 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 start_device_code2 = dto.getStart_device_code2(); - String next_device_code2 = dto.getNext_device_code2(); - 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 map = new LinkedHashMap<>(); - map.put("to_onset1", start_addr2); - map.put("to_target1", next_addr2); - map.put("to_task1", dto.getInstruction_code()); - map.put("to_onset2", start_addr); - map.put("to_target2", next_addr); - map.put("to_task2", dto.getInstruction_code()); + map.put("to_onset1", start_addr); + map.put("to_target1", next_addr); + map.put("to_task", instructionDto.getInstruction_code()); map.put("to_type", taskDto.getTruss_type()); - map.put("to_command1", CommonFinalParam.ONE); - map.put("to_command2", CommonFinalParam.ONE); - this.writing(map); - logServer.deviceExecuteLog(device_code, "", "", dto.getInstruction_code() + "下发分切机出双卷任务"); - this.setNow_steps_type3(2); - } + map.put("to_empty_shaft_site", taskDto.getEmpty_shaft_site()); - - //执行重新生成指令的任务 - public synchronized boolean executeBusiness(TaskDto taskDto, List getDeviceCodeList, List backGetDeviceCodeList) { - boolean flag = false; - //任务类型 1.前工位任务 2.后工位任务 3.双工位任务 - String type = ""; - //获取指令信息 - Instruction instructionDto = instructionService.findByTaskcodeAndStatus(taskDto.getTask_code()); - //获取指令表中的取货点1 - String start_device_code = instructionDto.getStart_device_code(); - //获取指令表中的取货点2 - String start_device_code2 = instructionDto.getStart_device_code2(); - //获取指令表中的放货点1 - String next_device_code = instructionDto.getNext_device_code(); - //获取指令表中的放货点2 - String next_device_code2 = instructionDto.getNext_device_code2(); - //判断任务点位是否配置电气信号 - Device startDevice = deviceAppservice.findDeviceByCode(start_device_code); - Device startDevice2 = deviceAppservice.findDeviceByCode(start_device_code2); - Device nextDevice = deviceAppservice.findDeviceByCode(next_device_code); - Device nextDevice2 = deviceAppservice.findDeviceByCode(next_device_code2); - //如果指令表中的取货点1和取货点2 都不为空 则说明时下双工位任务 - if (StrUtil.isNotEmpty(start_device_code2) && StrUtil.isNotEmpty(start_device_code)) { - this.isSetAddress(startDevice); - this.isSetAddress(nextDevice); + if (StrUtil.isNotEmpty(start_device_code2)) { + Device startDevice2 = deviceAppservice.findDeviceByCode(start_device_code2); + Device nextDevice2 = deviceAppservice.findDeviceByCode(next_device_code2); this.isSetAddress(startDevice2); this.isSetAddress(nextDevice2); - type = "3"; - } else { - //判断指令表中的起点1 是否是前工位/后工位取货点的关联设备 - int headGetIndex = getDeviceCodeList.indexOf(start_device_code); - int backGetIndex = backGetDeviceCodeList.indexOf(start_device_code); - if (headGetIndex != -1) { - //前工位 - type = CommonFinalParam.ONE; - } else if (backGetIndex != -1) { - //后工位 - type = "2"; - } - this.isSetAddress(startDevice); - this.isSetAddress(nextDevice); + String start_addr2 = startDevice2.getExtraValue().get("address").toString(); + String next_addr2 = nextDevice2.getExtraValue().get("address").toString(); + map.put("to_onset2", start_addr2); + map.put("to_target2", next_addr2); } - - //修改指令状态 - instructionDto.setInstruction_status(InstructionStatusEnum.BUSY.getIndex()); - instructionDto.setUpdate_time(DateUtil.now()); + map.put("to_command", CommonFinalParam.ONE); try { - instructionService.update(instructionDto); - if (StrUtil.equals(type, CommonFinalParam.ONE)) { - this.setNow_steps_type1(1); - } - if (StrUtil.equals(type, "2")) { - this.setNow_steps_type2(1); - } - if (StrUtil.equals(type, "3")) { - this.setNow_steps_type3(1); - } - flag = true; + this.writing(map); } catch (Exception e) { - logServer.deviceExecuteLog(device_code, "", instructionDto.getInstruction_code(), "执行重新生成指令的任务失败,原因->" + e.getMessage()); + logServer.deviceExecuteLog(device_code, "", "", "下发指令:" + instructionDto.getInstruction_code() + ",指令取货点1:" + instructionDto.getStart_device_code() + + ",指令放货点1:" + instructionDto.getNext_device_code() + ",指令取货点2:" + instructionDto.getNext_device_code2() + ",指令放货点2:" + instructionDto.getNext_device_code2() + ",指令执行失败:" + e.getMessage()); } - - //下发电气信号 - this.sendSignalType(instructionDto, type); - //请求任务成功 - requireSucess = true; - return flag; + this.setRequireSucess(true); + return true; } + //执行就绪状态下的任务 - public synchronized boolean executeReadyBusiness(TaskDto taskDto, List getDeviceCodeList, List backGetDeviceCodeList) { - boolean flag = false; - //任务类型 1.前工位任务 2.后工位任务 3.双工位任务 - String type = ""; + public synchronized boolean executeReadyTask(TaskDto taskDto) { //获取任务表中的取货点1 String start_device_code = taskDto.getStart_device_code(); //获取任务表中的取货点2 @@ -671,54 +423,29 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl //判断任务点位是否配置电气信号 Device startDevice = deviceAppservice.findDeviceByCode(start_device_code); Device nextDevice = deviceAppservice.findDeviceByCode(next_device_code); - Device startDevice2 = deviceAppservice.findDeviceByCode(start_device_code2); - Device nextDevice2 = deviceAppservice.findDeviceByCode(next_device_code2); - logServer.deviceExecuteLog(this.getDeviceCode(), "", "", "" + - "执行就绪状态下的任务生成指令时:起点1为:" + start_device_code + "起点2为:" + start_device_code2 + ",任务信息为:" + taskDto.toString()); - //如果指令表中的取货点1和取货点2 都不为空 则说明时下双工位任务 - if (StrUtil.isNotEmpty(start_device_code2) && StrUtil.isNotEmpty(start_device_code)) { - type = "3"; - logServer.deviceExecuteLog(this.getDeviceCode(), "", "", "" + - "执行就绪状态下的任务生成指令时:起点1为:" + start_device_code + "起点2为:" + start_device_code2 + - "type值为:" + type + ",任务信息为:" + taskDto.toString()); - //判断四个点位是否都设置电气值 - this.isSetAddress(startDevice); - this.isSetAddress(nextDevice); - this.isSetAddress(startDevice2); - this.isSetAddress(nextDevice2); - } else { - //判断指令表中的起点1 是否是前工位/后工位取货点的关联设备 - int headGetIndex = getDeviceCodeList.indexOf(start_device_code); - int backGetIndex = backGetDeviceCodeList.indexOf(start_device_code); - if (headGetIndex != -1) { - //前工位 - type = CommonFinalParam.ONE; - } else if (backGetIndex != -1) { - //后工位 - type = "2"; - } - logServer.deviceExecuteLog(this.getDeviceCode(), "", "", "" + - "执行就绪状态下的任务生成指令时:起点1为:" + start_device_code + "起点2为:" + start_device_code2 - + "type值为:" + type + ",任务信息为:" + taskDto.toString()); - //判断单任务下的两个点位是否都设置电气值 - this.isSetAddress(startDevice); - this.isSetAddress(nextDevice); - } - + this.isSetAddress(startDevice); + this.isSetAddress(nextDevice); + String start_addr = startDevice.getExtraValue().get("address").toString(); + String next_addr = nextDevice.getExtraValue().get("address").toString(); + //下发电气信号 + Map map = new LinkedHashMap<>(); + map.put("to_onset1", start_addr); + map.put("to_target1", next_addr); + map.put("to_type", taskDto.getTruss_type()); + map.put("to_empty_shaft_site", taskDto.getEmpty_shaft_site()); + //创建指令 + Instruction instdto = new Instruction(); String taskid = taskDto.getTask_id(); String taskcode = taskDto.getTask_code(); String vehiclecode = taskDto.getVehicle_code(); String priority = taskDto.getPriority(); 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(); String remark = taskDto.getRemark(); String material = taskDto.getMaterial(); String quantity = taskDto.getQuantity(); - Instruction instdto = new Instruction(); instdto.setInstruction_id(IdUtil.simpleUUID()); instdto.setRoute_plan_code(route_plan_code); instdto.setRemark(remark); @@ -735,190 +462,52 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl instdto.setStart_point_code(start_point_code); instdto.setNext_point_code(next_point_code); instdto.setPriority(priority); - instdto.setInstruction_status(InstructionStatusEnum.READY.getIndex()); + instdto.setInstruction_status("0"); instdto.setExecute_device_code(start_point_code); - instdto.setStart_device_code2(start_device_code2); - instdto.setStart_point_code2(start_point_code2); - instdto.setNext_device_code2(next_device_code2); - instdto.setNext_point_code2(next_point_code2); - + if (StrUtil.isNotEmpty(start_device_code2)) { + String start_point_code2 = taskDto.getStart_point_code2(); + String next_point_code2 = taskDto.getNext_point_code2(); + //判断任务点位是否配置电气信号 + Device startDevice2 = deviceAppservice.findDeviceByCode(start_device_code2); + Device nextDevice2 = deviceAppservice.findDeviceByCode(next_device_code2); + this.isSetAddress(startDevice2); + this.isSetAddress(nextDevice2); + String start_addr2 = startDevice2.getExtraValue().get("address").toString(); + String next_addr2 = nextDevice2.getExtraValue().get("address").toString(); + instdto.setStart_device_code2(start_device_code2); + instdto.setStart_point_code2(start_point_code2); + instdto.setNext_device_code2(next_device_code2); + instdto.setNext_point_code2(next_point_code2); + map.put("to_onset2", start_addr2); + map.put("to_target2", next_addr2); + } try { - logServer.deviceExecuteLog(this.getDeviceCode(), "", "", "" + - "执行就绪状态下的任务生成指令时:起点1为:" + start_device_code + "起点2为:" + start_device_code2 - + "type值为:" + type + ",创建指令信息为:" + instdto.toString()); instructionService.create(instdto); - flag = true; } catch (Exception e) { notCreateInstMessage = e.getMessage(); logServer.deviceExecuteLog(device_code, "", instdto.getInstruction_code(), "指令创建失败,原因->" + e.getMessage()); } - //创建指令后修改任务状态 - taskDto.setTask_status(TaskStatusEnum.BUSY.getIndex()); + taskDto.setTask_status("1"); taskDto.setUpdate_time(DateUtil.now()); taskserver.update(taskDto); - - //下发电气信号 - this.sendSignalType(instdto, type); - + try { + map.put("to_task", instdto.getInstruction_code()); + map.put("to_command", CommonFinalParam.ONE); + this.writing(map); + } catch (Exception e) { + logServer.deviceExecuteLog(device_code, "", "", "下发指令:" + instdto.getInstruction_code() + ",指令取货点1:" + instdto.getStart_device_code() + + ",指令放货点1:" + instdto.getNext_device_code() + ",指令取货点2:" + instdto.getNext_device_code2() + ",指令放货点2:" + instdto.getNext_device_code2() + ",指令执行失败:" + e.getMessage()); + } //请求任务成功 - requireSucess = true; - return flag; - } - - //下发电气信号 - public synchronized void sendSignalType(Instruction dto, String type) { - logServer.deviceExecuteLog(this.getDeviceCode(), "", "", "开始下发电气信号,即下发电气指令信息为:" - + dto.toString() + ",type = " + type); - String start_device_code = dto.getStart_device_code(); - String next_device_code = dto.getNext_device_code(); - 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(); - List list = new ArrayList(); - if (StrUtil.equals(type, CommonFinalParam.ONE)) { - Map map1 = new HashMap(); - map1.put("code", "to_onset1"); - map1.put("value", start_addr); - list.add(map1); - Map map2 = new HashMap(); - map2.put("code", "to_target1"); - map2.put("value", next_addr); - list.add(map2); - Map map3 = new HashMap(); - map3.put("code", "to_task1"); - map3.put("value", dto.getInstruction_code()); - list.add(map3); - Map map4 = new HashMap(); - map4.put("code", "to_type"); - map4.put("value", CommonFinalParam.ONE); - list.add(map4); - Map map5 = new HashMap(); - map5.put("code", "to_command1"); - map5.put("value", CommonFinalParam.ONE); - list.add(map5); - HashMap map6 = new HashMap() {{ - put("code", "to_command2"); - put("value", "0"); - }}; - list.add(map6); - this.writing(list); - logServer.deviceExecuteLog(device_code, "", "", dto.getInstruction_code() + "下发前工位任务"); - -// this.writing("to_onset1", start_addr); -// this.writing("to_target1", next_addr); -// this.writing("to_task1", dto.getInstruction_code()); -// this.writing("to_command1", CommonFinalParam.ONE); -// this.writing("to_type", CommonFinalParam.ONE); - this.setNow_steps_type1(2); - } else if (StrUtil.equals(type, "2")) { - Map map1 = new HashMap(); - map1.put("code", "to_onset2"); - map1.put("value", start_addr); - list.add(map1); - Map map2 = new HashMap(); - map2.put("code", "to_target2"); - map2.put("value", next_addr); - list.add(map2); - Map map3 = new HashMap(); - map3.put("code", "to_task2"); - map3.put("value", dto.getInstruction_code()); - list.add(map3); - Map map4 = new HashMap(); - map4.put("code", "to_type"); - map4.put("value", "2"); - list.add(map4); - Map map5 = new HashMap(); - map5.put("code", "to_command2"); - map5.put("value", CommonFinalParam.ONE); - list.add(map5); - HashMap map6 = new HashMap() {{ - put("code", "to_command1"); - put("value", "0"); - }}; - list.add(map6); - this.writing(list); - logServer.deviceExecuteLog(device_code, "", "", dto.getInstruction_code() + "下发后工位任务"); - -// this.writing("to_onset2", start_addr); -// this.writing("to_target2", next_addr); -// this.writing("to_task2", dto.getInstruction_code()); -// this.writing("to_command2", CommonFinalParam.ONE); -// this.writing("to_type", "2"); - this.setNow_steps_type2(2); - } else if (StrUtil.equals(type, "3")) { - String start_device_code2 = dto.getStart_device_code2(); - String next_device_code2 = dto.getNext_device_code2(); - 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 map1 = new HashMap(); - map1.put("code", "to_onset1"); - map1.put("value", start_addr2); - list.add(map1); - Map map2 = new HashMap(); - map2.put("code", "to_target1"); - map2.put("value", next_addr2); - list.add(map2); - Map map3 = new HashMap(); - map3.put("code", "to_task1"); - map3.put("value", dto.getInstruction_code()); - list.add(map3); - Map map4 = new HashMap(); - map4.put("code", "to_onset2"); - map4.put("value", start_addr); - list.add(map4); - Map map5 = new HashMap(); - map5.put("code", "to_target2"); - map5.put("value", next_addr); - list.add(map5); - Map map6 = new HashMap(); - map6.put("code", "to_task2"); - map6.put("value", dto.getInstruction_code()); - list.add(map6); - Map map7 = new HashMap(); - map7.put("code", "to_type"); - map7.put("value", "3"); - list.add(map7); - Map map8 = new HashMap(); - map8.put("code", "to_command1"); - map8.put("value", CommonFinalParam.ONE); - list.add(map8); - Map map9 = new HashMap(); - map9.put("code", "to_command2"); - map9.put("value", CommonFinalParam.ONE); - list.add(map9); - this.writing(list); - logServer.deviceExecuteLog(device_code, "", "", dto.getInstruction_code() + "下发双工位任务"); - - -// this.writing("to_onset1", start_addr2); -// this.writing("to_target1", next_addr2); -// this.writing("to_task1", dto.getInstruction_code()); -// this.writing("to_command1", CommonFinalParam.ONE); -// this.writing("to_onset2", start_addr); -// this.writing("to_target2", next_addr); -// this.writing("to_task2", dto.getInstruction_code()); -// this.writing("to_command2", CommonFinalParam.ONE); -// this.writing("to_type", "3"); - this.setNow_steps_type3(2); - } - - if (task1 != Integer.parseInt(dto.getInstruction_code()) || task2 != Integer.parseInt(dto.getInstruction_code())) { - this.writing(list); - logServer.deviceExecuteLog(device_code, "", "", dto.getInstruction_code() + "再次下发电气信号"); - } - + this.setRequireSucess(true); + return true; } //判断点位是否设置电气值 public void isSetAddress(Device device) { if (ObjectUtil.isEmpty(device.getExtraValue().get("address"))) { - logServer.deviceExecuteLog(device_code, "", "task1:" + task1 + ",task2:" + task2, "设备:" + device.getDevice_code() + "未设置电气调度号!"); + logServer.deviceExecuteLog(device_code, "", "task:" + task, "设备:" + device.getDevice_code() + "未设置电气调度号!"); notCreateInstMessage = "设备:" + device.getDevice_code() + "未设置电气调度号!"; throw new BadRequestException("设备:" + device.getDevice_code() + "未设置电气调度号!"); } @@ -974,25 +563,13 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl } public void writing1(int command) { - String to_command1 = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_command1; + String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() + + "." + ItemProtocol.item_to_command; //String opcservcerid = this.getDevice().getOpc_server_id(); //Server server = ReadUtil.getServer(opcservcerid); Map itemMap = new HashMap(); - itemMap.put(to_command1, command); - this.control(itemMap); - - } - - public void writing2(int command) { - String to_command2 = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_command2; - - //String opcservcerid = this.getDevice().getOpc_server_id(); -//Server server = ReadUtil.getServer(opcservcerid); - Map itemMap = new HashMap(); - itemMap.put(to_command2, command); + itemMap.put(to_command, command); this.control(itemMap); } @@ -1062,8 +639,7 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl JSONObject jo = new JSONObject(); String move_1 = ""; String move_2 = ""; - String action1 = ""; - String action2 = ""; + String action = ""; String walk_y = ""; String mode = ""; String status = ""; @@ -1080,15 +656,6 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl mode = "运行中"; } - if (this.getStatus() == 0) { - status = "0"; - } else if (this.getStatus() == 1) { - status = "待机"; - } else if (this.getStatus() == 2) { - status = "生产中"; - } else if (this.getStatus() == 3) { - status = "故障"; - } if (this.getMove1() == 0) { move_1 = "无货"; @@ -1102,24 +669,22 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl move_2 = "有货"; } - if (this.getAction1() == 1) { - action1 = "取货中"; - } else if (this.getAction1() == 2) { - action1 = "取货完成"; - } else if (this.getAction1() == 3) { - action1 = "放货中"; - } else if (this.getAction1() == 4) { - action1 = "放货完成"; - } - - if (this.getAction2() == 1) { - action2 = "取货中"; - } else if (this.getAction2() == 2) { - action2 = "取货完成"; - } else if (this.getAction2() == 3) { - action2 = "放货中"; - } else if (this.getAction2() == 4) { - action2 = "放货完成"; + if (this.getAction() == 1) { + action = "前工位取货中"; + } else if (this.getAction() == 2) { + action = "前工位取货完成"; + } else if (this.getAction() == 3) { + action = "前工位放货中"; + } else if (this.getAction() == 4) { + action = "前工位放货完成"; + } else if (this.getAction() == 5) { + action = "后工位取货中"; + } else if (this.getAction() == 6) { + action = "后工位取货完成"; + } else if (this.getAction() == 7) { + action = "后工位取货中"; + } else if (this.getAction() == 8) { + action = "后工位放货完成"; } if (this.getWalk_y() == 0) { @@ -1142,20 +707,16 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl jo.put("device_name", this.getDevice().getDevice_name()); jo.put("mode", mode); - jo.put("status", status); jo.put("move_1", move_1); jo.put("move_2", move_2); - jo.put("action_1", action1); - jo.put("action_2", action2); + jo.put("action", action); jo.put("walk_y", walk_y); jo.put("error", this.getError()); - jo.put("task1", this.getTask1()); - jo.put("task2", this.getTask2()); + jo.put("task", this.getTask()); jo.put("isOnline", this.getIsonline()); jo.put("isError", this.getIserror()); jo.put("is_disable1", this.getIs_disable()); jo.put("is_disable", is_disable); - jo.put("message", this.messageInfo(type)); jo.put("is_click", true); jo.put("driver_type", "slit_two_manipulator"); jo.put("notCreateTaskMessage", notCreateTaskMessage); @@ -1164,44 +725,21 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl return jo; } - public String messageInfo(int type) { - String set_type = ""; - JSONObject map = new JSONObject(); - if (type == 1) { - set_type = String.valueOf(now_steps_type1); - map.put("0", "前工位单任务未执行"); - map.put(CommonFinalParam.ONE, "前工位单任务改变指令状态"); - map.put("2", "前工位单任务下发电气任务信息"); - map.put("3", "单任务前工位允许取货"); - map.put("4", "单任务前工位取货完成"); - map.put("5", "单任务前工位允许放货"); - map.put("6", "单任务前工位放货完成"); - } else if (type == 2) { - set_type = String.valueOf(now_steps_type2); - map.put("0", "后工位单任务未执行"); - map.put(CommonFinalParam.ONE, "后工位单任务改变指令状态"); - map.put("2", "后工位单任务下发电气任务信息"); - map.put("3", "单任务后工位允许取货"); - map.put("4", "单任务后工位取货完成"); - map.put("5", "单任务后工位允许放货"); - map.put("6", "单任务后工位放货完成"); - } else if (type == 3) { - set_type = String.valueOf(now_steps_type3); - map.put("0", "双任务未执行"); - map.put(CommonFinalParam.ONE, "双任务改变指令状态"); - map.put("2", "双任务下发电气任务信息"); - map.put("3", "双任务后工位允许取货"); - map.put("4", "双任务后工位取货完成"); - map.put("5", "双任务前工位允许取货"); - map.put("6", "双任务前工位取货完成"); - map.put("7", "双任务后工位允许放货"); - map.put("8", "双任务后工位放货完成"); - map.put("9", "双任务前工位允许放货"); - map.put("10", "双任务前工位放货完成"); + 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 { - return "未执行任务"; + inst = instructionService.findByCodeFromCache(String.valueOf(task)); + return inst; } - return map.getString(set_type); + return null; } @Override diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/subvolume_weighing_station/ItemProtocol.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/subvolume_weighing_station/ItemProtocol.java index b276ae9dc..6ef3cec36 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/subvolume_weighing_station/ItemProtocol.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/subvolume_weighing_station/ItemProtocol.java @@ -75,18 +75,18 @@ public class ItemProtocol { public static List getReadableItemDtos() { ArrayList list = new ArrayList(); - list.add(new ItemDto(item_heartbeat, "心跳", "251")); - list.add(new ItemDto(item_mode, "工作模式", "7990")); - list.add(new ItemDto(item_move, "光电信号", "550")); - list.add(new ItemDto(item_action, "取放信号", "450")); - list.add(new ItemDto(item_error, "故障", "8055")); - list.add(new ItemDto(item_weight, "重量", "8055")); + list.add(new ItemDto(item_heartbeat, "心跳", "DB17.B0")); + list.add(new ItemDto(item_mode, "工作模式", "DB17.B1")); + list.add(new ItemDto(item_move, "光电信号", "DB17.B2")); + list.add(new ItemDto(item_action, "取放信号", "DB17.B3")); + list.add(new ItemDto(item_error, "故障", "DB17.B4")); + list.add(new ItemDto(item_weight, "重量", "DB17.B5")); return list; } public static List getWriteableItemDtos() { ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command, "下发命令", "40226")); + list.add(new ItemDto(item_to_command, "下发命令", "DB18.W0")); return list; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/subvolume_weighing_station/SubvolumeWeighingStationDefination.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/subvolume_weighing_station/SubvolumeWeighingStationDefination.java index 4eb38d200..df49bdc29 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/subvolume_weighing_station/SubvolumeWeighingStationDefination.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/subvolume_weighing_station/SubvolumeWeighingStationDefination.java @@ -43,7 +43,7 @@ public class SubvolumeWeighingStationDefination implements OpcDeviceDriverDefina @Override public List getFitDeviceTypes() { List types = new LinkedList(); - types.add(DeviceType.station); + types.add(DeviceType.conveyor); return types; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/waste_foil_weighing_station/ItemProtocol.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/waste_foil_weighing_station/ItemProtocol.java index 3a3d254cf..cb678f0f9 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/waste_foil_weighing_station/ItemProtocol.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/waste_foil_weighing_station/ItemProtocol.java @@ -79,19 +79,19 @@ public class ItemProtocol { public static List getReadableItemDtos() { ArrayList list = new ArrayList(); - list.add(new ItemDto(item_heartbeat, "心跳", "251")); - list.add(new ItemDto(item_mode, "工作模式", "7990")); - list.add(new ItemDto(item_move, "光电信号", "550")); - list.add(new ItemDto(item_action, "取放信号", "450")); - list.add(new ItemDto(item_error, "故障", "8055")); - list.add(new ItemDto(item_weight, "重量", "8055")); - list.add(new ItemDto(item_old_weight, "上次重量", "8055")); + list.add(new ItemDto(item_heartbeat, "心跳", "DB19.B0")); + list.add(new ItemDto(item_mode, "工作模式", "DB19.B1")); + list.add(new ItemDto(item_move, "光电信号", "DB19.B2")); + list.add(new ItemDto(item_action, "取放信号", "DB19.B3")); + list.add(new ItemDto(item_error, "故障", "DB19.B4")); + list.add(new ItemDto(item_weight, "重量", "DB19.B5")); + list.add(new ItemDto(item_old_weight, "上次重量", "DB19.B6")); return list; } public static List getWriteableItemDtos() { ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command, "下发命令", "40226")); + list.add(new ItemDto(item_to_command, "下发命令", "DB20.W0")); return list; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/waste_foil_weighing_station/WasteFoilWeighingStationDefination.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/waste_foil_weighing_station/WasteFoilWeighingStationDefination.java index 7a15d6c3b..b72ace924 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/waste_foil_weighing_station/WasteFoilWeighingStationDefination.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/waste_foil_weighing_station/WasteFoilWeighingStationDefination.java @@ -43,7 +43,7 @@ public class WasteFoilWeighingStationDefination implements OpcDeviceDriverDefina @Override public List getFitDeviceTypes() { List types = new LinkedList(); - types.add(DeviceType.station); + types.add(DeviceType.conveyor); return types; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/enums/AcsToLmsApplyTaskTypeEnum.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/enums/AcsToLmsApplyTaskTypeEnum.java new file mode 100644 index 000000000..54f94586f --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/enums/AcsToLmsApplyTaskTypeEnum.java @@ -0,0 +1,20 @@ +package org.nl.acs.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum AcsToLmsApplyTaskTypeEnum { + LABEL_BIND("1", "捆轧贴标"), + + AGV("2", "AGV任务"); + /** + * 索引 + */ + private String type; + /** + * 编码 + */ + private String value; +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyManipulatorActionRequest.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyManipulatorActionRequest.java index 840404ff1..7aa96e4bb 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyManipulatorActionRequest.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyManipulatorActionRequest.java @@ -1,4 +1,34 @@ package org.nl.acs.ext.wms.data; -public class ApplyManipulatorActionRequest { +import lombok.Data; + +@Data +public class ApplyManipulatorActionRequest extends BaseRequest { + private String vehicle_code; + private String device_code; + /** + * 1- + * 2-反馈新放货点 + * 3-反馈新取货点 + * 4-反馈二次放货点 + * 6-套轴申请 + * 7-套轴完成 + * 8-拔轴完成 + */ + private String type; + + /** + * 行架任务号 + */ + private String task_code; + + /** + * 重量 + */ + private String weight; + + /** + * 条码 + */ + private String barcode; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyManipulatorActionResponse.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyManipulatorActionResponse.java new file mode 100644 index 000000000..59ed81914 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyManipulatorActionResponse.java @@ -0,0 +1,11 @@ +package org.nl.acs.ext.wms.data; + +import lombok.Data; + +import java.util.HashMap; +import java.util.Map; + +@Data +public class ApplyManipulatorActionResponse extends BaseResponse{ + private Map data = new HashMap(); +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyPlugPullSitResponse.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyPlugPullSitResponse.java new file mode 100644 index 000000000..eeae4520d --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyPlugPullSitResponse.java @@ -0,0 +1,11 @@ +package org.nl.acs.ext.wms.data; + +import lombok.Data; + +import java.util.HashMap; +import java.util.Map; + +@Data +public class ApplyPlugPullSitResponse extends BaseResponse { + private Map data = new HashMap(); +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyPlugPullSiteRequest.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyPlugPullSiteRequest.java new file mode 100644 index 000000000..0df1f9734 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyPlugPullSiteRequest.java @@ -0,0 +1,30 @@ +package org.nl.acs.ext.wms.data; + +import lombok.Data; + +@Data +public class ApplyPlugPullSiteRequest extends BaseRequest { + private String vehicle_code; + private String device_code; + /** + * 1-申请套管 + * 2-套管完成 + * 3-拔轴完成 + */ + private String type; + + /** + * 行架任务号 + */ + private String task_code; + + /** + * 重量 + */ + private String weight; + + /** + * 条码 + */ + private String barcode; +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/ApplyLabelingAndBindingRequest.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/ApplyLabelingAndBindingRequest.java index ccf915279..d058547b1 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/ApplyLabelingAndBindingRequest.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/ApplyLabelingAndBindingRequest.java @@ -7,9 +7,9 @@ public class ApplyLabelingAndBindingRequest extends BaseRequest { private String vehicle_code; private String device_code; /** - * 1:贴标申请 - * 2:捆扎申请 - * 3:烘箱 + * 1:贴标、捆扎申请 + * 2:烘箱 + * */ private String type; diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java index 9ef7e3099..1677c462f 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java @@ -3,20 +3,16 @@ package org.nl.acs.ext.wms.service; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import org.nl.acs.ext.wms.data.ApplyGreenFoilButtonRequest; -import org.nl.acs.ext.wms.data.ApplyGreenFoilButtonResponse; -import org.nl.acs.ext.wms.data.BlankingButtonRequest; -import org.nl.acs.ext.wms.data.BlankingButtonResponse; +import org.nl.acs.ext.wms.data.*; import org.nl.acs.ext.wms.data.one.*; +import org.nl.acs.ext.wms.data.one.ApplyLabelingAndBindingRequest; +import org.nl.acs.ext.wms.data.one.ApplyLabelingAndBindingResponse; +import org.nl.acs.ext.wms.data.one.BaseRequest; +import org.nl.acs.instruction.domain.Instruction; public interface AcsToWmsService { - /** - * ACS向WMS申请任务 - * @param jo - * @return - */ - String applyTaskToWms(JSONObject jo); + /** * 向WMS反馈任务状态 @@ -96,10 +92,8 @@ public interface AcsToWmsService { /** * ACS向WMS申请任务 - * @param request - * @return */ - String applyTask(BaseRequest request); + String applyTaskToWms(JSONObject jo); /** * ACS向WMS反馈任务状态 @@ -129,4 +123,26 @@ public interface AcsToWmsService { */ BlankingButtonResponse applyBlankButtonTask(BlankingButtonRequest param); + /** + * 向lms申请反馈 + * @param param + * @return + */ + ApplyManipulatorActionResponse applyManipulatorActionRequest(ApplyManipulatorActionRequest param); + + /** + * 向lms申请套管工位请求 + * @param param + * @return + */ + ApplyPlugPullSitResponse applyPlugPullSiteRequest(ApplyPlugPullSiteRequest param); + + + /** + * 查询站点有无货状态 + * @param inst + * @return + */ + JSONObject queryStationState(Instruction inst); + } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java index 109a6feae..0e3cb2320 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java @@ -16,14 +16,15 @@ import org.nl.acs.address.service.AddressService; import org.nl.acs.address.service.dto.AddressDto; import org.nl.acs.device.service.DeviceService; import org.nl.acs.ext.wms.LmsUtil; +import org.nl.acs.ext.wms.data.*; import org.nl.acs.ext.wms.data.AcsToWmsData.applyTask.ApplyTaskRequest; import org.nl.acs.ext.wms.data.AcsToWmsData.applyTask.ApplyTaskResponse; -import org.nl.acs.ext.wms.data.ApplyGreenFoilButtonRequest; -import org.nl.acs.ext.wms.data.ApplyGreenFoilButtonResponse; -import org.nl.acs.ext.wms.data.BlankingButtonRequest; -import org.nl.acs.ext.wms.data.BlankingButtonResponse; import org.nl.acs.ext.wms.data.one.*; +import org.nl.acs.ext.wms.data.one.ApplyLabelingAndBindingRequest; +import org.nl.acs.ext.wms.data.one.ApplyLabelingAndBindingResponse; +import org.nl.acs.ext.wms.data.one.BaseRequest; import org.nl.acs.ext.wms.service.AcsToWmsService; +import org.nl.acs.instruction.domain.Instruction; import org.nl.acs.log.service.DeviceExecuteLogService; import org.nl.acs.task.service.TaskService; import org.nl.acs.task.service.dto.TaskDto; @@ -63,7 +64,40 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { @Override public String applyTaskToWms(JSONObject jo) { - return null; + try { + MDC.put(log_file_type, log_type); + log.info("applyTaskToWms-----输入参数{}", jo); + String wmsurl = paramService.findByCode(AcsConfig.WMSURL).getValue(); + AddressDto addressDto = addressService.findByCode("applyTaskToWms"); + String url = wmsurl + addressDto.getMethods_url(); + HttpResponse result2 = null; + try { + result2 = HttpRequest.post(url) + .header("Authorization", token) + .body(String.valueOf(jo)) + .execute(); + } catch (Exception e) { + String msg = e.getMessage(); + log.info("applyTaskToWms-----输出参数{}", msg); + //网络不通 + } + if(ObjectUtil.isEmpty(result2)){ + log.info("applyTaskToWms-----输出参数{}", "返回结果为空"); + return null; + } + String type = ""; + if (result2.getStatus() == 200) { + type = "info"; + } else { + type = "error"; + } + log.info("applyTaskToWms-----输出参数{}", result2.body()); + return result2.body(); + + } finally { + MDC.remove(log_file_type); + } + } @Override @@ -111,10 +145,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { return null; } - @Override - public String applyTask(BaseRequest request) { - return null; - } + @Override @@ -190,4 +221,97 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { MDC.remove(log_file_type); } } + + @Override + public ApplyPlugPullSitResponse applyPlugPullSiteRequest(ApplyPlugPullSiteRequest param) { + log.info("向LMS申请反馈,请求参数{}",param); + try { + MDC.put(log_file_type, log_type); + ApplyPlugPullSitResponse applyPlugPullSitResponse = new ApplyPlugPullSitResponse(); + if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), "1")) { + String wmsUrl = paramService.findByCode(AcsConfig.WMSURL).getValue(); + AddressDto addressDto = addressService.findByCode("applyPlugPullSiteRequest"); + String methods_url = addressDto.getMethods_url(); + String url = wmsUrl + methods_url; + log.info("ApplyPlugPullSiteRequest----请求参数:{}", JSONObject.toJSONString(param)); + try { +// String result = ""; + String result = HttpRequest.post(url) + .body(JSON.toJSONString(param)) + .execute().body(); + JSONObject jsonObject = JSONObject.parseObject(result); + log.info("ApplyPlugPullSitResponse----返回参数{}", result); + applyPlugPullSitResponse = JSONObject.toJavaObject(jsonObject, ApplyPlugPullSitResponse.class); + } catch (Exception e) { + JSONObject map = new JSONObject(); + map.put("status", 400); + map.put("message", e.getMessage()); + return JSONObject.toJavaObject(map, ApplyPlugPullSitResponse.class); + } + } + return applyPlugPullSitResponse; + } finally { + MDC.remove(log_file_type); + } + } + + @Override + public ApplyManipulatorActionResponse applyManipulatorActionRequest(ApplyManipulatorActionRequest param) { + log.info("向LMS申请反馈,请求参数{}", param); + try { + MDC.put(log_file_type, log_type); + ApplyManipulatorActionResponse applyManipulatorActionResponse = new ApplyManipulatorActionResponse(); + if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), "1")) { + String wmsUrl = paramService.findByCode(AcsConfig.WMSURL).getValue(); + AddressDto addressDto = addressService.findByCode("applyManipulatorAction"); + String methods_url = addressDto.getMethods_url(); + String url = wmsUrl + methods_url; + log.info("ApplyManipulatorActionRequest----请求参数:{}", JSONObject.toJSONString(param)); + try { +// String result = ""; + String result = HttpRequest.post(url) + .body(JSON.toJSONString(param)) + .execute().body(); + JSONObject jsonObject = JSONObject.parseObject(result); + log.info("ApplyManipulatorActionResponse----返回参数{}", result); + applyManipulatorActionResponse = JSONObject.toJavaObject(jsonObject, ApplyManipulatorActionResponse.class); + } catch (Exception e) { + JSONObject map = new JSONObject(); + map.put("status", 400); + map.put("message", e.getMessage()); + return JSONObject.toJavaObject(map, ApplyManipulatorActionResponse.class); + } + } + return applyManipulatorActionResponse; + } finally { + MDC.remove(log_file_type); + + } + } + + + @Override + public JSONObject queryStationState(Instruction inst) { + try { + String wmsurl = paramService.findByCode(AcsConfig.WMSURL).getValue(); + AddressDto addressDto = addressService.findByCode("gccQueryStationState"); + String uri = wmsurl + addressDto.getMethods_url() + "?StartStationCode=" + inst.getStart_point_code() + "&EndStationCode=" + inst.getNext_point_code(); + + log.info("gccQueryStationState - 请求路径{}", uri); + String responseBody = HttpRequest + .get(uri) + .execute() + .body(); + log.info("gccQueryStationState - 响应参数{}", responseBody); + + return JSONObject.parseObject(responseBody); + } catch (Exception e) { + JSONObject result = new JSONObject(); + result.put("status", HttpStatus.BAD_REQUEST.value()); + result.put("message", e.getMessage()); + return result; + } + } + + } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java index 67aa1c66a..242dc8197 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java @@ -9,10 +9,14 @@ import com.baomidou.mybatisplus.core.toolkit.StringUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.domain.Device; +import org.nl.acs.device_driver.conveyor.siemens_conveyor.SiemensConveyorDeviceDriver; import org.nl.acs.device_driver.one_manipulator.box_package_manipulator.BoxPackageManipulatorDeviceDriver; import org.nl.acs.device_driver.conveyor.box_palletizing_manipulator.BoxPalletizingManipulatorDeviceDriver; import org.nl.acs.device_driver.paper_tube_device2.PaperTubeConveyor2DeviceDriver; import org.nl.acs.device_driver.two_conveyor.blank_manipulator.BlankManipulatorDeviceDriver; +import org.nl.acs.device_driver.two_conveyor.hongxiang_conveyor.HongXiangStationDeviceDriver; +import org.nl.acs.device_driver.two_conveyor.inflatable_shaft_library.InflatableShaftLibraryDeviceDriver; +import org.nl.acs.device_driver.two_conveyor.lamp_three_color.LampThreecolorDeviceDriver; import org.nl.acs.device_driver.two_conveyor.oven_manipulator.OvenGantryManipulatorDeviceDriver; import org.nl.acs.device_driver.two_conveyor.plug_pull_device_site.PlugPullDeviceSiteDeviceDriver; import org.nl.acs.device_driver.two_conveyor.subvolume_weighing_station.SubvolumeWeighingStationDriver; @@ -74,7 +78,51 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { @Override public PutActionResponse putAction(String jsonObject) throws Exception { - return null; + try { + MDC.put(log_file_type, log_type); + log.info("putAction--------------:输入参数" + jsonObject); + JSONArray datas = JSONArray.parseArray(jsonObject); + PutActionResponse response = new PutActionResponse(); + JSONArray errArr = new JSONArray(); + for (int i = 0; i < datas.size(); i++) { + String data = datas.get(i).toString(); + PutActionRequest request = JsonUtl.format(data, PutActionRequest.class); + String device_code = request.getDevice_code(); + String code = request.getCode(); + String value = request.getValue(); + Device device = deviceAppService.findDeviceByCode(device_code); + if (ObjectUtil.isEmpty(device)) { + throw new Exception("未找到对应设备:" + device_code); + } + InflatableShaftLibraryDeviceDriver inflatableShaftLibraryDeviceDriver; + HongXiangStationDeviceDriver hongXiangStationDeviceDriver; + LampThreecolorDeviceDriver lampThreecolorDeviceDriver; + SiemensConveyorDeviceDriver siemensConveyorDeviceDriver; + if (device.getDeviceDriver() instanceof HongXiangStationDeviceDriver) { + hongXiangStationDeviceDriver = (HongXiangStationDeviceDriver) device.getDeviceDriver(); + hongXiangStationDeviceDriver.writing(code, value); + } + if (device.getDeviceDriver() instanceof LampThreecolorDeviceDriver) { + lampThreecolorDeviceDriver = (LampThreecolorDeviceDriver) device.getDeviceDriver(); + lampThreecolorDeviceDriver.writing(code, value); + } + if (device.getDeviceDriver() instanceof SiemensConveyorDeviceDriver) { + siemensConveyorDeviceDriver = (SiemensConveyorDeviceDriver) device.getDeviceDriver(); + siemensConveyorDeviceDriver.writing(code, value); + } + if (device.getDeviceDriver() instanceof InflatableShaftLibraryDeviceDriver) { + inflatableShaftLibraryDeviceDriver = (InflatableShaftLibraryDeviceDriver) device.getDeviceDriver(); + inflatableShaftLibraryDeviceDriver.writing(code, value); + } + + } + response.setCode(200); + response.setMessage("success"); + log.info("putAction--------------:输出参数:" + response); + return response; + } finally { + MDC.remove(log_file_type); + } } @Override diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java index 2041e8b9f..2de58000d 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java @@ -1,8 +1,11 @@ package org.nl.acs.instruction.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.ListUtil; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.stream.CollectorUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -13,6 +16,7 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; @@ -38,6 +42,8 @@ import org.nl.acs.instruction.domain.InstructionMybatis; import org.nl.acs.instruction.enums.InstructionStatusEnum; import org.nl.acs.instruction.service.dto.InstructionDto; import org.nl.acs.instruction.service.dto.InstructionQueryParam; +import org.nl.acs.limit_regional.server.LimitRegionalService; +import org.nl.acs.limit_regional.server.dto.LimitRegionalDto; import org.nl.acs.opc.DeviceAppService; import org.nl.acs.opc.DeviceAppServiceImpl; import org.nl.acs.route.service.RouteLineService; @@ -104,6 +110,8 @@ public class InstructionServiceImpl extends CommonServiceImpl instructions = new CopyOnWriteArrayList(); @@ -445,6 +453,9 @@ public class InstructionServiceImpl extends CommonServiceImpl startExcludeDevice; + + /** + * 目标区域排除设备 + */ + private String next_exclude_device; + @TableField(exist = false) + private List nextExcludeDevice; + + /** + * 最大数量 + */ + private String max_num; + + /** + * 备注 + */ + private String remark; + + /** + * 是否启用 + */ + private String is_active; + + /** + * 创建者 + */ + @NotBlank + @TableField(fill = FieldFill.INSERT) + private String create_by; + + /** + * 创建时间 + */ + @NotBlank + @TableField(fill = FieldFill.INSERT) + private String create_time; + + /** + * 修改者 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + private String update_by; + + /** + * 修改时间 + */ + @NotBlank + @TableField(fill = FieldFill.INSERT_UPDATE) + private String update_time; + +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/limit_regional/rest/LimitRegionalController.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/limit_regional/rest/LimitRegionalController.java new file mode 100644 index 000000000..51b5b5092 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/limit_regional/rest/LimitRegionalController.java @@ -0,0 +1,66 @@ +package org.nl.acs.limit_regional.rest; + +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import org.nl.acs.limit_regional.server.LimitRegionalService; +import org.nl.common.logging.annotation.Log; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + + +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/acsRegional") +public class LimitRegionalController { + + @Autowired + private LimitRegionalService limitRegionalService; + + @GetMapping + @Log("分页查询流量限制") + public ResponseEntity query(@RequestParam Map whereJson, Pageable page) { + return new ResponseEntity<>(limitRegionalService.queryByPage(whereJson, page), HttpStatus.OK); + } + + @GetMapping("synchronous") + @Log("同步流量限制") + public ResponseEntity queryAll() { + limitRegionalService.queryAll(); + return new ResponseEntity<>( HttpStatus.OK); + } + + @PostMapping + @Log("新增流量限制") + public ResponseEntity add(@RequestBody JSONObject json) { + return new ResponseEntity<>(limitRegionalService.add(json), HttpStatus.OK); + } + + + @PutMapping + @Log("修改流量限制") + public ResponseEntity update(@RequestBody JSONObject json) { + limitRegionalService.update(json); + return new ResponseEntity<>( HttpStatus.OK); + } + + @DeleteMapping + @Log("删除流量限制") + public ResponseEntity del(@RequestBody String[] ids) { + limitRegionalService.del(ids); + return new ResponseEntity<>( HttpStatus.OK); + } + + @GetMapping("updateActive") + @Log("修改流量限制状态") + public ResponseEntity updateStatusById(@RequestParam Map whereJson) { + limitRegionalService.updateStatusById(whereJson); + return new ResponseEntity<>( HttpStatus.OK); + } + +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/limit_regional/server/LimitRegionalService.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/limit_regional/server/LimitRegionalService.java new file mode 100644 index 000000000..35b80d90f --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/limit_regional/server/LimitRegionalService.java @@ -0,0 +1,66 @@ +package org.nl.acs.limit_regional.server; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.nl.acs.common.base.CommonService; +import org.nl.acs.device.domain.Device; +import org.nl.acs.limit_regional.domain.LimitRegional; +import org.nl.acs.limit_regional.server.dto.LimitRegionalDto; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; + +@Service +public interface LimitRegionalService extends CommonService { + + /** + * 分页查询 + * @param whereJson + * @param page + * @return + */ + Map queryByPage(Map whereJson, Pageable page); + + /** + * 查询全部流量限制 + * @param whereJson + * @param page + * @return + */ + void queryAll(); + + /** + * 新增流量限制 + * @param json + * @return + */ + List add(JSONObject json); + + + /** + * 删除流量限制 + * @param json + */ + void del(String[] ids); + + /** + * 修改流量限制 + * @param json + */ + void update(JSONObject json); + + /** + * 修改流量限制状态 + * @param whereJson + */ + void updateStatusById(Map whereJson); + + /** + * 根绝起点目标区域查询流量限制 + * @param startdevice + * @param nextRegion + */ + LimitRegionalDto selectByReging(String startdevice, String nextRegion); +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/limit_regional/server/dto/LimitRegionalDto.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/limit_regional/server/dto/LimitRegionalDto.java new file mode 100644 index 000000000..9d379f98d --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/limit_regional/server/dto/LimitRegionalDto.java @@ -0,0 +1,78 @@ +package org.nl.acs.limit_regional.server.dto; + +import lombok.*; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; + +@Data +@Builder +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = false) +public class LimitRegionalDto implements Serializable { + + private static final long serialVersionUID = 1L; + + private String id; + + /** + * 起始区域 + */ + private String start_regional; + + /** + * 目标区域 + */ + private String next_regional; + + /** + * 起始区域排除设备 + */ + private String start_exclude_device; + private List startExcludeDevice; + + /** + * 目标区域排除设备 + */ + private String next_exclude_device; + private List nextExcludeDevice; + + /** + * 最大数量 + */ + private String max_num; + + /** + * 备注 + */ + private String remark; + + /** + * 是否启用 + */ + private String is_active; + + /** + * 创建者 + */ + private String create_by; + + /** + * 创建时间 + */ + private String create_time; + + /** + * 修改者 + */ + private String update_by; + + /** + * 修改时间 + */ + private String update_time; + +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/limit_regional/server/impl/LimitRegionalServiceImpl.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/limit_regional/server/impl/LimitRegionalServiceImpl.java new file mode 100644 index 000000000..e74b812ba --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/limit_regional/server/impl/LimitRegionalServiceImpl.java @@ -0,0 +1,147 @@ +package org.nl.acs.limit_regional.server.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.RandomUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.common.base.PageInfo; +import org.nl.acs.common.base.QueryHelpMybatisPlus; +import org.nl.acs.common.base.impl.CommonServiceImpl; +import org.nl.acs.device.domain.Device; +import org.nl.acs.limit_regional.domain.LimitRegional; +import org.nl.acs.limit_regional.server.LimitRegionalService; +import org.nl.acs.limit_regional.server.dto.LimitRegionalDto; +import org.nl.acs.limit_regional.server.mapper.LimitRegionalMapper; +import org.nl.acs.utils.ConvertUtil; +import org.nl.acs.utils.PageUtil; +import org.nl.common.utils.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.PostConstruct; +import java.util.*; + +@Service +@AllArgsConstructor +@Slf4j +@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) +public class LimitRegionalServiceImpl extends CommonServiceImpl implements LimitRegionalService { + + @Autowired + private LimitRegionalMapper limitRegionalMapper; + + private List dataList; + + + @Override + public Map queryByPage(Map whereJson, Pageable page) { + for (LimitRegional dto : dataList) { + String next_exclude_device = dto.getNext_exclude_device(); + String elementStr = next_exclude_device.replaceAll("[\\[\\] ]", ""); + String[] elements = elementStr.split(","); + List list = new ArrayList<>(); + list.addAll(Arrays.asList(elements)); + String start_exclude_device = dto.getStart_exclude_device(); + String elementStr1 = start_exclude_device.replaceAll("[\\[\\] ]", ""); + String[] elements1 = elementStr1.split(","); + List list1 = new ArrayList<>(); + list1.addAll(Arrays.asList(elements1)); + dto.setNextExcludeDevice(list); + dto.setStartExcludeDevice(list1); + } + JSONObject jsonObject = new JSONObject(); + jsonObject.put("content",dataList); + jsonObject.put("totalElements",dataList.size()); + return jsonObject; + } + + + + @Override + @PostConstruct + public void queryAll() { + dataList = limitRegionalMapper.selectList(null); + } + + + @Override + public List add(JSONObject json) { + LimitRegional limitRegional = new LimitRegional(); + limitRegional.setId(RandomUtil.randomString(8)); + limitRegional.setStart_regional(json.getString("start_regional")); + limitRegional.setNext_regional(json.getString("next_regional")); + limitRegional.setStart_exclude_device(json.getString("startExcludeDevice")); + limitRegional.setNext_exclude_device(json.getString("nextExcludeDevice")); + String max_num = json.getString("max_num"); + String regex = "\\d+"; + boolean isNumeric = max_num.matches(regex); + if(!isNumeric){ + throw new RuntimeException("最大数请输入纯数字"); + } + limitRegional.setMax_num(max_num); + limitRegional.setCreate_by("auto"); + limitRegional.setCreate_time(DateUtil.now()); + limitRegionalMapper.insert(limitRegional); + return null; + } + + + @Override + public void del(String[] ids) { + if(CollUtil.isEmpty(Arrays.asList(ids)) || ids.length < 1){ + return; + } + for (String id : ids) { + limitRegionalMapper.deleteById(id); + } + } + + + @Override + public void update(JSONObject json) { + LimitRegional limitRegional = new LimitRegional(); + String currentUsername = SecurityUtils.getCurrentUsername(); + limitRegional.setId(json.getString("id")); + limitRegional.setStart_regional(json.getString("start_regional")); + limitRegional.setNext_regional(json.getString("next_regional")); + limitRegional.setStart_exclude_device(json.getString("startExcludeDevice")); + limitRegional.setNext_exclude_device(json.getString("nextExcludeDevice")); + limitRegional.setMax_num(json.getString("max_num")); + limitRegional.setUpdate_by(currentUsername); + limitRegional.setUpdate_time(DateUtil.now()); + limitRegionalMapper.updateById(limitRegional); + } + + @Override + public void updateStatusById(Map whereJson) { + String id = whereJson.get("id").toString(); + if(StrUtil.isEmpty(id)){ + return; + } + LimitRegional limitRegional = new LimitRegional(); + limitRegional.setId(id); + limitRegional.setIs_active(whereJson.get("is_active").toString()); + limitRegional.setUpdate_by(SecurityUtils.getCurrentUsername()); + limitRegional.setUpdate_time(DateUtil.now()); + limitRegionalMapper.updateById(limitRegional); + } + + @Override + public LimitRegionalDto selectByReging(String startRegion, String nextRegion) { + for (LimitRegional limitRegional : dataList) { + if (startRegion.equals(limitRegional.getStart_regional()) && nextRegion.equals(limitRegional.getNext_regional())){ + return ConvertUtil.convert(limitRegional, LimitRegionalDto.class); + } + } + return null; + } +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/limit_regional/server/mapper/LimitRegionalMapper.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/limit_regional/server/mapper/LimitRegionalMapper.java new file mode 100644 index 000000000..3a4a7d25c --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/limit_regional/server/mapper/LimitRegionalMapper.java @@ -0,0 +1,12 @@ +package org.nl.acs.limit_regional.server.mapper; + +import org.apache.ibatis.annotations.Mapper; +import org.nl.acs.common.base.CommonMapper; +import org.nl.acs.device.domain.Device; +import org.nl.acs.limit_regional.domain.LimitRegional; +import org.springframework.stereotype.Repository; + +@Repository +public interface LimitRegionalMapper extends CommonMapper { + +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java index eb481c836..1f245e4c4 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java @@ -235,7 +235,6 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC if (log.isWarnEnabled()) { log.warn("{} 所有内容都为空, all_null:{} ,暂定{}s", tag, all_null, 5000 + random); } - ThreadUtl.sleep((long) (5000 + random)); } else if (this.all_null < 6) { if (log.isWarnEnabled()) { diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/service/dto/OpcServerManageDto.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/service/dto/OpcServerManageDto.java index f9ea7ae30..7acf41ee5 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/service/dto/OpcServerManageDto.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/service/dto/OpcServerManageDto.java @@ -13,7 +13,7 @@ public class OpcServerManageDto { private String password; private String prog_id; private String cls_id; - private String domain; + private String domain = ""; public String getOpc_code() { return this.opc_code; diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/rest/TaskController.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/rest/TaskController.java index b70a5f062..72873f1fb 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/rest/TaskController.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/rest/TaskController.java @@ -1,5 +1,6 @@ package org.nl.acs.task.rest; +import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaIgnore; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; @@ -60,8 +61,7 @@ public class TaskController { @PostMapping @Log("新增任务") - - //@PreAuthorize("@el.check('task:add')") + //@SaCheckPermission("task:add") public ResponseEntity create(@Validated @RequestBody TaskDto dto) throws Exception { taskService.create(dto); return new ResponseEntity<>(HttpStatus.CREATED); diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/TaskService.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/TaskService.java index fa78c9417..d29f850d9 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/TaskService.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/TaskService.java @@ -386,10 +386,9 @@ public interface TaskService extends CommonService { * 根据终点设备编号查询当前是否有就绪任务 * * @param device_code - * @param index * @return */ - TaskDto findByEndCodeAndReady(String device_code, String index); + TaskDto findByEndCodeAndReady(String device_code); /** diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/dto/TaskDto.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/dto/TaskDto.java index a68ce5c8c..823677906 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/dto/TaskDto.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/dto/TaskDto.java @@ -1,5 +1,6 @@ package org.nl.acs.task.service.dto; +import com.alibaba.fastjson.JSONObject; import lombok.Data; import org.nl.acs.common.base.CommonFinalParam; @@ -306,9 +307,15 @@ public class TaskDto implements Serializable { * 交互字段 */ private String interaction_json; + private JSONObject interactionJson; /** * 行架任务类型 */ private String truss_type; + + /** + * 空轴位 + */ + private String empty_shaft_site; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java index ee7b36e10..9cb91930a 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; +import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -71,6 +72,7 @@ import org.springframework.data.domain.Pageable; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.util.*; import java.util.concurrent.CopyOnWriteArrayList; import java.util.regex.Matcher; @@ -473,6 +475,7 @@ public class TaskServiceImpl extends CommonServiceImpl impleme public void create(TaskDto dto) throws Exception { dto = foramte(dto); + dto.setInteraction_json(ObjectUtil.isNotEmpty(dto.getInteractionJson()) ? dto.getInteractionJson().toJSONString() : ""); if (!StrUtil.isEmpty(dto.getVehicle_code())) { TaskDto vehicle_dto = this.findByContainer(dto.getVehicle_code()); if (vehicle_dto != null) { @@ -555,8 +558,8 @@ public class TaskServiceImpl extends CommonServiceImpl impleme if (StrUtil.equals(DeviceType.conveyor.toString(), nextDeviceType)) { // if (nextdevice.getDeviceDriver() instanceof - // StandardOrdinarySiteDeviceDriver) { - // standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) + // XgAgvCarDeviceDriver) { + // standardOrdinarySiteDeviceDriver = (XgAgvCarDeviceDriver) // nextdevice.getDeviceDriver(); // if (nextdevice.getHas_goods() != 0) { // throw new Exception("任务终点需满足无货!"); @@ -1000,11 +1003,11 @@ public class TaskServiceImpl extends CommonServiceImpl impleme @Override - public TaskDto findByEndCodeAndReady(String device_code, String index) { + public TaskDto findByEndCodeAndReady(String device_code) { Optional optionalTask = tasks.stream() .filter(task -> StrUtil.equals(task.getNext_device_code(), device_code) && StrUtil.equals(task.getTask_status(), TaskStatusEnum.READY.getIndex()) - && StrUtil.equals(task.getTask_type(), index)) + ) .findFirst(); return optionalTask.orElse(null); } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/config/thread/ThreadPoolExecutorUtil.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/config/thread/ThreadPoolExecutorUtil.java index 00c1bfeee..c7f5954c7 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/config/thread/ThreadPoolExecutorUtil.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/config/thread/ThreadPoolExecutorUtil.java @@ -17,6 +17,7 @@ package org.nl.config.thread; import org.nl.config.SpringContextHolder; +import org.springframework.stereotype.Component; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; @@ -29,6 +30,7 @@ import java.util.concurrent.TimeUnit; */ public class ThreadPoolExecutorUtil { + public static ThreadPoolExecutor getPoll(){ AsyncTaskProperties properties = SpringContextHolder.getBean(AsyncTaskProperties.class); return new ThreadPoolExecutor( diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/menu/SysMenuController.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/menu/SysMenuController.java index cbe1c4857..ff4a7a80f 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/menu/SysMenuController.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/menu/SysMenuController.java @@ -116,7 +116,6 @@ public class SysMenuController { } @Log("删除菜单") - @DeleteMapping @SaCheckPermission("menu:del") public ResponseEntity delete(@RequestBody Set ids) { diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/config/JobRunner.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/config/JobRunner.java index a1334e810..2504f2f57 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/config/JobRunner.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/config/JobRunner.java @@ -17,7 +17,7 @@ import java.util.List; @Component @RequiredArgsConstructor @Order(100) -@ConditionalOnProperty(value = "spring.profiles.active",havingValue = "prod") +@ConditionalOnProperty(value = "spring.profiles.active",havingValue = "dev") public class JobRunner implements ApplicationRunner { private static final Logger log = LoggerFactory.getLogger(JobRunner.class); private final ISysQuartzJobService quartzJobService; diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoCreateInst.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoCreateInst.java index 06a64238f..2c8209e33 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoCreateInst.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoCreateInst.java @@ -1,14 +1,21 @@ package org.nl.system.service.quartz.task; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; import org.nl.acs.common.base.CommonFinalParam; +import org.nl.acs.device.domain.Device; +import org.nl.acs.instruction.domain.InstructionMybatis; import org.nl.acs.instruction.enums.InstructionStatusEnum; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.instruction.domain.Instruction; +import org.nl.acs.limit_regional.server.LimitRegionalService; +import org.nl.acs.limit_regional.server.dto.LimitRegionalDto; import org.nl.acs.opc.DeviceAppService; import org.nl.acs.opc.DeviceAppServiceImpl; import org.nl.acs.route.service.RouteLineService; @@ -38,6 +45,7 @@ public class AutoCreateInst { InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class); RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineService.class); DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); + LimitRegionalService limitRegionalService = SpringContextHolder.getBean(LimitRegionalService.class); List list = taskserver.queryAllByStatus("0"); for (int i = 0; i < list.size(); i++) { TaskDto acsTask = list.get(i); @@ -173,6 +181,81 @@ public class AutoCreateInst { } else { instdto.setAgv_inst_type("4"); } + Device startdevice = appService.findDeviceByCode(start_device_code); + Device nextdevice = appService.findDeviceByCode(next_device_code); + String startRegion = startdevice.getRegion(); + String nextRegion = nextdevice.getRegion(); + int count = 0; + boolean startRegionalExit = true; + boolean nextRegionalExit = true; + //控制指令生成 + LimitRegionalDto limitRegionalDtos = limitRegionalService.selectByReging(startRegion, nextRegion); + if (ObjectUtil.isNotEmpty(limitRegionalDtos)) { + String next_exclude_device = limitRegionalDtos.getNext_exclude_device(); + if (StrUtil.isNotEmpty(next_exclude_device)) { + String content = next_exclude_device.substring(1, next_exclude_device.length() - 1); + boolean contains = content.contains(","); + String[] array = contains ? content.split(",") : new String[]{content}; + List list1 = Arrays.asList(array); + for (String s : list1) { + if (s.equals(next_device_code)) { + nextRegionalExit = false; + } + } + } + String start_exclude_device = limitRegionalDtos.getStart_exclude_device(); + if (StrUtil.isNotEmpty(start_exclude_device)) { + String content = start_exclude_device.substring(1, start_exclude_device.length() - 1); + boolean contains = content.contains(","); + String[] array = contains ? content.split(",") : new String[]{content}; + List list1 = Arrays.asList(array); + for (String s : list1) { + if (s.equals(start_device_code)) { + startRegionalExit = false; + } + } + } + } + if (ObjectUtil.isNotEmpty(limitRegionalDtos) && (startRegionalExit || nextRegionalExit)) { + List instructionMybatis = instructionService.list(Wrappers.lambdaQuery(InstructionMybatis.class).le(InstructionMybatis::getInstruction_status, 1)); + for (InstructionMybatis instructionMybati : instructionMybatis) { + Device startDevice = appService.findDeviceByCode(instructionMybati.getStart_device_code()); + Device nextDevice = appService.findDeviceByCode(instructionMybati.getNext_device_code()); + if ((StrUtil.isNotEmpty(startDevice.getRegion()) ? startDevice.getRegion() : "0").equals(startRegion) && (StrUtil.isNotEmpty(nextDevice.getRegion()) ? nextDevice.getRegion() : "0").equals(nextRegion)) { + String start_exclude_device = limitRegionalDtos.getStart_exclude_device(); + if (StrUtil.isNotEmpty(start_exclude_device)) { + String content = start_exclude_device.substring(1, start_exclude_device.length() - 1); + boolean contains = content.contains(","); + String[] array = contains ? content.split(",") : new String[]{content}; + List list1 = Arrays.asList(array); + for (String s : list1) { + if (s.equals(instructionMybati.getStart_device_code())) { + startRegionalExit = false; + } + } + } + String next_exclude_device = limitRegionalDtos.getNext_exclude_device(); + if (StrUtil.isNotEmpty(next_exclude_device)) { + String content = next_exclude_device.substring(1, next_exclude_device.length() - 1); + boolean contains = content.contains(","); + String[] array = contains ? content.split(",") : new String[]{content}; + List list2 = Arrays.asList(array); + for (String s : list2) { + if (s.equals(instructionMybati.getNext_device_code())) { + nextRegionalExit = false; + } + } + } + if (startRegionalExit || nextRegionalExit) { + ++count; + } + if (count >= Integer.parseInt(limitRegionalDtos.getMax_num())) { + log.info("同区域指令数量过多,等待指令完成再此创建"); + return; + } + } + } + } try { instructionService.create(instdto); } catch (Exception e) { diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/CreateDDJInst.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/CreateDDJInst.java index 2e1bf6b07..570ff496a 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/CreateDDJInst.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/CreateDDJInst.java @@ -57,6 +57,7 @@ public class CreateDDJInst { if (startDevice.getDevice_type().equals(DeviceType.storage.name()) && (nextDevice.getDevice_type().equals(DeviceType.conveyor.name()) || nextDevice.getDevice_type().equals(DeviceType.storage.name()))) { taskDtoList.add(taskDto); + } } if (CollUtil.isNotEmpty(taskDtoList)) { diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/utils/ExecutionJob.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/utils/ExecutionJob.java index 19ea9701b..a646e42b0 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/utils/ExecutionJob.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/utils/ExecutionJob.java @@ -38,9 +38,11 @@ public class ExecutionJob extends TLogQuartzJobBean { /** * 该处仅供参考 */ - @Autowired + /* @Autowired @Qualifier("threadPoolExecutor") - private ThreadPoolExecutor EXECUTOR; + private ThreadPoolExecutor EXECUTOR;*/ + + private final static ThreadPoolExecutor EXECUTOR = ThreadPoolExecutorUtil.getPoll(); @Override diff --git a/acs2/nladmin-system/nlsso-server/src/main/resources/language/error/error.properties b/acs2/nladmin-system/nlsso-server/src/main/resources/language/error/error.properties index dcd67be09..65e3bf8fa 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/resources/language/error/error.properties +++ b/acs2/nladmin-system/nlsso-server/src/main/resources/language/error/error.properties @@ -23,3 +23,4 @@ error_sys=系统繁忙,稍后在试 error_sysAuth=权限不足,操作失败 error_sysFile=上传失败 error_sysLimit=访问次数限制\! +zh_device_name_isNotNull = 中文设备名称不能位空 diff --git a/acs2/nladmin-system/nlsso-server/src/main/resources/language/error/error_en_US.properties b/acs2/nladmin-system/nlsso-server/src/main/resources/language/error/error_en_US.properties index 1bae5b88e..5ef00092a 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/resources/language/error/error_en_US.properties +++ b/acs2/nladmin-system/nlsso-server/src/main/resources/language/error/error_en_US.properties @@ -23,3 +23,4 @@ error_sys=The system is busy, please try again later error_sysAuth=Insufficient permissions, operation failed error_sysFile=Upload failed error_sysLimit=Access limit\! +zh_device_name_isNotNull = Chinese device name cannot be empty\! diff --git a/acs2/nladmin-system/nlsso-server/src/main/resources/language/error/error_in_ID.properties b/acs2/nladmin-system/nlsso-server/src/main/resources/language/error/error_in_ID.properties index b4d547847..3a40a2b62 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/resources/language/error/error_in_ID.properties +++ b/acs2/nladmin-system/nlsso-server/src/main/resources/language/error/error_in_ID.properties @@ -23,3 +23,4 @@ error_sys=Sistemnya sibuk, tolong coba lagi nanti error_sysAuth=Keizinan tidak cukup, operasi gagal error_sysFile=Upload gagal error_sysLimit=Batas akses\! +zh_device_name_isNotNull= Nama perangkat dalam bahasa Cina tidak boleh kosong! diff --git a/acs2/nladmin-system/nlsso-server/src/main/resources/language/error/error_zh_CN.properties b/acs2/nladmin-system/nlsso-server/src/main/resources/language/error/error_zh_CN.properties index dcd67be09..6039bb719 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/resources/language/error/error_zh_CN.properties +++ b/acs2/nladmin-system/nlsso-server/src/main/resources/language/error/error_zh_CN.properties @@ -23,3 +23,4 @@ error_sys=系统繁忙,稍后在试 error_sysAuth=权限不足,操作失败 error_sysFile=上传失败 error_sysLimit=访问次数限制\! +zh_device_name_isNotNull = 中文设备名称不能为空 diff --git a/acs2/nladmin-ui/public/config.js b/acs2/nladmin-ui/public/config.js index ce714251a..c9ef333db 100644 --- a/acs2/nladmin-ui/public/config.js +++ b/acs2/nladmin-ui/public/config.js @@ -1,9 +1,9 @@ window.g = { dev: { - VUE_APP_BASE_API: 'http://127.0.0.1:8011' + VUE_APP_BASE_API: 'http://192.168.101.1:8011' }, prod: { - VUE_APP_BASE_API: 'http://127.0.0.1:8011' + VUE_APP_BASE_API: 'http://192.168.101.1:8011' } } diff --git a/acs2/nladmin-ui/src/api/acs/regional/acsRegional.js b/acs2/nladmin-ui/src/api/acs/regional/acsRegional.js new file mode 100644 index 000000000..23da64ade --- /dev/null +++ b/acs2/nladmin-ui/src/api/acs/regional/acsRegional.js @@ -0,0 +1,41 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/acsRegional', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/acsRegional/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/acsRegional', + method: 'put', + data + }) +} + +export function reload() { + return request({ + url: 'api/acsRegional/synchronous', + method: 'get' + }) +} + +export function updateOn(id, is_active) { + return request({ + url: '/api/acsRegional/updateActive?id=' + id + '&is_active=' + is_active, + method: 'get' + }) +} + +export default { add, edit, del, updateOn, reload } diff --git a/acs2/nladmin-ui/src/i18n/langs/chinese.js b/acs2/nladmin-ui/src/i18n/langs/chinese.js index 8919ed219..82faadfc1 100644 --- a/acs2/nladmin-ui/src/i18n/langs/chinese.js +++ b/acs2/nladmin-ui/src/i18n/langs/chinese.js @@ -22,6 +22,7 @@ import role from './role/zh' import department from './department/zh' import dict from './dict/zh' import angle from './angle/zh' +import regional from './regional/zh' export default { ...zhLocale, @@ -47,6 +48,7 @@ export default { ...role, ...department, ...dict, - ...angle + ...angle, + ...regional } diff --git a/acs2/nladmin-ui/src/i18n/langs/english.js b/acs2/nladmin-ui/src/i18n/langs/english.js index ca2b15cdc..71cf71401 100644 --- a/acs2/nladmin-ui/src/i18n/langs/english.js +++ b/acs2/nladmin-ui/src/i18n/langs/english.js @@ -22,6 +22,7 @@ import role from './role/en' import department from './department/en' import dict from './dict/en' import angle from './angle/en' +import regional from './regional/en' export default { ...enLocale, @@ -47,6 +48,7 @@ export default { ...role, ...department, ...dict, - ...angle + ...angle, + ...regional } diff --git a/acs2/nladmin-ui/src/i18n/langs/indonesian.js b/acs2/nladmin-ui/src/i18n/langs/indonesian.js index 3895ebae0..1b00062df 100644 --- a/acs2/nladmin-ui/src/i18n/langs/indonesian.js +++ b/acs2/nladmin-ui/src/i18n/langs/indonesian.js @@ -22,6 +22,7 @@ import role from './role/in' import department from './department/in' import dict from './dict/in' import angle from './angle/in' +import regional from './regional/in' export default { ...idLocale, @@ -48,5 +49,6 @@ export default { ...role, ...department, ...dict, - ...angle + ...angle, + ...regional } diff --git a/acs2/nladmin-ui/src/i18n/langs/regional/en.js b/acs2/nladmin-ui/src/i18n/langs/regional/en.js new file mode 100644 index 000000000..0254c0f08 --- /dev/null +++ b/acs2/nladmin-ui/src/i18n/langs/regional/en.js @@ -0,0 +1,17 @@ +export default { + 'regional': { + 'table': { + 'origin_region': 'Wilayah Asal', + 'target_region': 'Wilayah Tujuan', + 'origin_region_excluded_devices': 'Wilayah Asal Yang Dikecualikan Perangkat', + 'target_region_excluded_devices': 'Wilayah Tujuan Yang Dikecualikan Perangkat', + 'maximum_quantity': 'Jumlah Maksimum', + 'data_limit': 'Batas Data', + 'origin_region_cannot_be_empty': 'Wilayah Asal Tidak Boleh Kosong', + 'destination_region_cannot_be_empty': 'Wilayah Tujuan Tidak Boleh Kosong', + 'maximum_number_cannot_be_empty': 'Jumlah Maksimum Tidak Boleh Kosong', + 'disabled': 'Nonaktif', + 'enabled': 'Diaktifkan' + } + } +} diff --git a/acs2/nladmin-ui/src/i18n/langs/regional/in.js b/acs2/nladmin-ui/src/i18n/langs/regional/in.js new file mode 100644 index 000000000..07c6707ae --- /dev/null +++ b/acs2/nladmin-ui/src/i18n/langs/regional/in.js @@ -0,0 +1,17 @@ +export default { + 'regional': { + 'table': { + 'origin_region': 'Origin Region', + 'target_region': 'Target Region', + 'origin_region_excluded_devices': 'Origin Region Excluded Devices', + 'target_region_excluded_devices': 'Target Region Excluded Devices', + 'maximum_quantity': 'Maximum Quantity', + 'data_limit': 'Data Limit', + 'origin_region_cannot_be_empty': 'Origin Region Cannot Be Empty', + 'destination_region_cannot_be_empty': 'Destination Region Cannot Be Empty', + 'maximum_number_cannot_be_empty': 'Maximum Number Cannot Be Empty', + 'disabled': 'Disabled', + 'enabled': 'Enabled' + } + } +} diff --git a/acs2/nladmin-ui/src/i18n/langs/regional/zh.js b/acs2/nladmin-ui/src/i18n/langs/regional/zh.js new file mode 100644 index 000000000..86f3bdff9 --- /dev/null +++ b/acs2/nladmin-ui/src/i18n/langs/regional/zh.js @@ -0,0 +1,17 @@ +export default { + 'regional': { + 'table': { + 'origin_region': '起始区域', + 'target_region': '目标区域', + 'origin_region_excluded_devices': '起始区域排除设备', + 'target_region_excluded_devices': '目标区域排除设备', + 'maximum_quantity': '最大数量', + 'data_limit': '流量限制', + 'origin_region_cannot_be_empty': '起始区域不能为空', + 'destination_region_cannot_be_empty': '目标区域不能为空', + 'maximum_number_cannot_be_empty': '最大数不能为空', + 'disabled': '停用', + 'enabled': '启用' + } + } +} diff --git a/acs2/nladmin-ui/src/i18n/langs/task/en.js b/acs2/nladmin-ui/src/i18n/langs/task/en.js index dc6cafb5e..358c42903 100644 --- a/acs2/nladmin-ui/src/i18n/langs/task/en.js +++ b/acs2/nladmin-ui/src/i18n/langs/task/en.js @@ -15,14 +15,18 @@ export default { 'Task_code': 'Task Code', 'Task': 'Task', 'start_or_end': 'Origin Or Destination', - 'time': 'Time' + 'time': 'Time', + 'extension_field': 'Extension Field' }, 'select': { + 'automated_warehouse_task_type': 'Automated Warehouse Task Type', 'Placeholder': 'Select', 'Start_point': 'Start Point', + 'Start_point2': 'Start Point 2', 'Starting_column': 'Starting Column', 'Starting_layer': 'Starting Layer', 'Destination': 'Destination', + 'Destination2': 'Destination 2', 'Ending_column': 'Ending Column', 'Ending_layer': 'Ending Layer', 'Description': 'Description', diff --git a/acs2/nladmin-ui/src/i18n/langs/task/in.js b/acs2/nladmin-ui/src/i18n/langs/task/in.js index c8ac9c0de..bfee8b8de 100644 --- a/acs2/nladmin-ui/src/i18n/langs/task/in.js +++ b/acs2/nladmin-ui/src/i18n/langs/task/in.js @@ -15,14 +15,18 @@ export default { 'Task_code': 'Nomor Tugas', 'Task': 'Tugas', 'start_or_end': 'Asal Atau Tujuan', - 'time': 'Waktu' + 'time': 'Waktu', + 'extension_field': 'Bidang Perluasan' }, 'select': { + 'automated_warehouse_task_type': 'Jenis Tugas Gudang Otomatis', 'Placeholder': 'Pilih', 'Start_point': 'Titik Awal', + 'Start_point2': 'Titik Awal 2', 'Starting_column': 'Kolom Awal', 'Starting_layer': 'Lapisan Awal', 'Destination': 'Tujuan', + 'Destination2': 'Tujuan 2', 'Ending_column': 'Kolom Akhir', 'Ending_layer': 'Lapisan Akhir', 'Description': 'Deskripsi', diff --git a/acs2/nladmin-ui/src/i18n/langs/task/zh.js b/acs2/nladmin-ui/src/i18n/langs/task/zh.js index 17031539e..339bae542 100644 --- a/acs2/nladmin-ui/src/i18n/langs/task/zh.js +++ b/acs2/nladmin-ui/src/i18n/langs/task/zh.js @@ -15,14 +15,18 @@ export default { 'Task_code': '任务号', 'Task': '任务', 'start_or_end': '起点或终点', - 'time': '时间段' + 'time': '时间段', + 'extension_field': '扩展字段' }, 'select': { + 'automated_warehouse_task_type': '立库任务类型', 'Placeholder': '请选择', + 'Start_point2': '起点2', 'Start_point': '起点', 'Starting_column': '起点-列', 'Starting_layer': '起点-层', 'Destination': '终点', + 'Destination2': '终点2', 'Ending_column': '终点-列', 'Ending_layer': '终点-层', 'Description': '描述信息', diff --git a/acs2/nladmin-ui/src/views/acs/device/config.vue b/acs2/nladmin-ui/src/views/acs/device/config.vue index 50eea6264..31c7a4d3d 100644 --- a/acs2/nladmin-ui/src/views/acs/device/config.vue +++ b/acs2/nladmin-ui/src/views/acs/device/config.vue @@ -109,6 +109,13 @@ import conveyor_with_scanner_weight from '@/views/acs/device/driver/conveyor_wit import box_manipulator_site from '@/views/acs/device/driver/box_manipulator_site.vue' import rgv from '@/views/acs/device/driver/rgv.vue' import dry_manipulator from '@/views/acs/device/driver/dry_manipulator.vue' +import blanking_button from '@/views/acs/device/driver/blanking_button.vue' +import pull_head_manipulator from '@/views/acs/device/driver/pull_head_manipulator.vue' +import pull_tail_manipulator from '@/views/acs/device/driver/pull_tail_manipulator.vue' +import green_foil_machine_button from '@/views/acs/device/driver/green_foil_machine_button.vue' +import inflatable_shaft_library from '@/views/acs/device/driver/inflatable_shaft_library.vue' +import subvolume_weighing_station from '@/views/acs/device/driver/subvolume_weighing_station.vue' +import waste_foil_weighing_station from '@/views/acs/device/driver/waste_foil_weighing_station.vue' import blank_manipulator from '@/views/acs/device/driver/blank_manipulator.vue' import trapped_manipulator from '@/views/acs/device/driver/one_manipulator/trapped_manipulator.vue' import box_package_manipulator from '@/views/acs/device/driver/one_manipulator/box_package_manipulator.vue' @@ -120,6 +127,8 @@ import finished_product_out_with_bind_lable_conveyor from '@/views/acs/device/dr import fold_disc_site from '@/views/acs/device/driver/one_conveyor/fold_disc_site.vue' import scanner_weight_conveyor from '@/views/acs/device/driver/one_conveyor/scanner_weight_conveyor.vue' import un_box_lable_conveyor from '@/views/acs/device/driver/one_conveyor/un_box_lable_conveyor.vue' +import xg_agv_car from '@/views/acs/device/driver/agv/xg_agv_car.vue' +import oven_inspect_site from '@/views/acs/device/driver/oven_inspect_site.vue' export default { name: 'DeviceConfig', components: { @@ -131,9 +140,6 @@ export default { standard_conveyor_control_with_scanner, standard_conveyor_control, standard_conveyor_monitor, - // hailiang_smart_plc_test, - // paint_conveyor, - // empty_vehicle_stacking_position, agv_ndc_two, agv_ndc_one, xg_agv, @@ -169,7 +175,16 @@ export default { fold_disc_site, box_storage_out_conveyor, box_subvolumes_conveyor, - finished_product_out_with_bind_lable_conveyor + finished_product_out_with_bind_lable_conveyor, + blanking_button, + waste_foil_weighing_station, + subvolume_weighing_station, + pull_head_manipulator, + pull_tail_manipulator, + inflatable_shaft_library, + green_foil_machine_button, + xg_agv_car, + oven_inspect_site }, dicts: ['device_type'], mixins: [crud], diff --git a/acs2/nladmin-ui/src/views/acs/device/driver/agv/xg_agv_car.vue b/acs2/nladmin-ui/src/views/acs/device/driver/agv/xg_agv_car.vue new file mode 100644 index 000000000..26832e498 --- /dev/null +++ b/acs2/nladmin-ui/src/views/acs/device/driver/agv/xg_agv_car.vue @@ -0,0 +1,423 @@ + + + + + diff --git a/acs2/nladmin-ui/src/views/acs/device/driver/blanking_button.vue b/acs2/nladmin-ui/src/views/acs/device/driver/blanking_button.vue index 5676ca44c..893de4515 100644 --- a/acs2/nladmin-ui/src/views/acs/device/driver/blanking_button.vue +++ b/acs2/nladmin-ui/src/views/acs/device/driver/blanking_button.vue @@ -229,7 +229,7 @@ import crud from '@/mixins/crud' import deviceCrud from '@/api/acs/device/device' export default { - name: 'WithStationDeviceDriver', + name: 'BlankingButton', mixins: [crud], props: { parentForm: { diff --git a/acs2/nladmin-ui/src/views/acs/device/driver/green_foil_machine_button.vue b/acs2/nladmin-ui/src/views/acs/device/driver/green_foil_machine_button.vue index 5676ca44c..0240c985e 100644 --- a/acs2/nladmin-ui/src/views/acs/device/driver/green_foil_machine_button.vue +++ b/acs2/nladmin-ui/src/views/acs/device/driver/green_foil_machine_button.vue @@ -229,7 +229,7 @@ import crud from '@/mixins/crud' import deviceCrud from '@/api/acs/device/device' export default { - name: 'WithStationDeviceDriver', + name: 'GreenFoilMachineButton', mixins: [crud], props: { parentForm: { diff --git a/acs2/nladmin-ui/src/views/acs/device/driver/inflatable_shaft_library.vue b/acs2/nladmin-ui/src/views/acs/device/driver/inflatable_shaft_library.vue new file mode 100644 index 000000000..883086f09 --- /dev/null +++ b/acs2/nladmin-ui/src/views/acs/device/driver/inflatable_shaft_library.vue @@ -0,0 +1,667 @@ + + + + + diff --git a/acs2/nladmin-ui/src/views/acs/device/driver/one_conveyor/box_storage_out_conveyor.vue b/acs2/nladmin-ui/src/views/acs/device/driver/one_conveyor/box_storage_out_conveyor.vue index d4209468d..e8bfe122a 100644 --- a/acs2/nladmin-ui/src/views/acs/device/driver/one_conveyor/box_storage_out_conveyor.vue +++ b/acs2/nladmin-ui/src/views/acs/device/driver/one_conveyor/box_storage_out_conveyor.vue @@ -1,5 +1,5 @@