From fc48074907269b77c58a228ca48def52a4fcebcc Mon Sep 17 00:00:00 2001 From: lishuai <1793460677@qq.com> Date: Tue, 26 Dec 2023 10:24:22 +0800 Subject: [PATCH] =?UTF-8?q?fix:rgv=E8=A1=8C=E6=9E=B6=E5=86=B2=E7=AA=81?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IndoorManipulatorDeviceDriver.java | 158 +++++++++++------- .../StandardOrdinarySiteDeviceDriver.java | 17 ++ .../device/driver/standard_ordinary_site.vue | 19 +++ 3 files changed, 132 insertions(+), 62 deletions(-) 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 df020af33..64c010385 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 @@ -9,18 +9,16 @@ import com.alibaba.fastjson.JSONObject; import lombok.Data; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.jinterop.dcom.common.JIException; 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.basedriver.plugging_unplugging_machine.PluggingUnpluggingMachineDeviceDriver; +import org.nl.acs.device_driver.basedriver.rgv.RgvDeviceDriver; import org.nl.acs.device_driver.basedriver.siemens_conveyor.SiemensConveyorDeviceDriver; import org.nl.acs.device_driver.basedriver.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; 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.JsonUtl; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.history.ErrorUtil; import org.nl.acs.history.service.DeviceErrorLogService; @@ -37,13 +35,7 @@ import org.nl.acs.task.service.dto.TaskDto; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.system.service.ParamService; import org.nl.modules.system.service.impl.ParamServiceImpl; -import org.nl.modules.wql.core.bean.WQLObject; -import org.nl.modules.wql.exception.WDKException; import org.nl.modules.wql.util.SpringContextHolder; -import org.openscada.opc.lib.da.AddFailedException; -import org.openscada.opc.lib.da.Group; -import org.openscada.opc.lib.da.Item; -import org.openscada.opc.lib.da.ItemState; import org.springframework.beans.factory.annotation.Autowired; import java.util.*; @@ -59,7 +51,7 @@ public class IndoorManipulatorDeviceDriver extends AbstractOpcDeviceDriver imple protected org.nl.acs.device_driver.basedriver.indoor_manipulator.ItemProtocol itemProtocol = new ItemProtocol(this); @Autowired InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); - private OpcServerService opcServerService = SpringContextHolder.getBean(OpcServerService .class); + private OpcServerService opcServerService = SpringContextHolder.getBean(OpcServerService.class); @Autowired DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); @@ -464,7 +456,7 @@ public class IndoorManipulatorDeviceDriver extends AbstractOpcDeviceDriver imple applyManipulatorActionRequest.setType("3"); applyManipulatorActionRequest.setTask_code1(task_code); applyManipulatorActionResponse = acsToWmsService.applyManipulatorActionRequest(applyManipulatorActionRequest); - if (applyManipulatorActionResponse.getstatus()==200) { + if (applyManipulatorActionResponse.getstatus() == 200) { logServer.deviceExecuteLog(this.device_code, "", "", "申请放货点请求成功,响应参数:" + JSON.toJSONString(applyManipulatorActionResponse)); String put_device_code = applyManipulatorActionResponse.getDevice_code(); Device device = deviceAppService.findDeviceByCode(put_device_code); @@ -549,7 +541,7 @@ public class IndoorManipulatorDeviceDriver extends AbstractOpcDeviceDriver imple this.writing(map); message = "缓存库取货完成"; feedbackSucess = true; - }else { + } else { feedbackSucess = false; message = "缓存库取货失败"; logServer.deviceExecuteLog(this.device_code, "", "", "缓存库取货失败,返回参数:" + applyManipulatorActionResponse1); @@ -569,52 +561,52 @@ public class IndoorManipulatorDeviceDriver extends AbstractOpcDeviceDriver imple this.writing(map); feedbackSucess = true; message = "缓存库放货成功"; - }else { + } else { feedbackSucess = false; message = "缓存库放货失败"; logServer.deviceExecuteLog(this.device_code, "", "", "缓存库放货完成,返回参数:" + applyManipulatorActionResponse1); } } + } + + + //放货完成 + if (mode == 3 && action == 8 && move == 0) { + if (inst1 != null) { + try { + feedbackSucess = true; + finish_instruction(inst1); + Map map = new LinkedHashMap<>(); + map.put("to_command", 8); + this.writing(map); + message = "放货完成"; + } catch (Exception e) { + message = "放货失败"; + e.printStackTrace(); + } + feedMessage = ""; } - - - //放货完成 - if (mode == 3 && action == 8 && move == 0) { - if (inst1 != null) { - try { - feedbackSucess = true; - finish_instruction(inst1); - Map map = new LinkedHashMap<>(); - map.put("to_command", 8); - this.writing(map); - 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。"; - } + } 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。"; + } + } - }else { + } else { feedMessage = ""; } - } + } public Instruction checkInst() { @@ -789,7 +781,20 @@ public class IndoorManipulatorDeviceDriver extends AbstractOpcDeviceDriver imple if (ObjectUtil.isNotEmpty(taskDtos)) { //按照优先级排序 优先级相等按照创建时间排序 taskDtos = this.sortTask(taskDtos); - TaskDto taskDto = taskDtos.get(0); + TaskDto taskDto = null; + for (int i1 = 0; i1 < taskDtos.size(); i1++) { + taskDto = taskDtos.get(i1); + Boolean flag; + if ("6".equals(task.getTruss_type())) { + flag = checkAgv(taskDto); + if (flag){ + break; + } + }else { + break; + } + + } //存在行架->暂存的AGV任务 需要过滤 // 9 行架任务 @@ -800,13 +805,6 @@ public class IndoorManipulatorDeviceDriver extends AbstractOpcDeviceDriver imple Instruction instruction = instructionService.findByTaskcodeAndStatus(taskDto.getTask_code()); String start_device_code = instruction.getStart_device_code(); String next_device_code = instruction.getNext_device_code(); - Device nextdevice = deviceAppService.findDeviceByCode(next_device_code); - Device startdevice = deviceAppService.findDeviceByCode(start_device_code); - SiemensConveyorDeviceDriver siemensConveyorDeviceDriver; - StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; - /*instruction.setInstruction_status("1"); - 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"))) { @@ -835,9 +833,9 @@ public class IndoorManipulatorDeviceDriver extends AbstractOpcDeviceDriver imple map.put("to_target", Integer.parseInt(next_addr)); try { this.writing(map); - }catch (Exception e) { + } catch (Exception e) { logServer.deviceExecuteLog(device_code, "", "", "下发指令:" + instruction.getInstruction_code() + ",指令起点:" + instruction.getStart_device_code() - + ",指令终点:" + instruction.getNext_device_code() + ",指令执行失败:"+e.getMessage()); + + ",指令终点:" + instruction.getNext_device_code() + ",指令执行失败:" + e.getMessage()); } this.setRequireSucess(true); return true; @@ -847,7 +845,19 @@ public class IndoorManipulatorDeviceDriver extends AbstractOpcDeviceDriver imple for (int j = 0; j < taskDtoList.size(); j++) { //按照优先级排序 优先级相等按照创建时间排序 taskDtoList = this.sortTask(taskDtoList); - task = taskDtoList.get(j); + for (int i1 = 0; i1 < taskDtoList.size(); i1++) { + task = taskDtoList.get(i1); + Boolean flag; + if ("6".equals(task.getTruss_type())) { + flag = checkAgv(task); + if (flag){ + break; + } + }else { + break; + } + + } // 9 行架任务 if (!StrUtil.equals(task.getTask_type(), "9")) { task = null; @@ -934,13 +944,15 @@ public class IndoorManipulatorDeviceDriver extends AbstractOpcDeviceDriver imple 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)); - if(!StrUtil.isEmpty(task.getVersion())){map.put("inflatableShaftVersion", task.getVersion());} + if (!StrUtil.isEmpty(task.getVersion())) { + map.put("inflatableShaftVersion", task.getVersion()); + } this.writing(map); try { this.writing(map); - }catch (Exception e) { + } catch (Exception e) { logServer.deviceExecuteLog(device_code, "", "", "下发指令:" + instdto.getInstruction_code() + ",指令起点:" + instdto.getStart_device_code() - + ",指令终点:" + instdto.getNext_device_code() + ",指令执行失败:"+e.getMessage()); + + ",指令终点:" + instdto.getNext_device_code() + ",指令执行失败:" + e.getMessage()); } this.setRequireSucess(true); notCreateInstMessage = ""; @@ -951,5 +963,27 @@ public class IndoorManipulatorDeviceDriver extends AbstractOpcDeviceDriver imple return true; } } -} + private Boolean checkAgv(TaskDto taskDto) { + StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; + RgvDeviceDriver rgv1; + RgvDeviceDriver rgv2; + Device deviceByCode = deviceAppService.findDeviceByCode(taskDto.getNext_device_code()); + if (deviceByCode.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { + standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) deviceByCode.getDeviceDriver(); + List linkDeviceCode = standardOrdinarySiteDeviceDriver.getExtraDeviceCodes("link_device_code"); + if (linkDeviceCode.size() > 1) { + Device agv1 = deviceAppService.findDeviceByCode(linkDeviceCode.get(0)); + Device agv2 = deviceAppService.findDeviceByCode(linkDeviceCode.get(1)); + if (agv1.getDeviceDriver() instanceof RgvDeviceDriver && agv2.getDeviceDriver() instanceof RgvDeviceDriver) { + rgv1 = (RgvDeviceDriver) agv1.getDeviceDriver(); + rgv2 = (RgvDeviceDriver) agv2.getDeviceDriver(); + if ((rgv1.getMode() == 2 && rgv1.getMove1() == 1) || (rgv2.getMode() == 2 && rgv2.getMove1() == 1)) { + return true; + } + } + } + } + return false; + } +} diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java index 3f5b67d48..a2ac00367 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java @@ -25,7 +25,9 @@ import org.nl.acs.task.service.TaskService; import org.nl.modules.wql.util.SpringContextHolder; import org.springframework.beans.factory.annotation.Autowired; +import java.util.ArrayList; import java.util.Date; +import java.util.List; /** @@ -244,5 +246,20 @@ public class StandardOrdinarySiteDeviceDriver extends AbstractDeviceDriver imple option = Integer.parseInt(flag); } } + + 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; + } } diff --git a/acs/nladmin-ui/src/views/acs/device/driver/standard_ordinary_site.vue b/acs/nladmin-ui/src/views/acs/device/driver/standard_ordinary_site.vue index d1bf9971e..1d2e78d09 100644 --- a/acs/nladmin-ui/src/views/acs/device/driver/standard_ordinary_site.vue +++ b/acs/nladmin-ui/src/views/acs/device/driver/standard_ordinary_site.vue @@ -98,6 +98,25 @@ + + + + + + + + +