From 7e1fef8b0b8d6bc1c2b32b9c23fdefacf605b0cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E4=BF=8A=E6=9D=B0?= <9463626+zhou-junjiezjj@user.noreply.gitee.com> Date: Tue, 28 Nov 2023 10:48:13 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E5=B8=83=E6=96=99=E6=9C=BA=E5=8F=8D?= =?UTF-8?q?=E9=A6=88=E9=87=8D=E9=87=8F=E5=92=8C=E6=B3=A5=E6=96=99=20rev?= =?UTF-8?q?=E5=86=99=E5=85=A5=E6=96=B9=E6=B3=95=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nl/acs/device_driver/DeviceDriver.java | 15 + .../acs/device_driver/RequestMethodEnum.java | 3 +- .../agv/ndcone/AgvNdcOneDeviceDriver.java | 88 +++- .../driver/AbstractOpcDeviceDriver.java | 3 +- .../ConveyorPressStationDeviceDriver.java | 3 + .../conveyor_press_station/ItemProtocol.java | 4 +- .../ItemProtocol.java | 156 ++++++ .../LnshMaterialDistributionDefination.java | 58 +++ .../LnshMaterialDistributionDeviceDriver.java | 491 ++++++++++++++++++ ...hPackagePalletManipulatorDeviceDriver.java | 2 + ...alletizingManipulatorSiteDeviceDriver.java | 2 + .../lnsh/lnsh_rgv/LnshRGVDeviceDriver.java | 66 +-- .../applyTask/ApplyTaskResponse.java | 5 + .../data/AcsToWmsData/cloth/ClothRequest.java | 26 + .../AcsToWmsData/cloth/ClothResponse.java | 7 + .../wms/service/impl/WmsToAcsServiceImpl.java | 40 +- .../src/views/acs/device/config.vue | 3 +- .../views/acs/device/driver/lnsh/lnsh_rgv.vue | 2 +- .../src/views/acs/instruction/index.vue | 44 +- .../src/views/acs/monitor/device/index.vue | 10 +- acs/nladmin-ui/src/views/acs/task/index.vue | 20 +- 21 files changed, 954 insertions(+), 94 deletions(-) create mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_material_distribution/ItemProtocol.java create mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_material_distribution/LnshMaterialDistributionDefination.java create mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_material_distribution/LnshMaterialDistributionDeviceDriver.java create mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/cloth/ClothRequest.java create mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/cloth/ClothResponse.java diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/DeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/DeviceDriver.java index 4ac300f..f638122 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/DeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/DeviceDriver.java @@ -37,6 +37,21 @@ public interface DeviceDriver { } return devicesList; } + //关联设备字符串数组数据转换成集合 + default List getExtraDeviceCodes1(String extraName) { + String extraValue = (String) this.getDevice().getExtraValue().get(extraName); + if (StrUtil.isEmpty(extraValue)) { + return new ArrayList<>(); + } + String devicesString = extraValue.substring(0, extraValue.length()); + 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; + } default String getModeName(String mode){ if(StrUtil.equals("0",mode)){ diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/RequestMethodEnum.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/RequestMethodEnum.java index dbea2ab..8eb71a6 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/RequestMethodEnum.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/RequestMethodEnum.java @@ -46,8 +46,9 @@ public enum RequestMethodEnum { apply_get_put_station(18, "apply_get_put_station", "反馈当前抓取放置位","0"), - press_request_material(19, "pressRequestMaterial", "压机叫料","0"); + press_request_material(19, "pressRequestMaterial", "压机叫料","0"), + apply_one_cloth(20, "apply_one_cloth", "布料机反馈重量和泥料","0"); //驱动索引 diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java index 410e388..b22e8a7 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java @@ -236,8 +236,14 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic && (lnshPalletizingManipulatorSiteDeviceDriver.getAction() == 3 || lnshPalletizingManipulatorSiteDeviceDriver.getAction() == 1)) { inst.setExecute_status("1"); instructionService.update(inst); - lnshPalletizingManipulatorSiteDeviceDriver.writing(2); - data = AgvService.sendAgvOneModeInst(phase, index, 0); + Map map = new LinkedHashMap<>(); + map.put("to_command",2); + lnshPalletizingManipulatorSiteDeviceDriver.writing(map); + if(lnshPalletizingManipulatorSiteDeviceDriver.getTo_command()==2){ + data = AgvService.sendAgvOneModeInst(phase, index, 0); + }else { + lnshPalletizingManipulatorSiteDeviceDriver.writing(2); + } lnshPalletizingManipulatorSiteDeviceDriver.setMessage(""); flag = true; } else { @@ -272,7 +278,9 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic && (lnshStationDeviceDriver.getAction() == 3 || lnshStationDeviceDriver.getAction() == 1)){ inst.setExecute_status("1"); instructionService.update(inst); - lnshStationDeviceDriver.writing(2); + Map map = new LinkedHashMap<>(); + map.put("to_command",2); + lnshStationDeviceDriver.writing(map); data = AgvService.sendAgvOneModeInst(phase, index, 0); lnshStationDeviceDriver.setMessage(""); flag=true; @@ -365,7 +373,9 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic ) { inst.setExecute_status("1"); instructionService.update(inst); - conveyorBarcodeDeviceDriver.writing(2); + Map map = new LinkedHashMap<>(); + map.put("to_command",2); + conveyorBarcodeDeviceDriver.writing(map); data = AgvService.sendAgvOneModeInst(phase, index, 0); conveyorBarcodeDeviceDriver.setMessage(""); flag = true; @@ -395,7 +405,9 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic // && (lnshFoldDiscSiteDeviceDriver.getAction() == 3 || lnshFoldDiscSiteDeviceDriver.getAction() == 1) inst.setExecute_status("1"); instructionService.update(inst); - lnshFoldDiscSiteDeviceDriver.writing(2); + Map map = new LinkedHashMap<>(); + map.put("to_command",2); + lnshFoldDiscSiteDeviceDriver.writing(map); data = AgvService.sendAgvOneModeInst(phase, index, 0); lnshFoldDiscSiteDeviceDriver.setMessage(""); flag = true; @@ -498,9 +510,15 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic && (lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() == 3 || lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() == 2) ) { inst.setExecute_status("5"); - lnshPalletizingManipulatorSiteDeviceDriver.writing(3); + Map map = new LinkedHashMap<>(); + map.put("to_command",3); + lnshPalletizingManipulatorSiteDeviceDriver.writing(map); + if(lnshPalletizingManipulatorSiteDeviceDriver.getTo_command()==3){ + data = AgvService.sendAgvOneModeInst(phase, index, 0); + }else { + lnshPalletizingManipulatorSiteDeviceDriver.writing(3); + } instructionService.update(inst); - data = AgvService.sendAgvOneModeInst(phase, index, 0); lnshPalletizingManipulatorSiteDeviceDriver.setMessage(""); flag = true; } else { @@ -532,7 +550,9 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic ) { inst.setExecute_status("5"); instructionService.update(inst); - lnshStationDeviceDriver.writing(3); + Map map = new LinkedHashMap<>(); + map.put("to_command",3); + lnshStationDeviceDriver.writing(map); data = AgvService.sendAgvOneModeInst(phase, index, 0); lnshStationDeviceDriver.setMessage(""); flag = true; @@ -613,7 +633,9 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic conveyorBarcodeDeviceDriver = (ConveyorBarcodeDeviceDriver) device.getDeviceDriver(); if (conveyorBarcodeDeviceDriver.getMode() != 0) { inst.setExecute_status("5"); - conveyorBarcodeDeviceDriver.writing(3); + Map map = new LinkedHashMap<>(); + map.put("to_command",3); + conveyorBarcodeDeviceDriver.writing(map); instructionService.update(inst); data = AgvService.sendAgvOneModeInst(phase, index, 0); conveyorBarcodeDeviceDriver.setMessage(""); @@ -643,7 +665,9 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic // && (lnshFoldDiscSiteDeviceDriver.getIo_action() == 3 || lnshFoldDiscSiteDeviceDriver.getIo_action() == 2) ) { inst.setExecute_status("5"); - lnshFoldDiscSiteDeviceDriver.writing(3); + Map map = new LinkedHashMap<>(); + map.put("to_command",3); + lnshFoldDiscSiteDeviceDriver.writing(map); instructionService.update(inst); data = AgvService.sendAgvOneModeInst(phase, index, 0); lnshFoldDiscSiteDeviceDriver.setMessage(""); @@ -762,8 +786,14 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic && (lnshPalletizingManipulatorSiteDeviceDriver.getAction() == 2 || lnshPalletizingManipulatorSiteDeviceDriver.getAction() == 3)) { inst.setExecute_status("3"); instructionService.update(inst); - lnshPalletizingManipulatorSiteDeviceDriver.writing(4); - data = AgvService.sendAgvOneModeInst(phase, index, 0); + Map map = new LinkedHashMap<>(); + map.put("to_command",4); + lnshPalletizingManipulatorSiteDeviceDriver.writing(map); + if(lnshPalletizingManipulatorSiteDeviceDriver.getTo_command()==4){ + data = AgvService.sendAgvOneModeInst(phase, index, 0); + }else { + lnshPalletizingManipulatorSiteDeviceDriver.writing(4); + } lnshPalletizingManipulatorSiteDeviceDriver.setMessage(""); flag = true; } else { @@ -798,7 +828,9 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic && (lnshStationDeviceDriver.getAction() == 2 || lnshStationDeviceDriver.getAction() == 3)) { inst.setExecute_status("3"); instructionService.update(inst); - lnshStationDeviceDriver.writing(4); + Map map = new LinkedHashMap<>(); + map.put("to_command",4); + lnshStationDeviceDriver.writing(map); data = AgvService.sendAgvOneModeInst(phase, index, 0); lnshStationDeviceDriver.setMessage(""); flag = true; @@ -886,7 +918,9 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic if (conveyorBarcodeDeviceDriver.getMode() == 2&& conveyorBarcodeDeviceDriver.getMove()==0){ inst.setExecute_status("3"); instructionService.update(inst); - conveyorBarcodeDeviceDriver.writing(4); + Map map = new LinkedHashMap<>(); + map.put("to_command",4); + conveyorBarcodeDeviceDriver.writing(map); data = AgvService.sendAgvOneModeInst(phase, index, 0); conveyorBarcodeDeviceDriver.setMessage(""); flag = true; @@ -917,7 +951,9 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic ) { inst.setExecute_status("3"); instructionService.update(inst); - lnshFoldDiscSiteDeviceDriver.writing(4); + Map map = new LinkedHashMap<>(); + map.put("to_command",4); + lnshFoldDiscSiteDeviceDriver.writing(map); data = AgvService.sendAgvOneModeInst(phase, index, 0); lnshFoldDiscSiteDeviceDriver.setMessage(""); flag = true; @@ -1016,8 +1052,14 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic && (lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() == 2 || lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() == 3)) { inst.setExecute_status("6"); instructionService.update(inst); - lnshPalletizingManipulatorSiteDeviceDriver.writing(5); - data = AgvService.sendAgvOneModeInst(phase, index, 0); + Map map = new LinkedHashMap<>(); + map.put("to_command",5); + lnshPalletizingManipulatorSiteDeviceDriver.writing(map); + if(lnshPalletizingManipulatorSiteDeviceDriver.getTo_command()==5){ + data = AgvService.sendAgvOneModeInst(phase, index, 0); + }else { + lnshPalletizingManipulatorSiteDeviceDriver.writing(5); + } lnshPalletizingManipulatorSiteDeviceDriver.setMessage(""); flag = true; } else { @@ -1048,7 +1090,9 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic && (lnshStationDeviceDriver.getIo_action() == 2 || lnshStationDeviceDriver.getIo_action() == 3)) { inst.setExecute_status("6"); instructionService.update(inst); - lnshStationDeviceDriver.writing(5); + Map map = new LinkedHashMap<>(); + map.put("to_command",5); + lnshStationDeviceDriver.writing(map); data = AgvService.sendAgvOneModeInst(phase, index, 0); lnshStationDeviceDriver.setMessage(""); flag = true; @@ -1146,7 +1190,9 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic if(ObjectUtil.isNotEmpty(inst.getVehicle_code())){ conveyorBarcodeDeviceDriver.writing("to_barcode",inst.getVehicle_code()); } - conveyorBarcodeDeviceDriver.writing(5); + Map map = new LinkedHashMap<>(); + map.put("to_command",5); + conveyorBarcodeDeviceDriver.writing(map); data = AgvService.sendAgvOneModeInst(phase, index, 0); TaskDto task=taskService.findByCode(inst.getTask_code()); String material=task.getDirection(); @@ -1179,7 +1225,9 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic ) { inst.setExecute_status("6"); instructionService.update(inst); - lnshFoldDiscSiteDeviceDriver.writing(5); + Map map = new LinkedHashMap<>(); + map.put("to_command",5); + lnshFoldDiscSiteDeviceDriver.writing(map); data = AgvService.sendAgvOneModeInst(phase, index, 0); lnshFoldDiscSiteDeviceDriver.setMessage(""); flag = true; 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 09c3ad1..fcdb2b3 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 @@ -1,5 +1,6 @@ package org.nl.acs.device_driver.driver; +import cn.hutool.core.util.StrUtil; import lombok.extern.slf4j.Slf4j; import org.jinterop.dcom.common.JIException; import org.nl.acs.opc.*; @@ -104,7 +105,7 @@ public class AbstractOpcDeviceDriver extends AbstractDeviceDriver implements Opc while(var24.hasNext()) { String itemString = (String)var24.next(); - if (!ObjectUtl.isEquals(itemValues.get(itemString), JsonUtl.parse(read.get(itemString)))) { + if (!ObjectUtl.isEquals(String.valueOf(itemValues.get(itemString)), String.valueOf(read.get(itemString)))) { check = false; } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/conveyor_press_station/ConveyorPressStationDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/conveyor_press_station/ConveyorPressStationDeviceDriver.java index a3b57f9..b501e8b 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/conveyor_press_station/ConveyorPressStationDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/conveyor_press_station/ConveyorPressStationDeviceDriver.java @@ -125,6 +125,7 @@ public class ConveyorPressStationDeviceDriver extends AbstractOpcDeviceDriver im String last_material=null; int barcode=0; int last_barcode=0; + String to_mix_num=null; @Override public Device getDevice() { @@ -148,6 +149,7 @@ public class ConveyorPressStationDeviceDriver extends AbstractOpcDeviceDriver im weight = this.itemProtocol.getWeight(); material = this.itemProtocol.getMaterial(); barcode = this.itemProtocol.getBarcode(); + to_mix_num=this.itemProtocol.getToMixNum(); if (mode != last_mode) { this.setRequireSucess(false); @@ -727,6 +729,7 @@ public class ConveyorPressStationDeviceDriver extends AbstractOpcDeviceDriver im if(StrUtil.equals(resp.getIs_standing_finish(),"1")){ Map map = new LinkedHashMap<>(); map.put("to_command",200); + map.put("to_mix_num",resp.getMudBatch()); this.writing(map); this.setRequireSucess(true); message = RequestMethodEnum.getName("barcode_success_apply") + "barcode_success_apply 接口请求成功" + resp.getMessage(); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/conveyor_press_station/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/conveyor_press_station/ItemProtocol.java index a97ec75..5e2d180 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/conveyor_press_station/ItemProtocol.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/conveyor_press_station/ItemProtocol.java @@ -95,8 +95,8 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_to_barcode); } - public int getToMixNum() { - return this.getOpcIntegerValue(item_to_mix_num); + public String getToMixNum() { + return this.getOpcStringValue(item_to_mix_num); } //是否有货 public int hasGoods(int move) { diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_material_distribution/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_material_distribution/ItemProtocol.java new file mode 100644 index 0000000..f881f48 --- /dev/null +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_material_distribution/ItemProtocol.java @@ -0,0 +1,156 @@ +package org.nl.acs.device_driver.lnsh.lnsh_material_distribution; + +import lombok.Getter; +import lombok.Setter; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.device.device_driver.standard_inspect.ItemDto; + + +import java.util.ArrayList; +import java.util.List; +@Slf4j +@Getter +@Setter +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_error = "error"; + public static String item_action = "action"; + public static String item_open_time = "open_time"; + public static String item_standby_time = "standby_time"; + public static String item_production_time = "production_time"; + public static String item_error_time = "error_time"; + public static String item_slip = "slip"; + public static String item_set_weight = "set_weight"; + public static String item_weight = "weight"; + public static String item_to_command = "to_command"; + public static String item_to_error = "to_error"; + public static String item_to_slip = "to_slip"; + private LnshMaterialDistributionDeviceDriver driver; + + public ItemProtocol(LnshMaterialDistributionDeviceDriver driver) { + this.driver = driver; + } + + public int getHeartbeat() { + return this.getOpcIntegerValue(item_heartbeat); + } + + public int getStatus() { + return this.getOpcIntegerValue(item_status); + } + + public int getMode() { + return this.getOpcIntegerValue(item_mode); + } + + public int getAction() { + return this.getOpcIntegerValue(item_action); + } + + public int getError() { + return this.getOpcIntegerValue(item_error); + } + + public String getOpen_time() { + return this.getOpcStringValue(item_open_time); + } + + public int getStandby_time() { + return this.getOpcIntegerValue(item_standby_time); + } + + public int getProduction_time() { + return this.getOpcIntegerValue(item_production_time); + } + + public int getError_time() { + return this.getOpcIntegerValue(item_error_time); + } + + public String getSlip() { return this.getOpcStringValue(item_slip); } + + public Float getSetWeight() { return this.getFloatValue(item_set_weight); } + + public Float getWeight() { return this.getFloatValue(item_weight); } + + public int getTo_command() { + return this.getOpcIntegerValue(item_to_command); + } + + public int getTo_error() { + return this.getOpcIntegerValue(item_to_error); + } + + public int getTo_slip() { + return this.getOpcIntegerValue(item_to_slip); + } + //是否有货 + 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 Float getFloatValue(String protocol) { + Float value = this.driver.getFloatValue(protocol); + if (value == null) { +// log.error(this.getDriver().getDeviceCode() + ":protocol " + protocol + " 信号同步异常!"); + setIsonline(false); + } else { + setIsonline(true); + return value; + } + return 0f; + } + + public String getOpcStringValue(String protocol) { + String value = this.driver.getStringValue(protocol); + if (value == null) { +// log.error("读取错误!"); + } else { + return value; + } + return ""; + } + + public static List getReadableItemDtos() { + ArrayList list = new ArrayList(); + list.add(new ItemDto(item_heartbeat, "心跳", "DB200.B0")); + list.add(new ItemDto(item_mode, "工作模式", "DB200.B1", Boolean.valueOf(true))); + list.add(new ItemDto(item_status, "设备状态", "DB200.B2")); + list.add(new ItemDto(item_action, "动作", "DB200.B3")); + list.add(new ItemDto(item_error, "故障", "DB200.B4")); + list.add(new ItemDto(item_open_time, "开机时间", "DB200.STRING6.50")); + list.add(new ItemDto(item_standby_time, "待机时间", "DB200.D58")); + list.add(new ItemDto(item_production_time, "生产时间", "DB200.D62")); + list.add(new ItemDto(item_error_time, "故障时间", "DB200.D66")); + list.add(new ItemDto(item_slip, "泥料批次", "DB200.STRING70.50")); + list.add(new ItemDto(item_set_weight, "设定重量", "DB200.REAL122")); + list.add(new ItemDto(item_weight, "称重重量", "DB200.REAL126")); + return list; + } + + public static List getWriteableItemDtos() { + ArrayList list = new ArrayList(); + list.add(new ItemDto(item_to_command, "反馈", "DB201.W0", Boolean.valueOf(true))); + list.add(new ItemDto(item_to_error, "物料不一致", "DB200.B2")); + list.add(new ItemDto(item_to_slip, "下发泥料批次", "DB201.STRING4.50")); + return list; + } + +} diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_material_distribution/LnshMaterialDistributionDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_material_distribution/LnshMaterialDistributionDefination.java new file mode 100644 index 0000000..70b852d --- /dev/null +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_material_distribution/LnshMaterialDistributionDefination.java @@ -0,0 +1,58 @@ +package org.nl.acs.device_driver.lnsh.lnsh_material_distribution; + +import org.nl.acs.device.device_driver.standard_inspect.ItemDto; +import org.nl.acs.device_driver.DeviceDriver; +import org.nl.acs.device_driver.defination.OpcDeviceDriverDefination; +import org.nl.acs.opc.Device; +import org.nl.acs.opc.DeviceType; +import org.springframework.stereotype.Service; + +import java.util.LinkedList; +import java.util.List; +@Service +public class LnshMaterialDistributionDefination implements OpcDeviceDriverDefination { + @Override + public String getDriverCode() { + return "lnsh_material_distribution"; + } + + @Override + public String getDriverName() { + return "标准版-布料机"; + } + + @Override + public String getDriverDescription() { + return "标准版-布料机"; + } + + @Override + public DeviceDriver getDriverInstance(Device device) { + return (new LnshMaterialDistributionDeviceDriver()).setDevice(device).setDriverDefination(this); + + } + + @Override + public Class getDeviceDriverType() { + return LnshMaterialDistributionDeviceDriver.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/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_material_distribution/LnshMaterialDistributionDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_material_distribution/LnshMaterialDistributionDeviceDriver.java new file mode 100644 index 0000000..bcd074e --- /dev/null +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_material_distribution/LnshMaterialDistributionDeviceDriver.java @@ -0,0 +1,491 @@ +package org.nl.acs.device_driver.lnsh.lnsh_material_distribution; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import lombok.Getter; +import lombok.RequiredArgsConstructor; +import lombok.Setter; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.AcsConfig; +import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; +import org.nl.acs.device.service.DeviceService; +import org.nl.acs.device_driver.*; +import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; +import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; +import org.nl.acs.device_driver.lnsh.conveyor_press_station.ConveyorPressStationDeviceDriver; +import org.nl.acs.device_driver.lnsh.lnsh_palletizing_manipulator_site.LnshPalletizingManipulatorSiteDeviceDriver; +import org.nl.acs.ext.wms.data.AcsToWmsData.applyTask.ApplyDeviceDto; +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.AcsToWmsData.cloth.ClothRequest; +import org.nl.acs.ext.wms.data.AcsToWmsData.grab.GrabRequest; +import org.nl.acs.ext.wms.service.AcsToWmsService; +import org.nl.acs.heartbeat.HeartbeatEvent; +import org.nl.acs.heartbeat.dto.HeartbeatManageDto; +import org.nl.acs.heartbeat.enums.HeartbeatType; +import org.nl.acs.heartbeat.service.HeartbeatUnifiedService; +import org.nl.acs.instruction.service.InstructionService; +import org.nl.acs.instruction.service.dto.Instruction; +import org.nl.acs.log.service.DeviceExecuteLogService; +import org.nl.acs.monitor.DeviceStageMonitor; +import org.nl.acs.opc.Device; +import org.nl.acs.opc.DeviceAppService; +import org.nl.acs.opc.ObjectUtl; +import org.nl.acs.order.service.ProduceshiftorderService; +import org.nl.acs.route.service.RouteLineService; +import org.nl.acs.task.service.TaskService; +import org.nl.modules.lucene.service.LuceneExecuteLogService; +import org.nl.modules.lucene.service.dto.LuceneLogDto; +import org.nl.modules.system.service.ParamService; +import org.nl.modules.system.service.impl.ParamServiceImpl; +import org.nl.modules.wql.util.SpringContextHolder; +import org.openscada.opc.lib.da.Server; + +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.*; +@Slf4j +@Getter +@Setter +@RequiredArgsConstructor +public class LnshMaterialDistributionDeviceDriver 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"); + + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); + + AcsToWmsService acsToWmsService = SpringContextHolder.getBean("acsToWmsServiceImpl"); + + ProduceshiftorderService produceshiftorderService = SpringContextHolder.getBean("produceshiftorderServiceImpl"); + + LuceneExecuteLogService lucene = SpringContextHolder.getBean("luceneExecuteLogServiceImpl"); + + DeviceAppService deviceAppService = SpringContextHolder.getBean("deviceAppServiceImpl"); + //放货准备锁 + String putReadyLock = null; + //有货标记 + protected boolean has_goods_tag = false; + + int mode = 0; + int error = 0; + int last_mode = 0; + int last_error = 0; + Boolean isonline = true; + int hasGoods = 0; + String message = null; + Boolean iserror = false; + + private Date instruction_require_time = new Date(); + private Date instruction_finished_time = new Date(); + + private int instruction_require_time_out = 3000; + 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; + int status = 0; + int last_status = 0; + String slip=null; + String last_slip=null; + String open_time = null; + String last_open_time = null; + + int standby_time = 0; + int last_standby_time = 0; + int production_time = 0; + int last_production_time = 0; + int error_time = 0; + int last_error_time = 0; + float set_weight=0f; + float weight=0f; + float last_set_weight=0f; + float last_weight=0f; + + @Override + public Device getDevice() { + return this.device; + } + + + @Override + public void execute() { + String message = null; + try { + device_code = this.getDeviceCode(); + mode = this.itemProtocol.getMode(); + error = this.itemProtocol.getError(); + status = this.itemProtocol.getStatus(); + open_time = this.itemProtocol.getOpen_time(); + standby_time = this.itemProtocol.getStandby_time(); + production_time = this.itemProtocol.getProduction_time(); + error_time = this.itemProtocol.getError_time(); + slip=this.itemProtocol.getSlip(); + set_weight=this.itemProtocol.getSetWeight(); + weight = this.itemProtocol.getWeight(); + + if (mode != last_mode) { + this.setRequireSucess(false); + logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + " -> " + mode); + } + 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 (!open_time.equals(last_open_time)) { + logServer.deviceItemValue(this.device_code, "open_time", String.valueOf(open_time)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号open_time:" + last_open_time + " -> " + open_time); + } + if (standby_time != last_standby_time) { + logServer.deviceItemValue(this.device_code, "standby_time", String.valueOf(standby_time)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号standby_time:" + last_standby_time + " -> " + standby_time); + } + if (production_time != last_production_time) { + logServer.deviceItemValue(this.device_code, "production_time", String.valueOf(production_time)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号production_time:" + last_production_time + " -> " + production_time); + } + if (error_time != last_error_time) { + logServer.deviceItemValue(this.device_code, "error_time", String.valueOf(error_time)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号error_time:" + last_error_time + " -> " + error_time); + } + if (weight != last_weight) { + logServer.deviceItemValue(this.device_code, "weight", String.valueOf(weight)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号weight:" + last_weight + " -> " + weight); + } + if (set_weight != last_set_weight) { + logServer.deviceItemValue(this.device_code, "set_weight", String.valueOf(set_weight)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号set_weight:" + last_set_weight + " -> " + set_weight); + } + + if (slip != last_slip) { + logServer.deviceItemValue(this.device_code, "slip", String.valueOf(slip)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号slip:" + last_slip + " -> " + slip); + } + + } catch (Exception var17) { + log.info(var17.getMessage()); + message = "错误:" + var17.getMessage(); + return; + } + + //未联机 + 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; + + + if (mode > 2 && !requireSucess) { + if (ObjectUtil.isNotEmpty(this.device.getExtraValue().get(String.valueOf(mode)))) { + String modethod = this.device.getExtraValue().get(String.valueOf(mode)).toString(); + try { + applyRequest(modethod); + } catch (Exception e) { + message = "错误:" + e.getMessage(); + this.setIserror(true); + } + } else { + message = "无效模式请求,驱动未配置此请求方法"; + } + } else { + message = "无请求"; + } + + } + last_mode = mode; + last_status = status; + last_error = error; + last_open_time = open_time; + last_standby_time = standby_time; + last_production_time = production_time; + last_error_time = error_time; + last_weight = weight; + last_set_weight=set_weight; + last_slip=slip; + } + + + public boolean exe_error() { + if (this.error == 0) { + return true; + } else { + log.debug("设备报警"); + return false; + } + } + + + /** + * 请求 + * + * @param + */ + public synchronized boolean applyRequest(String modethod) throws Exception { + Object obj1 = this; + 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; + Object obj = this.getClass().getDeclaredConstructor().newInstance(); + Method method1 = this.getClass().getMethod(modethod, null); + method1.invoke(this, null); + return true; + } + } + /** + * 布料机反馈重量和泥料 + * @return + */ + public boolean apply_one_cloth() { + ClothRequest request = new ClothRequest(); + request.setDevice_code(this.getDevice_code()); + request.setRequest_medthod_code(Thread.currentThread().getStackTrace()[1].getMethodName()); + request.setRequest_medthod_name(RequestMethodEnum.getName(Thread.currentThread().getStackTrace()[1].getMethodName())); + List LinkDeviceCodeList = this.getExtraDeviceCodes1("link_device_code"); + LnshMaterialDistributionDeviceDriver lnshMaterialDistributionDeviceDriver; + for (int i = 0; i < LinkDeviceCodeList.size(); i++) { + Device getDevice = deviceAppService.findDeviceByCode(LinkDeviceCodeList.get(i).toString()); + if(ObjectUtil.isEmpty(getDevice)){ + continue; + } + ConveyorPressStationDeviceDriver conveyorPressStationDeviceDriver; + if(getDevice.getDeviceDriver() instanceof ConveyorPressStationDeviceDriver){ + conveyorPressStationDeviceDriver=(ConveyorPressStationDeviceDriver) getDevice.getDeviceDriver(); + request.setSlip(conveyorPressStationDeviceDriver.getTo_mix_num()); + } + } + request.setSet_weight(set_weight); + request.setWeight(weight); + message = RequestMethodEnum.getName("apply_one_cloth") + "apply_one_cloth 接口请求LMS..."; + lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "参数:" + JSON.toJSONString(request))); + logServer.deviceExecuteLog(this.device_code, "", "", "参数:" + JSON.toJSONString(request)); + ApplyTaskResponse resp = JSON.toJavaObject(JSONObject.parseObject(acsToWmsService.applyTask(request)),ApplyTaskResponse.class); + if (resp.getCode() == 200) { + this.writing(200); + this.setRequireSucess(true); + message = RequestMethodEnum.getName("apply_one_cloth") + "apply_one_cloth 接口请求成功" + resp.getMessage(); + lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "返回参数:" + JSON.toJSONString(resp))); + } else { + this.writing(400); + message = RequestMethodEnum.getName("apply_one_cloth") + "apply_one_cloth 接口请求失败" + resp.getMessage(); + lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "返回参数:" + JSON.toJSONString(resp))); + } + lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message)); + return true; + + } + + 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; + if (appendMessage == null) { + appendMessage = ""; + } + String opcservcerid = this.getDevice().getOpc_server_id(); + Server server = ReadUtil.getServer(opcservcerid); + Map itemMap = new HashMap(); + ReadUtil.write(itemMap, server); + server.disconnect(); + + } + + 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, value); + + ReadUtil.write(itemMap, server); + server.disconnect(); + logServer.deviceExecuteLog(this.device_code, "", "", param + " 写入 " + value); + } + /** + * 多个信号一起下发电气 + * + * @param map + */ + + public void writing(Map map) { + LuceneExecuteLogService lucene = SpringContextHolder.getBean(LuceneExecuteLogService.class); + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); + Map itemMap = new LinkedHashMap<>(); + map.forEach((key, value) -> { + if (ObjectUtil.isNotEmpty(value)) { + itemMap.put(getToParam() + key, value); + } + }); + if (ObjectUtil.isNotEmpty(itemMap)) { + try { + this.checkcontrol(itemMap); + } catch (Exception e) { + e.printStackTrace(); + try{ + this.checkcontrol(itemMap); + } catch (Exception e1){ + e1.printStackTrace(); + } + } + logServer.deviceExecuteLog(this.getDevice().getDevice_code(), "", "", "下发多个电气信号:" + itemMap); + lucene.deviceExecuteLog(new LuceneLogDto(this.getDeviceCode(), "下发多个电气信号:" + itemMap)); + } + } + /** + * 抽取统一下发电气信号前缀 + * + * @return + */ + public String getToParam() { + return this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() + "."; + } + + + + + public void executing(Server server, Map itemMap) { + ReadUtil.write(itemMap, server); + server.disconnect(); + } + + + 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); + ReadUtil.write(itemMap, server); + ReadUtil.write(itemMap, server); + server.disconnect(); + logServer.deviceExecuteLog(this.device_code, "", "", "to_command 写入 " + command); + lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, "to_command 写入 " + command)); + } + + public static Boolean isExistFieldName(String fieldName, Object obj) throws NoSuchFieldException { + if (obj == null || StrUtil.isBlank(fieldName)) { + return null; + } + //获取这个类的所有属性 + Field[] fields = obj.getClass().getDeclaredFields(); + boolean flag = false; + //循环遍历所有的fields + for (int i = 0; i < fields.length; i++) { + if (fields[i].getName().equals("item_" + fieldName)) { + flag = true; + break; + } + } + return flag; + } + + @Override + public JSONObject getDeviceStatusName() throws Exception { + String status; + switch (this.status) { + case 1: + status = "待机"; + break; + case 2: + status = "生产中"; + break; + case 3: + status = "故障"; + break; + default: + status = String.valueOf(this.status); + } + + String error; + switch (this.error) { + case 1: + error = "急停中"; + break; + case 2: + error = "光幕报警"; + break; + case 3: + error = "本体报警"; + break; + case 4: + error = "未排产报警"; + break; + case 5: + error = "扫码故障"; + break; + default: + error = String.valueOf(this.error); + } + + JSONObject jo = new JSONObject(); + jo.put("device_name", this.getDevice().getDevice_name()); + jo.put("mode", mode); + Object requestNo = this.getExtraValue().get(String.valueOf(this.mode)); + if(ObjectUtil.isNotEmpty(requestNo)){ + jo.put("modeName", this.getModeName(String.valueOf(requestNo))); + } else { + jo.put("modeName", "无效的请求,驱动中未配置"); + } + jo.put("status", status); + jo.put("error", error); + jo.put("open_time", open_time); + jo.put("standby_time", standby_time); + jo.put("production_time", production_time); + jo.put("error_time", error_time); + jo.put("weight", weight); + jo.put("isError", iserror); + jo.put("isOnline", isonline); + jo.put("message", message); + return jo; + } + + @Override + public void setDeviceStatus(JSONObject data) { + + } + + +} diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_pallet_manipulator/LnshPackagePalletManipulatorDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_pallet_manipulator/LnshPackagePalletManipulatorDeviceDriver.java index 034b05e..939d678 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_pallet_manipulator/LnshPackagePalletManipulatorDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_pallet_manipulator/LnshPackagePalletManipulatorDeviceDriver.java @@ -550,10 +550,12 @@ public class LnshPackagePalletManipulatorDeviceDriver extends AbstractOpcDeviceD this.checkcontrol(itemMap); } catch (Exception e) { e.printStackTrace(); + log.error("捕获到异常e:" + e.getMessage(), e); try{ this.checkcontrol(itemMap); } catch (Exception e1){ e1.printStackTrace(); + log.error("捕获到异常e1:" + e.getMessage(), e1); } } logServer.deviceExecuteLog(this.getDevice().getDevice_code(), "", "", "下发多个电气信号:" + itemMap); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_palletizing_manipulator_site/LnshPalletizingManipulatorSiteDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_palletizing_manipulator_site/LnshPalletizingManipulatorSiteDeviceDriver.java index f4dced3..6ba6cab 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_palletizing_manipulator_site/LnshPalletizingManipulatorSiteDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_palletizing_manipulator_site/LnshPalletizingManipulatorSiteDeviceDriver.java @@ -91,6 +91,7 @@ public class LnshPalletizingManipulatorSiteDeviceDriver extends AbstractOpcDevic int last_task = 0; int last_action = 0; int last_ioaction = 0; + int to_command=0; Boolean isonline = true; int hasGoods = 0; Boolean iserror = false; @@ -331,6 +332,7 @@ public class LnshPalletizingManipulatorSiteDeviceDriver extends AbstractOpcDevic pressLayerY3_offset = this.itemProtocol.getPressLayerY3_offset(); tool_coordinate = this.itemProtocol.getTool_coordinate(); tool_coordinate = this.itemProtocol.getTool_coordinate(); + to_command=this.itemProtocol.getToCommand(); if (mode != last_mode) { this.setRequireSucess(false); if(mode==2){ diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_rgv/LnshRGVDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_rgv/LnshRGVDeviceDriver.java index 7e7803d..a2e196a 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_rgv/LnshRGVDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_rgv/LnshRGVDeviceDriver.java @@ -1206,14 +1206,16 @@ public class LnshRGVDeviceDriver extends AbstractOpcDeviceDriver implements Devi this.isSetAddress(nextDevice); String start_addr = startDevice.getExtraValue().get("OPCServer").toString(); String next_addr = nextDevice.getExtraValue().get("OPCServer").toString(); - this.writing("to_onset1", start_addr); - this.writing("to_onset1", start_addr); - this.writing("to_target1", next_addr); - this.writing("to_target1", next_addr); - this.writing("to_task1", dto.getInstruction_code()); - this.writing("to_task1", dto.getInstruction_code()); - this.writing("to_command1", "1"); - this.writing("to_command1", "1"); + Map map = new LinkedHashMap<>(); + map.put("to_onset1", start_addr); + map.put("to_onset1", start_addr); + map.put("to_target1", next_addr); + map.put("to_target1", next_addr); + map.put("to_task1", dto.getInstruction_code()); + map.put("to_task1", dto.getInstruction_code()); + map.put("to_command1", "1"); + map.put("to_command1", "1"); + this.writing(map); log.info("下发前工位任务起始站{}目标站{}任务号{}",start_addr,next_addr,dto.getInstruction_code()); } /** @@ -1229,14 +1231,16 @@ public class LnshRGVDeviceDriver extends AbstractOpcDeviceDriver implements Devi this.isSetAddress(nextDevice); String start_addr = startDevice.getExtraValue().get("OPCServer").toString(); String next_addr = nextDevice.getExtraValue().get("OPCServer").toString(); - this.writing("to_onset2", start_addr); - this.writing("to_onset2", start_addr); - this.writing("to_target2", next_addr); - this.writing("to_target2", next_addr); - this.writing("to_task2", dto.getInstruction_code()); - this.writing("to_task2", dto.getInstruction_code()); - this.writing("to_command2", "1"); - this.writing("to_command2", "1"); + Map map = new LinkedHashMap<>(); + map.put("to_onset2", start_addr); + map.put("to_onset2", start_addr); + map.put("to_target2", next_addr); + map.put("to_target2", next_addr); + map.put("to_task2", dto.getInstruction_code()); + map.put("to_task2", dto.getInstruction_code()); + map.put("to_command2", "1"); + map.put("to_command2", "1"); + this.writing(map); log.info("下发后工位任务起始站{}目标站{}任务号{}",start_addr,next_addr,dto.getInstruction_code()); } @@ -1261,21 +1265,23 @@ public class LnshRGVDeviceDriver extends AbstractOpcDeviceDriver implements Devi String next_addr = nextDevice.getExtraValue().get("OPCServer").toString(); String start_addr2 = startDevice2.getExtraValue().get("OPCServer").toString(); String next_addr2 = nextDevice2.getExtraValue().get("OPCServer").toString(); - this.writing("to_onset1", start_addr); - this.writing("to_onset1", start_addr); - this.writing("to_target1", next_addr); - this.writing("to_target1", next_addr); - this.writing("to_task1", dto.getInstruction_code()); - this.writing("to_task1", dto.getInstruction_code()); + Map map = new LinkedHashMap<>(); + map.put("to_onset1", start_addr); + map.put("to_onset1", start_addr); + map.put("to_target1", next_addr); + map.put("to_target1", next_addr); + map.put("to_task1", dto.getInstruction_code()); + map.put("to_task1", dto.getInstruction_code()); //this.writing("to_command1", "1"); - this.writing("to_onset2", start_addr2); - this.writing("to_onset2", start_addr2); - this.writing("to_target2", next_addr2); - this.writing("to_target2", next_addr2); - this.writing("to_task2", dto.getInstruction_code()); - this.writing("to_task2", dto.getInstruction_code()); - this.writing("to_command2", "1"); - this.writing("to_command2", "1"); + map.put("to_onset2", start_addr2); + map.put("to_onset2", start_addr2); + map.put("to_target2", next_addr2); + map.put("to_target2", next_addr2); + map.put("to_task2", dto.getInstruction_code()); + map.put("to_task2", dto.getInstruction_code()); + map.put("to_command2", "1"); + map.put("to_command2", "1"); + this.writing(map); log.info("下发前后工位任务前起始站{}前目标站{}任务号{}后起始站{}后目标站{}",start_addr,next_addr,dto.getInstruction_code(),start_addr2,next_addr2); } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applyTask/ApplyTaskResponse.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applyTask/ApplyTaskResponse.java index b8645c3..247ceac 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applyTask/ApplyTaskResponse.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applyTask/ApplyTaskResponse.java @@ -32,5 +32,10 @@ public class ApplyTaskResponse extends BaseResponse { * 是否码满规定托盘数 */ private int is_satisfy; + /** + * 泥料批次 + */ + private String mudBatch; + } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/cloth/ClothRequest.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/cloth/ClothRequest.java new file mode 100644 index 0000000..60fdeea --- /dev/null +++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/cloth/ClothRequest.java @@ -0,0 +1,26 @@ +package org.nl.acs.ext.wms.data.AcsToWmsData.cloth; + +import lombok.Data; +import org.nl.acs.ext.wms.data.AcsToWmsData.applyTask.ApplyDeviceDto; +import org.nl.acs.ext.wms.data.BaseRequest; + +import java.util.List; + +@Data +public class ClothRequest extends BaseRequest { + /** + * 泥料批次 + */ + private String slip; + + /** + * 设定重量 + */ + private Float set_weight; + + /** + * 称量重量 + */ + private Float weight; + +} diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/cloth/ClothResponse.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/cloth/ClothResponse.java new file mode 100644 index 0000000..42b435d --- /dev/null +++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/cloth/ClothResponse.java @@ -0,0 +1,7 @@ +package org.nl.acs.ext.wms.data.AcsToWmsData.cloth; + +import org.nl.acs.ext.wms.data.BaseResponse; + +public class ClothResponse extends BaseResponse { + +} diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java index 2741917..76d1e70 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import lombok.Data; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.agv.AgvUtil; @@ -57,8 +58,9 @@ import org.nl.modules.wql.exception.WDKException; import org.nl.modules.wql.util.SpringContextHolder; import org.slf4j.MDC; import org.springframework.http.HttpStatus; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; - +import java.util.Date; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -342,16 +344,16 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { @Override public JSONObject createOrder(JSONObject param) throws Exception { try{ + Date date=new Date(); + log.info("lms下发工单的当前时间是{}",date); MDC.put(log_file_type, log_type); CreateOrderRequest orders = JSON.toJavaObject(param, CreateOrderRequest.class); CreateOrderResponse resp = new CreateOrderResponse(); String request_no = orders.getRequestNo(); JSONArray errArr = new JSONArray(); log.info("CreateOrderRequest - 请求参数 {}", orders.toString()); - for (int i = 0; i < orders.getList().size(); i++) { Boolean is_flag = false; - OrderDto orderDto = orders.getList().get(i); String order_code = orderDto.getWorkorder_code(); String device_code = orderDto.getDevice_code(); @@ -373,8 +375,6 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { String standard_size_height4 = orderDto.getStandard_size_height4(); String standard_weight = orderDto.getStandard_weight(); String detection_error = orderDto.getDetection_error(); - - if (StrUtil.isEmpty(order_code)) { JSONObject json = new JSONObject(); json.put("order_code", order_code); @@ -433,7 +433,6 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { is_flag = true; } if (device.getDeviceDriver() instanceof LnshPressDeviceDriver) { - lnshPressDeviceDriver = (LnshPressDeviceDriver) device.getDeviceDriver(); if (lnshPressDeviceDriver.getMode() == 0) { JSONObject json = new JSONObject(); @@ -480,7 +479,10 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { map.put("to_standard_size_height3", standard_size_height3); map.put("to_standard_size_height4", standard_size_height4); map.put("to_command",100); +// delayed(device_code,map); lnshPressDeviceDriver.writing(map); + Date date1=new Date(); + log.info("压机下发工单的当前时间是{}",date1); is_flag = true; } if (device.getDeviceDriver() instanceof LnshPackagePalletManipulatorDeviceDriver) { @@ -509,9 +511,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { errArr.add(json); continue; } - StringBuilder sb = new StringBuilder(); - sb.append("product_code~~"); - sb.append("formula"); + String formula1=brick_code+"~"+formula; Map map = new LinkedHashMap<>(); map.put("to_order_No", order_code); map.put("to_material", material_code); @@ -521,8 +521,11 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { map.put("to_Htrapezoidal", Htrapezoidal); map.put("to_Wthickness", Wthickness); map.put("to_feedback",100); - map.put("to_formula",sb); + map.put("to_formula",formula1); lnshPackagePalletManipulatorDeviceDriver.writing(map); +// delayed(device_code,map); + Date date2=new Date(); + log.info("分拣下发工单的当前时间是{}",date2); is_flag = true; } if (device.getDeviceDriver() instanceof LnshSplitManipulatorDeviceDriver) { @@ -602,6 +605,8 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { .method(orders.getRequest_medthod_code()) .build(); lucene.interfaceExecuteLog(logDto); + Date date3=new Date(); + log.info("下发工单成功的当前时间是{}",date3); return (JSONObject) JSON.toJSON(resp); } finally { MDC.remove(log_file_type); @@ -1378,4 +1383,19 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { log.info("writeVehicle - 返回参数 {}", result); return result; } + LnshPressDeviceDriver lnshPressDeviceDriver; + LnshPackagePalletManipulatorDeviceDriver lnshPackagePalletManipulatorDeviceDriver; +// @Async +// protected void delayed(String device_code,Map map){ +// Device device = DeviceAppService.findDeviceByCode(device_code); +// if(device.getDeviceDriver() instanceof LnshPressDeviceDriver ){ +// lnshPressDeviceDriver = (LnshPressDeviceDriver) device.getDeviceDriver(); +// lnshPressDeviceDriver.writing(map); +// } +// if (device.getDeviceDriver() instanceof LnshPackagePalletManipulatorDeviceDriver) { +// lnshPackagePalletManipulatorDeviceDriver = (LnshPackagePalletManipulatorDeviceDriver) device.getDeviceDriver(); +// lnshPackagePalletManipulatorDeviceDriver.writing(map); +// } +// } + } diff --git a/acs/nladmin-ui/src/views/acs/device/config.vue b/acs/nladmin-ui/src/views/acs/device/config.vue index a13cb2b..cc45189 100644 --- a/acs/nladmin-ui/src/views/acs/device/config.vue +++ b/acs/nladmin-ui/src/views/acs/device/config.vue @@ -104,6 +104,7 @@ import conveyor_press_station from '@/views/acs/device/driver/lnsh/conveyor_pres import agv_ndc_one from '@/views/acs/device/driver/agv/agv_ndc_one' import agv_ndc_two from '@/views/acs/device/driver/agv/agv_ndc_two' import package_site from './driver/lnsh/package_site.vue' +import lnsh_material_distribution from './driver/lnsh/lnsh_material_distribution.vue' export default { name: 'DeviceConfig', @@ -112,7 +113,7 @@ export default { standard_conveyor_control, standard_conveyor_monitor, lnsh_mixing_mill, lnsh_press, lnsh_palletizing_manipulator, lnsh_fold_disc_site, lnsh_kiln_lane, lnsh_kiln_truss, lnsh_package_line, lnsh_out_kiln_truss, lnsh_package_pallet_manipulator, lnsh_pallet_storage, lnsh_labeling_machine, lnsh_split_manipulator, lnsh_rgv, lnsh_station, lnsh_Laminating_machine, lnsh_package_site, lnsh_crusher, lnsh_palletizing_manipulator_site,conveyor_ssx_barcode, conveyor_press_station, - agv_ndc_one, agv_ndc_two,package_site}, + agv_ndc_one, agv_ndc_two,package_site, lnsh_material_distribution}, dicts: ['device_type'], mixins: [crud], data() { diff --git a/acs/nladmin-ui/src/views/acs/device/driver/lnsh/lnsh_rgv.vue b/acs/nladmin-ui/src/views/acs/device/driver/lnsh/lnsh_rgv.vue index 2048f06..24724e2 100644 --- a/acs/nladmin-ui/src/views/acs/device/driver/lnsh/lnsh_rgv.vue +++ b/acs/nladmin-ui/src/views/acs/device/driver/lnsh/lnsh_rgv.vue @@ -567,7 +567,7 @@ export default { parentForm.is_route = true parentForm.plc_id = this.plc_id parentForm.opc_id = this.opc_id - updateConfig(parentForm, this.form, this.modeform, this.data1, this.data2).then(res => { + updateConfig(parentForm, this.form, this.data1, this.data2).then(res => { this.notify('保存成功', 'success') this.configLoading = false }).catch(err => { diff --git a/acs/nladmin-ui/src/views/acs/instruction/index.vue b/acs/nladmin-ui/src/views/acs/instruction/index.vue index 89e8717..441dcd6 100644 --- a/acs/nladmin-ui/src/views/acs/instruction/index.vue +++ b/acs/nladmin-ui/src/views/acs/instruction/index.vue @@ -32,7 +32,6 @@ style="width: 190px" @change="crud.toQuery" > - 失败 - - - - - - + + + + + + - - - - - - + + + + + + + + + - + + - - - - - - 完成 - 取消 - 下发 - + 完成 + 取消 + 强制取消 + 初始化 diff --git a/acs/nladmin-ui/src/views/acs/monitor/device/index.vue b/acs/nladmin-ui/src/views/acs/monitor/device/index.vue index 636632f..6d89797 100644 --- a/acs/nladmin-ui/src/views/acs/monitor/device/index.vue +++ b/acs/nladmin-ui/src/views/acs/monitor/device/index.vue @@ -483,7 +483,10 @@ export default { } else if (val === 'task1') { const obj = { name: '前工位任务号', value: data[val] } this.arr.push(obj) - } else if (val === 'task2') { + }else if (val==='requireSucess1'){ + const obj = { name: '请求成功标记', value: data[val] } + this.arr.push(obj) + }else if (val === 'task2') { const obj = { name: '后工位任务号', value: data[val] } this.arr.push(obj) } else if (val === 'task') { @@ -510,9 +513,6 @@ export default { } else if (val === 'feedMessage') { const obj = { name: '未反馈电气信号原因', value: data[val] } this.arr.push(obj) - } else if (val === 'requireSucess') { - const obj = { name: '请求成功标记', value: data[val] } - this.arr.push(obj) } else if (val === 'matching_barcode') { const obj = { name: '开始匹配条码', value: data[val] } this.arr.push(obj) @@ -784,6 +784,8 @@ export default { const obj = { name: '模式名称', value: data[val] } this.arr.push(obj) } + // const obj = { name: '请求成功标记', value: data[requireSucess1] } + // this.arr.push(obj) } } // console.log('arr:', this.arr) diff --git a/acs/nladmin-ui/src/views/acs/task/index.vue b/acs/nladmin-ui/src/views/acs/task/index.vue index 293a9e5..ca62d15 100644 --- a/acs/nladmin-ui/src/views/acs/task/index.vue +++ b/acs/nladmin-ui/src/views/acs/task/index.vue @@ -117,6 +117,22 @@ /> + + + + +