From 721b22880f134a96a1b555f29fed395082ae025e Mon Sep 17 00:00:00 2001 From: "USER-20220102CG\\noblelift" <546428999@qq.com> Date: Wed, 22 Nov 2023 15:43:43 +0800 Subject: [PATCH] =?UTF-8?q?add=20=20=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/nl/acs/agv/server/NDCAgvService.java | 4 +- .../agv/server/impl/NDCAgvServiceImpl.java | 48 +- .../agv/server/impl/ZheDaAgvServiceImpl.java | 134 +- .../run/OneNDCSocketConnectionAutoRun.java | 20 +- .../org/nl/acs/device/enums/DeviceType.java | 39 +- .../nl/acs/device/rest/DeviceController.java | 3 +- .../nl/acs/device/service/DeviceService.java | 7 + .../service/impl/DeviceServiceImpl.java | 26 + .../nl/acs/device_driver/DeviceDriver.java | 30 + .../acs/device_driver/FeedLmsRealFailed.java | 11 + .../HeartbeatableDeviceDriver.java | 10 + .../acs/device_driver/RequestMethodEnum.java | 42 +- .../device_driver/StandardRequestMethod.java | 110 ++ .../agv/magic_agv/MagicAgvDefination.java | 2 +- .../agv/ndcone/AgvNdcOneDeviceDriver.java | 368 +++-- .../agv/xg_agv/XgagvDefination.java | 2 +- .../CargoLiftConveyorDeviceDriver.java | 370 ----- .../cargo_lift_conveyor/ItemProtocol.java | 97 -- ...mptyVehicleStackingPositionDefination.java | 60 - ...tyVehicleStackingPositionDeviceDriver.java | 236 --- .../ItemProtocol.java | 100 -- .../HailiangSmartplcTestDefination.java | 61 - .../HailiangSmartplcTestDeviceDriver.java | 269 ---- .../hailiang_smart_plc_test/ItemProtocol.java | 105 -- .../HongXiangConveyorDeviceDriver.java | 4 +- .../basedriver/lnsh_station/ItemProtocol.java | 143 ++ .../LnshStationDefination.java} | 19 +- .../lnsh_station/LnshStationDeviceDriver.java | 845 ++++++++++ .../paint_conveyor/ItemProtocol.java | 99 -- .../PaintConveyorDeviceDriver.java | 301 ---- .../SiemensConveyorDeviceDriver.java | 4 +- .../SiemensConveyorCkkDeviceDriver.java | 4 +- .../SiemensConveyorLabelingDeviceDriver.java | 4 +- .../StandardAutodoorDeviceDriver.java | 4 +- .../standard_inspect_site/ItemProtocol.java | 9 +- .../StandardInspectSiteDeviceDriver.java | 30 +- .../StandardOrdinarySiteDeviceDriver.java | 8 +- .../driver/AbstractOpcDeviceDriver.java | 213 ++- .../ApplySignalStatusRequest.java | 24 + .../ApplySignalStatusResponse.java | 10 + .../applyTask/ApplyDeviceDto.java | 28 + .../applyTask/ApplyTaskRequest.java | 57 + .../applyTask/ApplyTaskResponse.java | 36 + .../feedBackSplitPalletStationRequest.java | 42 + .../feedBackSplitPalletStationResponse.java | 7 + .../getVehicle/GetPalletizeRequest.java | 14 + .../getVehicle/GetPalletizeResponse.java | 15 + .../data/AcsToWmsData/grab/GrabRequest.java | 93 ++ .../data/AcsToWmsData/grab/GrabResponse.java | 9 + .../GrabPlaceStationRequest.java | 45 + .../GrabPlaceStationResponse.java | 10 + .../org/nl/acs/ext/wms/data/BaseRequest.java | 11 - .../org/nl/acs/ext/wms/data/BaseResponse.java | 62 +- .../org/nl/acs/ext/wms/data/PalletizeDto.java | 120 ++ .../java/org/nl/acs/ext/wms/data/Resp.java | 15 + .../cancelTask/CancelTaskRequest.java | 31 + .../cancelTask/CancelTaskResponse.java | 9 + .../createOrder/CreateOrderRequest.java | 16 + .../createOrder/CreateOrderResponse.java | 12 + .../WmstoAcsData/createOrder/OrderDto.java | 31 + .../createTask/CreateTaskRequest.java | 17 + .../createTask/CreateTaskResponse.java | 12 + .../putAction/PutActionRequest.java | 13 + .../putAction/PutActionResponse.java | 12 + .../WmstoAcsData/putAction/SignalData.java | 12 + .../FeedBackTaskStatusResponse.java | 6 - .../one/ApplyLabelingAndBindingRequest.java | 18 + .../one/ApplyLabelingAndBindingResponse.java | 13 + .../nl/acs/ext/wms/data/one/BaseRequest.java | 72 + .../nl/acs/ext/wms/data/one/BaseResponse.java | 52 + .../ext/wms/data/one/CancelTaskRequest.java | 34 + .../ext/wms/data/one/CancelTaskResponse.java | 7 + .../ext/wms/data/one/CreateTaskRequest.java | 78 + .../ext/wms/data/one/CreateTaskResponse.java | 6 + .../org/nl/acs/ext/wms/data/one/JsonUtl.java | 125 ++ .../wms/data/one/LiKuApplyTakResponse.java | 9 + .../wms/data/one/LiKuApplyTaskRequest.java | 9 + .../ext/wms/data/one/PutActionRequest.java | 30 + .../ext/wms/data/one/PutActionResponse.java | 7 + .../ext/wms/data/one/UpdateLKTaskRequest.java | 42 + .../wms/data/one/UpdateLKTaskResponse.java | 6 + .../FeedBackTaskStatusRequest.java | 9 +- .../FeedBackTaskStatusResponse.java | 6 + .../acs/ext/wms/rest/AcsToWmsController.java | 124 +- .../acs/ext/wms/rest/WmsToAcsController.java | 5 +- .../acs/ext/wms/service/AcsToWmsService.java | 7 +- .../acs/ext/wms/service/WmsToAcsService.java | 3 +- .../wms/service/impl/AcsToWmsServiceImpl.java | 1371 +++++++++++------ .../wms/service/impl/WmsToAcsServiceImpl.java | 2 +- .../rest/InstructionController.java | 4 + .../service/impl/InstructionServiceImpl.java | 31 +- .../src/main/java/org/nl/acs/opc/JsonUtl.java | 125 ++ .../java/org/nl/acs/opc/OpcServerService.java | 4 + .../org/nl/acs/opc/OpcServerServiceImpl.java | 156 +- .../org/nl/acs/task/rest/TaskController.java | 4 + .../org/nl/acs/task/service/dto/TaskDto.java | 12 + .../task/service/impl/TaskServiceImpl.java | 3 +- .../main/java/org/nl/acs/utils/DateUtil.java | 836 ++++++++++ .../org/nl/quartz/task/AutoCreateInst.java | 341 ++++ .../nl/quartz/task/NdcAutoReconnection.java | 30 + .../src/main/resources/initsql.txt | 17 + .../src/views/acs/device/config.vue | 8 +- .../acs/device/driver/cargo_lift_conveyor.vue | 533 ------- .../empty_vehicle_stacking_position.vue | 488 ------ .../device/driver/hailiang_smart_plc_test.vue | 487 ------ .../acs/device/driver/paint_conveyor.vue | 495 ------ 106 files changed, 5560 insertions(+), 4659 deletions(-) create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/FeedLmsRealFailed.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/HeartbeatableDeviceDriver.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/StandardRequestMethod.java delete mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/cargo_lift_conveyor/CargoLiftConveyorDeviceDriver.java delete mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/cargo_lift_conveyor/ItemProtocol.java delete mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/empty_vehicle_stacking_position/EmptyVehicleStackingPositionDefination.java delete mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/empty_vehicle_stacking_position/EmptyVehicleStackingPositionDeviceDriver.java delete mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/empty_vehicle_stacking_position/ItemProtocol.java delete mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_smart_plc_test/HailiangSmartplcTestDefination.java delete mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_smart_plc_test/HailiangSmartplcTestDeviceDriver.java delete mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_smart_plc_test/ItemProtocol.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/lnsh_station/ItemProtocol.java rename acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/{paint_conveyor/PaintConveyorDefination.java => lnsh_station/LnshStationDefination.java} (70%) create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/lnsh_station/LnshStationDeviceDriver.java delete mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/paint_conveyor/ItemProtocol.java delete mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/paint_conveyor/PaintConveyorDeviceDriver.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applySignalStaus/ApplySignalStatusRequest.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applySignalStaus/ApplySignalStatusResponse.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applyTask/ApplyDeviceDto.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applyTask/ApplyTaskRequest.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applyTask/ApplyTaskResponse.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/feedBackSplitPalletStation/feedBackSplitPalletStationRequest.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/feedBackSplitPalletStation/feedBackSplitPalletStationResponse.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/getVehicle/GetPalletizeRequest.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/getVehicle/GetPalletizeResponse.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/grab/GrabRequest.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/grab/GrabResponse.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/grab_place_station/GrabPlaceStationRequest.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/grab_place_station/GrabPlaceStationResponse.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/PalletizeDto.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/Resp.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/cancelTask/CancelTaskRequest.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/cancelTask/CancelTaskResponse.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/createOrder/CreateOrderRequest.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/createOrder/CreateOrderResponse.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/createOrder/OrderDto.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/createTask/CreateTaskRequest.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/createTask/CreateTaskResponse.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/putAction/PutActionRequest.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/putAction/PutActionResponse.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/putAction/SignalData.java delete mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/feedBackTaskStatus/FeedBackTaskStatusResponse.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/ApplyLabelingAndBindingRequest.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/ApplyLabelingAndBindingResponse.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/BaseRequest.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/BaseResponse.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/CancelTaskRequest.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/CancelTaskResponse.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/CreateTaskRequest.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/CreateTaskResponse.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/JsonUtl.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/LiKuApplyTakResponse.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/LiKuApplyTaskRequest.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/PutActionRequest.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/PutActionResponse.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/UpdateLKTaskRequest.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/UpdateLKTaskResponse.java rename acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/{ => one}/feedBackTaskStatus/FeedBackTaskStatusRequest.java (74%) create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/feedBackTaskStatus/FeedBackTaskStatusResponse.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/JsonUtl.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/utils/DateUtil.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/quartz/task/AutoCreateInst.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/quartz/task/NdcAutoReconnection.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/resources/initsql.txt delete mode 100644 acs/nladmin-ui/src/views/acs/device/driver/cargo_lift_conveyor.vue delete mode 100644 acs/nladmin-ui/src/views/acs/device/driver/empty_vehicle_stacking_position.vue delete mode 100644 acs/nladmin-ui/src/views/acs/device/driver/hailiang_smart_plc_test.vue delete mode 100644 acs/nladmin-ui/src/views/acs/device/driver/paint_conveyor.vue diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/NDCAgvService.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/NDCAgvService.java index e29dfcf..ec0ec54 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/NDCAgvService.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/NDCAgvService.java @@ -29,10 +29,12 @@ public interface NDCAgvService { */ public void sendAgvInstToNDC(String agv_system_type,Instruction inst) throws Exception; - public byte[] sendAgvOneModeInst(int phase, int index,int result); + public byte[] sendAgvOneModeInst(int phase, int index,int result,int startPoint,int nextPoint,int startHigh,int nextHigh); public byte[] sendAgvTwoModeInst(int phase, int index,int result); + public byte[] sendAgvOneModeInst(int phase, int index, int result); + /** * 下发充电任务 diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java index c4ce0e5..50839c1 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java @@ -75,7 +75,7 @@ public class NDCAgvServiceImpl implements NDCAgvService { public void sendAgvInstToNDC(String agv_system_type, Instruction inst) { if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), "1")) { String instcode = inst.getInstruction_code(); - int type = Integer.parseInt(inst.getAgv_inst_type()); + int type = Integer.parseInt(inst.getInstruction_type()); int priority = Integer.parseInt(inst.getPriority()) + 128; DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); DeviceService deviceService = SpringContextHolder.getBean(DeviceServiceImpl.class); @@ -125,7 +125,49 @@ public class NDCAgvServiceImpl implements NDCAgvService { } @Override - public byte[] sendAgvOneModeInst(int phase, int index, int result) { + public byte[] sendAgvOneModeInst(int phase, int index, int result,int startPoint,int nextPoint,int startHigh,int nextHigh) { + if (phase < 0 || index < 0) + return null; + byte indexhigh = (byte) IntToHexHigh(index); + byte indexlow = (byte) IntToHexLow(index); + byte phasehigh = (byte) IntToHexHigh(phase); + byte phaselow = (byte) IntToHexLow(phase); + byte startPointHigh =(byte) IntToHexHigh(startPoint); + byte startPointLow =(byte) IntToHexLow(startPoint); + byte nextPointHigh =(byte) IntToHexHigh(nextPoint); + byte nextPointLow =(byte) IntToHexLow(nextPoint); + byte startHighHigh =(byte) IntToHexHigh(startHigh); + byte startHighLow =(byte) IntToHexLow(startHigh); + byte nextHighHigh =(byte) IntToHexHigh(nextHigh); + byte nextHighLow =(byte) IntToHexLow(nextHigh); + + byte[] b = new byte[]{(byte) 0X87, (byte) 0XCD, + (byte) 0X00, (byte) 0X08, + (byte) 0X00, (byte) 0X12, + (byte) 0X00, (byte) 0X01, + (byte) 0X00, (byte) 0X6D, + (byte) 0X00, (byte) 0X0E, + (byte) indexhigh, (byte) indexlow, + (byte) 0X01, (byte) 0X14, + (byte) phasehigh, (byte) phaselow, + (byte) startPointHigh, (byte) startPointLow, + (byte) nextPointHigh, (byte) nextPointLow, + (byte) startHighHigh, (byte) startHighLow, + (byte) nextHighHigh, (byte) nextHighLow + }; + + + log.info("反馈agv动作数据--index:" + hexToString(indexhigh & 0xFF) + hexToString(indexlow & 0xFF) + ",phase:" + hexToString(phasehigh & 0xFF) + hexToString(phaselow & 0xFF)); + + System.out.println("反馈agv动作数据:" + Bytes2HexString(b)); + return b; + + } + + + @Override + public byte[] sendAgvTwoModeInst(int phase, int index, int result) { + if (phase < 0 || index < 0) return null; byte indexhigh = (byte) IntToHexHigh(index); @@ -149,10 +191,8 @@ public class NDCAgvServiceImpl implements NDCAgvService { System.out.println("反馈agv动作数据:" + Bytes2HexString(b)); return b; - } - @Override public byte[] sendAgvTwoModeInst(int phase, int index, int result) { diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/ZheDaAgvServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/ZheDaAgvServiceImpl.java index 9604370..8a39a33 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/ZheDaAgvServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/ZheDaAgvServiceImpl.java @@ -11,11 +11,8 @@ import org.nl.acs.AcsConfig; import org.nl.acs.agv.AgvUtil; import org.nl.acs.agv.server.ZheDaAgvService; import org.nl.acs.device.domain.Device; -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.domain.Instruction; import org.nl.acs.instruction.service.InstructionService; @@ -145,42 +142,12 @@ 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; //取货的进入前等待和离开等待 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(); @@ -189,36 +156,8 @@ public class ZheDaAgvServiceImpl implements ZheDaAgvService { 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(); @@ -227,12 +166,6 @@ public class ZheDaAgvServiceImpl implements ZheDaAgvService { is_feedback = true; } - if (addressdevice.getDeviceDriver() instanceof PaintConveyorDeviceDriver) { - paintConveyorDeviceDriver = (PaintConveyorDeviceDriver) addressdevice.getDeviceDriver(); - inst.setExecute_status("2"); - paintConveyorDeviceDriver.writing(2); - is_feedback = true; - } } } @@ -306,33 +239,6 @@ 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) { @@ -340,50 +246,14 @@ public class ZheDaAgvServiceImpl implements ZheDaAgvService { 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; - } } } JSONObject requestjo = new JSONObject(); diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java index 3149f00..1c6c92b 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java @@ -158,7 +158,7 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable { inst.setSend_status("1"); instructionService.update(inst); } - data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); + data = NDCAgvService.sendAgvOneModeInst(phase, index, 0, 0, 0, 0, 0); } //任务完毕 //(无车id及状态) @@ -168,13 +168,13 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable { } else { log.warn("指令号:{},未反馈wms任务完成,因为agv上报指令号查询指令为空!"); } - data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); + data = NDCAgvService.sendAgvOneModeInst(phase, index, 0, 0, 0, 0, 0); log.info("指令号:{},已反馈agv任务完成!"); } //请求删除任务 //(需要WCS反馈) else if (phase == 0x30) { - data = NDCAgvService.sendAgvOneModeInst(0x8F, index, 0); + data = NDCAgvService.sendAgvOneModeInst(0x8F, index, 0, 0, 0, 0, 0); } //任务删除确认 //(需要WCS反馈) @@ -185,7 +185,7 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable { instructionService.cancelNOSendAgv(inst.getInstruction_id()); } } - data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); + data = NDCAgvService.sendAgvOneModeInst(phase, index, 0, 0, 0, 0, 0); } else { //上报异常信息 @@ -255,7 +255,17 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable { dos.flush(); } catch (IOException e) { // TODO Auto-generated catch block - e.printStackTrace(); + try { + Thread.sleep(5000L); + log.info("再次下发agv数据:" + Bytes2HexString(b)); + System.out.println("再次下发agv数据:" + Bytes2HexString(b)); + dos.write(b); + dos.flush(); + } catch (Exception e1) { + e1.printStackTrace(); + } + } } } + diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/enums/DeviceType.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/enums/DeviceType.java index ce786c4..93499b9 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/enums/DeviceType.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/enums/DeviceType.java @@ -1,5 +1,7 @@ package org.nl.acs.device.enums; +import cn.hutool.core.util.StrUtil; + public enum DeviceType { conveyor("输送机-Conveyor", 1), station("固定货台-Station", 2), @@ -7,21 +9,40 @@ public enum DeviceType { agv("自动导引搬运车辆-AGV", 4), rgv("有轨制导搬运车辆-RGV", 5), scanner("条码阅读器-BCR", 6), - screen("LED点阵屏", 7), + led("LED点阵屏", 7), storage("货架", 8), robot("机械手", 9), - assemble("叠盘机", 10), + autodoor("自动门", 10), plc("plc", 11), group("设备组", 12), plcDb("plcDb块", 13), - autodoor("自动门", 14), - shadow("影子设备", 20), - other("其他设备", 14), - safetydoor("安全门",17); + shadow("影子设备", 15), + other("其他设备", 16); - private String description; - private int order; + private String code; - DeviceType(String s, int i) { + private int i; + + DeviceType(String code, int i) { + this.code = code; + this.i = i; } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public static DeviceType getName(String s){ + for (DeviceType c : DeviceType.values()) { + if (StrUtil.equals(c.getCode(),s) ) { + return c; + } + } + return null; + } + } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/rest/DeviceController.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/rest/DeviceController.java index fbef49c..03dd37c 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/rest/DeviceController.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/rest/DeviceController.java @@ -249,7 +249,8 @@ public class DeviceController { //@PreAuthorize("@el.check('routePlan:list')") public ResponseEntity selectDriverCodeList(@PathVariable String device_code) { DeviceDto device = deviceService.findByCode(device_code); - return new ResponseEntity<>(DriverTypeEnum.getListByType(device.getDevice_type()), HttpStatus.OK); + JSONArray ja = deviceService.selectDriverCodeList(device_code); + return new ResponseEntity<>(ja, HttpStatus.OK); } @ApiOperation("查询") diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/service/DeviceService.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/service/DeviceService.java index 053e7ae..4841856 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/service/DeviceService.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/service/DeviceService.java @@ -333,4 +333,11 @@ public interface DeviceService extends CommonService { * @param request */ void excelImport(MultipartFile file, HttpServletRequest request); + + + /** + * 下拉框查询设备驱动 + * @param device_code + */ + JSONArray selectDriverCodeList(String device_code); } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/service/impl/DeviceServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/service/impl/DeviceServiceImpl.java index 06f6478..890cf9d 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/service/impl/DeviceServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/service/impl/DeviceServiceImpl.java @@ -22,6 +22,7 @@ import org.nl.acs.auto.initial.ApplicationAutoInitial; import org.nl.acs.device.device_driver.standard_inspect.ItemDto; import org.nl.acs.device.domain.Device; import org.nl.acs.device.domain.DeviceExtra; +import org.nl.acs.device.enums.DeviceType; import org.nl.acs.device.service.mapper.DeviceExtraMapper; import org.nl.acs.device.domain.DeviceRunpoint; import org.nl.acs.device.service.mapper.DeviceRunpointMapper; @@ -69,6 +70,7 @@ import org.nl.acs.device.service.DeviceService; import org.nl.acs.device.service.dto.DeviceDto; import org.nl.acs.device.service.dto.DeviceQueryParam; import org.nl.acs.device.service.mapper.DeviceMapper; +import org.nl.system.service.dict.ISysDictService; import org.nl.system.service.dict.dao.Dict; import org.nl.system.service.logicflow.dao.mapper.StageMapper; import org.nl.system.service.param.ISysParamService; @@ -118,6 +120,8 @@ public class DeviceServiceImpl extends CommonServiceImpl i private final DeviceDriverDefinationAppService deviceDriverDefinationAppService; private final DeviceAppService deviceAppService; private final ISysParamService paramService; + + private final ISysDictService iSysDictService; List storageCells = new ArrayList<>(); @Override @@ -2251,4 +2255,26 @@ public class DeviceServiceImpl extends CommonServiceImpl i return map; } } + + @Override + public JSONArray selectDriverCodeList(String device_code){ + JSONArray ja = new JSONArray(); + DeviceDto device = this.findByCode(device_code); + String device_type = device.getDevice_type(); + List dictList = iSysDictService.getDictByName("device_type"); + dictList.forEach(dict ->{ + if(StrUtil.equals(dict.getValue(),device_type)){ + List driverList = deviceDriverDefinationAppService.getDeviceDriverDefinations(DeviceType.getName(dict.getLabel())); + driverList.forEach( + deviceDriverDefination -> { + JSONObject jo = new JSONObject(); + jo.put("code",deviceDriverDefination.getDriverCode()); + jo.put("name",deviceDriverDefination.getDriverName()); + ja.add(jo); + } + ); + } + }); + return ja; + } } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/DeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/DeviceDriver.java index b58b9dd..607313b 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/DeviceDriver.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/DeviceDriver.java @@ -1,7 +1,12 @@ package org.nl.acs.device_driver; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import org.nl.acs.device.domain.Device; +import java.util.ArrayList; +import java.util.List; + public interface DeviceDriver { default String getDeviceCode() { return this.getDevice().getDevice_code(); @@ -17,5 +22,30 @@ public interface DeviceDriver { return this.getDriverDefination().getDriverCode(); } + //将扩展表中的字符串数组数据转换成集合 + default 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; + } + default String getModeName(String mode){ + if(StrUtil.equals("0",mode)){ + mode = "脱机"; + } else if (StrUtil.equals("2",mode)) { + mode = "联机"; + } else { + mode = RequestMethodEnum.getName(mode); + } + return ObjectUtil.isEmpty(mode)? "无效的请求,驱动中未配置":mode; + } } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/FeedLmsRealFailed.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/FeedLmsRealFailed.java new file mode 100644 index 0000000..6739059 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/FeedLmsRealFailed.java @@ -0,0 +1,11 @@ +package org.nl.acs.device_driver; + +import com.alibaba.fastjson.JSONObject; + +/** + * @author: geng by + * @createDate: 2023/4/21 + */ +public interface FeedLmsRealFailed { + public JSONObject feedLmsRealFailedInfo(); +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/HeartbeatableDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/HeartbeatableDeviceDriver.java new file mode 100644 index 0000000..e223e30 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/HeartbeatableDeviceDriver.java @@ -0,0 +1,10 @@ +package org.nl.acs.device_driver; + +public interface HeartbeatableDeviceDriver extends DeviceDriver { + default void checkHeartbeat() { + } + + default boolean isOnline() { + return false; + } +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/RequestMethodEnum.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/RequestMethodEnum.java index 2e7c1ed..dbea2ab 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/RequestMethodEnum.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/RequestMethodEnum.java @@ -10,12 +10,44 @@ import com.alibaba.fastjson.JSONObject; * https://blog.csdn.net/moneyshi/article/details/82978073 */ public enum RequestMethodEnum { + order_verify(1, "order_verify", "人工排产确认","0"), + + order_finish(2, "order_finish", "工单完成","0"), + + apply_put_full_vehicle(3, "apply_put_full_vehicle", "申请补满料盅托盘(叫料)","0"), + + apply_put_empty_vehicle(4, "apply_put_empty_vehicle", "申请补空料盅托盘(叫空盘)","0"), + + apply_take_empty_vehicle(5, "apply_take_empty_vehicle", "申请取走空料盅托盘(取空盘)","0"), + + apply_take_full_vehicle(6, "apply_take_full_vehicle", "申请取走满料盅托盘(入库)","0"), + + apply_force_take_full_vehicle(7, "apply_force_take_full_vehicle", "申请强制取走满料盅托盘(强制入库)","0"), + + apply_force_take_full_vehicle_in_storage(8, "apply_force_take_full_vehicle_in_storage", "申请强制满托入缓存","0"), + + barcode_success_apply(9, "barcode_success_apply", "扫码成功申请","0"), + + get_vehicle_info(10, "get_vehicle_info", "获取组盘信息","0"), + + force_no_package(11, "force_no_package", "强制去包装位-不包装","0"), + + apply_labelling(12, "apply_labelling", "申请贴标","0"), + + apply_one_grab(13, "apply_one_grab", "单次放置完成","0"), + + real_time_set_point(14, "real_time_set_point", "反馈信号状态","1"), + + feedback_task_status(15, "feedback_task_status", "反馈任务状态","1"), + + feedback_device_status(16, "feedback_device_status", "反馈设备状态","1"), + + apply_feedback_weight(17, "apply_feedback_weight", "反馈压机残留重量","0"), + + apply_get_put_station(18, "apply_get_put_station", "反馈当前抓取放置位","0"), + + press_request_material(19, "pressRequestMaterial", "压机叫料","0"); - feedback_task_status(1, "feedback_task_status", "反馈任务状态","1"), - apply_mjxl(2, "MJXLTask", "涂板线满架下料","1"), - apply_bpsl(3, "BPSLTask", "包片上料","1"), - apply_tbxbkj(4, "TBXBKJTask", "涂板线补空架","1"), - apply_kghjrk(5, "KGHJRKTask", "空固化架入库","1"); //驱动索引 diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/StandardRequestMethod.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/StandardRequestMethod.java new file mode 100644 index 0000000..9a3b4ac --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/StandardRequestMethod.java @@ -0,0 +1,110 @@ +package org.nl.acs.device_driver; + +public interface StandardRequestMethod { + + /** + * 人工排产确认 + * @return + */ + public default boolean order_verify() { + throw new RuntimeException("未实现"); + }; + + /** + * 工单完成 + * @return + */ + public default boolean order_finish() { + throw new RuntimeException("未实现"); + }; + + /** + * 申请补满料盅托盘 + * @return + */ + public default boolean apply_put_full_vehicle() { + throw new RuntimeException("未实现"); + }; + + /** + * 申请补空料盅托盘 + * @return + */ + public default boolean apply_put_empty_vehicle() { + throw new RuntimeException("未实现"); + }; + + /** + * 申请取走空料盅托盘 + * @return + */ + public default boolean apply_take_empty_vehicle() { + throw new RuntimeException("未实现"); + }; + + /** + * 申请取走满料盅托盘(入库) + * @return + */ + public default boolean apply_take_full_vehicle() { + throw new RuntimeException("未实现"); + }; + + /** + * 申请强制取走满料盅托盘 + * @return + */ + public default boolean apply_force_take_full_vehicle() { + throw new RuntimeException("未实现"); + }; + + /** + * 申请强制满托入缓存 + * @return + */ + public default boolean apply_force_take_full_vehicle_in_storage() { + throw new RuntimeException("未实现"); + }; + + /** + * 扫码成功申请 + * @return + */ + public default boolean barcode_success_apply() { + throw new RuntimeException("未实现"); + }; + + /** + * 获取组盘信息 + * @return + */ + public default boolean get_vehicle_info() { + throw new RuntimeException("未实现"); + }; + + /** + * 强制去包装位-不包装 + * @return + */ + public default boolean force_no_package() { + throw new RuntimeException("未实现"); + }; + + + /** + * 申请贴标 + * @return + */ + public default boolean apply_labelling() { + throw new RuntimeException("未实现"); + }; + + /** + * 压机叫料 + * @return + */ + public default boolean press_request_material() { + throw new RuntimeException("未实现"); + }; + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/magic_agv/MagicAgvDefination.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/magic_agv/MagicAgvDefination.java index 41cee68..8bf68b4 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/magic_agv/MagicAgvDefination.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/magic_agv/MagicAgvDefination.java @@ -43,7 +43,7 @@ public class MagicAgvDefination implements DeviceDriverDefination { @Override public List getFitDeviceTypes() { List types = new LinkedList(); - types.add(DeviceType.conveyor); + types.add(DeviceType.agv); return types; } } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java index 937e61c..358c7c6 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java @@ -1,9 +1,8 @@ package org.nl.acs.device_driver.basedriver.agv.ndcone; +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.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.Data; import lombok.RequiredArgsConstructor; @@ -13,10 +12,13 @@ import org.nl.acs.auto.run.OneNDCSocketConnectionAutoRun; import org.nl.acs.device.domain.Device; import org.nl.acs.device.service.DeviceService; import org.nl.acs.device_driver.DeviceDriver; +import org.nl.acs.device_driver.FeedLmsRealFailed; +import org.nl.acs.device_driver.basedriver.agv.utils.OneAgvPhase; 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; +import org.nl.acs.ext.wms.data.one.BaseRequest; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; import org.nl.acs.instruction.domain.Instruction; @@ -25,14 +27,19 @@ import org.nl.acs.instruction.service.impl.InstructionServiceImpl; import org.nl.acs.log.LokiLog; import org.nl.acs.log.LokiLogType; import org.nl.acs.log.service.DeviceExecuteLogService; +import org.nl.acs.monitor.DeviceStageMonitor; import org.nl.acs.opc.DeviceAppService; import org.nl.acs.task.service.TaskService; +import org.nl.acs.task.service.dto.TaskDto; import org.nl.acs.task.service.impl.TaskServiceImpl; import org.nl.system.service.param.ISysParamService; import org.nl.config.SpringContextHolder; import org.nl.system.service.param.impl.SysParamServiceImpl; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * NDC单工位AGV @@ -40,37 +47,50 @@ import java.util.List; @Slf4j @Data @RequiredArgsConstructor -public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements DeviceDriver { +public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements DeviceDriver, DeviceStageMonitor, FeedLmsRealFailed { - ISysParamService paramService = SpringContextHolder.getBean(SysParamServiceImpl.class); + ISysParamService paramService = SpringContextHolder.getBean(ISysParamService.class); InstructionService instructionService = SpringContextHolder.getBean(InstructionServiceImpl.class); AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsServiceImpl.class); - TaskService taskService = SpringContextHolder.getBean(TaskServiceImpl.class); NDCAgvService NDCAgvService = SpringContextHolder.getBean(NDCAgvService.class); DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); DeviceAppService deviceAppService = SpringContextHolder.getBean(DeviceAppService.class); DeviceService deviceService = SpringContextHolder.getBean(DeviceService.class); +// DeviceErrorLogService deviceErrorLogService = SpringContextHolder.getBean(DeviceErrorLogServiceImpl.class); + + OneAgvPhase oneAgvPhase = new OneAgvPhase(); + int agvaddr = 0; int agvaddr_copy = 0; int weight = 0; String device_code = ""; - int phase = 0; + String message = null; + + int phase = 0; + String error_type = "agv_error_type"; + String error_code = "0"; int x = 0; //x坐标 int y = 0; //y坐标 int angle = 0; //角度 int electric_qty = 0; //电量 int status = 0; //三色灯状态 - int error = 0; //车辆故障 - - int last_x = 0; - int last_y = 0; - int last_angle = 0; - int last_electric_qty = 0; - int last_status = 0; + int last_status = 0; //三色灯状态 + int error = 0; int last_error = 0; + String error_message = ""; - @LokiLog(type = LokiLogType.ACS_TO_LMS) + private synchronized void setErrorInfo(int error, String error_code, String error_message) { + this.error = error; + this.error_code = error_code; + this.error_message = error_message; + } + + private Instruction instruction; + + int mode = 2; + + // @LokiLog(type = LokiLogType.AGV) public synchronized void processSocket(int[] arr) throws Exception { device_code = this.getDeviceCode(); byte[] data = null; @@ -83,6 +103,7 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic agvaddr = arr[18] * 256 + arr[19]; //车号 int carno = arr[20]; + log.info(this.device_code, "", "", "接收agv上报信息:" + "phase--" + phase + " index--" + index + " 指令号--" + ikey + " 站点号--" + agvaddr + " 车号--" + carno); Instruction link_inst = null; List insts = null; Instruction inst = null; @@ -92,10 +113,13 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic agv_device = deviceAppService.findDeviceByCode(String.valueOf(carno)); } if (ikey != 0) { - inst = instructionService.findByCodeFromCache(String.valueOf(ikey)); - if (ObjectUtil.isEmpty(inst)) { - inst = instructionService.findByCode(String.valueOf(ikey)); + if (phase != 0x67 && phase != 0x71 && phase != 0x72 && phase != 0x73 && phase != 0x74 && phase != 0x75) { + inst = instructionService.findByCodeFromCache(String.valueOf(ikey)); + this.instruction = inst; } +// if (ObjectUtil.isEmpty(inst)){ +// inst = instructionService.findByCode(String.valueOf(ikey)); +// } } if (!ObjectUtil.isEmpty(link_inst)) { link_flag = true; @@ -106,13 +130,13 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic String emptyNum = null; String device_code = null; - if (phase == 0x67) { - //故障信息 - if (arr[18] * 256 + arr[19] == 0) { - - } - data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); - } +// if (phase == 0x67) { +// //故障信息 +// if (arr[18] * 256 + arr[19] == 0) { +// +// } +// data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); +// } //普通站点 StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; @@ -126,7 +150,7 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic if (phase == 0x02) { inst.setCarno(String.valueOf(carno)); instructionService.update(inst); - logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + "反馈:" + data); + logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + phase + "反馈车号:" + carno + ",指令号:" + ikey); //到达取货点 //(需要WCS反馈) @@ -166,28 +190,34 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic return; } - Object reqWms = device.getExtraValue().get("reqWms"); - if (ObjectUtil.isNotEmpty(reqWms) && reqWms.toString().equals("true")) { - JSONArray req = new JSONArray(); - JSONObject map = new JSONObject(); - map.put("vehicle_code", inst.getVehicle_code()); - map.put("status", "1"); - map.put("device_code", inst.getStart_point_code()); - map.put("task_code", inst.getTask_code()); - req.add(map); - HttpResponse httpResponse = acsToWmsService.feedAgvTaskStatus(req); - if (ObjectUtil.isNotEmpty(httpResponse) && httpResponse.getStatus() == 200) { - JSONObject resp = JSONObject.parseObject(httpResponse.body()); - if (resp.getInteger("status") == 200) { - data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); - log.info("指令号:{},acs请求wms取货申请成功,wms允许agv申请取货,已反馈agv允许取货", inst.getInstruction_code()); - } else { - log.warn("指令号:{},acs请求wms取货申请成功,wms不允许agv申请取货,未反馈agv允许取货", inst.getInstruction_code()); - } + if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { + standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); + standardOrdinarySiteDeviceDriver.setAgvphase(phase); + standardOrdinarySiteDeviceDriver.setIndex(index); + standardOrdinarySiteDeviceDriver.setInst(inst); + } + + if (device.getDeviceDriver() instanceof SiemensConveyorDeviceDriver) { + siemensConveyorDeviceDriver = (SiemensConveyorDeviceDriver) device.getDeviceDriver(); + if (siemensConveyorDeviceDriver.getMove() == 1) { + data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); } else { - log.warn("指令号:{},acs请求wms取货申请失败,连接被拒绝,未反馈agv允许取货", inst.getInstruction_code()); + message = siemensConveyorDeviceDriver.getDevice_code() + "请求取货条件不满足待机有货"; + log.info("请求取货条件不满足待机有货"); } - } else { + } + + if (device.getDeviceDriver() instanceof SiemensConveyorDeviceDriver) { + siemensConveyorDeviceDriver = (SiemensConveyorDeviceDriver) device.getDeviceDriver(); + if (siemensConveyorDeviceDriver.getMove() == 1) { + data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); + } else { + message = siemensConveyorDeviceDriver.getDevice_code() + "请求取货条件不满足待机有货"; + log.info("请求取货条件不满足待机有货"); + } + } + + if (device.getDeviceDriver() instanceof StandardStorageDeviceDriver) { data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); } //取货完毕 @@ -227,29 +257,44 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic return; } - Object reqWms = device.getExtraValue().get("reqWms"); - if (ObjectUtil.isNotEmpty(reqWms) && reqWms.toString().equals("true")) { - JSONArray req = new JSONArray(); - JSONObject map = new JSONObject(); - map.put("vehicle_code", inst.getVehicle_code()); - map.put("status", "2"); - map.put("device_code", inst.getStart_point_code()); - map.put("task_code", inst.getTask_code()); - req.add(map); - HttpResponse httpResponse = acsToWmsService.feedAgvTaskStatus(req); - if (ObjectUtil.isNotEmpty(httpResponse) && httpResponse.getStatus() == 200) { - JSONObject resp = JSONObject.parseObject(httpResponse.body()); - if (resp.getInteger("status") == 200) { - data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); - log.info("指令号:{},acs反馈wms取货完成成功,wms允许agv取货完成,已反馈agv取货完成", inst.getInstruction_code()); - } else { - log.warn("指令号:{},acs反馈wms取货完成成功,wms不允许agv取货完成,未反馈agv取货完成", inst.getInstruction_code()); - } - } else { - log.warn("指令号:{},acs反馈wms取货完成失败,连接被拒绝,未反馈agv取货完成", inst.getInstruction_code()); + if (StrUtil.equals(inst.getStart_device_code(), device_code)) { + + if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { + standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); + standardOrdinarySiteDeviceDriver.setAgvphase(phase); + standardOrdinarySiteDeviceDriver.setIndex(index); + standardOrdinarySiteDeviceDriver.setInst(inst); } - } else { - data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); + + 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); + try{ + siemensConveyorDeviceDriver.writing(list); + siemensConveyorDeviceDriver.writing(list); + } catch (Exception e){ + e.printStackTrace(); + } + } + } + + if (device.getDeviceDriver() instanceof StandardStorageDeviceDriver) { + standardStorageDeviceDriver = (StandardStorageDeviceDriver) device.getDeviceDriver(); + data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); + } + + } + if (ObjectUtil.isNotEmpty(data)) { + logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + phase + "反馈:" + Bytes2HexString(data)); } //到达放货点 //(需要WCS反馈) @@ -284,29 +329,18 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic log.info("未找到关联编号{}对应的指令", ikey); return; } - Object reqWms = device.getExtraValue().get("reqWms"); - if (ObjectUtil.isNotEmpty(reqWms) && reqWms.toString().equals("true")) { - JSONArray req = new JSONArray(); - JSONObject map = new JSONObject(); - map.put("vehicle_code", inst.getVehicle_code()); - map.put("status", "3"); - map.put("device_code", inst.getNext_point_code()); - map.put("task_code", inst.getTask_code()); - req.add(map); - HttpResponse httpResponse = acsToWmsService.feedAgvTaskStatus(req); - if (ObjectUtil.isNotEmpty(httpResponse) && httpResponse.getStatus() == 200) { - JSONObject resp = JSONObject.parseObject(httpResponse.body()); - if (resp.getInteger("status") == 200) { - data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); - log.info("指令号:{},acs请求wms放货申请成功,wms允许agv申请放货,已反馈agv允许放货", inst.getInstruction_code()); - } else { - log.warn("指令号:{},acs请求wms放货申请成功,wms不允许agv申请放货,未反馈agv允许放货", inst.getInstruction_code()); - } - } else { - log.warn("指令号:{},acs请求wms放货申请失败,连接被拒绝,未反馈agv允许放货", inst.getInstruction_code()); + if (StrUtil.equals(inst.getNext_device_code(), device_code)) { + + if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { + standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); + data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); } - } else { - data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); + + if (device.getDeviceDriver() instanceof StandardStorageDeviceDriver) { + standardStorageDeviceDriver = (StandardStorageDeviceDriver) device.getDeviceDriver(); + data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); + } + } //放货完毕 //(需要WCS反馈) @@ -342,24 +376,18 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic log.info("未找到编号{}对应的指令", ikey); return; } - Object reqWms = device.getExtraValue().get("reqWms"); - if (ObjectUtil.isNotEmpty(reqWms) && reqWms.toString().equals("true")) { - JSONArray req = new JSONArray(); - JSONObject map = new JSONObject(); - map.put("vehicle_code", inst.getVehicle_code()); - map.put("status", "4"); - map.put("device_code", inst.getNext_point_code()); - map.put("task_code", inst.getTask_code()); - req.add(map); - HttpResponse httpResponse = acsToWmsService.feedAgvTaskStatus(req); - if (ObjectUtil.isNotEmpty(httpResponse) && httpResponse.getStatus() == 200) { + if (StrUtil.equals(inst.getNext_device_code(), device_code)) { + + if (device.getDeviceDriver() instanceof StandardStorageDeviceDriver) { + standardStorageDeviceDriver = (StandardStorageDeviceDriver) device.getDeviceDriver(); data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); - log.info("指令号:{},acs请求wms放货申请成功,wms允许agv申请放货,已反馈agv允许放货", inst.getInstruction_code()); - } else { - log.warn("指令号:{},acs请求wms放货申请失败,连接被拒绝,未反馈agv允许放货", inst.getInstruction_code()); } - } else { - data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); + + if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { + standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); + data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); + } + } } //到达位置点 @@ -369,18 +397,140 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic agvaddr = arr[18] * 256 + arr[19]; agvaddr_copy = agvaddr; data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); - logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + phase + "反馈:" + data); } else if (phase == 0x50) {//进入交通灯区域 data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); - logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + phase + "反馈:" + data); } else if (phase == 0x51) {//离开交通灯区域 data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); - logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + phase + "反馈:" + data); + } else if (phase == 0x67) {//agv异常 +// if (ikey == 0) { +// this.setErrorInfo(ikey, "0", "正常"); +// } else { +// Map error = ErrorUtil.getAgvErrorMsg(ikey); +// String code = error.get("code"); +// String info = error.get("info"); +// this.setErrorInfo(ikey, code, info); +// } + + if (error != last_error) { +// DeviceErrorLogDto dto = new DeviceErrorLogDto(); +// dto.setDevice_code(this.getDevice().getDevice_code()); +// dto.setError_code(String.valueOf(error_code)); +// dto.setError_info(error_message); +// deviceErrorLogService.create(dto); + + JSONObject param = new JSONObject(); + param.put("device_code", this.device_code); + param.put("error", error); + param.put("error_msg", error == 0 ? "" : this.getError_message()); + param.put("device_name", this.getDevice().getDevice_name()); + param.put("device_type", "4"); + param.put("product_area", paramService.findByCode("productArea").getValue()); +// acsToWmsService.sendDeviceStatus(param); + } + data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); + last_error = error; + } else if (phase == 0x70) { + //x坐标 + x = ikey; + } else if (phase == 0x71) { + //y坐标 + y = ikey; + } else if (phase == 0x72) { + //车辆角度 + angle = ikey; + } else if (phase == 0x73) { + //agv电量 + electric_qty = ikey; + } else if (phase == 0x74) { + //三色灯状态 + status = ikey; + + if (status != last_status && status != 6 && status != 7) { + boolean flag = true; + JSONObject param = new JSONObject(); + param.put("device_code", this.device_code); + if (status == 1) { + param.put("mode", 0); + } else if (status == 2) { + param.put("mode", 3); + } else if ("345".contains(String.valueOf(status))) { + param.put("mode", 2); + } else { + flag = false; + } + + if (flag) { +// param.put("device_name", this.getDevice().getDevice_name()); +// param.put("device_type", "4"); +// param.put("product_area", paramService.findByCode("productArea").getValue()); +// acsToWmsService.sendDeviceStatus(param); + } + } + + last_status = status; } if (!ObjectUtil.isEmpty(data)) { - logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + phase + "反馈:" + data); + phase = 0; + logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + phase + "反馈:" + Bytes2HexString(data)); OneNDCSocketConnectionAutoRun.write(data); } + } + public static String Bytes2HexString(byte[] b) { + String ret = ""; + for (int i = 0; i < b.length; i++) { + String hex = Integer.toHexString(b[i] & 0xFF); + if (hex.length() == 1) { + hex = '0' + hex; + } + ret += hex.toUpperCase(); + } + return ret; + } + + + @Override + public JSONObject getDeviceStatusName() { + JSONObject jo = new JSONObject(); + //agv编码 + jo.put("car_no", this.getDevice().getDevice_code()); + //agv名称 + jo.put("device_name", this.getDevice().getDevice_name()); + //x坐标 + jo.put("x", this.getX()); + //y坐标 + jo.put("y", this.getY()); + //角度 + jo.put("angle", this.getAngle()); + jo.put("phase", phase); + jo.put("phase_name", oneAgvPhase.getPhaseName(phase)); + //电量 + jo.put("electricity", this.getElectric_qty()); + String status_name = this.status == 1 ? "关机" : this.status == 2 ? "工作中" : this.status == 3 ? "交通管制" : this.status == 4 ? "任务等待" : this.status == 5 ? "充电中" : this.status == 6 ? "故障中" : this.status == 7 ? "电量低" : "正常"; + //agv状态 + jo.put("status_name", status_name); + //任务号 + jo.put("task_code", ObjectUtil.isEmpty(instruction) ? "0" : instruction.getTask_code()); + //异常 + jo.put("fault", this.getError_message()); + jo.put("message", this.getMessage()); + return jo; + } + + @Override + public void setDeviceStatus(JSONObject data) { + + } + + @Override + public JSONObject feedLmsRealFailedInfo() { + JSONObject jo = new JSONObject(); + jo.put("device_code", this.getDevice().getDevice_code()); + jo.put("device_name", this.getDevice().getDevice_name()); + jo.put("fault_code", error_code); + jo.put("fault_info", error_message); + jo.put("fault_type", error_type); + return jo; + } } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/xg_agv/XgagvDefination.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/xg_agv/XgagvDefination.java index b5e4e92..ddbea3e 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/xg_agv/XgagvDefination.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/xg_agv/XgagvDefination.java @@ -44,7 +44,7 @@ public class XgagvDefination implements OpcDeviceDriverDefination { @Override public List getFitDeviceTypes() { List types = new LinkedList(); - types.add(DeviceType.conveyor); + types.add(DeviceType.agv); return types; } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/cargo_lift_conveyor/CargoLiftConveyorDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/cargo_lift_conveyor/CargoLiftConveyorDeviceDriver.java deleted file mode 100644 index 80ab1d1..0000000 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/cargo_lift_conveyor/CargoLiftConveyorDeviceDriver.java +++ /dev/null @@ -1,370 +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.domain.Device; -import org.nl.acs.device.service.DeviceService; -import org.nl.acs.device_driver.DeviceDriver; -import org.nl.acs.device_driver.RouteableDeviceDriver; -import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; -import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; -import org.nl.acs.ext.wms.service.AcsToWmsService; -import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; -import org.nl.acs.instruction.domain.Instruction; -import org.nl.acs.instruction.service.InstructionService; -import org.nl.acs.log.service.DeviceExecuteLogService; -import org.nl.acs.monitor.DeviceStageMonitor; -import org.nl.acs.opc.DeviceAppService; -import org.nl.acs.opc.domain.Opc; -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.system.service.param.ISysParamService; -import org.nl.config.SpringContextHolder; -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 - ISysParamService paramService = SpringContextHolder.getBean(ISysParamService.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/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/cargo_lift_conveyor/ItemProtocol.java b/acs/nladmin-system/nlsso-server/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/nlsso-server/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/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/empty_vehicle_stacking_position/EmptyVehicleStackingPositionDefination.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/empty_vehicle_stacking_position/EmptyVehicleStackingPositionDefination.java deleted file mode 100644 index 26cc963..0000000 --- a/acs/nladmin-system/nlsso-server/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.domain.Device; -import org.nl.acs.device_driver.DeviceDriver; -import org.nl.acs.device_driver.defination.OpcDeviceDriverDefination; -import org.nl.acs.device.enums.DeviceType; -import org.springframework.stereotype.Service; - -import java.util.LinkedList; -import java.util.List; - -/** - * 空托盘叠盘位 - */ -@Service -public class 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/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/empty_vehicle_stacking_position/EmptyVehicleStackingPositionDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/empty_vehicle_stacking_position/EmptyVehicleStackingPositionDeviceDriver.java deleted file mode 100644 index 5a6f8be..0000000 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/empty_vehicle_stacking_position/EmptyVehicleStackingPositionDeviceDriver.java +++ /dev/null @@ -1,236 +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.domain.Device; -import org.nl.acs.device.service.DeviceService; -import org.nl.acs.device_driver.DeviceDriver; -import org.nl.acs.device_driver.RouteableDeviceDriver; -import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; -import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; -import org.nl.acs.ext.wms.service.AcsToWmsService; -import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; -import org.nl.acs.instruction.domain.Instruction; -import org.nl.acs.instruction.service.InstructionService; -import org.nl.acs.log.service.DeviceExecuteLogService; -import org.nl.acs.monitor.DeviceStageMonitor; -import org.nl.acs.opc.DeviceAppService; -import org.nl.acs.route.service.RouteLineService; -import org.nl.acs.task.service.TaskService; -import org.nl.system.service.param.ISysParamService; -import org.nl.config.SpringContextHolder; -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 - ISysParamService paramService = SpringContextHolder.getBean(ISysParamService.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/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/empty_vehicle_stacking_position/ItemProtocol.java b/acs/nladmin-system/nlsso-server/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/nlsso-server/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/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_smart_plc_test/HailiangSmartplcTestDefination.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_smart_plc_test/HailiangSmartplcTestDefination.java deleted file mode 100644 index 206e332..0000000 --- a/acs/nladmin-system/nlsso-server/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.domain.Device; -import org.nl.acs.device_driver.DeviceDriver; -import org.nl.acs.device_driver.defination.OpcDeviceDriverDefination; -import org.nl.acs.device.enums.DeviceType; -import org.springframework.stereotype.Service; - -import java.util.LinkedList; -import java.util.List; - -/** - * 三工位 - */ -@Service -public class 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/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_smart_plc_test/HailiangSmartplcTestDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_smart_plc_test/HailiangSmartplcTestDeviceDriver.java deleted file mode 100644 index 2979956..0000000 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_smart_plc_test/HailiangSmartplcTestDeviceDriver.java +++ /dev/null @@ -1,269 +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.domain.Device; -import org.nl.acs.device.service.DeviceService; -import org.nl.acs.device_driver.DeviceDriver; -import org.nl.acs.device_driver.RouteableDeviceDriver; -import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; -import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; -import org.nl.acs.ext.wms.service.AcsToWmsService; -import org.nl.acs.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.DeviceAppService; -import org.nl.acs.route.service.RouteLineService; -import org.nl.acs.task.service.TaskService; -import org.nl.system.service.param.ISysParamService; -import org.nl.config.SpringContextHolder; -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 - ISysParamService paramService = SpringContextHolder.getBean(ISysParamService.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/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_smart_plc_test/ItemProtocol.java b/acs/nladmin-system/nlsso-server/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/nlsso-server/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/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/hongxiang_device/HongXiangConveyorDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/hongxiang_device/HongXiangConveyorDeviceDriver.java index 63e4bc2..02f1700 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/hongxiang_device/HongXiangConveyorDeviceDriver.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/hongxiang_device/HongXiangConveyorDeviceDriver.java @@ -14,8 +14,8 @@ 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.data.one.ApplyLabelingAndBindingRequest; +import org.nl.acs.ext.wms.data.one.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; diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/lnsh_station/ItemProtocol.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/lnsh_station/ItemProtocol.java new file mode 100644 index 0000000..986047b --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/lnsh_station/ItemProtocol.java @@ -0,0 +1,143 @@ +package org.nl.acs.device_driver.basedriver.lnsh_station; + +import cn.hutool.core.util.StrUtil; +import lombok.Getter; +import lombok.Setter; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.device.device_driver.standard_inspect.ItemDto; + +import java.util.ArrayList; +import java.util.List; + +@Slf4j +@Getter +@Setter +public class ItemProtocol { + + public static String item_heartbeat = "heartbeat"; + public static String item_mode = "mode"; + public static String item_move = "move"; + public static String item_action = "action"; + public static String item_ioaction = "ioaction"; + public static String item_error = "error"; + public static String item_task = "task"; + public static String item_weight = "weight"; + public static String item_material = "material"; + public static String item_barcode = "barcode"; + public static String item_to_command = "to_command"; + public static String item_to_target = "to_target"; + public static String item_to_task = "to_task"; + + + Boolean isonline; + + private LnshStationDeviceDriver driver; + + public ItemProtocol(LnshStationDeviceDriver 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 getIoAction() { + return this.getOpcIntegerValue(item_ioaction); + } + + public int getError() { + return this.getOpcIntegerValue(item_error); + } + + public int getTask() { + return this.getOpcIntegerValue(item_task); + } + + public int getWeight() { + return this.getOpcIntegerValue(item_weight); + } + + public String getMaterial() { + return this.getOpcStringValue(item_material); + } + + public int getBarcode() { + return this.getOpcIntegerValue(item_barcode); + } + + public int getToCommand() { + return this.getOpcIntegerValue(item_to_command); + } + + public int getToTarget() { + return this.getOpcIntegerValue(item_to_target); + } + + public int getToTask() { + return this.getOpcIntegerValue(item_to_task); + } + + //是否有货 + public int hasGoods(int move) { + return move; + } + + + 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.isBlank(value)) { +// log.error("读取错误!"); + } else { + return value; + } + return "0"; + } + + public static List getReadableItemDtos() { + ArrayList list = new ArrayList(); + list.add(new ItemDto(item_heartbeat, "心跳", "DB81.B10")); + list.add(new ItemDto(item_mode, "工作模式", "DB81.B1", Boolean.valueOf(true))); + list.add(new ItemDto(item_move, "光电开关信号", "DB81.B2")); + list.add(new ItemDto(item_action, "取放信号", "DB81.B3")); + list.add(new ItemDto(item_ioaction, "进出信号", "DB81.B4")); + list.add(new ItemDto(item_error, "报警信号", "DB81.B5")); + list.add(new ItemDto(item_task, "任务号", "DB81.D6")); + list.add(new ItemDto(item_weight, "重量", "DB81.D10")); + list.add(new ItemDto(item_material, "物料", "DB81.STRING14.50")); + list.add(new ItemDto(item_barcode, "条码", "DB81.W66")); + return list; + } + + public static List getWriteableItemDtos() { + ArrayList list = new ArrayList(); + list.add(new ItemDto(item_to_command, "作业命令", "DB71.W0", Boolean.valueOf(true))); + list.add(new ItemDto(item_to_target, "目标站", "DB71.W2")); + list.add(new ItemDto(item_to_task, "任务号", "DB71.D4")); + return list; + } + +} + diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/paint_conveyor/PaintConveyorDefination.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/lnsh_station/LnshStationDefination.java similarity index 70% rename from acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/paint_conveyor/PaintConveyorDefination.java rename to acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/lnsh_station/LnshStationDefination.java index b95282f..4d9033f 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/paint_conveyor/PaintConveyorDefination.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/lnsh_station/LnshStationDefination.java @@ -1,4 +1,4 @@ -package org.nl.acs.device_driver.basedriver.paint_conveyor; +package org.nl.acs.device_driver.basedriver.lnsh_station; import org.nl.acs.device.device_driver.standard_inspect.ItemDto; import org.nl.acs.device.domain.Device; @@ -11,40 +11,41 @@ import java.util.LinkedList; import java.util.List; /** - * 油漆线 + * 晟华-工位(交互模板) + * */ @Service -public class PaintConveyorDefination implements OpcDeviceDriverDefination { +public class LnshStationDefination implements OpcDeviceDriverDefination { @Override public String getDriverCode() { - return "paint_conveyor"; + return "standard_station"; } @Override public String getDriverName() { - return "油漆线"; + return "标准版-工位(交互模板)"; } @Override public String getDriverDescription() { - return "油漆线"; + return "标准版-工位(交互模板)"; } @Override public DeviceDriver getDriverInstance(Device device) { - return (new PaintConveyorDeviceDriver()).setDevice(device).setDriverDefination(this); + return (new LnshStationDeviceDriver()).setDevice(device).setDriverDefination(this); } @Override public Class getDeviceDriverType() { - return PaintConveyorDeviceDriver.class; + return LnshStationDeviceDriver.class; } @Override public List getFitDeviceTypes() { List types = new LinkedList(); - types.add(DeviceType.conveyor); + types.add(DeviceType.station); return types; } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/lnsh_station/LnshStationDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/lnsh_station/LnshStationDeviceDriver.java new file mode 100644 index 0000000..306ce90 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/lnsh_station/LnshStationDeviceDriver.java @@ -0,0 +1,845 @@ +package org.nl.acs.device_driver.basedriver.lnsh_station; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import lombok.Getter; +import lombok.RequiredArgsConstructor; +import lombok.Setter; +import lombok.extern.slf4j.Slf4j; +import org.jinterop.dcom.common.JIException; +import org.nl.acs.device.domain.Device; +import org.nl.acs.device.service.DeviceService; +import org.nl.acs.device_driver.DeviceDriver; +import org.nl.acs.device_driver.RequestMethodEnum; +import org.nl.acs.device_driver.RouteableDeviceDriver; +import org.nl.acs.device_driver.StandardRequestMethod; +import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; +import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; +import org.nl.acs.ext.wms.data.AcsToWmsData.applySignalStaus.ApplySignalStatusRequest; +import org.nl.acs.ext.wms.data.AcsToWmsData.applySignalStaus.ApplySignalStatusResponse; +import org.nl.acs.ext.wms.data.AcsToWmsData.applyTask.ApplyTaskRequest; +import org.nl.acs.ext.wms.data.AcsToWmsData.applyTask.ApplyTaskResponse; +import org.nl.acs.ext.wms.service.AcsToWmsService; +import org.nl.acs.instruction.domain.Instruction; +import org.nl.acs.instruction.service.InstructionService; +import org.nl.acs.log.service.DeviceExecuteLogService; +import org.nl.acs.monitor.DeviceStageMonitor; +import org.nl.acs.opc.DeviceAppService; +import org.nl.acs.route.service.RouteLineService; +import org.nl.acs.task.service.TaskService; +import org.nl.config.SpringContextHolder; +import org.nl.system.service.lucene.LuceneExecuteLogService; +import org.nl.system.service.lucene.dto.LuceneLogDto; +import org.openscada.opc.lib.da.AddFailedException; +import org.openscada.opc.lib.da.Server; + +import java.lang.reflect.Method; +import java.util.*; + +/** + * 晟华-工位(交互模板) + */ +@Slf4j +@Getter +@Setter +@RequiredArgsConstructor +public class LnshStationDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor, StandardRequestMethod { + protected ItemProtocol itemProtocol = new ItemProtocol(this); + + LuceneExecuteLogService lucene = SpringContextHolder.getBean("luceneExecuteLogServiceImpl"); + + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); + + DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); + + RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); + + TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); + + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); + + DeviceAppService deviceAppService = SpringContextHolder.getBean("deviceAppServiceImpl"); + + AcsToWmsService acsToWmsService = SpringContextHolder.getBean("acsToWmsServiceImpl"); + + String device_code; + int mode = 0; + int error = 0; + int move = 0; + int action; + int io_action; + int task = 0; + int last_mode = 0; + int last_error = 0; + int last_move = 0; + int last_task = 0; + int last_action = 0; + int last_ioaction = 0; + Boolean isonline = true; + int hasGoods = 0; + Boolean iserror = false; + + protected int instruction_num = 0; + protected int instruction_num_truth = 0; + Integer heartbeat_tag; + private Date instruction_require_time = new Date(); + private Date instruction_finished_time = new Date(); + + private int instruction_require_time_out = 3000; + boolean requireSucess = false; + + private int instruction_finished_time_out; + + int heartbeat; + int last_heartbeat; + private Date checkHeartbeattime = new Date(); + private Date last_checkHeartbeattime = new Date(); + + + int branchProtocol = 0; + //当前指令 + Instruction inst = null; + //上次指令 + Instruction last_inst = null; + + //触摸屏手动触发任务 + private Boolean is_has_task = false; + + //暂定 0就绪 1请求取货 2取货完成 3请求放货 4放货完成 5取货完成离开 6放货完成离开 7请求进入区域 8请求离开区域 + int flag; + + String message; + int weight = 0; + int last_weight = 0; + String material; + String last_material; + int barcode; + int last_barcode; + + @Override + public Device getDevice() { + return this.device; + } + + + @Override + public void execute() { + message = null; + try { + device_code = this.getDeviceCode(); + mode = this.itemProtocol.getMode(); + error = this.itemProtocol.getError(); + move = this.itemProtocol.getMove(); + task = this.itemProtocol.getTask(); + hasGoods = this.itemProtocol.getMove(); + io_action = this.itemProtocol.getIoAction(); + action = this.itemProtocol.getAction(); + weight = this.itemProtocol.getWeight(); + material = this.itemProtocol.getMaterial(); + barcode = this.itemProtocol.getBarcode(); + + if (mode != last_mode) { + if(mode==2){ + Map map = new LinkedHashMap<>(); + map.put("to_command",0); + this.writing(map); + } + this.setRequireSucess(false); + logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + " -> " + mode); + lucene.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "信号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); + lucene.deviceItemValue(this.device_code, "move", String.valueOf(move)); + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "信号mode:" + last_move + " -> " + move)); + if ("true".equals(this.device.getExtraValue().get("sendDeviceStatus"))) { + ApplySignalStatusRequest request = new ApplySignalStatusRequest(); + request.setDevice_code(this.getDevice_code()); + request.setRequest_medthod_code(RequestMethodEnum.real_time_set_point.getCode()); + request.setRequest_medthod_name(RequestMethodEnum.real_time_set_point.getName()); + request.setMove(String.valueOf(move)); + ApplySignalStatusResponse resp = JSON.toJavaObject(JSONObject.parseObject(acsToWmsService.applyTask(request)), ApplySignalStatusResponse.class); + message = RequestMethodEnum.getName("real_time_set_point") + "real_time_set_point 接口请求LMS..."; + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "参数:" + JSON.toJSONString(request))); + if (resp.getCode() == 200) { + message = RequestMethodEnum.getName("real_time_set_point") + "real_time_set_point 接口请求成功" + resp.getMessage(); + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "返回参数:" + JSON.toJSONString(request))); + } else { + message = RequestMethodEnum.getName("real_time_set_point") + "real_time_set_point 接口请求失败" + resp.getMessage();; + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "返回参数:" + JSON.toJSONString(request))); + } + } + } + if (error != last_error) { + logServer.deviceItemValue(this.device_code, "error", String.valueOf(error)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + " -> " + error); + lucene.deviceItemValue(this.device_code, "error", String.valueOf(error)); + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "信号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); + lucene.deviceItemValue(this.device_code, "task", String.valueOf(task)); + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "信号task:" + last_task + " -> " + task)); + } + if (action != last_action) { + logServer.deviceItemValue(this.device_code, "action", String.valueOf(action)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号action:" + last_action + " -> " + action); + lucene.deviceItemValue(this.device_code, "action", String.valueOf(action)); + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "信号action:" + last_action + " -> " + action)); + if ("true".equals(this.device.getExtraValue().get("sendDeviceStatus"))) { + ApplySignalStatusRequest request = new ApplySignalStatusRequest(); + request.setDevice_code(this.getDevice_code()); + request.setRequest_medthod_code(RequestMethodEnum.real_time_set_point.getCode()); + request.setRequest_medthod_name(RequestMethodEnum.real_time_set_point.getName()); + request.setAction(String.valueOf(action)); + ApplySignalStatusResponse resp = JSON.toJavaObject(JSONObject.parseObject(acsToWmsService.applyTask(request)), ApplySignalStatusResponse.class); + message = RequestMethodEnum.getName("real_time_set_point") + "real_time_set_point 接口请求LMS..."; + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "参数:" + JSON.toJSONString(request))); + + if (resp.getCode() == 200) { + message = RequestMethodEnum.getName("real_time_set_point") + "real_time_set_point 接口请求成功" + resp.getMessage();; + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "返回参数:" + JSON.toJSONString(request))); + } else { + message = RequestMethodEnum.getName("real_time_set_point") + "real_time_set_point 接口请求失败" + resp.getMessage();; + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "返回参数:" + JSON.toJSONString(request))); + } + } + } + if (io_action != last_ioaction) { + logServer.deviceItemValue(this.device_code, "io_action", String.valueOf(io_action)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号io_action: " + last_ioaction + " -> " + io_action); + lucene.deviceItemValue(this.device_code, "io_action", String.valueOf(io_action)); + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "信号action:" + last_action + " -> " + action)); + } + if (weight != last_weight) { + logServer.deviceItemValue(this.device_code, "weight", String.valueOf(weight)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号weight: " + last_weight + " -> " + weight); + lucene.deviceItemValue(this.device_code, "weight", String.valueOf(weight)); + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "信号weight: " + last_weight + " -> " + weight)); + } + if (!StrUtil.equals(material, last_material)) { + logServer.deviceItemValue(this.device_code, "material", material); + logServer.deviceExecuteLog(this.device_code, "", "", "信号material:" + last_material + " -> " + material); + lucene.deviceItemValue(this.device_code, "material", String.valueOf(material)); + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "信号material:" + last_material + " -> " + material)); + } + if (barcode != last_barcode) { + logServer.deviceItemValue(this.device_code, "barcode", String.valueOf(barcode)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号barcode:" + last_barcode + " -> " + barcode); + lucene.deviceItemValue(this.device_code, "barcode", String.valueOf(barcode)); + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "信号barcode:" + last_barcode + " -> " + barcode)); + } + + } catch (Exception var17) { + return; + } + + //急停 + if (this.isStop()) { + + //未联机 + } 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; + + + if (mode > 2 && !requireSucess) { + if (ObjectUtil.isNotEmpty(this.device.getExtraValue().get(String.valueOf(mode)))) { + String modethod = this.device.getExtraValue().get(String.valueOf(mode)).toString(); + try { + applyRequest(modethod); + } catch (Exception e) { + message = "错误:" + e.getMessage(); + this.setIserror(true); + } + } else { + message = "无效模式请求,驱动未配置此请求方法"; + } + } else { + message = "无请求"; + } + } + + last_mode = mode; + last_error = error; + last_move = move; + last_task = task; + last_action = action; + last_ioaction = io_action; + last_weight = weight; + last_material = material; + last_barcode = barcode; + } + + + + + public boolean exe_error() { + if (this.error == 0) { + return true; + } else { + log.debug("设备报警"); + return false; + } + } + + public boolean exe_business() { + return true; + } + + + /** + * 多个信号一起下发电气 + * + * @param map + */ + + public void writing(Map map) { + LuceneExecuteLogService lucene = SpringContextHolder.getBean(LuceneExecuteLogService.class); + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); + Map itemMap = new LinkedHashMap<>(); + map.forEach((key, value) -> { + if (ObjectUtil.isNotEmpty(value)) { + itemMap.put(getToParam() + key, value); + } + }); + if (ObjectUtil.isNotEmpty(itemMap)) { + try { + this.checkcontrol(itemMap); + } catch (Exception e) { + e.printStackTrace(); + try{ + this.checkcontrol(itemMap); + } catch (Exception e1){ + e1.printStackTrace(); + } + } + + logServer.deviceExecuteLog(this.getDevice().getDevice_code(), "", "", "下发多个电气信号:" + itemMap); + //lucene.deviceExecuteLog(new LuceneLogDto(this.getDeviceCode(), "下发多个电气信号:" + itemMap)); + } + } + /** + * 抽取统一下发电气信号前缀 + * + * @return + */ + public String getToParam() { + return this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() + "."; + } + + public String toString() { + return ""; + } + + + @Override + public JSONObject getDeviceStatusName() throws Exception { + String move; + String action; + String io_action; + boolean hasGoods; + + if (this.move == 0) { + move = "无货"; + hasGoods = false; + } else { + move = "有货"; + hasGoods = true; + } + + switch (this.action) { + case 1: + action = "允许取货"; + break; + case 2: + action = "允许放货"; + break; + case 3: + action = "允许取放"; + break; + default: + action = "禁止取放"; + } + + switch (this.io_action) { + case 1: + io_action = "允许进入"; + break; + case 2: + io_action = "允许离开"; + break; + case 3: + io_action = "允许进入离开"; + break; + default: + io_action = "禁止进入离开"; + } + + String error; + switch (this.error) { + case 1: + error = "急停中"; + break; + case 2: + error = "光幕报警"; + break; + case 3: + error = "本体报警"; + break; + case 4: + error = "未排产报警"; + break; + case 5: + error = "扫码故障"; + break; + default: + error = String.valueOf(this.error); + } + + JSONObject jo = new JSONObject(); + jo.put("device_name", this.getDevice().getDevice_name()); + jo.put("mode", mode); + Object requestNo = this.getExtraValue().get(String.valueOf(this.mode)); + if(ObjectUtil.isNotEmpty(requestNo)){ + jo.put("modeName", this.getModeName(String.valueOf(requestNo))); + } else { + jo.put("modeName", "无效的请求,驱动中未配置"); + } + jo.put("move", move); + jo.put("action", action); + jo.put("io_action", io_action); + jo.put("error", error); + jo.put("task", task); + jo.put("weight", weight); + jo.put("barcode", barcode); + jo.put("isError", iserror); + jo.put("isOnline", isonline); + jo.put("hasGoods", hasGoods); + jo.put("message", message); + jo.put("hasGoods",hasGoods); + return jo; + } + + @Override + public void setDeviceStatus(JSONObject data) { + + } + + + /** + * 请求 + * + * @param + */ + public synchronized boolean applyRequest(String modethod) throws Exception { + Object obj1 = this; + Date date = new Date(); + if (date.getTime() - this.instruction_require_time.getTime() < (long) this.instruction_require_time_out) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); + return false; + } else { + this.instruction_require_time = date; + Object obj = this.getClass().getDeclaredConstructor().newInstance(); + Method method1 = this.getClass().getMethod(modethod, null); + method1.invoke(this, null); + return true; + } + } + + + + /** + * 申请补满料盅托盘 + * + * @param + */ + public synchronized boolean apply_put_full_vehicle() { + if(move == 0) { + ApplyTaskRequest request = new ApplyTaskRequest(); + request.setDevice_code(this.getDevice_code()); + request.setRequest_medthod_code(Thread.currentThread().getStackTrace()[1].getMethodName()); + request.setRequest_medthod_name(RequestMethodEnum.getName(Thread.currentThread().getStackTrace()[1].getMethodName())); + request.setWeight(String.valueOf(weight)); + request.setVehicle_code(String.valueOf(barcode)); + message = RequestMethodEnum.getName("apply_put_full_vehicle") + "apply_put_full_vehicle 接口请求LMS..."; + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "参数:" + JSON.toJSONString(request))); + ApplyTaskResponse resp = JSON.toJavaObject(JSONObject.parseObject(acsToWmsService.applyTask(request)),ApplyTaskResponse.class); + if (resp.getCode() == 200) { + Map map = new LinkedHashMap<>(); + map.put("to_command",200); + this.writing(map); + this.setRequireSucess(true); + } else { + Map map = new LinkedHashMap<>(); + map.put("to_command",400); + this.writing(map); + message = RequestMethodEnum.getName("apply_put_full_vehicle") + "apply_put_full_vehicle 接口请求失败" + resp.getMessage();; + } + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message)); + return true; + } else { + message = RequestMethodEnum.getName("apply_put_full_vehicle") + "apply_put_full_vehicle 设备有货未请求LMS..."; + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message)); + return false; + } + } + + /** + * 申请补空料盅托盘 + * + * @param + */ + public synchronized boolean apply_put_empty_vehicle() { + if(move == 0) { + ApplyTaskRequest request = new ApplyTaskRequest(); + request.setDevice_code(this.getDevice_code()); + request.setRequest_medthod_code(Thread.currentThread().getStackTrace()[1].getMethodName()); + request.setRequest_medthod_name(RequestMethodEnum.getName(Thread.currentThread().getStackTrace()[1].getMethodName())); + request.setWeight(String.valueOf(weight)); + request.setVehicle_code(String.valueOf(barcode)); + ApplyTaskResponse resp = JSON.toJavaObject(JSONObject.parseObject(acsToWmsService.applyTask(request)),ApplyTaskResponse.class); + message = RequestMethodEnum.getName("apply_put_empty_vehicle") + "apply_put_empty_vehicle 接口请求LMS..."; + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "参数:" + JSON.toJSONString(request))); + + if (resp.getCode() == 200) { + Map map = new LinkedHashMap<>(); + map.put("to_command",200); + this.writing(map); + this.setRequireSucess(true); + message = RequestMethodEnum.getName("apply_put_empty_vehicle") + "apply_put_empty_vehicle 接口请求成功" + resp.getMessage(); + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "返回参数:" + JSON.toJSONString(resp))); + } else { + Map map = new LinkedHashMap<>(); + map.put("to_command",400); + this.writing(map); + message = RequestMethodEnum.getName("apply_put_empty_vehicle") + "apply_put_empty_vehicle 接口请求失败" + resp.getMessage(); + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "返回参数:" + JSON.toJSONString(resp))); + } + return true; + } else { + message = RequestMethodEnum.getName("apply_put_empty_vehicle") + "apply_put_empty_vehicle 设备有货未请求LMS..."; + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message)); + return false; + } + } + + /** + * 申请取走空料盅托盘 + * + * @param + */ + public synchronized boolean apply_take_empty_vehicle() { + if(move == 1) { + ApplyTaskRequest request = new ApplyTaskRequest(); + request.setDevice_code(this.getDevice_code()); + request.setRequest_medthod_code(Thread.currentThread().getStackTrace()[1].getMethodName()); + request.setRequest_medthod_name(RequestMethodEnum.getName(Thread.currentThread().getStackTrace()[1].getMethodName())); + request.setWeight(String.valueOf(weight)); + request.setVehicle_code(String.valueOf(barcode)); + ApplyTaskResponse resp = JSON.toJavaObject(JSONObject.parseObject(acsToWmsService.applyTask(request)),ApplyTaskResponse.class); + message = RequestMethodEnum.getName("apply_take_empty_vehicle") + "apply_take_empty_vehicle 接口请求LMS..."; + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "参数:" + JSON.toJSONString(request))); + + if (resp.getCode() == 200) { + Map map = new LinkedHashMap<>(); + map.put("to_command",200); + this.writing(map); + this.setRequireSucess(true); + } else { + Map map = new LinkedHashMap<>(); + map.put("to_command",400); + this.writing(map); + message = RequestMethodEnum.getName("apply_take_empty_vehicle") + "apply_take_empty_vehicle 接口请求失败" + resp.getMessage();; + } + return true; + } else { + message = RequestMethodEnum.getName("apply_take_empty_vehicle") + "apply_take_empty_vehicle 设备无货未请求LMS..."; + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message)); + return false; + } + } + + + /** + * 申请取走满料盅托盘 + * + * @param + */ + public synchronized boolean apply_take_full_vehicle() { + if(move > 0&& barcode>0) { + ApplyTaskRequest request = new ApplyTaskRequest(); + request.setDevice_code(this.getDevice_code()); + request.setRequest_medthod_code(Thread.currentThread().getStackTrace()[1].getMethodName()); + request.setRequest_medthod_name(RequestMethodEnum.getName(Thread.currentThread().getStackTrace()[1].getMethodName())); + request.setMaterial_code(material); + request.setWeight(String.valueOf(weight)); + request.setVehicle_code(String.valueOf(barcode)); + if(ObjectUtil.isNotEmpty(this.getDevice().getExtraValue().get("link_device_code"))){ + Device device = deviceAppService.findDeviceByCode(this.getDevice().getExtraValue().get("link_device_code").toString()); + } + ApplyTaskResponse resp = JSON.toJavaObject(JSONObject.parseObject(acsToWmsService.applyTask(request)),ApplyTaskResponse.class); + message = RequestMethodEnum.getName("apply_take_full_vehicle") + "apply_take_full_vehicle 接口请求LMS..."; + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "参数:" + JSON.toJSONString(request))); + + if (resp.getCode() == 200) { + Map map = new LinkedHashMap<>(); + map.put("to_command",200); + this.writing(map); + this.setRequireSucess(true); + message = RequestMethodEnum.getName("apply_take_full_vehicle") + "apply_take_full_vehicle 接口请求成功" + resp.getMessage(); + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "返回参数:" + JSON.toJSONString(resp))); + } else { + Map map = new LinkedHashMap<>(); + map.put("to_command",400); + this.writing(map); + message = RequestMethodEnum.getName("apply_take_full_vehicle") + "apply_take_full_vehicle 接口请求失败" + resp.getMessage(); + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "返回参数:" + JSON.toJSONString(resp))); + } + return true; + } else if(move==0) { + message = RequestMethodEnum.getName("apply_take_full_vehicle") + "apply_take_full_vehicle 设备无货未请求LMS..."; + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message)); + }else if(barcode<=0){ + message = RequestMethodEnum.getName("apply_take_full_vehicle") + "apply_take_full_vehicle 设备条码不正确未请求LMS..."; + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message)); + } + return false; + } + + /** + * 申请强制取走满料盅托盘 + * + * @param + */ + public synchronized boolean apply_force_take_full_vehicle() { + if(move > 0) { + ApplyTaskRequest request = new ApplyTaskRequest(); + request.setDevice_code(this.getDevice_code()); + request.setRequest_medthod_code(Thread.currentThread().getStackTrace()[1].getMethodName()); + request.setRequest_medthod_name(RequestMethodEnum.getName(Thread.currentThread().getStackTrace()[1].getMethodName())); + request.setWeight(String.valueOf(weight)); + request.setVehicle_code(String.valueOf(barcode)); + ApplyTaskResponse resp = JSON.toJavaObject(JSONObject.parseObject(acsToWmsService.applyTask(request)),ApplyTaskResponse.class); + message = RequestMethodEnum.getName("apply_force_take_full_vehicle") + "apply_force_take_full_vehicle 接口请求LMS..."; + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "参数:" + JSON.toJSONString(request))); + + if (resp.getCode() == 200) { + Map map = new LinkedHashMap<>(); + map.put("to_command",200); + this.writing(map); + this.setRequireSucess(true); + } else { + Map map = new LinkedHashMap<>(); + map.put("to_command",400); + this.writing(map); + message = RequestMethodEnum.getName("apply_force_take_full_vehicle") + "apply_force_take_full_vehicle 接口请求失败" + resp.getMessage();; + } + return true; + } else { + message = RequestMethodEnum.getName("apply_force_take_full_vehicle") + "apply_force_take_full_vehicle 设备无货未请求LMS..."; + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message)); + return false; + } + } + + /** + * 申请强制满托入缓存 + * + * @param + */ + public synchronized boolean apply_force_take_full_vehicle_in_storage() { + if(move > 0) { + ApplyTaskRequest request = new ApplyTaskRequest(); + request.setDevice_code(this.getDevice_code()); + request.setRequest_medthod_code(Thread.currentThread().getStackTrace()[1].getMethodName()); + request.setRequest_medthod_name(RequestMethodEnum.getName(Thread.currentThread().getStackTrace()[1].getMethodName())); + request.setWeight(String.valueOf(weight)); + request.setVehicle_code(String.valueOf(barcode)); + ApplyTaskResponse resp = JSON.toJavaObject(JSONObject.parseObject(acsToWmsService.applyTask(request)),ApplyTaskResponse.class); + message = RequestMethodEnum.getName("apply_force_take_full_vehicle_in_storage") + "apply_force_take_full_vehicle_in_storage 接口请求LMS..."; + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "参数:" + JSON.toJSONString(request))); + + if (resp.getCode() == 200) { + Map map = new LinkedHashMap<>(); + map.put("to_command",200); + this.writing(map); + this.setRequireSucess(true); + } else { + Map map = new LinkedHashMap<>(); + map.put("to_command",400); + this.writing(map); + message = RequestMethodEnum.getName("apply_force_take_full_vehicle_in_storage") + "apply_force_take_full_vehicle_in_storage 接口请求失败" + resp.getMessage();; + } + return true; + } else { + message = RequestMethodEnum.getName("apply_force_take_full_vehicle_in_storage") + "apply_force_take_full_vehicle_in_storage 设备无货未请求LMS..."; + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message)); + return false; + } + } + + /** + * 扫码成功申请 + * + * @param + */ + public synchronized boolean barcode_success_apply() { + if(move > 0) { + ApplyTaskRequest request = new ApplyTaskRequest(); + request.setDevice_code(this.getDevice_code()); + request.setRequest_medthod_code(Thread.currentThread().getStackTrace()[1].getMethodName()); + request.setRequest_medthod_name(RequestMethodEnum.getName(Thread.currentThread().getStackTrace()[1].getMethodName())); + request.setWeight(String.valueOf(weight)); + request.setVehicle_code(String.valueOf(barcode)); + ApplyTaskResponse resp = JSON.toJavaObject(JSONObject.parseObject(acsToWmsService.applyTask(request)),ApplyTaskResponse.class); + message = RequestMethodEnum.getName("barcode_success_apply") + "barcode_success_apply 接口请求LMS..."; + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "参数:" + JSON.toJSONString(request))); + + if (resp.getCode() == 200) { + Map map = new LinkedHashMap<>(); + map.put("to_command",200); + this.writing(map); + this.setRequireSucess(true); + message = RequestMethodEnum.getName("barcode_success_apply") + "barcode_success_apply 接口请求成功" + resp.getMessage(); + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "返回参数:" + JSON.toJSONString(resp))); + } else { + Map map = new LinkedHashMap<>(); + map.put("to_command",400); + this.writing(map); + message = RequestMethodEnum.getName("barcode_success_apply") + "barcode_success_apply 接口请求失败" + resp.getMessage(); + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "返回参数:" + JSON.toJSONString(resp))); + } + return true; + } else { + message = RequestMethodEnum.getName("barcode_success_apply") + "barcode_success_apply 设备无货未请求LMS..."; + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message)); + return false; + } + } + + /** + * 获取组盘信息 + * + * @param + */ + public synchronized boolean get_vehicle_info() { + if(move > 0) { + ApplyTaskRequest request = new ApplyTaskRequest(); + request.setDevice_code(this.getDevice_code()); + request.setRequest_medthod_code(Thread.currentThread().getStackTrace()[1].getMethodName()); + request.setRequest_medthod_name(RequestMethodEnum.getName(Thread.currentThread().getStackTrace()[1].getMethodName())); + request.setWeight(String.valueOf(weight)); + request.setVehicle_code(String.valueOf(barcode)); + ApplyTaskResponse resp = JSON.toJavaObject(JSONObject.parseObject(acsToWmsService.applyTask(request)),ApplyTaskResponse.class); + message = RequestMethodEnum.getName("get_vehicle_info") + "get_vehicle_info 接口请求LMS..."; + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "参数:" + JSON.toJSONString(request))); + + if (resp.getCode() == 200) { + Map map = new LinkedHashMap<>(); + map.put("to_command",200); + this.writing(map); + this.setRequireSucess(true); + } else { + Map map = new LinkedHashMap<>(); + map.put("to_command",400); + this.writing(map); + message = RequestMethodEnum.getName("get_vehicle_info") + "get_vehicle_info 接口请求失败" + resp.getMessage();; + } + return true; + } else { + message = RequestMethodEnum.getName("get_vehicle_info") + "get_vehicle_info 设备无货未请求LMS..."; + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message)); + return false; + } + + } + + /** + * 强制去包装-不包装 + */ + public synchronized boolean force_no_package() { + if(move > 0) { + ApplyTaskRequest request = new ApplyTaskRequest(); + request.setDevice_code(this.getDevice_code()); + request.setRequest_medthod_code(Thread.currentThread().getStackTrace()[1].getMethodName()); + request.setRequest_medthod_name(RequestMethodEnum.getName(Thread.currentThread().getStackTrace()[1].getMethodName())); + request.setWeight(String.valueOf(weight)); + request.setVehicle_code(String.valueOf(barcode)); + ApplyTaskResponse resp = JSON.toJavaObject(JSONObject.parseObject(acsToWmsService.applyTask(request)),ApplyTaskResponse.class); + message = RequestMethodEnum.getName("force_no_package") + "force_no_package 接口请求LMS..."; + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "参数:" + JSON.toJSONString(request))); + + if (resp.getCode() == 200) { + Map map = new LinkedHashMap<>(); + map.put("to_command",200); + this.writing(map); + this.setRequireSucess(true); + } else { + Map map = new LinkedHashMap<>(); + map.put("to_command",400); + this.writing(map); + message = RequestMethodEnum.getName("force_no_package") + "force_no_package 接口请求失败" + resp.getMessage();; + } + return true; + } else { + message = RequestMethodEnum.getName("force_no_package") + "force_no_package 设备无货未请求LMS..."; + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message)); + return false; + } + } + + + /** + * 申请贴标 + */ + public synchronized boolean apply_labelling() { + if(move > 0) { + ApplyTaskRequest request = new ApplyTaskRequest(); + request.setDevice_code(this.getDevice_code()); + request.setRequest_medthod_code(Thread.currentThread().getStackTrace()[1].getMethodName()); + request.setRequest_medthod_name(RequestMethodEnum.getName(Thread.currentThread().getStackTrace()[1].getMethodName())); + request.setWeight(String.valueOf(weight)); + request.setVehicle_code(String.valueOf(barcode)); + ApplyTaskResponse resp = JSON.toJavaObject(JSONObject.parseObject(acsToWmsService.applyTask(request)),ApplyTaskResponse.class); + message = RequestMethodEnum.getName("apply_labelling") + "apply_labelling 接口请求LMS..."; + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "参数:" + JSON.toJSONString(request))); + + if (resp.getCode() == 200) { + Map map = new LinkedHashMap<>(); + map.put("to_command",200); + this.writing(map); + this.setRequireSucess(true); + } else { + Map map = new LinkedHashMap<>(); + map.put("to_command",400); + this.writing(map); + message = RequestMethodEnum.getName("apply_labelling") + "apply_labelling 接口请求失败" + resp.getMessage();; + } + return true; + } else { + message = RequestMethodEnum.getName("apply_labelling") + "apply_labelling 设备无货未请求LMS..."; + //lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message)); + return false; + } + } +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/paint_conveyor/ItemProtocol.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/paint_conveyor/ItemProtocol.java deleted file mode 100644 index 8707e77..0000000 --- a/acs/nladmin-system/nlsso-server/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/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/paint_conveyor/PaintConveyorDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/paint_conveyor/PaintConveyorDeviceDriver.java deleted file mode 100644 index da676d4..0000000 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/paint_conveyor/PaintConveyorDeviceDriver.java +++ /dev/null @@ -1,301 +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.domain.Device; -import org.nl.acs.device.service.DeviceService; -import org.nl.acs.device_driver.DeviceDriver; -import org.nl.acs.device_driver.RouteableDeviceDriver; -import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; -import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; -import org.nl.acs.ext.wms.service.AcsToWmsService; -import org.nl.acs.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.DeviceAppService; -import org.nl.acs.route.service.RouteLineService; -import org.nl.acs.task.service.TaskService; -import org.nl.system.service.param.ISysParamService; -import org.nl.config.SpringContextHolder; -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 - ISysParamService paramService = SpringContextHolder.getBean(ISysParamService.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/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor/SiemensConveyorDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor/SiemensConveyorDeviceDriver.java index 6a75b65..93ed7ad 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor/SiemensConveyorDeviceDriver.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor/SiemensConveyorDeviceDriver.java @@ -21,8 +21,8 @@ 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.data.one.ApplyLabelingAndBindingRequest; +import org.nl.acs.ext.wms.data.one.ApplyLabelingAndBindingResponse; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.instruction.domain.Instruction; import org.nl.acs.instruction.service.InstructionService; diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_ckk/SiemensConveyorCkkDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_ckk/SiemensConveyorCkkDeviceDriver.java index b036f34..7e599e8 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_ckk/SiemensConveyorCkkDeviceDriver.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_ckk/SiemensConveyorCkkDeviceDriver.java @@ -21,8 +21,8 @@ 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.data.one.ApplyLabelingAndBindingRequest; +import org.nl.acs.ext.wms.data.one.ApplyLabelingAndBindingResponse; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.instruction.domain.Instruction; import org.nl.acs.instruction.service.InstructionService; diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_labeling/SiemensConveyorLabelingDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_labeling/SiemensConveyorLabelingDeviceDriver.java index 04eb215..3e9898e 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_labeling/SiemensConveyorLabelingDeviceDriver.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_labeling/SiemensConveyorLabelingDeviceDriver.java @@ -19,8 +19,8 @@ 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.data.one.ApplyLabelingAndBindingRequest; +import org.nl.acs.ext.wms.data.one.ApplyLabelingAndBindingResponse; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.instruction.domain.Instruction; import org.nl.acs.instruction.service.InstructionService; diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/standard_autodoor/StandardAutodoorDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/standard_autodoor/StandardAutodoorDeviceDriver.java index f0cf696..ad4421d 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/standard_autodoor/StandardAutodoorDeviceDriver.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/standard_autodoor/StandardAutodoorDeviceDriver.java @@ -5,8 +5,7 @@ import lombok.Data; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.domain.Device; -import org.nl.acs.device_driver.RequestMethodEnum; -import org.nl.acs.ext.wms.data.feedBackTaskStatus.FeedBackTaskStatusRequest; +import org.nl.acs.ext.wms.data.one.feedBackTaskStatus.FeedBackTaskStatusRequest; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.utils.ReadUtil; import org.nl.acs.device.service.DeviceService; @@ -18,7 +17,6 @@ import org.nl.acs.route.service.RouteLineService; import org.nl.acs.task.service.TaskService; import org.nl.config.SpringContextHolder; import org.openscada.opc.lib.da.Server; -import org.springframework.beans.factory.annotation.Autowired; import java.util.Date; import java.util.HashMap; diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/standard_inspect_site/ItemProtocol.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/standard_inspect_site/ItemProtocol.java index 7b9fc6f..592ca4a 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/standard_inspect_site/ItemProtocol.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/standard_inspect_site/ItemProtocol.java @@ -16,7 +16,6 @@ public class ItemProtocol { 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"; @@ -50,9 +49,6 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_error); } - public int getTask() { - return this.getOpcIntegerValue(item_task); - } public int getMaterialType() { return this.getOpcIntegerValue(item_material_type); @@ -99,8 +95,7 @@ public class ItemProtocol { list.add(new ItemDto(item_mode, "工作状态", "DB600.B2", Boolean.valueOf(true))); list.add(new ItemDto(item_move, "光电开关信号", "DB600.B3")); list.add(new ItemDto(item_action, "取放信号", "DB600.B4")); - list.add(new ItemDto(item_task, "任务号", "DB600.D6")); - list.add(new ItemDto(item_material_type, "任务号", "DB600.D6")); + list.add(new ItemDto(item_material_type, "物料类型", "DB600.D6")); list.add(new ItemDto(item_error, "报警信号", "DB600.B7")); list.add(new ItemDto(item_barcode, "条码", "DB600.D8")); return list; @@ -109,8 +104,6 @@ public class ItemProtocol { public static List getWriteableItemDtos() { ArrayList list = new ArrayList(); list.add(new ItemDto(item_to_command, "作业命令", "DB601.W2", Boolean.valueOf(true))); - list.add(new ItemDto(item_to_target, "目标站", "DB601.W4")); - list.add(new ItemDto(item_to_task, "任务号", "DB601.D8")); return list; } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/standard_inspect_site/StandardInspectSiteDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/standard_inspect_site/StandardInspectSiteDeviceDriver.java index 11884d3..2458386 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/standard_inspect_site/StandardInspectSiteDeviceDriver.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/standard_inspect_site/StandardInspectSiteDeviceDriver.java @@ -14,13 +14,11 @@ import org.nl.acs.device_driver.RequestMethodEnum; 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.feedBackTaskStatus.FeedBackTaskStatusRequest; +import org.nl.acs.ext.wms.data.one.feedBackTaskStatus.FeedBackTaskStatusRequest; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.instruction.domain.Instruction; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.monitor.DeviceStageMonitor; -import org.nl.acs.opc.DeviceAppService; -import org.nl.acs.opc.DeviceAppServiceImpl; import org.nl.acs.opc.WcsConfig; import org.nl.acs.route.service.RouteLineService; import org.nl.acs.route.service.dto.RouteLineDto; @@ -32,7 +30,6 @@ import org.nl.acs.utils.ConvertUtil; import org.nl.common.utils.CodeUtil; import org.nl.config.SpringContextHolder; import org.openscada.opc.lib.da.Server; -import org.springframework.beans.factory.annotation.Autowired; import java.util.Date; import java.util.HashMap; @@ -146,16 +143,19 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imp public void execute() { String message = null; try { - String device_code = this.getDeviceCode(); + devicecode = this.getDeviceCode(); mode = this.itemProtocol.getMode(); error = this.itemProtocol.getError(); move = this.itemProtocol.getMove(); - task = this.itemProtocol.getTask(); hasGoods = this.itemProtocol.getMove(); action = this.itemProtocol.getAction(); material_type = this.itemProtocol.getMaterialType(); + barcode=this.itemProtocol.getBarcode(); if (mode != last_mode) { this.setRequireSucess(false); + if(mode==2){ + this.writing(0); + } } if (move != last_move) { } @@ -196,25 +196,25 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imp break; case 4: //叫料 - if (move==0){ + if (move==0 && !requireSucess){ apply(4); } break; case 5: //满料出库 - if(move==1){ + if(move==1 && !requireSucess){ apply(5); } break; case 6: //申请空盘 - if (move==0){ + if (move==0 && !requireSucess){ apply(6); } break; case 7: //空托盘出库 - if(move==1){ + if(move==1 && !requireSucess){ apply(7); } break; @@ -238,6 +238,7 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imp last_move = move; last_task = task; last_material_type = material_type; + last_barcode=barcode; } @@ -442,8 +443,9 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imp this.time = date; FeedBackTaskStatusRequest request = new FeedBackTaskStatusRequest(); request.setDevice_code(devicecode); + request.setMaterial_type(String.valueOf(material_type)); request.setVehicle_code(String.valueOf(barcode)); - if (devicecode.startsWith("TBX")&&type==5) { + if (devicecode.startsWith("TBX")&&type==5&&barcode>0) { //满架下料 request.setRequest_medthod_code(RequestMethodEnum.apply_mjxl.getCode()); request.setRequest_medthod_name(RequestMethodEnum.apply_mjxl.getName()); @@ -455,15 +457,15 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imp //空托盘出库,包片机和销售出库空位都可以 request.setRequest_medthod_code(RequestMethodEnum.apply_kghjrk.getCode()); request.setRequest_medthod_name(RequestMethodEnum.apply_kghjrk.getName()); - }else if(devicecode.startsWith("BP")){ + }else if(devicecode.startsWith("BP")&&material_type>0){ request.setRequest_medthod_code(RequestMethodEnum.apply_bpsl.getCode()); request.setRequest_medthod_name(RequestMethodEnum.apply_bpsl.getName()); } String resp = acsToWmsService.applyTask(request); JSONObject res_jo = JSONObject.parseObject(resp); - if (StrUtil.equals(res_jo.getString("status"), "200")) { + if (StrUtil.equals(res_jo.getString("code"), "200")) { this.writing(type); - this.setSucess(true); + this.setRequireSucess(true); log.info("acs申请任务", this.devicecode, "满盅入库任务申请成功!"); }else{ this.writing(99); diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java index 5935872..9b93ce4 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java @@ -126,7 +126,7 @@ public class StandardOrdinarySiteDeviceDriver extends AbstractDeviceDriver imple if (ObjectUtil.isNotEmpty(inst)) { inst.setExecute_status("1"); instructionService.update(inst); - byte[] data = agvService.sendAgvOneModeInst(agvphase, index, 0); + byte[] data = agvService.sendAgvOneModeInst(agvphase, index, 0,0,0,0,0); agvphase = 0; index = 0; inst = null; @@ -141,7 +141,7 @@ public class StandardOrdinarySiteDeviceDriver extends AbstractDeviceDriver imple if (ObjectUtil.isNotEmpty(inst)) { inst.setExecute_status("2"); instructionService.update(inst); - byte[] data = agvService.sendAgvOneModeInst(agvphase, index, 0); + byte[] data = agvService.sendAgvOneModeInst(agvphase, index, 0,0,0,0,0); // OneNDCSocketConnectionAutoRun.write(data); agvphase = 0; index = 0; @@ -157,7 +157,7 @@ public class StandardOrdinarySiteDeviceDriver extends AbstractDeviceDriver imple if (ObjectUtil.isNotEmpty(inst)) { inst.setExecute_status("5"); instructionService.update(inst); - byte[] data = agvService.sendAgvOneModeInst(agvphase, index, 0); + byte[] data = agvService.sendAgvOneModeInst(agvphase, index, 0,0,0,0,0); // OneNDCSocketConnectionAutoRun.write(data); agvphase = 0; index = 0; @@ -172,7 +172,7 @@ public class StandardOrdinarySiteDeviceDriver extends AbstractDeviceDriver imple if (ObjectUtil.isNotEmpty(inst)) { inst.setExecute_status("6"); instructionService.update(inst); - byte[] data = agvService.sendAgvOneModeInst(agvphase, index, 0); + byte[] data = agvService.sendAgvOneModeInst(agvphase, index, 0,0,0,0,0); // OneNDCSocketConnectionAutoRun.write(data); agvphase = 0; index = 0; diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/driver/AbstractOpcDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/driver/AbstractOpcDeviceDriver.java index 9e58407..717c1b9 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/driver/AbstractOpcDeviceDriver.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/driver/AbstractOpcDeviceDriver.java @@ -1,37 +1,148 @@ package org.nl.acs.device_driver.driver; -import org.nl.acs.ext.wms.data.JsonUtl; -import org.nl.acs.opc.OpcConfig; -import org.nl.acs.opc.OpcServerService; -import org.nl.acs.opc.OpcServerServiceImpl; +import org.nl.acs.opc.*; import org.nl.acs.udw.UnifiedDataAccessor; import org.nl.acs.udw.UnifiedDataAccessorFactory; - -import org.nl.common.exception.BadRequestException; +import org.nl.acs.udw.UnifiedDataAppService; import org.nl.config.SpringContextHolder; +import org.openscada.opc.lib.da.Group; +import org.openscada.opc.lib.da.Item; +import org.openscada.opc.lib.da.ItemState; +import org.springframework.beans.factory.annotation.Autowired; -import java.util.Date; -import java.util.Iterator; -import java.util.Map; +import java.util.*; public class AbstractOpcDeviceDriver extends AbstractDeviceDriver implements OpcDeviceDriver { UnifiedDataAccessor opcUdw; + private OpcServerService opcServerService = SpringContextHolder.getBean(OpcServerService.class); + + public AbstractOpcDeviceDriver() { + this.opcUdw = UnifiedDataAccessorFactory.getAccessor(OpcConfig.udw_opc_value_key); + } + + private Date sendTime; private String last_items; private int noLog_sendTimeOut; private Date noLog_sendTime; private String noLog_last_items; - public AbstractOpcDeviceDriver() { - this.opcUdw = UnifiedDataAccessorFactory.getAccessor(OpcConfig.udw_opc_value_key); - } - @Override public UnifiedDataAccessor getOpcValueAccessor() { return this.opcUdw; } + + public void checkcontrol(Map itemValues) throws Exception { + Group group = opcServerService.getServer(this.getOpcServer()); + Map write = new HashMap(); + Map readitems = new LinkedHashMap(); + List itemsString = new ArrayList(); + itemsString = new ArrayList<> (itemValues.keySet()); + Iterator is = itemsString.iterator(); + + while (is.hasNext()) { + String string = (String) is.next(); + try { + readitems.put(string, group.addItem(string)); + } catch (Exception e) { + e.printStackTrace(); + } + } + int i = 0; + while(true) { + //下发信号 + try{ + if(i == 0){ + control( itemValues); + } else { + controlByNewConn( itemValues); + } + + } catch (Exception e){ + e.printStackTrace(); + } + Map read = new HashMap(); + Map itemStatus = null; + boolean check = true; + try{ + if(i>0){ + group = opcServerService.getServer(this.getOpcServer()); + itemsString = new ArrayList<> (itemValues.keySet()); + Iterator nis = itemsString.iterator(); + + while (nis.hasNext()) { + String string = (String) nis.next(); + try { + readitems.put(string, group.addItem(string)); + } catch (Exception e) { + e.printStackTrace(); + } + } + itemStatus = group.read(true, (Item[])readitems.values().toArray(new Item[0])); + + } else { + itemStatus = group.read(true, (Item[])readitems.values().toArray(new Item[0])); + } + Set items = itemStatus.keySet(); + Iterator var15 = items.iterator(); + while(var15.hasNext()) { + Item item = (Item)var15.next(); + ItemState itemState = (ItemState)itemStatus.get(item); + Object value = OpcUtl.getValue(item, itemState); + read.put(item.getId(), value); + } + + Iterator var24 = itemsString.iterator(); + + while(var24.hasNext()) { + String itemString = (String)var24.next(); + if (!ObjectUtl.isEquals(itemValues.get(itemString), JsonUtl.parse(read.get(itemString)))) { + check = false; + } + } + } catch (Exception e){ + e.printStackTrace(); + check = false; + } + + if (check) { + return; + } + + if (i > 0) { + ThreadUtl.sleep(300L); + } + + if (i > 3) { +// log.info("写入次数超过3次而失败"); + throw new RuntimeException("写入次数超过3次而失败"); + } + ++i; + } + } + + + public boolean controlByNewConn(Map itemValues) { + + Iterator> it = itemValues.entrySet().iterator(); + + ItemValue p2[]; + p2 = new ItemValue[itemValues.size()]; + int i=0; + while (it.hasNext()) { + Map.Entry entry = it.next(); + System.out.println("即将写入值:"+entry.getKey() + ":" + entry.getValue()); + p2[i] = new ItemValue(); + p2[i].setItem_code(entry.getKey()); + p2[i].setItem_value(entry.getValue()); + i++; + } + + return this.controlByNewConn(p2); + } + public boolean control(Map itemValues) { Iterator> it = itemValues.entrySet().iterator(); @@ -48,7 +159,7 @@ public class AbstractOpcDeviceDriver extends AbstractDeviceDriver implements Opc i++; } - return this.control(p2); + return this.control(p2); } @@ -70,11 +181,13 @@ public class AbstractOpcDeviceDriver extends AbstractDeviceDriver implements Opc sb.append(":"); sb.append(JsonUtl.parseWithoutException(udw_value)); sb.append(";"); -// if (!need_write && !UnifiedDataAppService.isEquals(udw_value, write_value)) { -// need_write = true; -// } + if (!need_write && !UnifiedDataAppService.isEquals(udw_value, write_value)) { + need_write = true; + } else { + //log.warn("下发信号点位{} 当前写入值:{} 与系统内存值:{} 相同,不再写入 ", code, write_value, udw_value ); + } } - need_write = true; + // need_write = true; if (need_write) { Date date = new Date(); @@ -85,9 +198,9 @@ public class AbstractOpcDeviceDriver extends AbstractDeviceDriver implements Opc this.last_items = this_items; this.sendTime = date; - /* this.execute_log.setResource(this.getDevice().getCode(), this.getDevice().getName()); - this.execute_log.log("原始记录{}->变更为{}", new Object[]{sb, this_items}); - OpcServerService opcServerService = OpcServerFactory.getOpcServerService();*/ + /* this.execute_log.setResource(this.getDevice().getCode(), this.getDevice().getName()); + this.execute_log.log("原始记录{}->变更为{}", new Object[]{sb, this_items}); + OpcServerService opcServerService = OpcServerFactory.getOpcServerService();*/ OpcServerService opcServerService = SpringContextHolder.getBean(OpcServerServiceImpl.class); @@ -106,7 +219,63 @@ public class AbstractOpcDeviceDriver extends AbstractDeviceDriver implements Opc return true; } else { - throw new BadRequestException("下发 无内容"); + throw new RuntimeException("下发 无内容"); + } + } + + + public boolean controlByNewConn(ItemValue[] itemValues) { + if (itemValues != null && itemValues.length != 0) { + String this_items = JsonUtl.parseWithoutException(itemValues); + boolean need_write = false; + StringBuilder sb = new StringBuilder(); + ItemValue[] var5 = itemValues; + int var6 = itemValues.length; +// for (int var7 = 0; var7 < var6; ++var7) { +// ItemValue itemValue = var5[var7]; +// String code = itemValue.getItem_code(); +// Object udw_value = this.getUdwValue(code); +// Object write_value = itemValue.getItem_value(); +// sb.append(code); +// sb.append(":"); +// sb.append(JsonUtl.parseWithoutException(udw_value)); +// sb.append(";"); +// if (!need_write && !UnifiedDataAppService.isEquals(udw_value, write_value)) { +// need_write = true; +// } else { +// log.warn("下发信号点位{} 当前写入值:{} 与系统内存值:{} 相同,不再写入 ", code, write_value, udw_value ); +// } +// } + need_write = true; + if (need_write) { + Date date = new Date(); + /*if (StringUtl.isEqual(this_items, this.last_items) && date.getTime() - this.sendTime.getTime() < (long) WcsConfig.opc_write_repeat_check) { + log.trace("发送时间因为小于{}毫秒,而被无视", WcsConfig.opc_write_repeat_check); + return false; + }*/ + + this.last_items = this_items; + this.sendTime = date; + OpcServerService opcServerService = SpringContextHolder.getBean(OpcServerServiceImpl.class); + + opcServerService.writeIntegerByNewConn(this.getOpcServer(), itemValues); + + + UnifiedDataAccessor opcValueAccessor = this.getOpcValueAccessor(); + ItemValue[] var17 = itemValues; + int var18 = itemValues.length; + + for (int var19 = 0; var19 < var18; ++var19) { + ItemValue itemValue = var17[var19]; + String code = itemValue.getItem_code(); + Object value = itemValue.getItem_value(); + opcValueAccessor.setValue(code, value); + } + } + + return true; + } else { + throw new RuntimeException("下发 无内容"); } } } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applySignalStaus/ApplySignalStatusRequest.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applySignalStaus/ApplySignalStatusRequest.java new file mode 100644 index 0000000..1474925 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applySignalStaus/ApplySignalStatusRequest.java @@ -0,0 +1,24 @@ +package org.nl.acs.ext.wms.data.AcsToWmsData.applySignalStaus; + +import lombok.Data; +import org.nl.acs.ext.wms.data.BaseRequest; + +@Data +public class ApplySignalStatusRequest extends BaseRequest { + + /** + * 光电信号 0无货 1有货 + */ + private String move; + + /** + * 载具类型 + */ + private String vehicle_type; + + /** + * 是否允许 0不允许 1允许 + */ + private String action; + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applySignalStaus/ApplySignalStatusResponse.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applySignalStaus/ApplySignalStatusResponse.java new file mode 100644 index 0000000..8cd5ec7 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applySignalStaus/ApplySignalStatusResponse.java @@ -0,0 +1,10 @@ +package org.nl.acs.ext.wms.data.AcsToWmsData.applySignalStaus; + +import lombok.Data; +import org.nl.acs.ext.wms.data.BaseResponse; + +@Data +public class ApplySignalStatusResponse extends BaseResponse { + + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applyTask/ApplyDeviceDto.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applyTask/ApplyDeviceDto.java new file mode 100644 index 0000000..059ffc1 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applyTask/ApplyDeviceDto.java @@ -0,0 +1,28 @@ +package org.nl.acs.ext.wms.data.AcsToWmsData.applyTask; + +import lombok.Data; + +@Data +public class ApplyDeviceDto { + + /** + * 设备编码 + */ + private String device_code; + + /** + * 数量 + */ + private String qty; + + /** + * 载具号 + */ + private String vehicle_code; + + /** + * 载具类型 + */ + private String vehicle_type; + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applyTask/ApplyTaskRequest.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applyTask/ApplyTaskRequest.java new file mode 100644 index 0000000..62f908d --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applyTask/ApplyTaskRequest.java @@ -0,0 +1,57 @@ +package org.nl.acs.ext.wms.data.AcsToWmsData.applyTask; + +import lombok.Data; +import org.nl.acs.ext.wms.data.BaseRequest; +import org.nl.acs.ext.wms.data.PalletizeDto; + +import java.util.List; + +@Data +public class ApplyTaskRequest extends BaseRequest { + + /** + * 载具号 + */ + private String vehicle_code; + + /** + * 载具类型 + */ + private String vehicle_type; + + /** + * 重量 + */ + private String weight; + + /** + * 碾次 + */ + private String mix_mum; + + /** + * 工单号 + */ + private String order_code; + + /** + * 物料 + */ + private String material_code; + + /** + * 数量 + */ + private String qty; + + /** + * 砖型 + */ + private PalletizeDto palletizeDto; + + /** + * 关联设备属性 + */ + private List list; + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applyTask/ApplyTaskResponse.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applyTask/ApplyTaskResponse.java new file mode 100644 index 0000000..b8645c3 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applyTask/ApplyTaskResponse.java @@ -0,0 +1,36 @@ +package org.nl.acs.ext.wms.data.AcsToWmsData.applyTask; + +import lombok.Data; +import org.nl.acs.ext.wms.data.BaseResponse; + +@Data +public class ApplyTaskResponse extends BaseResponse { + + /** + * 是否静置完成 1完成 + */ + private String is_standing_finish; + + /** + * 是否优先包装 + */ + private String is_package; + + /** + * 碾次 + */ + private String mix_num; + + private String weight; + + /** + * 贴标新鲜 + */ + private String label_message; + + /** + * 是否码满规定托盘数 + */ + private int is_satisfy; + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/feedBackSplitPalletStation/feedBackSplitPalletStationRequest.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/feedBackSplitPalletStation/feedBackSplitPalletStationRequest.java new file mode 100644 index 0000000..32e4909 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/feedBackSplitPalletStation/feedBackSplitPalletStationRequest.java @@ -0,0 +1,42 @@ +package org.nl.acs.ext.wms.data.AcsToWmsData.feedBackSplitPalletStation; + +import lombok.Data; +import org.nl.acs.ext.wms.data.BaseRequest; + +@Data +public class feedBackSplitPalletStationRequest extends BaseRequest { + + /** + * 取货点位 + */ + private String get_station; + + /** + * 放货点位 + */ + private String put_station; + + + /** + * 取货点位载具号 + */ + private String get_station_vehicle_code; + + + /** + * 放货点位载具号 + */ + private String put_station_vehicle_code; + + /** + * 取货点当前数量 + */ + private String get_station_qty; + + /** + * 放货点当前数量 + */ + private String put_station_qty; + + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/feedBackSplitPalletStation/feedBackSplitPalletStationResponse.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/feedBackSplitPalletStation/feedBackSplitPalletStationResponse.java new file mode 100644 index 0000000..3e6f688 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/feedBackSplitPalletStation/feedBackSplitPalletStationResponse.java @@ -0,0 +1,7 @@ +package org.nl.acs.ext.wms.data.AcsToWmsData.feedBackSplitPalletStation; + +import org.nl.acs.ext.wms.data.BaseResponse; + +public class feedBackSplitPalletStationResponse extends BaseResponse { + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/getVehicle/GetPalletizeRequest.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/getVehicle/GetPalletizeRequest.java new file mode 100644 index 0000000..6ab62d3 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/getVehicle/GetPalletizeRequest.java @@ -0,0 +1,14 @@ +package org.nl.acs.ext.wms.data.AcsToWmsData.getVehicle; + +import lombok.Data; +import org.nl.acs.ext.wms.data.BaseRequest; + +@Data +public class GetPalletizeRequest extends BaseRequest { + + /** + * 载具号 + */ + private String vehicle_code; + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/getVehicle/GetPalletizeResponse.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/getVehicle/GetPalletizeResponse.java new file mode 100644 index 0000000..cdc4460 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/getVehicle/GetPalletizeResponse.java @@ -0,0 +1,15 @@ +package org.nl.acs.ext.wms.data.AcsToWmsData.getVehicle; + +import lombok.Data; +import org.nl.acs.ext.wms.data.BaseResponse; +import org.nl.acs.ext.wms.data.PalletizeDto; +@Data +public class GetPalletizeResponse extends BaseResponse { + + private PalletizeDto palletizeDto; + + /** + * 刚托盘上的砖块数量 + */ + private int material_qty; +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/grab/GrabRequest.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/grab/GrabRequest.java new file mode 100644 index 0000000..927f6d3 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/grab/GrabRequest.java @@ -0,0 +1,93 @@ +package org.nl.acs.ext.wms.data.AcsToWmsData.grab; + + +import lombok.Data; +import org.nl.acs.ext.wms.data.BaseRequest; + +/** + * 反馈单次抓取 + */ +@Data +public class GrabRequest extends BaseRequest { + + /** + * 抓取位 + */ + private String get_station; + + /** + * 放置位 + */ + private String put_station; + + /** + * 是否合格 + */ + private String is_qualified; + + /** + * 激光标刻码 + */ + private String laser_marking_code; + + + /** + * 碾次 + */ + private String grinding_number; + + /** + * 高度1 + */ + private String height1; + + /** + * 高度2 + */ + private String height2; + + /** + * 高度3 + */ + private String height3; + + /** + * 高度4 + */ + private String height4; + + /** + * 宽度1 + */ + private String width1; + + /** + * 宽度2 + */ + private String width2; + + /** + * 长度 + */ + private String len; + + /** + * 体积 + */ + private String volume; + + /** + * 平面度 + */ + private String flatness; + + /** + * 缺陷个数 + */ + private String unqualified_qty; + + /** + * 重量 + */ + private String weight; +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/grab/GrabResponse.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/grab/GrabResponse.java new file mode 100644 index 0000000..43b9dc7 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/grab/GrabResponse.java @@ -0,0 +1,9 @@ +package org.nl.acs.ext.wms.data.AcsToWmsData.grab; + +import org.nl.acs.ext.wms.data.BaseResponse; + +public class GrabResponse extends BaseResponse { + + +} + diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/grab_place_station/GrabPlaceStationRequest.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/grab_place_station/GrabPlaceStationRequest.java new file mode 100644 index 0000000..604e698 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/grab_place_station/GrabPlaceStationRequest.java @@ -0,0 +1,45 @@ +package org.nl.acs.ext.wms.data.AcsToWmsData.grab_place_station; + + +import lombok.Data; +import org.nl.acs.ext.wms.data.BaseRequest; + +/** + * 当前抓取放置工位切换 + */ +@Data +public class GrabPlaceStationRequest extends BaseRequest { + + /** + * 抓取位 + */ + private String get_station; + + /** + * 放置位 + */ + private String put_station; + + /** + * 取货点位载具号 + */ + private String get_station_vehicle_code; + + + /** + * 放货点位载具号 + */ + private String put_station_vehicle_code; + + /** + * 取货点当前数量 + */ + private String get_station_qty; + + /** + * 放货点当前数量 + */ + private String put_station_qty; + + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/grab_place_station/GrabPlaceStationResponse.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/grab_place_station/GrabPlaceStationResponse.java new file mode 100644 index 0000000..b5c7c24 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/grab_place_station/GrabPlaceStationResponse.java @@ -0,0 +1,10 @@ +package org.nl.acs.ext.wms.data.AcsToWmsData.grab_place_station; + +import org.nl.acs.ext.wms.data.BaseResponse; + + +public class GrabPlaceStationResponse extends BaseResponse { + + +} + diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/BaseRequest.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/BaseRequest.java index a35e7dc..eb270f2 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/BaseRequest.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/BaseRequest.java @@ -53,16 +53,5 @@ public class BaseRequest { private Map parameters = new HashMap(); - /** - * 任务类型 - */ - private String type; - - /** - * 设备状态 - */ - private String state; - - } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/BaseResponse.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/BaseResponse.java index 0920b03..5e8218b 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/BaseResponse.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/BaseResponse.java @@ -1,52 +1,42 @@ package org.nl.acs.ext.wms.data; -import com.alibaba.fastjson.JSONArray; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import java.util.HashMap; import java.util.Map; @Data +@Builder +@NoArgsConstructor +@AllArgsConstructor public class BaseResponse { - private Integer status = 0; + /** + * 请求号 + */ + private String requestNo; + + /** + * 响应时间 + */ + private String responseDate; + + /** + * 结果 200成功 + */ + private int code; + + /** + * 信息 + */ private String message; - private JSONArray errArr = new JSONArray(); + + private Map parameters = new HashMap(); - public BaseResponse() { - } - public Integer getstatus() { - return this.status; - } - - public void setStatus(Integer status) { - this.status = status; - } - - public String getMessage() { - return this.message; - } - - public void setMessage(String message) { - this.message = message; - } - - public Map getParameters() { - return this.parameters; - } - - public void setParameters(Map parameters) { - this.parameters = parameters; - } - - public Object getParameter(String key) { - return this.parameters.get(key); - } - - public void putParameter(String key, String object) { - this.parameters.put(key, object); - } } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/PalletizeDto.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/PalletizeDto.java new file mode 100644 index 0000000..ec9e411 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/PalletizeDto.java @@ -0,0 +1,120 @@ +package org.nl.acs.ext.wms.data; + +import lombok.Data; + +/** + * @Author: lyd + * @Description: 垛型参数 + * @Date: 2023/7/18 + */ +@Data +public class PalletizeDto { + /** 产品编号 */ + private String product_code; + /** A长边 */ + private String AlongSide; + /** B短边 */ + private String BshortSide; + /** H梯形高 */ + private String Htrapezoidal; + /** W厚度 */ + private String Wthickness; + /** 当前垛盘数 */ + private String tray_qty; + /** 垛盘高度 */ + private String tray_high; + /** 垛型类别 */ + private String crib_category; + /** 码垛X1行 */ + private String palletX1_line; + /** 码垛Y1列 */ + private String palletY1_row; + /** 码垛A1角度 */ + private String palletA1_angle; + /** 码垛X2行 */ + private String palletX2_line; + /** 码垛Y2列 */ + private String palletY2_row; + /** 码垛A2角度 */ + private String palletA2_angle; + /** 码垛X3行 */ + private String palletX3_line; + /** 码垛Y3列 */ + private String palletY3_row; + /** 码垛A3角度 */ + private String palletA3_angle; + /** 压垛X1行 */ + private String pressCribX1_line; + /** 压垛Y1列 */ + private String pressCribY1_row; + /** 压垛A1角度 */ + private String pressCribA1_angle; + /** 压垛X2行 */ + private String pressCribX2_line; + /** 压垛Y2列 */ + private String pressCribY2_row; + /** 压垛A2角度 */ + private String pressCribA2_angle; + /** 压垛X3行 */ + private String pressCribX3_line; + /** 压垛Y3列 */ + private String pressCribY3_row; + /** 压垛A3角度 */ + private String pressCribA3_angle; + /** Z轴偏移 */ + private String Zoffset; + /** 码垛层数 */ + private String pallet_layerQty; + /** 压垛层数 */ + private String pressCrib_layerQty; + /** 码层X1间隔 */ + private String codeLayerX1_interval; + /** 码层Y1间隔 */ + private String codeLayerY1_interval; + /** 码层X2间隔 */ + private String codeLayerX2_interval; + /** 码层Y2间隔 */ + private String codeLayerY2_interval; + /** 码层X3间隔 */ + private String codeLayerX3_interval; + /** 码层Y3间隔 */ + private String codeLayerY3_interval; + /** 码层X1偏移 */ + private String codeLayerX1_offset; + /** 码层Y1偏移 */ + private String codeLayerY1_offset; + /** 码层X2偏移 */ + private String codeLayerX2_offset; + /** 码层Y2偏移 */ + private String codeLayerY2_offset; + /** 码层X3偏移 */ + private String codeLayerX3_offset; + /** 码层Y3偏移 */ + private String codeLayerY3_offset; + /** 压层X1间隔 */ + private String pressLayerX1_interval; + /** 压层Y1间隔 */ + private String pressLayerY1_interval; + /** 压层X2间隔 */ + private String pressLayerX2_interval; + /** 压层Y2间隔 */ + private String pressLayerY2_interval; + /** 压层X3间隔 */ + private String pressLayerX3_interval; + /** 压层Y3间隔 */ + private String pressLayerY3_interval; + /** 压层X1偏移 */ + private String pressLayerX1_offset; + /** 压层Y1偏移 */ + private String pressLayerY1_offset; + /** 压层X2偏移 */ + private String pressLayerX2_offset; + /** 压层Y2偏移 */ + private String pressLayerY2_offset; + /** 压层X3偏移 */ + private String pressLayerX3_offset; + /** 压层Y3偏移 */ + private String pressLayerY3_offset; + /** 工具坐标 */ + private String tool_coordinate; +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/Resp.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/Resp.java new file mode 100644 index 0000000..c58f668 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/Resp.java @@ -0,0 +1,15 @@ +package org.nl.acs.ext.wms.data; + +import lombok.Data; + +/** + * 调用立库接口统一返回参数类 + * + * @author: geng by + * @createDate: 2022/11/24 + */ +@Data +public class Resp extends BaseResponse { + + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/cancelTask/CancelTaskRequest.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/cancelTask/CancelTaskRequest.java new file mode 100644 index 0000000..aa6e419 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/cancelTask/CancelTaskRequest.java @@ -0,0 +1,31 @@ +package org.nl.acs.ext.wms.data.WmstoAcsData.cancelTask; + +import lombok.Data; +import org.nl.acs.ext.wms.data.BaseRequest; + +import java.util.Map; + +@Data +public class CancelTaskRequest extends BaseRequest { + + /** + * 任务标识 + */ + private String ext_task_id; + + /** + * 任务编号 + */ + private String task_code; + + /** + * 载具号 + */ + String vehicle_code; + + /** + * 扩展属性 + */ + Map params; + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/cancelTask/CancelTaskResponse.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/cancelTask/CancelTaskResponse.java new file mode 100644 index 0000000..e294c01 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/cancelTask/CancelTaskResponse.java @@ -0,0 +1,9 @@ +package org.nl.acs.ext.wms.data.WmstoAcsData.cancelTask; + +import org.nl.acs.ext.wms.data.BaseResponse; + +public class CancelTaskResponse extends BaseResponse { + + + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/createOrder/CreateOrderRequest.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/createOrder/CreateOrderRequest.java new file mode 100644 index 0000000..609f331 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/createOrder/CreateOrderRequest.java @@ -0,0 +1,16 @@ +package org.nl.acs.ext.wms.data.WmstoAcsData.createOrder; + +import lombok.Data; +import org.nl.acs.ext.wms.data.BaseRequest; + +import java.util.List; + +@Data +public class CreateOrderRequest extends BaseRequest { + + /** + * 任务数组 + */ + private List list = null; + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/createOrder/CreateOrderResponse.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/createOrder/CreateOrderResponse.java new file mode 100644 index 0000000..168ea30 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/createOrder/CreateOrderResponse.java @@ -0,0 +1,12 @@ +package org.nl.acs.ext.wms.data.WmstoAcsData.createOrder; + +import com.alibaba.fastjson.JSONArray; +import lombok.Data; +import org.nl.acs.ext.wms.data.BaseResponse; + +@Data +public class CreateOrderResponse extends BaseResponse { + + private JSONArray errArr = new JSONArray(); + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/createOrder/OrderDto.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/createOrder/OrderDto.java new file mode 100644 index 0000000..144c1c4 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/createOrder/OrderDto.java @@ -0,0 +1,31 @@ +package org.nl.acs.ext.wms.data.WmstoAcsData.createOrder; + +import lombok.Data; + +@Data +public class OrderDto { + + private String workorder_code; // 工单编码 + private String device_code; // 设备编码 + private String material_code; // 半成品物料编码 - 工单物料编码 + private String product_code; // 产品代号 - 数字 + private String formula; // 配方-型号 + private String brick_code; // 砖型编码- 物料规格 + private String plan_qty; // 计划数量 + private String a; // a边 + private String b; // + private String h; + private String w; + private String size_error; // 尺寸允许误差 + private String single_weight; // 单重允许误差 + private String drawing_address; // 图纸地址 + private String standard_size_height1; // 标准尺寸1 + private String standard_size_height2; // 标准尺寸2 + private String standard_size_height3; // 标准尺寸3 + private String standard_size_height4; // 标准尺寸4 + private String standard_weight; // 标准重量 + private String detection_error; // 检测误差值 + + + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/createTask/CreateTaskRequest.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/createTask/CreateTaskRequest.java new file mode 100644 index 0000000..1ab0102 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/createTask/CreateTaskRequest.java @@ -0,0 +1,17 @@ +package org.nl.acs.ext.wms.data.WmstoAcsData.createTask; + +import lombok.Data; +import org.nl.acs.ext.wms.data.BaseRequest; +import org.nl.acs.task.service.dto.TaskDto; + +import java.util.List; + +@Data +public class CreateTaskRequest extends BaseRequest { + + /** + * 任务数组 + */ + private List list = null; + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/createTask/CreateTaskResponse.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/createTask/CreateTaskResponse.java new file mode 100644 index 0000000..071b991 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/createTask/CreateTaskResponse.java @@ -0,0 +1,12 @@ +package org.nl.acs.ext.wms.data.WmstoAcsData.createTask; + +import com.alibaba.fastjson.JSONArray; +import lombok.Data; +import org.nl.acs.ext.wms.data.BaseResponse; + +@Data +public class CreateTaskResponse extends BaseResponse { + + private JSONArray errArr = new JSONArray(); + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/putAction/PutActionRequest.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/putAction/PutActionRequest.java new file mode 100644 index 0000000..96e3e87 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/putAction/PutActionRequest.java @@ -0,0 +1,13 @@ +package org.nl.acs.ext.wms.data.WmstoAcsData.putAction; + +import lombok.Data; +import org.nl.acs.ext.wms.data.BaseRequest; + +import java.util.List; + +@Data +public class PutActionRequest extends BaseRequest { + + private List list ; + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/putAction/PutActionResponse.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/putAction/PutActionResponse.java new file mode 100644 index 0000000..6de164f --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/putAction/PutActionResponse.java @@ -0,0 +1,12 @@ +package org.nl.acs.ext.wms.data.WmstoAcsData.putAction; + +import com.alibaba.fastjson.JSONArray; +import lombok.Data; +import org.nl.acs.ext.wms.data.BaseResponse; + +@Data +public class PutActionResponse extends BaseResponse { + + private JSONArray errArr = new JSONArray(); + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/putAction/SignalData.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/putAction/SignalData.java new file mode 100644 index 0000000..cb82966 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/putAction/SignalData.java @@ -0,0 +1,12 @@ +package org.nl.acs.ext.wms.data.WmstoAcsData.putAction; + +import lombok.Data; + +@Data +public class SignalData { + + private String code; + + private String value; + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/feedBackTaskStatus/FeedBackTaskStatusResponse.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/feedBackTaskStatus/FeedBackTaskStatusResponse.java deleted file mode 100644 index 9d2e2c4..0000000 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/feedBackTaskStatus/FeedBackTaskStatusResponse.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.nl.acs.ext.wms.data.feedBackTaskStatus; - -import org.nl.acs.ext.wms.data.BaseResponse; - -public class FeedBackTaskStatusResponse extends BaseResponse { -} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/ApplyLabelingAndBindingRequest.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/ApplyLabelingAndBindingRequest.java new file mode 100644 index 0000000..02c9f91 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/ApplyLabelingAndBindingRequest.java @@ -0,0 +1,18 @@ +package org.nl.acs.ext.wms.data.one; + +import lombok.Data; + +@Data +public class ApplyLabelingAndBindingRequest extends BaseRequest { + private String vehicle_code; + private String device_code; + /** + * 1:贴标申请 + * 2:捆扎申请 + * 3:烘箱 + */ + private String type; + + private String weight; + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/ApplyLabelingAndBindingResponse.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/ApplyLabelingAndBindingResponse.java new file mode 100644 index 0000000..15d6882 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/ApplyLabelingAndBindingResponse.java @@ -0,0 +1,13 @@ +package org.nl.acs.ext.wms.data.one; + +import lombok.Data; + +import java.util.HashMap; +import java.util.Map; + +@Data +public class ApplyLabelingAndBindingResponse extends BaseResponse { + + private Map data = new HashMap(); + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/BaseRequest.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/BaseRequest.java new file mode 100644 index 0000000..985086b --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/BaseRequest.java @@ -0,0 +1,72 @@ +package org.nl.acs.ext.wms.data.one; + +import cn.hutool.core.util.IdUtil; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.nl.acs.agv.AgvUtil; + +import java.util.HashMap; +import java.util.Map; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class BaseRequest { + + /** + * 请求号:uuid 唯一,LMS需要返回对应值 + */ + private String requestNo = IdUtil.simpleUUID(); + + /** + * 请求时间 + */ + private String requestDate = AgvUtil.getDate(); + + /** + * 请求方法编号 + */ + private String request_medthod_code; + + /** + * 请求方法名称 + */ + private String request_medthod_name; + + /** + * 设备号 + */ + private String device_code; + + + /** + * 系统编号 + */ + private String systemCode; + + /** + * 扩展参数:砖型等 + */ + private Map parameters = new HashMap(); + + + /** + * 任务类型 + */ + private String type; + + /** + * 设备状态 + */ + private String state; + + /** + * 任务号 + */ + private String taskId; + + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/BaseResponse.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/BaseResponse.java new file mode 100644 index 0000000..3580e96 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/BaseResponse.java @@ -0,0 +1,52 @@ +package org.nl.acs.ext.wms.data.one; + +import com.alibaba.fastjson.JSONArray; +import lombok.Data; + +import java.util.HashMap; +import java.util.Map; + +@Data +public class BaseResponse { + + private Integer status = 0; + private String message; + private JSONArray errArr = new JSONArray(); + private Map parameters = new HashMap(); + + public BaseResponse() { + } + + public Integer getstatus() { + return this.status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public String getMessage() { + return this.message; + } + + public void setMessage(String message) { + this.message = message; + } + + public Map getParameters() { + return this.parameters; + } + + public void setParameters(Map parameters) { + this.parameters = parameters; + } + + public Object getParameter(String key) { + return this.parameters.get(key); + } + + public void putParameter(String key, String object) { + this.parameters.put(key, object); + } + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/CancelTaskRequest.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/CancelTaskRequest.java new file mode 100644 index 0000000..df20f4e --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/CancelTaskRequest.java @@ -0,0 +1,34 @@ +package org.nl.acs.ext.wms.data.one; + +import lombok.Data; + +import java.util.HashMap; +import java.util.Map; + +@Data +public class CancelTaskRequest extends BaseRequest { + + /** + * 任务编号 + */ + private String task_code; + + /** + * 载具号 + */ + String vehicle_code; + + /** + * 扩展属性 + */ + Map params = new HashMap<>(); + + @Override + public String toString() { + return "CancelTaskRequest{" + + "task_code='" + task_code + '\'' + + ", vehicle_code='" + vehicle_code + '\'' + + ", params=" + params + + '}'; + } +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/CancelTaskResponse.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/CancelTaskResponse.java new file mode 100644 index 0000000..45cd58d --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/CancelTaskResponse.java @@ -0,0 +1,7 @@ +package org.nl.acs.ext.wms.data.one; + +public class CancelTaskResponse extends BaseResponse { + + + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/CreateTaskRequest.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/CreateTaskRequest.java new file mode 100644 index 0000000..2683df9 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/CreateTaskRequest.java @@ -0,0 +1,78 @@ +package org.nl.acs.ext.wms.data.one; + +import lombok.Data; + +import java.util.HashMap; +import java.util.Map; + +@Data +public class CreateTaskRequest extends BaseRequest { + + /** + * 任务编号 + */ + private String task_id; + + /** + * 任务编号 + */ + private String task_code; + + + /** + * 取货点1 + */ + String start_device_code; + + /** + * 放货点1 + */ + String next_device_code; + + /** + * 优先级 + */ + String priority = "1"; + + /** + * 载具号 + */ + String vehicle_code; + + /** + * 载具类型 + */ + String vehicle_type; + + + /** + * 任务类型 + */ + String task_type; + + + /** + * 备注 + */ + String remark; + + /** + * 扩展属性 + */ + Map params = new HashMap<>(); + + @Override + public String toString() { + return "CreateTaskRequest{" + + "task_code='" + task_code + '\'' + + ", start_device_code='" + start_device_code + '\'' + + ", next_device_code='" + next_device_code + '\'' + + ", priority='" + priority + '\'' + + ", vehicle_code='" + vehicle_code + '\'' + + ", vehicle_type='" + vehicle_type + '\'' + + ", task_type='" + task_type + '\'' + + ", remark='" + remark + '\'' + + ", params=" + params + + '}'; + } +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/CreateTaskResponse.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/CreateTaskResponse.java new file mode 100644 index 0000000..1599e00 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/CreateTaskResponse.java @@ -0,0 +1,6 @@ +package org.nl.acs.ext.wms.data.one; + +public class CreateTaskResponse extends BaseResponse { + + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/JsonUtl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/JsonUtl.java new file mode 100644 index 0000000..a536400 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/JsonUtl.java @@ -0,0 +1,125 @@ +package org.nl.acs.ext.wms.data.one; + +import com.fasterxml.jackson.annotation.JsonInclude.Include; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.JavaType; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.module.SimpleModule; +import com.fasterxml.jackson.databind.type.TypeFactory; + +import java.io.IOException; +import java.util.List; +import java.util.Map; + +public class JsonUtl { + private static ObjectMapper objectMapper = null; + private static ObjectMapper objectMapperLog = null; + + private JsonUtl() { + } + + private static ObjectMapper init() { + ObjectMapper objectMapper = new ObjectMapper(); + SimpleModule simpleModule = new SimpleModule(); +// simpleModule.addSerializer(Enum.class, new EnumSerializer()); +// simpleModule.addSerializer(Date.class, new DateSerializer()); +// simpleModule.addDeserializer(Enum.class, new EnumDeserializer()); +// simpleModule.addDeserializer(Date.class, new DateDeserializers.DateDeserializer()); + objectMapper.registerModule(simpleModule); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + return objectMapper; + } + + public static ObjectMapper getInstance() { + if (objectMapper == null) { + Class var0 = JsonUtl.class; + synchronized(JsonUtl.class) { + if (objectMapper == null) { + objectMapper = init(); + } + } + } + + return objectMapper; + } + + public static ObjectMapper getInstanceLog() { + if (objectMapperLog == null) { + Class var0 = JsonUtl.class; + synchronized(JsonUtl.class) { + if (objectMapperLog == null) { + objectMapperLog = init(); + objectMapperLog.setSerializationInclusion(Include.NON_NULL); + } + } + } + + return objectMapperLog; + } + + public static ObjectMapper getObjectMapper() { + return getInstance(); + } + + public static String parse(Object object) throws RuntimeException { + try { + return getObjectMapper().writeValueAsString(object); + } catch (JsonProcessingException var2) { + throw new RuntimeException(var2); + } + } + + public static String parseWithoutException(Object object) { + try { + return parse(object); + } catch (Exception var2) { + return null; + } + } + + public static String parseLog(Object object) { + try { + return getInstanceLog().writeValueAsString(object); + } catch (Exception var2) { + return null; + } + } + + public static T format(String json, Class clazz) throws RuntimeException { + try { + return getObjectMapper().readValue(json, clazz); + } catch (IOException var3) { + throw new RuntimeException(var3); + } + } + + public static List formatList(String json, Class clazz) throws RuntimeException { + try { + JavaType type = getObjectMapper().getTypeFactory().constructParametricType(List.class, new Class[]{clazz}); + return (List)getObjectMapper().readValue(json, type); + } catch (IOException var3) { + throw new RuntimeException(var3); + } + } + + public static Map formatMap(String json, Class clazzKey, Class clazzValue) throws RuntimeException { + try { + JavaType type = getObjectMapper().getTypeFactory().constructParametricType(Map.class, new Class[]{clazzKey, clazzValue}); + return (Map)getObjectMapper().readValue(json, type); + } catch (IOException var4) { + throw new RuntimeException(var4); + } + } + + public static List> formatListTwo(String json, Class clazz) throws RuntimeException { + try { + TypeFactory typeFactory = getObjectMapper().getTypeFactory(); + JavaType type = typeFactory.constructParametrizedType(List.class, List.class, new Class[]{clazz}); + type = typeFactory.constructParametrizedType(List.class, List.class, new JavaType[]{type}); + return (List)getObjectMapper().readValue(json, type); + } catch (IOException var4) { + throw new RuntimeException(var4); + } + } +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/LiKuApplyTakResponse.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/LiKuApplyTakResponse.java new file mode 100644 index 0000000..3a6c6d8 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/LiKuApplyTakResponse.java @@ -0,0 +1,9 @@ +package org.nl.acs.ext.wms.data.one; + +import lombok.Data; + +@Data +public class LiKuApplyTakResponse extends BaseResponse { + + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/LiKuApplyTaskRequest.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/LiKuApplyTaskRequest.java new file mode 100644 index 0000000..a3c933c --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/LiKuApplyTaskRequest.java @@ -0,0 +1,9 @@ +package org.nl.acs.ext.wms.data.one; + +import lombok.Data; + +@Data +public class LiKuApplyTaskRequest extends BaseRequest { + private String vehicle_code; + private String device_code; +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/PutActionRequest.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/PutActionRequest.java new file mode 100644 index 0000000..eaf2dcf --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/PutActionRequest.java @@ -0,0 +1,30 @@ +package org.nl.acs.ext.wms.data.one; + +import lombok.Data; + +import java.util.Map; + +@Data +public class PutActionRequest extends BaseRequest { + + /** + * 设备号 + */ + String device_code; + + /** + * + */ + String code; + + /** + * + */ + String value; + + /** + * 扩展属性 + */ + Map params; + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/PutActionResponse.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/PutActionResponse.java new file mode 100644 index 0000000..11e5c11 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/PutActionResponse.java @@ -0,0 +1,7 @@ +package org.nl.acs.ext.wms.data.one; + +public class PutActionResponse extends BaseResponse { + + + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/UpdateLKTaskRequest.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/UpdateLKTaskRequest.java new file mode 100644 index 0000000..45e7529 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/UpdateLKTaskRequest.java @@ -0,0 +1,42 @@ +package org.nl.acs.ext.wms.data.one; + +import lombok.Data; + +@Data +public class UpdateLKTaskRequest extends BaseRequest { + + /** + * 任务标识 + */ + private String ext_task_id; + + /** + * 任务编号 + */ + private String task_code; + + /** + * 载具号 + */ + String vehicle_code; + + /** + * 立库任务类型 + */ + String dtl_type; + + /** + * 类型 + */ + String type; + + /** + * 原库位 + */ + String srcLocation; + + /** + * 新库位 + */ + String destLocation; +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/UpdateLKTaskResponse.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/UpdateLKTaskResponse.java new file mode 100644 index 0000000..fb827ab --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/UpdateLKTaskResponse.java @@ -0,0 +1,6 @@ +package org.nl.acs.ext.wms.data.one; + +public class UpdateLKTaskResponse extends BaseResponse { + + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/feedBackTaskStatus/FeedBackTaskStatusRequest.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/feedBackTaskStatus/FeedBackTaskStatusRequest.java similarity index 74% rename from acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/feedBackTaskStatus/FeedBackTaskStatusRequest.java rename to acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/feedBackTaskStatus/FeedBackTaskStatusRequest.java index eb3267b..4d7bb4c 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/feedBackTaskStatus/FeedBackTaskStatusRequest.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/feedBackTaskStatus/FeedBackTaskStatusRequest.java @@ -1,7 +1,7 @@ -package org.nl.acs.ext.wms.data.feedBackTaskStatus; +package org.nl.acs.ext.wms.data.one.feedBackTaskStatus; import lombok.Data; -import org.nl.acs.ext.wms.data.BaseRequest; +import org.nl.acs.ext.wms.data.one.BaseRequest; @Data public class FeedBackTaskStatusRequest extends BaseRequest { @@ -41,5 +41,10 @@ public class FeedBackTaskStatusRequest extends BaseRequest { */ private String action; + /** + * 1-正极板;2-负极板;3-边负极板 + */ + private String material_type; + } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/feedBackTaskStatus/FeedBackTaskStatusResponse.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/feedBackTaskStatus/FeedBackTaskStatusResponse.java new file mode 100644 index 0000000..c14dd1d --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/feedBackTaskStatus/FeedBackTaskStatusResponse.java @@ -0,0 +1,6 @@ +package org.nl.acs.ext.wms.data.one.feedBackTaskStatus; + +import org.nl.acs.ext.wms.data.one.BaseResponse; + +public class FeedBackTaskStatusResponse extends BaseResponse { +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/AcsToWmsController.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/AcsToWmsController.java index bee6056..ffc0c17 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/AcsToWmsController.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/AcsToWmsController.java @@ -8,13 +8,10 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.nl.acs.ext.wms.data.ApplyLabelingAndBindingRequest; -import org.nl.acs.ext.wms.data.LiKuApplyTaskRequest; import org.nl.acs.ext.wms.service.AcsToWmsService; -//import org.nl.modules.logging.InterfaceLogType; -import org.nl.common.logging.annotation.Log; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +import org.nl.common.logging.annotation.Log; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -35,81 +32,94 @@ public class AcsToWmsController { private final AcsToWmsService acstowmsService; @PostMapping("/applyTask") - @Log(value = "ACS向WMS申请任务") - @ApiOperation("ACS向WMS申请任务") - public ResponseEntity applyTaskToWms(@RequestBody JSONObject jo) { - return new ResponseEntity<>(acstowmsService.applyTaskToWms(jo), HttpStatus.OK); + @Log("向WMS申请任务") + @ApiOperation("向WMS申请任务") + public ResponseEntity applyTaskToWms(@RequestBody String device_code, String container_code, int height, int weight) { + return new ResponseEntity<>(acstowmsService.applyTaskToWms(device_code, container_code, height, weight), HttpStatus.OK); + } + + @PostMapping("/applyTaskManipulator") + @Log("向WMS申请机械手任务") + @ApiOperation("向WMS申请机械手任务") + public ResponseEntity applyTaskManipulatorToWms(@RequestBody JSONObject json) { + return new ResponseEntity<>(acstowmsService.applyTaskManipulatorToWms(json), HttpStatus.OK); + } + + @PostMapping("/getVehicle") + @Log("获取托盘信息") + @ApiOperation("获取托盘信息") + public ResponseEntity getVehicle(@RequestBody JSONObject json) { + return new ResponseEntity<>(acstowmsService.getVehicle(json), HttpStatus.OK); + } + + @PostMapping("/getVehicleTokiln") + @Log("获取入窑托盘信息") + @ApiOperation("获取入窑托盘信息") + public ResponseEntity getVehicleTokiln(@RequestBody JSONObject json) { + return new ResponseEntity<>(acstowmsService.getVehicleTokiln(json), HttpStatus.OK); + } + + @PostMapping("/outKiln") + @Log("出窑请求") + @ApiOperation("出窑请求") + public ResponseEntity outKiln(@RequestBody JSONObject json) { + return new ResponseEntity<>(acstowmsService.outKiln(json), HttpStatus.OK); + } + + @PostMapping("/enterOrder") + @Log("排产单确认") + @ApiOperation("排产单确认") + public ResponseEntity enterOrder(@RequestBody JSONObject json) { + return new ResponseEntity<>(acstowmsService.enterOrder(json), HttpStatus.OK); + } + + @PostMapping("/getVehicleCode") + @Log("获取托盘号") + @ApiOperation("获取托盘号") + public ResponseEntity getVehicleCode(@RequestBody String device_code) { + return new ResponseEntity<>(acstowmsService.getVehicleCode(device_code), HttpStatus.OK); + } + + @PostMapping("/getVehiclePoint") + @Log("获取托盘点位") + @ApiOperation("获取托盘点位") + public ResponseEntity getVehiclePoint(@RequestBody String vehicle_code) { + return new ResponseEntity<>(acstowmsService.getVehiclePoint(vehicle_code), HttpStatus.OK); } @PostMapping("/taskStatusFeedback") - @Log(value = "ACS向WMS反馈任务状态") - @ApiOperation("ACS向WMS反馈任务状态") + @Log("向WMS反馈任务状态") + @ApiOperation("向WMS反馈任务状态") public ResponseEntity feedbackTaskStatusToWms(@RequestBody Map whereJson) { JSONArray data = JSONArray.parseArray(String.valueOf(whereJson)); return new ResponseEntity<>(acstowmsService.feedbackTaskStatusToWms(data), HttpStatus.OK); } + @PostMapping("/pointStatusFeedback") + @Log("向WMS反馈点位状态") + @ApiOperation("向WMS反馈点位状态") + public ResponseEntity feedbackPointStatusToWms(@RequestBody Map whereJson) { + return new ResponseEntity<>(acstowmsService.feedbackPointStatusToWms(whereJson), HttpStatus.OK); + } + @PostMapping("/feedbackAgvStatus") - @Log(value = "反馈AGV设备状态") + @Log("反馈AGV设备状态") @ApiOperation("反馈AGV设备状态") public ResponseEntity feedbackAgvStatus(@RequestBody String device_code, String error, String error_message) { return new ResponseEntity<>(acstowmsService.feedbackAgvStatus(device_code, error, error_message), HttpStatus.OK); } @PostMapping("/feedbackAgv") - @Log(value = "反馈AGV设备信息") + @Log("反馈AGV设备信息") @ApiOperation("反馈AGV设备信息") public ResponseEntity feedbackAgv(@RequestBody JSONArray from) { return new ResponseEntity<>(acstowmsService.feedbackAgv(from), HttpStatus.OK); } @PostMapping("/feedbackDeviceStatus") - @Log(value = "反馈设备状态") + @Log("反馈设备状态") @ApiOperation("反馈设备状态") public ResponseEntity feedbackDeviceStatus(@RequestBody String device_code, String code, String value) { - return new ResponseEntity<>(acstowmsService.feedbackDeviceStatus(device_code, value), HttpStatus.OK); - } - - @PostMapping("/feedbackOrderStatus") - @Log(value = "ACS强制完成向WMS反馈") - @ApiOperation("acs强制完成向wms反馈") - public ResponseEntity feedbackOrderStatus(@RequestBody JSONObject param) { - return new ResponseEntity<>(acstowmsService.feedbackOrderStatus(param), HttpStatus.OK); - } - - - @PostMapping("/applyInCacheLineTask") - @Log(value = "ACS申请缓存线入库任务") - @ApiOperation("ACS申请缓存线入库任务") - public ResponseEntity applyInCacheLineTask(@RequestBody JSONObject param) { - return new ResponseEntity<>(acstowmsService.applyInCacheLineTask(param), HttpStatus.OK); - } - - @PostMapping("/applyOutCacheLineTask") - @Log(value = "ACS系统申请出库任务") - @ApiOperation("ACS系统申请出库任务") - public ResponseEntity applyOutCacheLineTask(@RequestBody JSONObject param) { - return new ResponseEntity<>(acstowmsService.applyOutCacheLineTask(param), HttpStatus.OK); - } - - @PostMapping("/applyLabelingAndBindingRequest") - @Log(value = "ACS系统申请贴标、捆扎") - @ApiOperation("ACS系统申请贴标、捆扎") - public ResponseEntity applyLabelingAndBindingRequest(@RequestBody ApplyLabelingAndBindingRequest param) { - return new ResponseEntity<>(acstowmsService.applyLabelingAndBindingRequest(param), HttpStatus.OK); - } - - @PostMapping("/liKuApplyTaskRequest") - @Log(value = "立库申请任务") - @ApiOperation("立库申请任务") - public ResponseEntity liKuApplyTaskRequest(@RequestBody LiKuApplyTaskRequest param) { - return new ResponseEntity<>(acstowmsService.liKuApplyTaskRequest(param), HttpStatus.OK); - } - - @PostMapping("/feedAgvTaskStatus") - @Log(value = "反馈AGV取放货状态") - @ApiOperation("反馈AGV取放货状态") - public ResponseEntity feedAgvTaskStatus(@RequestBody JSONArray from) { - return new ResponseEntity<>(acstowmsService.feedAgvTaskStatus(from), HttpStatus.OK); + return new ResponseEntity<>(acstowmsService.feedbackDeviceStatus(device_code, code, value), HttpStatus.OK); } } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java index 9bcf796..5b8050b 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java @@ -3,14 +3,13 @@ package org.nl.acs.ext.wms.rest; import cn.dev33.satoken.annotation.SaIgnore; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.nl.acs.ext.wms.data.CancelTaskRequest; -import org.nl.acs.ext.wms.data.CreateTaskRequest; +import org.nl.acs.ext.wms.data.one.CancelTaskRequest; +import org.nl.acs.ext.wms.data.one.CreateTaskRequest; import org.nl.acs.ext.wms.service.WmsToAcsService; //import org.nl.modules.logging.InterfaceLogType; import org.nl.common.logging.annotation.Log; diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java index 4b00ea8..b01351c 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java @@ -3,7 +3,7 @@ package org.nl.acs.ext.wms.service; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import org.nl.acs.ext.wms.data.*; +import org.nl.acs.ext.wms.data.one.*; public interface AcsToWmsService { @@ -127,4 +127,9 @@ public interface AcsToWmsService { * ACS向WMS反馈任务状态 */ String notify(BaseRequest request); + + /** + * 任务阶段反馈最新点位 + */ + String feedbackState(BaseRequest request); } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/WmsToAcsService.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/WmsToAcsService.java index 869a8b3..864a966 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/WmsToAcsService.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/WmsToAcsService.java @@ -2,9 +2,8 @@ package org.nl.acs.ext.wms.service; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import org.nl.acs.ext.wms.data.*; +import org.nl.acs.ext.wms.data.one.*; import java.util.List; import java.util.Map; diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java index d18663b..777da4e 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java @@ -16,7 +16,8 @@ import org.nl.acs.address.service.AddressService; import org.nl.acs.address.service.dto.AddressDto; import org.nl.acs.device.service.DeviceService; import org.nl.acs.ext.wms.LmsUtil; -import org.nl.acs.ext.wms.data.*; +import org.nl.acs.ext.wms.data.BaseRequest; +import org.nl.acs.ext.wms.data.one.*; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.log.service.DeviceExecuteLogService; import org.nl.acs.task.service.TaskService; @@ -24,8 +25,11 @@ import org.nl.acs.task.service.dto.TaskDto; import org.nl.system.service.param.ISysParamService; import org.slf4j.MDC; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; +import java.util.Map; + @Service @RequiredArgsConstructor @Slf4j @@ -53,29 +57,39 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { private String log_type="ACS请求LMS"; @Override - public String applyTaskToWms(JSONObject jo) { + public String applyTaskToWms(String device_code, String container_code, int height, int weight) { try { MDC.put(log_file_type, log_type); - log.info("applyTaskToWms-----输入参数{}", jo); - String wmsurl = paramService.findByCode(AcsConfig.WMSURL).getValue(); + String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); AddressDto addressDto = addressService.findByCode("applyTaskToWms"); String url = wmsurl + addressDto.getMethods_url(); + + JSONObject param = new JSONObject(); + param.put("height", height); + param.put("weight", weight); + String parent_device_code = ""; + JSONObject jo = new JSONObject(); + JSONObject device_json = WQLObject.getWQLObject("acs_storage_cell").query("storage_code ='" + device_code + "'").uniqueResult(0); + if (!device_json.isEmpty()) { + parent_device_code = (String) device_json.get("parent_storage_cell") == null ? device_code : (String) device_json.get("parent_storage_cell"); + } + jo.put("device_code", parent_device_code); + jo.put("container_code", container_code); + jo.put("param", param); + log.info("applyTaskToWms - 请求参数 {}", jo.toString()); HttpResponse result2 = null; try { + //{"status":400,"timestamp":"2021-10-22 16:32:22","message":"业务类型不正确!"} result2 = HttpRequest.post(url) .header("Authorization", token) .body(String.valueOf(jo)) .execute(); -// ////System.out.println(result2); + System.out.println(result2); + log.info("applyTaskToWms - 返回参数 {}", result2.body()); } catch (Exception e) { String msg = e.getMessage(); - log.info("applyTaskToWms-----输出参数{}", msg); //网络不通 -// //System.out.println(msg); - } - if(ObjectUtil.isEmpty(result2)){ - log.info("applyTaskToWms-----输出参数{}", "返回结果为空"); - return null; + System.out.println(msg); } String type = ""; if (result2.getStatus() == 200) { @@ -83,9 +97,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } else { type = "error"; } - log.info("applyTaskToWms-----输出参数{}", result2.body()); +// logServer.log("", "applyTaskToWms", type, jo.toString(), result2.body(), String.valueOf(result2.getStatus()), url, container_code); return result2.body(); - } finally { MDC.remove(log_file_type); } @@ -93,48 +106,120 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } @Override - public HttpResponse feedbackTaskStatusToWms(JSONArray data) { - + public HttpResponse applyTaskManipulatorToWms(JSONObject json) { try { MDC.put(log_file_type, log_type); - String wmsurl = paramService.findByCode(AcsConfig.WMSURL).getValue(); + String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); + AddressDto addressDto = addressService.findByCode("applyTaskManipulatorToWms"); + String url = wmsurl + addressDto.getMethods_url(); - String task_code = ""; - for (int i = 0; i < data.size(); i++) { - JSONObject json = (JSONObject) data.get(i); - task_code = json.getString("task_code"); - } - TaskDto taskDto = taskService.findByCode(task_code); - String vehicle_code = taskDto.getVehicle_code(); + String device_code = json.getString("device_code"); + String parent_device_code = ""; + JSONObject jo = new JSONObject(); +// JSONObject device_json = WQLObject.getWQLObject("acs_storage_cell").query("storage_code ='" + device_code + "'").uniqueResult(0); +// if (!device_json.isEmpty()) { +// parent_device_code = (String) device_json.get("parent_storage_cell") == null ? device_code : (String) device_json.get("parent_storage_cell"); +// } +// jo.put("device_code", parent_device_code); + + log.info("applyTaskManipulatorToWms - 请求参数 {}", json.toString()); HttpResponse result2 = null; - log.info("feedbackTaskStatusToWms-----请求参数{}", data.toString()); - - AddressDto addressDto = addressService.findByCode("feedbackTaskStatusToWms"); - String methods_url = addressDto.getMethods_url(); try { - result2 = HttpRequest.post(wmsurl + methods_url) - .header("Authorization", token).body(String.valueOf(data)) + //{"status":400,"timestamp":"2021-10-22 16:32:22","message":"业务类型不正确!"} + result2 = HttpRequest.post(url) + .header("Authorization", token) + .body(String.valueOf(json)) .execute(); -// //System.out.println(result2); + System.out.println(result2); + log.info("applyTaskManipulatorToWms - 返回参数 {}", result2.body()); } catch (Exception e) { String msg = e.getMessage(); //网络不通 -// //System.out.println(msg); - log.info("feedbackTaskStatusToWms-----输出参数{}", msg); - + System.out.println(msg); } + return result2; + } finally { + MDC.remove(log_file_type); + } + } - String type = ""; - if (result2.getStatus() == 200) { - type = "info"; - } else { - type = "error"; + @Override + public HttpResponse applyOuttoKiln(JSONObject json) { + try { + MDC.put(log_file_type, log_type); + String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); + AddressDto addressDto = addressService.findByCode("ispackage"); + String url = wmsurl + addressDto.getMethods_url(); + + String device_code = json.getString("device_code"); + + String parent_device_code = ""; + JSONObject jo = new JSONObject(); + JSONObject device_json = WQLObject.getWQLObject("acs_storage_cell").query("storage_code ='" + device_code + "'").uniqueResult(0); + if (!device_json.isEmpty()) { + parent_device_code = (String) device_json.get("parent_storage_cell") == null ? device_code : (String) device_json.get("parent_storage_cell"); } + jo.put("device_code", parent_device_code); + jo.putAll(json); - JSONObject jo = JSONObject.parseObject(result2.body()); - log.info("feedbackTaskStatusToWms-----输出参数{}", jo.toString()); + log.info("applyOuttoKiln - 请求参数 {}", jo.toString()); + HttpResponse result2 = null; + try { + //{"status":400,"timestamp":"2021-10-22 16:32:22","message":"业务类型不正确!"} + result2 = HttpRequest.post(url) + .header("Authorization", token) + .body(String.valueOf(jo)) + .execute(); + System.out.println(result2); + log.info("applyOuttoKiln - 返回参数 {}", result2.body()); + } catch (Exception e) { + String msg = e.getMessage(); + //网络不通 + System.out.println(msg); + } + return result2; + } finally { + MDC.remove(log_file_type); + } + + } + + @Override + public HttpResponse applyIntoKiln(JSONObject json) { + try { + MDC.put(log_file_type, log_type); + String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); + AddressDto addressDto = addressService.findByCode("applyIntoKiln"); + String url = wmsurl + addressDto.getMethods_url(); + + String device_code = json.getString("device_code"); + + String parent_device_code = ""; + JSONObject jo = new JSONObject(); + JSONObject device_json = WQLObject.getWQLObject("acs_storage_cell").query("storage_code ='" + device_code + "'").uniqueResult(0); + if (!device_json.isEmpty()) { + parent_device_code = (String) device_json.get("parent_storage_cell") == null ? device_code : (String) device_json.get("parent_storage_cell"); + } + jo.put("device_code", parent_device_code); + jo.putAll(json); + + log.info("lnshApplyTaskToWms - 请求参数 {}", jo.toString()); + HttpResponse result2 = null; + try { + //{"status":400,"timestamp":"2021-10-22 16:32:22","message":"业务类型不正确!"} + result2 = HttpRequest.post(url) + .header("Authorization", token) + .body(String.valueOf(jo)) + .execute(); + System.out.println(result2); + log.info("lnshApplyTaskToWms - 返回参数 {}", result2.body()); + } catch (Exception e) { + String msg = e.getMessage(); + //网络不通 + System.out.println(msg); + } return result2; } finally { MDC.remove(log_file_type); @@ -144,324 +229,40 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { @Override - public String requestTaskAgain(String address, String task_id, String vehicle_code) { - String wmsurl = paramService.findByCode(AcsConfig.WMSURL).getValue(); - String device_code = deviceService.queryDeviceCodeByAddress(Integer.parseInt(address)); - JSONObject jo = new JSONObject(); - jo.put("task_id", task_id); - String result2 = null; - - AddressDto addressDto = addressService.findByCode("requestTaskAgain"); - String methods_url = addressDto.getMethods_url(); - String url = wmsurl + methods_url; - log.info("requestTaskAgain----请求参数{}", jo); - + public HttpResponse applyBarcode(JSONObject json) { try { - result2 = HttpRequest.post(url) - .body(String.valueOf(jo)) - .execute().body(); - //System.out.println(result2); - log.info("requestTaskAgain----返回参数{}", result2); - } catch (Exception e) { - String msg = e.getMessage(); - //网络不通 - //System.out.println(msg); + MDC.put(log_file_type, log_type); + String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); + AddressDto addressDto = addressService.findByCode("getVehicleInfoBycode"); + String url = wmsurl + addressDto.getMethods_url(); - } - return result2; - } + String device_code = json.getString("device_code"); - @Override - public HttpResponse feedbackAgvStatus(String device_code, String error, String error_message) { - String wmsUrl = paramService.findByCode(AcsConfig.WMSURL).getValue(); + String parent_device_code = ""; + JSONObject jo = new JSONObject(); + JSONObject device_json = WQLObject.getWQLObject("acs_storage_cell").query("storage_code ='" + device_code + "'").uniqueResult(0); + if (!device_json.isEmpty()) { + parent_device_code = (String) device_json.get("parent_storage_cell") == null ? device_code : (String) device_json.get("parent_storage_cell"); + } + jo.put("device_code", parent_device_code); + jo.putAll(json); - JSONObject json = new JSONObject(); - json.put("device_code", device_code); - json.put("error", error); - json.put("error_message", error_message); - - AddressDto addressDto = addressService.findByCode("feedbackAgvStatus"); - String methods_url = addressDto.getMethods_url(); - String url = wmsUrl + methods_url; - HttpResponse result = null; - log.info("feedbackAgvStatus----请求参数{}", json); - - try { - result = HttpRequest.post(url) - .body(String.valueOf(json)) - .execute(); - System.out.println(result); - log.info("feedbackAgvStatus----返回参数{}", result); - } catch (Exception e) { - String msg = e.getMessage(); - //网络不通 - //System.out.println(msg); - } - return result; - } - - @Override - public HttpResponse feedbackDeviceStatus(String device_code, String state) { - String wmsUrl = paramService.findByCode(AcsConfig.WMSURL).getValue(); - - JSONObject json = new JSONObject(); - json.put("device_code", device_code); - json.put("back_time", DateUtil.format(DateUtil.date(), "yyyyMMddHHmmssSSS")); - json.put("state", state); - AddressDto addressDto = addressService.findByCode("feedbackDeviceStatus"); - String methods_url = addressDto.getMethods_url(); - String url = wmsUrl + methods_url; - HttpResponse result = null; - log.info("feedbackDeviceStatus----请求参数{}", json); - - try { - result = HttpRequest.post(url) - .body(String.valueOf(json)) - .execute(); - System.out.println(result); - log.info("feedbackDeviceStatus----返回参数{}", result); - } catch (Exception e) { - String msg = e.getMessage(); - //网络不通 - //System.out.println(msg); - } - return result; - } - - @Override - public HttpResponse feedbackAgv(JSONArray from) { - String wmsUrl = paramService.findByCode(AcsConfig.WMSURL).getValue(); - - AddressDto addressDto = addressService.findByCode("feedbackAgv"); - String methods_url = addressDto.getMethods_url(); - String url = wmsUrl + methods_url; - HttpResponse result = null; - log.info("feedbackAgv----请求参数{}", from); - - try { - result = HttpRequest.post(url) - .body(String.valueOf(from)) - .execute(); - System.out.println(result); - log.info("feedbackAgv----返回参数{}", result); - } catch (Exception e) { - String msg = e.getMessage(); - //网络不通 - //System.out.println(msg); - } - return result; - } - - @Override - public HttpResponse applyOpenOrCloseDoor(String device_code, String status) { - String wmsurl = paramService.findByCode(AcsConfig.WMSURL).getValue(); - JSONObject jo = new JSONObject(); - jo.put("device_code", device_code); - jo.put("status", status); - HttpResponse result = null; - log.info("applyOpenOrCloseDoor-----请求参数{}", jo.toString()); - - AddressDto addressDto = addressService.findByCode("applyOpenOrCloseDoor"); - String methods_url = addressDto.getMethods_url(); - try { - result = HttpRequest.post(wmsurl + methods_url) - .body(String.valueOf(jo)) - .execute(); - System.out.println(result); - log.info("applyOpenOrCloseDoor-----返回参数{}", result); - } catch (Exception e) { - String msg = e.getMessage(); - //网络不通 - //System.out.println(msg); - } - return result; - } - - @Override - public HttpResponse queryDoorsStatus() { - String wmsurl = paramService.findByCode(AcsConfig.WMSURL).getValue(); - - HttpResponse result = null; - log.info("queryDoorStatus-----请求"); - AddressDto addressDto = addressService.findByCode("queryDoorsStatus"); - String methods_url = addressDto.getMethods_url(); - try { - result = HttpRequest.get(wmsurl + methods_url) - .body("") - .execute(); - log.info("queryDoorStatus-----输出参数{}", result.body().toString()); - } catch (Exception e) { - String msg = e.getMessage(); - //网络不通 - //System.out.println(msg); - - } - return result; - } - - @Override - public HttpResponse feedbackOrderStatus(JSONObject param) { - if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), "1")) { - String wmsUrl = paramService.findByCode(AcsConfig.WMSURL).getValue(); - String ext_order_id = param.getString("ext_order_id"); - String status = param.getString("status"); - String type1 = param.getString("type"); - JSONObject json = new JSONObject(); - json.put("ext_order_id", ext_order_id); - json.put("status", status); - json.put("type", type1); - AddressDto addressDto = addressService.findByCode("feedbackOrderStatus"); - String methods_url = addressDto.getMethods_url(); - String url = wmsUrl + methods_url; - HttpResponse result = null; - log.info("feedbackOrderStatus----请求参数{}", json); + log.info("lnshApplyTaskToWms - 请求参数 {}", jo.toString()); + HttpResponse result2 = null; try { - result = HttpRequest.post(url) - .body(String.valueOf(json)) + //{"status":400,"timestamp":"2021-10-22 16:32:22","message":"业务类型不正确!"} + result2 = HttpRequest.post(url) + .header("Authorization", token) + .body(String.valueOf(jo)) .execute(); - String type = ""; - if (result.getStatus() == 200) { - type = "info"; - } else { - type = "error"; - } - - log.info("feedbackOrderStatus----返回参数{}", result); + System.out.println(result2); + log.info("lnshApplyTaskToWms - 返回参数 {}", result2.body()); } catch (Exception e) { String msg = e.getMessage(); //网络不通 - //System.out.println(msg); + System.out.println(msg); } - return result; - - } - return null; - } - - @Override - public HttpResponse applyInCacheLineTask(JSONObject param) { - if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), "1")) { - String wmsUrl = paramService.findByCode(AcsConfig.WMSURL).getValue(); - // TODO 还没向地址表中添加 applyInCacheLineTask地址 - AddressDto addressDto = addressService.findByCode("applyInCacheLineTask"); - String methods_url = addressDto.getMethods_url(); - String url = wmsUrl + methods_url; - HttpResponse result = null; - log.info("feedbackOrderStatus----请求参数{}", param); - try { - result = HttpRequest.post(url) - .body(String.valueOf(param)) - .execute(); - String type = ""; - if (result.getStatus() == 200) { - type = "info"; - } else { - type = "error"; - } - - log.info("applyInCacheLineTask----返回参数{}", result); - } catch (Exception e) { - String msg = e.getMessage(); - //网络不通 - //System.out.println(msg); - } - return result; - } - return null; - } - - @Override - public HttpResponse applyOutCacheLineTask(JSONObject param) { - if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), "1")) { - String wmsUrl = paramService.findByCode(AcsConfig.WMSURL).getValue(); - // TODO 还没向地址表中添加 applyOutCacheLineTask - AddressDto addressDto = addressService.findByCode("applyOutCacheLineTask"); - String methods_url = addressDto.getMethods_url(); - String url = wmsUrl + methods_url; - HttpResponse result = null; - log.info("feedbackOrderStatus----请求参数{}", param); - try { - result = HttpRequest.post(url) - .body(String.valueOf(param)) - .execute(); - String type = ""; - if (result.getStatus() == 200) { - type = "info"; - } else { - type = "error"; - } - - log.info("applyOutCacheLineTask----返回参数{}", result); - } catch (Exception e) { - String msg = e.getMessage(); - //网络不通 - //System.out.println(msg); - } - return result; - } - return null; - } - - @Override - public ApplyLabelingAndBindingResponse applyLabelingAndBindingRequest(ApplyLabelingAndBindingRequest param) { - try { - MDC.put(log_file_type, log_type); - ApplyLabelingAndBindingResponse applyLabelingAndBindingResponse = new ApplyLabelingAndBindingResponse(); - if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), "1")) { - String wmsUrl = paramService.findByCode(AcsConfig.WMSURL).getValue(); - AddressDto addressDto = addressService.findByCode("applyLabelingAndBinding"); - String methods_url = addressDto.getMethods_url(); - String url = wmsUrl + methods_url; - log.info("ApplyLabelingAndBindingRequest----请求参数{}", param); - try { -// String result = ""; - String result = HttpRequest.post(url) - .body(JSON.toJSONString(param)) - .execute().body(); - JSONObject jsonObject = JSONObject.parseObject(result); - log.info("ApplyLabelingAndBindingResponse----返回参数{}", result); - applyLabelingAndBindingResponse = JSONObject.toJavaObject(jsonObject, ApplyLabelingAndBindingResponse.class); - } catch (Exception e) { - JSONObject map = new JSONObject(); - map.put("status", 400); - map.put("message", e.getMessage()); - return JSONObject.toJavaObject(map, ApplyLabelingAndBindingResponse.class); - } - } - return applyLabelingAndBindingResponse; - } finally { - MDC.remove(log_file_type); - } - - - } - - @Override - public LiKuApplyTakResponse liKuApplyTaskRequest(LiKuApplyTaskRequest param) { - try { - MDC.put(log_file_type, log_type); - LiKuApplyTakResponse liKuApplyTakResponse = new LiKuApplyTakResponse(); - if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), "1")) { - String wmsUrl = paramService.findByCode(AcsConfig.WMSURL).getValue(); - AddressDto addressDto = addressService.findByCode("liKuApplyTask"); - String methods_url = addressDto.getMethods_url(); - String url = wmsUrl + methods_url; - log.info("LiKuApplyTaskRequest----请求参数{}", param); - try { - String result = HttpRequest.post(url) - .body(JSON.toJSONString(param)) - .execute().body(); - JSONObject jsonObject = JSONObject.parseObject(result); - log.info("LiKuApplyTakResponse----返回参数{}", result); - liKuApplyTakResponse = JSONObject.toJavaObject(jsonObject, LiKuApplyTakResponse.class); - } catch (Exception e) { - JSONObject map = new JSONObject(); - map.put("status", 400); - map.put("message", e.getMessage()); - return JSONObject.toJavaObject(map, LiKuApplyTakResponse.class); - } - } - return liKuApplyTakResponse; + return result2; } finally { MDC.remove(log_file_type); } @@ -470,95 +271,678 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { - @Override - public UpdateLKTaskResponse updateLKTaskRequest(UpdateLKTaskRequest param) { - try { - MDC.put(log_file_type, log_type); - log.info("updateLKTaskRequest-----输入参数{}", param); - UpdateLKTaskResponse updateLKTaskResponse = new UpdateLKTaskResponse(); - if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), "1")) { - String wmsUrl = paramService.findByCode(AcsConfig.WMSURL).getValue(); - AddressDto addressDto = addressService.findByCode("liKuApplyTask"); - String methods_url = addressDto.getMethods_url(); - String url = wmsUrl + methods_url; - try { - String result = HttpRequest.post(url) - .body(JSON.toJSONString(param)) - .execute().body(); - log.info("UpdateLKTaskResponse----返回参数{}", result); - - JSONObject jsonObject = JSONObject.parseObject(result); - updateLKTaskResponse = JSONObject.toJavaObject(jsonObject, UpdateLKTaskResponse.class); - } catch (Exception e) { - JSONObject map = new JSONObject(); - map.put("status", 400); - map.put("message", e.getMessage()); - return JSONObject.toJavaObject(map, UpdateLKTaskResponse.class); - } - } - - return updateLKTaskResponse; - } finally { - MDC.remove(log_file_type); - } - - } - - @Override - public HttpResponse shipDeviceUpdate(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("shipDeviceUpdate"); - 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; - } - - @Override - public HttpResponse feedAgvTaskStatus(JSONArray from) { - String wmsUrl = paramService.findByCode(AcsConfig.WMSURL).getValue(); - - AddressDto addressDto = addressService.findByCode("feedAgvTaskStatus"); - String methods_url = addressDto.getMethods_url(); - String url = wmsUrl + methods_url; - HttpResponse result = null; - log.info("feedAgvTaskStatus----请求参数{}", from); - - try { - result = HttpRequest.post(url) - .body(String.valueOf(from)) - .execute(); - System.out.println(result); - log.info("feedAgvTaskStatus----返回参数{}", result); - } catch (Exception e) { - String msg = e.getMessage(); - //网络不通 - //System.out.println(msg); - } - return result; - } - @Override public String applyTask(BaseRequest requestParam) { try { MDC.put(log_file_type, log_type); - String api = addressService.findByCode("applyTaskToWms").getMethods_url(); - log.info("applyTaskToWms-----输入参数{}", JSON.toJSONString(requestParam, SerializerFeature.DisableCircularReferenceDetect)); + String api = addressService.findByCode("lnshApplyTaskToWms").getMethods_url(); + log.info("lnshApplyTaskToWms-----输入参数{}", JSON.toJSONString(requestParam, SerializerFeature.DisableCircularReferenceDetect)); String result = LmsUtil.notifyAcs(api, requestParam); - log.info("applyTaskToWms-----输出参数{}", result); + log.info("lnshApplyTaskToWms-----输出参数{}", result); + return result; + } finally { + MDC.remove(log_file_type); + } + + } + + @Override + public HttpResponse lnshApplyTaskToWms(JSONObject json) { + try { + MDC.put(log_file_type, log_type); + String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); + AddressDto addressDto = addressService.findByCode("lnshApplyTaskToWms"); + String url = wmsurl + addressDto.getMethods_url(); + + String device_code = json.getString("device_code"); + + String parent_device_code = ""; + JSONObject jo = new JSONObject(); + JSONObject device_json = WQLObject.getWQLObject("acs_storage_cell").query("storage_code ='" + device_code + "'").uniqueResult(0); + if (!device_json.isEmpty()) { + parent_device_code = (String) device_json.get("parent_storage_cell") == null ? device_code : (String) device_json.get("parent_storage_cell"); + } + jo.put("device_code", parent_device_code); + jo.putAll(json); + + log.info("lnshApplyTaskToWms - 请求参数 {}", jo.toString()); + HttpResponse result2 = null; + try { + //{"status":400,"timestamp":"2021-10-22 16:32:22","message":"业务类型不正确!"} + result2 = HttpRequest.post(url) + .header("Authorization", token) + .body(String.valueOf(jo)) + .execute(); + System.out.println(result2); + log.info("lnshApplyTaskToWms - 返回参数 {}", result2.body()); + } catch (Exception e) { + String msg = e.getMessage(); + //网络不通 + System.out.println(msg); + } + return result2; + } finally { + MDC.remove(log_file_type); + } + + } + + @Override + public HttpResponse getVehicle(JSONObject json) { + try { + MDC.put(log_file_type, log_type); + String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); + AddressDto addressDto = addressService.findByCode("getVehicle"); + String methods_url = addressDto.getMethods_url(); + String url = wmsurl + methods_url; + + log.info("getVehicle - 请求参数 {}", json.toString()); + HttpResponse result = null; + try { + result = HttpRequest.post(url) + .header("Authorization", token) + .body(String.valueOf(json)) + .execute(); + System.out.println(result); + log.info("getVehicle - 返回参数 {}", result.body()); + } catch (Exception e) { + System.out.println(e.getMessage()); + } + + return result; + } finally { + MDC.remove(log_file_type); + } + + } + + @Override + public JSONObject getVehicleTokiln(JSONObject json) { + try { + MDC.put(log_file_type, log_type); + String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); + AddressDto addressDto = addressService.findByCode("getVehicleTokiln"); + String methods_url = addressDto.getMethods_url(); + String url = wmsurl + methods_url; + + log.info("getVehicleTokiln - 请求参数 {}", json.toString()); + HttpResponse result = null; + try { + result = HttpRequest.post(url) + .header("Authorization", token) + .body(String.valueOf(json)) + .execute(); + System.out.println(result); + log.info("getVehicleTokiln - 返回参数 {}", result.body()); + return JSONObject.parseObject(result.body()); + } catch (Exception e) { + System.out.println(e.getMessage()); + } + return null; + } finally { + MDC.remove(log_file_type); + } + + } + + @Override + public HttpResponse inKiln(JSONObject json) { + try { + MDC.put(log_file_type, log_type); + String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); + AddressDto addressDto = addressService.findByCode("inKiln"); + String methods_url = addressDto.getMethods_url(); + String url = wmsurl + methods_url; + + log.info("inKiln - 请求参数 {}", json.toString()); + HttpResponse result = null; + try { + result = HttpRequest.post(url) + .header("Authorization", token) + .body(String.valueOf(json)) + .execute(); + System.out.println(result); + log.info("inKiln - 返回参数 {}", result.body()); + } catch (Exception e) { + System.out.println(e.getMessage()); + } + return result; + + } finally { + MDC.remove(log_file_type); + } + + } + + @Override + public HttpResponse outKiln(JSONObject json) { + try { + MDC.put(log_file_type, log_type); + String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); + AddressDto addressDto = addressService.findByCode("outKiln"); + String methods_url = addressDto.getMethods_url(); + String url = wmsurl + methods_url; + + + log.info("outKiln - 请求参数 {}", json.toString()); + HttpResponse result = null; + try { + result = HttpRequest.post(url) + .header("Authorization", token) + .body(String.valueOf(json)) + .execute(); + System.out.println(result); + log.info("outKiln - 返回参数 {}", result.body()); + } catch (Exception e) { + System.out.println(e.getMessage()); + } + return result; + } finally { + MDC.remove(log_file_type); + } + + } + + @Override + public HttpResponse enterOrder(JSONObject json) { + try { + MDC.put(log_file_type, log_type); + String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); + AddressDto addressDto = addressService.findByCode("enterOrder"); + String methods_url = addressDto.getMethods_url(); + String url = wmsurl + methods_url; + + log.info("enterOrder - 请求参数 {}", json.toString()); + HttpResponse result = null; + try { + result = HttpRequest.post(url) + .header("Authorization", token) + .body(String.valueOf(json)) + .execute(); + System.out.println(result); + log.info("enterOrder - 返回参数 {}", result.body()); + } catch (Exception e) { + System.out.println(e.getMessage()); + } + return result; + + } finally { + MDC.remove(log_file_type); + } + + } + + @Override + public JSONObject getVehicleCode(String device_code) { + try { + MDC.put(log_file_type, log_type); + + } finally { + MDC.remove(log_file_type); + } + String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); + AddressDto addressDto = addressService.findByCode("getVehicleCode"); + String methods_url = addressDto.getMethods_url(); + String url = wmsurl + methods_url; + + JSONObject json = new JSONObject(); + json.put("device_code", device_code); + + log.info("getVehicleCode - 请求参数 {}", json.toString()); + HttpResponse result = null; + try { + result = HttpRequest.post(url) + .header("Authorization", token) + .body(String.valueOf(json)) + .execute(); + System.out.println(result); + log.info("getVehicleCode - 返回参数 {}", result.body()); + return JSONObject.parseObject(result.body()); + } catch (Exception e) { + System.out.println(e.getMessage()); + } + return null; + } + + @Override + public JSONObject getVehiclePoint(String vehicle_code) { + try { + MDC.put(log_file_type, log_type); + + } finally { + MDC.remove(log_file_type); + } + String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); + AddressDto addressDto = addressService.findByCode("getVehiclePoint"); + String methods_url = addressDto.getMethods_url(); + String url = wmsurl + methods_url; + + JSONObject json = new JSONObject(); + json.put("vehicle_code", vehicle_code); + + log.info("getVehiclePoint - 请求参数 {}", json.toString()); + HttpResponse result = null; + try { + result = HttpRequest.post(url) + .header("Authorization", token) + .body(String.valueOf(json)) + .execute(); + System.out.println(result); + log.info("getVehiclePoint - 返回参数 {}", result.body()); + return JSONObject.parseObject(result.body()); + } catch (Exception e) { + System.out.println(e.getMessage()); + } + return null; + } + + @Override + public HttpResponse feedbackTaskStatusToWms(JSONArray data) { + try { + MDC.put(log_file_type, log_type); + + } finally { + MDC.remove(log_file_type); + } + String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); + + String task_code = ""; + for (int i = 0; i < data.size(); i++) { + JSONObject json = (JSONObject) data.get(i); + task_code = json.getString("task_code"); + } + + HttpResponse result2 = null; + log.info("feedbackTaskStatusToWms - 请求参数 {}", data.toString()); + + AddressDto addressDto = addressService.findByCode("feedbackTaskStatusToWms"); + String methods_url = addressDto.getMethods_url(); + try { + result2 = HttpRequest.post(wmsurl + methods_url) + .header("Authorization", token).body(String.valueOf(data)) + .execute(); + System.out.println(result2); + log.info("feedbackTaskStatusToWms - 返回参数 {}", result2.body()); + } catch (Exception e) { + String msg = e.getMessage(); + //网络不通 + System.out.println(msg); + } + + String type = ""; + if (result2.getStatus() == 200) { + type = "info"; + } else { + type = "error"; + } + +// logServer.log(task_code, "feedbackTaskStatusToWms", type, data.toString(), result2.body(), String.valueOf(result2.getStatus()), wmsurl + methods_url, vehicle_code); + + return result2; + } + + @Override + public Map feedbackPointStatusToWms(Map jsonObject) { + try { + MDC.put(log_file_type, log_type); + AddressDto addressDto = addressService.findByCode("feedbackPointStatusToWms"); + String methods_url = addressDto.getMethods_url(); + String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); + String url = wmsurl + methods_url; + + JSONObject json = new JSONObject(); + json.put("task_uuid", jsonObject.get("device_code")); + json.put("task_code", jsonObject.get("point_status")); + json.put("task_status", jsonObject.get("point_mode")); + json.put("point_error", jsonObject.get("point_error")); + log.info("feedbackPointStatusToWms - 请求参数 {}", json.toString()); + try { + String result2 = HttpRequest.post(url) + .body(String.valueOf(json)) + .execute().body(); + System.out.println(result2); + log.info("feedbackPointStatusToWms - 返回参数 {}", result2); + } catch (Exception e) { + String msg = e.getMessage(); + //网络不通 + System.out.println(msg); + + } + + JSONObject resultJson = new JSONObject(); + resultJson.put("status", HttpStatus.OK); + resultJson.put("message", "操作成功"); + resultJson.put("data", new JSONArray()); + return resultJson; + } finally { + MDC.remove(log_file_type); + } + + } + + @Override + public JSONArray getDeviceStatusToWms() { + try { + MDC.put(log_file_type, log_type); + String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); + AddressDto addressDto = addressService.findByCode("getDeviceStatusToWms"); + String methods_url = addressDto.getMethods_url(); + String url = wmsurl + methods_url; + String result = ""; + try { + result = HttpRequest.get(url) + .execute().body(); + System.out.println(result); + log.info("getTaskStatusToWms - 返回参数 {}", result); + } catch (Exception e) { + System.out.println(e.getMessage()); + } + JSONArray jsonArray = JSONArray.parseArray(result); + return jsonArray; + } finally { + MDC.remove(log_file_type); + } + + } + + @Override + public HttpResponse requestSignalInteraction(String device_code, String vehicle_code, String action) { + try { + MDC.put(log_file_type, log_type); + String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); + JSONObject json = new JSONObject(); + json.put("device_code", device_code); + json.put("vehicle_code", vehicle_code); + json.put("action", action); + + AddressDto addressDto = addressService.findByCode("requestSignalInteraction"); + String methods_url = addressDto.getMethods_url(); + String url = wmsurl + methods_url; + HttpResponse result = null; + log.info("requestSignalInteraction - 请求参数 {}", json.toString()); + try { + result = HttpRequest.post(url) + .body(String.valueOf(json)) + .execute(); + System.out.println(result); + log.info("requestSignalInteraction - 返回参数 {}", result.body()); + } catch (Exception e) { + String msg = e.getMessage(); + //网络不通 + System.out.println(msg); + + } + return result; + } finally { + MDC.remove(log_file_type); + } + + } + + + @Override + public String requestTaskAgain(String address, String task_id, String vehicle_code) { + try { + MDC.put(log_file_type, log_type); + String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); + String device_code = deviceService.queryDeviceCodeByAddress(Integer.parseInt(address)); + JSONObject jo = new JSONObject(); + jo.put("device_code", device_code); + jo.put("task_id", task_id); + jo.put("vehicle_code", vehicle_code); + String result2 = null; + + AddressDto addressDto = addressService.findByCode("requestTaskAgain"); + String methods_url = addressDto.getMethods_url(); + String url = wmsurl + methods_url; + log.info("requestTaskAgain - 请求参数 {}", jo); + + try { + result2 = HttpRequest.post(url) + .body(String.valueOf(jo)) + .execute().body(); + System.out.println(result2); + log.info("requestTaskAgain - 返回参数 {}", result2); + } catch (Exception e) { + String msg = e.getMessage(); + //网络不通 + System.out.println(msg); + } + return result2; + } finally { + MDC.remove(log_file_type); + } + + } + + @Override + public String apply_InEmpty(String device_code, String type, String quantity, String container_code) { + try { + MDC.put(log_file_type, log_type); + if (StrUtil.isEmpty(container_code)) { + log.info("apply_InEmpty - 空盘入库申请校验失败,{}{}", device_code, "设备条码为空"); + throw new BadRequestException("地址对应设备未找到"); + } + String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); + JSONObject jo = new JSONObject(); + jo.put("device_code", device_code); + jo.put("type", type); + jo.put("quantity", quantity); + jo.put("container_code", container_code); + + String result2 = ""; + + AddressDto addressDto = addressService.findByCode("apply_InEmpty"); + String methods_url = addressDto.getMethods_url(); + String url = wmsurl + methods_url; + log.info("requestTaskAgain - 请求参数 {}", jo); + + try { + result2 = HttpRequest.post(url) + .header("Authorization", token) + .body(String.valueOf(jo)) + .execute().body(); + System.out.println(result2); + log.info("requestTaskAgain - 返回参数 {}", result2); + } catch (Exception e) { + String msg = e.getMessage(); + //网络不通 + System.out.println(msg); + } + return result2; + } finally { + MDC.remove(log_file_type); + } + + } + + @Override + public String apply_OutEmpty(String device_code) { + try { + MDC.put(log_file_type, log_type); + String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); + JSONObject jo = new JSONObject(); + jo.put("device_code", device_code); + String result2 = ""; + + AddressDto addressDto = addressService.findByCode("apply_OutEmpty"); + String methods_url = addressDto.getMethods_url(); + String url = wmsurl + methods_url; + log.info("apply_OutEmpty - 请求参数 {}", jo); + try { + result2 = HttpRequest.post(url) + .header("Authorization", token) + .body(String.valueOf(jo)) + .execute().body(); + System.out.println(result2); + log.info("apply_OutEmpty - 返回参数 {}", result2); + } catch (Exception e) { + String msg = e.getMessage(); + //网络不通 + System.out.println(msg); + } + return result2; + } finally { + MDC.remove(log_file_type); + } + + } + + @Override + public HttpResponse feedbackAgvStatus(String device_code, String error, String error_message) { + try { + MDC.put(log_file_type, log_type); + String wmsUrl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); + + JSONObject json = new JSONObject(); + json.put("device_code", device_code); + json.put("error", error); + json.put("error_message", error_message); + + AddressDto addressDto = addressService.findByCode("feedbackAgvStatus"); + String methods_url = addressDto.getMethods_url(); + String url = wmsUrl + methods_url; + HttpResponse result = null; + log.info("feedbackAgvStatus - 请求参数 {}", json); + + try { + result = HttpRequest.post(url) + .body(String.valueOf(json)) + .execute(); + System.out.println(result); + log.info("feedbackAgvStatus - 返回参数 {}", result.body()); + } catch (Exception e) { + String msg = e.getMessage(); + //网络不通 + System.out.println(msg); + } + return result; + } finally { + MDC.remove(log_file_type); + } + + } + + @Override + public HttpResponse feedbackDeviceStatus(String device_code, String code, String value) { + try { + MDC.put(log_file_type, log_type); + String wmsUrl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); + + JSONObject json = new JSONObject(); + json.put("device_code", device_code); + json.put("back_time", DateUtil.getStringAllDate()); + JSONArray ja = new JSONArray(); + JSONObject jo = new JSONObject(); + jo.put("code", code); + jo.put("value", value); + ja.add(jo); + json.put("data", ja); + AddressDto addressDto = addressService.findByCode("feedbackDeviceStatus"); + String methods_url = addressDto.getMethods_url(); + String url = wmsUrl + methods_url; + HttpResponse result = null; + log.info("feedbackDeviceStatus - 请求参数 {}", json); + + try { + result = HttpRequest.post(url) + .body(String.valueOf(json)) + .execute(); + System.out.println(result); + log.info("feedbackDeviceStatus - 返回参数 {}", result.body()); + } catch (Exception e) { + String msg = e.getMessage(); + //网络不通 + System.out.println(msg); + } + return result; + } finally { + MDC.remove(log_file_type); + } + + } + + @Override + public HttpResponse feedbackAgv(JSONArray from) { + try { + MDC.put(log_file_type, log_type); + String wmsUrl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); + AddressDto addressDto = addressService.findByCode("feedbackAgv"); + String methods_url = addressDto.getMethods_url(); + String url = wmsUrl + methods_url; + HttpResponse result = null; + log.info("feedbackAgv - 请求参数 {}", from); + + try { + result = HttpRequest.post(url) + .body(String.valueOf(from)) + .execute(); + System.out.println(result); + log.info("feedbackAgv - 返回参数 {}", result.body()); + } catch (Exception e) { + String msg = e.getMessage(); + //网络不通 + System.out.println(msg); + } + return result; + } finally { + MDC.remove(log_file_type); + } + + } + + @Override + public HttpResponse applyOpenOrCloseDoor(String device_code, String status) { + try { + MDC.put(log_file_type, log_type); + String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); + JSONObject jo = new JSONObject(); + jo.put("device_code", device_code); + jo.put("status", status); + HttpResponse result = null; + log.info("applyOpenOrCloseDoor - 请求参数 {}", jo.toString()); + + AddressDto addressDto = addressService.findByCode("applyOpenOrCloseDoor"); + String methods_url = addressDto.getMethods_url(); + try { + result = HttpRequest.post(wmsurl + methods_url) + .body(String.valueOf(jo)) + .execute(); + System.out.println(result); + log.info("applyOpenOrCloseDoor - 返回参数 {}", result.body()); + } catch (Exception e) { + String msg = e.getMessage(); + //网络不通 + System.out.println(msg); + } + return result; + } finally { + MDC.remove(log_file_type); + } + + } + + @Override + public HttpResponse queryDoorsStatus() { + try { + MDC.put(log_file_type, log_type); + String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); + + HttpResponse result = null; + log.info("queryDoorStatus - 请求"); + AddressDto addressDto = addressService.findByCode("queryDoorsStatus"); + String methods_url = addressDto.getMethods_url(); + try { + result = HttpRequest.get(wmsurl + methods_url) + .body("") + .execute(); + log.info("queryDoorStatus - 返回参数 {}", result.body()); + } catch (Exception e) { + String msg = e.getMessage(); + //网络不通 + System.out.println(msg); + + } return result; } finally { MDC.remove(log_file_type); @@ -566,13 +950,77 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } @Override - public String feedTaskStatus(BaseRequest requestParam) { + public HttpResponse feedbackActionStatusToWms(JSONArray data) { + String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); + + String task_code = ""; + for (int i = 0; i < data.size(); i++) { + JSONObject json = (JSONObject) data.get(i); + task_code = json.getString("task_code"); + } + TaskDto taskDto = taskService.findByCode(task_code); + String vehicle_code = taskDto.getVehicle_code(); + + HttpResponse result2 = null; + log.info("feedbackActionStatusToWms - 请求参数 {}", data.toString()); + AddressDto addressDto = addressService.findByCode("feedbackActionStatusToWms"); + String methods_url = addressDto.getMethods_url(); + try { + result2 = HttpRequest.post(wmsurl + methods_url) +// .header("Authorization", token) + .body(String.valueOf(data)) + .execute(); + JSONObject jo = (JSONObject) JSON.toJSON(result2.body()); + log.info("feedbackActionStatusToWms - 返回参数 {}", jo.toString()); + } catch (Exception e) { + String msg = e.getMessage(); + //网络不通 + System.out.println(msg); + log.info("feedbackActionStatusToWms - 异常返回参数 {}", msg); + } + + String type = ""; + if (!ObjectUtil.isEmpty(result2)) { + if (result2.getStatus() == 200) { + type = "info"; + } else { + type = "error"; + } + } else { + type = "error"; + } + + + return result2; + } + + + /** + * 入窑位扫码后向lms反馈 + * + * @param param + * @return + */ + @Override + public HttpResponse reverseGroup(JSONObject param) { try { MDC.put(log_file_type, log_type); - String api = addressService.findByCode("feedTaskStatus").getMethods_url(); - log.info("feedTaskStatus-----输入参数{}", JSON.toJSONString(requestParam, SerializerFeature.DisableCircularReferenceDetect)); - String result = LmsUtil.notifyAcs(api, requestParam); - log.info("feedTaskStatus-----输出参数{}", result); + String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); + + HttpResponse result = null; + log.info("reverseGroup - 请求"); + AddressDto addressDto = addressService.findByCode("reverseGroup"); + String methods_url = addressDto.getMethods_url(); + try { + result = HttpRequest.post(wmsurl + methods_url) + .body(param.toJSONString()) + .execute(); + log.info("reverseGroup - 返回参数 {}", result.body()); + } catch (Exception e) { + String msg = e.getMessage(); + //网络不通 + System.out.println(msg); + } return result; } finally { MDC.remove(log_file_type); @@ -580,13 +1028,52 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } @Override - public String notify(BaseRequest requestParam) { + public HttpResponse feedbackVehicleType(JSONObject param) { try { MDC.put(log_file_type, log_type); - String api = addressService.findByCode("notify").getMethods_url(); - log.info("notify-----输入参数{}", JSON.toJSONString(requestParam, SerializerFeature.DisableCircularReferenceDetect)); - String result = LmsUtil.notifyAcs(api, requestParam); - log.info("notify-----输出参数{}", result); + String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); + + HttpResponse result = null; + log.info("feedbackVehicleType - 请求参数 {}", param); + AddressDto addressDto = addressService.findByCode("feedbackVehicleType"); + String methods_url = addressDto.getMethods_url(); + try { + result = HttpRequest.post(wmsurl + methods_url) + .body(param.toJSONString()) + .execute(); + log.info("feedbackVehicleType - 返回参数 {}", result.body()); + } catch (Exception e) { + String msg = e.getMessage(); + //网络不通 + System.out.println(msg); + } + return result; + } finally { + MDC.remove(log_file_type); + } + } + + @Override + public HttpResponse mark(JSONObject param) { + try { + MDC.put(log_file_type, log_type); + String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); + + HttpResponse result = null; + log.info("mark - 请求参数 {}", param); + AddressDto addressDto = addressService.findByCode("mark"); + String methods_url = addressDto.getMethods_url(); + try { + result = HttpRequest + .post(wmsurl + methods_url) + .body(param.toJSONString()) + .execute(); + log.info("mark - 返回参数 {}", result.body()); + } catch (Exception e) { + String msg = e.getMessage(); + //网络不通 + System.out.println(msg); + } return result; } finally { MDC.remove(log_file_type); diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java index b59ab8e..a09e04d 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java @@ -18,7 +18,7 @@ import org.nl.acs.device_driver.basedriver.hongxiang_device.HongXiangConveyorDev import org.nl.acs.device_driver.basedriver.plug_pull_device_site.PlugPullDeviceSiteDeviceDriver; import org.nl.acs.device_driver.basedriver.standard_autodoor.StandardAutodoorDeviceDriver; 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.data.one.*; import org.nl.acs.ext.wms.service.AcsToLiKuService; import org.nl.acs.ext.wms.service.WmsToAcsService; import org.nl.acs.instruction.domain.Instruction; diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/rest/InstructionController.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/rest/InstructionController.java index ec58e83..398d3e3 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/rest/InstructionController.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/rest/InstructionController.java @@ -1,6 +1,7 @@ package org.nl.acs.instruction.rest; import cn.dev33.satoken.annotation.SaIgnore; +import cn.hutool.core.util.ObjectUtil; import org.nl.common.logging.annotation.Log; import org.nl.acs.instruction.domain.Instruction; import org.nl.acs.instruction.service.InstructionService; @@ -36,6 +37,9 @@ public class InstructionController { @ApiOperation("查询指令") //@PreAuthorize("@el.check('instruction:list')") public ResponseEntity query(@RequestParam Map whereJson, Pageable page) { + if(ObjectUtil.isEmpty(whereJson.get("status"))) { + whereJson.put("status", "1"); + } return new ResponseEntity<>(instructionService.queryAll(whereJson, page), HttpStatus.OK); } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java index 450fb52..32d0498 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java @@ -85,6 +85,7 @@ public class InstructionServiceImpl extends CommonServiceImpl instructions = new CopyOnWriteArrayList(); // List instructions_mybatis = new CopyOnWriteArrayList(); @@ -384,13 +385,13 @@ public class InstructionServiceImpl extends CommonServiceImpl T format(String json, Class clazz) throws RuntimeException { + try { + return getObjectMapper().readValue(json, clazz); + } catch (IOException var3) { + throw new RuntimeException(var3); + } + } + + public static List formatList(String json, Class clazz) throws RuntimeException { + try { + JavaType type = getObjectMapper().getTypeFactory().constructParametricType(List.class, new Class[]{clazz}); + return (List)getObjectMapper().readValue(json, type); + } catch (IOException var3) { + throw new RuntimeException(var3); + } + } + + public static Map formatMap(String json, Class clazzKey, Class clazzValue) throws RuntimeException { + try { + JavaType type = getObjectMapper().getTypeFactory().constructParametricType(Map.class, new Class[]{clazzKey, clazzValue}); + return (Map)getObjectMapper().readValue(json, type); + } catch (IOException var4) { + throw new RuntimeException(var4); + } + } + + public static List> formatListTwo(String json, Class clazz) throws RuntimeException { + try { + TypeFactory typeFactory = getObjectMapper().getTypeFactory(); + JavaType type = typeFactory.constructParametrizedType(List.class, List.class, new Class[]{clazz}); + type = typeFactory.constructParametrizedType(List.class, List.class, new JavaType[]{type}); + return (List)getObjectMapper().readValue(json, type); + } catch (IOException var4) { + throw new RuntimeException(var4); + } + } +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/OpcServerService.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/OpcServerService.java index 3e1f7a3..6341f02 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/OpcServerService.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/OpcServerService.java @@ -15,7 +15,11 @@ public interface OpcServerService { Group getServer(String var1); + Group getServerByNewConn(String var1); + void writeInteger(String var1, ItemValue... var2); + void writeIntegerByNewConn(String var1, ItemValue... var2); + void clearServer(String var1); } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/OpcServerServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/OpcServerServiceImpl.java index 8695fbe..32ea50e 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/OpcServerServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/OpcServerServiceImpl.java @@ -1,5 +1,6 @@ package org.nl.acs.opc; +import cn.hutool.core.util.StrUtil; import org.jinterop.dcom.common.JIException; import org.nl.acs.auto.initial.ApplicationAutoInitial; import org.nl.acs.device_driver.driver.ItemValue; @@ -72,62 +73,115 @@ public class OpcServerServiceImpl implements OpcServerService, ApplicationAutoIn } public synchronized Group getServer(String code) { - Group group = null; - group = (Group) this.groups.get(code); - if (group != null) { - try { - if (group.isActive()) { - return group; + synchronized(this.buildLock(code)) { + Group group = null; + group = (Group)this.groups.get(code); + if (group != null) { + label68: { + Group var10000; + try { + if (!group.isActive()) { + break label68; + } + + var10000 = group; + } catch (JIException var14) { + log.error(code, var14); + break label68; + } + + return var10000; } - } catch (JIException var9) { - var9.printStackTrace(); } - } - Server server = (Server) this.servers.get(code); - boolean needcreate = false; - if (server == null) { - needcreate = true; - } else { - try { - group = server.findGroup(OpcConfig.opc_server_default_group); - } catch (UnknownHostException - | JIException - | UnknownGroupException - | NotConnectedException - | IllegalArgumentException var8) { - var8.printStackTrace(); + Server server = (Server)this.servers.get(code); + boolean needcreate = false; + String groupName = code; + if (server == null) { needcreate = true; + } else { + try { + group = server.findGroup(groupName); + } catch (UnknownHostException | JIException | UnknownGroupException | NotConnectedException | IllegalArgumentException var13) { + log.error(code, var13); + needcreate = true; + } } + + if (needcreate) { + OpcServerManageDto dto = (OpcServerManageDto)this.opcServerManageDtos.get(code); + if (dto == null) { + throw new RuntimeException(code+"不存在"); + } + +// if (server!=null){ +// server.disconnect(); +// server=null; +// } + + if (server == null) { + server = OpcServerUtl.getServerWithOutException(dto.getOpc_host(), StrUtil.trim(dto.getCls_id()), dto.getUser(), dto.getPassword(), StrUtil.trim(dto.getDomain())); } + + try { + group = server.addGroup(groupName); + } catch (Exception var12) { + this.clearServer(code); + ThreadUtl.sleep(5000L); + log.warn("获取opc出错重新获取", code, var12); + server = OpcServerUtl.getServerWithOutException(dto.getOpc_host(), StrUtil.trim(dto.getCls_id()), dto.getUser(), dto.getPassword(), StrUtil.trim(dto.getDomain())); + try { + group = server.addGroup(groupName); + } catch (Exception var11) { + throw new RuntimeException(var12); + } + } + + this.servers.put(code, server); + this.groups.put(code, group); + } + + return group; } + } - if (needcreate) { - OpcServerManageDto dto = (OpcServerManageDto) this.opcServerManageDtos.get(code); - if (dto == null) { - throw new BadRequestException("code 不存在"); + @Override + public Group getServerByNewConn(String code) { + synchronized(this.buildLock(code)) { + + Server server = (Server)this.servers.get(code); + if (server!=null){ + this.clearServer(code); } - server = OpcServerUtl.getServerWithOutException( - dto.getOpc_host(), - dto.getCls_id(), - dto.getUser(), - dto.getPassword(), - dto.getDomain()); - -// server = OpcServerUtl.getServerWithOutException(this.OpcServer.getOpc_host(), this.OpcServer.getCls_id(), this.OpcServer.getUser(), this.OpcServer.getPassword(), this.OpcServer.getDomain()); + OpcServerManageDto dto = (OpcServerManageDto)this.opcServerManageDtos.get(code); + if (dto == null) { + throw new RuntimeException(code+"不存在"); + } +// if (server == null) { + server = OpcServerUtl.getServerWithOutException(dto.getOpc_host(), StrUtil.trim(dto.getCls_id()), dto.getUser(), dto.getPassword(), StrUtil.trim(dto.getDomain())); +// } + String groupName = code; + Group group = null; try { - group = server.addGroup(OpcConfig.opc_server_default_group); - } catch (Exception var7) { - throw new BadRequestException(var7.toString()); + group = server.addGroup(groupName); + } catch (Exception var12) { + this.clearServer(code); + ThreadUtl.sleep(2000L); + log.warn("获取opc出错重新获取", code, var12); + server = OpcServerUtl.getServerWithOutException(dto.getOpc_host(), StrUtil.trim(dto.getCls_id()), dto.getUser(), dto.getPassword(), StrUtil.trim(dto.getDomain())); + try { + group = server.addGroup(groupName); + } catch (Exception var11) { + throw new RuntimeException(var12); + } } this.servers.put(code, server); this.groups.put(code, group); + return group; } - - return group; } public synchronized void clearServer(String code) { @@ -157,4 +211,28 @@ public class OpcServerServiceImpl implements OpcServerService, ApplicationAutoIn throw var4; } } + + @Override + public void writeIntegerByNewConn(String code, ItemValue... values) { + try { + Group group = this.getServerByNewConn(code); + OpcUtl.writeValue(group, values); + } catch (Exception var4) { + this.clearServer(code); + log.info("写入出错opc server {} 重新加载", code, var4); + ThreadUtl.sleep(1000L); + throw var4; + } + } + + private String buildLock(String key) { + if (StrUtil.isEmpty(key)) { + key = ""; + } + StringBuilder builder = new StringBuilder(); + builder.append("OpcServerService."); + builder.append(key); + String lock = builder.toString().intern(); + return lock; + } } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/rest/TaskController.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/rest/TaskController.java index 8c2f34c..4020563 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/rest/TaskController.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/rest/TaskController.java @@ -1,6 +1,7 @@ package org.nl.acs.task.rest; import cn.dev33.satoken.annotation.SaIgnore; +import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import org.nl.common.logging.annotation.Log; import org.nl.acs.task.domain.Task; @@ -38,6 +39,9 @@ public class TaskController { //@PreAuthorize("@el.check('task:list')") public ResponseEntity query(@RequestParam Map whereJson, Pageable page) { // return new ResponseEntity<>(taskService.queryAllByCache(whereJson, page), HttpStatus.OK); + if(ObjectUtil.isEmpty(whereJson.get("status"))) { + whereJson.put("status", "1"); + } return new ResponseEntity<>(taskService.queryAll(whereJson, page), HttpStatus.OK); } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/dto/TaskDto.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/dto/TaskDto.java index c80a62d..96c0712 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/dto/TaskDto.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/dto/TaskDto.java @@ -290,4 +290,16 @@ public class TaskDto implements Serializable { * 烘箱温度 */ private String temperature; + + /** + * 起点高度 + */ + private String start_height; + + /** + * 终点高度 + */ + private String next_height; + + } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java index 3536731..8b528b3 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java @@ -5,7 +5,6 @@ import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -23,7 +22,7 @@ import org.nl.acs.device.service.DeviceService; import org.nl.acs.device.service.dto.DeviceAssignedDto; import org.nl.acs.device.service.impl.DeviceServiceImpl; import org.nl.acs.device_driver.RequestMethodEnum; -import org.nl.acs.ext.wms.data.feedBackTaskStatus.FeedBackTaskStatusRequest; +import org.nl.acs.ext.wms.data.one.feedBackTaskStatus.FeedBackTaskStatusRequest; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.instruction.domain.Instruction; import org.nl.acs.instruction.service.InstructionService; diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/utils/DateUtil.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/utils/DateUtil.java new file mode 100644 index 0000000..51961a1 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/utils/DateUtil.java @@ -0,0 +1,836 @@ +package org.nl.acs.utils; + +/** + * projectName: xxxx + * fileName: DateUtil.java + * packageName: test + * date: 2017-12-20 15:36 + * copyright(c) 2017-2020 xxx公司 + */ + +import java.sql.Timestamp; +import java.text.ParseException; +import java.text.ParsePosition; +import java.text.SimpleDateFormat; +import java.util.*; + +/** + * @version: V1.0 + * @author: fendo + * @className: DateUtil + * @packageName: test + * @description: 时间操作工具类 + * @data: 2017-12-20 15:36 + **/ +public class DateUtil { + + public static String pattern = "yyyy-MM-dd"; + public static SimpleDateFormat formatter = new SimpleDateFormat(pattern); + public static SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + /** + * 获取现在时间 + * + * @return 返回时间类型 yyyy-MM-dd HH:mm:ss + */ + public static Date getNowDate() { + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String dateString = formatter.format(new Date()); + ParsePosition pos = new ParsePosition(8); + Date currentTime_2 = formatter.parse(dateString, pos); + return currentTime_2; + } + + /** + * 获取现在时间 + * + * @return返回短时间格式 yyyy-MM-dd + */ + public static Date getNowDateShort() { + String dateString = formatter.format(new Date()); + ParsePosition pos = new ParsePosition(8); + Date currentTime_2 = formatter.parse(dateString, pos); + return currentTime_2; + } + + /** + * 获取现在时间 + * + * @return返回字符串格式 yyyy-MM-dd HH:mm:ss + */ + public static String getStringDate() { + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String dateString = formatter.format(new Date()); + return dateString; + } + + /** + * 获取现在时间 + * + * @return返回字符串格式 yyyyMMddHHmmss + */ + public static String getStringAllDate() { + SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + String dateString = formatter.format(new Date()); + return dateString; + } + + /** + * 获取现在时间 + * + * @return 返回短时间字符串格式yyyy-MM-dd + */ + public static String getStringDateShort() { + String dateString = formatter.format(new Date()); + return dateString; + } + + /** + * 获取时间 小时:分;秒 HH:mm:ss + * + * @return + */ + public static String getTimeShort() { + SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss"); + String dateString = formatter.format(new Date()); + return dateString; + } + + /** + * 将长时间格式字符串转换为时间 yyyy-MM-dd HH:mm:ss + * + * @param strDate + * @return + */ + public static Date strToDateLong(String strDate) { + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + ParsePosition pos = new ParsePosition(0); + Date strtodate = formatter.parse(strDate, pos); + return strtodate; + } + + /** + * 将长时间格式时间转换为字符串 yyyy-MM-dd HH:mm:ss + * + * @param dateDate + * @return + */ + public static String dateToStrLong(Date dateDate) { + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String dateString = formatter.format(dateDate); + return dateString; + } + + /** + * 将短时间格式时间转换为字符串 yyyy-MM-dd + * + * @param dateDate + * @return + */ + public static String dateToStr(Date dateDate) { + String dateString = formatter.format(dateDate); + return dateString; + } + + + /** + * 将短时间格式字符串转换为时间 yyyy-MM-dd + * + * @param strDate + * @return + */ + public static Date strToDate(String strDate) { + ParsePosition pos = new ParsePosition(0); + Date strtodate = formatter.parse(strDate, pos); + return strtodate; + } + + /** + * 将短时间格式字符串转换为时间 yyyy-MM-dd HH:mm:ss + * + * @param strDate + * @return + */ + public static Timestamp strToDateSql(String strDate) { + ParsePosition pos = new ParsePosition(0); + Date strtodate = formatter2.parse(strDate, pos); + return new Timestamp(strtodate.getTime()); + } + + /** + * 得到现在时间 + * + * @return + */ + public static Date getNow() { + Date currentTime = new Date(); + return currentTime; + } + + /** + * 提取一个月中的最后一天 + * + * @param day + * @return + */ + public static Date getLastDate(long day) { + Date date = new Date(); + long date_3_hm = date.getTime() - 3600000 * 34 * day; + Date date_3_hm_date = new Date(date_3_hm); + return date_3_hm_date; + } + + /** + * 得到现在时间 + * + * @return 字符串 yyyyMMdd HHmmss + */ + public static String getStringToday() { + Date currentTime = new Date(); + SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd HHmmss"); + String dateString = formatter.format(currentTime); + return dateString; + } + + /** + * 功能:
+ * + * @author Tony + * @version 2016年12月16日 下午4:41:51
+ */ + public static String getTodayShort() { + Date currentTime = new Date(); + SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd"); + String dateString = formatter.format(currentTime); + return dateString; + } + + /** + * @param @param value + * @param @return + * @return String + * @throws + * @Description: 输入一个整数类型的字符串, 然后转换成时分秒的形式输出 + * 例如:输入568 + * 返回结果为:00:09:28 + * 输入null或者“” + * 返回结果为:00:00:00 + * @author Tony 鬼手卡卡 + * @date 2016-4-20 + */ + public static String getHHMMSS(String value) { + String hour = "00"; + String minute = "00"; + String second = "00"; + if (value != null && !value.trim().equals("")) { + int v_int = Integer.valueOf(value); + hour = v_int / 3600 + "";//获得小时; + minute = v_int % 3600 / 60 + "";//获得小时; + second = v_int % 3600 % 60 + "";//获得小时; + } + return (hour.length() > 1 ? hour : "0" + hour) + ":" + (minute.length() > 1 ? minute : "0" + minute) + ":" + (second.length() > 1 ? second : "0" + second); + } + + /** + * 得到现在小时 + */ + public static String getHour() { + Date currentTime = new Date(); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String dateString = formatter.format(currentTime); + String hour; + hour = dateString.substring(11, 13); + return hour; + } + + /** + * 得到现在分钟 + * + * @return + */ + public static String getTime() { + Date currentTime = new Date(); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String dateString = formatter.format(currentTime); + String min; + min = dateString.substring(14, 16); + return min; + } + + /** + * 根据用户传入的时间表示格式,返回当前时间的格式 如果是yyyyMMdd,注意字母y不能大写。 + * + * @param sformat yyyyMMddhhmmss + * @return + */ + public static String getUserDate(String sformat) { + Date currentTime = new Date(); + SimpleDateFormat formatter = new SimpleDateFormat(sformat); + String dateString = formatter.format(currentTime); + return dateString; + } + + /** + * 二个小时时间间的差值,必须保证二个时间都是"HH:MM"的格式,返回字符型的分钟 + */ + public static String getTwoHour(String st1, String st2) { + String[] kk = null; + String[] jj = null; + kk = st1.split(":"); + jj = st2.split(":"); + if (Integer.parseInt(kk[0]) < Integer.parseInt(jj[0])) + return "0"; + else { + double y = Double.parseDouble(kk[0]) + Double.parseDouble(kk[1]) / 60; + double u = Double.parseDouble(jj[0]) + Double.parseDouble(jj[1]) / 60; + if ((y - u) > 0) + return y - u + ""; + else + return "0"; + } + } + + /** + * 得到二个日期间的间隔天数 + */ + public static String getTwoDay(String sj1, String sj2) { + long day = 0; + try { + Date date = formatter.parse(sj1); + Date mydate = formatter.parse(sj2); + day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000); + } catch (Exception e) { + return ""; + } + return day + ""; + } + + /** + * 时间前推或后推分钟,其中JJ表示分钟. + */ + public static String getPreTime(String sj1, String jj) { + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String mydate1 = ""; + try { + Date date1 = format.parse(sj1); + long Time = (date1.getTime() / 1000) + Integer.parseInt(jj) * 60; + date1.setTime(Time * 1000); + mydate1 = format.format(date1); + } catch (Exception e) { + } + return mydate1; + } + + /** + * 得到一个时间延后或前移几天的时间,nowdate(yyyy-mm-dd)为时间,delay为前移或后延的天数 + */ + public static String getNextDay(String nowdate, String delay) { + try { + String mdate = ""; + Date d = strToDate(nowdate); + long myTime = (d.getTime() / 1000) + Integer.parseInt(delay) * 24 * 60 * 60; + d.setTime(myTime * 1000); + mdate = formatter.format(d); + return mdate; + } catch (Exception e) { + return ""; + } + } + + /** + * 功能:
距离现在几天的时间是多少 + * 获得一个时间字符串,格式为:yyyy-MM-dd HH:mm:ss + * day 如果为整数,表示未来时间 + * 如果为负数,表示过去时间 + * + * @author Tony + * @version 2016年11月29日 上午11:02:56
+ */ + public static String getFromNow(int day) { + Date date = new Date(); + long dateTime = (date.getTime() / 1000) + day * 24 * 60 * 60; + date.setTime(dateTime * 1000); + return formatter2.format(date); + } + + /** + * 判断是否润年 + * + * @param ddate + * @return + */ + public static boolean isLeapYear(String ddate) { + + /** + * 详细设计: 1.被400整除是闰年,否则: 2.不能被4整除则不是闰年 3.能被4整除同时不能被100整除则是闰年 + * 3.能被4整除同时能被100整除则不是闰年 + */ + Date d = strToDate(ddate); + GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance(); + gc.setTime(d); + int year = gc.get(Calendar.YEAR); + if ((year % 400) == 0) + return true; + else if ((year % 4) == 0) { + if ((year % 100) == 0) + return false; + else + return true; + } else + return false; + } + + /** + * 返回美国时间格式 26 Apr 2006 + * + * @param str + * @return + */ + public static String getEDate(String str) { + ParsePosition pos = new ParsePosition(0); + Date strtodate = formatter.parse(str, pos); + String j = strtodate.toString(); + String[] k = j.split(" "); + return k[2] + k[1].toUpperCase() + k[5].substring(2, 4); + } + + /** + * 获取一个月的最后一天 + * + * @param dat + * @return + */ + public static String getEndDateOfMonth(String dat) {// yyyy-MM-dd + String str = dat.substring(0, 8); + String month = dat.substring(5, 7); + int mon = Integer.parseInt(month); + if (mon == 1 || mon == 3 || mon == 5 || mon == 7 || mon == 8 || mon == 10 || mon == 12) { + str += "31"; + } else if (mon == 4 || mon == 6 || mon == 9 || mon == 11) { + str += "30"; + } else { + if (isLeapYear(dat)) { + str += "29"; + } else { + str += "28"; + } + } + return str; + } + + /** + * 判断二个时间是否在同一个周 + * + * @param date1 + * @param date2 + * @return + */ + public static boolean isSameWeekDates(Date date1, Date date2) { + Calendar cal1 = Calendar.getInstance(); + Calendar cal2 = Calendar.getInstance(); + cal1.setTime(date1); + cal2.setTime(date2); + int subYear = cal1.get(Calendar.YEAR) - cal2.get(Calendar.YEAR); + if (0 == subYear) { + if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR)) + return true; + } else if (1 == subYear && 11 == cal2.get(Calendar.MONTH)) { + // 如果12月的最后一周横跨来年第一周的话则最后一周即算做来年的第一周 + if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR)) + return true; + } else if (-1 == subYear && 11 == cal1.get(Calendar.MONTH)) { + if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR)) + return true; + } + return false; + } + + /** + * 产生周序列,即得到当前时间所在的年度是第几周 + * + * @return + */ + public static String getSeqWeek() { + Calendar c = Calendar.getInstance(Locale.CHINA); + String week = Integer.toString(c.get(Calendar.WEEK_OF_YEAR)); + if (week.length() == 1) + week = "0" + week; + String year = Integer.toString(c.get(Calendar.YEAR)); + return year + week; + } + + /** + * 获得一个日期所在的周的星期几的日期,如要找出2002年2月3日所在周的星期一是几号 + * + * @param sdate + * @param num + * @return + */ + public static String getWeek(String sdate, String num) { + // 再转换为时间 + Date dd = DateUtil.strToDate(sdate); + Calendar c = Calendar.getInstance(); + c.setTime(dd); + if (num.equals("1")) // 返回星期一所在的日期 + c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); + else if (num.equals("2")) // 返回星期二所在的日期 + c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY); + else if (num.equals("3")) // 返回星期三所在的日期 + c.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + else if (num.equals("4")) // 返回星期四所在的日期 + c.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY); + else if (num.equals("5")) // 返回星期五所在的日期 + c.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY); + else if (num.equals("6")) // 返回星期六所在的日期 + c.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY); + else if (num.equals("0")) // 返回星期日所在的日期 + c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); + return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime()); + } + + /** + * 根据一个日期,返回是星期几的字符串 + * + * @param sdate + * @return + */ + public static String getWeek(String sdate) { + // 再转换为时间 + Date date = DateUtil.strToDate(sdate); + Calendar c = Calendar.getInstance(); + c.setTime(date); + // int hour=c.get(Calendar.DAY_OF_WEEK); + // hour中存的就是星期几了,其范围 1~7 + // 1=星期日 7=星期六,其他类推 + return new SimpleDateFormat("EEEE").format(c.getTime()); + } + + public static String getWeekStr(String sdate) { + String str = ""; + str = DateUtil.getWeek(sdate); + if ("1".equals(str)) { + str = "星期日"; + } else if ("2".equals(str)) { + str = "星期一"; + } else if ("3".equals(str)) { + str = "星期二"; + } else if ("4".equals(str)) { + str = "星期三"; + } else if ("5".equals(str)) { + str = "星期四"; + } else if ("6".equals(str)) { + str = "星期五"; + } else if ("7".equals(str)) { + str = "星期六"; + } + return str; + } + + /** + * 两个时间之间的天数 + * + * @param date1 + * @param date2 + * @return + */ + public static long getDays(String date1, String date2) { + if (date1 == null || date1.equals("")) + return 0; + if (date2 == null || date2.equals("")) + return 0; + // 转换为标准时间 + Date date = null; + Date mydate = null; + try { + date = formatter.parse(date1); + mydate = formatter.parse(date2); + } catch (Exception e) { + } + long day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000); + return day; + } + + /** + * 形成如下的日历 , 根据传入的一个时间返回一个结构 星期日 星期一 星期二 星期三 星期四 星期五 星期六 下面是当月的各个时间 + * 此函数返回该日历第一行星期日所在的日期 + * + * @param sdate + * @return + */ + public static String getNowMonth(String sdate) { + // 取该时间所在月的一号 + sdate = sdate.substring(0, 8) + "01"; + + // 得到这个月的1号是星期几 + Date date = DateUtil.strToDate(sdate); + Calendar c = Calendar.getInstance(); + c.setTime(date); + int u = c.get(Calendar.DAY_OF_WEEK); + String newday = DateUtil.getNextDay(sdate, (1 - u) + ""); + return newday; + } + + /** + * 取得数据库主键 生成格式为yyyymmddhhmmss+k位随机数 + * + * @param k 表示是取几位随机数,可以自己定 + */ + + public static String getNo(int k) { + + return getUserDate("yyyyMMddhhmmss") + getRandom(k); + } + + /** + * 返回一个随机数 + * + * @param i + * @return + */ + public static String getRandom(int i) { + Random jjj = new Random(); + if (i == 0) + return ""; + String jj = ""; + for (int k = 0; k < i; k++) { + jj = jj + jjj.nextInt(9); + } + return jj; + } + + public static boolean RightDate(String date) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); + if (date == null) + return false; + if (date.length() > 10) { + sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); + } else { + sdf = new SimpleDateFormat("yyyy-MM-dd"); + } + try { + sdf.parse(date); + } catch (ParseException pe) { + return false; + } + return true; + } + + /*************************************************************************** + * //nd=1表示返回的值中包含年度 //yf=1表示返回的值中包含月份 //rq=1表示返回的值中包含日期 //format表示返回的格式 1 + * 以年月日中文返回 2 以横线-返回 // 3 以斜线/返回 4 以缩写不带其它符号形式返回 // 5 以点号.返回 + **************************************************************************/ + public static String getStringDateMonth(String sdate, String nd, String yf, String rq, String format) { + Date currentTime = new Date(); + String dateString = formatter.format(currentTime); + String s_nd = dateString.substring(0, 4); // 年份 + String s_yf = dateString.substring(5, 7); // 月份 + String s_rq = dateString.substring(8, 10); // 日期 + String sreturn = ""; + //roc.util.MyChar mc = new roc.util.MyChar(); + //if (sdate == null || sdate.equals("") || !mc.Isdate(sdate)) { // 处理空值情况 + if (sdate == null || sdate.equals("")) { + if (nd.equals("1")) { + sreturn = s_nd; + // 处理间隔符 + if (format.equals("1")) + sreturn = sreturn + "年"; + else if (format.equals("2")) + sreturn = sreturn + "-"; + else if (format.equals("3")) + sreturn = sreturn + "/"; + else if (format.equals("5")) + sreturn = sreturn + "."; + } + // 处理月份 + if (yf.equals("1")) { + sreturn = sreturn + s_yf; + if (format.equals("1")) + sreturn = sreturn + "月"; + else if (format.equals("2")) + sreturn = sreturn + "-"; + else if (format.equals("3")) + sreturn = sreturn + "/"; + else if (format.equals("5")) + sreturn = sreturn + "."; + } + // 处理日期 + if (rq.equals("1")) { + sreturn = sreturn + s_rq; + if (format.equals("1")) + sreturn = sreturn + "日"; + } + } else { + // 不是空值,也是一个合法的日期值,则先将其转换为标准的时间格式 + sdate = getOKDate(sdate); + s_nd = sdate.substring(0, 4); // 年份 + s_yf = sdate.substring(5, 7); // 月份 + s_rq = sdate.substring(8, 10); // 日期 + if (nd.equals("1")) { + sreturn = s_nd; + // 处理间隔符 + if (format.equals("1")) + sreturn = sreturn + "年"; + else if (format.equals("2")) + sreturn = sreturn + "-"; + else if (format.equals("3")) + sreturn = sreturn + "/"; + else if (format.equals("5")) + sreturn = sreturn + "."; + } + // 处理月份 + if (yf.equals("1")) { + sreturn = sreturn + s_yf; + if (format.equals("1")) + sreturn = sreturn + "月"; + else if (format.equals("2")) + sreturn = sreturn + "-"; + else if (format.equals("3")) + sreturn = sreturn + "/"; + else if (format.equals("5")) + sreturn = sreturn + "."; + } + // 处理日期 + if (rq.equals("1")) { + sreturn = sreturn + s_rq; + if (format.equals("1")) + sreturn = sreturn + "日"; + } + } + return sreturn; + } + + public static String getNextMonthDay(String sdate, int m) { + sdate = getOKDate(sdate); + int year = Integer.parseInt(sdate.substring(0, 4)); + int month = Integer.parseInt(sdate.substring(5, 7)); + month = month + m; + if (month < 0) { + month = month + 12; + year = year - 1; + } else if (month > 12) { + month = month - 12; + year = year + 1; + } + String smonth = ""; + if (month < 10) + smonth = "0" + month; + else + smonth = "" + month; + return year + "-" + smonth + "-10"; + } + + /** + * 功能:
+ * + * @author Tony + * @version 2015-3-31 上午09:29:31
+ */ + public static String getOKDate(String sdate) { + if (sdate == null || sdate.equals("")) + return getStringDateShort(); + +// if (!VeStr.Isdate(sdate)) { +// sdate = getStringDateShort(); +// } +// // 将“/”转换为“-” +// sdate = VeStr.Replace(sdate, "/", "-"); + // 如果只有8位长度,则要进行转换 + if (sdate.length() == 8) + sdate = sdate.substring(0, 4) + "-" + sdate.substring(4, 6) + "-" + sdate.substring(6, 8); + ParsePosition pos = new ParsePosition(0); + Date strtodate = formatter.parse(sdate, pos); + String dateString = formatter.format(strtodate); + return dateString; + } + + /** + * 获取当前时间的前一天时间 + * + * @param cl + * @return + */ + private static String getBeforeDay(Calendar cl) { + //使用roll方法进行向前回滚 + //cl.roll(Calendar.DATE, -1); + //使用set方法直接进行设置 + // int day = cl.get(Calendar.DATE); + cl.add(Calendar.DATE, -1); + return formatter.format(cl.getTime()); + } + + /** + * 获取当前时间的后一天时间 + * + * @param cl + * @return + */ + private static String getAfterDay(Calendar cl) { + //使用roll方法进行回滚到后一天的时间 + //cl.roll(Calendar.DATE, 1); + //使用set方法直接设置时间值 + //int day = cl.get(Calendar.DATE); + cl.add(Calendar.DATE, 1); + return formatter.format(cl.getTime()); + } + + private static String getDateAMPM() { + GregorianCalendar ca = new GregorianCalendar(); + //结果为“0”是上午 结果为“1”是下午 + int i = ca.get(GregorianCalendar.AM_PM); + return i == 0 ? "AM" : "PM"; + } + + private static int compareToDate(String date1, String date2) { + return date1.compareTo(date2); + } + + private static int compareToDateString(String date1, String date2) { + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + int i = 0; + try { + long ldate1 = formatter.parse(date1).getTime(); + long ldate2 = formatter.parse(date2).getTime(); + if (ldate1 > ldate2) { + i = 1; + } else if (ldate1 == ldate2) { + i = 0; + } else { + i = -1; + } + + } catch (ParseException e) { + e.printStackTrace(); + } + return i; + } + + public static String[] getFiveDate() { + String[] dates = new String[2]; + Calendar calendar = Calendar.getInstance(); + calendar.setTime(new Date()); + String five = " 05:00:00"; + + if (getDateAMPM().equals("AM") && compareToDateString(getStringDate(), getStringDateShort() + five) == -1) { + dates[0] = getBeforeDay(calendar) + five; + dates[1] = getStringDateShort() + five; + } else { + dates[0] = getStringDateShort() + five; + dates[1] = getAfterDay(calendar) + five; + } + + return dates; + } + + public static String getFiveDate2() { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(new Date()); + String five = " 05:00:00"; + String reStr = ""; + if (getDateAMPM().equals("AM") && compareToDateString(getStringDate(), getStringDateShort() + five) == -1) { + reStr = getBeforeDay(calendar); + } else { + reStr = getStringDateShort(); + } + return reStr; + } +} \ No newline at end of file diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/quartz/task/AutoCreateInst.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/quartz/task/AutoCreateInst.java new file mode 100644 index 0000000..8da8e35 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/quartz/task/AutoCreateInst.java @@ -0,0 +1,341 @@ +package org.nl.quartz.task; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.ObjectUtils; +import org.nl.acs.AcsConfig; +import org.nl.acs.device.domain.Device; +import org.nl.acs.device_driver.basedriver.standard_inspect_site.StandardInspectSiteDeviceDriver; +import org.nl.acs.device_driver.basedriver.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; +import org.nl.acs.instruction.domain.Instruction; +import org.nl.acs.instruction.service.InstructionService; +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.config.SpringContextHolder; +import org.nl.system.service.param.ISysParamService; +import org.springframework.stereotype.Component; + +import java.util.Arrays; +import java.util.List; + +/** + * 自动创建指令 + */ +@Slf4j +@Component +public class AutoCreateInst { + /** + * 根据任务状态创建指令、生成下一条指令 + * 创建指令前需要判断是否条件具备:起始位置是否有货、目标位置是否有货 + */ + public void run() throws Exception { + TaskService taskserver = SpringContextHolder.getBean(TaskService.class); + InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class); + RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineService.class); + ISysParamService acsConfigService = SpringContextHolder.getBean(ISysParamService.class); + List list = taskserver.queryByStauts("0"); + DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); + for (int i = 0; i < list.size(); i++) { + TaskDto acsTask = list.get(i); + String taskid = acsTask.getTask_id(); + String taskcode = acsTask.getTask_code(); + String vehiclecode = acsTask.getVehicle_code(); + String priority = acsTask.getPriority(); + String start_point_code = acsTask.getStart_point_code(); + String start_device_code = acsTask.getStart_device_code(); + String route_plan_code = acsTask.getRoute_plan_code(); + String vehicleType = acsTask.getVehicle_type(); + //是否复合任务 =0非复合任务 + String compound_task = acsTask.getCompound_task(); + String compound_task_data = null; + String next_point_code = acsTask.getNext_point_code(); + String next_device_code = acsTask.getNext_device_code(); + if (StrUtil.isEmpty(start_device_code)) { + log.info("任务 [" + taskcode + "] 起点设备为空,无法生成指令。"); + acsTask.setRemark("任务 [" + taskcode + "] 起点设备为空,无法生成指令。"); + taskserver.updateByCodeFromCache(acsTask); + continue; + } + if (StrUtil.isEmpty(next_device_code)) { + log.info("任务 [" + taskcode + "] 终点设备为空,无法生成指令。"); + acsTask.setRemark("任务 [" + taskcode + "] 终点设备为空,无法生成指令。"); + taskserver.updateByCodeFromCache(acsTask); + continue; + } + List instructions = instructionService.queryAll("instruction_status < 2"); + String maxInstnumber = acsConfigService.findByCode(AcsConfig.MAXINSTNUMBER).getValue(); + if (ObjectUtils.isNotEmpty(maxInstnumber)) { + if (instructions.size() >= Integer.parseInt(maxInstnumber)) { + log.info("已达到系统参数配置的最大指令数 [" + maxInstnumber + "] ,无法生成指令。"); + acsTask.setRemark("已达到系统参数配置的最大指令数 [" + maxInstnumber + "] ,无法生成指令。"); + taskserver.updateByCodeFromCache(acsTask); + continue; + } + } + + + /** + * 开始平均分解校验 + */ + String this_device_code = taskserver.queryAssignedByDevice(acsTask.getStart_device_code(), acsTask.getNext_device_code()); + if (StrUtil.isEmpty(this_device_code)) { + List shortPathsList = routeLineService.getShortPathLines(start_device_code, acsTask.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); + if (StrUtil.equals(acsTask.getTask_type(), "2")) { + for (int j = 0; j < pathlist.size(); j++) { + if (j == 0) { + compound_task_data = pathlist.get(j).trim(); + } else { + compound_task_data = compound_task_data + "->" + pathlist.get(j).trim(); + } + } + next_device_code = pathlist.get(pathlist.size() - 1); + + } else { + 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_device_code; + } + //校验路由关系 + List shortPathsList = routeLineService.getShortPathLines(start_device_code, next_device_code, route_plan_code); + if (ObjectUtils.isEmpty(shortPathsList)) { + log.info("任务 [" + taskcode + "] 路由不通无法生成指令。"); + acsTask.setRemark("任务 [" + taskcode + "] 路由不通无法生成指令。"); + taskserver.updateByCodeFromCache(acsTask); + continue; + } + + if (!StrUtil.equals(shortPathsList.get(0).getType(), "1")) { + continue; + } + Device startdevice = appService.findDeviceByCode(start_device_code); + Device nextdevice = appService.findDeviceByCode(next_device_code); + if (StrUtil.equals(appService.findDeviceTypeByCode(next_device_code), "storage")) { + next_point_code = next_device_code + "-" + acsTask.getTo_y() + "-" + acsTask.getTo_z(); + } else { + next_point_code = next_device_code; + } + if (ObjectUtils.isEmpty(startdevice)) { + log.info("任务 [" + taskcode + "] 起点设备编码 [" + start_device_code + "] 对应设备未找到,无法生成指令。"); + continue; + } + if (ObjectUtils.isEmpty(nextdevice)) { + log.info("任务 [" + taskcode + "] 终点设备编码 [" + next_device_code + "] 对应设备未找到,无法生成指令。"); + continue; + } + //普通站点 + StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; + StandardInspectSiteDeviceDriver standardInspectSiteDeviceDriver; +// StandardEmptyPalletSiteDeviceDriver standardEmptsyPalletSiteDeviceDriver; +// LampThreecolorDeviceDriver lampThreecolorDeviceDriver; +// LnshFoldDiscSiteDeviceDriver lnshFoldDiscSiteDeviceDriver; + + String createTaskCheck = acsConfigService.findByCode(AcsConfig.CREATETASKCHECK).getValue(); + + if (StrUtil.equals(createTaskCheck, "1")) { + if (startdevice.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { + standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) startdevice.getDeviceDriver(); + if (standardInspectSiteDeviceDriver.getMode() != 2) { + log.info("起点设备:" + startdevice.getDevice_code() + "设备未待机,任务号:" + taskcode); + acsTask.setRemark("起点设备:" + startdevice.getDevice_code() + "设备未待机,任务号:" + taskcode); + taskserver.updateByCodeFromCache(acsTask); + //this.execute_log.setResource(startdevice.getDevice_code(), startdevice.getDevice_code()); + //this.execute_log.log("起点设备:" + startdevice.getDevice_code() + "设备未待机,任务号:" + taskcode); + continue; + } + } +// if (startdevice.getDeviceDriver() instanceof StandardEmptyPalletSiteDeviceDriver) { +// standardEmptsyPalletSiteDeviceDriver = (StandardEmptyPalletSiteDeviceDriver) startdevice.getDeviceDriver(); +// if (standardEmptsyPalletSiteDeviceDriver.getMode() != 2) { +// log.info("目标设备:" + nextdevice.getDevice_code() + "设备未待机,任务号:" + taskcode); +// acsTask.setRemark("目标设备:" + nextdevice.getDevice_code() + "设备未待机,任务号:" + taskcode); +// taskserver.updateByCodeFromCache(acsTask); +// continue; +// } +// } +// if (startdevice.getDeviceDriver() instanceof LnshFoldDiscSiteDeviceDriver) { +// lnshFoldDiscSiteDeviceDriver = (LnshFoldDiscSiteDeviceDriver) startdevice.getDeviceDriver(); +// if (lnshFoldDiscSiteDeviceDriver.getMode() != 2) { +// log.info("目标设备:" + nextdevice.getDevice_code() + "设备未待机,任务号:" + taskcode); +// acsTask.setRemark("目标设备:" + nextdevice.getDevice_code() + "设备未待机,任务号:" + taskcode); +// taskserver.updateByCodeFromCache(acsTask); +// continue; +// } +// } + + //校验 是否同任务是否存在相同终点、未完成的指令 + int sameqty = instructionService.querySameDestinationInst(next_point_code); + if (sameqty > 0) { + log.info("存在相同终点的指令,任务号:" + taskcode); + acsTask.setRemark("存在相同终点的指令,任务号:" + taskcode); + taskserver.updateByCodeFromCache(acsTask); + continue; + } + } + + //空盘位生成指令需要另外逻辑 +// if (nextdevice.getDeviceDriver() instanceof LnshFoldDiscSiteDeviceDriver) { +// lnshFoldDiscSiteDeviceDriver = (LnshFoldDiscSiteDeviceDriver) nextdevice.getDeviceDriver(); +// if (lnshFoldDiscSiteDeviceDriver.getMode() == 0) { +// log.info("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 未联机,无法生成指令。"); +// acsTask.setRemark("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 未联机,无法生成指令。"); +// taskserver.updateByCodeFromCache(acsTask); +// continue; +// } else if (lnshFoldDiscSiteDeviceDriver.getError() != 0 +// || lnshFoldDiscSiteDeviceDriver.getStatus() == 3) { +// log.info("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 异常,无法生成指令。"); +// acsTask.setRemark("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 异常,无法生成指令。"); +// taskserver.updateByCodeFromCache(acsTask); +// continue; +// } +// int max_emptypalletnum = Integer.parseInt(nextdevice.getExtraValue().get("max_emptypalletnum").toString()); +// int nowNumber = lnshFoldDiscSiteDeviceDriver.getContainer_qty(); +// if (nowNumber >= max_emptypalletnum) { +// log.info("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 已满,无法生成指令。"); +// acsTask.setRemark("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 已满,无法生成指令。"); +// taskserver.updateByCodeFromCache(acsTask); +// continue; +// } +// // 查看是否有相同终点的指令 +// int count = instructionService.queryDeviceInstCount(next_device_code); +// if (count > 0) { +// log.info("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 已被占用,无法生成指令。"); +// acsTask.setRemark("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 已被占用,无法生成指令。"); +// taskserver.updateByCodeFromCache(acsTask); +// //this.execute_log.setResource(nextdevice.getDevice_code(), nextdevice.getDevice_code()); +// //this.execute_log.log("存在相同终点的指令,任务号:" + taskcode); +// continue; +// } +// next_point_code = next_device_code + "." + (nowNumber + 1); +// } else if (nextdevice.getDeviceDriver() instanceof LnshStationDeviceDriver +// && "true".equals(nextdevice.getExtraValue().get("inspect_in_stocck"))) { +// LnshStationDeviceDriver deviceDriver = (LnshStationDeviceDriver) nextdevice.getDeviceDriver(); +// if (deviceDriver.getMode() == 0) { +// log.info("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 未联机,无法生成指令。"); +// acsTask.setRemark("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 未联机,无法生成指令。"); +// taskserver.updateByCodeFromCache(acsTask); +// continue; +// } else if (deviceDriver.getMove() != 0) { +// log.info("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 有货,无法生成指令。"); +// acsTask.setRemark("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 有货,无法生成指令。"); +// taskserver.updateByCodeFromCache(acsTask); +// continue; +// } else if (deviceDriver.getError() != 0) { +// log.info("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 异常,无法生成指令。"); +// acsTask.setRemark("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 异常,无法生成指令。"); +// taskserver.updateByCodeFromCache(acsTask); +// continue; +// } +// } + +// if (startdevice.getDeviceDriver() instanceof LnshFoldDiscSiteDeviceDriver) { +// lnshFoldDiscSiteDeviceDriver = (LnshFoldDiscSiteDeviceDriver) startdevice.getDeviceDriver(); +// if (lnshFoldDiscSiteDeviceDriver.getMode() == 0) { +// log.info("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 未联机,无法生成指令。"); +// acsTask.setRemark("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 未联机,无法生成指令。"); +// taskserver.updateByCodeFromCache(acsTask); +// continue; +// } else if (lnshFoldDiscSiteDeviceDriver.getError() != 0 +// || lnshFoldDiscSiteDeviceDriver.getStatus() == 3) { +// log.info("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 异常,无法生成指令。"); +// acsTask.setRemark("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 异常,无法生成指令。"); +// taskserver.updateByCodeFromCache(acsTask); +// continue; +// } +// +// int container_qty = lnshFoldDiscSiteDeviceDriver.getContainer_qty(); +// int max_emptypalletnum = Integer.parseInt(startdevice.getExtraValue().get("max_emptypalletnum").toString()); +// if (container_qty < (max_emptypalletnum / 2)) { +// log.info("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 可用托盘数量少于最大托盘数量 [" + max_emptypalletnum + "] / 2,无法生成指令。"); +// acsTask.setRemark("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 可用托盘数量少于最大托盘数量 [" + max_emptypalletnum + "] / 2,无法生成指令。"); +// taskserver.updateByCodeFromCache(acsTask); +// continue; +// } +// +// int count = instructionService.queryDeviceInstCount(start_device_code); +// if (count > 0) { +// log.info("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 已被占用,无法生成指令。"); +// acsTask.setRemark("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 已被占用,无法生成指令。"); +// taskserver.updateByCodeFromCache(acsTask); +// //this.execute_log.setResource(nextdevice.getDevice_code(), nextdevice.getDevice_code()); +// //this.execute_log.log("存在相同终点的指令,任务号:" + taskcode); +// continue; +// } +// +// start_point_code = start_device_code + ".1"; +// } else if (startdevice.getDeviceDriver() instanceof LnshStationDeviceDriver +// && "true".equals(startdevice.getExtraValue().get("inspect_in_stocck"))) { +// LnshStationDeviceDriver deviceDriver = (LnshStationDeviceDriver) startdevice.getDeviceDriver(); +// if (deviceDriver.getMode() == 0) { +// log.info("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 未联机,无法生成指令。"); +// acsTask.setRemark("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 未联机,无法生成指令。"); +// taskserver.updateByCodeFromCache(acsTask); +// continue; +// } else if (deviceDriver.getMove() == 0) { +// log.info("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 无货,无法生成指令。"); +// acsTask.setRemark("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 无货,无法生成指令。"); +// taskserver.updateByCodeFromCache(acsTask); +// continue; +// } else if (deviceDriver.getError() != 0) { +// log.info("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 异常,无法生成指令。"); +// acsTask.setRemark("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 异常,无法生成指令。"); +// taskserver.updateByCodeFromCache(acsTask); +// continue; +// } +// } + + Instruction instdto = new Instruction(); + instdto.setInstruction_type(acsTask.getTask_type()); + instdto.setInstruction_id(IdUtil.simpleUUID()); + instdto.setRoute_plan_code(route_plan_code); + instdto.setRemark(acsTask.getRemark()); + instdto.setMaterial(acsTask.getMaterial()); + instdto.setQuantity(acsTask.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.setCompound_inst_data(compound_task_data); + instdto.setPriority(priority); + instdto.setInstruction_status("0"); + instdto.setExecute_device_code(start_point_code); + instdto.setVehicle_type(vehicleType); + try { + instructionService.create(instdto); + } catch (Exception e) { + acsTask.setRemark(e.getMessage()); + taskserver.updateByCodeFromCache(acsTask); + continue; + } + log.info("任务 [" + taskcode + "] 指令成功生成!"); + //创建指令后修改任务状态 + acsTask.setTask_status("1"); + taskserver.update(acsTask); + + } + } +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/quartz/task/NdcAutoReconnection.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/quartz/task/NdcAutoReconnection.java new file mode 100644 index 0000000..2b43ffc --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/quartz/task/NdcAutoReconnection.java @@ -0,0 +1,30 @@ +package org.nl.quartz.task; + +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.auto.run.AutoRunService; +import org.nl.system.service.param.ISysParamService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * NDC自动重连 + */ +@Slf4j +@Component +public class NdcAutoReconnection { + + @Autowired + ISysParamService paramService; + + @Autowired + AutoRunService autoRunService; + + public void run(String threadCode) throws Exception { + String[] threadCodes = threadCode.split(","); + for (String code : threadCodes) { + if (!autoRunService.getThreadByCode(code).isAlive()) { + autoRunService.startThread(code); + } + } + } +} diff --git a/acs/nladmin-system/nlsso-server/src/main/resources/initsql.txt b/acs/nladmin-system/nlsso-server/src/main/resources/initsql.txt new file mode 100644 index 0000000..14c375f --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/resources/initsql.txt @@ -0,0 +1,17 @@ +delete from acs_device_runpoint; +delete from acs_device_extra; +delete from acs_device; +delete from acs_device_assigned; +delete from acs_opc_plc; +delete from acs_opc; +delete from acs_route_line; +delete from acs_instruction; +delete from acs_task; +delete from sys_log; +delete from acs_log; +delete from acs_task_feedback; +delete from sys_quartz_log; +delete from acs_storage_cell; +update acs_stage_actor set device_code='',image_name ='1'; +update sys_code_rule_detail set current_value=0; +update stage set stage_data = null \ No newline at end of file diff --git a/acs/nladmin-ui/src/views/acs/device/config.vue b/acs/nladmin-ui/src/views/acs/device/config.vue index 91a8fc8..85219e7 100644 --- a/acs/nladmin-ui/src/views/acs/device/config.vue +++ b/acs/nladmin-ui/src/views/acs/device/config.vue @@ -81,13 +81,10 @@ import standard_scanner from '@/views/acs/device/driver/standard_scanner' import standard_conveyor_control_with_scanner from '@/views/acs/device/driver/standard_conveyor_control_with_scanner' import standard_conveyor_control from '@/views/acs/device/driver/standard_conveyor_control' import standard_conveyor_monitor from '@/views/acs/device/driver/standard_conveyor_monitor' -import hailiang_smart_plc_test from '@/views/acs/device/driver/hailiang_smart_plc_test' -import paint_conveyor from '@/views/acs/device/driver/paint_conveyor' -import cargo_lift_conveyor from '@/views/acs/device/driver/cargo_lift_conveyor' -import empty_vehicle_stacking_position from '@/views/acs/device/driver/empty_vehicle_stacking_position' import agv_ndc_one from '@/views/acs/device/driver/agv/agv_ndc_one' import agv_ndc_two from '@/views/acs/device/driver/agv/agv_ndc_two' import xg_agv from '@/views/acs/device/driver/agv/xg_agv' +import standard_station from '@/views/acs/device/driver/standard_station' export default { @@ -107,7 +104,8 @@ export default { empty_vehicle_stacking_position, agv_ndc_two, agv_ndc_one, - xg_agv + xg_agv, + standard_station }, dicts: ['device_type'], mixins: [crud], diff --git a/acs/nladmin-ui/src/views/acs/device/driver/cargo_lift_conveyor.vue b/acs/nladmin-ui/src/views/acs/device/driver/cargo_lift_conveyor.vue deleted file mode 100644 index 16ebdd3..0000000 --- a/acs/nladmin-ui/src/views/acs/device/driver/cargo_lift_conveyor.vue +++ /dev/null @@ -1,533 +0,0 @@ - - - - - diff --git a/acs/nladmin-ui/src/views/acs/device/driver/empty_vehicle_stacking_position.vue b/acs/nladmin-ui/src/views/acs/device/driver/empty_vehicle_stacking_position.vue deleted file mode 100644 index 097cd0b..0000000 --- a/acs/nladmin-ui/src/views/acs/device/driver/empty_vehicle_stacking_position.vue +++ /dev/null @@ -1,488 +0,0 @@ - - - - - diff --git a/acs/nladmin-ui/src/views/acs/device/driver/hailiang_smart_plc_test.vue b/acs/nladmin-ui/src/views/acs/device/driver/hailiang_smart_plc_test.vue deleted file mode 100644 index ca26aa0..0000000 --- a/acs/nladmin-ui/src/views/acs/device/driver/hailiang_smart_plc_test.vue +++ /dev/null @@ -1,487 +0,0 @@ - - - - - diff --git a/acs/nladmin-ui/src/views/acs/device/driver/paint_conveyor.vue b/acs/nladmin-ui/src/views/acs/device/driver/paint_conveyor.vue deleted file mode 100644 index 803fabc..0000000 --- a/acs/nladmin-ui/src/views/acs/device/driver/paint_conveyor.vue +++ /dev/null @@ -1,495 +0,0 @@ - - - - -