From d3bb5fd1d5bb03d5acae1e401377dad4ff193b34 Mon Sep 17 00:00:00 2001 From: zhangjiangwei Date: Wed, 8 Mar 2023 17:44:11 +0800 Subject: [PATCH] =?UTF-8?q?=E9=85=8D=E9=80=81=E4=BB=BB=E5=8A=A1=E8=AF=B7?= =?UTF-8?q?=E6=B1=82=20=E9=85=8D=E9=80=81=E4=BB=BB=E5=8A=A1=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- acs/nladmin-system/pom.xml | 4 +- .../agv/server/impl/ZheDaAgvServiceImpl.java | 319 ++-- .../run/OneNDCSocketConnectionAutoRun.java | 81 +- .../device/service/impl/ConveyorDevice.java | 56 +- .../service/impl/DeviceServiceImpl.java | 37 +- .../org/nl/acs/device/service/impl/Test.java | 20 +- .../agv/ndcone/AgvNdcOneDeviceDriver.java | 51 +- .../BoxPalletizingManipulatorDefination.java | 64 - ...BoxPalletizingManipulatorDeviceDriver.java | 286 --- .../ItemProtocol.java | 109 -- .../CargoLiftConveyorDefination.java | 60 - .../CargoLiftConveyorDeviceDriver.java | 371 ---- .../cargo_lift_conveyor/ItemProtocol.java | 97 - ...mptyVehicleStackingPositionDefination.java | 60 - ...tyVehicleStackingPositionDeviceDriver.java | 238 --- .../ItemProtocol.java | 100 -- .../HailiangSmartplcTestDefination.java | 61 - .../HailiangSmartplcTestDeviceDriver.java | 271 --- .../hailiang_smart_plc_test/ItemProtocol.java | 105 -- .../HongXiangStationDefination.java | 60 - .../HongXiangStationDeviceDriver.java | 230 --- .../hongxiang_conveyor/ItemProtocol.java | 59 - .../HongXiangConveyorDefination.java | 60 - .../HongXiangConveyorDeviceDriver.java | 369 ---- .../hongxiang_device/ItemProtocol.java | 192 -- .../oven_manipulator/ItemProtocol.java | 126 -- .../OvenGantryManipulatorDefination.java | 64 - .../OvenGantryManipulatorDeviceDriver.java | 849 --------- .../basedriver/oven_manipulator/Test.java | 54 - .../paint_conveyor/ItemProtocol.java | 99 -- .../PaintConveyorDefination.java | 61 - .../PaintConveyorDeviceDriver.java | 303 ---- .../plug_pull_device_site/ItemProtocol.java | 161 -- .../PlugPullDeviceSiteDefination.java | 60 - .../PlugPullDeviceSiteDeviceDriver.java | 239 --- .../siemens_conveyor/ItemProtocol.java | 136 -- .../SiemensConveyorDefination.java | 64 - .../SiemensConveyorDeviceDriver.java | 976 ----------- .../siemens_conveyor_ckk/ItemProtocol.java | 132 -- .../SiemensConveyorCkkDefination.java | 64 - .../SiemensConveyorCkkDeviceDriver.java | 914 ---------- .../ItemProtocol.java | 134 -- .../SiemensConveyorLabelingDefination.java | 64 - .../SiemensConveyorLabelingDeviceDriver.java | 931 ---------- .../slit_two_manipulator/ItemProtocol.java | 183 -- .../SlitTwoManipulatorDefination.java | 62 - .../SlitTwoManipulatorDeviceDriver.java | 1554 ----------------- .../acs/ext/wms/data/CreateTaskRequest.java | 14 + .../acs/ext/wms/data/CreateTaskResponse.java | 13 + .../acs/ext/wms/service/AcsToWmsService.java | 2 + .../wms/service/impl/AcsToWmsServiceImpl.java | 23 + .../service/impl/LiKuToAcsServiceImpl.java | 46 +- .../wms/service/impl/WmsToAcsServiceImpl.java | 519 +++--- .../service/impl/InstructionServiceImpl.java | 59 +- .../task/service/impl/TaskServiceImpl.java | 9 +- .../quartz/task/QueryMagicAgvTaskStatus.java | 126 ++ 56 files changed, 795 insertions(+), 10606 deletions(-) delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/box_palletizing_manipulator/BoxPalletizingManipulatorDefination.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/box_palletizing_manipulator/BoxPalletizingManipulatorDeviceDriver.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/box_palletizing_manipulator/ItemProtocol.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/cargo_lift_conveyor/CargoLiftConveyorDefination.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/cargo_lift_conveyor/CargoLiftConveyorDeviceDriver.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/cargo_lift_conveyor/ItemProtocol.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/empty_vehicle_stacking_position/EmptyVehicleStackingPositionDefination.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/empty_vehicle_stacking_position/EmptyVehicleStackingPositionDeviceDriver.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/empty_vehicle_stacking_position/ItemProtocol.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_smart_plc_test/HailiangSmartplcTestDefination.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_smart_plc_test/HailiangSmartplcTestDeviceDriver.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_smart_plc_test/ItemProtocol.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hongxiang_conveyor/HongXiangStationDefination.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hongxiang_conveyor/HongXiangStationDeviceDriver.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hongxiang_conveyor/ItemProtocol.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hongxiang_device/HongXiangConveyorDefination.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hongxiang_device/HongXiangConveyorDeviceDriver.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hongxiang_device/ItemProtocol.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/oven_manipulator/ItemProtocol.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/oven_manipulator/OvenGantryManipulatorDefination.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/oven_manipulator/OvenGantryManipulatorDeviceDriver.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/oven_manipulator/Test.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/paint_conveyor/ItemProtocol.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/paint_conveyor/PaintConveyorDefination.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/paint_conveyor/PaintConveyorDeviceDriver.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/plug_pull_device_site/ItemProtocol.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/plug_pull_device_site/PlugPullDeviceSiteDefination.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/plug_pull_device_site/PlugPullDeviceSiteDeviceDriver.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor/ItemProtocol.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor/SiemensConveyorDefination.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor/SiemensConveyorDeviceDriver.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_ckk/ItemProtocol.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_ckk/SiemensConveyorCkkDefination.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_ckk/SiemensConveyorCkkDeviceDriver.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_labeling/ItemProtocol.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_labeling/SiemensConveyorLabelingDefination.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_labeling/SiemensConveyorLabelingDeviceDriver.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/slit_two_manipulator/ItemProtocol.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/slit_two_manipulator/SlitTwoManipulatorDefination.java delete mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/slit_two_manipulator/SlitTwoManipulatorDeviceDriver.java create mode 100644 acs/nladmin-system/src/main/java/org/nl/modules/quartz/task/QueryMagicAgvTaskStatus.java diff --git a/acs/nladmin-system/pom.xml b/acs/nladmin-system/pom.xml index e02d8fb..a48b3f8 100644 --- a/acs/nladmin-system/pom.xml +++ b/acs/nladmin-system/pom.xml @@ -34,11 +34,11 @@ - + org.apache.commons diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/ZheDaAgvServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/ZheDaAgvServiceImpl.java index a144cbf..20f3b05 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/ZheDaAgvServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/ZheDaAgvServiceImpl.java @@ -10,11 +10,6 @@ import lombok.extern.slf4j.Slf4j; import org.nl.acs.AcsConfig; import org.nl.acs.agv.AgvUtil; import org.nl.acs.agv.server.ZheDaAgvService; -import org.nl.acs.device_driver.basedriver.cargo_lift_conveyor.CargoLiftConveyorDeviceDriver; -import org.nl.acs.device_driver.basedriver.empty_vehicle_stacking_position.EmptyVehicleStackingPositionDeviceDriver; -import org.nl.acs.device_driver.basedriver.hailiang_smart_plc_test.HailiangSmartplcTestDeviceDriver; -import org.nl.acs.device_driver.basedriver.hongxiang_device.HongXiangConveyorDeviceDriver; -import org.nl.acs.device_driver.basedriver.paint_conveyor.PaintConveyorDeviceDriver; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.instruction.service.dto.Instruction; @@ -145,94 +140,94 @@ public class ZheDaAgvServiceImpl implements ZheDaAgvService { DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); Device addressdevice = appService.findDeviceByCode(address); - CargoLiftConveyorDeviceDriver cargoLiftConveyorDeviceDriver; - EmptyVehicleStackingPositionDeviceDriver emptyVehicleStackingPositionDeviceDriver; - HailiangSmartplcTestDeviceDriver hailiangSmartplcTestDeviceDriver; - HongXiangConveyorDeviceDriver hongXiangConveyorDeviceDriver; - PaintConveyorDeviceDriver paintConveyorDeviceDriver; +// CargoLiftConveyorDeviceDriver cargoLiftConveyorDeviceDriver; +// EmptyVehicleStackingPositionDeviceDriver emptyVehicleStackingPositionDeviceDriver; +// HailiangSmartplcTestDeviceDriver hailiangSmartplcTestDeviceDriver; +// HongXiangConveyorDeviceDriver hongXiangConveyorDeviceDriver; +// PaintConveyorDeviceDriver paintConveyorDeviceDriver; //取货的进入前等待和离开等待 if (action.equals("Load")) { if ("EntryRequired".equals(type)) { //共挤线三工位 - if (addressdevice.getDeviceDriver() instanceof HailiangSmartplcTestDeviceDriver) { - hailiangSmartplcTestDeviceDriver = (HailiangSmartplcTestDeviceDriver) addressdevice.getDeviceDriver(); - if ((hailiangSmartplcTestDeviceDriver.getAction() == 1 || hailiangSmartplcTestDeviceDriver.getAction() == 3) && hailiangSmartplcTestDeviceDriver.getMove() == 1) { - inst.setExecute_status("1"); - is_feedback = true; - } - } - //叠盘位 - if (addressdevice.getDeviceDriver() instanceof EmptyVehicleStackingPositionDeviceDriver) { - emptyVehicleStackingPositionDeviceDriver = (EmptyVehicleStackingPositionDeviceDriver) addressdevice.getDeviceDriver(); - int number = emptyVehicleStackingPositionDeviceDriver.getNumber(); - if (number < Integer.valueOf(str)) { - log.info("叠盘位:" + jobno + "当前层高为:" + number + ",不存在第" + str + "的托盘!"); - return null; - } - inst.setExecute_status("1"); - is_feedback = true; - } - //货梯对接线 - if (addressdevice.getDeviceDriver() instanceof CargoLiftConveyorDeviceDriver) { - cargoLiftConveyorDeviceDriver = (CargoLiftConveyorDeviceDriver) addressdevice.getDeviceDriver(); - if ((cargoLiftConveyorDeviceDriver.getAction() == 1 || cargoLiftConveyorDeviceDriver.getAction() == 3) && cargoLiftConveyorDeviceDriver.getMove() == 1) { - inst.setExecute_status("1"); - is_feedback = true; - } - } - //豪凯自动线对接位 - if (addressdevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { - hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) addressdevice.getDeviceDriver(); - if ((hongXiangConveyorDeviceDriver.getAction() == 1 || hongXiangConveyorDeviceDriver.getAction() == 3) && hongXiangConveyorDeviceDriver.getMove() == 1) { - inst.setExecute_status("1"); - is_feedback = true; - } - } - //油漆线 - if (addressdevice.getDeviceDriver() instanceof PaintConveyorDeviceDriver) { - paintConveyorDeviceDriver = (PaintConveyorDeviceDriver) addressdevice.getDeviceDriver(); - if ((paintConveyorDeviceDriver.getAction() == 1 || paintConveyorDeviceDriver.getAction() == 3) && paintConveyorDeviceDriver.getMove() == 1) { - inst.setExecute_status("1"); - is_feedback = true; - } - } +// if (addressdevice.getDeviceDriver() instanceof HailiangSmartplcTestDeviceDriver) { +// hailiangSmartplcTestDeviceDriver = (HailiangSmartplcTestDeviceDriver) addressdevice.getDeviceDriver(); +// if ((hailiangSmartplcTestDeviceDriver.getAction() == 1 || hailiangSmartplcTestDeviceDriver.getAction() == 3) && hailiangSmartplcTestDeviceDriver.getMove() == 1) { +// inst.setExecute_status("1"); +// is_feedback = true; +// } +// } +// //叠盘位 +// if (addressdevice.getDeviceDriver() instanceof EmptyVehicleStackingPositionDeviceDriver) { +// emptyVehicleStackingPositionDeviceDriver = (EmptyVehicleStackingPositionDeviceDriver) addressdevice.getDeviceDriver(); +// int number = emptyVehicleStackingPositionDeviceDriver.getNumber(); +// if (number < Integer.valueOf(str)) { +// log.info("叠盘位:" + jobno + "当前层高为:" + number + ",不存在第" + str + "的托盘!"); +// return null; +// } +// inst.setExecute_status("1"); +// is_feedback = true; +// } +// //货梯对接线 +// if (addressdevice.getDeviceDriver() instanceof CargoLiftConveyorDeviceDriver) { +// cargoLiftConveyorDeviceDriver = (CargoLiftConveyorDeviceDriver) addressdevice.getDeviceDriver(); +// if ((cargoLiftConveyorDeviceDriver.getAction() == 1 || cargoLiftConveyorDeviceDriver.getAction() == 3) && cargoLiftConveyorDeviceDriver.getMove() == 1) { +// inst.setExecute_status("1"); +// is_feedback = true; +// } +// } +// //豪凯自动线对接位 +// if (addressdevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { +// hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) addressdevice.getDeviceDriver(); +// if ((hongXiangConveyorDeviceDriver.getAction() == 1 || hongXiangConveyorDeviceDriver.getAction() == 3) && hongXiangConveyorDeviceDriver.getMove() == 1) { +// inst.setExecute_status("1"); +// is_feedback = true; +// } +// } +// //油漆线 +// if (addressdevice.getDeviceDriver() instanceof PaintConveyorDeviceDriver) { +// paintConveyorDeviceDriver = (PaintConveyorDeviceDriver) addressdevice.getDeviceDriver(); +// if ((paintConveyorDeviceDriver.getAction() == 1 || paintConveyorDeviceDriver.getAction() == 3) && paintConveyorDeviceDriver.getMove() == 1) { +// inst.setExecute_status("1"); +// is_feedback = true; +// } +// } } if ("PauseOnStation".equals(type)) { - if (addressdevice.getDeviceDriver() instanceof HailiangSmartplcTestDeviceDriver) { - hailiangSmartplcTestDeviceDriver = (HailiangSmartplcTestDeviceDriver) addressdevice.getDeviceDriver(); - inst.setExecute_status("2"); - hailiangSmartplcTestDeviceDriver.writing(2); - is_feedback = true; - } - - if (addressdevice.getDeviceDriver() instanceof EmptyVehicleStackingPositionDeviceDriver) { - emptyVehicleStackingPositionDeviceDriver = (EmptyVehicleStackingPositionDeviceDriver) addressdevice.getDeviceDriver(); - inst.setExecute_status("2"); - emptyVehicleStackingPositionDeviceDriver.writing(2); - is_feedback = true; - } - - if (addressdevice.getDeviceDriver() instanceof CargoLiftConveyorDeviceDriver) { - cargoLiftConveyorDeviceDriver = (CargoLiftConveyorDeviceDriver) addressdevice.getDeviceDriver(); - inst.setExecute_status("2"); - cargoLiftConveyorDeviceDriver.writing(2); - is_feedback = true; - } - - if (addressdevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { - hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) addressdevice.getDeviceDriver(); - inst.setExecute_status("2"); - hongXiangConveyorDeviceDriver.writing(2); - is_feedback = true; - } - - if (addressdevice.getDeviceDriver() instanceof PaintConveyorDeviceDriver) { - paintConveyorDeviceDriver = (PaintConveyorDeviceDriver) addressdevice.getDeviceDriver(); - inst.setExecute_status("2"); - paintConveyorDeviceDriver.writing(2); - is_feedback = true; - } +// if (addressdevice.getDeviceDriver() instanceof HailiangSmartplcTestDeviceDriver) { +// hailiangSmartplcTestDeviceDriver = (HailiangSmartplcTestDeviceDriver) addressdevice.getDeviceDriver(); +// inst.setExecute_status("2"); +// hailiangSmartplcTestDeviceDriver.writing(2); +// is_feedback = true; +// } +// +// if (addressdevice.getDeviceDriver() instanceof EmptyVehicleStackingPositionDeviceDriver) { +// emptyVehicleStackingPositionDeviceDriver = (EmptyVehicleStackingPositionDeviceDriver) addressdevice.getDeviceDriver(); +// inst.setExecute_status("2"); +// emptyVehicleStackingPositionDeviceDriver.writing(2); +// is_feedback = true; +// } +// +// if (addressdevice.getDeviceDriver() instanceof CargoLiftConveyorDeviceDriver) { +// cargoLiftConveyorDeviceDriver = (CargoLiftConveyorDeviceDriver) addressdevice.getDeviceDriver(); +// inst.setExecute_status("2"); +// cargoLiftConveyorDeviceDriver.writing(2); +// is_feedback = true; +// } +// +// if (addressdevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { +// hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) addressdevice.getDeviceDriver(); +// inst.setExecute_status("2"); +// hongXiangConveyorDeviceDriver.writing(2); +// is_feedback = true; +// } +// +// if (addressdevice.getDeviceDriver() instanceof PaintConveyorDeviceDriver) { +// paintConveyorDeviceDriver = (PaintConveyorDeviceDriver) addressdevice.getDeviceDriver(); +// inst.setExecute_status("2"); +// paintConveyorDeviceDriver.writing(2); +// is_feedback = true; +// } } } @@ -306,84 +301,84 @@ public class ZheDaAgvServiceImpl implements ZheDaAgvService { //放货的进入前等待和离开等待 if (action.equals("Unload")) { if ("EntryRequired".equals(type)) { - if (addressdevice.getDeviceDriver() instanceof HailiangSmartplcTestDeviceDriver) { - hailiangSmartplcTestDeviceDriver = (HailiangSmartplcTestDeviceDriver) addressdevice.getDeviceDriver(); - if ((hailiangSmartplcTestDeviceDriver.getAction() == 2 || hailiangSmartplcTestDeviceDriver.getAction() == 3) && hailiangSmartplcTestDeviceDriver.getMove() == 0) { - inst.setExecute_status("3"); - is_feedback = true; - } - } - - if (addressdevice.getDeviceDriver() instanceof EmptyVehicleStackingPositionDeviceDriver) { - emptyVehicleStackingPositionDeviceDriver = (EmptyVehicleStackingPositionDeviceDriver) addressdevice.getDeviceDriver(); - int number = emptyVehicleStackingPositionDeviceDriver.getNumber(); - if (number >= Integer.valueOf(str)) { - log.info("叠盘位:" + jobno + "第" + str + "上有货!"); - return null; - } - inst.setExecute_status("3"); - is_feedback = true; - } - - if (addressdevice.getDeviceDriver() instanceof CargoLiftConveyorDeviceDriver) { - cargoLiftConveyorDeviceDriver = (CargoLiftConveyorDeviceDriver) addressdevice.getDeviceDriver(); - if ((cargoLiftConveyorDeviceDriver.getAction() == 2 || cargoLiftConveyorDeviceDriver.getAction() == 3) && cargoLiftConveyorDeviceDriver.getMove() == 0) { - inst.setExecute_status("3"); - is_feedback = true; - } - } - - if (addressdevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { - hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) addressdevice.getDeviceDriver(); - if ((hongXiangConveyorDeviceDriver.getAction() == 2 || hongXiangConveyorDeviceDriver.getAction() == 3) && hongXiangConveyorDeviceDriver.getMove() == 0) { - inst.setExecute_status("3"); - is_feedback = true; - } - } - - if (addressdevice.getDeviceDriver() instanceof PaintConveyorDeviceDriver) { - paintConveyorDeviceDriver = (PaintConveyorDeviceDriver) addressdevice.getDeviceDriver(); - if ((paintConveyorDeviceDriver.getAction() == 2 || paintConveyorDeviceDriver.getAction() == 3) && paintConveyorDeviceDriver.getMove() == 0) { - inst.setExecute_status("3"); - is_feedback = true; - } - } +// if (addressdevice.getDeviceDriver() instanceof HailiangSmartplcTestDeviceDriver) { +// hailiangSmartplcTestDeviceDriver = (HailiangSmartplcTestDeviceDriver) addressdevice.getDeviceDriver(); +// if ((hailiangSmartplcTestDeviceDriver.getAction() == 2 || hailiangSmartplcTestDeviceDriver.getAction() == 3) && hailiangSmartplcTestDeviceDriver.getMove() == 0) { +// inst.setExecute_status("3"); +// is_feedback = true; +// } +// } +// +// if (addressdevice.getDeviceDriver() instanceof EmptyVehicleStackingPositionDeviceDriver) { +// emptyVehicleStackingPositionDeviceDriver = (EmptyVehicleStackingPositionDeviceDriver) addressdevice.getDeviceDriver(); +// int number = emptyVehicleStackingPositionDeviceDriver.getNumber(); +// if (number >= Integer.valueOf(str)) { +// log.info("叠盘位:" + jobno + "第" + str + "上有货!"); +// return null; +// } +// inst.setExecute_status("3"); +// is_feedback = true; +// } +// +// if (addressdevice.getDeviceDriver() instanceof CargoLiftConveyorDeviceDriver) { +// cargoLiftConveyorDeviceDriver = (CargoLiftConveyorDeviceDriver) addressdevice.getDeviceDriver(); +// if ((cargoLiftConveyorDeviceDriver.getAction() == 2 || cargoLiftConveyorDeviceDriver.getAction() == 3) && cargoLiftConveyorDeviceDriver.getMove() == 0) { +// inst.setExecute_status("3"); +// is_feedback = true; +// } +// } +// +// if (addressdevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { +// hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) addressdevice.getDeviceDriver(); +// if ((hongXiangConveyorDeviceDriver.getAction() == 2 || hongXiangConveyorDeviceDriver.getAction() == 3) && hongXiangConveyorDeviceDriver.getMove() == 0) { +// inst.setExecute_status("3"); +// is_feedback = true; +// } +// } +// +// if (addressdevice.getDeviceDriver() instanceof PaintConveyorDeviceDriver) { +// paintConveyorDeviceDriver = (PaintConveyorDeviceDriver) addressdevice.getDeviceDriver(); +// if ((paintConveyorDeviceDriver.getAction() == 2 || paintConveyorDeviceDriver.getAction() == 3) && paintConveyorDeviceDriver.getMove() == 0) { +// inst.setExecute_status("3"); +// is_feedback = true; +// } +// } } if ("PauseOnStation".equals(type)) { - if (addressdevice.getDeviceDriver() instanceof HailiangSmartplcTestDeviceDriver) { - hailiangSmartplcTestDeviceDriver = (HailiangSmartplcTestDeviceDriver) addressdevice.getDeviceDriver(); - inst.setExecute_status("4"); - hailiangSmartplcTestDeviceDriver.writing(3); - is_feedback = true; - } - - if (addressdevice.getDeviceDriver() instanceof EmptyVehicleStackingPositionDeviceDriver) { - emptyVehicleStackingPositionDeviceDriver = (EmptyVehicleStackingPositionDeviceDriver) addressdevice.getDeviceDriver(); - inst.setExecute_status("4"); - emptyVehicleStackingPositionDeviceDriver.writing(3); - is_feedback = true; - } - - if (addressdevice.getDeviceDriver() instanceof CargoLiftConveyorDeviceDriver) { - cargoLiftConveyorDeviceDriver = (CargoLiftConveyorDeviceDriver) addressdevice.getDeviceDriver(); - inst.setExecute_status("4"); - cargoLiftConveyorDeviceDriver.writing(3); - is_feedback = true; - } - - if (addressdevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { - hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) addressdevice.getDeviceDriver(); - inst.setExecute_status("4"); - hongXiangConveyorDeviceDriver.writing(3); - is_feedback = true; - } - - if (addressdevice.getDeviceDriver() instanceof PaintConveyorDeviceDriver) { - paintConveyorDeviceDriver = (PaintConveyorDeviceDriver) addressdevice.getDeviceDriver(); - inst.setExecute_status("4"); - paintConveyorDeviceDriver.writing(3); - is_feedback = true; - } +// if (addressdevice.getDeviceDriver() instanceof HailiangSmartplcTestDeviceDriver) { +// hailiangSmartplcTestDeviceDriver = (HailiangSmartplcTestDeviceDriver) addressdevice.getDeviceDriver(); +// inst.setExecute_status("4"); +// hailiangSmartplcTestDeviceDriver.writing(3); +// is_feedback = true; +// } +// +// if (addressdevice.getDeviceDriver() instanceof EmptyVehicleStackingPositionDeviceDriver) { +// emptyVehicleStackingPositionDeviceDriver = (EmptyVehicleStackingPositionDeviceDriver) addressdevice.getDeviceDriver(); +// inst.setExecute_status("4"); +// emptyVehicleStackingPositionDeviceDriver.writing(3); +// is_feedback = true; +// } +// +// if (addressdevice.getDeviceDriver() instanceof CargoLiftConveyorDeviceDriver) { +// cargoLiftConveyorDeviceDriver = (CargoLiftConveyorDeviceDriver) addressdevice.getDeviceDriver(); +// inst.setExecute_status("4"); +// cargoLiftConveyorDeviceDriver.writing(3); +// is_feedback = true; +// } +// +// if (addressdevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { +// hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) addressdevice.getDeviceDriver(); +// inst.setExecute_status("4"); +// hongXiangConveyorDeviceDriver.writing(3); +// is_feedback = true; +// } +// +// if (addressdevice.getDeviceDriver() instanceof PaintConveyorDeviceDriver) { +// paintConveyorDeviceDriver = (PaintConveyorDeviceDriver) addressdevice.getDeviceDriver(); +// inst.setExecute_status("4"); +// paintConveyorDeviceDriver.writing(3); +// is_feedback = true; +// } } } JSONObject requestjo = new JSONObject(); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java b/acs/nladmin-system/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java index 6eb984a..4a9f2a9 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java @@ -1,6 +1,8 @@ package org.nl.acs.auto.run; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.nl.acs.AcsConfig; import org.nl.acs.agv.server.NDCAgvService; @@ -14,6 +16,8 @@ import org.nl.acs.instruction.service.impl.InstructionServiceImpl; import org.nl.acs.log.service.DeviceExecuteLogService; import org.nl.acs.opc.Device; import org.nl.acs.opc.DeviceAppService; +import org.nl.acs.task.service.TaskService; +import org.nl.acs.task.service.dto.TaskDto; import org.nl.modules.system.service.ParamService; import org.nl.modules.system.service.impl.ParamServiceImpl; import org.nl.modules.wql.util.SpringContextHolder; @@ -76,6 +80,7 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable { DeviceAppService deviceAppService = SpringContextHolder.getBean(DeviceAppService.class); DeviceService deviceService = SpringContextHolder.getBean(DeviceService.class); DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); + TaskService taskService = SpringContextHolder.getBean(TaskService.class); ip = paramService.findByCode(AcsConfig.AGVURL).getValue(); port = Integer.parseInt(paramService.findByCode(AcsConfig.AGVPORT).getValue()); @@ -126,12 +131,12 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable { List insts = null; boolean link_flag = false; Device agv_device = null; - if(carno != 0){ + if (carno != 0) { agv_device = deviceAppService.findDeviceByCode(String.valueOf(carno)); } if (ikey != 0) { inst = instructionService.findByCodeFromCache(String.valueOf(ikey)); - if (ObjectUtil.isEmpty(inst)){ + if (ObjectUtil.isEmpty(inst)) { inst = instructionService.findByCode(String.valueOf(ikey)); } } @@ -154,6 +159,61 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable { inst.setAgv_jobno(String.valueOf(index)); inst.setSend_status("1"); instructionService.update(inst); + TaskDto task = taskService.findByCodeFromCache(inst.getTask_code()); + JSONObject request = new JSONObject(); + request.put("REQCODE", task.getExt_task_id()); + request.put("TASKCODE", task.getTask_code()); + request.put("PODCODE", task.getVehicle_code()); + request.put("TASKTYPE", task.getTask_type()); + request.put("METHOD", "1"); + request.put("AGVCODE", String.valueOf(index)); + request.put("REQTIME", DateUtil.now()); + acsToWmsService.taskExecution(request); + } + data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); + } else if (phase == 0x03) { + // 到达取货点请求取货 + if (ObjectUtil.isNotEmpty(inst)) { + TaskDto task = taskService.findByCodeFromCache(inst.getTask_code()); + JSONObject request = new JSONObject(); + request.put("REQCODE", task.getExt_task_id()); + request.put("TASKCODE", task.getTask_code()); + request.put("PODCODE", task.getVehicle_code()); + request.put("TASKTYPE", task.getTask_type()); + request.put("METHOD", "2"); + request.put("AGVCODE", String.valueOf(index)); + request.put("REQTIME", DateUtil.now()); + acsToWmsService.taskExecution(request); + } + data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); + } else if (phase == 0x05) { + // 取货完成请求离开 + if (ObjectUtil.isNotEmpty(inst)) { + TaskDto task = taskService.findByCodeFromCache(inst.getTask_code()); + JSONObject request = new JSONObject(); + request.put("REQCODE", task.getExt_task_id()); + request.put("TASKCODE", task.getTask_code()); + request.put("PODCODE", task.getVehicle_code()); + request.put("TASKTYPE", task.getTask_type()); + request.put("METHOD", "3"); + request.put("AGVCODE", String.valueOf(index)); + request.put("REQTIME", DateUtil.now()); + acsToWmsService.taskExecution(request); + } + data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); + } else if (phase == 0x07) { + // 请求放货 + if (ObjectUtil.isNotEmpty(inst)) { + TaskDto task = taskService.findByCodeFromCache(inst.getTask_code()); + JSONObject request = new JSONObject(); + request.put("REQCODE", task.getExt_task_id()); + request.put("TASKCODE", task.getTask_code()); + request.put("PODCODE", task.getVehicle_code()); + request.put("TASKTYPE", task.getTask_type()); + request.put("METHOD", "4"); + request.put("AGVCODE", String.valueOf(index)); + request.put("REQTIME", DateUtil.now()); + acsToWmsService.taskExecution(request); } data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); } @@ -171,13 +231,13 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable { } //请求删除任务 //(需要WCS反馈) - else if(phase == 0x30){ + else if (phase == 0x30) { data = NDCAgvService.sendAgvOneModeInst(0x8F, index, 0); } //任务删除确认 //(需要WCS反馈) - else if(phase == 0xFF) { + else if (phase == 0xFF) { if (!ObjectUtil.isEmpty(inst)) { if (!ObjectUtil.isEmpty(inst)) { @@ -189,12 +249,12 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable { } else { //上报异常信息 //(不需要WCS反馈) - if(phase == 0x67){ + if (phase == 0x67) { device = deviceAppService.findDeviceByCode(Integer.toString(arr[27])); } else { device = deviceAppService.findDeviceByCode(Integer.toString(arr[20])); } - if(ObjectUtil.isNotEmpty(device)){ + if (ObjectUtil.isNotEmpty(device)) { if (device.getDeviceDriver() instanceof AgvNdcOneDeviceDriver) { agvNdcOneDeviceDriver = (AgvNdcOneDeviceDriver) device.getDeviceDriver(); agvNdcOneDeviceDriver.processSocket(arr); @@ -211,13 +271,14 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable { } } - } catch (Exception e) { + } catch ( + Exception e) { System.out.println("OneAgv链接异常"); log.info("OneAgv链接异常"); log.error("agv连接出现异常:{}", e); - logServer.deviceExecuteLog("1","","","agv异常"+e.getMessage()); - logServer.deviceExecuteLog("1","","","agv异常" + e); - if(ObjectUtil.isNotEmpty(s)){ + logServer.deviceExecuteLog("1", "", "", "agv异常" + e.getMessage()); + logServer.deviceExecuteLog("1", "", "", "agv异常" + e); + if (ObjectUtil.isNotEmpty(s)) { s.close(); } System.out.println(e.getMessage()); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device/service/impl/ConveyorDevice.java b/acs/nladmin-system/src/main/java/org/nl/acs/device/service/impl/ConveyorDevice.java index 9a685f3..e644478 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device/service/impl/ConveyorDevice.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device/service/impl/ConveyorDevice.java @@ -21,38 +21,38 @@ public class ConveyorDevice { InstructionDto inst; - RecvThread rt; +// RecvThread rt; - public ConveyorDevice(String id) { - if (id == null) { - throw new NullPointerException("ID is null"); - } else { - this.id = id; - } - System.out.println("id:" + id); - rt = new RecvThread(); - rt.run(); - } +// public ConveyorDevice(String id) { +// if (id == null) { +// throw new NullPointerException("ID is null"); +// } else { +// this.id = id; +// } +// System.out.println("id:" + id); +// rt = new RecvThread(); +// rt.run(); +// } public void adviseData() { System.out.println("test"); } - private class RecvThread implements Runnable { - - @SneakyThrows - @Override - public void run() { - System.out.println("test"); - String MODE = "RD1.RD1." + id + ".mode"; - String code = OpcUtl.read(MODE); - if ("2".equals(code)) { - TaskService taskserver = new TaskServiceImpl(); - TaskDto dto = new TaskDto(); - dto.setStart_point_code(id); - dto.setNext_point_code("1002"); - taskserver.create(dto); - } - } - } +// private class RecvThread implements Runnable { +// +// @SneakyThrows +// @Override +// public void run() { +// System.out.println("test"); +// String MODE = "RD1.RD1." + id + ".mode"; +// String code = OpcUtl.read(MODE); +// if ("2".equals(code)) { +// TaskService taskserver = new TaskServiceImpl(); +// TaskDto dto = new TaskDto(); +// dto.setStart_point_code(id); +// dto.setNext_point_code("1002"); +// taskserver.create(dto); +// } +// } +// } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device/service/impl/DeviceServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/device/service/impl/DeviceServiceImpl.java index a50e0ed..3113565 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device/service/impl/DeviceServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device/service/impl/DeviceServiceImpl.java @@ -22,11 +22,6 @@ import org.nl.acs.device.service.*; import org.nl.acs.device.service.dto.*; import org.nl.acs.device_driver.DeviceDriverDefination; import org.nl.acs.device_driver.ScannerDeviceDriver; -import org.nl.acs.device_driver.basedriver.oven_manipulator.OvenGantryManipulatorDeviceDriver; -import org.nl.acs.device_driver.basedriver.siemens_conveyor.SiemensConveyorDeviceDriver; -import org.nl.acs.device_driver.basedriver.siemens_conveyor_ckk.SiemensConveyorCkkDeviceDriver; -import org.nl.acs.device_driver.basedriver.siemens_conveyor_labeling.SiemensConveyorLabelingDeviceDriver; -import org.nl.acs.device_driver.basedriver.slit_two_manipulator.SlitTwoManipulatorDeviceDriver; import org.nl.acs.device_driver.basedriver.standard_conveyor_control_with_scanner.StandardCoveyorControlWithScannerDeviceDriver; import org.nl.acs.device_driver.basedriver.standard_inspect_site.StandardInspectSiteDeviceDriver; import org.nl.acs.device_driver.basedriver.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; @@ -879,7 +874,7 @@ public class DeviceServiceImpl implements DeviceService, ApplicationAutoInitial throw new BadRequestException("未找到对应设备:" + device_code); } StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; - SlitTwoManipulatorDeviceDriver slitTwoManipulatorDeviceDriver; +// SlitTwoManipulatorDeviceDriver slitTwoManipulatorDeviceDriver; //检测站点 StandardInspectSiteDeviceDriver standardInspectSiteDeviceDriver; if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { @@ -938,21 +933,21 @@ public class DeviceServiceImpl implements DeviceService, ApplicationAutoInitial standardInspectSiteDeviceDriver.setBatch(batch); device.setMaterial_type(material_type); device.setBatch(batch); - } else if (device.getDeviceDriver() instanceof SlitTwoManipulatorDeviceDriver) { - slitTwoManipulatorDeviceDriver = (SlitTwoManipulatorDeviceDriver) device.getDeviceDriver(); - slitTwoManipulatorDeviceDriver.setDeviceStatus(form); - } else if (device.getDeviceDriver() instanceof SiemensConveyorDeviceDriver) { - SiemensConveyorDeviceDriver siemensConveyorDeviceDriver = (SiemensConveyorDeviceDriver) device.getDeviceDriver(); - siemensConveyorDeviceDriver.setDeviceStatus(form); - } else if (device.getDeviceDriver() instanceof SiemensConveyorLabelingDeviceDriver) { - SiemensConveyorLabelingDeviceDriver siemensConveyorLabelingDeviceDriver = (SiemensConveyorLabelingDeviceDriver) device.getDeviceDriver(); - siemensConveyorLabelingDeviceDriver.setDeviceStatus(form); - } else if (device.getDeviceDriver() instanceof OvenGantryManipulatorDeviceDriver) { - OvenGantryManipulatorDeviceDriver ovenGantryManipulatorDeviceDriver = (OvenGantryManipulatorDeviceDriver) device.getDeviceDriver(); - ovenGantryManipulatorDeviceDriver.setDeviceStatus(form); - } else if (device.getDeviceDriver() instanceof SiemensConveyorCkkDeviceDriver) { - SiemensConveyorCkkDeviceDriver siemensConveyorCkkDeviceDriver = (SiemensConveyorCkkDeviceDriver) device.getDeviceDriver(); - siemensConveyorCkkDeviceDriver.setDeviceStatus(form); +// } else if (device.getDeviceDriver() instanceof SlitTwoManipulatorDeviceDriver) { +// slitTwoManipulatorDeviceDriver = (SlitTwoManipulatorDeviceDriver) device.getDeviceDriver(); +// slitTwoManipulatorDeviceDriver.setDeviceStatus(form); +// } else if (device.getDeviceDriver() instanceof SiemensConveyorDeviceDriver) { +// SiemensConveyorDeviceDriver siemensConveyorDeviceDriver = (SiemensConveyorDeviceDriver) device.getDeviceDriver(); +// siemensConveyorDeviceDriver.setDeviceStatus(form); +// } else if (device.getDeviceDriver() instanceof SiemensConveyorLabelingDeviceDriver) { +// SiemensConveyorLabelingDeviceDriver siemensConveyorLabelingDeviceDriver = (SiemensConveyorLabelingDeviceDriver) device.getDeviceDriver(); +// siemensConveyorLabelingDeviceDriver.setDeviceStatus(form); +// } else if (device.getDeviceDriver() instanceof OvenGantryManipulatorDeviceDriver) { +// OvenGantryManipulatorDeviceDriver ovenGantryManipulatorDeviceDriver = (OvenGantryManipulatorDeviceDriver) device.getDeviceDriver(); +// ovenGantryManipulatorDeviceDriver.setDeviceStatus(form); +// } else if (device.getDeviceDriver() instanceof SiemensConveyorCkkDeviceDriver) { +// SiemensConveyorCkkDeviceDriver siemensConveyorCkkDeviceDriver = (SiemensConveyorCkkDeviceDriver) device.getDeviceDriver(); +// siemensConveyorCkkDeviceDriver.setDeviceStatus(form); } else if (device.getDeviceDriver() instanceof StandardCoveyorControlWithScannerDeviceDriver){ StandardCoveyorControlWithScannerDeviceDriver standardCoveyorControlWithScannerDeviceDriver = (StandardCoveyorControlWithScannerDeviceDriver) device.getDeviceDriver(); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device/service/impl/Test.java b/acs/nladmin-system/src/main/java/org/nl/acs/device/service/impl/Test.java index 8e73a4e..13a956d 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device/service/impl/Test.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device/service/impl/Test.java @@ -5,14 +5,14 @@ import java.util.List; public class Test { - public static void main(String[] args) { - String device = "1001,1002"; - List list = new ArrayList<>(); - list.add("1001"); - list.add("1002"); - for (int i = 0; i < list.size(); i++) { - ConveyorDevice condev = new ConveyorDevice(list.get(i).toString()); - } - - } +// public static void main(String[] args) { +// String device = "1001,1002"; +// List list = new ArrayList<>(); +// list.add("1001"); +// list.add("1002"); +// for (int i = 0; i < list.size(); i++) { +// ConveyorDevice condev = new ConveyorDevice(list.get(i).toString()); +// } +// +// } } 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 eaac648..6d84508 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 @@ -9,7 +9,6 @@ import org.nl.acs.agv.server.NDCAgvService; import org.nl.acs.auto.run.OneNDCSocketConnectionAutoRun; import org.nl.acs.device.service.DeviceService; import org.nl.acs.device_driver.DeviceDriver; -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.basedriver.standard_storage.StandardStorageDeviceDriver; import org.nl.acs.device_driver.driver.AbstractDeviceDriver; @@ -116,7 +115,7 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic //货架 StandardStorageDeviceDriver standardStorageDeviceDriver; // - SiemensConveyorDeviceDriver siemensConveyorDeviceDriver; +// SiemensConveyorDeviceDriver siemensConveyorDeviceDriver; //分配 车id //(不需要WCS反馈) @@ -170,14 +169,14 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic standardOrdinarySiteDeviceDriver.setInst(inst); } - if (device.getDeviceDriver() instanceof SiemensConveyorDeviceDriver) { - siemensConveyorDeviceDriver = (SiemensConveyorDeviceDriver) device.getDeviceDriver(); - if (siemensConveyorDeviceDriver.getMove() == 1) { - data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); - } else { - log.info("请求取货条件不满足待机有货"); - } - } +// if (device.getDeviceDriver() instanceof SiemensConveyorDeviceDriver) { +// siemensConveyorDeviceDriver = (SiemensConveyorDeviceDriver) device.getDeviceDriver(); +// if (siemensConveyorDeviceDriver.getMove() == 1) { +// data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); +// } else { +// log.info("请求取货条件不满足待机有货"); +// } +// } if (device.getDeviceDriver() instanceof StandardStorageDeviceDriver) { data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); @@ -230,22 +229,22 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic standardOrdinarySiteDeviceDriver.setInst(inst); } - if (device.getDeviceDriver() instanceof SiemensConveyorDeviceDriver) { - siemensConveyorDeviceDriver = (SiemensConveyorDeviceDriver) device.getDeviceDriver(); - if(siemensConveyorDeviceDriver.getTo_command() == 2){ - log.info("取货完成请求离开,当前输送to_command:"+siemensConveyorDeviceDriver.getTo_command()); - data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); - } else { - log.info("取货完成请求离开下发输送信号,当前输送to_command:"+siemensConveyorDeviceDriver.getTo_command()); - List list = new ArrayList(); - Map map = new HashMap(); - map.put("code", "to_command"); - map.put("value", "2"); - list.add(map); - siemensConveyorDeviceDriver.writing(list); - siemensConveyorDeviceDriver.writing(list); - } - } +// if (device.getDeviceDriver() instanceof SiemensConveyorDeviceDriver) { +// siemensConveyorDeviceDriver = (SiemensConveyorDeviceDriver) device.getDeviceDriver(); +// if(siemensConveyorDeviceDriver.getTo_command() == 2){ +// log.info("取货完成请求离开,当前输送to_command:"+siemensConveyorDeviceDriver.getTo_command()); +// data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); +// } else { +// log.info("取货完成请求离开下发输送信号,当前输送to_command:"+siemensConveyorDeviceDriver.getTo_command()); +// List list = new ArrayList(); +// Map map = new HashMap(); +// map.put("code", "to_command"); +// map.put("value", "2"); +// list.add(map); +// siemensConveyorDeviceDriver.writing(list); +// siemensConveyorDeviceDriver.writing(list); +// } +// } if (device.getDeviceDriver() instanceof StandardStorageDeviceDriver) { standardStorageDeviceDriver = (StandardStorageDeviceDriver) device.getDeviceDriver(); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/box_palletizing_manipulator/BoxPalletizingManipulatorDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/box_palletizing_manipulator/BoxPalletizingManipulatorDefination.java deleted file mode 100644 index 5b7d1fc..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/box_palletizing_manipulator/BoxPalletizingManipulatorDefination.java +++ /dev/null @@ -1,64 +0,0 @@ -package org.nl.acs.device_driver.basedriver.box_palletizing_manipulator; - -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 BoxPalletizingManipulatorDefination implements OpcDeviceDriverDefination { - @Override - public String getDriverCode() { - return "box_palletizing_manipulator"; - } - - @Override - public String getDriverName() { - return "木箱码垛-行架机械手"; - } - - @Override - public String getDriverDescription() { - return "木箱码垛-行架机械手"; - } - - @Override - public DeviceDriver getDriverInstance(Device device) { - return (new BoxPalletizingManipulatorDeviceDriver()).setDevice(device).setDriverDefination(this); - - } - - @Override - public Class getDeviceDriverType() { - return BoxPalletizingManipulatorDeviceDriver.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/basedriver/box_palletizing_manipulator/BoxPalletizingManipulatorDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/box_palletizing_manipulator/BoxPalletizingManipulatorDeviceDriver.java deleted file mode 100644 index 88363cb..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/box_palletizing_manipulator/BoxPalletizingManipulatorDeviceDriver.java +++ /dev/null @@ -1,286 +0,0 @@ -package org.nl.acs.device_driver.basedriver.box_palletizing_manipulator; - -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.device_driver.standard_inspect.ReadUtil; -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.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.DeviceAppServiceImpl; -import org.nl.acs.route.service.RouteLineService; -import org.nl.acs.task.service.TaskService; -import org.nl.modules.wql.util.SpringContextHolder; -import org.openscada.opc.lib.da.Server; -import org.springframework.beans.factory.annotation.Autowired; - -import java.util.*; - -/** - * 木箱码垛-行架机械手 - */ -@Slf4j -@Data -@RequiredArgsConstructor -public class BoxPalletizingManipulatorDeviceDriver 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 appService = 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; - - - @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) { - 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); - } - - } 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; - - } - 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; - } - } - - 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, value); -// itemMap.put(to_param, Integer.parseInt(value)); - this.control(itemMap); - } - - public void executing(Server server, Map itemMap) { - this.control(itemMap); - } - - public void writing(int command) { - - //String opcservcerid = this.getDevice().getOpc_server_id(); -//Server server = ReadUtil.getServer(opcservcerid); - Map itemMap = new HashMap(); - this.control(itemMap); - - } - - //将扩展表中的字符串数据转换成集合 - 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; - } - - - @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 = "有货"; - } - - 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()); - return jo; - } - - @Override - public void setDeviceStatus(JSONObject data) { - - } -} diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/box_palletizing_manipulator/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/box_palletizing_manipulator/ItemProtocol.java deleted file mode 100644 index 74a42e8..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/box_palletizing_manipulator/ItemProtocol.java +++ /dev/null @@ -1,109 +0,0 @@ -package org.nl.acs.device_driver.basedriver.box_palletizing_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"; - - - private BoxPalletizingManipulatorDeviceDriver driver; - - public ItemProtocol(BoxPalletizingManipulatorDeviceDriver 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(); - return list; - } - -} - diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/cargo_lift_conveyor/CargoLiftConveyorDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/cargo_lift_conveyor/CargoLiftConveyorDefination.java deleted file mode 100644 index eb17957..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/cargo_lift_conveyor/CargoLiftConveyorDefination.java +++ /dev/null @@ -1,60 +0,0 @@ -package org.nl.acs.device_driver.basedriver.cargo_lift_conveyor; - -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 CargoLiftConveyorDefination implements OpcDeviceDriverDefination { - @Override - public String getDriverCode() { - return "cargo_lift_conveyor"; - } - - @Override - public String getDriverName() { - return "货梯对接线"; - } - - @Override - public String getDriverDescription() { - return "货梯对接线"; - } - - @Override - public DeviceDriver getDriverInstance(Device device) { - return (new CargoLiftConveyorDeviceDriver()).setDevice(device).setDriverDefination(this); - } - - @Override - public Class getDeviceDriverType() { - return CargoLiftConveyorDeviceDriver.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/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/cargo_lift_conveyor/CargoLiftConveyorDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/cargo_lift_conveyor/CargoLiftConveyorDeviceDriver.java deleted file mode 100644 index 73f6ad5..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/cargo_lift_conveyor/CargoLiftConveyorDeviceDriver.java +++ /dev/null @@ -1,371 +0,0 @@ -package org.nl.acs.device_driver.basedriver.cargo_lift_conveyor; - -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.apache.commons.lang3.ObjectUtils; -import org.nl.acs.agv.server.AgvService; -import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; -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.ext.wms.service.impl.AcsToWmsServiceImpl; -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.route.service.RouteLineService; -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.modules.system.service.ParamService; -import org.nl.modules.wql.util.SpringContextHolder; -import org.openscada.opc.lib.da.Server; -import org.springframework.beans.factory.annotation.Autowired; - -import java.util.*; - -/** - * 货梯对接线 - */ -@Slf4j -@Data -@RequiredArgsConstructor -public class CargoLiftConveyorDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { - - protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired - DeviceAppService deviceAppservice = SpringContextHolder.getBean(DeviceAppService.class); - @Autowired - InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class); - @Autowired - DeviceService deviceservice = SpringContextHolder.getBean(DeviceService.class); - @Autowired - TaskService taskserver = SpringContextHolder.getBean(TaskService.class); - @Autowired - RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineService.class); - @Autowired - AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsServiceImpl.class); - @Autowired - ParamService paramService = SpringContextHolder.getBean(ParamService.class); - @Autowired - DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); - @Autowired - AgvService agvService = SpringContextHolder.getBean(AgvService.class); - - private Date instruction_require_time = new Date(); - private Date instruction_finished_time = new Date(); - private Date instruction_apply_time = new Date(); - private int instruction_require_time_out = 3000; - - int heartbeat = 0; - int mode = 0; - int move = 0; - int action = 0; - int error = 0; - int task = 0; - - Boolean isonline = true; - - Boolean iserror = false; - - //1-执行任务;2-取货完成;3-放货完成; - int flag; - - int last_mode = 0; - int last_move = 0; - int last_error = 0; - - String device_code; - - @Override - public Device getDevice() { - return this.device; - } - - //请求成功标记 - Boolean requireSucess = false; - - @Override - public void execute() { - String message = null; - - device_code = this.getDeviceCode(); - heartbeat = this.itemProtocol.getItem_heartbeat(); - mode = this.itemProtocol.getItem_mode(); - move = this.itemProtocol.getItem_mode(); - error = this.itemProtocol.getItem_error(); - task = this.itemProtocol.getItem_task(); - action = this.itemProtocol.getItem_action(); - - - if (mode != last_mode) { - this.setRequireSucess(false); - } - if (move != last_move) { - if (move == 0) { - thingToNothing(); - } - } - if (error != last_error) { - } - - - 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("设备运转模式:等待工作"); - break; - case 2: - //申请任务 - if (move > 0 && !requireSucess) { - instruction_require(); - } - } - switch (flag) { - //取货完成 - case 1: - writing(2); - break; - //放货完成 - case 2: - writing(3); - break; - - } - } - - last_mode = mode; - last_move = move; - last_error = error; - } - - - public synchronized boolean instruction_apply(String container_code) throws Exception { - Date date = new Date(); - if (date.getTime() - this.instruction_apply_time.getTime() < (long) this.instruction_require_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); - return false; - } else { - this.instruction_apply_time = date; - requireSucess = true; - return true; - } - } - - public synchronized boolean instruction_require(){ - 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; - //container_code - TaskDto task = taskserver.queryTaskByDeviceCode(device_code).get(0); - if (!ObjectUtil.isEmpty(task)) { - if (!ObjectUtils.isEmpty(instructionService.findByDeviceCodeFromCache(device_code))) { - return false; - } - 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_device_code = ""; - - /** - * 开始平均分配 - */ - String this_coevice_code = taskserver.queryAssignedByDevice(device_code, task.getNext_device_code()); - if (StrUtil.isEmpty(this_coevice_code)) { - List shortPathsList = routeLineService.getShortPathLines(start_device_code, task.getNext_device_code(), route_plan_code); - RouteLineDto routeLineDto = shortPathsList.get(0); - - String path = routeLineDto.getPath(); - String type = routeLineDto.getType(); - String[] str = path.split("->"); - if (!StrUtil.equals(type, "0")) { - return false; - } - List pathlist = Arrays.asList(str); - int index = 0; - for (int m = 0; m < pathlist.size(); m++) { - if (pathlist.get(m).equals(start_device_code)) { - index = m + 1; - break; - } - } - next_device_code = pathlist.get(index); - } else { - next_device_code = this_coevice_code; - } - //校验路由关系 - List shortPathsList = routeLineService.getShortPathLines(start_device_code, next_device_code, route_plan_code); - if (ObjectUtils.isEmpty(shortPathsList)) { - throw new RuntimeException("路由不通!"); - } - - Device startdevice = deviceAppservice.findDeviceByCode(start_device_code); - Device nextdevice = deviceAppservice.findDeviceByCode(next_device_code); - String next_point_code; - if (StrUtil.equals(deviceAppservice.findDeviceTypeByCode(next_device_code), "storage")) { - next_point_code = task.getTo_x() + "-" + task.getTo_y() + "-" + task.getTo_z(); - } else { - next_point_code = next_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("0"); - instdto.setExecute_device_code(start_point_code); - try { - instructionService.create(instdto); - } catch (Exception e) { - e.printStackTrace(); - log.error("指令创建失败!",e.getMessage()); - return false; - } - //创建指令后修改任务状态 - task.setTask_status("1"); - taskserver.update(task); - requireSucess = true; - } - return true; - } - } - - protected void thingToNothing() { - - } - - public void writing(int command) { - String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + org.nl.acs.device_driver.basedriver.standard_conveyor_control_with_scanner.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); - log.info("设备:" + device_code + ",下发PLC信号" + to_command + ",value:" + command); - } else if (type == 2) { - itemMap.put(to_target, command); - log.info("设备:" + device_code + ",下发PLC信号" + to_target + ",value:" + command); - - } else if (type == 3) { - itemMap.put(to_task, command); - log.info("设备:" + device_code + ",下发PLC信号" + to_task + ",value:" + command); - } - - this.control(itemMap); - } - - @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.getAction() == 0) { - action = "禁止取放"; - } else if (this.getAction() == 1) { - action = "允许取货"; - } else if (this.getAction() == 2) { - action = "允许放货"; - } else if (this.getAction() == 3) { - action = "允许取放"; - } - - - if (this.getMove() == 0) { - move = "无货"; - } else if (this.getMove() == 1) { - move = "有货"; - } else if (this.getMove() == 2) { - move = "有托盘有货"; - } - 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) { - - } -} diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/cargo_lift_conveyor/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/cargo_lift_conveyor/ItemProtocol.java deleted file mode 100644 index 9fde67b..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/cargo_lift_conveyor/ItemProtocol.java +++ /dev/null @@ -1,97 +0,0 @@ -package org.nl.acs.device_driver.basedriver.cargo_lift_conveyor; - -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_task = "task"; - - - 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_to_door = "to_door"; - public static String item_to_floor = "to_floor"; - - - private CargoLiftConveyorDeviceDriver driver; - - public ItemProtocol(CargoLiftConveyorDeviceDriver driver) { - this.driver = driver; - } - - public int getItem_heartbeat() { - return this.getOpcIntegerValue(item_heartbeat); - } - - public int getItem_mode() { - return this.getOpcIntegerValue(item_mode); - } - - public int getItem_move() { - return this.getOpcIntegerValue(item_move); - } - - public int getItem_error() { - return this.getOpcIntegerValue(item_error); - } - - public int getItem_action() { - return this.getOpcIntegerValue(item_action); - } - - public int getItem_task() { - return this.getOpcIntegerValue(item_task); - } - - Boolean isonline; - - public int getOpcIntegerValue(String protocol) { - Integer value = this.driver.getIntegeregerValue(protocol); - if (value == null) { - setIsonline(false); - } else { - setIsonline(true); - return value; - } - return 0; - - } - - public static List getReadableItemDtos() { - ArrayList list = new ArrayList(); - list.add(new ItemDto(item_heartbeat, "心跳", "VW0")); - list.add(new ItemDto(item_mode, "工作模式", "VW2")); - list.add(new ItemDto(item_move, "光电信号", "VW4")); - list.add(new ItemDto(item_action, "取放信号", "VW6")); - list.add(new ItemDto(item_error, "故障", "VW8")); - list.add(new ItemDto(item_task, "任务号", "VD10")); - - return list; - } - - public static List getWriteableItemDtos() { - ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command, "下发命令", "VW102")); - list.add(new ItemDto(item_to_target, "下发目标站", "VW104")); - list.add(new ItemDto(item_to_task, "任务号", "VD108")); - list.add(new ItemDto(item_to_door, "门", "VD112")); - list.add(new ItemDto(item_to_floor, "楼层", "VD114")); - return list; - } - - -} - diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/empty_vehicle_stacking_position/EmptyVehicleStackingPositionDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/empty_vehicle_stacking_position/EmptyVehicleStackingPositionDefination.java deleted file mode 100644 index a5e78fc..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/empty_vehicle_stacking_position/EmptyVehicleStackingPositionDefination.java +++ /dev/null @@ -1,60 +0,0 @@ -package org.nl.acs.device_driver.basedriver.empty_vehicle_stacking_position; - -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 EmptyVehicleStackingPositionDefination implements OpcDeviceDriverDefination { - @Override - public String getDriverCode() { - return "empty_vehicle_stacking_position"; - } - - @Override - public String getDriverName() { - return "永裕叠盘位smart200"; - } - - @Override - public String getDriverDescription() { - return "永裕叠盘位smart200"; - } - - @Override - public DeviceDriver getDriverInstance(Device device) { - return (new EmptyVehicleStackingPositionDeviceDriver()).setDevice(device).setDriverDefination(this); - } - - @Override - public Class getDeviceDriverType() { - return EmptyVehicleStackingPositionDeviceDriver.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/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/empty_vehicle_stacking_position/EmptyVehicleStackingPositionDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/empty_vehicle_stacking_position/EmptyVehicleStackingPositionDeviceDriver.java deleted file mode 100644 index 02651d0..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/empty_vehicle_stacking_position/EmptyVehicleStackingPositionDeviceDriver.java +++ /dev/null @@ -1,238 +0,0 @@ -package org.nl.acs.device_driver.basedriver.empty_vehicle_stacking_position; - -import com.alibaba.fastjson.JSONObject; -import lombok.Data; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.acs.agv.server.AgvService; -import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; -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.ext.wms.service.impl.AcsToWmsServiceImpl; -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.route.service.RouteLineService; -import org.nl.acs.task.service.TaskService; -import org.nl.modules.system.service.ParamService; -import org.nl.modules.wql.util.SpringContextHolder; -import org.openscada.opc.lib.da.Server; -import org.springframework.beans.factory.annotation.Autowired; - -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * 空托盘叠盘位 - */ -@Slf4j -@Data -@RequiredArgsConstructor -public class EmptyVehicleStackingPositionDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { - protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired - DeviceAppService deviceAppservice = SpringContextHolder.getBean(DeviceAppService.class); - @Autowired - InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class); - @Autowired - DeviceService deviceservice = SpringContextHolder.getBean(DeviceService.class); - @Autowired - TaskService taskserver = SpringContextHolder.getBean(TaskService.class); - @Autowired - RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineService.class); - @Autowired - AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsServiceImpl.class); - @Autowired - ParamService paramService = SpringContextHolder.getBean(ParamService.class); - @Autowired - DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); - @Autowired - AgvService agvService = SpringContextHolder.getBean(AgvService.class); - - private Date instruction_require_time = new Date(); - private Date instruction_finished_time = new Date(); - private Date instruction_apply_time = new Date(); - private int instruction_require_time_out = 3000; - - int heartbeat = 0; - int mode = 0; - int move = 0; - int error = 0; - int number = 0; - int container_type = 0; - int task = 0; - - Boolean isonline = true; - - Boolean iserror = false; - - //1-执行任务;2-取货完成;3-放货完成; - int flag; - - int last_mode = 0; - int last_move = 0; - int last_error = 0; - - String device_code; - - @Override - public Device getDevice() { - return this.device; - } - - //请求成功标记 - Boolean requireSucess = false; - - @Override - public void execute() { - String message = null; - - device_code = this.getDeviceCode(); - heartbeat = this.itemProtocol.getItem_heartbeat(); - mode = this.itemProtocol.getItem_mode(); - move = this.itemProtocol.getItem_mode(); - error = this.itemProtocol.getItem_error(); - number = this.itemProtocol.getItem_number(); - container_type = this.itemProtocol.getItem_container_type(); - task = this.itemProtocol.getItem_task(); - - - if (mode != last_mode) { - this.setRequireSucess(false); - } - if (move != last_move) { - if (move == 0) { - thingToNothing(); - } - } - if (error != last_error) { - } - - - 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 (flag) { - //取货完成 - case 1: - writing(2); - break; - //放货完成 - case 2: - writing(3); - break; - - } - } - - last_mode = mode; - last_move = move; - last_error = error; - } - - - public synchronized boolean instruction_apply(String container_code) throws Exception { - Date date = new Date(); - if (date.getTime() - this.instruction_apply_time.getTime() < (long) this.instruction_require_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); - return false; - } else { - this.instruction_apply_time = date; - requireSucess = true; - return true; - } - } - - protected void thingToNothing() { - - } - - public void writing(int command) { - String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + org.nl.acs.device_driver.basedriver.standard_conveyor_control_with_scanner.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(String key, String value) { - String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + key; - //String opcservcerid = this.getDevice().getOpc_server_id(); -//Server server = ReadUtil.getServer(opcservcerid); - Map itemMap = new HashMap(); - itemMap.put(to_command, value); - this.control(itemMap); - } - - @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) { - - } -} diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/empty_vehicle_stacking_position/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/empty_vehicle_stacking_position/ItemProtocol.java deleted file mode 100644 index adc0f2a..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/empty_vehicle_stacking_position/ItemProtocol.java +++ /dev/null @@ -1,100 +0,0 @@ -package org.nl.acs.device_driver.basedriver.empty_vehicle_stacking_position; - -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_error = "error"; - public static String item_number = "number"; - public static String item_container_type = "container_type"; - public static String item_task = "task"; - - - public static String item_to_command = "to_command"; - public static String item_to_target = "to_target"; - public static String item_to_container_type = "to_container_type"; - public static String item_to_task = "to_task"; - - - private EmptyVehicleStackingPositionDeviceDriver driver; - - public ItemProtocol(EmptyVehicleStackingPositionDeviceDriver driver) { - this.driver = driver; - } - - public int getItem_heartbeat() { - return this.getOpcIntegerValue(item_heartbeat); - } - - public int getItem_mode() { - return this.getOpcIntegerValue(item_mode); - } - - public int getItem_move() { - return this.getOpcIntegerValue(item_move); - } - - public int getItem_error() { - return this.getOpcIntegerValue(item_error); - } - - public int getItem_number() { - return this.getOpcIntegerValue(item_number); - } - - public int getItem_container_type() { - return this.getOpcIntegerValue(item_container_type); - } - - public int getItem_task() { - return this.getOpcIntegerValue(item_task); - } - - Boolean isonline; - - public int getOpcIntegerValue(String protocol) { - Integer value = this.driver.getIntegeregerValue(protocol); - if (value == null) { - setIsonline(false); - } else { - setIsonline(true); - return value; - } - return 0; - - } - - public static List getReadableItemDtos() { - ArrayList list = new ArrayList(); - list.add(new ItemDto(item_heartbeat, "心跳", "VW0")); - list.add(new ItemDto(item_mode, "工作模式", "VW2")); - list.add(new ItemDto(item_move, "光电信号", "VW4")); - list.add(new ItemDto(item_number, "数量", "VW6")); - list.add(new ItemDto(item_container_type, "托盘类型", "VW8")); - list.add(new ItemDto(item_error, "故障", "VW10")); - list.add(new ItemDto(item_task, "任务号", "VD12")); - - return list; - } - - public static List getWriteableItemDtos() { - ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command, "下发命令", "VW52")); - list.add(new ItemDto(item_to_target , "下发目标站", "VW54")); - list.add(new ItemDto(item_to_task, "任务号", "VD58")); - return list; - } - - -} - diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_smart_plc_test/HailiangSmartplcTestDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_smart_plc_test/HailiangSmartplcTestDefination.java deleted file mode 100644 index f650942..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_smart_plc_test/HailiangSmartplcTestDefination.java +++ /dev/null @@ -1,61 +0,0 @@ -package org.nl.acs.device_driver.basedriver.hailiang_smart_plc_test; - -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 HailiangSmartplcTestDefination implements OpcDeviceDriverDefination { - @Override - public String getDriverCode() { - return "hailiang_smart_plc_test"; - } - - @Override - public String getDriverName() { - return "永裕共挤线smart200"; - } - - @Override - public String getDriverDescription() { - return "永裕共挤线smart200"; - } - - @Override - public DeviceDriver getDriverInstance(Device device) { - return (new HailiangSmartplcTestDeviceDriver()).setDevice(device).setDriverDefination(this); - - } - - @Override - public Class getDeviceDriverType() { - return HailiangSmartplcTestDeviceDriver.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/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_smart_plc_test/HailiangSmartplcTestDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_smart_plc_test/HailiangSmartplcTestDeviceDriver.java deleted file mode 100644 index 7cf39de..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_smart_plc_test/HailiangSmartplcTestDeviceDriver.java +++ /dev/null @@ -1,271 +0,0 @@ -package org.nl.acs.device_driver.basedriver.hailiang_smart_plc_test; - -import com.alibaba.fastjson.JSONObject; -import lombok.Data; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.acs.agv.server.AgvService; -import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; -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.ext.wms.service.impl.AcsToWmsServiceImpl; -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.Device; -import org.nl.acs.opc.DeviceAppService; -import org.nl.acs.route.service.RouteLineService; -import org.nl.acs.task.service.TaskService; -import org.nl.modules.system.service.ParamService; -import org.nl.modules.wql.util.SpringContextHolder; -import org.openscada.opc.lib.da.Server; -import org.springframework.beans.factory.annotation.Autowired; - -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -/** - * 三工位 - */ -@Slf4j -@Data -@RequiredArgsConstructor -public class HailiangSmartplcTestDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { - protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired - DeviceAppService deviceAppservice = SpringContextHolder.getBean(DeviceAppService.class); - @Autowired - InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class); - @Autowired - DeviceService deviceservice = SpringContextHolder.getBean(DeviceService.class); - @Autowired - TaskService taskserver = SpringContextHolder.getBean(TaskService.class); - @Autowired - RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineService.class); - @Autowired - AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsServiceImpl.class); - @Autowired - ParamService paramService = SpringContextHolder.getBean(ParamService.class); - @Autowired - DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); - @Autowired - AgvService agvService = SpringContextHolder.getBean(AgvService.class); - - private Date instruction_require_time = new Date(); - private Date instruction_finished_time = new Date(); - private Date instruction_apply_time = new Date(); - private int instruction_require_time_out = 3000; - - int heartbeat = 0; - int mode = 0; - int move = 0; - int action = 0; - int error = 0; - int number = 0; - int container_type = 0; - int task = 0; - - Boolean isonline = true; - - Boolean iserror = false; - - //1-执行任务;2-取货完成;3-放货完成; - int flag; - - int last_mode = 0; - int last_move = 0; - int last_error = 0; - - String device_code; - - @Override - public Device getDevice() { - return this.device; - } - - //请求成功标记 - Boolean requireSucess = false; - - @Override - public void execute() { - String message = null; - - device_code = this.getDeviceCode(); - heartbeat = this.itemProtocol.getItem_heartbeat(); - mode = this.itemProtocol.getItem_mode(); - move = this.itemProtocol.getItem_move(); - action = this.itemProtocol.getItem_action(); - error = this.itemProtocol.getItem_error(); - number = this.itemProtocol.getItem_number(); - container_type = this.itemProtocol.getItem_container_type(); - task = this.itemProtocol.getItem_task(); - - - if (mode != last_mode) { - this.setRequireSucess(false); - } - if (move != last_move) { - if (move == 0) { - thingToNothing(); - } - } - if (error != last_error) { - } - - - 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); - JSONObject jo = new JSONObject(); - switch (mode) { - case 1: - log.debug("设备运转模式:等待工作"); - break; - case 4: - //申请空盘 - if (move == 0 && !requireSucess) { - 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); - }else { - //向LMS发送请求,发送终点和托盘类型 - jo.put("type", "1"); - jo.put("point_code", device_code); - jo.put("vehicle_num", "1"); - jo.put("vehicle_type", container_type); - String result = acsToWmsService.applyTaskToWms(jo); - JSONObject res_jo = JSONObject.parseObject(result); - if (res_jo.getString("status").equals("200")){ - requireSucess = true; - } - } - } - break; - case 5: - //满托入库 - if (move == 1 && !requireSucess) { - 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); - }else { - //向LMS发送请求,发送起点 - jo.put("type", "2"); - jo.put("point_code", device_code); - jo.put("vehicle_num", "1"); - jo.put("vehicle_type", container_type); - jo.put("qty", number); - String result = acsToWmsService.applyTaskToWms(jo); - JSONObject res_jo = JSONObject.parseObject(result); - if (res_jo.getString("status").equals("200")){ - requireSucess = true; - } - } - } - break; - } - switch (flag) { - //取货完成 - case 1: - writing(2); - break; - //放货完成 - case 2: - writing(3); - break; - - } - } - - last_mode = mode; - last_move = move; - last_error = error; - } - - - protected void thingToNothing() { - - } - - public void writing(int command) { - String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + org.nl.acs.device_driver.basedriver.standard_conveyor_control_with_scanner.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(String key, String value) { - String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + key; - //String opcservcerid = this.getDevice().getOpc_server_id(); -//Server server = ReadUtil.getServer(opcservcerid); - Map itemMap = new HashMap(); - itemMap.put(to_command, value); - this.control(itemMap); - } - - @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) { - - } - -} diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_smart_plc_test/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_smart_plc_test/ItemProtocol.java deleted file mode 100644 index 4ecd889..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_smart_plc_test/ItemProtocol.java +++ /dev/null @@ -1,105 +0,0 @@ -package org.nl.acs.device_driver.basedriver.hailiang_smart_plc_test; - -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_number = "number"; - public static String item_container_type = "container_type"; - public static String item_task = "task"; - - - public static String item_to_target = "to_target";// - public static String item_to_command = "to_command";// - public static String item_to_task = "to_task";// - - - private HailiangSmartplcTestDeviceDriver driver; - - public ItemProtocol(HailiangSmartplcTestDeviceDriver driver) { - this.driver = driver; - } - - public int getItem_heartbeat() { - return this.getOpcIntegerValue(item_heartbeat); - } - - public int getItem_mode() { - return this.getOpcIntegerValue(item_mode); - } - - public int getItem_move() { - return this.getOpcIntegerValue(item_move); - } - - public int getItem_action() { - return this.getOpcIntegerValue(item_action); - } - - public int getItem_error() { - return this.getOpcIntegerValue(item_error); - } - - public int getItem_number() { - return this.getOpcIntegerValue(item_number); - } - - public int getItem_container_type() { - return this.getOpcIntegerValue(item_container_type); - } - - public int getItem_task() { - return this.getOpcIntegerValue(item_task); - } - - Boolean isonline; - - public int getOpcIntegerValue(String protocol) { - Integer value = this.driver.getIntegeregerValue(protocol); - if (value == null) { - setIsonline(false); - } else { - setIsonline(true); - return value; - } - return 0; - - } - - public static List getReadableItemDtos() { - ArrayList list = new ArrayList(); - list.add(new ItemDto(item_heartbeat, "心跳", "VW0")); - list.add(new ItemDto(item_mode, "模式", "VW2")); - list.add(new ItemDto(item_move, "光电信号", "VW4")); - list.add(new ItemDto(item_action, "取放信号", "VW6")); - list.add(new ItemDto(item_error, "故障", "VW8")); - list.add(new ItemDto(item_number, "数量", "VW10")); - list.add(new ItemDto(item_container_type, "托盘类型", "VW12")); - list.add(new ItemDto(item_task, "任务号", "VD14")); - - return list; - } - - public static List getWriteableItemDtos() { - ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command, "下发命令", "VW102")); - list.add(new ItemDto(item_to_target , "下发目标站", "VW104")); - list.add(new ItemDto(item_to_task, "任务号", "VD108")); - return list; - } - - -} - diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hongxiang_conveyor/HongXiangStationDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hongxiang_conveyor/HongXiangStationDefination.java deleted file mode 100644 index 1a3e4a0..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hongxiang_conveyor/HongXiangStationDefination.java +++ /dev/null @@ -1,60 +0,0 @@ -package org.nl.acs.device_driver.basedriver.hongxiang_conveyor; - -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 HongXiangStationDefination implements OpcDeviceDriverDefination { - @Override - public String getDriverCode() { - return "hongxiang_conveyor"; - } - - @Override - public String getDriverName() { - return "烘箱设备对接位"; - } - - @Override - public String getDriverDescription() { - return "烘箱设备对接位"; - } - - @Override - public DeviceDriver getDriverInstance(Device device) { - return (new HongXiangStationDeviceDriver()).setDevice(device).setDriverDefination(this); - } - - @Override - public Class getDeviceDriverType() { - return HongXiangStationDeviceDriver.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/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hongxiang_conveyor/HongXiangStationDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hongxiang_conveyor/HongXiangStationDeviceDriver.java deleted file mode 100644 index 886c2d8..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hongxiang_conveyor/HongXiangStationDeviceDriver.java +++ /dev/null @@ -1,230 +0,0 @@ -package org.nl.acs.device_driver.basedriver.hongxiang_conveyor; - -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.agv.server.AgvService; -import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; -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.ext.wms.service.impl.AcsToWmsServiceImpl; -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.Device; -import org.nl.acs.opc.DeviceAppService; -import org.nl.acs.route.service.RouteLineService; -import org.nl.acs.task.service.TaskService; -import org.nl.modules.system.service.ParamService; -import org.nl.modules.wql.util.SpringContextHolder; -import org.openscada.opc.lib.da.Server; -import org.springframework.beans.factory.annotation.Autowired; - -import java.util.*; - -/** - * 烘箱对接位 - */ -@Slf4j -@Data -@RequiredArgsConstructor -public class HongXiangStationDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver , DeviceStageMonitor { - protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired - DeviceAppService deviceAppservice = SpringContextHolder.getBean(DeviceAppService.class); - @Autowired - InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class); - @Autowired - DeviceService deviceservice = SpringContextHolder.getBean(DeviceService.class); - @Autowired - TaskService taskserver = SpringContextHolder.getBean(TaskService.class); - @Autowired - RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineService.class); - @Autowired - AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsServiceImpl.class); - @Autowired - ParamService paramService = SpringContextHolder.getBean(ParamService.class); - @Autowired - DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); - @Autowired - AgvService agvService = SpringContextHolder.getBean(AgvService.class); - - private Date instruction_require_time = new Date(); - private Date instruction_finished_time = new Date(); - private Date instruction_apply_time = new Date(); - private int instruction_require_time_out = 3000; - - public int heartbeat = 0; - public int mode = 0; - public int move = 0; - public int action = 0; - public int error = 0; - public int door = 0; - public int temperature = 0; - public int countdown = 0; - public int finish = 0; - public int task = 0; - public int error1 = 0; - public int material = 0; - public int consumption = 0; - public int voltageA = 0; - public int voltageB = 0; - public int voltageC = 0; - public int currentA = 0; - public int currentB = 0; - public int currentC = 0; - - public int last_heartbeat = 0; - public int last_mode = 0; - public int last_move = 0; - public int last_action = 0; - public int last_error = 0; - public int last_door = 0; - public int last_temperature = 0; - public int last_countdown = 0; - public int last_finish = 0; - public int last_task = 0; - public int last_error1 = 0; - public int last_material = 0; - public int last_consumption = 0; - public int last_voltageA = 0; - public int last_voltageB = 0; - public int last_voltageC = 0; - public int last_currentA = 0; - public int last_currentB = 0; - public int last_currentC = 0; - - Boolean isonline = true; - - Boolean iserror = false; - - //1-执行任务;2-取货完成;3-放货完成; - int flag; - - String device_code; - - @Override - public Device getDevice() { - return this.device; - } - - //请求成功标记 - Boolean requireSucess = false; - - @Override - public void execute() { - String message = null; - - device_code = this.getDeviceCode(); - - } - - - public synchronized boolean instruction_apply(String container_code) throws Exception { - Date date = new Date(); - if (date.getTime() - this.instruction_apply_time.getTime() < (long) this.instruction_require_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); - return false; - } else { - this.instruction_apply_time = date; - requireSucess = true; - return true; - } - } - - protected void thingToNothing() { - this.setRequireSucess(false); - } - - 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 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 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); -// itemMap.put(to_param, Integer.parseInt(value)); - 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() - + "." + org.nl.acs.device_driver.basedriver.cargo_lift_conveyor.ItemProtocol.item_to_command; - String to_target = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + org.nl.acs.device_driver.basedriver.cargo_lift_conveyor.ItemProtocol.item_to_target; - String to_task = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + org.nl.acs.device_driver.basedriver.cargo_lift_conveyor.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); - log.info("设备:" + device_code + ",下发PLC信号" + to_command + ",value:" + command); - } else if (type == 2) { - itemMap.put(to_target, command); - log.info("设备:" + device_code + ",下发PLC信号" + to_target + ",value:" + command); - - } else if (type == 3) { - itemMap.put(to_task, command); - log.info("设备:" + device_code + ",下发PLC信号" + to_task + ",value:" + command); - } - - this.control(itemMap); - } - - @Override - public JSONObject getDeviceStatusName() { - JSONObject jo = new JSONObject(); - String mode = ""; - String action = ""; - String move = ""; - jo.put("device_name", this.getDevice().getDevice_name()); - jo.put("mode", "联机"); - jo.put("action", action); - jo.put("isOnline", true); - jo.put("error", this.getError()); - jo.put("isError", this.getIserror()); - jo.put("task", this.getTask()); - return jo; - } - - @Override - public void setDeviceStatus(JSONObject data) { - - } - -} diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hongxiang_conveyor/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hongxiang_conveyor/ItemProtocol.java deleted file mode 100644 index 46f385f..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hongxiang_conveyor/ItemProtocol.java +++ /dev/null @@ -1,59 +0,0 @@ -package org.nl.acs.device_driver.basedriver.hongxiang_conveyor; - -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_action = "action"; - - public static String item_to_command = "to_command"; - - private HongXiangStationDeviceDriver driver; - - public ItemProtocol(HongXiangStationDeviceDriver driver) { - this.driver = driver; - } - - - public int getItem_action(){ - return this.getOpcIntegerValue(item_action); - }; - - Boolean isonline; - - public int getOpcIntegerValue(String protocol) { - Integer value = this.driver.getIntegeregerValue(protocol); - if (value == null) { - setIsonline(false); - } else { - setIsonline(true); - return value; - } - return 0; - - } - - public static List getReadableItemDtos() { - ArrayList list = new ArrayList(); - - list.add(new ItemDto(item_action, "动作信号", "450")); - - return list; - } - - public static List getWriteableItemDtos() { - ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command, "下发命令", "226")); - return list; - } - - -} - diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hongxiang_device/HongXiangConveyorDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hongxiang_device/HongXiangConveyorDefination.java deleted file mode 100644 index 1dbce62..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hongxiang_device/HongXiangConveyorDefination.java +++ /dev/null @@ -1,60 +0,0 @@ -package org.nl.acs.device_driver.basedriver.hongxiang_device; - -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 HongXiangConveyorDefination implements OpcDeviceDriverDefination { - @Override - public String getDriverCode() { - return "hongxiang_device"; - } - - @Override - public String getDriverName() { - return "烘箱工位"; - } - - @Override - public String getDriverDescription() { - return "烘箱工位"; - } - - @Override - public DeviceDriver getDriverInstance(Device device) { - return (new HongXiangConveyorDeviceDriver()).setDevice(device).setDriverDefination(this); - } - - @Override - public Class getDeviceDriverType() { - return HongXiangConveyorDeviceDriver.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/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hongxiang_device/HongXiangConveyorDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hongxiang_device/HongXiangConveyorDeviceDriver.java deleted file mode 100644 index 39f29a9..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hongxiang_device/HongXiangConveyorDeviceDriver.java +++ /dev/null @@ -1,369 +0,0 @@ -package org.nl.acs.device_driver.basedriver.hongxiang_device; - -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import lombok.Data; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.acs.agv.server.AgvService; -import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; -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.data.ApplyLabelingAndBindingRequest; -import org.nl.acs.ext.wms.data.ApplyLabelingAndBindingResponse; -import org.nl.acs.ext.wms.service.AcsToWmsService; -import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; -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.route.service.RouteLineService; -import org.nl.acs.task.service.TaskService; -import org.nl.acs.task.service.dto.TaskDto; -import org.nl.modules.system.service.ParamService; -import org.nl.modules.wql.core.bean.WQLObject; -import org.nl.modules.wql.util.SpringContextHolder; -import org.openscada.opc.lib.da.Server; -import org.springframework.beans.factory.annotation.Autowired; - -import java.util.*; - -/** - * 烘箱工位 - */ -@Slf4j -@Data -@RequiredArgsConstructor -public class HongXiangConveyorDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { - protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired - DeviceAppService deviceAppservice = SpringContextHolder.getBean(DeviceAppService.class); - @Autowired - InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class); - @Autowired - DeviceService deviceservice = SpringContextHolder.getBean(DeviceService.class); - @Autowired - TaskService taskserver = SpringContextHolder.getBean(TaskService.class); - @Autowired - RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineService.class); - @Autowired - AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsServiceImpl.class); - @Autowired - ParamService paramService = SpringContextHolder.getBean(ParamService.class); - @Autowired - DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); - @Autowired - AgvService agvService = SpringContextHolder.getBean(AgvService.class); - - private Date instruction_require_time = new Date(); - private Date instruction_finished_time = new Date(); - private Date instruction_apply_time = new Date(); - private int instruction_require_time_out = 3000; - - public int heartbeat = 0; - public int mode = 0; - public int move = 0; - public int action = 0; - public int error = 0; - public int door = 0; - public int temperature = 0; - public int countdown_house = 0; - public int countdown_min = 0; - public int countdown_sec = 0; - public int finish = 0; - public int task = 0; - public int error1 = 0; - public int material = 0; - public int consumption = 0; - public float voltageA = 0; - public float voltageB = 0; - public float voltageC = 0; - public float currentA = 0; - public float currentB = 0; - public float currentC = 0; - - public int last_heartbeat = 0; - public int last_mode = 0; - public int last_move = 0; - public int last_action = 0; - public int last_error = 0; - public int last_door = 0; - public int last_temperature = 0; - public int last_countdown_house = 0; - public int last_countdown_min = 0; - public int last_countdown_sec = 0; - public int last_finish = 0; - public int last_task = 0; - public int last_error1 = 0; - public int last_material = 0; - public int last_consumption = 0; - public float last_voltageA = 0; - public float last_voltageB = 0; - public float last_voltageC = 0; - public float last_currentA = 0; - public float last_currentB = 0; - public float last_currentC = 0; - - Boolean isonline = true; - - Boolean iserror = false; - - //1-执行任务;2-取货完成;3-放货完成; - int flag; - - String device_code; - - @Override - public Device getDevice() { - return this.device; - } - - //请求成功标记 - Boolean requireSucess = false; - - @Override - public void execute() { - String message = null; - - device_code = this.getDeviceCode(); - heartbeat = this.itemProtocol.getItem_heartbeat(); - mode = this.itemProtocol.getItem_mode(); - move = this.itemProtocol.getItem_move(); - action = this.itemProtocol.getItem_action(); - error = this.itemProtocol.getItem_error(); - door = this.itemProtocol.getItem_door(); - temperature = this.itemProtocol.getItem_temperature(); - countdown_house = this.itemProtocol.getItem_countdown_house(); - countdown_min = this.itemProtocol.getItem_countdown_min(); - countdown_sec = this.itemProtocol.getItem_countdown_sec(); - finish = this.itemProtocol.getItem_finish(); - task = this.itemProtocol.getItem_task(); - error1 = this.itemProtocol.getItem_error1(); - material = this.itemProtocol.getItem_material(); - consumption = this.itemProtocol.getItem_consumption(); - voltageA = this.itemProtocol.getItem_voltageA(); - voltageB = this.itemProtocol.getItem_voltageB(); - voltageC = this.itemProtocol.getItem_voltageC(); - currentA = this.itemProtocol.getItem_currentA(); - currentB = this.itemProtocol.getItem_currentB(); - currentC = this.itemProtocol.getItem_currentC(); - - if (mode != last_mode) { - //this.setRequireSucess(false); - } - if (move != last_move) { - if (move == 0) { - thingToNothing(); - } - } - if (finish != last_finish) { - if (finish == 1) { - logServer.deviceExecuteLog(device_code, "", "", "开始请求标记复位`此时请求标记值为requireSucess:" + requireSucess); - requireSucess = false; - logServer.deviceExecuteLog(device_code, "", "", "请求标记复位成功`此时请求标记值为requireSucess:" + requireSucess); - } - logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + last_finish + "->" + finish); - } - if (mode == 0) { - this.setIsonline(false); - message = "有报警"; - //无报警 - } else if (error != 0) { - this.setIserror(true); - message = "有报警"; - //无报警 - } else { - this.setIsonline(true); - this.setIserror(false); - if (move == 0 && last_move == 1) { - //requireSucess = false; - } - - if (finish == 1 && !requireSucess) { - logServer.deviceExecuteLog(this.getDevice_code(), "", "", "开始烘箱完成反馈lms~"); - //烘箱完成反馈LMS - apply_finish(); - } - } - - last_mode = mode; - last_move = move; - last_action = action; - last_error = error; - last_door = door; - last_temperature = temperature; - last_countdown_house = countdown_house; - last_countdown_min = countdown_min; - last_countdown_sec = countdown_sec; - last_finish = finish; - last_task = task; - last_error1 = error1; - last_material = material; - last_consumption = consumption; - last_voltageA = voltageA; - last_voltageB = voltageB; - last_voltageC = voltageC; - last_currentA = currentA; - last_currentB = currentB; - last_currentC = currentC; - } - - - protected void thingToNothing() { - //this.setRequireSucess(false); - } - - 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 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 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 writing(int type, int command) { - String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + org.nl.acs.device_driver.basedriver.cargo_lift_conveyor.ItemProtocol.item_to_command; - String to_target = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + org.nl.acs.device_driver.basedriver.cargo_lift_conveyor.ItemProtocol.item_to_target; - String to_task = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + org.nl.acs.device_driver.basedriver.cargo_lift_conveyor.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); - log.info("设备:" + device_code + ",下发PLC信号" + to_command + ",value:" + command); - } else if (type == 2) { - itemMap.put(to_target, command); - log.info("设备:" + device_code + ",下发PLC信号" + to_target + ",value:" + command); - - } else if (type == 3) { - itemMap.put(to_task, command); - log.info("设备:" + device_code + ",下发PLC信号" + to_task + ",value:" + command); - } - - this.control(itemMap); - } - - @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 = "联机"; - } - String requireSucess = "0"; - if (this.requireSucess) { - requireSucess = "1"; - } - jo.put("requireSucess", requireSucess); - - 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("temperature", temperature); - jo.put("finish", finish); - jo.put("isOnline", this.getIsonline()); - jo.put("error", this.getError()); - jo.put("isError", this.getIserror()); - jo.put("countdown_house", countdown_house); - jo.put("countdown_min", countdown_min); - jo.put("countdown_sec", countdown_sec); - jo.put("door", door); - 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) { - - } - - public synchronized boolean apply_finish() { - Date date = new Date(); - if (date.getTime() - this.instruction_apply_time.getTime() < (long) this.instruction_require_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); - return false; - } else { - this.instruction_apply_time = date; - ApplyLabelingAndBindingRequest applyLabelingAndBindingRequest = new ApplyLabelingAndBindingRequest(); - JSONObject device_json = WQLObject.getWQLObject("acs_storage_cell").query("storage_code ='" + this.device_code + "'").uniqueResult(0); - String start_point_code = null; - if (!ObjectUtil.isEmpty(device_json)) { - start_point_code = (String) device_json.get("parent_storage_code") == null ? this.device_code : (String) device_json.get("parent_storage_code"); - } - applyLabelingAndBindingRequest.setDevice_code(start_point_code); - applyLabelingAndBindingRequest.setType("3"); - ApplyLabelingAndBindingResponse applyLabelingAndBindingResponse = acsToWmsService.applyLabelingAndBindingRequest(applyLabelingAndBindingRequest); - if (applyLabelingAndBindingResponse.getstatus() == 200) { - requireSucess = true; - logServer.deviceExecuteLog(this.getDevice_code(), "", "", "烘箱完成反馈lms响应消息:" + String.valueOf(applyLabelingAndBindingResponse)); - } else { - logServer.deviceExecuteLog(this.getDevice_code(), "", "", "烘箱完成反馈lms响应消息:" + String.valueOf(applyLabelingAndBindingResponse)); - } - return true; - } - } - -} diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hongxiang_device/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hongxiang_device/ItemProtocol.java deleted file mode 100644 index 03e42ab..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hongxiang_device/ItemProtocol.java +++ /dev/null @@ -1,192 +0,0 @@ -package org.nl.acs.device_driver.basedriver.hongxiang_device; - -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_door = "door"; - public static String item_temperature = "temperature"; - //恒温倒计时 - public static String item_countdown_house = "countdown_house"; - public static String item_countdown_min = "countdown_min"; - public static String item_countdown_sec = "countdown_sec"; - - public static String item_finish = "finish"; - public static String item_task = "task"; - public static String item_error1 = "error1"; - public static String item_material = "material"; - public static String item_consumption = "consumption"; - public static String item_voltageA = "voltageA"; - public static String item_voltageB = "voltageB"; - public static String item_voltageC = "voltageC"; - public static String item_currentA = "currentA"; - public static String item_currentB = "currentB"; - public static String item_currentC = "currentC"; - - - public static String item_to_command = "to_command"; - public static String item_to_open_door = "to_open_door"; - public static String item_to_close_door = "to_close_door"; - public static String item_to_temperature = "to_temperature"; - public static String item_to_material = "to_material"; - public static String item_to_time_house = "to_time_house"; - public static String item_to_time_min = "to_time_min"; - public static String item_to_time_sec = "to_time_sec"; - - public static String item_to_task = "to_task"; - - - private HongXiangConveyorDeviceDriver driver; - - public ItemProtocol(HongXiangConveyorDeviceDriver driver) { - this.driver = driver; - } - - public int getItem_heartbeat(){ - return this.getOpcIntegerValue(item_heartbeat); - } ; - public int getItem_mode(){ - return this.getOpcIntegerValue(item_mode); - } ; - public int getItem_move(){ - return this.getOpcIntegerValue(item_move); - } ; - public int getItem_action(){ - return this.getOpcIntegerValue(item_action); - }; - public int getItem_error(){ - return this.getOpcIntegerValue(item_error); - } ; - public int getItem_door(){ - return this.getOpcIntegerValue(item_door); - } ; - public int getItem_temperature(){ - return this.getOpcIntegerValue(item_temperature); - } ; - public int getItem_countdown_house(){ - return this.getOpcIntegerValue(item_countdown_house); - } ; - public int getItem_countdown_min(){ - return this.getOpcIntegerValue(item_countdown_min); - } ; - public int getItem_countdown_sec(){ - return this.getOpcIntegerValue(item_countdown_sec); - } ; - public int getItem_finish(){ - return this.getOpcIntegerValue(item_finish); - } ; - public int getItem_task(){ - return this.getOpcIntegerValue(item_task); - } ; - public int getItem_error1(){ - return this.getOpcIntegerValue(item_error1); - } ; - public int getItem_material(){ - return this.getOpcIntegerValue(item_material); - } ; - public int getItem_consumption(){ - return this.getOpcIntegerValue(item_consumption); - } ; - public float getItem_voltageA(){ - return this.getOpcFloatValue(item_voltageA); - } ; - public float getItem_voltageB(){ - return this.getOpcFloatValue(item_voltageB); - } ; - public float getItem_voltageC(){ - return this.getOpcFloatValue(item_voltageC); - } ; - public float getItem_currentA(){ - return this.getOpcFloatValue(item_currentA); - } ; - public float getItem_currentB(){ - return this.getOpcFloatValue(item_currentB); - } ; - public float getItem_currentC(){ - return this.getOpcFloatValue(item_currentC); - } ; - - Boolean isonline; - - public int getOpcIntegerValue(String protocol) { - Integer value = this.driver.getIntegeregerValue(protocol); - if (value == null) { - setIsonline(false); - } else { - setIsonline(true); - return value; - } - return 0; - - } - - public float getOpcFloatValue(String protocol) { - Float value = this.driver.getDoubleValue(protocol); - if (value == null) { - setIsonline(false); - } else { - setIsonline(true); - return value; - } - return 0L; - - } - - 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")); - 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")); - return list; - } - - @Override - public String toString() { - return ""; - } - -} - diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/oven_manipulator/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/oven_manipulator/ItemProtocol.java deleted file mode 100644 index c963542..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/oven_manipulator/ItemProtocol.java +++ /dev/null @@ -1,126 +0,0 @@ -package org.nl.acs.device_driver.basedriver.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/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/oven_manipulator/OvenGantryManipulatorDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/oven_manipulator/OvenGantryManipulatorDefination.java deleted file mode 100644 index e22c4a5..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/oven_manipulator/OvenGantryManipulatorDefination.java +++ /dev/null @@ -1,64 +0,0 @@ -package org.nl.acs.device_driver.basedriver.oven_manipulator; - -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 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/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/oven_manipulator/OvenGantryManipulatorDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/oven_manipulator/OvenGantryManipulatorDeviceDriver.java deleted file mode 100644 index 2b58f54..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/oven_manipulator/OvenGantryManipulatorDeviceDriver.java +++ /dev/null @@ -1,849 +0,0 @@ -package org.nl.acs.device_driver.basedriver.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.JSONArray; -import com.alibaba.fastjson.JSONObject; -import lombok.Data; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; -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.hongxiang_conveyor.HongXiangStationDeviceDriver; -import org.nl.acs.device_driver.basedriver.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.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.DeviceAppServiceImpl; -import org.nl.acs.route.service.RouteLineService; -import org.nl.acs.task.service.TaskService; -import org.nl.acs.task.service.dto.TaskDto; -import org.nl.modules.common.exception.BadRequestException; -import org.nl.modules.wql.util.SpringContextHolder; -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(), "0")) { - inst1.setInstruction_status("1"); - 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", "1"); -// 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", "1"); - 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", "1"); - } - 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", "1"); - 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(), "1")) { - 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", "1"); -// } - if (nextDevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { - hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) nextDevice.getDeviceDriver(); - hongXiangConveyorDeviceDriver.writing("to_close_door", "1"); - 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("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"))) { - throw new BadRequestException("设备:" + startDevice.getDevice_code() + "未设置电气调度号!"); - } - if (ObjectUtil.isEmpty(nextDevice.getExtraValue().get("address"))) { - throw new BadRequestException("设备:" + 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", "1"); - - 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("0"); - 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("1"); - 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("设备:" + 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("设备:" + 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", "1"); - HongXiangConveyorDeviceDriver hongXiangConveyorDeviceDriver; - if (nextDevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { - hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) nextDevice.getDeviceDriver(); - hongXiangConveyorDeviceDriver.writing("to_open_door", "1"); - hongXiangConveyorDeviceDriver.writing("to_open_door", "1"); - } - if (startDevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { - hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) startDevice.getDeviceDriver(); - hongXiangConveyorDeviceDriver.writing("to_open_door", "1"); - hongXiangConveyorDeviceDriver.writing("to_open_door", "1"); - } - 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); - } - - //判断取货位或放货位为烘箱设备时关联的同一列烘箱设备是否有开门 - 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("设备号:" + 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("设备:" + start_device_code + "关联设备->" + deviceCode + "为空!"); - } - 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("设备号:" + 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("设备:" + next_device_code + "关联设备->" + deviceCode + "为空!"); - } - 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); - - } - - //将扩展表中的字符串数据转换成集合 - 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 = "1"; - } - jo.put("requireSucess", requireSucess); - if (this.getAction() == 1) { - action = "取货中"; - } else if (this.getAction() == 2) { - action = "取货完成"; - } else if (this.getAction() == 3) { - action = "放货中"; - } else if (this.getAction() == 4) { - action = "放货完成"; - } - - jo.put("device_name", this.getDevice().getDevice_name()); - jo.put("mode", mode); - jo.put("move", move); - jo.put("action", action); - jo.put("task", task); - jo.put("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, "1")) { - 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/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/oven_manipulator/Test.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/oven_manipulator/Test.java deleted file mode 100644 index 5aba10e..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/oven_manipulator/Test.java +++ /dev/null @@ -1,54 +0,0 @@ -package org.nl.acs.device_driver.basedriver.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/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/paint_conveyor/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/paint_conveyor/ItemProtocol.java deleted file mode 100644 index 8707e77..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/paint_conveyor/ItemProtocol.java +++ /dev/null @@ -1,99 +0,0 @@ -package org.nl.acs.device_driver.basedriver.paint_conveyor; - -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_number = "number"; - public static String item_task = "task"; - - - public static String item_to_target = "to_target";// - public static String item_to_command = "to_command";// - public static String item_to_task = "to_task";// - - - private PaintConveyorDeviceDriver driver; - - public ItemProtocol(PaintConveyorDeviceDriver driver) { - this.driver = driver; - } - - public int getItem_heartbeat() { - return this.getOpcIntegerValue(item_heartbeat); - } - - public int getItem_mode() { - return this.getOpcIntegerValue(item_mode); - } - - public int getItem_move() { - return this.getOpcIntegerValue(item_move); - } - - public int getItem_action() { - return this.getOpcIntegerValue(item_action); - } - - public int getItem_error() { - return this.getOpcIntegerValue(item_error); - } - - public int getItem_number() { - return this.getOpcIntegerValue(item_number); - } - - public int getItem_task() { - return this.getOpcIntegerValue(item_task); - } - - Boolean isonline; - - public int getOpcIntegerValue(String protocol) { - Integer value = this.driver.getIntegeregerValue(protocol); - if (value == null) { - setIsonline(false); - } else { - setIsonline(true); - return value; - } - return 0; - - } - - public static List getReadableItemDtos() { - ArrayList list = new ArrayList(); - list.add(new ItemDto(item_heartbeat, "心跳", "D0000000")); - list.add(new ItemDto(item_mode, "模式", "D0000004")); - list.add(new ItemDto(item_move, "光电信号", "D0000008")); - list.add(new ItemDto(item_action, "取放信号", "D0000012")); - list.add(new ItemDto(item_error, "故障", "D0000016")); - list.add(new ItemDto(item_number, "数量", "D0000020")); - list.add(new ItemDto(item_task, "任务号", "D0000024")); - - return list; - } - - public static List getWriteableItemDtos() { - ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command, "下发命令", "D00000102")); - list.add(new ItemDto(item_to_target , "下发目标站", "D00000106")); - list.add(new ItemDto(item_to_task, "任务号", "D00000110")); - return list; - } - - -} - diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/paint_conveyor/PaintConveyorDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/paint_conveyor/PaintConveyorDefination.java deleted file mode 100644 index 322e715..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/paint_conveyor/PaintConveyorDefination.java +++ /dev/null @@ -1,61 +0,0 @@ -package org.nl.acs.device_driver.basedriver.paint_conveyor; - -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 PaintConveyorDefination implements OpcDeviceDriverDefination { - @Override - public String getDriverCode() { - return "paint_conveyor"; - } - - @Override - public String getDriverName() { - return "油漆线"; - } - - @Override - public String getDriverDescription() { - return "油漆线"; - } - - @Override - public DeviceDriver getDriverInstance(Device device) { - return (new PaintConveyorDeviceDriver()).setDevice(device).setDriverDefination(this); - - } - - @Override - public Class getDeviceDriverType() { - return PaintConveyorDeviceDriver.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/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/paint_conveyor/PaintConveyorDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/paint_conveyor/PaintConveyorDeviceDriver.java deleted file mode 100644 index 64bca67..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/paint_conveyor/PaintConveyorDeviceDriver.java +++ /dev/null @@ -1,303 +0,0 @@ -package org.nl.acs.device_driver.basedriver.paint_conveyor; - -import com.alibaba.fastjson.JSONObject; -import lombok.Data; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.acs.agv.server.AgvService; -import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; -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.ext.wms.service.impl.AcsToWmsServiceImpl; -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.Device; -import org.nl.acs.opc.DeviceAppService; -import org.nl.acs.route.service.RouteLineService; -import org.nl.acs.task.service.TaskService; -import org.nl.modules.system.service.ParamService; -import org.nl.modules.wql.util.SpringContextHolder; -import org.openscada.opc.lib.da.Server; -import org.springframework.beans.factory.annotation.Autowired; - -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -/** - * 油漆线 - */ -@Slf4j -@Data -@RequiredArgsConstructor -public class PaintConveyorDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { - protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired - DeviceAppService deviceAppservice = SpringContextHolder.getBean(DeviceAppService.class); - @Autowired - InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class); - @Autowired - DeviceService deviceservice = SpringContextHolder.getBean(DeviceService.class); - @Autowired - TaskService taskserver = SpringContextHolder.getBean(TaskService.class); - @Autowired - RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineService.class); - @Autowired - AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsServiceImpl.class); - @Autowired - ParamService paramService = SpringContextHolder.getBean(ParamService.class); - @Autowired - DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); - @Autowired - AgvService agvService = SpringContextHolder.getBean(AgvService.class); - - private Date instruction_require_time = new Date(); - private Date instruction_finished_time = new Date(); - private Date instruction_apply_time = new Date(); - private int instruction_require_time_out = 3000; - - int heartbeat = 0; - int mode = 0; - int move = 0; - int action = 0; - int error = 0; - int number = 0; - int task = 0; - - Boolean isonline = true; - - Boolean iserror = false; - - //1-执行任务;2-取货完成;3-放货完成; - int flag; - - int last_mode = 0; - int last_move = 0; - int last_error = 0; - - String device_code; - - @Override - public Device getDevice() { - return this.device; - } - - //请求成功标记 - Boolean requireSucess = false; - - @Override - public void execute() { - String message = null; - - device_code = this.getDeviceCode(); - heartbeat = this.itemProtocol.getItem_heartbeat(); - mode = this.itemProtocol.getItem_mode(); - move = this.itemProtocol.getItem_move(); - action = this.itemProtocol.getItem_action(); - error = this.itemProtocol.getItem_error(); - number = this.itemProtocol.getItem_number(); - task = this.itemProtocol.getItem_task(); - - - if (mode != last_mode) { - this.setRequireSucess(false); - } - if (move != last_move) { - if (move == 0) { - thingToNothing(); - } - } - if (error != last_error) { - } - - - 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); - JSONObject jo = new JSONObject(); - switch (mode) { - case 1: - log.debug("设备运转模式:等待工作"); - break; - case 5: - //下料位申请空盘 - if (move == 0 && !requireSucess) { - //向LMS发送请求,发送终点和托盘类型 - jo.put("type","3"); - jo.put("point_code",device_code); - jo.put("vehicle_num","10"); - String result = acsToWmsService.applyTaskToWms(jo); - JSONObject res_jo = JSONObject.parseObject(result); - if (res_jo.getString("status").equals("200")){ - requireSucess = true; - } - } - case 6: - //下料位满拖申请 - if (move == 1 && !requireSucess) { - //向LMS发送请求,发送起点 - jo.put("type","7"); - jo.put("point_code",device_code); - String result = acsToWmsService.applyTaskToWms(jo); - JSONObject res_jo = JSONObject.parseObject(result); - if (res_jo.getString("status").equals("200")){ - requireSucess = true; - } - } - case 7: - //上料位满拖申请 - if (move == 0 && !requireSucess) { - //向LMS发送请求,发送起点 - jo.put("type","4"); - jo.put("point_code",device_code); - String result = acsToWmsService.applyTaskToWms(jo); - JSONObject res_jo = JSONObject.parseObject(result); - if (res_jo.getString("status").equals("200")){ - requireSucess = true; - } - } - break; - case 8: - if (move == 1 && !requireSucess) { - //上料位空托入库 - jo.put("type", "5"); - jo.put("point_code", device_code); - jo.put("vehicle_num", number); - String result = acsToWmsService.applyTaskToWms(jo); - JSONObject res_jo = JSONObject.parseObject(result); - if (res_jo.getString("status").equals("200")){ - requireSucess = true; - } - break; - } - case 9: - if (move == 1 && !requireSucess) { - //强制满垛入库 - jo.put("type", "5"); - jo.put("point_code", device_code); - jo.put("vehicle_num", number); - String result = acsToWmsService.applyTaskToWms(jo); - JSONObject res_jo = JSONObject.parseObject(result); - if (res_jo.getString("status").equals("200")){ - requireSucess = true; - } - break; - } - } - switch (flag) { - //取货完成 - case 1: - writing(2); - break; - //放货完成 - case 2: - writing(3); - break; - - } - } - - last_mode = mode; - last_move = move; - last_error = error; - } - - - public synchronized boolean instruction_apply(String container_code) throws Exception { - Date date = new Date(); - if (date.getTime() - this.instruction_apply_time.getTime() < (long) this.instruction_require_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); - return false; - } else { - this.instruction_apply_time = date; - requireSucess = true; - return true; - } - } - - protected void thingToNothing() { - - } - - public void writing(int command) { - String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + org.nl.acs.device_driver.basedriver.standard_conveyor_control_with_scanner.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(String key, String value) { - String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + key; - //String opcservcerid = this.getDevice().getOpc_server_id(); -//Server server = ReadUtil.getServer(opcservcerid); - Map itemMap = new HashMap(); - itemMap.put(to_command, value); - this.control(itemMap); - } - - @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) { - - } -} diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/plug_pull_device_site/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/plug_pull_device_site/ItemProtocol.java deleted file mode 100644 index 68656c2..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/plug_pull_device_site/ItemProtocol.java +++ /dev/null @@ -1,161 +0,0 @@ -package org.nl.acs.device_driver.basedriver.plug_pull_device_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 { - - //1/0 手动/自动 - public static String item_mode = "mode"; - //0/1 半自动/全自动 - public static String item_action = "action"; - //0/1 远程/本地控制 - public static String item_control = "control"; - //2 运行中 - //1 急停/故障 - //0 待机中 - public static String item_status = "status"; - //1 机头上有轴 - public static String item_move = "move"; - //1/0 穿轴中/穿轴完成 - public static String item_plug_finish = "plug_finish"; - //1/0 把轴中/拔轴完成 - public static String item_pull_finish = "pull_finish"; - //3寸轴穿轴次数 - public static String item_3plug_times = "3plug_times"; - //6寸轴穿轴次数 - public static String item_6plug_times = "6plug_times"; - //3寸轴拔轴次数 - public static String item_3pull_times = "3pull_times"; - //6寸轴拔轴次数 - public static String item_6pull_times = "6pull_times"; - //穿轴总次数 - public static String item_plug_alltimes = "plug_alltimes"; - //拔轴总次数 - public static String item_pull_alltimes = "pull_alltimes"; - - - //1 全自动启动 - public static String item_to_command = "to_command"; - //0/1 穿轴/拔轴 - public static String item_to_type = "to_type"; - //3/6 轴尺寸 - public static String item_to_size = "to_size"; - - - private PlugPullDeviceSiteDeviceDriver driver; - - public ItemProtocol(PlugPullDeviceSiteDeviceDriver driver) { - this.driver = driver; - } - - public int getItem_mode(){ - return this.getOpcIntegerValue(item_mode); - } ; - public int getItem_move(){ - return this.getOpcIntegerValue(item_move); - } ; - public int getItem_action(){ - return this.getOpcIntegerValue(item_action); - }; - public int getItem_control(){ - return this.getOpcIntegerValue(item_control); - } ; - public int getItem_status(){ - return this.getOpcIntegerValue(item_status); - } ; - public int getItem_plug_finish(){ - return this.getOpcIntegerValue(item_plug_finish); - } ; - public int getItem_pull_finish(){ - return this.getOpcIntegerValue(item_pull_finish); - } ; - public int getItem_3plug_times(){ - return this.getOpcIntegerValue(item_3plug_times); - } ; - public int getItem_6plug_times(){ - return this.getOpcIntegerValue(item_6plug_times); - } ; - public int getItem_3pull_times(){ - return this.getOpcIntegerValue(item_3pull_times); - } ; - public int getItem_6pull_times(){ - return this.getOpcIntegerValue(item_6pull_times); - } ; - public int getItem_plug_alltimes(){ - return this.getOpcIntegerValue(item_plug_alltimes); - } ; - public int getItem_pull_alltimes(){ - return this.getOpcIntegerValue(item_pull_alltimes); - } ; - - - Boolean isonline; - - public int getOpcIntegerValue(String protocol) { - Integer value = this.driver.getIntegeregerValue(protocol); - if (value == null) { - setIsonline(false); - } else { - setIsonline(true); - return value; - } - return 0; - - } - - public float getOpcFloatValue(String protocol) { - Float value = this.driver.getDoubleValue(protocol); - if (value == null) { - setIsonline(false); - } else { - setIsonline(true); - return value; - } - return 0; - - } - - - - public static List getReadableItemDtos() { - ArrayList list = new ArrayList(); - list.add(new ItemDto(item_mode, "工作模式", "30243")); - list.add(new ItemDto(item_action, "半自动/全自动", "30245")); - list.add(new ItemDto(item_control, "远程控制", "30254")); - list.add(new ItemDto(item_status, "状态", "30181")); - list.add(new ItemDto(item_move, "机头上有轴", "30252")); - list.add(new ItemDto(item_plug_finish, "穿轴完成", "30249")); - list.add(new ItemDto(item_pull_finish, "拔轴完成", "30250")); - list.add(new ItemDto(item_3plug_times, "3寸轴穿轴次数", "30231")); - list.add(new ItemDto(item_6plug_times, "6寸轴穿轴次数", "30235")); - list.add(new ItemDto(item_3pull_times, "3寸轴拔轴次数", "30233")); - list.add(new ItemDto(item_6pull_times, "6寸轴拔轴次数", "30237")); - list.add(new ItemDto(item_plug_alltimes, "穿轴总次数", "30239")); - list.add(new ItemDto(item_pull_alltimes, "拔轴总次数", "30241")); - - return list; - } - - public static List getWriteableItemDtos() { - ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command, "下发命令", "40246")); - list.add(new ItemDto(item_to_type, "类型", "40244")); - list.add(new ItemDto(item_to_size, "尺寸", "40247")); - - return list; - } - - @Override - public String toString() { - return ""; - } - -} - diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/plug_pull_device_site/PlugPullDeviceSiteDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/plug_pull_device_site/PlugPullDeviceSiteDefination.java deleted file mode 100644 index bce3297..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/plug_pull_device_site/PlugPullDeviceSiteDefination.java +++ /dev/null @@ -1,60 +0,0 @@ -package org.nl.acs.device_driver.basedriver.plug_pull_device_site; - -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 PlugPullDeviceSiteDefination implements OpcDeviceDriverDefination { - @Override - public String getDriverCode() { - return "plug_pull_device_site"; - } - - @Override - public String getDriverName() { - return "插拔轴工位"; - } - - @Override - public String getDriverDescription() { - return "插拔轴工位"; - } - - @Override - public DeviceDriver getDriverInstance(Device device) { - return (new PlugPullDeviceSiteDeviceDriver()).setDevice(device).setDriverDefination(this); - } - - @Override - public Class getDeviceDriverType() { - return PlugPullDeviceSiteDeviceDriver.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/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/plug_pull_device_site/PlugPullDeviceSiteDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/plug_pull_device_site/PlugPullDeviceSiteDeviceDriver.java deleted file mode 100644 index a46c520..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/plug_pull_device_site/PlugPullDeviceSiteDeviceDriver.java +++ /dev/null @@ -1,239 +0,0 @@ -package org.nl.acs.device_driver.basedriver.plug_pull_device_site; - -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.agv.server.AgvService; -import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; -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.data.ApplyLabelingAndBindingRequest; -import org.nl.acs.ext.wms.data.ApplyLabelingAndBindingResponse; -import org.nl.acs.ext.wms.service.AcsToWmsService; -import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; -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.Device; -import org.nl.acs.opc.DeviceAppService; -import org.nl.acs.route.service.RouteLineService; -import org.nl.acs.task.service.TaskService; -import org.nl.modules.system.service.ParamService; -import org.nl.modules.wql.core.bean.WQLObject; -import org.nl.modules.wql.util.SpringContextHolder; -import org.openscada.opc.lib.da.Server; -import org.springframework.beans.factory.annotation.Autowired; - -import java.util.*; - -/** - * 插拔轴工位 - */ -@Slf4j -@Data -@RequiredArgsConstructor -public class PlugPullDeviceSiteDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { - protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired - DeviceAppService deviceAppservice = SpringContextHolder.getBean(DeviceAppService.class); - @Autowired - InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class); - @Autowired - DeviceService deviceservice = SpringContextHolder.getBean(DeviceService.class); - @Autowired - TaskService taskserver = SpringContextHolder.getBean(TaskService.class); - @Autowired - RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineService.class); - @Autowired - AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsServiceImpl.class); - @Autowired - ParamService paramService = SpringContextHolder.getBean(ParamService.class); - @Autowired - DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); - @Autowired - AgvService agvService = SpringContextHolder.getBean(AgvService.class); - - private Date instruction_require_time = new Date(); - private Date instruction_finished_time = new Date(); - private Date instruction_apply_time = new Date(); - private int instruction_require_time_out = 3000; - - public int mode = 0; - public int move = 0; - public int action = 0; - public int status = 0; - public int control = 0; - public int plug_finish = 0; - public int pull_finish = 0; - public int plug3_times = 0; - public int plug6_times = 0; - public int pull3_times = 0; - public int pull6_times = 0; - public int plug_alltimes = 0; - public int pull_alltimes = 0; - - public int last_mode = 0; - public int last_move = 0; - public int last_action = 0; - public int last_status = 0; - public int last_control = 0; - public int last_plug_finish = 0; - public int last_pull_finish = 0; - - - Boolean isonline = true; - - Boolean iserror = false; - - //1-执行任务;2-取货完成;3-放货完成; - int flag; - - String device_code; - - @Override - public Device getDevice() { - return this.device; - } - - //请求成功标记 - Boolean requireSucess = false; - - @Override - public void execute() { - String message = null; - - device_code = this.getDeviceCode(); - mode = this.itemProtocol.getItem_mode(); - move = this.itemProtocol.getItem_move(); - action = this.itemProtocol.getItem_action(); - status = this.itemProtocol.getItem_status(); - control = this.itemProtocol.getItem_control(); - plug_finish = this.itemProtocol.getItem_plug_finish(); - pull_finish = this.itemProtocol.getItem_pull_finish(); - plug3_times = this.itemProtocol.getItem_3plug_times(); - plug6_times = this.itemProtocol.getItem_6plug_times(); - pull3_times = this.itemProtocol.getItem_3pull_times(); - pull6_times = this.itemProtocol.getItem_6pull_times(); - plug_alltimes = this.itemProtocol.getItem_plug_alltimes(); - pull_alltimes = this.itemProtocol.getItem_pull_alltimes(); - - - - - if (status != 1) { - this.setIsonline(false); - this.setIserror(true); - message = "有报警"; - //无报警 - } else { - - - } - - last_mode = mode; - last_move = move; - last_action = action; - } - - - protected void thingToNothing() { - //this.setRequireSucess(false); - } - - public void writing(List list) { - - //String opcservcerid = this.getDevice().getOpc_server_id(); -//Server server = ReadUtil.getServer(opcservcerid); - 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); - this.control(itemMap); - } - - //将扩展表中的字符串数据转换成集合 - 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; - } - - - - @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("isError", this.getIserror()); - return jo; - } - - @Override - public void setDeviceStatus(JSONObject data) { - - } - - 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); -// itemMap.put(to_param, Integer.parseInt(value)); - this.control(itemMap); - } - - -} diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor/ItemProtocol.java deleted file mode 100644 index 32616f2..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor/ItemProtocol.java +++ /dev/null @@ -1,136 +0,0 @@ -package org.nl.acs.device_driver.basedriver.siemens_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; - -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_carrier_direction = "carrier_direction"; - //报警 - 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_target = "to_target"; - //下发托盘类型 - public static String item_to_container_type = "to_container_type"; - //下发任务号 - public static String item_to_task = "to_task"; - //困扎次数 - public static String item_to_strap_times = "to_strap_times"; - //木箱长度 - public static String item_to_length = "to_length"; - //木箱宽度 - public static String item_to_weight = "to_weight"; - //木箱高度 - public static String item_to_height = "to_height"; - - - private SiemensConveyorDeviceDriver driver; - - public ItemProtocol(SiemensConveyorDeviceDriver 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 getCarrier_direction() { - return this.getOpcIntegerValue(item_carrier_direction); - } - - public int getError() { - return this.getOpcIntegerValue(item_error); - } - - public int getTask() { - return this.getOpcIntegerValue(item_task); - } - - public int getTo_command() { - return this.getOpcIntegerValue(item_to_command); - } - - - Boolean isonline; - - public int getOpcIntegerValue(String protocol) { - Integer value = this.driver.getIntegeregerValue(protocol); - if (value == null) { - // 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, "心跳", "DB600.B0")); - list.add(new ItemDto(item_mode, "工作模式", "DB600.B2")); - list.add(new ItemDto(item_move, "光电信号", "DB600.B3")); - list.add(new ItemDto(item_carrier_direction, "托盘方向", "DB600.B4")); - list.add(new ItemDto(item_error, "报警信号", "DB600.B6")); - list.add(new ItemDto(item_task, "任务号", "DB600.D10")); - return list; - } - - public static List getWriteableItemDtos() { - ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command, "下发命令", "DB601.W2")); - list.add(new ItemDto(item_to_target, "下发目标站", "DB601.W4")); - list.add(new ItemDto(item_to_container_type, "下发托盘类型", "DB601.W6")); - list.add(new ItemDto(item_to_task, "下发任务号", "DB601.D8")); - list.add(new ItemDto(item_to_strap_times, "困扎次数", "DB601.W12")); - 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")); - return list; - } - - @Override - public String toString() { - return ""; - } - -} - diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor/SiemensConveyorDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor/SiemensConveyorDefination.java deleted file mode 100644 index 465f0a7..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor/SiemensConveyorDefination.java +++ /dev/null @@ -1,64 +0,0 @@ -package org.nl.acs.device_driver.basedriver.siemens_conveyor; - -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 SiemensConveyorDefination implements OpcDeviceDriverDefination { - @Override - public String getDriverCode() { - return "siemens_conveyor"; - } - - @Override - public String getDriverName() { - return "西门子-输送机驱动"; - } - - @Override - public String getDriverDescription() { - return "西门子-输送机驱动"; - } - - @Override - public DeviceDriver getDriverInstance(Device device) { - return (new SiemensConveyorDeviceDriver()).setDevice(device).setDriverDefination(this); - - } - - @Override - public Class getDeviceDriverType() { - return SiemensConveyorDeviceDriver.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/basedriver/siemens_conveyor/SiemensConveyorDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor/SiemensConveyorDeviceDriver.java deleted file mode 100644 index 8e5840d..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor/SiemensConveyorDeviceDriver.java +++ /dev/null @@ -1,976 +0,0 @@ -package org.nl.acs.device_driver.basedriver.siemens_conveyor; - -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; -import lombok.SneakyThrows; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.ObjectUtils; -import org.nl.acs.AcsConfig; -import org.nl.acs.agv.server.NDCAgvService; -import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; -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.ScannerDeviceDriver; -import org.nl.acs.device_driver.basedriver.standard_scanner.StandardScannerDeviceDriver; -import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; -import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; -import org.nl.acs.ext.wms.data.ApplyLabelingAndBindingRequest; -import org.nl.acs.ext.wms.data.ApplyLabelingAndBindingResponse; -import org.nl.acs.ext.wms.service.AcsToWmsService; -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.DeviceAppServiceImpl; -import org.nl.acs.route.service.RouteLineService; -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.modules.system.service.ParamService; -import org.nl.modules.wql.core.bean.WQLObject; -import org.nl.modules.wql.util.SpringContextHolder; -import org.openscada.opc.lib.da.Server; -import org.springframework.beans.factory.annotation.Autowired; - -import java.util.*; - -/** - * 西门子-输送机驱动 - */ -@Slf4j -@Data -@RequiredArgsConstructor -public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { - protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired - InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class); - @Autowired - DeviceService deviceservice = SpringContextHolder.getBean(DeviceService.class); - @Autowired - RouteLineService routelineserver = SpringContextHolder.getBean(RouteLineService.class); - @Autowired - TaskService taskserver = SpringContextHolder.getBean(TaskService.class); - @Autowired - DeviceAppService deviceAppservice = SpringContextHolder.getBean(DeviceAppService.class); - @Autowired - RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineService.class); - @Autowired - ParamService paramService = SpringContextHolder.getBean(ParamService.class); - @Autowired - AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsService.class); - @Autowired - DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); - @Autowired - NDCAgvService agvService = SpringContextHolder.getBean(NDCAgvService.class); - //当前指令 - 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; - int last_task = 0; - int agvphase = 0; - String task_code = null; - int to_command = 0; - - int phase = 0; - int index = 0; - Boolean isonline = true; - int hasGoods = 0; - String message = null; - Boolean iserror = false; - - Integer heartbeat_tag; - private Date instruction_require_time = new Date(); - private Date require_apply_labeling_time = new Date(); - private Date require_apply_strangulation_time = new Date(); - private Date require_empty_in_time = new Date(); - private Date require_empty_out_time = new Date(); - - private int instruction_require_time_out = 3000; - //行架机械手申请任务成功标识 - boolean requireSucess = false; - boolean requireApplyLabelingSuccess = false; - boolean requireApplyLaStrangulationSuccess = false; - boolean requireEmptyInSuccess = false; - boolean requireEmptyOutSuccess = false; - boolean requiresShipDeviceUpdate = true; - private int instruction_finished_time_out; - - int branchProtocol = 0; - String inst_message; - String last_inst_message; - - //当前指令 - - //暂定 0就绪 1请求取货 2取货完成 3请求放货 4放货完成 5取货完成离开 6放货完成离开 7请求进入区域 8请求离开区域 - int flag; - - String device_code; - - String vehicle_code; - String last_vehicle_code; - - @Override - public Device getDevice() { - return this.device; - } - - - @Override - public void execute() { - try { - device_code = this.getDeviceCode(); - mode = this.itemProtocol.getMode(); - move = this.itemProtocol.getMove(); - carrier_direction = this.itemProtocol.getCarrier_direction(); - error = this.itemProtocol.getError(); - task = this.itemProtocol.getTask(); - to_command = this.itemProtocol.getTo_command(); - if (mode != last_mode) { - if (mode == 2) { - requireSucess = false; - requireApplyLabelingSuccess = false; - requireApplyLaStrangulationSuccess = false; - requireEmptyInSuccess = false; - requireEmptyOutSuccess = false; - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode + "复位请求标记"); - } - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode); - } - if (move != last_move) { - message = null; - if (move == 0 ) { - inst_message = null; -// this.clearWrite(); - } - if(move == 0 && last_move == 1 ){ - last_vehicle_code = vehicle_code; - last_inst_message = inst_message; - if ("true".equals(this.device.getExtraValue().get("ship_device_update"))) { - this.requiresShipDeviceUpdate = false; - } - } - logServer.deviceItemValue(this.device_code, "move", String.valueOf(move)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + last_move + "->" + move); - } - 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 (task != last_task) { - logServer.deviceItemValue(this.device_code, "task", String.valueOf(task)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号task:" + last_task + "->" + task); - } - - if (move != 0 && task > 0 ) { -// logServer.deviceExecuteLog(device_code, "", "", "输送线任务开始反馈任务状态,指令号:" + task); - //inst_message - inst = instructionService.findByCodeFromCache(String.valueOf(task)); - 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); - } - if (StrUtil.equals(inst.getInstruction_status(), "1")) { - if (StrUtil.equals(this.getDeviceCode(), inst.getNext_device_code())) { - vehicle_code = inst.getVehicle_code(); - inst.setExecute_device_code(this.device_code); - finish_instruction(); - logServer.deviceExecuteLog(device_code, "", "", "入库输送线任务开始反馈完成状态,反馈成功,指令号:" + task); - } else { -// if (!StrUtil.equals(inst.getExecute_code(), this.device_code)) { -// inst.setExecute_device_code(this.device_code); -// instructionService.update(inst); -// } - } - - } - } else { -// logServer.deviceExecuteLog(device_code, "", "", "输送线任务开始反馈任务状态,反馈失败,查询不到指令号:" + task); - message = "输送线任务反馈状态,查询不到指令号:" + task +"指令已完成"; - inst_message = null; - } - } - - } catch (Exception var17) { - inst_message = 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.setIsonline(false); -// this.setIserror(true); -// message = "有报警"; -// //无报警 - } else { - this.setIsonline(true); - this.setIserror(false); - if (error != 0) { - this.setIserror(true); - message = "有报警"; - } - - Instruction instruction = null; - List toInstructions; - - -// if (mode == 2 && move != 0 && task > 0) { -// //inst_message -// inst = instructionService.findByCodeFromCache(String.valueOf(task)); -// if (inst != null) { -// inst_message = "指令号:" + inst.getInstruction_code() + " " + inst.getStart_point_code() + "->" + inst.getNext_point_code() + " 载具号:" + inst.getVehicle_code(); -// if (StrUtil.equals(inst.getInstruction_status(), "1") && StrUtil.equals(this.getDeviceCode(), inst.getNext_device_code())) { -// finish_instruction(); -// } -// if (StrUtil.equals(inst.getInstruction_status(), "0") && StrUtil.equals(this.getDeviceCode(), inst.getStart_device_code())) { -// inst.setInstruction_status("1"); -// instructionService.update(inst); -// } -// } -// } - - switch (mode) { - case 1: - log.debug("设备运转模式:等待工作"); - break; - case 2: - //申请任务 - if (move > 0 && !requireSucess) { - instruction_require(); - } - if (!requiresShipDeviceUpdate && move == 0) { - this.shipDeviceUpdate(); - } else { - this.requiresShipDeviceUpdate = true; - } - break; - case 4: - //申请捆扎 - if (move > 0 ) { - applyLaStrangulation(); - } - break; - case 5: - //申请贴标 - if (move > 0 && !requireSucess) { - applyLabeling(); - - } - break; - case 6: - //空托盘满垛入库申请 - if (move > 0 && !requireEmptyInSuccess) { - emptyIn(); - } - if (move > 0 && !requireSucess) { - instruction_require(); - } - break; - case 7: - //空盘出库申请 - if (move == 0 && !requireSucess) { - emptyOut(); - } - break; - case 8: - //申请AGV任务 - if (move == 1 && !requireSucess) { - applyAgvTask(); - } - break; - - } - } - last_mode = mode; - last_move = move; - last_carrier_direction = carrier_direction; - last_error = error; - last_task = task; - } - - private void shipDeviceUpdate() { - JSONObject param = new JSONObject() {{ - put("device_code", device_code); - }}; - - HttpResponse response = acsToWmsService.shipDeviceUpdate(param); - if (response == null || response.getStatus() == 200) { - this.requiresShipDeviceUpdate = true; - } - } - - - public boolean exe_error() { - if (this.error == 0) { - return true; - } else { - log.debug("设备报警"); - return false; - } - } - - public void clearWrite() { - - List list = new ArrayList(); - Map map = new HashMap(); - map.put("code", "to_target"); - map.put("value", "0"); - list.add(map); - Map map2 = new HashMap(); - map2.put("code", "to_task"); - map2.put("value", "0"); - list.add(map2); - Map map3 = new HashMap(); - map3.put("code", "to_command"); - map3.put("value", "0"); - list.add(map3); - Map map4 = new HashMap(); - map4.put("code", "to_strap_times"); - map4.put("value", "0"); - list.add(map4); - Map map5 = new HashMap(); - map5.put("code", "to_length"); - map5.put("value", "0"); - list.add(map5); - Map map6 = new HashMap(); - map6.put("code", "to_weight"); - map6.put("value", "0"); - list.add(map6); - Map map7 = new HashMap(); - map7.put("code", "to_height"); - map7.put("value", "0"); - list.add(map7); - this.writing(list); - message = null; - vehicle_code = null; - } - - public boolean exe_business() { - return true; - } - - public synchronized boolean finish_instruction() throws Exception { - instructionService.finish(inst); -// requireSucess = false; - return true; - } - - - protected void thingToNothing() throws Exception { - requireSucess = false; - } - - - 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); - } - - 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 JSONObject getDeviceStatusName() { - JSONObject jo = new JSONObject(); - String mode = ""; - String move = ""; - String carrier_direction = ""; - if (this.getMode() == 0) { - mode = "脱机"; - } else if (this.getMode() == 1) { - mode = "单机"; - } else if (this.getMode() == 2) { - mode = "待机"; - } else if (this.getMode() == 3) { - mode = "运行中"; - } else if (this.getMode() == 4) { - mode = "申请捆扎中"; - } else if (this.getMode() == 5) { - mode = "申请贴标中"; - } else if (this.getMode() == 6) { - mode = "申请空盘入库中"; - } else if (this.getMode() == 7) { - mode = "申请空盘出库中"; - } else if (this.getMode() == 8) { - mode = "申请AGV任务中"; - } - - 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); - } - - if (this.carrier_direction == 1) { - carrier_direction = "正转"; - } else if (this.carrier_direction == 2) { - carrier_direction = "反转"; - } - String requireSucess = "0"; - if (this.requireSucess) { - requireSucess = "1"; - } - jo.put("device_name", this.getDevice().getDevice_name()); - jo.put("mode", mode); - jo.put("move", move); - jo.put("carrier_direction", carrier_direction); - jo.put("task", task); - jo.put("last_task", last_task); - jo.put("task_code", task_code); - -// jo.put("barcode", barcode); -// jo.put("last_task", last_task); - jo.put("inst_message", this.inst_message); - jo.put("last_inst_message", this.last_inst_message); - jo.put("isOnline", this.getIsonline()); - jo.put("error", this.getError()); - jo.put("isError", this.getIserror()); - jo.put("message", this.getMessage()); - jo.put("is_click", true); - jo.put("requireSucess", requireSucess); - jo.put("driver_type", "siemens_conveyor"); - return jo; - } - - @Override - public void setDeviceStatus(JSONObject data) { - String requestSucess = data.getString("requireSucess"); - if (StrUtil.equals(requestSucess, "0")) { - this.requireSucess = false; - } else if (StrUtil.equals(requestSucess, "1")) { - this.requireSucess = true; - } - } - - public void writing(List list) { - -// String opcservcerid = this.getDevice().getOpc_server_id(); -// Server server = ReadUtil.getServer(opcservcerid); - 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); - this.control(itemMap); - - } - - - /** - * 请求指令 - */ - public synchronized boolean instruction_require() { - 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 taskdto = taskserver.findByStartCodeAndReady(device_code); - if (!ObjectUtil.isEmpty(taskdto)) { -// if (!ObjectUtils.isEmpty(instructionService.findByBarcodeFromCache(container_code))) { -// return false; -// } - //需要判断当前设备是否已经存在就绪的指令 如果存在就直接下发 不存在则创建 - Instruction inst = instructionService.findByTaskcodeAndStatus(taskdto.getTask_code()); - if (ObjectUtil.isNotEmpty(inst)) { - List list = new ArrayList(); - Map map = new HashMap(); - - if (StrUtil.isNotEmpty(taskdto.getTo_z())) { - if (StrUtil.equals(taskdto.getTo_z(), "01")) { - map.put("code", "to_target"); - map.put("value", "102"); - } else if (StrUtil.equals(taskdto.getTo_z(), "02")) { - map.put("code", "to_target"); - map.put("value", "201"); - } else if (StrUtil.equals(taskdto.getTo_z(), "03")) { - map.put("code", "to_target"); - map.put("value", "301"); - } - } - list.add(map); - Map map2 = new HashMap(); - map2.put("code", "to_task"); - map2.put("value", inst.getInstruction_code()); - list.add(map2); - Map map3 = new HashMap(); - map3.put("code", "to_command"); - map3.put("value", "1"); - list.add(map3); - this.writing(list); -// if (task != Integer.parseInt(inst.getInstruction_code())) { -// this.writing(list); -// message = "重新下发电气信号"; -// logServer.deviceExecuteLog(device_code, "", "", inst.getInstruction_code() + "再次下发电气信号"); -// } - message = "下发电气任务号成功"; - requireSucess = true; - return true; - } - - // type 5 输送任务 - if (!StrUtil.equals(taskdto.getTask_type(), "5")) { - return false; - } - 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 start_device_code = taskdto.getStart_device_code(); - String route_plan_code = taskdto.getRoute_plan_code(); - String next_device_code = ""; - - /** - * 开始平均分配 - */ - String this_coevice_code = taskserver.queryAssignedByDevice(device_code, taskdto.getNext_device_code()); - if (StrUtil.isEmpty(this_coevice_code)) { - List shortPathsList = routeLineService.getShortPathLines(start_device_code, taskdto.getNext_device_code(), route_plan_code); - RouteLineDto routeLineDto = shortPathsList.get(0); - - String path = routeLineDto.getPath(); - String type = routeLineDto.getType(); - String[] str = path.split("->"); - - List pathlist = Arrays.asList(str); - int index = 0; - for (int m = 0; m < pathlist.size(); m++) { - if (pathlist.get(m).equals(start_device_code)) { - index = m + 1; - break; - } - } - next_device_code = pathlist.get(index); - } else { - next_device_code = this_coevice_code; - } - //校验路由关系 - List shortPathsList = routeLineService.getShortPathLines(start_device_code, next_device_code, route_plan_code); - if (ObjectUtils.isEmpty(shortPathsList)) { - throw new RuntimeException("路由不通!"); - } - - Device startdevice = deviceAppservice.findDeviceByCode(start_device_code); - Device nextdevice = deviceAppservice.findDeviceByCode(next_device_code); - String next_point_code; - if (StrUtil.equals(deviceAppservice.findDeviceTypeByCode(next_device_code), "storage")) { - next_point_code = taskdto.getTo_x() + "-" + taskdto.getTo_y() + "-" + taskdto.getTo_z(); - } else { - next_point_code = next_device_code; - } - 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_point_code); - instdto.setPriority(priority); - instdto.setInstruction_status("0"); - instdto.setExecute_device_code(start_point_code); - try { - instructionService.create(instdto); - } catch (Exception e) { - e.printStackTrace(); - log.error("指令创建失败!",e.getMessage()); - return false; - } - //创建指令后修改任务状态 - taskdto.setTask_status("1"); - taskserver.update(taskdto); - requireSucess = true; - String next_addr = nextdevice.getExtraValue().get("address").toString(); - - List list = new ArrayList(); - Map map = new HashMap(); - map.put("code", "to_target"); - map.put("value", next_addr); - list.add(map); - Map map2 = new HashMap(); - map2.put("code", "to_task"); - map2.put("value", instdto.getInstruction_code()); - list.add(map2); - Map map3 = new HashMap(); - map3.put("code", "to_command"); - map3.put("value", "1"); - list.add(map3); - this.writing(list); -// if (task != Integer.parseInt(inst.getInstruction_code())) { -// this.writing(list); -// message = "重新下发电气信号"; -// logServer.deviceExecuteLog(device_code, "", "", inst.getInstruction_code() + "再次下发电气信号"); -// } - } else { - //如果不存在则直接找对应指令 - Instruction inst = instructionService.findByDeviceCodeFromCache(this.device_code); - if (ObjectUtil.isEmpty(inst)) { - return false; - } - //当起点为行架任务的时候不需要请求下发 - if (StrUtil.equals(inst.getInstruction_type(), "6")) { - return false; - } - Device nextdevice = deviceAppservice.findDeviceByCode(inst.getNext_device_code()); - String next_addr = nextdevice.getExtraValue().get("address").toString(); - - List list = new ArrayList(); - Map map = new HashMap(); - map.put("code", "to_target"); - map.put("value", next_addr); - list.add(map); - Map map2 = new HashMap(); - map2.put("code", "to_task"); - map2.put("value", inst.getInstruction_code()); - list.add(map2); - Map map3 = new HashMap(); - map3.put("code", "to_command"); - map3.put("value", "1"); - list.add(map3); - this.writing(list); - if (task != Integer.parseInt(inst.getInstruction_code())) { - this.writing(list); - logServer.deviceExecuteLog(device_code, "", "", inst.getInstruction_code() + "再次下发电气信号"); - } - } - return true; - } - } - - //申请贴标 - public synchronized void applyLabeling() { - Date date = new Date(); - if (date.getTime() - this.require_apply_labeling_time.getTime() < (long) this.instruction_require_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); - return; - } else { - this.require_apply_labeling_time = date; - String vehicle_code = ""; - if (task > 0) { - Instruction instruction = instructionService.findByCodeFromCache(String.valueOf(task)); - vehicle_code = instruction.getVehicle_code(); - } else { - logServer.deviceExecuteLog(device_code, "", "", "申请贴标电气设备任务号:" + task + "异常"); - message = "申请贴标电气设备任务号:" + task + "异常"; - throw new RuntimeException("任务号为空!"); - } - if (StrUtil.isEmpty(vehicle_code)) { - logServer.deviceExecuteLog(device_code, "", "", "申请贴标电气设备任务号:" + task + "未找到载具号"); - message = "申请贴标电气设备任务号:" + task + "未找到载具号"; - throw new RuntimeException("载具号为空!"); - } - ApplyLabelingAndBindingRequest applyLabelingAndBindingRequest = - new ApplyLabelingAndBindingRequest(); - JSONObject device_json = WQLObject.getWQLObject("acs_storage_cell").query("storage_code ='" + this.device_code + "'").uniqueResult(0); - String start_point_code = null; - if (!ObjectUtil.isEmpty(device_json)) { - start_point_code = (String) device_json.get("parent_storage_code") == null ? this.device_code : (String) device_json.get("parent_storage_code"); - } - applyLabelingAndBindingRequest.setDevice_code(start_point_code); - applyLabelingAndBindingRequest.setType("1"); - applyLabelingAndBindingRequest.setVehicle_code(vehicle_code); - ApplyLabelingAndBindingResponse applyLabelingAndBindingResponse = acsToWmsService.applyLabelingAndBindingRequest(applyLabelingAndBindingRequest); - - if (applyLabelingAndBindingResponse.getstatus() == 200) { - message = "申请贴标成功"; - List list = new ArrayList(); - Map map = new HashMap(); - map.put("code", "to_command"); - map.put("value", "5"); - list.add(map); - this.writing(list); - this.writing(list); - message = "申请贴标下发电气信号成功"; - requireApplyLabelingSuccess = true; - } else { - message = "申请贴标失败," + applyLabelingAndBindingResponse.getMessage(); - } - } - } - - //申请捆扎 - @SneakyThrows - public synchronized void applyLaStrangulation() { - 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 ; -// 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); - String start_point_code = null; - if (!ObjectUtil.isEmpty(device_json)) { - start_point_code = (String) device_json.get("parent_storage_code") == null ? this.device_code : (String) device_json.get("parent_storage_code"); - } - applyLabelingAndBindingRequest.setDevice_code(start_point_code); - applyLabelingAndBindingRequest.setType("2"); - applyLabelingAndBindingRequest.setVehicle_code(vehicle_code); - ApplyLabelingAndBindingResponse applyLabelingAndBindingResponse = acsToWmsService.applyLabelingAndBindingRequest(applyLabelingAndBindingRequest); - if (applyLabelingAndBindingResponse.getstatus() == 200) { - if (ObjectUtil.isNotEmpty(applyLabelingAndBindingResponse.getData())) { - Map datas = applyLabelingAndBindingResponse.getData(); - String length = datas.get("box_length").toString(); - String width = datas.get("box_width").toString(); - String box_high = datas.get("box_high").toString(); - String bundle_times = datas.get("bundle_times").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", width); - list.add(map2); - Map map3 = new HashMap(); - map3.put("code", "to_height"); - map3.put("value", box_high); - list.add(map3); - Map map4 = new HashMap(); - map4.put("code", "to_strap_times"); - map4.put("value", bundle_times); - list.add(map4); - Map map5 = new HashMap(); - map5.put("code", "to_command"); - map5.put("value", "4"); - list.add(map5); - this.writing(list); -// this.writing(list); - - message = "申请捆扎成功"; - requireSucess = true; - } else { - message = "未返回尺寸信息"; - } - - } else { - message = applyLabelingAndBindingResponse.getMessage(); - } - - } - } - - public synchronized void emptyIn() { - Date date = new Date(); - if (date.getTime() - this.require_empty_in_time.getTime() < (long) this.instruction_require_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); - return; - } else { - this.require_empty_in_time = date; - - if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), "1")) { - message = "申请空盘入库任务中..."; - - if(taskserver.querySameOriginTask(this.device_code) > 0 ){ - message = "已存在空盘出库任务不再请求"; - return; - } - - JSONObject apply = new JSONObject(); - apply.put("device_code", device_code); - apply.put("type", "2"); - String str = acsToWmsService.applyTaskToWms(apply); - JSONObject jo = JSON.parseObject(str); - if (ObjectUtil.isEmpty(jo)) { - message = "申请空盘入库接口不通"; - requireEmptyInSuccess = true; - } else { - if (jo.getInteger("status") == 200) { - message = "申请空盘入库成功"; - requireEmptyInSuccess = true; - } else { - requireEmptyInSuccess = true; - message = "申请空盘入库失败," + jo.get("message").toString(); - } - } - - } - } - } - - 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 { - this.instruction_require_time = date; - if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), "1")) { - 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", "4"); - apply.put("vehicle_code", instruction.getVehicle_code()); - String str = acsToWmsService.applyTaskToWms(apply); - JSONObject jo = JSON.parseObject(str); - if (ObjectUtil.isEmpty(jo)) { - message = "申请AGV搬运任务接口不通"; - requireSucess = true; - } else { - if (jo.getInteger("status") == 200) { - message = "申请AGV搬运任务成功"; - requireSucess = true; - } else { - requireSucess = true; - message = "申请AGV搬运任务失败," + jo.get("message").toString(); - } - } - - } - } - } - - public synchronized void emptyOut() { - Date date = new Date(); - if (date.getTime() - this.require_empty_out_time.getTime() < (long) this.instruction_require_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); - return; - } else { - this.require_empty_out_time = date; - if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), "1")) { - if(taskserver.querySameDestinationTask(this.device_code) > 0 ){ - message = "已存在空盘出库任务不再请求"; - return; - } - message = "申请空盘出库任务中..."; - JSONObject apply = new JSONObject(); - apply.put("device_code", device_code); - apply.put("type", "3"); - String str = acsToWmsService.applyTaskToWms(apply); - JSONObject jo = JSON.parseObject(str); - if (ObjectUtil.isEmpty(jo)) { - message = "申请空盘出库接口不通"; - requireSucess = true; - } else { - if (jo.getInteger("status") == 200) { - message = "申请空盘出库成功"; - requireSucess = true; - } else { - requireSucess = true; - message = "申请空盘出库失败," + jo.get("message").toString(); - } - } - - } - } - } - - -} diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_ckk/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_ckk/ItemProtocol.java deleted file mode 100644 index 6d64f74..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_ckk/ItemProtocol.java +++ /dev/null @@ -1,132 +0,0 @@ -package org.nl.acs.device_driver.basedriver.siemens_conveyor_ckk; - -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_carrier_direction = "carrier_direction"; - //报警 - 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_target = "to_target"; - //下发托盘类型 - public static String item_to_container_type = "to_container_type"; - //下发任务号 - public static String item_to_task = "to_task"; - //困扎次数 - public static String item_to_strap_times = "to_strap_times"; - //木箱长度 - public static String item_to_length = "to_length"; - //木箱宽度 - public static String item_to_weight = "to_weight"; - //木箱高度 - public static String item_to_height = "to_height"; - - - private SiemensConveyorCkkDeviceDriver driver; - - public ItemProtocol(SiemensConveyorCkkDeviceDriver 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 getCarrier_direction() { - return this.getOpcIntegerValue(item_carrier_direction); - } - - 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, "心跳", "DB600.B0")); - list.add(new ItemDto(item_mode, "工作模式", "DB600.B2")); - list.add(new ItemDto(item_move, "光电信号", "DB600.B3")); - list.add(new ItemDto(item_carrier_direction, "托盘方向", "DB600.B4")); - list.add(new ItemDto(item_error, "报警信号", "DB600.B6")); - list.add(new ItemDto(item_task, "任务号", "DB600.D10")); - return list; - } - - public static List getWriteableItemDtos() { - ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command, "下发命令", "DB601.W2")); - list.add(new ItemDto(item_to_target, "下发目标站", "DB601.W4")); - list.add(new ItemDto(item_to_container_type, "下发托盘类型", "DB601.W6")); - list.add(new ItemDto(item_to_task, "下发任务号", "DB601.D8")); - list.add(new ItemDto(item_to_strap_times, "困扎次数", "DB601.W12")); - 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")); - return list; - } - - @Override - public String toString() { - return ""; - } - -} - diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_ckk/SiemensConveyorCkkDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_ckk/SiemensConveyorCkkDefination.java deleted file mode 100644 index 248dc8f..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_ckk/SiemensConveyorCkkDefination.java +++ /dev/null @@ -1,64 +0,0 @@ -package org.nl.acs.device_driver.basedriver.siemens_conveyor_ckk; - -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 SiemensConveyorCkkDefination implements OpcDeviceDriverDefination { - @Override - public String getDriverCode() { - return "siemens_conveyor_ckk"; - } - - @Override - public String getDriverName() { - return "西门子-输送机驱动-出库口"; - } - - @Override - public String getDriverDescription() { - return "西门子-输送机驱动-出库口"; - } - - @Override - public DeviceDriver getDriverInstance(Device device) { - return (new SiemensConveyorCkkDeviceDriver()).setDevice(device).setDriverDefination(this); - - } - - @Override - public Class getDeviceDriverType() { - return SiemensConveyorCkkDeviceDriver.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/basedriver/siemens_conveyor_ckk/SiemensConveyorCkkDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_ckk/SiemensConveyorCkkDeviceDriver.java deleted file mode 100644 index b7f935e..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_ckk/SiemensConveyorCkkDeviceDriver.java +++ /dev/null @@ -1,914 +0,0 @@ -package org.nl.acs.device_driver.basedriver.siemens_conveyor_ckk; - -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.SneakyThrows; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.ObjectUtils; -import org.nl.acs.AcsConfig; -import org.nl.acs.agv.server.NDCAgvService; -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.data.ApplyLabelingAndBindingRequest; -import org.nl.acs.ext.wms.data.ApplyLabelingAndBindingResponse; -import org.nl.acs.ext.wms.service.AcsToWmsService; -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.route.service.RouteLineService; -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.modules.system.service.ParamService; -import org.nl.modules.wql.core.bean.WQLObject; -import org.nl.modules.wql.util.SpringContextHolder; -import org.openscada.opc.lib.da.Server; -import org.springframework.beans.factory.annotation.Autowired; - -import java.util.*; - -/** - * 西门子-输送机驱动-出库口 - */ -@Slf4j -@Data -@RequiredArgsConstructor -public class SiemensConveyorCkkDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { - protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired - InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class); - @Autowired - DeviceService deviceservice = SpringContextHolder.getBean(DeviceService.class); - @Autowired - RouteLineService routelineserver = SpringContextHolder.getBean(RouteLineService.class); - @Autowired - TaskService taskserver = SpringContextHolder.getBean(TaskService.class); - @Autowired - DeviceAppService deviceAppservice = SpringContextHolder.getBean(DeviceAppService.class); - @Autowired - RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineService.class); - @Autowired - ParamService paramService = SpringContextHolder.getBean(ParamService.class); - @Autowired - AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsService.class); - @Autowired - DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); - @Autowired - NDCAgvService agvService = SpringContextHolder.getBean(NDCAgvService.class); - //当前指令 - 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; - int last_task = 0; - int agvphase = 0; - String task_code = null; - - int phase = 0; - int index = 0; - Boolean isonline = true; - int hasGoods = 0; - String message = null; - Boolean iserror = false; - - Integer heartbeat_tag; - private Date instruction_require_time = new Date(); - private Date require_apply_labeling_time = new Date(); - private Date require_apply_strangulation_time = new Date(); - private Date require_empty_in_time = new Date(); - private Date require_empty_out_time = new Date(); - - private int instruction_require_time_out = 3000; - //行架机械手申请任务成功标识 - boolean requireSucess = false; - boolean requireApplyLabelingSuccess = false; - boolean requireApplyLaStrangulationSuccess = false; - boolean requireEmptyInSuccess = false; - boolean requireEmptyOutSuccess = false; - boolean requiresShipDeviceUpdate = true; - private int instruction_finished_time_out; - - int branchProtocol = 0; - String inst_message; - String last_inst_message; - - //当前指令 - - //暂定 0就绪 1请求取货 2取货完成 3请求放货 4放货完成 5取货完成离开 6放货完成离开 7请求进入区域 8请求离开区域 - int flag; - - String device_code; - - String vehicle_code; - String last_vehicle_code; - - @Override - public Device getDevice() { - return this.device; - } - - - @Override - public void execute() { - try { - device_code = this.getDeviceCode(); - mode = this.itemProtocol.getMode(); - move = this.itemProtocol.getMove(); - carrier_direction = this.itemProtocol.getCarrier_direction(); - error = this.itemProtocol.getError(); - task = this.itemProtocol.getTask(); - if (mode != last_mode) { - if (mode == 2) { - requireSucess = false; - requireApplyLabelingSuccess = false; - requireApplyLaStrangulationSuccess = false; - requireEmptyInSuccess = false; - requireEmptyOutSuccess = false; - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode + "复位请求标记"); - } - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode); - } - if (move != last_move) { - message = null; - if (move == 0 ) { - inst_message = null; - requireSucess = false; - this.clearWrite(); - } - logServer.deviceItemValue(this.device_code, "move", String.valueOf(move)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + last_move + "->" + move); - } - 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 (task != last_task) { - logServer.deviceItemValue(this.device_code, "task", String.valueOf(task)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号task:" + last_task + "->" + task); - } - - if (move != 0 && task > 0) { - inst = instructionService.findByCodeFromCache(String.valueOf(task)); - 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); - } - if (StrUtil.equals(inst.getInstruction_status(), "1")) { - if (!StrUtil.equals(inst.getExecute_code(), this.device_code)) { - inst.setExecute_device_code(this.device_code); - instructionService.update(inst); - } - } - } else { -// logServer.deviceExecuteLog(device_code, "", "", "输送线任务开始反馈任务状态,反馈失败,查询不到指令号:" + task); - message = "输送线任务反馈状态,查询不到指令号:" + task +"指令已完成"; - inst_message = null; - } - } - - } catch (Exception var17) { - inst_message = 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 { - this.setIsonline(true); - this.setIserror(false); - - if (error != 0) { - this.setIserror(true); - message = "有报警"; - } - - Instruction instruction = null; - List toInstructions; - - - switch (mode) { - case 1: - log.debug("设备运转模式:等待工作"); - break; - case 2: - //申请任务 - if (move > 0 && !requireSucess) { - try { - instruction_require(); - } catch (Exception e) { - e.printStackTrace(); - } - } - break; - case 4: - break; - case 5: - break; - case 6: - break; - case 7: - break; - case 8: - break; - } - } - last_mode = mode; - last_move = move; - last_carrier_direction = carrier_direction; - last_error = error; - last_task = task; - } - - private void shipDeviceUpdate() { - JSONObject param = new JSONObject() {{ - put("device_code", device_code); - }}; - - HttpResponse response = acsToWmsService.shipDeviceUpdate(param); - if (response == null || response.getStatus() == 200) { - this.requiresShipDeviceUpdate = true; - } - } - - - public boolean exe_error() { - if (this.error == 0) { - return true; - } else { - log.debug("设备报警"); - return false; - } - } - - public void clearWrite() { - - List list = new ArrayList(); - Map map = new HashMap(); - map.put("code", "to_target"); - map.put("value", "0"); - list.add(map); - Map map2 = new HashMap(); - map2.put("code", "to_task"); - map2.put("value", "0"); - list.add(map2); - Map map3 = new HashMap(); - map3.put("code", "to_command"); - map3.put("value", "0"); - list.add(map3); - Map map4 = new HashMap(); - map4.put("code", "to_strap_times"); - map4.put("value", "0"); - list.add(map4); - Map map5 = new HashMap(); - map5.put("code", "to_length"); - map5.put("value", "0"); - list.add(map5); - Map map6 = new HashMap(); - map6.put("code", "to_weight"); - map6.put("value", "0"); - list.add(map6); - Map map7 = new HashMap(); - map7.put("code", "to_height"); - map7.put("value", "0"); - list.add(map7); - this.writing(list); - message = null; - vehicle_code = null; - } - - public boolean exe_business() { - return true; - } - - public synchronized boolean finish_instruction() throws Exception { - instructionService.finish(inst); -// requireSucess = false; - return true; - } - - - protected void thingToNothing() throws Exception { - requireSucess = false; - } - - - 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); - } - - 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 JSONObject getDeviceStatusName() { - JSONObject jo = new JSONObject(); - String mode = ""; - String move = ""; - String carrier_direction = ""; - if (this.getMode() == 0) { - mode = "脱机"; - } else if (this.getMode() == 1) { - mode = "单机"; - } else if (this.getMode() == 2) { - mode = "待机"; - } else if (this.getMode() == 3) { - mode = "运行中"; - } else if (this.getMode() == 4) { - mode = "申请捆扎中"; - } else if (this.getMode() == 5) { - mode = "申请贴标中"; - } else if (this.getMode() == 6) { - mode = "申请空盘入库中"; - } else if (this.getMode() == 7) { - mode = "申请空盘出库中"; - } else if (this.getMode() == 8) { - mode = "申请AGV任务中"; - } - - 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); - } - - if (this.carrier_direction == 1) { - carrier_direction = "正转"; - } else if (this.carrier_direction == 2) { - carrier_direction = "反转"; - } - String requireSucess = "0"; - if (this.requireSucess) { - requireSucess = "1"; - } - jo.put("device_name", this.getDevice().getDevice_name()); - jo.put("mode", mode); - jo.put("move", move); - jo.put("carrier_direction", carrier_direction); - jo.put("task", task); - jo.put("last_task", last_task); - jo.put("task_code", task_code); - -// jo.put("barcode", barcode); -// jo.put("last_task", last_task); - jo.put("inst_message", this.inst_message); - jo.put("last_inst_message", this.last_inst_message); - jo.put("isOnline", this.getIsonline()); - jo.put("error", this.getError()); - jo.put("isError", this.getIserror()); - jo.put("message", this.getMessage()); - jo.put("is_click", true); - jo.put("requireSucess", requireSucess); - jo.put("driver_type", "siemens_conveyor"); - return jo; - } - - @Override - public void setDeviceStatus(JSONObject data) { - String requestSucess = data.getString("requireSucess"); - if (StrUtil.equals(requestSucess, "0")) { - this.requireSucess = false; - } else if (StrUtil.equals(requestSucess, "1")) { - this.requireSucess = true; - } - } - - public void writing(List list) { - -// String opcservcerid = this.getDevice().getOpc_server_id(); -// Server server = ReadUtil.getServer(opcservcerid); - 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); - this.control(itemMap); - - } - - - /** - * 请求指令 - */ - public synchronized boolean instruction_require() { - Date date = new Date(); - if (date.getTime() - this.instruction_require_time.getTime() < (long) this.instruction_require_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); - return false; - } else { - this.instruction_require_time = date; - if (task > 0) { - Instruction instruction = instructionService.findByCodeFromCache(String.valueOf(task)); - if (ObjectUtil.isEmpty(instruction)) { - //instruction = instructionService.findByCode(String.valueOf(task)); - message ="任务号:"+task +"未找到对应立库指令,请检查"; - return false; - } - if(StrUtil.equals(instruction.getInstruction_status(),"1")){ - if (StrUtil.equals(this.getDeviceCode(), inst.getNext_device_code())) { - vehicle_code = inst.getVehicle_code(); - inst.setExecute_device_code(this.device_code); - try { - finish_instruction(); - } catch (Exception e) { - e.printStackTrace(); - } - logServer.deviceExecuteLog(device_code, "", "", "入库输送线任务开始反馈完成状态,反馈成功,指令号:" + task); - } - } - } else { - logServer.deviceExecuteLog(device_code, "", "", "申请输送任务电气设备任务号:" + task + "异常"); - message = "申请输送任务电气设备任务号:" + task + "异常"; - return false; - } - - //判断是否存在起点相同 任务状态就绪的任务 - TaskDto taskdto = taskserver.findByStartCodeAndReady(device_code); - if (!ObjectUtil.isEmpty(taskdto)) { -// if (!ObjectUtils.isEmpty(instructionService.findByBarcodeFromCache(container_code))) { -// return false; -// } - //需要判断当前设备是否已经存在就绪的指令 如果存在就直接下发 不存在则创建 - Instruction inst = instructionService.findByTaskcodeAndStatus(taskdto.getTask_code()); - if (ObjectUtil.isNotEmpty(inst)) { - List list = new ArrayList(); - Map map = new HashMap(); - - if (StrUtil.isNotEmpty(taskdto.getTo_z())) { - if (StrUtil.equals(taskdto.getTo_z(), "01")) { - map.put("code", "to_target"); - map.put("value", "102"); - } else if (StrUtil.equals(taskdto.getTo_z(), "02")) { - map.put("code", "to_target"); - map.put("value", "201"); - } else if (StrUtil.equals(taskdto.getTo_z(), "03")) { - map.put("code", "to_target"); - map.put("value", "301"); - } - } - list.add(map); - Map map2 = new HashMap(); - map2.put("code", "to_task"); - map2.put("value", inst.getInstruction_code()); - list.add(map2); - Map map3 = new HashMap(); - map3.put("code", "to_command"); - map3.put("value", "1"); - list.add(map3); - this.writing(list); - if (task != Integer.parseInt(inst.getInstruction_code())) { - this.writing(list); - message = "重新下发电气信号"; - logServer.deviceExecuteLog(device_code, "", "", inst.getInstruction_code() + "再次下发电气信号"); - } - message = "下发电气任务号成功"; - requireSucess = true; - return true; - } - - // type 5 输送任务 - if (!StrUtil.equals(taskdto.getTask_type(), "5")) { - return false; - } - 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 start_device_code = taskdto.getStart_device_code(); - String route_plan_code = taskdto.getRoute_plan_code(); - String next_device_code = ""; - - /** - * 开始平均分配 - */ - String this_coevice_code = taskserver.queryAssignedByDevice(device_code, taskdto.getNext_device_code()); - if (StrUtil.isEmpty(this_coevice_code)) { - List shortPathsList = routeLineService.getShortPathLines(start_device_code, taskdto.getNext_device_code(), route_plan_code); - RouteLineDto routeLineDto = shortPathsList.get(0); - - String path = routeLineDto.getPath(); - String type = routeLineDto.getType(); - String[] str = path.split("->"); - - List pathlist = Arrays.asList(str); - int index = 0; - for (int m = 0; m < pathlist.size(); m++) { - if (pathlist.get(m).equals(start_device_code)) { - index = m + 1; - break; - } - } - next_device_code = pathlist.get(index); - } else { - next_device_code = this_coevice_code; - } - //校验路由关系 - List shortPathsList = routeLineService.getShortPathLines(start_device_code, next_device_code, route_plan_code); - if (ObjectUtils.isEmpty(shortPathsList)) { - throw new RuntimeException("路由不通!"); - } - - Device startdevice = deviceAppservice.findDeviceByCode(start_device_code); - Device nextdevice = deviceAppservice.findDeviceByCode(next_device_code); - String next_point_code; - if (StrUtil.equals(deviceAppservice.findDeviceTypeByCode(next_device_code), "storage")) { - next_point_code = taskdto.getTo_x() + "-" + taskdto.getTo_y() + "-" + taskdto.getTo_z(); - } else { - next_point_code = next_device_code; - } - 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_point_code); - instdto.setPriority(priority); - instdto.setInstruction_status("0"); - instdto.setExecute_device_code(start_point_code); - try { - instructionService.create(instdto); - } catch (Exception e) { - e.printStackTrace(); - log.error("指令创建失败!",e.getMessage()); - return false; - } - //创建指令后修改任务状态 - taskdto.setTask_status("1"); - taskserver.update(taskdto); - requireSucess = true; - String next_addr = nextdevice.getExtraValue().get("address").toString(); - - List list = new ArrayList(); - Map map = new HashMap(); - map.put("code", "to_target"); - map.put("value", next_addr); - list.add(map); - Map map2 = new HashMap(); - map2.put("code", "to_task"); - map2.put("value", instdto.getInstruction_code()); - list.add(map2); - Map map3 = new HashMap(); - map3.put("code", "to_command"); - map3.put("value", "1"); - list.add(map3); - this.writing(list); - if (task != Integer.parseInt(inst.getInstruction_code())) { - this.writing(list); - message = "重新下发电气信号"; - logServer.deviceExecuteLog(device_code, "", "", inst.getInstruction_code() + "再次下发电气信号"); - } - } else { - //如果不存在则直接找对应指令 - Instruction inst = instructionService.findByDeviceCodeFromCache(this.device_code); - if (ObjectUtil.isEmpty(inst)) { - return false; - } - - Device nextdevice = deviceAppservice.findDeviceByCode(inst.getNext_device_code()); - String next_addr = nextdevice.getExtraValue().get("address").toString(); - - List list = new ArrayList(); - Map map = new HashMap(); - map.put("code", "to_target"); - map.put("value", next_addr); - list.add(map); - Map map2 = new HashMap(); - map2.put("code", "to_task"); - map2.put("value", inst.getInstruction_code()); - list.add(map2); - Map map3 = new HashMap(); - map3.put("code", "to_command"); - map3.put("value", "1"); - list.add(map3); - this.writing(list); - if (task != Integer.parseInt(inst.getInstruction_code())) { - this.writing(list); - logServer.deviceExecuteLog(device_code, "", "", inst.getInstruction_code() + "再次下发电气信号"); - } - requireSucess = true; - } - return true; - } - } - - //申请贴标 - public synchronized void applyLabeling() { - Date date = new Date(); - if (date.getTime() - this.require_apply_labeling_time.getTime() < (long) this.instruction_require_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); - return; - } else { - this.require_apply_labeling_time = date; - String vehicle_code = ""; - if (task > 0) { - Instruction instruction = instructionService.findByCodeFromCache(String.valueOf(task)); - vehicle_code = instruction.getVehicle_code(); - } else { - logServer.deviceExecuteLog(device_code, "", "", "申请贴标电气设备任务号:" + task + "异常"); - message = "申请贴标电气设备任务号:" + task + "异常"; - throw new RuntimeException("任务号为空!"); - } - if (StrUtil.isEmpty(vehicle_code)) { - logServer.deviceExecuteLog(device_code, "", "", "申请贴标电气设备任务号:" + task + "未找到载具号"); - message = "申请贴标电气设备任务号:" + task + "未找到载具号"; - throw new RuntimeException("载具号为空!"); - } - ApplyLabelingAndBindingRequest applyLabelingAndBindingRequest = - new ApplyLabelingAndBindingRequest(); - JSONObject device_json = WQLObject.getWQLObject("acs_storage_cell").query("storage_code ='" + this.device_code + "'").uniqueResult(0); - String start_point_code = null; - if (!ObjectUtil.isEmpty(device_json)) { - start_point_code = (String) device_json.get("parent_storage_code") == null ? this.device_code : (String) device_json.get("parent_storage_code"); - } - applyLabelingAndBindingRequest.setDevice_code(start_point_code); - applyLabelingAndBindingRequest.setType("1"); - applyLabelingAndBindingRequest.setVehicle_code(vehicle_code); - ApplyLabelingAndBindingResponse applyLabelingAndBindingResponse = acsToWmsService.applyLabelingAndBindingRequest(applyLabelingAndBindingRequest); - - if (applyLabelingAndBindingResponse.getstatus() == 200) { - message = "申请贴标成功"; - List list = new ArrayList(); - Map map = new HashMap(); - map.put("code", "to_command"); - map.put("value", "5"); - list.add(map); - this.writing(list); - this.writing(list); - message = "申请贴标下发电气信号成功"; - requireApplyLabelingSuccess = true; - } else { - message = "申请贴标失败," + applyLabelingAndBindingResponse.getMessage(); - } - } - } - - //申请捆扎 - @SneakyThrows - public synchronized void applyLaStrangulation() { - 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 + "未找到对应指令"; - throw new RuntimeException("该电气任务号未找到对应指令!"); - } - vehicle_code = instruction.getVehicle_code(); - } else { - logServer.deviceExecuteLog(device_code, "", "", "申请捆扎电气设备任务号:" + task + "异常"); - message = "申请捆扎电气设备任务号:" + task + "异常"; - throw new RuntimeException("任务号为空!"); - } - if (StrUtil.isEmpty(vehicle_code)) { - logServer.deviceExecuteLog(device_code, "", "", "申请捆扎电气设备任务号:" + task + "未找到载具号"); - message = "申请捆扎电气设备任务号:" + task + "未找到载具号"; - throw new RuntimeException("载具号为空!"); - } - ApplyLabelingAndBindingRequest applyLabelingAndBindingRequest = - new ApplyLabelingAndBindingRequest(); - JSONObject device_json = WQLObject.getWQLObject("acs_storage_cell").query("storage_code ='" + this.device_code + "'").uniqueResult(0); - String start_point_code = null; - if (!ObjectUtil.isEmpty(device_json)) { - start_point_code = (String) device_json.get("parent_storage_code") == null ? this.device_code : (String) device_json.get("parent_storage_code"); - } - applyLabelingAndBindingRequest.setDevice_code(start_point_code); - applyLabelingAndBindingRequest.setType("2"); - applyLabelingAndBindingRequest.setVehicle_code(vehicle_code); - ApplyLabelingAndBindingResponse applyLabelingAndBindingResponse = acsToWmsService.applyLabelingAndBindingRequest(applyLabelingAndBindingRequest); - if (applyLabelingAndBindingResponse.getstatus() == 200) { - if (ObjectUtil.isNotEmpty(applyLabelingAndBindingResponse.getData())) { - Map datas = applyLabelingAndBindingResponse.getData(); - String length = datas.get("box_length").toString(); - String width = datas.get("box_width").toString(); - String box_high = datas.get("box_high").toString(); - String bundle_times = datas.get("bundle_times").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", width); - list.add(map2); - Map map3 = new HashMap(); - map3.put("code", "to_height"); - map3.put("value", box_high); - list.add(map3); - Map map4 = new HashMap(); - map4.put("code", "to_strap_times"); - map4.put("value", bundle_times); - list.add(map4); - Map map5 = new HashMap(); - map5.put("code", "to_command"); - map5.put("value", "4"); - list.add(map5); - this.writing(list); -// this.writing(list); - - message = "申请捆扎成功"; - requireSucess = true; - } else { - message = "未返回尺寸信息"; - } - - } else { - message = applyLabelingAndBindingResponse.getMessage(); - } - - } - } - - public synchronized void emptyIn() { - Date date = new Date(); - if (date.getTime() - this.require_empty_in_time.getTime() < (long) this.instruction_require_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); - return; - } else { - this.require_empty_in_time = date; - - if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), "1")) { - message = "申请空盘入库任务中..."; - JSONObject apply = new JSONObject(); - apply.put("device_code", device_code); - apply.put("type", "2"); - String str = acsToWmsService.applyTaskToWms(apply); - JSONObject jo = JSON.parseObject(str); - if (ObjectUtil.isEmpty(jo)) { - message = "申请空盘入库接口不通"; - requireEmptyInSuccess = true; - } else { - if (jo.getInteger("status") == 200) { - message = "申请空盘入库成功"; - requireEmptyInSuccess = true; - } else { - requireEmptyInSuccess = true; - message = "申请空盘入库失败," + jo.get("message").toString(); - } - } - - } - } - } - - 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 { - this.instruction_require_time = date; - if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), "1")) { - Instruction instruction = instructionService.findByCode(String.valueOf(task)); - if(ObjectUtil.isEmpty(instruction)){ - message = "指令号"+task+"未找到对应指令"; - return; - } - message = "申请AGV搬运任务中..."; - JSONObject apply = new JSONObject(); - apply.put("device_code", device_code); - apply.put("type", "4"); - apply.put("vehicle_code", instruction.getVehicle_code()); - String str = acsToWmsService.applyTaskToWms(apply); - JSONObject jo = JSON.parseObject(str); - if (ObjectUtil.isEmpty(jo)) { - message = "申请AGV搬运任务接口不通"; - requireSucess = true; - } else { - if (jo.getInteger("status") == 200) { - message = "申请AGV搬运任务成功"; - requireSucess = true; - } else { - requireSucess = true; - message = "申请AGV搬运任务失败," + jo.get("message").toString(); - } - } - - } - } - } - - public synchronized void emptyOut() { - Date date = new Date(); - if (date.getTime() - this.require_empty_out_time.getTime() < (long) this.instruction_require_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); - return; - } else { - this.require_empty_out_time = date; - if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), "1")) { - message = "申请空盘出库任务中..."; - JSONObject apply = new JSONObject(); - apply.put("device_code", device_code); - apply.put("type", "3"); - String str = acsToWmsService.applyTaskToWms(apply); - JSONObject jo = JSON.parseObject(str); - if (ObjectUtil.isEmpty(jo)) { - message = "申请空盘出库接口不通"; - requireSucess = true; - } else { - if (jo.getInteger("status") == 200) { - message = "申请空盘出库成功"; - requireSucess = true; - } else { - requireSucess = true; - message = "申请空盘出库失败," + jo.get("message").toString(); - } - } - - } - } - } - - -} diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_labeling/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_labeling/ItemProtocol.java deleted file mode 100644 index baa5e9a..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_labeling/ItemProtocol.java +++ /dev/null @@ -1,134 +0,0 @@ -package org.nl.acs.device_driver.basedriver.siemens_conveyor_labeling; - -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_carrier_direction = "carrier_direction"; - //报警 - public static String item_error = "error"; - //任务号 - public static String item_task = "task"; - //重量 - public static String item_weight = "weight"; - - //下发命令 - public static String item_to_command = "to_command"; - //下发目标站 - public static String item_to_target = "to_target"; - //下发托盘类型 - public static String item_to_container_type = "to_container_type"; - //下发任务号 - public static String item_to_task = "to_task"; - //困扎次数 - public static String item_to_strap_times = "to_strap_times"; - //木箱长度 - public static String item_to_length = "to_length"; - //木箱宽度 - public static String item_to_weight = "to_weight"; - //木箱高度 - public static String item_to_height = "to_height"; - - - private SiemensConveyorLabelingDeviceDriver driver; - - public ItemProtocol(SiemensConveyorLabelingDeviceDriver 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 getCarrier_direction() { - return this.getOpcIntegerValue(item_carrier_direction); - } - - public int getError() { - return this.getOpcIntegerValue(item_error); - } - - public int getTask() { - return this.getOpcIntegerValue(item_task); - } - - public int getWeight() { - return this.getOpcIntegerValue(item_weight); - } - - - 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, "心跳", "DB101.B0")); - list.add(new ItemDto(item_mode, "工作模式", "DB101.B152")); - list.add(new ItemDto(item_move, "光电信号", "DB101.B153")); - list.add(new ItemDto(item_carrier_direction, "托盘方向", "DB101.B154")); - list.add(new ItemDto(item_error, "报警信号", "DB101.B156")); - list.add(new ItemDto(item_task, "任务号", "DB101.D160")); - list.add(new ItemDto(item_weight, "重量", "DB101.D160")); - return list; - } - - public static List getWriteableItemDtos() { - ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command, "下发命令", "DB102.W152")); - list.add(new ItemDto(item_to_target, "下发目标站", "DB601.W154")); - list.add(new ItemDto(item_to_task, "下发任务号", "DB102.D158")); - return list; - } - - @Override - public String toString() { - return ""; - } - -} - diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_labeling/SiemensConveyorLabelingDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_labeling/SiemensConveyorLabelingDefination.java deleted file mode 100644 index 20f246c..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_labeling/SiemensConveyorLabelingDefination.java +++ /dev/null @@ -1,64 +0,0 @@ -package org.nl.acs.device_driver.basedriver.siemens_conveyor_labeling; - -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 SiemensConveyorLabelingDefination implements OpcDeviceDriverDefination { - @Override - public String getDriverCode() { - return "siemens_conveyor_labeling"; - } - - @Override - public String getDriverName() { - return "西门子-输送机驱动-贴标"; - } - - @Override - public String getDriverDescription() { - return "西门子-输送机驱动-贴标"; - } - - @Override - public DeviceDriver getDriverInstance(Device device) { - return (new SiemensConveyorLabelingDeviceDriver()).setDevice(device).setDriverDefination(this); - - } - - @Override - public Class getDeviceDriverType() { - return SiemensConveyorLabelingDeviceDriver.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/basedriver/siemens_conveyor_labeling/SiemensConveyorLabelingDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_labeling/SiemensConveyorLabelingDeviceDriver.java deleted file mode 100644 index b495fd2..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_labeling/SiemensConveyorLabelingDeviceDriver.java +++ /dev/null @@ -1,931 +0,0 @@ -package org.nl.acs.device_driver.basedriver.siemens_conveyor_labeling; - -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; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.ObjectUtils; -import org.nl.acs.AcsConfig; -import org.nl.acs.agv.server.NDCAgvService; -import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; -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.data.ApplyLabelingAndBindingRequest; -import org.nl.acs.ext.wms.data.ApplyLabelingAndBindingResponse; -import org.nl.acs.ext.wms.service.AcsToWmsService; -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.route.service.RouteLineService; -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.modules.system.service.ParamService; -import org.nl.modules.wql.core.bean.WQLObject; -import org.nl.modules.wql.util.SpringContextHolder; -import org.openscada.opc.lib.da.Server; -import org.springframework.beans.factory.annotation.Autowired; - -import java.util.*; - -/** 西门子-输送机驱动-贴标 */ -@Slf4j -@Data -@RequiredArgsConstructor -public class SiemensConveyorLabelingDeviceDriver extends AbstractOpcDeviceDriver - implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { - protected ItemProtocol itemProtocol = new ItemProtocol(this); - - @Autowired - InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class); - - @Autowired DeviceService deviceservice = SpringContextHolder.getBean(DeviceService.class); - @Autowired RouteLineService routelineserver = SpringContextHolder.getBean(RouteLineService.class); - @Autowired TaskService taskserver = SpringContextHolder.getBean(TaskService.class); - - @Autowired - DeviceAppService deviceAppservice = SpringContextHolder.getBean(DeviceAppService.class); - - @Autowired - RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineService.class); - - @Autowired ParamService paramService = SpringContextHolder.getBean(ParamService.class); - @Autowired AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsService.class); - - @Autowired - DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); - - @Autowired NDCAgvService agvService = SpringContextHolder.getBean(NDCAgvService.class); - // 当前指令 - 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; - int weight = 0; - int last_task = 0; - int agvphase = 0; - - int phase = 0; - int index = 0; - Boolean isonline = true; - int hasGoods = 0; - String message = null; - Boolean iserror = false; - - Integer heartbeat_tag; - private Date instruction_require_time = new Date(); - private Date require_apply_labeling_time = new Date(); - private Date require_apply_strangulation_time = new Date(); - private Date require_empty_in_time = new Date(); - private Date require_empty_out_time = new Date(); - - private int instruction_require_time_out; - // 行架机械手申请任务成功标识 - boolean requireSucess = false; - boolean requireApplyLabelingSuccess = false; - boolean requireApplyLaStrangulationSuccess = false; - boolean requireEmptyInSuccess = false; - boolean requireEmptyOutSuccess = false; - private int instruction_finished_time_out; - - int branchProtocol = 0; - String inst_message; - - // 当前指令 - - // 暂定 0就绪 1请求取货 2取货完成 3请求放货 4放货完成 5取货完成离开 6放货完成离开 7请求进入区域 8请求离开区域 - int flag; - - String device_code; - - String vehicle_code; - - @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(); - carrier_direction = this.itemProtocol.getCarrier_direction(); - error = this.itemProtocol.getError(); - task = this.itemProtocol.getTask(); - weight = this.itemProtocol.getWeight(); - if (mode != last_mode) { - if (mode == 2) { - requireSucess = false; - requireApplyLabelingSuccess = false; - requireApplyLaStrangulationSuccess = false; - requireEmptyInSuccess = false; - requireEmptyOutSuccess = false; - logServer.deviceExecuteLog(this.device_code, "", "", "复位请求标记成功!"); - } - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode); - } - if (move != last_move) { - if (move == 0 && mode == 2) { - this.clearWrite(); - } - logServer.deviceItemValue(this.device_code, "move", String.valueOf(move)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + last_move + "->" + move); - } - 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 (task != last_task) { - logServer.deviceItemValue(this.device_code, "task", String.valueOf(task)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号task:" + last_task + "->" + task); - } - - if (mode == 2 && move != 0 && task > 0) { - logServer.deviceExecuteLog(device_code, "", "", "入库输送线任务开始反馈任务状态,指令号:" + task); - // inst_message - inst = instructionService.findByCodeFromCache(String.valueOf(task)); - if (inst != null) { - inst_message = - "指令号:" - + inst.getInstruction_code() - + " " - + inst.getStart_point_code() - + "->" - + inst.getNext_point_code() - + " 载具号:" - + inst.getVehicle_code(); - if (StrUtil.equals(inst.getInstruction_status(), "1") - && StrUtil.equals(this.getDeviceCode(), inst.getNext_device_code())) { - vehicle_code = inst.getVehicle_code(); - finish_instruction(); - logServer.deviceExecuteLog(device_code, "", "", "入库输送线任务开始反馈完成状态,反馈成功,指令号:" + task); - } else if (StrUtil.equals(inst.getInstruction_status(), "0") - && StrUtil.equals(this.getDeviceCode(), inst.getStart_device_code())) { - inst.setInstruction_status("1"); - instructionService.update(inst); - logServer.deviceExecuteLog(device_code, "", "", "入库输送线任务开始反馈执行中状态,反馈成功,指令号:" + task); - } else { - logServer.deviceExecuteLog( - device_code, "", "", "入库输送线任务开始反馈执行中状态,反馈失败任务状态不为就绪或者执行中状态,指令号:" + task); - } - } else { - logServer.deviceExecuteLog(device_code, "", "", "入库输送线任务开始反馈任务状态,反馈失败,查询不到指令号:" + task); - } - } - - } catch (Exception var17) { - inst_message = var17.getMessage(); - logServer.deviceExecuteLog(this.getDevice_code(), "", "", "读取信号值时出现异常:" + var17.getMessage()); - // return; - } - - // if (!this.itemProtocol.getIsonline()) { - // this.setIsonline(false); - // this.setIserror(true); - // message = "信号量同步异常"; - // //未联机 - // } else - if (mode == 0) { - this.setIsonline(false); - message = "未联机"; - // 有报警 - // } else if (error != 0) { - // this.setIsonline(false); - // this.setIserror(true); - // message = "有报警"; - // //无报警 - } else { - this.setIsonline(true); - this.setIserror(false); - if (error != 0) { - this.setIserror(true); - message = "有报警"; - } - message = ""; - Instruction instruction = null; - List toInstructions; - - switch (mode) { - case 1: - log.debug("设备运转模式:等待工作"); - break; - case 2: - // 申请任务 - if (move > 0 && !requireSucess) { - instruction_require(); - } - break; - case 4: - // 申请捆扎 - if (move > 0 && !requireSucess) { - applyLaStrangulation(); - } - break; - case 5: - // 申请贴标 - if (move > 0 && !requireSucess) { - applyLabeling(); - } - break; - case 6: - // 空托盘满垛入库申请 - if (move > 0 && !requireEmptyInSuccess) { - emptyIn(); - } - if (move > 0 && !requireSucess) { - instruction_require(); - } - break; - case 7: - // 空盘出库申请 - if (move == 0 && !requireEmptyOutSuccess) { - emptyOut(); - } - break; - case 8: - // 申请AGV任务 - if (move == 0 && !requireSucess) { - applyAgvTask(); - } - break; - } - } - last_mode = mode; - last_move = move; - last_carrier_direction = carrier_direction; - last_error = error; - last_task = task; - } - - public boolean exe_error() { - if (this.error == 0) { - return true; - } else { - log.debug("设备报警"); - return false; - } - } - - public void clearWrite() { - - List list = new ArrayList(); - Map map = new HashMap(); - map.put("code", "to_target"); - map.put("value", "0"); - list.add(map); - Map map2 = new HashMap(); - map2.put("code", "to_task"); - map2.put("value", "0"); - list.add(map2); - Map map3 = new HashMap(); - map3.put("code", "to_command"); - map3.put("value", "0"); - list.add(map3); - Map map4 = new HashMap(); - map4.put("code", "to_strap_times"); - map4.put("value", "0"); - list.add(map4); - Map map5 = new HashMap(); - map5.put("code", "to_length"); - map5.put("value", "0"); - list.add(map5); - Map map6 = new HashMap(); - map6.put("code", "to_weight"); - map6.put("value", "0"); - list.add(map6); - Map map7 = new HashMap(); - map7.put("code", "to_height"); - map7.put("value", "0"); - list.add(map7); - this.writing(list); - message = null; - vehicle_code = null; - } - - public boolean exe_business() { - return true; - } - - public synchronized boolean finish_instruction() throws Exception { - instructionService.finish(inst); - // requireSucess = false; - return true; - } - - protected void thingToNothing() throws Exception { - requireSucess = false; - } - - 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); - } - - 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 JSONObject getDeviceStatusName() { - JSONObject jo = new JSONObject(); - String mode = ""; - String move = ""; - String carrier_direction = ""; - if (this.getMode() == 0) { - mode = "脱机"; - } else if (this.getMode() == 1) { - mode = "单机"; - } else if (this.getMode() == 2) { - mode = "待机"; - } else if (this.getMode() == 3) { - mode = "运行中"; - } else if (this.getMode() == 4) { - mode = "申请捆扎中"; - } else if (this.getMode() == 5) { - mode = "申请贴标中"; - } else if (this.getMode() == 6) { - mode = "申请空盘入库中"; - } else if (this.getMode() == 7) { - mode = "申请空盘出库中"; - } else if (this.getMode() == 8) { - mode = "申请AGV任务中"; - } - - 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); - } - String requireApplyLabelingSuccess = "0"; - if (this.requireApplyLabelingSuccess) { - requireApplyLabelingSuccess = "1"; - } - String requireApplyLaStrangulationSuccess = "0"; - if (this.requireApplyLaStrangulationSuccess) { - requireApplyLaStrangulationSuccess = "1"; - } - jo.put("requireApplyLabelingSuccess", requireApplyLabelingSuccess); - jo.put("requireApplyLaStrangulationSuccess", requireApplyLaStrangulationSuccess); - - if (this.carrier_direction == 1) { - carrier_direction = "正转"; - } else if (this.carrier_direction == 2) { - carrier_direction = "反转"; - } - String requireSucess = "0"; - if (this.requireSucess) { - requireSucess = "1"; - } - - jo.put("device_name", this.getDevice().getDevice_name()); - jo.put("mode", mode); - jo.put("move", move); - jo.put("carrier_direction", carrier_direction); - jo.put("task", task); - jo.put("isOnline", this.getIsonline()); - jo.put("error", this.getError()); - jo.put("isError", this.getIserror()); - jo.put("message", this.getMessage()); - jo.put("is_click", true); - jo.put("requireSucess", requireSucess); - jo.put("driver_type", "siemens_conveyor"); - return jo; - } - - @Override - public void setDeviceStatus(JSONObject data) { - String requestSucess = data.getString("requireSucess"); - if (StrUtil.equals(requestSucess, "0")) { - this.requireSucess = false; - } else if (StrUtil.equals(requestSucess, "1")) { - this.requireSucess = true; - } - } - - public void writing(List list) { - - // String opcservcerid = this.getDevice().getOpc_server_id(); - // Server server = ReadUtil.getServer(opcservcerid); - 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); - this.control(itemMap); - } - - /** 请求指令 */ - public synchronized boolean instruction_require() { - 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 taskdto = taskserver.findByStartCodeAndReady(device_code); - if (!ObjectUtil.isEmpty(taskdto)) { - // if - // (!ObjectUtils.isEmpty(instructionService.findByBarcodeFromCache(container_code))) { - // return false; - // } - // 需要判断当前设备是否已经存在就绪的指令 如果存在就直接下发 不存在则创建 - Instruction inst = instructionService.findByTaskcodeAndStatus(taskdto.getTask_code()); - if (ObjectUtil.isNotEmpty(inst)) { - List list = new ArrayList(); - Map map = new HashMap(); - - if (StrUtil.isNotEmpty(taskdto.getTo_z())) { - if (StrUtil.equals(taskdto.getTo_z(), "01")) { - map.put("code", "to_target"); - map.put("value", "102"); - } else if (StrUtil.equals(taskdto.getTo_z(), "02")) { - map.put("code", "to_target"); - map.put("value", "201"); - } else if (StrUtil.equals(taskdto.getTo_z(), "03")) { - map.put("code", "to_target"); - map.put("value", "301"); - } - } - list.add(map); - Map map2 = new HashMap(); - map2.put("code", "to_task"); - map2.put("value", inst.getInstruction_code()); - list.add(map2); - Map map3 = new HashMap(); - map3.put("code", "to_command"); - map3.put("value", "1"); - list.add(map3); - this.writing(list); - if (task != Integer.parseInt(inst.getInstruction_code())) { - this.writing(list); - logServer.deviceExecuteLog( - device_code, "", "", inst.getInstruction_code() + "再次下发电气信号"); - } - message = "下发电气任务号成功"; - requireSucess = true; - return true; - } - - // type 5 输送任务 - if (!StrUtil.equals(taskdto.getTask_type(), "5")) { - return false; - } - 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 start_device_code = taskdto.getStart_device_code(); - String route_plan_code = taskdto.getRoute_plan_code(); - String next_device_code = ""; - - /** 开始平均分配 */ - String this_coevice_code = - taskserver.queryAssignedByDevice(device_code, taskdto.getNext_device_code()); - if (StrUtil.isEmpty(this_coevice_code)) { - List shortPathsList = - routeLineService.getShortPathLines( - start_device_code, taskdto.getNext_device_code(), route_plan_code); - RouteLineDto routeLineDto = shortPathsList.get(0); - - String path = routeLineDto.getPath(); - String type = routeLineDto.getType(); - String[] str = path.split("->"); - - List pathlist = Arrays.asList(str); - int index = 0; - for (int m = 0; m < pathlist.size(); m++) { - if (pathlist.get(m).equals(start_device_code)) { - index = m + 1; - break; - } - } - next_device_code = pathlist.get(index); - } else { - next_device_code = this_coevice_code; - } - // 校验路由关系 - List shortPathsList = - routeLineService.getShortPathLines( - start_device_code, next_device_code, route_plan_code); - if (ObjectUtils.isEmpty(shortPathsList)) { - throw new RuntimeException("路由不通!"); - } - - Device startdevice = deviceAppservice.findDeviceByCode(start_device_code); - Device nextdevice = deviceAppservice.findDeviceByCode(next_device_code); - String next_point_code; - if (StrUtil.equals(deviceAppservice.findDeviceTypeByCode(next_device_code), "storage")) { - next_point_code = taskdto.getTo_x() + "-" + taskdto.getTo_y() + "-" + taskdto.getTo_z(); - } else { - next_point_code = next_device_code; - } - 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_point_code); - instdto.setPriority(priority); - instdto.setInstruction_status("0"); - instdto.setExecute_device_code(start_point_code); - try { - instructionService.create(instdto); - } catch (Exception e) { - e.printStackTrace(); - log.error("指令创建异常!"); - return false; - } - // 创建指令后修改任务状态 - taskdto.setTask_status("1"); - taskserver.update(taskdto); - requireSucess = true; - String next_addr = nextdevice.getExtraValue().get("address").toString(); - - List list = new ArrayList(); - Map map = new HashMap(); - map.put("code", "to_target"); - map.put("value", next_addr); - list.add(map); - Map map2 = new HashMap(); - map2.put("code", "to_task"); - map2.put("value", instdto.getInstruction_code()); - list.add(map2); - Map map3 = new HashMap(); - map3.put("code", "to_command"); - map3.put("value", "1"); - list.add(map3); - this.writing(list); - if (task != Integer.parseInt(inst.getInstruction_code())) { - this.writing(list); - logServer.deviceExecuteLog(device_code, "", "", inst.getInstruction_code() + "再次下发电气信号"); - } - } else { - // 如果不存在则直接找对应指令 - Instruction inst = instructionService.findByDeviceCodeFromCache(this.device_code); - if (ObjectUtil.isEmpty(inst)) { - return false; - } - // 当起点为行架任务的时候不需要请求下发 - if (StrUtil.equals(inst.getInstruction_type(), "6")) { - return false; - } - Device nextdevice = deviceAppservice.findDeviceByCode(inst.getNext_device_code()); - String next_addr = nextdevice.getExtraValue().get("address").toString(); - - List list = new ArrayList(); - Map map = new HashMap(); - map.put("code", "to_target"); - map.put("value", next_addr); - list.add(map); - Map map2 = new HashMap(); - map2.put("code", "to_task"); - map2.put("value", inst.getInstruction_code()); - list.add(map2); - Map map3 = new HashMap(); - map3.put("code", "to_command"); - map3.put("value", "1"); - list.add(map3); - this.writing(list); - if (task != Integer.parseInt(inst.getInstruction_code())) { - this.writing(list); - logServer.deviceExecuteLog(device_code, "", "", inst.getInstruction_code() + "再次下发电气信号"); - } - } - return true; - } - } - - // 申请贴标 - public synchronized void applyLabeling() { - Date date = new Date(); - if (date.getTime() - this.require_apply_labeling_time.getTime() - < (long) this.instruction_require_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); - return; - } else { - this.require_apply_labeling_time = date; - String vehicle_code = ""; - if (weight == 0) { - logServer.deviceExecuteLog(device_code, "", "", "申请贴标电气设备重量:" + weight + "异常"); - message = "申请贴标电气设备重量:" + weight + "异常"; - throw new RuntimeException("重量为空!"); - } - if (task > 0) { - Instruction instruction = instructionService.findByCodeFromCache(String.valueOf(task)); - if (ObjectUtil.isEmpty(instruction)) { - instruction = instructionService.findByCode(String.valueOf(task)); - } - vehicle_code = instruction.getVehicle_code(); - } else { - logServer.deviceExecuteLog(device_code, "", "", "申请贴标电气设备任务号:" + task + "异常"); - message = "申请贴标电气设备任务号:" + task + "异常"; - throw new RuntimeException("任务号为空!"); - } - if (StrUtil.isEmpty(vehicle_code)) { - logServer.deviceExecuteLog(device_code, "", "", "申请贴标电气设备任务号:" + task + "未找到载具号"); - message = "申请贴标电气设备任务号:" + task + "未找到载具号"; - throw new RuntimeException("载具号为空!"); - } - ApplyLabelingAndBindingRequest applyLabelingAndBindingRequest = - new ApplyLabelingAndBindingRequest(); - JSONObject device_json = - WQLObject.getWQLObject("acs_storage_cell") - .query("storage_code ='" + this.device_code + "'") - .uniqueResult(0); - String start_point_code = null; - if (!ObjectUtil.isEmpty(device_json)) { - start_point_code = - (String) device_json.get("parent_storage_code") == null - ? this.device_code - : (String) device_json.get("parent_storage_code"); - } - applyLabelingAndBindingRequest.setDevice_code(start_point_code); - applyLabelingAndBindingRequest.setType("1"); - applyLabelingAndBindingRequest.setVehicle_code(vehicle_code); - applyLabelingAndBindingRequest.setWeight(String.valueOf((float) weight / 100)); - ApplyLabelingAndBindingResponse applyLabelingAndBindingResponse = - acsToWmsService.applyLabelingAndBindingRequest(applyLabelingAndBindingRequest); - - if (applyLabelingAndBindingResponse.getstatus() == 200) { - message = "申请贴标成功"; - List list = new ArrayList(); - Map map = new HashMap(); - map.put("code", "to_command"); - map.put("value", "5"); - list.add(map); - this.writing(list); - this.writing(list); - message = "申请贴标下发电气信号成功"; - requireSucess = true; - } else { - message = "申请贴标失败," + applyLabelingAndBindingResponse.getMessage(); - } - } - } - - // 申请捆扎 - public synchronized void applyLaStrangulation() { - 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)); - vehicle_code = instruction.getVehicle_code(); - } else { - logServer.deviceExecuteLog(device_code, "", "", "申请捆扎电气设备任务号:" + task + "异常"); - message = "申请捆扎电气设备任务号:" + task + "异常"; - throw new RuntimeException("任务号为空!"); - } - if (StrUtil.isEmpty(vehicle_code)) { - logServer.deviceExecuteLog(device_code, "", "", "申请捆扎电气设备任务号:" + task + "未找到载具号"); - message = "申请捆扎电气设备任务号:" + task + "未找到载具号"; - throw new RuntimeException("载具号为空!"); - } - ApplyLabelingAndBindingRequest applyLabelingAndBindingRequest = - new ApplyLabelingAndBindingRequest(); - JSONObject device_json = - WQLObject.getWQLObject("acs_storage_cell") - .query("storage_code ='" + this.device_code + "'") - .uniqueResult(0); - String start_point_code = null; - if (!ObjectUtil.isEmpty(device_json)) { - start_point_code = - (String) device_json.get("parent_storage_code") == null - ? this.device_code - : (String) device_json.get("parent_storage_code"); - } - applyLabelingAndBindingRequest.setDevice_code(start_point_code); - applyLabelingAndBindingRequest.setType("2"); - applyLabelingAndBindingRequest.setVehicle_code(vehicle_code); - ApplyLabelingAndBindingResponse applyLabelingAndBindingResponse = - acsToWmsService.applyLabelingAndBindingRequest(applyLabelingAndBindingRequest); - if (applyLabelingAndBindingResponse.getstatus() == 200) { - if (ObjectUtil.isNotEmpty(applyLabelingAndBindingResponse.getData())) { - Map datas = applyLabelingAndBindingResponse.getData(); - String length = datas.get("box_length").toString(); - String width = datas.get("box_width").toString(); - String box_high = datas.get("box_high").toString(); - String bundle_times = datas.get("bundle_times").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", width); - list.add(map2); - Map map3 = new HashMap(); - map3.put("code", "to_height"); - map3.put("value", box_high); - list.add(map3); - Map map4 = new HashMap(); - map4.put("code", "to_strap_times"); - map4.put("value", bundle_times); - list.add(map4); - Map map5 = new HashMap(); - map5.put("code", "to_command"); - map5.put("value", "4"); - list.add(map5); - this.writing(list); - this.writing(list); - message = "申请贴标成功"; - requireSucess = true; - } else { - message = "未返回尺寸信息"; - } - - } else { - message = applyLabelingAndBindingResponse.getMessage(); - } - } - } - - public synchronized void emptyIn() { - Date date = new Date(); - if (date.getTime() - this.require_empty_in_time.getTime() - < (long) this.instruction_require_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); - return; - } else { - this.require_empty_in_time = date; - - if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), "1")) { - message = "申请空盘入库任务中..."; - JSONObject apply = new JSONObject(); - apply.put("device_code", device_code); - apply.put("type", "2"); - String str = acsToWmsService.applyTaskToWms(apply); - JSONObject jo = JSON.parseObject(str); - if (ObjectUtil.isEmpty(jo)) { - message = "申请空盘入库接口不通"; - } else { - if (jo.getInteger("status") == 200) { - message = "申请空盘入库成功"; - requireEmptyInSuccess = true; - } else { - requireEmptyInSuccess = false; - message = "申请空盘入库失败," + jo.get("message").toString(); - } - } - } - } - } - - 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 { - this.instruction_require_time = date; - if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), "1")) { - message = "申请AGV搬运任务中..."; - JSONObject apply = new JSONObject(); - apply.put("device_code", device_code); - apply.put("type", "1"); - String str = acsToWmsService.applyTaskToWms(apply); - JSONObject jo = JSON.parseObject(str); - if (ObjectUtil.isEmpty(jo)) { - message = "申请AGV搬运任务接口不通"; - } else { - if (jo.getInteger("status") == 200) { - message = "申请AGV搬运任务成功"; - requireEmptyOutSuccess = true; - } else { - requireEmptyOutSuccess = false; - message = "申请AGV搬运任务失败," + jo.get("message").toString(); - } - } - } - } - } - - public synchronized void emptyOut() { - Date date = new Date(); - if (date.getTime() - this.require_empty_out_time.getTime() - < (long) this.instruction_require_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); - return; - } else { - this.require_empty_out_time = date; - if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), "1")) { - message = "申请空盘出库任务中..."; - JSONObject apply = new JSONObject(); - apply.put("device_code", device_code); - apply.put("type", "3"); - String str = acsToWmsService.applyTaskToWms(apply); - JSONObject jo = JSON.parseObject(str); - if (ObjectUtil.isEmpty(jo)) { - message = "申请空盘出库接口不通"; - } else { - if (jo.getInteger("status") == 200) { - message = "申请空盘出库成功"; - requireEmptyOutSuccess = true; - } else { - requireEmptyOutSuccess = false; - message = "申请空盘出库失败," + jo.get("message").toString(); - } - } - } - } - } -} diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/slit_two_manipulator/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/slit_two_manipulator/ItemProtocol.java deleted file mode 100644 index 2ca2c06..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/slit_two_manipulator/ItemProtocol.java +++ /dev/null @@ -1,183 +0,0 @@ -package org.nl.acs.device_driver.basedriver.slit_two_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_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_walk_y = "walk_y"; - //报警信号 - 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_to_command1 = "to_command1"; - //前工位下发起始站 - 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_onset2 = "to_onset2"; - //后工位下发目标站 - public static String item_to_target2 = "to_target2"; - //后工位下发任务号 - public static String item_to_task2 = "to_task2"; - //任务类型 1前工位 2后工位 3双工位 - public static String item_to_type = "to_type"; - - - private SlitTwoManipulatorDeviceDriver driver; - - public ItemProtocol(SlitTwoManipulatorDeviceDriver driver) { - this.driver = driver; - } - - public int getHeartbeat() { - return this.getOpcIntegerValue(item_heartbeat); - } - - public int getMode() { - return this.getOpcIntegerValue(item_mode); - } - - public int getStatus() { - return this.getOpcIntegerValue(item_status); - } - - public int getError() { - return this.getOpcIntegerValue(item_error); - } - - public int getMove1() { - return this.getOpcIntegerValue(item_move1); - } - - public int getMove2() { - return this.getOpcIntegerValue(item_move2); - } - - public int getAction1() { - return this.getOpcIntegerValue(item_action1); - } - - public int getAction2() { - return this.getOpcIntegerValue(item_action2); - } - - public int getWalk_y() { - return this.getOpcIntegerValue(item_walk_y); - } - - public int getType() { - return this.getOpcIntegerValue(item_type); - } - - public int getTask1() { - return this.getOpcIntegerValue(item_task1); - } - - public int getTask2() { - return this.getOpcIntegerValue(item_task2); - } - - - //是否有货 - 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 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_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")); - 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")); - return list; - } - - @Override - public String toString() { - return ""; - } - -} - diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/slit_two_manipulator/SlitTwoManipulatorDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/slit_two_manipulator/SlitTwoManipulatorDefination.java deleted file mode 100644 index c0dc36f..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/slit_two_manipulator/SlitTwoManipulatorDefination.java +++ /dev/null @@ -1,62 +0,0 @@ -package org.nl.acs.device_driver.basedriver.slit_two_manipulator; - -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 SlitTwoManipulatorDefination implements OpcDeviceDriverDefination { - @Override - public String getDriverCode() { - return "slit_two_manipulator"; - } - - @Override - public String getDriverName() { - return "分切双工位-行架机械手"; - } - - @Override - public String getDriverDescription() { - return "分切双工位-行架机械手"; - } - - @Override - public DeviceDriver getDriverInstance(Device device) { - return (new SlitTwoManipulatorDeviceDriver()).setDevice(device).setDriverDefination(this); - - } - - @Override - public Class getDeviceDriverType() { - return SlitTwoManipulatorDeviceDriver.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/basedriver/slit_two_manipulator/SlitTwoManipulatorDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/slit_two_manipulator/SlitTwoManipulatorDeviceDriver.java deleted file mode 100644 index 2d5c601..0000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/slit_two_manipulator/SlitTwoManipulatorDeviceDriver.java +++ /dev/null @@ -1,1554 +0,0 @@ -package org.nl.acs.device_driver.basedriver.slit_two_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.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ; -import lombok.Data; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; -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.siemens_conveyor.SiemensConveyorDeviceDriver; -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.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.DeviceAppServiceImpl; -import org.nl.acs.route.service.RouteLineService; -import org.nl.acs.task.service.TaskService; -import org.nl.acs.task.service.dto.TaskDto; -import org.nl.modules.common.exception.BadRequestException; -import org.nl.modules.wql.util.SpringContextHolder; -import org.openscada.opc.lib.da.Server; -import org.springframework.beans.factory.annotation.Autowired; - -import java.util.*; - -/** - * 分切双工位行架机械手 - */ -@Slf4j -@Data -@RequiredArgsConstructor -public class SlitTwoManipulatorDeviceDriver 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 - AcsToWmsService acsToWmsService = SpringContextHolder.getBean("acsToWmsServiceImpl"); - @Autowired - DeviceAppService deviceAppservice = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - - DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); - - //分切行架机械手是否禁用 0否 1是 - private int is_disable = 0; - - //工作模式 - int mode = 0; - int last_mode = 0; - //设备状态 - int status = 0; - int last_status = 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 error = 0; - int last_error = 0; - //行走列 - 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; - //前工位申请任务请求标记 - Boolean requireSucess = false; - - int hasGoods = 0; - String message = null; - Boolean iserror = false; - - int branchProtocol = 0; - - //暂定 0就绪 1请求取货 2取货完成 3请求放货 4放货完成 5取货完成离开 6放货完成离开 7请求进入区域 8请求离开区域 - int flag; - - //前工位任务执行当前步骤 - //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; - - - //请求超时时间 - private int instruction_require_time_out = 3000; - - - //后工位申请任务请求时间 - private Date instruction_require_time = new Date(); - //前工位申请任务请求时间 - private Date instruction_head_time = new Date(); - - String notCreateTaskMessage = ""; - String notCreateInstMessage = ""; - String feedMessage = ""; - - - @Override - public Device getDevice() { - return this.device; - } - - - @Override - public synchronized void execute(){ - String message = null; - 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(); - walk_y = this.itemProtocol.getWalk_y(); - error = this.itemProtocol.getError(); - type = this.itemProtocol.getType(); - task1 = this.itemProtocol.getTask1(); - task2 = this.itemProtocol.getTask2(); - - 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 && type == 1) { - Instruction inst1 = instructionService.findByCodeFromCache(String.valueOf(task1)); - if (inst1 != null) { - if (StrUtil.equals(inst1.getInstruction_status(), "0")) { - //当前执行步骤为更新任务状态 - inst1.setInstruction_status("1"); - inst1.setExecute_device_code(this.getDevice_code()); - instructionService.update(inst1); -// TaskDto taskDto = taskserver.findByCodeFromCache(inst1.getTask_code()); -// if (!ObjectUtil.isEmpty(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", "1"); -// array.add(map); -// acsToWmsService.feedbackTaskStatusToWms(array); -// } -// } - ; - //this.setNow_steps_type1(1); - } - } - } - - //单任务 后工位任务更新指令状态 - if (task2 > 0 && type == 2) { - //inst_message - Instruction inst2 = instructionService.findByCodeFromCache(String.valueOf(task2)); - if (inst2 != null) { - if (StrUtil.equals(inst2.getInstruction_status(), "0")) { - //当前指令更新状态 - now_steps_type2 = 1; - inst2.setInstruction_status("1"); - inst2.setExecute_device_code(this.device_code); - instructionService.update(inst2); -// TaskDto taskDto = taskserver.findByCodeFromCache(inst2.getTask_code()); -// if (!ObjectUtil.isEmpty(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", "1"); -// array.add(map); -// acsToWmsService.feedbackTaskStatusToWms(array); -// } -// } - ; - // this.setNow_steps_type2(1); - } - } - } - - //双任务更新指令状态 - if (task2 > 0 && task1 > 0 && type == 3) { - //inst_message - Instruction inst2 = instructionService.findByCodeFromCache(String.valueOf(task1)); - if (inst2 != null) { - if (StrUtil.equals(inst2.getInstruction_status(), "0")) { - //当前指令更新状态 - inst2.setInstruction_status("1"); - inst2.setExecute_device_code(this.device_code); - instructionService.update(inst2); -// TaskDto taskDto = taskserver.findByCodeFromCache(inst2.getTask_code()); -// if (!ObjectUtil.isEmpty(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", "1"); -// array.add(map); -// acsToWmsService.feedbackTaskStatusToWms(array); -// } -// } - ; - } - } - } - - //双任务/单任务 后工位取空时判断动作信号,并反馈 - if (mode == 3 && action2 == 1 && move2 == 0 && task2 > 0) { - Instruction inst1 = instructionService.findByCodeFromCache(String.valueOf(task2)); - String start_device_code = inst1.getStart_device_code(); - Device startDevice = deviceAppservice.findDeviceByCode(start_device_code); - if (ObjectUtil.isEmpty(startDevice)) { - feedMessage = "后工位取货位:" + start_device_code + "为空!"; - logServer.deviceExecuteLog(this.getDeviceCode(), "", "", "后工位取货位:" + start_device_code + "为空!"); - throw new BadRequestException("后工位取货位:" + start_device_code + "为空!"); - } - SiemensConveyorDeviceDriver siemensConveyorDeviceDriver; - if (startDevice.getDeviceDriver() instanceof SiemensConveyorDeviceDriver) { - siemensConveyorDeviceDriver = (SiemensConveyorDeviceDriver) startDevice.getDeviceDriver(); - int move = siemensConveyorDeviceDriver.getMove(); - int mode = siemensConveyorDeviceDriver.getMode(); - if (mode == 2 && move == 1) { - this.writing("to_command2", "2"); - if (type == 2) { - this.setNow_steps_type2(3); - } else if (type == 3) { - this.setNow_steps_type3(3); - } - } else { - log.warn("后工位取货位无货,取货位:{},mode:{},move:{}", start_device_code, mode, move); - if (this.getNow_steps_type2() == 2 || this.getNow_steps_type3() == 2) { - feedMessage = "后工位未取货原因-->"; - if (mode != 2) { - feedMessage += "后工位取货位工作模式不为待机(mode != 2),"; - } else if (move != 1) { - feedMessage += "后工位取货位无货(move != 1)"; - } - } - } - } - } else { - if (this.getNow_steps_type2() == 2 || this.getNow_steps_type3() == 2) { - feedMessage = "后工位未取货原因-->"; - if (mode != 3) { - feedMessage += "行架工作模式不为运行中(mode != 3),"; - } - if (action2 != 1) { - feedMessage += "后工位动作信号不为取货中(action2 != 1),"; - } - if (move2 != 0) { - feedMessage += "后工位光电信号不为空(move2 != 0),"; - } - if (task2 == 0) { - feedMessage += "后工位没有任务(task2 == 0)"; - } - } - } - - //单任务/或双任务 后工位收到取货完成信号并反馈 - if (mode == 3 && action2 == 2 && move2 == 1 && task2 > 0) { - this.writing("to_command2", "3"); - if (type == 2) { - this.setNow_steps_type2(4); - } - if (type == 3) { - this.setNow_steps_type3(4); - } - } else { - if (this.getNow_steps_type2() == 3 || this.getNow_steps_type3() == 3) { - feedMessage = "后工位取货完成后未反馈原因-->"; - if (mode != 3) { - feedMessage += "行架工作模式不为运行中(mode != 3),"; - } - if (action2 != 2) { - feedMessage += "后工位未取货完成(action2 != 2),"; - } - if (move2 == 0) { - feedMessage += "后工位光电信号为空(move2 == 0),"; - } - if (task2 == 0) { - feedMessage += "后工位没有任务(task2 == 0)"; - } - } - } - - //单任务/双任务 前工位取货时判断动作信号并反馈 - if (mode == 3 && action1 == 1 && move1 == 0 && task1 > 0) { - this.writing("to_command1", "2"); - if (type == 1) { - this.setNow_steps_type1(3); - } else if (type == 3) { - this.setNow_steps_type3(5); - } - } else { - if (this.getNow_steps_type1() == 2 || this.getNow_steps_type3() == 4) { - feedMessage = "前工位未取货原因"; - if (mode != 3) { - feedMessage += "行架工作模式不为运行中(mode != 3),"; - } - if (action1 != 1) { - feedMessage += "前工位动作信号不为取货中(action2 != 1),"; - } - if (move1 != 0) { - feedMessage += "前工位光电信号不为空(move2 != 0),"; - } - if (task1 == 0) { - feedMessage += "前工位没有任务(task2 == 0)"; - } - } - } - - //单任务/双任务 前工位取货完成并反馈 - if (mode == 3 && action1 == 2 && move1 == 1 && task1 > 0) { - this.writing("to_command1", "3"); - if (type == 1) { - this.setNow_steps_type1(4); - } - if (type == 3) { - this.setNow_steps_type3(6); - } - } else { - if (this.getNow_steps_type1() == 3 || this.getNow_steps_type3() == 5) { - feedMessage = "前工位取货完成后未反馈原因"; - if (mode != 3) { - feedMessage += "行架工作模式不为运行中(mode != 3),"; - } - if (action1 != 2) { - feedMessage += "前工位未取货完成(action2 != 2),"; - } - if (move1 == 0) { - feedMessage += "前工位光电信号为空(move2 == 0),"; - } - if (task1 == 0) { - feedMessage += "前工位没有任务(task2 == 0)"; - } - } - } - - - //单任务/双任务 后工位放货时判断信号并反馈 - if (mode == 3 && action2 == 3 && move2 == 1 && task2 > 0) { - this.writing("to_command2", "4"); - if (type == 2) { - this.setNow_steps_type2(5); - } else if (type == 3) { - this.setNow_steps_type3(7); - } - } else { - if (this.getNow_steps_type2() == 4 || this.getNow_steps_type3() == 6) { - feedMessage = "后工位未放货原因-->"; - if (mode != 3) { - feedMessage += "行架工作模式不为运行中(mode != 3),"; - } - if (action2 != 3) { - feedMessage += "后工位动作信号不为放货中(action2 != 3),"; - } - if (move2 == 0) { - feedMessage += "后工位光电信号为空(move2 == 0),"; - } - if (task2 == 0) { - feedMessage += "后工位没有任务(task2 == 0)"; - } - } - } - - //单任务 后工位放货完成 任务完成 - if (mode == 3 && action2 == 4 && move2 == 0 && task2 > 0 && type == 2) { - //inst_message - Instruction inst2 = instructionService.findByCodeFromCache(String.valueOf(task2)); - if (inst2 != null) { - if (StrUtil.equals(inst2.getInstruction_status(), "1")) { - finish_instruction(inst2); - TaskDto taskDto = taskserver.findByCodeFromCache(inst2.getTask_code()); - if (!ObjectUtil.isEmpty(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", "2"); - array.add(map); - acsToWmsService.feedbackTaskStatusToWms(array); - } - } - ; - this.writing("to_command2", "5"); - this.setNow_steps_type2(6); - this.setNow_steps_type2(0); - } - } - } else { - if (this.getNow_steps_type2() == 5) { - feedMessage = "单任务后工位放货完成后未反馈原因-->"; - if (mode != 3) { - feedMessage += "行架工作模式不为运行中(mode != 3),"; - } - if (action2 != 4) { - feedMessage += "后工位未放货完成(action2 != 4),"; - } - if (move2 != 0) { - feedMessage += "后工位光电信号为有货(move2 != 0),"; - } - if (task2 == 0) { - feedMessage += "后工位没有任务(task2 == 0),"; - } - if (type != 2) { - feedMessage += "不是后工位单任务(type != 2)"; - } - } - } - - //双任务 后工位反馈任务完成 并反馈 - if (mode == 3 && action2 == 4 && move2 == 0 && task1 > 0 && task2 > 0 && type == 3) { - this.writing("to_command2", "5"); - this.setNow_steps_type3(8); - } else { - if (this.getNow_steps_type3() == 7) { - feedMessage = "双任务后工位放货完成后未反馈原因-->"; - if (mode != 3) { - feedMessage += "行架工作模式不为运行中(mode != 3),"; - } - if (action2 != 4) { - feedMessage += "后工位未放货完成(action2 != 4),"; - } - if (move2 != 0) { - feedMessage += "后工位光电信号为有货(move2 != 0),"; - } - if (task1 == 0) { - feedMessage += "前工位没有任务(task1 == 0),"; - } - if (task2 == 0) { - feedMessage += "后工位没有任务(task2 == 0),"; - } - if (type != 3) { - feedMessage += "不是双任务(type != 3)"; - } - } - } - - //单任务/双任务 前工位放货时判断放货位光电信号 - if (mode == 3 && action1 == 3 && move1 == 1 && task1 > 0) { - Instruction inst1 = instructionService.findByCodeFromCache(String.valueOf(task1)); - String next_device_code = ""; - if (type == 1) { - next_device_code = inst1.getNext_device_code(); - } else if (type == 3) { - next_device_code = inst1.getNext_device_code2(); - } - Device nextDevice = deviceAppservice.findDeviceByCode(next_device_code); - if (ObjectUtil.isEmpty(nextDevice)) { - feedMessage = "前工位放货位:" + next_device_code + "为空!"; - throw new BadRequestException("前工位放货位:" + next_device_code + "为空!"); - } - SiemensConveyorDeviceDriver siemensConveyorDeviceDriver; - if (nextDevice.getDeviceDriver() instanceof SiemensConveyorDeviceDriver) { - siemensConveyorDeviceDriver = (SiemensConveyorDeviceDriver) nextDevice.getDeviceDriver(); - int move = siemensConveyorDeviceDriver.getMove(); - int mode = siemensConveyorDeviceDriver.getMode(); - if (move == 1 && mode == 2) { - this.writing("to_command1", "4"); - if (type == 1) { - this.setNow_steps_type1(5); - } else if (type == 3) { - this.setNow_steps_type3(9); - } - } else { - log.warn("后工位放货位有货,放货位:{},mode:{},move:{}", next_device_code, mode, move); - if (this.getNow_steps_type1() == 4 || this.getNow_steps_type3() == 8) { - feedMessage = "前工位未放货原因-->"; - if (mode != 2) { - feedMessage += "前工位放货位工作模式不为待机(mode != 2),"; - } else if (move == 0) { - feedMessage += "前工位放货位无货(move == 0)"; - } - } - } - } - } else { - if (this.getNow_steps_type1() == 4 || this.getNow_steps_type3() == 8) { - feedMessage = "前工位未放货原因-->"; - if (mode != 3) { - feedMessage += "行架工作模式不为运行中(mode != 3),"; - } - if (action1 != 3) { - feedMessage += "前工位动作信号不为放货中(action1 != 3),"; - } - if (move1 == 0) { - feedMessage += "前工位光电信号为空(move1 == 0),"; - } - if (task1 == 0) { - feedMessage += "前工位没有任务(task1 == 0),"; - } - } - } - - - //单任务前工位放货完成 任务完成 - if (mode == 3 && action1 == 4 && move1 == 0 && task1 > 0 && type == 1) { - //inst_message - Instruction inst1 = instructionService.findByCodeFromCache(String.valueOf(task1)); - if (inst1 != null) { - if (StrUtil.equals(inst1.getInstruction_status(), "1")) { - this.finish_instruction(inst1); - TaskDto taskDto = taskserver.findByCodeFromCache(inst1.getTask_code()); - if (!ObjectUtil.isEmpty(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", "2"); - array.add(map); - acsToWmsService.feedbackTaskStatusToWms(array); - } - } - ; - this.writing("to_command1", "5"); - this.setNow_steps_type1(6); - this.setNow_steps_type1(0); - } - } - } else { - if (this.getNow_steps_type1() == 5) { - feedMessage = "单任务前工位放货完成后未反馈原因-->"; - if (mode != 3) { - feedMessage += "行架工作模式不为运行中(mode != 3),"; - } - if (action1 != 4) { - feedMessage += "前工位未放货完成(action1 != 4),"; - } - if (move1 != 0) { - feedMessage += "前工位光电信号为有货(move1 != 0),"; - } - if (task1 == 0) { - feedMessage += "前工位没有任务(task1 == 0),"; - } - if (type != 1) { - feedMessage += "不为前工位单任务(type != 1)"; - } - } - } - - - //双工位 任务完成 前工位反馈4 - if (mode == 3 && action1 == 4 && move1 == 0 && task1 > 0 && task2 > 0 && type == 3) { - //inst_message - Instruction inst1 = instructionService.findByCodeFromCache(String.valueOf(task1)); - if (inst1 != null) { - if (StrUtil.equals(inst1.getInstruction_status(), "1")) { - this.finish_instruction(inst1); - TaskDto taskDto = taskserver.findByCodeFromCache(inst1.getTask_code()); - if (!ObjectUtil.isEmpty(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", "2"); - array.add(map); - acsToWmsService.feedbackTaskStatusToWms(array); - } - } - ; - this.writing("to_command1", "5"); - this.setNow_steps_type3(10); - this.setNow_steps_type3(0); - } - } - } else { - if (this.getNow_steps_type3() == 9) { - feedMessage = "双任务前工位放货完成后未反馈原因-->"; - if (mode != 3) { - feedMessage += "行架工作模式不为运行中(mode != 3),"; - } - if (action1 != 4) { - feedMessage += "前工位未放货完成(action1 != 4),"; - } - if (move1 != 0) { - feedMessage += "前工位光电信号为有货(move1 != 0),"; - } - if (task1 == 0) { - feedMessage += "前工位没有任务(task1 == 0),"; - } - if (task2 == 0) { - feedMessage += "后工位没有任务(task2 == 0),"; - } - if (type != 3) { - feedMessage += "不是双任务(type != 3)"; - } - } - } - - - } catch (Exception var17) { - feedMessage = var17.getMessage(); - logServer.deviceExecuteLog(this.device_code, "", "", "读取信号值时出现异常:" + var17.getMessage()); -// return; - } - -// 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); - switch (mode) { - case 1: - log.debug("设备运转模式:等待工作"); - return; - case 2: - //申请任务 - if (mode == 2 && 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; - } - } - } - //没有生成异常取放货工位的任务 就生成正常关联取放货工位的任务 - instruction_require(); - feedMessage = ""; - notCreateInstMessage = ""; - notCreateTaskMessage = ""; - logServer.deviceExecuteLog(device_code, "", String.valueOf(task1), "move2:" + move2 + ",action2:" + action2 + ",move1:" + move1 + ",action1:" + action1 + ",requireSucess:" + requireSucess); - } else { -// if (!requireSucess) { -// remark = remark + "请求标记为true,请检查mode是否由其他值变为2!"; -// } - if (!requireSucess) { - String remark = ""; - if (mode != 2) { - remark = remark + "行架工作模式不为待机(mode != 2),"; - } - if (move1 != 0) { - remark = remark + "前工位有货(move1 != 0),"; - } - if (move2 != 0) { - remark = remark + "后工位有货(move2 != 0),"; - } - if (action1 != 0) { - remark = remark + "前工位动作信号不为0(action1 != 0),"; - } - if (action2 != 0) { - remark = remark + "后工位动作信号不为0(action2 != 0),"; - } - if (task1 != 0) { - remark = remark + "前工位存在任务(task1 != 0),"; - } - if (task2 != 0) { - remark = remark + "后工位存在任务(task2 != 0),"; - } - this.setNotCreateTaskMessage(remark); - } - } - break; - case 3: - break; - } - - } - last_mode = mode; - last_error = error; - last_status = status; - last_move1 = move1; - last_move2 = move2; - last_action1 = action1; - last_action2 = action2; - last_walk_y = walk_y; - last_type = type; - last_task1 = task1; - last_task2 = task2; - } - - //关联设备异常申请任务 - 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 instruction_require() { - 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("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.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 = ""; - notCreateTaskMessage = ""; - } - } else { - notCreateTaskMessage = ""; - notCreateInstMessage = "未找到正常关联设备的任务!"; - } - } - return flag; - } - - //执行重新生成指令的任务 - 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); - 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 = "1"; - } else if (backGetIndex != -1) { - //后工位 - type = "2"; - } - this.isSetAddress(startDevice); - this.isSetAddress(nextDevice); - } - - //修改指令状态 - instructionDto.setInstruction_status("1"); - instructionDto.setUpdate_time(DateUtil.now()); - try { - instructionService.update(instructionDto); - if (StrUtil.equals(type, "1")) { - 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; - } catch (Exception e) { - logServer.deviceExecuteLog(device_code, "", instructionDto.getInstruction_code(), "执行重新生成指令的任务失败,原因->" + e.getMessage()); - } - - //下发电气信号 - this.sendSignalType(instructionDto, type); - - //请求任务成功 - requireSucess = true; - return flag; - } - - //执行就绪状态下的任务 - public synchronized boolean executeReadyBusiness(TaskDto taskDto, List getDeviceCodeList, List backGetDeviceCodeList) { - boolean flag = false; - //任务类型 1.前工位任务 2.后工位任务 3.双工位任务 - String type = ""; - //获取任务表中的取货点1 - String start_device_code = taskDto.getStart_device_code(); - //获取任务表中的取货点2 - String start_device_code2 = taskDto.getStart_device_code2(); - //获取任务表中的放货点1 - String next_device_code = taskDto.getNext_device_code(); - //获取任务表中的放货点2 - String next_device_code2 = taskDto.getNext_device_code2(); - //判断任务点位是否配置电气信号 - 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 = "1"; //前工位 - } 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); - } - - 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); - instdto.setMaterial(material); - instdto.setQuantity(quantity); - 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("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); - - 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("1"); - taskDto.setUpdate_time(DateUtil.now()); - taskserver.update(taskDto); - - //下发电气信号 - this.sendSignalType(instdto, type); - - //请求任务成功 - 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, "1")) { - 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", "1"); - list.add(map4); - Map map5 = new HashMap(); - map5.put("code", "to_command1"); - map5.put("value", "1"); - 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", "1"); -// this.writing("to_type", "1"); - 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", "1"); - 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", "1"); -// 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", "1"); - list.add(map8); - Map map9 = new HashMap(); - map9.put("code", "to_command2"); - map9.put("value", "1"); - 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", "1"); -// this.writing("to_onset2", start_addr); -// this.writing("to_target2", next_addr); -// this.writing("to_task2", dto.getInstruction_code()); -// this.writing("to_command2", "1"); -// 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() + "再次下发电气信号"); - } - - } - - //判断点位是否设置电气值 - public void isSetAddress(Device device) { - if (ObjectUtil.isEmpty(device.getExtraValue().get("address"))) { - logServer.deviceExecuteLog(device_code, "", "task1:" + task1 + ",task2:" + task2, "设备:" + device.getDevice_code() + "未设置电气调度号!"); - notCreateInstMessage = "设备:" + device.getDevice_code() + "未设置电气调度号!"; - throw new BadRequestException("设备:" + device.getDevice_code() + "未设置电气调度号!"); - } - } - - public boolean exe_error() { - if (this.error == 0) { - return true; - } else { - log.debug("设备报警"); - return false; - } - } - - 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)); - - this.control(itemMap); - logServer.deviceExecuteLog(device_code, "", "", "下发电气信号设备号:" + device_code + ",下发电气:" + to_param + ",下发电气值:" + value); - } - - 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 opcservcerid = this.getDevice().getOpc_server_id(); -//Server server = ReadUtil.getServer(opcservcerid); - Map itemMap = new HashMap(); - this.control(itemMap); - - } - - - public synchronized boolean finish_instruction(Instruction inst) throws Exception { - instructionService.finish(inst); - return true; - } - - - public void executing(Server server, Map itemMap) { - this.control(itemMap); - } - - 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 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); - this.control(itemMap); - - } - - public void writing(int type, int command) { - //String opcservcerid = this.getDevice().getOpc_server_id(); -//Server server = ReadUtil.getServer(opcservcerid); - Map itemMap = new HashMap(); - this.control(itemMap); - } - - public void writing(List list) { - -// String opcservcerid = this.getDevice().getOpc_server_id(); -// Server server = ReadUtil.getServer(opcservcerid); - 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); - this.control(itemMap); - } - - - //将扩展表中的字符串数组数据转换成集合 - 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 move_1 = ""; - String move_2 = ""; - String action1 = ""; - String action2 = ""; - String walk_y = ""; - String mode = ""; - String status = ""; - String is_disable = ""; - - - 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.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 = "无货"; - } else if (this.getMove1() == 1) { - move_1 = "有货"; - } - - if (this.getMove2() == 0) { - move_2 = "无货"; - } else if (this.getMove2() == 1) { - 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.getWalk_y() == 0) { - walk_y = "原位"; - } else if (this.getWalk_y() == 2) { - walk_y = "非原位"; - } - - if (this.getIs_disable() == 0) { - is_disable = "正常"; - } else if (this.getIs_disable() == 1) { - is_disable = "禁用"; - } - - String requireSucess = "0"; - if (this.requireSucess) { - requireSucess = "1"; - } - jo.put("requireSucess", requireSucess); - - 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("walk_y", walk_y); - jo.put("error", this.getError()); - jo.put("task1", this.getTask1()); - jo.put("task2", this.getTask2()); - 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); - jo.put("notCreateInstMessage", notCreateInstMessage); - jo.put("feedMessage", feedMessage); - 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("1", "前工位单任务改变指令状态"); - 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("1", "后工位单任务改变指令状态"); - 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("1", "双任务改变指令状态"); - 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", "双任务前工位放货完成"); - } else { - return "未执行任务"; - } - return map.getString(set_type); - } - - @Override - public void setDeviceStatus(JSONObject data) { - String is_disable = data.getString("is_disable"); - if (StrUtil.isNotEmpty(is_disable)) { - this.setIs_disable(Integer.parseInt(is_disable)); - } - String requestSucess = data.getString("requireSucess"); - if (StrUtil.equals(requestSucess, "0")) { - this.requireSucess = false; - } else if (StrUtil.equals(requestSucess, "1")) { - this.requireSucess = true; - } - } -} diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/data/CreateTaskRequest.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/data/CreateTaskRequest.java index 5ec4d37..b332e93 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/data/CreateTaskRequest.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/data/CreateTaskRequest.java @@ -109,4 +109,18 @@ public class CreateTaskRequest extends BaseRequest { */ Map params; + String REQCODE; + + String TASKCODE; + + String PODCODE; + + String TASKTYPE; + + String STARTPOSITION; + + String ENNPOSITION; + + String REQTIME; + } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/data/CreateTaskResponse.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/data/CreateTaskResponse.java index 40a3918..98af710 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/data/CreateTaskResponse.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/data/CreateTaskResponse.java @@ -1,6 +1,19 @@ package org.nl.acs.ext.wms.data; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data public class CreateTaskResponse extends BaseResponse { + private String REQCODE; + private String REPLYTIME; + + private String RTCODE; + + private String AGVCODE; + + private String RTMSG; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java index b301900..eddd9eb 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java @@ -104,4 +104,6 @@ public interface AcsToWmsService { // 输送线有货变成无货时向lms请求 HttpResponse shipDeviceUpdate(JSONObject param); + + HttpResponse taskExecution(JSONObject param); } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java index 71e9640..437ad9b 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java @@ -529,4 +529,27 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } return null; } + + @Override + public HttpResponse taskExecution(JSONObject param) { + try { + MDC.put(log_file_type, log_type); +// log.info("shipDeviceUpdate-----输入参数{}", param); + if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), "1")) { + String wmsUrl = paramService.findByCode(AcsConfig.WMSURL).getValue(); + AddressDto addressDto = addressService.findByCode("taskExecution"); + String methods_url = addressDto.getMethods_url(); + String url = wmsUrl + methods_url; + return HttpRequest + .post(url) + .body(param.toString()) + .execute(); + } + } catch (Throwable ignored) { + + } finally { + MDC.remove(log_file_type); + } + return null; + } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/LiKuToAcsServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/LiKuToAcsServiceImpl.java index a097034..c3ef974 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/LiKuToAcsServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/LiKuToAcsServiceImpl.java @@ -7,13 +7,7 @@ import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.address.service.AddressService; -import org.nl.acs.device_driver.basedriver.hongxiang_device.HongXiangConveyorDeviceDriver; -import org.nl.acs.device_driver.basedriver.siemens_conveyor.SiemensConveyorDeviceDriver; -import org.nl.acs.device_driver.basedriver.standard_conveyor_control_with_scanner.StandardCoveyorControlWithScannerDeviceDriver; -import org.nl.acs.ext.wms.AcsUtil; import org.nl.acs.ext.wms.RespUtil; -import org.nl.acs.ext.wms.data.UpdateLKTaskRequest; -import org.nl.acs.ext.wms.data.UpdateLKTaskResponse; import org.nl.acs.ext.wms.liKuData.*; import org.nl.acs.ext.wms.service.AcsToLiKuService; import org.nl.acs.ext.wms.service.AcsToWmsService; @@ -272,28 +266,28 @@ public class LiKuToAcsServiceImpl implements LiKuToAcsService { String type = requestParam.getType(); DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); Device device = appService.findDeviceByCode(device_code); - SiemensConveyorDeviceDriver siemensConveyorDeviceDriver; +// SiemensConveyorDeviceDriver siemensConveyorDeviceDriver; JSONObject result = new JSONObject(); result.put("code", "0"); - if (device.getDeviceDriver() instanceof SiemensConveyorDeviceDriver) { - siemensConveyorDeviceDriver = (SiemensConveyorDeviceDriver) device.getDeviceDriver(); - if(StrUtil.equals(type,"1")){ - if((siemensConveyorDeviceDriver.getMode() ==2 || siemensConveyorDeviceDriver.getMode() ==7 )&& siemensConveyorDeviceDriver.getMove() ==0){ - result.put("result", "true"); - result.put("comment", ""); - } else { - result.put("result", "false"); - result.put("comment", "当前设备光电信号:"+siemensConveyorDeviceDriver.getMove()+",工作模式:"+siemensConveyorDeviceDriver.getMode()); - } - } else if(StrUtil.equals(type,"2")){ - siemensConveyorDeviceDriver.writing("to_command","3"); - siemensConveyorDeviceDriver.writing("to_command","3"); - - result.put("result", "true"); - result.put("comment", ""); - } - - } +// if (device.getDeviceDriver() instanceof SiemensConveyorDeviceDriver) { +// siemensConveyorDeviceDriver = (SiemensConveyorDeviceDriver) device.getDeviceDriver(); +// if(StrUtil.equals(type,"1")){ +// if((siemensConveyorDeviceDriver.getMode() ==2 || siemensConveyorDeviceDriver.getMode() ==7 )&& siemensConveyorDeviceDriver.getMove() ==0){ +// result.put("result", "true"); +// result.put("comment", ""); +// } else { +// result.put("result", "false"); +// result.put("comment", "当前设备光电信号:"+siemensConveyorDeviceDriver.getMove()+",工作模式:"+siemensConveyorDeviceDriver.getMode()); +// } +// } else if(StrUtil.equals(type,"2")){ +// siemensConveyorDeviceDriver.writing("to_command","3"); +// siemensConveyorDeviceDriver.writing("to_command","3"); +// +// result.put("result", "true"); +// result.put("comment", ""); +// } +// +// } log.info("请求放空盘-----输出参数{}", result); return RespUtil.getResp(result.toString(), new DeviceStatusResponse()); } finally { 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 15564de..c20e1a7 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 @@ -1,5 +1,6 @@ package org.nl.acs.ext.wms.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; @@ -10,11 +11,6 @@ import lombok.extern.slf4j.Slf4j; import org.nl.acs.AcsConfig; import org.nl.acs.common.IDriverService; import org.nl.acs.device.service.DeviceService; -import org.nl.acs.device_driver.basedriver.cargo_lift_conveyor.CargoLiftConveyorDeviceDriver; -import org.nl.acs.device_driver.basedriver.empty_vehicle_stacking_position.EmptyVehicleStackingPositionDeviceDriver; -import org.nl.acs.device_driver.basedriver.hongxiang_conveyor.HongXiangStationDeviceDriver; -import org.nl.acs.device_driver.basedriver.hongxiang_device.HongXiangConveyorDeviceDriver; -import org.nl.acs.device_driver.basedriver.plug_pull_device_site.PlugPullDeviceSiteDeviceDriver; import org.nl.acs.device_driver.basedriver.standard_conveyor_control_with_scanner.StandardCoveyorControlWithScannerDeviceDriver; import org.nl.acs.ext.wms.data.*; import org.nl.acs.ext.wms.liKuData.Resp; @@ -58,8 +54,8 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { private final AcsToLiKuService acsToLiKuService; - private String log_file_type="log_file_type"; - private String log_type="LMS请求ACS"; + private String log_file_type = "log_file_type"; + private String log_type = "LMS请求ACS"; @Override public CancelTaskResponse cancelFromWms(String param) throws Exception { @@ -164,13 +160,12 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { if (ObjectUtil.isEmpty(device)) { throw new Exception("未找到对应设备:" + device_code); } - HongXiangStationDeviceDriver hongXiangStationDeviceDriver; - PlugPullDeviceSiteDeviceDriver plugPullDeviceSiteDeviceDriver; - if (device.getDeviceDriver() instanceof HongXiangStationDeviceDriver) { - hongXiangStationDeviceDriver = (HongXiangStationDeviceDriver) device.getDeviceDriver(); - hongXiangStationDeviceDriver.writing(code, value); - } - +// HongXiangStationDeviceDriver hongXiangStationDeviceDriver; +// PlugPullDeviceSiteDeviceDriver plugPullDeviceSiteDeviceDriver; +// if (device.getDeviceDriver() instanceof HongXiangStationDeviceDriver) { +// hongXiangStationDeviceDriver = (HongXiangStationDeviceDriver) device.getDeviceDriver(); +// hongXiangStationDeviceDriver.writing(code, value); +// } } @@ -193,9 +188,9 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { JSONArray datas = JSONArray.parseArray(jsonObject); //AGV烘箱对接位 - HongXiangStationDeviceDriver hongXiangStationDeviceDriver; +// HongXiangStationDeviceDriver hongXiangStationDeviceDriver; //烘箱工位 - HongXiangConveyorDeviceDriver hongXiangConveyorDeviceDriver; +// HongXiangConveyorDeviceDriver hongXiangConveyorDeviceDriver; //货梯对接线-带扫码器 StandardCoveyorControlWithScannerDeviceDriver standardCoveyorControlWithScannerDeviceDriver; @@ -217,27 +212,27 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { throw new Exception("未找到对应设备:" + parent_device_code); } - if (device.getDeviceDriver() instanceof HongXiangStationDeviceDriver) { - hongXiangStationDeviceDriver = (HongXiangStationDeviceDriver) device.getDeviceDriver(); - jo.put("device_code", parent_device_code); - jo.put("mode", hongXiangStationDeviceDriver.getMode()); - jo.put("move", hongXiangStationDeviceDriver.getMove()); - - } else if (device.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { - hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) device.getDeviceDriver(); - jo.put("device_code", parent_device_code); - jo.put("mode", hongXiangConveyorDeviceDriver.getMode()); - jo.put("move", hongXiangConveyorDeviceDriver.getMove()); - jo.put("countdown_house", hongXiangConveyorDeviceDriver.getCountdown_house()); - jo.put("countdown_min", hongXiangConveyorDeviceDriver.getCountdown_min()); - jo.put("countdown_sec", hongXiangConveyorDeviceDriver.getCountdown_sec()); - //温度需要除以10 - jo.put("temperature", hongXiangConveyorDeviceDriver.getTemperature()/10); - jo.put("door", hongXiangConveyorDeviceDriver.getDoor()); - jo.put("finish", hongXiangConveyorDeviceDriver.getFinish()); - jo.put("task", hongXiangConveyorDeviceDriver.getTask()); - jo.put("error", hongXiangConveyorDeviceDriver.getError()); - } else if (device.getDeviceDriver() instanceof StandardCoveyorControlWithScannerDeviceDriver) { +// if (device.getDeviceDriver() instanceof HongXiangStationDeviceDriver) { +// hongXiangStationDeviceDriver = (HongXiangStationDeviceDriver) device.getDeviceDriver(); +// jo.put("device_code", parent_device_code); +// jo.put("mode", hongXiangStationDeviceDriver.getMode()); +// jo.put("move", hongXiangStationDeviceDriver.getMove()); +// +// } else if (device.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { +// hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) device.getDeviceDriver(); +// jo.put("device_code", parent_device_code); +// jo.put("mode", hongXiangConveyorDeviceDriver.getMode()); +// jo.put("move", hongXiangConveyorDeviceDriver.getMove()); +// jo.put("countdown_house", hongXiangConveyorDeviceDriver.getCountdown_house()); +// jo.put("countdown_min", hongXiangConveyorDeviceDriver.getCountdown_min()); +// jo.put("countdown_sec", hongXiangConveyorDeviceDriver.getCountdown_sec()); +// //温度需要除以10 +// jo.put("temperature", hongXiangConveyorDeviceDriver.getTemperature()/10); +// jo.put("door", hongXiangConveyorDeviceDriver.getDoor()); +// jo.put("finish", hongXiangConveyorDeviceDriver.getFinish()); +// jo.put("task", hongXiangConveyorDeviceDriver.getTask()); +// jo.put("error", hongXiangConveyorDeviceDriver.getError()); + if (device.getDeviceDriver() instanceof StandardCoveyorControlWithScannerDeviceDriver) { standardCoveyorControlWithScannerDeviceDriver = (StandardCoveyorControlWithScannerDeviceDriver) device.getDeviceDriver(); jo.put("device_code", parent_device_code); jo.put("move", standardCoveyorControlWithScannerDeviceDriver.getMove()); @@ -305,7 +300,6 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { } - @Override public Map putPlusPullAction(String param) { try { @@ -319,131 +313,131 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { if (ObjectUtil.isEmpty(device)) { JSONObject resultJson = new JSONObject(); resultJson.put("status", HttpStatus.BAD_REQUEST.value()); - resultJson.put("message", "未找到对应的设备:"+device_code); + resultJson.put("message", "未找到对应的设备:" + device_code); return resultJson; } - PlugPullDeviceSiteDeviceDriver plugPullDeviceSiteDeviceDriver; - if (device.getDeviceDriver() instanceof PlugPullDeviceSiteDeviceDriver) { - plugPullDeviceSiteDeviceDriver = (PlugPullDeviceSiteDeviceDriver) device.getDeviceDriver(); - // 0 穿轴 1拔轴 - if(StrUtil.equals(type,"1")){ +// PlugPullDeviceSiteDeviceDriver plugPullDeviceSiteDeviceDriver; +// if (device.getDeviceDriver() instanceof PlugPullDeviceSiteDeviceDriver) { +// plugPullDeviceSiteDeviceDriver = (PlugPullDeviceSiteDeviceDriver) device.getDeviceDriver(); +// // 0 穿轴 1拔轴 +// if(StrUtil.equals(type,"1")){ +// +// if(plugPullDeviceSiteDeviceDriver.getMode() == 1){ +// JSONObject resultJson = new JSONObject(); +// resultJson.put("status", HttpStatus.BAD_REQUEST.value()); +// resultJson.put("message", "请求拔轴,当前设备工作模式未自动"); +// return resultJson; +// } +// if(plugPullDeviceSiteDeviceDriver.getAction() == 0){ +// JSONObject resultJson = new JSONObject(); +// resultJson.put("status", HttpStatus.BAD_REQUEST.value()); +// resultJson.put("message", "请求拔轴,当前设备未全自动"); +// return resultJson; +// } +// if(plugPullDeviceSiteDeviceDriver.getStatus() != 0){ +// JSONObject resultJson = new JSONObject(); +// resultJson.put("status", HttpStatus.BAD_REQUEST.value()); +// resultJson.put("message", "请求拔轴,当前设备未待机"); +// return resultJson; +// } +// if(plugPullDeviceSiteDeviceDriver.getControl() != 0){ +// JSONObject resultJson = new JSONObject(); +// resultJson.put("status", HttpStatus.BAD_REQUEST.value()); +// resultJson.put("message", "请求拔轴,当前设备未远程控制"); +// return resultJson; +// } +// if(plugPullDeviceSiteDeviceDriver.getMove() != 0){ +// JSONObject resultJson = new JSONObject(); +// resultJson.put("status", HttpStatus.BAD_REQUEST.value()); +// resultJson.put("message", "请求拔轴,当前设备有轴"); +// return resultJson; +// } +// if(plugPullDeviceSiteDeviceDriver.getMode() == 0 && plugPullDeviceSiteDeviceDriver.getAction() ==1 +// && plugPullDeviceSiteDeviceDriver.getStatus() ==0 && plugPullDeviceSiteDeviceDriver.getMove() ==0 +// && plugPullDeviceSiteDeviceDriver.getControl() ==0 ){ +// +// List list = new ArrayList(); +// Map map = new HashMap(); +// map.put("code","to_size"); +// map.put("value",size); +// list.add(map); +// Map map2 = new HashMap(); +// map2.put("code","to_type"); +// map2.put("value",type); +// list.add(map2); +// Map map3 = new HashMap(); +// map3.put("code","to_command"); +// map3.put("value","1"); +// list.add(map3); +// plugPullDeviceSiteDeviceDriver.writing(list); +// +// } else { +// JSONObject resultJson = new JSONObject(); +// resultJson.put("status", HttpStatus.BAD_REQUEST.value()); +// resultJson.put("message", "当前设备状态不满足下发条件"); +// return resultJson; +// } +// +// } else if (StrUtil.equals(type,"0")){ +// +// if(plugPullDeviceSiteDeviceDriver.getMode() == 1){ +// JSONObject resultJson = new JSONObject(); +// resultJson.put("status", HttpStatus.BAD_REQUEST.value()); +// resultJson.put("message", "请求插轴,当前设备工作模式未自动"); +// return resultJson; +// } +// if(plugPullDeviceSiteDeviceDriver.getAction() == 0){ +// JSONObject resultJson = new JSONObject(); +// resultJson.put("status", HttpStatus.BAD_REQUEST.value()); +// resultJson.put("message", "请求插轴,当前设备未全自动"); +// return resultJson; +// } +// if(plugPullDeviceSiteDeviceDriver.getStatus() != 0){ +// JSONObject resultJson = new JSONObject(); +// resultJson.put("status", HttpStatus.BAD_REQUEST.value()); +// resultJson.put("message", "请求插轴,当前设备未待机"); +// return resultJson; +// } +// if(plugPullDeviceSiteDeviceDriver.getControl() != 0){ +// JSONObject resultJson = new JSONObject(); +// resultJson.put("status", HttpStatus.BAD_REQUEST.value()); +// resultJson.put("message", "请求插轴,当前设备未远程控制"); +// return resultJson; +// } +// if(plugPullDeviceSiteDeviceDriver.getMove() != 1){ +// JSONObject resultJson = new JSONObject(); +// resultJson.put("status", HttpStatus.BAD_REQUEST.value()); +// resultJson.put("message", "请求插轴,当前设备没有轴"); +// return resultJson; +// } - if(plugPullDeviceSiteDeviceDriver.getMode() == 1){ - JSONObject resultJson = new JSONObject(); - resultJson.put("status", HttpStatus.BAD_REQUEST.value()); - resultJson.put("message", "请求拔轴,当前设备工作模式未自动"); - return resultJson; - } - if(plugPullDeviceSiteDeviceDriver.getAction() == 0){ - JSONObject resultJson = new JSONObject(); - resultJson.put("status", HttpStatus.BAD_REQUEST.value()); - resultJson.put("message", "请求拔轴,当前设备未全自动"); - return resultJson; - } - if(plugPullDeviceSiteDeviceDriver.getStatus() != 0){ - JSONObject resultJson = new JSONObject(); - resultJson.put("status", HttpStatus.BAD_REQUEST.value()); - resultJson.put("message", "请求拔轴,当前设备未待机"); - return resultJson; - } - if(plugPullDeviceSiteDeviceDriver.getControl() != 0){ - JSONObject resultJson = new JSONObject(); - resultJson.put("status", HttpStatus.BAD_REQUEST.value()); - resultJson.put("message", "请求拔轴,当前设备未远程控制"); - return resultJson; - } - if(plugPullDeviceSiteDeviceDriver.getMove() != 0){ - JSONObject resultJson = new JSONObject(); - resultJson.put("status", HttpStatus.BAD_REQUEST.value()); - resultJson.put("message", "请求拔轴,当前设备有轴"); - return resultJson; - } - if(plugPullDeviceSiteDeviceDriver.getMode() == 0 && plugPullDeviceSiteDeviceDriver.getAction() ==1 - && plugPullDeviceSiteDeviceDriver.getStatus() ==0 && plugPullDeviceSiteDeviceDriver.getMove() ==0 - && plugPullDeviceSiteDeviceDriver.getControl() ==0 ){ +// if(plugPullDeviceSiteDeviceDriver.getMode() == 0 && plugPullDeviceSiteDeviceDriver.getAction() ==1 +// && plugPullDeviceSiteDeviceDriver.getStatus() ==0 && plugPullDeviceSiteDeviceDriver.getMove() ==1 +// && plugPullDeviceSiteDeviceDriver.getControl() ==0 ){ +// +// List list = new ArrayList(); +// Map map = new HashMap(); +// map.put("code","to_size"); +// map.put("value",size); +// list.add(map); +// Map map2 = new HashMap(); +// map2.put("code","to_type"); +// map2.put("value",type); +// list.add(map2); +// Map map3 = new HashMap(); +// map3.put("code","to_command"); +// map3.put("value","1"); +// list.add(map3); +// plugPullDeviceSiteDeviceDriver.writing(list); +// +// } else { +// JSONObject resultJson = new JSONObject(); +// resultJson.put("status", HttpStatus.BAD_REQUEST.value()); +// resultJson.put("message", "当前设备状态不满足下发条件"); +// return resultJson; +// } +// } - List list = new ArrayList(); - Map map = new HashMap(); - map.put("code","to_size"); - map.put("value",size); - list.add(map); - Map map2 = new HashMap(); - map2.put("code","to_type"); - map2.put("value",type); - list.add(map2); - Map map3 = new HashMap(); - map3.put("code","to_command"); - map3.put("value","1"); - list.add(map3); - plugPullDeviceSiteDeviceDriver.writing(list); - - } else { - JSONObject resultJson = new JSONObject(); - resultJson.put("status", HttpStatus.BAD_REQUEST.value()); - resultJson.put("message", "当前设备状态不满足下发条件"); - return resultJson; - } - - } else if (StrUtil.equals(type,"0")){ - - if(plugPullDeviceSiteDeviceDriver.getMode() == 1){ - JSONObject resultJson = new JSONObject(); - resultJson.put("status", HttpStatus.BAD_REQUEST.value()); - resultJson.put("message", "请求插轴,当前设备工作模式未自动"); - return resultJson; - } - if(plugPullDeviceSiteDeviceDriver.getAction() == 0){ - JSONObject resultJson = new JSONObject(); - resultJson.put("status", HttpStatus.BAD_REQUEST.value()); - resultJson.put("message", "请求插轴,当前设备未全自动"); - return resultJson; - } - if(plugPullDeviceSiteDeviceDriver.getStatus() != 0){ - JSONObject resultJson = new JSONObject(); - resultJson.put("status", HttpStatus.BAD_REQUEST.value()); - resultJson.put("message", "请求插轴,当前设备未待机"); - return resultJson; - } - if(plugPullDeviceSiteDeviceDriver.getControl() != 0){ - JSONObject resultJson = new JSONObject(); - resultJson.put("status", HttpStatus.BAD_REQUEST.value()); - resultJson.put("message", "请求插轴,当前设备未远程控制"); - return resultJson; - } - if(plugPullDeviceSiteDeviceDriver.getMove() != 1){ - JSONObject resultJson = new JSONObject(); - resultJson.put("status", HttpStatus.BAD_REQUEST.value()); - resultJson.put("message", "请求插轴,当前设备没有轴"); - return resultJson; - } - - if(plugPullDeviceSiteDeviceDriver.getMode() == 0 && plugPullDeviceSiteDeviceDriver.getAction() ==1 - && plugPullDeviceSiteDeviceDriver.getStatus() ==0 && plugPullDeviceSiteDeviceDriver.getMove() ==1 - && plugPullDeviceSiteDeviceDriver.getControl() ==0 ){ - - List list = new ArrayList(); - Map map = new HashMap(); - map.put("code","to_size"); - map.put("value",size); - list.add(map); - Map map2 = new HashMap(); - map2.put("code","to_type"); - map2.put("value",type); - list.add(map2); - Map map3 = new HashMap(); - map3.put("code","to_command"); - map3.put("value","1"); - list.add(map3); - plugPullDeviceSiteDeviceDriver.writing(list); - - } else { - JSONObject resultJson = new JSONObject(); - resultJson.put("status", HttpStatus.BAD_REQUEST.value()); - resultJson.put("message", "当前设备状态不满足下发条件"); - return resultJson; - } - } - } JSONObject resultJson = new JSONObject(); resultJson.put("status", HttpStatus.OK.value()); @@ -457,30 +451,29 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { } - @Override public CreateTaskResponse crateTask(String param) { try { MDC.put(log_file_type, log_type); log.info("crateTask-----输入参数{}", param); - JSONArray datas = JSONArray.parseArray(param); + JSONArray datas = JSONArray.parseArray("[" + param + "]"); CreateTaskResponse response = new CreateTaskResponse(); JSONArray errArr = new JSONArray(); for (int i = 0; i < datas.size(); i++) { String data = datas.get(i).toString(); CreateTaskRequest request = JsonUtl.format(data, CreateTaskRequest.class); - String ext_task_id = request.getExt_task_id(); - String task_code = request.getTask_code(); - String start_device_code = request.getStart_device_code(); - String start_device_code2 = request.getStart_device_code2(); - String next_device_code = request.getNext_device_code(); - String next_device_code2 = request.getNext_device_code2(); - String put_device_code = request.getPut_device_code(); + String ext_task_id = request.getREQCODE(); + String task_code = request.getTASKCODE(); + String start_device_code = request.getSTARTPOSITION(); +// String start_device_code2 = request.getStart_device_code2(); + String next_device_code = request.getENNPOSITION(); +// String next_device_code2 = request.getNext_device_code2(); +// String put_device_code = request.getPut_device_code(); String priority = request.getPriority(); - String vehicle_code = request.getVehicle_code(); + String vehicle_code = request.getPODCODE(); String vehicle_type = request.getVehicle_type(); String route_plan_code = request.getRoute_plan_code(); - String task_type = request.getTask_type(); + String task_type = request.getTASKTYPE(); String storage_task_type = request.getDtl_type(); String agv_system_type = request.getAgv_system_type(); String remark = request.getRemark(); @@ -497,28 +490,25 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { String next_point_code2 = ""; String put_point_code = ""; if (StrUtil.isEmpty(task_code)) { - JSONObject json = new JSONObject(); - json.put("task_code", task_code); - json.put("ext_task_id", ext_task_id); - json.put("message", "任务号不能为空"); - errArr.add(json); - continue; + response.setREQCODE(ext_task_id); + response.setREPLYTIME(DateUtil.now()); + response.setREQCODE("1"); + response.setRTMSG("任务号不能为空!"); + return response; } if (StrUtil.isEmpty(start_device_code)) { - JSONObject json = new JSONObject(); - json.put("task_code", task_code); - json.put("ext_task_id", ext_task_id); - json.put("message", "起点不能为空"); - errArr.add(json); - continue; + response.setREQCODE(ext_task_id); + response.setREPLYTIME(DateUtil.now()); + response.setREQCODE("1"); + response.setRTMSG("起点不能为空!"); + return response; } if (StrUtil.isEmpty(next_device_code)) { - JSONObject json = new JSONObject(); - json.put("task_code", task_code); - json.put("ext_task_id", ext_task_id); - json.put("message", "终点不能为空"); - errArr.add(json); - continue; + response.setREQCODE(ext_task_id); + response.setREPLYTIME(DateUtil.now()); + response.setREQCODE("1"); + response.setRTMSG("终点不能为空!"); + return response; } @@ -530,18 +520,18 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { if (!ObjectUtil.isEmpty(next_device_json)) { next_point_code = (String) next_device_json.get("parent_storage_code") == null ? next_point_code : (String) next_device_json.get("storage_code"); } - JSONObject start_device_json2 = WQLObject.getWQLObject("acs_storage_cell").query("parent_storage_code ='" + start_device_code2 + "'").uniqueResult(0); - if (!ObjectUtil.isEmpty(start_device_json2)) { - start_point_code2 = (String) start_device_json2.get("parent_storage_code") == null ? start_device_code2 : (String) start_device_json2.get("storage_code"); - } - JSONObject next_device_json2 = WQLObject.getWQLObject("acs_storage_cell").query("parent_storage_code ='" + next_device_code2 + "'").uniqueResult(0); - if (!ObjectUtil.isEmpty(next_device_json2)) { - next_point_code2 = (String) next_device_json2.get("parent_storage_code") == null ? next_device_code2 : (String) next_device_json2.get("storage_code"); - } - JSONObject put_device_json = WQLObject.getWQLObject("acs_storage_cell").query("parent_storage_code ='" + put_device_code + "'").uniqueResult(0); - if (!ObjectUtil.isEmpty(put_device_json)) { - put_point_code = (String) put_device_json.get("parent_storage_code") == null ? put_device_code : (String) put_device_json.get("storage_code"); - } +// JSONObject start_device_json2 = WQLObject.getWQLObject("acs_storage_cell").query("parent_storage_code ='" + start_device_code2 + "'").uniqueResult(0); +// if (!ObjectUtil.isEmpty(start_device_json2)) { +// start_point_code2 = (String) start_device_json2.get("parent_storage_code") == null ? start_device_code2 : (String) start_device_json2.get("storage_code"); +// } +// JSONObject next_device_json2 = WQLObject.getWQLObject("acs_storage_cell").query("parent_storage_code ='" + next_device_code2 + "'").uniqueResult(0); +// if (!ObjectUtil.isEmpty(next_device_json2)) { +// next_point_code2 = (String) next_device_json2.get("parent_storage_code") == null ? next_device_code2 : (String) next_device_json2.get("storage_code"); +// } +// JSONObject put_device_json = WQLObject.getWQLObject("acs_storage_cell").query("parent_storage_code ='" + put_device_code + "'").uniqueResult(0); +// if (!ObjectUtil.isEmpty(put_device_json)) { +// put_point_code = (String) put_device_json.get("parent_storage_code") == null ? put_device_code : (String) put_device_json.get("storage_code"); +// } if (StrUtil.isNotEmpty(start_point_code) && start_point_code.indexOf("-") > 0) { String str[] = start_point_code.split("-"); start_device_code = str[0]; @@ -556,75 +546,71 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { next_device_code = next_point_code; } - if (StrUtil.isNotEmpty(start_point_code2) && start_point_code2.indexOf("-") > 0) { - String str[] = start_point_code2.split("-"); - start_device_code2 = str[0]; - } else { - start_device_code2 = start_point_code2; - } +// if (StrUtil.isNotEmpty(start_point_code2) && start_point_code2.indexOf("-") > 0) { +// String str[] = start_point_code2.split("-"); +// start_device_code2 = str[0]; +// } else { +// start_device_code2 = start_point_code2; +// } +// +// if (StrUtil.isNotEmpty(next_point_code2) && next_point_code2.indexOf("-") > 0) { +// String str[] = next_point_code2.split("-"); +// next_device_code2 = str[0]; +// } else { +// next_device_code2 = next_point_code2; +// } - if (StrUtil.isNotEmpty(next_point_code2) && next_point_code2.indexOf("-") > 0) { - String str[] = next_point_code2.split("-"); - next_device_code2 = str[0]; - } else { - next_device_code2 = next_point_code2; - } - - if (StrUtil.isNotEmpty(put_point_code) && put_point_code.indexOf("-") > 0) { - String str[] = put_point_code.split("-"); - put_device_code = str[0]; - } else { - put_device_code = put_point_code; - } +// if (StrUtil.isNotEmpty(put_point_code) && put_point_code.indexOf("-") > 0) { +// String str[] = put_point_code.split("-"); +// put_device_code = str[0]; +// } else { +// put_device_code = put_point_code; +// } if (StrUtil.isEmpty(route_plan_code)) { route_plan_code = "normal"; } - if( StrUtil.equals(task_type,"5") && taskService.querySameDeviceReadyTask(start_device_code,next_device_code,"0") > 1){ - JSONObject json = new JSONObject(); - json.put("task_code", task_code); - json.put("ext_task_id", ext_task_id); - json.put("message", "已存在相同的起点终点未执行的输送任务"); - errArr.add(json); - continue; - } +// if (StrUtil.equals(task_type, "5") && taskService.querySameDeviceReadyTask(start_device_code, next_device_code, "0") > 1) { +// JSONObject json = new JSONObject(); +// json.put("task_code", task_code); +// json.put("ext_task_id", ext_task_id); +// json.put("message", "已存在相同的起点终点未执行的输送任务"); +// errArr.add(json); +// continue; +// } TaskDto taskDto = taskService.findByCodeFromCache(task_code); if (taskDto != null) { - JSONObject json = new JSONObject(); - json.put("task_code", task_code); - json.put("ext_task_id", ext_task_id); - json.put("message", "不能存在相同的任务号"); - errArr.add(json); - continue; + response.setREQCODE(ext_task_id); + response.setREPLYTIME(DateUtil.now()); + response.setREQCODE("1"); + response.setRTMSG("不能存在相同的任务号!"); + return response; } if (!StrUtil.isEmpty(vehicle_code)) { TaskDto vehicle_dto = taskService.findByContainer(vehicle_code); if (vehicle_dto != null) { - JSONObject json = new JSONObject(); - json.put("task_code", task_code); - json.put("ext_task_id", ext_task_id); - json.put("message", "不能存在相同的托盘号"); - errArr.add(json); - continue; + response.setREQCODE(ext_task_id); + response.setREPLYTIME(DateUtil.now()); + response.setREQCODE("1"); + response.setRTMSG("不能存在相同的料车号!"); + return response; } } if (StrUtil.isEmpty(start_point_code)) { - JSONObject json = new JSONObject(); - json.put("task_code", task_code); - json.put("ext_task_id", ext_task_id); - json.put("message", request.getStart_device_code() + " 该设备号未找到对应点位"); - errArr.add(json); - continue; + response.setREQCODE(ext_task_id); + response.setREPLYTIME(DateUtil.now()); + response.setREQCODE("1"); + response.setRTMSG(start_device_code + "未找到对应点位!"); + return response; } if (StrUtil.isEmpty(next_point_code)) { - JSONObject json = new JSONObject(); - json.put("task_code", task_code); - json.put("ext_task_id", ext_task_id); - json.put("message", request.getNext_device_code() + " 该设备号未找到对应点位"); - errArr.add(json); - continue; + response.setREQCODE(ext_task_id); + response.setREPLYTIME(DateUtil.now()); + response.setREQCODE("1"); + response.setRTMSG(next_device_code + "未找到对应点位!"); + return response; } JSONObject jo = new JSONObject(); @@ -639,9 +625,9 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { jo.put("next_parent_code", next_point_code); jo.put("start_device_code", start_device_code); jo.put("next_device_code", next_device_code); - jo.put("start_device_code2", start_device_code2); - jo.put("next_device_code2", next_device_code2); - jo.put("put_device_code", put_device_code); +// jo.put("start_device_code2", start_device_code2); +// jo.put("next_device_code2", next_device_code2); +// jo.put("put_device_code", put_device_code); jo.put("priority", priority); jo.put("vehicle_code", vehicle_code); jo.put("vehicle_type", vehicle_type); @@ -650,7 +636,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { jo.put("oven_time", (int) Math.ceil(oven_time)); jo.put("remark", remark); jo.put("params", params); - jo.put("task_type", StrUtil.isEmpty(task_type) ? 1 : Integer.parseInt(task_type)); + jo.put("task_type", task_type); if (!StrUtil.isEmpty(ext_task_id)) { jo.put("ext_task_id", ext_task_id); @@ -675,9 +661,9 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { //创建临时指令 不创建、不生成 //等立库反馈成功才能创建任务和指令 Instruction inst = taskService.createTemporaryInst(task_dto); - Resp resp = acsToLiKuService.sendInst(task_dto.getStorage_task_type(),inst); + Resp resp = acsToLiKuService.sendInst(task_dto.getStorage_task_type(), inst); - if(StrUtil.equals(resp.result,"true")){ + if (StrUtil.equals(resp.result, "true")) { //创建任务和指令 taskService.create(task_dto); inst.setSend_status("1"); @@ -699,20 +685,20 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { } } catch (Exception e) { // e.printStackTrace(); - JSONObject json = new JSONObject(); - json.put("task_code", task_code); - json.put("ext_task_id", ext_task_id); - json.put("message", e.getMessage()); - errArr.add(json); - continue; + response.setREQCODE(ext_task_id); + response.setREPLYTIME(DateUtil.now()); + response.setREQCODE("1"); + response.setRTMSG(e.getMessage()); + return response; } } if (ObjectUtil.isEmpty(errArr)) { - response.setStatus(200); - response.setMessage("success"); + response.setREPLYTIME(DateUtil.now()); + response.setREQCODE("0"); + response.setRTMSG("success"); } else { response.setStatus(400); - if(ObjectUtil.isNotEmpty(errArr)){ + if (ObjectUtil.isNotEmpty(errArr)) { response.setMessage(errArr.getJSONObject(0).getString("message")); } else { response.setMessage("false"); @@ -727,7 +713,6 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { } - } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java index 3081615..e2aa0ac 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java @@ -18,8 +18,6 @@ import org.nl.acs.auto.initial.ApplicationAutoInitial; import org.nl.acs.device.service.DeviceService; import org.nl.acs.device.service.impl.DeviceServiceImpl; import org.nl.acs.device_driver.DeviceDriver; -import org.nl.acs.device_driver.basedriver.hongxiang_device.HongXiangConveyorDeviceDriver; -import org.nl.acs.device_driver.basedriver.siemens_conveyor.SiemensConveyorDeviceDriver; import org.nl.acs.device_driver.basedriver.standard_conveyor_control_with_scanner.StandardCoveyorControlWithScannerDeviceDriver; import org.nl.acs.device_driver.basedriver.standard_inspect_site.StandardInspectSiteDeviceDriver; import org.nl.acs.ext.wms.liKuData.*; @@ -53,7 +51,6 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.*; import java.util.concurrent.CopyOnWriteArrayList; -import java.util.function.Predicate; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -339,13 +336,13 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); Device startdevice = appService.findDeviceByCode(dto.getStart_device_code()); - HongXiangConveyorDeviceDriver hongXiangConveyorDeviceDriver; +// HongXiangConveyorDeviceDriver hongXiangConveyorDeviceDriver; StandardCoveyorControlWithScannerDeviceDriver standardCoveyorControlWithScannerDeviceDriver; - if (startdevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { - hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) startdevice.getDeviceDriver(); - hongXiangConveyorDeviceDriver.writing(3, Integer.valueOf(dto.getInstruction_code())); - } +// if (startdevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { +// hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) startdevice.getDeviceDriver(); +// hongXiangConveyorDeviceDriver.writing(3, Integer.valueOf(dto.getInstruction_code())); +// } try { String start_device_code = dto.getStart_device_code(); @@ -455,13 +452,13 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu Device startdevice = appService.findDeviceByCode(dto.getStart_device_code()); Device nextdevice = appService.findDeviceByCode(dto.getNext_device_code()); - HongXiangConveyorDeviceDriver hongXiangConveyorDeviceDriver; +// HongXiangConveyorDeviceDriver hongXiangConveyorDeviceDriver; StandardCoveyorControlWithScannerDeviceDriver standardCoveyorControlWithScannerDeviceDriver; - if (startdevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { - hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) startdevice.getDeviceDriver(); - hongXiangConveyorDeviceDriver.writing(3, Integer.valueOf(dto.getInstruction_code())); - } +// if (startdevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { +// hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) startdevice.getDeviceDriver(); +// hongXiangConveyorDeviceDriver.writing(3, Integer.valueOf(dto.getInstruction_code())); +// } try { String start_device_code = dto.getStart_device_code(); @@ -1439,23 +1436,23 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu Device startDevice = deviceAppService.findDeviceByCode(inst.getStart_device_code()); DeviceDriver startDeviceDriver = startDevice.getDeviceDriver(); - if (startDeviceDriver instanceof SiemensConveyorDeviceDriver) { - Device nextDevice = deviceAppService.findDeviceByCode(inst.getNext_device_code()); - - List> list = new ArrayList<>(); - Map map = new HashMap<>(); - map.put("code", "to_target"); - map.put("value", nextDevice.getExtraValue().get("address").toString()); - list.add(map); - Map map2 = new HashMap<>(); - map2.put("code", "to_task"); - map2.put("value", inst.getInstruction_code()); - list.add(map2); - Map map3 = new HashMap<>(); - map3.put("code", "to_command"); - map3.put("value", "1"); - list.add(map3); - ((SiemensConveyorDeviceDriver) startDeviceDriver).writing(list); - } +// if (startDeviceDriver instanceof SiemensConveyorDeviceDriver) { +// Device nextDevice = deviceAppService.findDeviceByCode(inst.getNext_device_code()); +// +// List> list = new ArrayList<>(); +// Map map = new HashMap<>(); +// map.put("code", "to_target"); +// map.put("value", nextDevice.getExtraValue().get("address").toString()); +// list.add(map); +// Map map2 = new HashMap<>(); +// map2.put("code", "to_task"); +// map2.put("value", inst.getInstruction_code()); +// list.add(map2); +// Map map3 = new HashMap<>(); +// map3.put("code", "to_command"); +// map3.put("value", "1"); +// list.add(map3); +// ((SiemensConveyorDeviceDriver) startDeviceDriver).writing(list); +// } } } 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 7efd12e..904f046 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 @@ -816,7 +816,14 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { HttpResponse body = null; boolean flag = false; try { - body = acstowmsService.feedbackTaskStatusToWms(ja); + JSONObject request = new JSONObject(); + request.put("REQCODE", entity.getExt_task_id()); + request.put("TASKCODE", entity.getTask_code()); + request.put("PODCODE", entity.getVehicle_code()); + request.put("TASKTYPE", entity.getTask_type()); + request.put("METHOD", "5"); + request.put("REQTIME", DateUtil.now()); + acstowmsService.taskExecution(request); } catch (Exception e) { flag = true; message = e.getMessage(); diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/quartz/task/QueryMagicAgvTaskStatus.java b/acs/nladmin-system/src/main/java/org/nl/modules/quartz/task/QueryMagicAgvTaskStatus.java new file mode 100644 index 0000000..ac90d50 --- /dev/null +++ b/acs/nladmin-system/src/main/java/org/nl/modules/quartz/task/QueryMagicAgvTaskStatus.java @@ -0,0 +1,126 @@ +package org.nl.modules.quartz.task; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpResponse; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.agv.server.MagicAgvService; +import org.nl.acs.instruction.service.InstructionService; +import org.nl.acs.instruction.service.dto.Instruction; +import org.slf4j.MDC; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * 查询AGV任务状态 + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class QueryMagicAgvTaskStatus { + private final InstructionService instructionService; + + @Autowired + MagicAgvService magicAgvService; + + private String log_file_type = "log_file_type"; + private String log_type = "agv接口日志"; + + public void run() throws Exception { + + List instList = instructionService.findAllInstFromCache(); + MDC.put(log_file_type, log_type); + if (instList.size() > 0) { + for (int i = 0; i < instList.size(); i++) { + Instruction inst = instList.get(i); + String instcode = inst.getInstruction_code(); + HttpResponse response = magicAgvService.queryAgvInstStatus(instcode); + if (response.getStatus() != 200) { + continue; + } + JSONObject jo = JSONObject.parseObject(response.body()); + if (MapUtil.isEmpty(jo)) continue; + //反馈结果状态 + log.info("instcode:" + instcode + "," + jo.toString()); + //指令执行状态 + String state = jo.getString("state"); + String processingVehicle = ""; + //正在执行指令agv车号 + if (!StrUtil.isEmpty(jo.getString("processingVehicle"))) { + processingVehicle = jo.getString("processingVehicle"); + inst.setCarno(processingVehicle); + } +// RAW:初始状态 +// ACTIVE:业务订单已激活 +// DISPATCHABLE:业务订单已通过系统验证,等待被调度执行 +// BEING_PROCESSED:业务订单正在被执行 +// WITHDRAWN:业务订单已被撤销 +// FINISHED:业务订单已完成 +// FAILED:业务订单已失败 +// UNROUTABLE:无法规划该业务订单的执行路线 + + //执行中 + if ("BEING_PROCESSED".equals(state)) { + if (inst != null) { + inst.setInstruction_status("1"); + instructionService.update(inst); + } + } else if ("FINISHED".equals(state)) { + log.info("agv指令状态:{}",state); + if (inst != null) { + inst.setInstruction_status("2"); + instructionService.finish(inst); + } + } else if ("WITHDRAWN".equals(state) || "FAILED".equals(state)) { + if (inst != null) { + inst.setInstruction_status("3"); + instructionService.update(inst); + instructionService.removeByCodeFromCache(instcode); + } + } else { + + } + JSONArray ja = jo.getJSONArray("properties"); + for (int j = 0; j < ja.size(); j++) { + JSONObject item = ja.getJSONObject(j); + if ("True".equals(item.get("value"))) { + String param = item.get("key").toString(); + String[] strs = param.split("-"); + //onEntry请求进入 onStation请求离开 + //onStation-库位名-动作名" + String type = null; + String device = null; + String action = null; + // =5表示为货位 + if (strs.length == 5) { + type = strs[0]; + device = strs[1] + "-" + strs[2] + "-" + strs[3]; + action = strs[4]; + } else { + type = strs[0]; + device = strs[1]; + action = strs[2]; + } + + String mes = ""; + + magicAgvService.process(instcode, type, device, action, processingVehicle); + } + + } + } + } + } + + public static void main(String[] args) { + String str = "onEntry-0101-07-03-Unload"; + String[] strs = str.split("-"); + System.out.println(strs.length); + + } +}