From 13dbaca2baf3a0feea491d2900f3236bc4ce0463 Mon Sep 17 00:00:00 2001 From: gengby <858962040@qq.com> Date: Tue, 23 May 2023 17:30:24 +0800 Subject: [PATCH 1/3] =?UTF-8?q?rev=20ndc=E6=89=A7=E8=A1=8C=E7=8A=B6?= =?UTF-8?q?=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auto/run/NDCSocketConnectionAutoRun.java | 47 +++++++++++++++++-- .../agv/ndctwo/AgvNdcTwoDeviceDriver.java | 33 ++++++++++++- .../HailiangAutoCacheLineDeviceDriver.java | 3 +- ...ailiangSpecialFullStationDeviceDriver.java | 3 ++ .../wms/service/impl/WmsToAcsServiceImpl.java | 11 ++++- .../service/InstructionService.java | 9 +++- .../service/impl/InstructionServiceImpl.java | 31 ++++++++++-- .../nl/acs/opc/DeviceOpcProtocolRunable.java | 4 +- .../lucene/common/LuceneIndexWriter.java | 24 +++++----- .../impl/LuceneExecuteLogServiceImpl.java | 2 +- .../modules/quartz/task/AutoCreateInst.java | 6 ++- 11 files changed, 141 insertions(+), 32 deletions(-) diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/auto/run/NDCSocketConnectionAutoRun.java b/wcs/nladmin-system/src/main/java/org/nl/acs/auto/run/NDCSocketConnectionAutoRun.java index 70824662..2ece320d 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/auto/run/NDCSocketConnectionAutoRun.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/auto/run/NDCSocketConnectionAutoRun.java @@ -12,6 +12,9 @@ import org.nl.acs.instruction.service.dto.Instruction; import org.nl.acs.instruction.service.impl.InstructionServiceImpl; import org.nl.acs.opc.Device; import org.nl.acs.opc.DeviceAppService; +import org.nl.acs.task.service.TaskService; +import org.nl.acs.task.service.dto.TaskDto; +import org.nl.acs.task.service.impl.TaskServiceImpl; import org.nl.modules.system.service.ParamService; import org.nl.modules.system.service.impl.ParamServiceImpl; import org.nl.modules.wql.util.SpringContextHolder; @@ -64,6 +67,7 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { try { ParamService paramService = SpringContextHolder.getBean(ParamServiceImpl.class); InstructionService instructionService = SpringContextHolder.getBean(InstructionServiceImpl.class); + TaskService taskService = SpringContextHolder.getBean(TaskServiceImpl.class); NDCAgvService ndcAgvService = SpringContextHolder.getBean(NDCAgvServiceImpl.class); DeviceAppService deviceAppService = SpringContextHolder.getBean(DeviceAppService.class); ip = paramService.findByCode(AcsConfig.AGVURL).getValue(); @@ -117,12 +121,45 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { AgvNdcTwoDeviceDriver agvNdcTwoDeviceDriver; if (phase == 0x01) { //开始任务/上报订单号 - for (Instruction inst : insts) { - inst.setInstruction_status("1"); - inst.setAgv_jobno(String.valueOf(index)); - instructionService.update(inst); + if (ObjectUtil.isNotEmpty(insts)) { + Boolean flag = false; + Instruction instruction = insts.get(0); + TaskDto taskDto = taskService.findByTaskCode(instruction.getTask_code()); + if (taskDto != null) { + List taskDtos = taskService.findByLinkNumFromCache(taskDto.getLink_num()); + if (taskDtos != null) { + if (taskDtos.size() == 1) { + for (Instruction inst : insts) { + inst.setInstruction_status("1"); + inst.setAgv_jobno(String.valueOf(index)); + instructionService.update(inst); + log.info("修改指令执行信息成功,指令号:{}", inst.getInstruction_code()); + flag = true; + } + } else if (taskDtos.size() == 2) { + for (int i = 0; i < insts.size(); i++) { + Instruction inst = insts.get(i); + inst.setInstruction_status("1"); + inst.setAgv_jobno(String.valueOf(index)); + instructionService.update(inst); + if (i == 1) { + flag = true; + } + log.info("修改指令执行信息成功,指令号:{}", inst.getInstruction_code()); + } +// for (Instruction inst : insts) { +// inst.setInstruction_status("1"); +// inst.setAgv_jobno(String.valueOf(index)); +// instructionService.update(inst); +// log.info("修改指令执行信息成功,指令号:{}", inst.getInstruction_code()); +// } + } + } + if (flag) { + data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); + } + } } - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); } else if (phase == 0x1A) { //任务完毕(无车id及状态 // for (Instruction inst : insts) { diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndctwo/AgvNdcTwoDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndctwo/AgvNdcTwoDeviceDriver.java index 55f11721..2f48d5d8 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndctwo/AgvNdcTwoDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndctwo/AgvNdcTwoDeviceDriver.java @@ -138,10 +138,12 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic //取满箱任务起点 一般是专机满料点和缓存线 if (StrUtil.equals(inst.getStart_device_code(), device_code)) { if (device.getDeviceDriver() instanceof HailiangSpecialFullStationDeviceDriver) { + log.info("开始设置phase值,设备号:{}", device_code); hailiangSpecialFullStationDeviceDriver = (HailiangSpecialFullStationDeviceDriver) device.getDeviceDriver(); hailiangSpecialFullStationDeviceDriver.set(phase, index, inst); } if (device.getDeviceDriver() instanceof HailiangAutoCacheLineDeviceDriver) { + log.info("开始设置phase值,设备号:{}", device_code); hailiangAutoCacheLineDeviceDriver = (HailiangAutoCacheLineDeviceDriver) device.getDeviceDriver(); hailiangAutoCacheLineDeviceDriver.set(phase, index, inst); } @@ -173,11 +175,13 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic //取满箱任务起点 一般是专机满料点和缓存线 if (StrUtil.equals(inst.getStart_device_code(), device_code)) { if (device.getDeviceDriver() instanceof HailiangSpecialFullStationDeviceDriver) { + log.info("开始设置phase值,设备号:{}", device_code); hailiangSpecialFullStationDeviceDriver = (HailiangSpecialFullStationDeviceDriver) device.getDeviceDriver(); hailiangSpecialFullStationDeviceDriver.set(phase, index, inst); } //入缓存线任务的起点有专机满料位 出缓存的起点是缓存线 if (device.getDeviceDriver() instanceof HailiangAutoCacheLineDeviceDriver) { + log.info("开始设置phase值,设备号:{}", device_code); hailiangAutoCacheLineDeviceDriver = (HailiangAutoCacheLineDeviceDriver) device.getDeviceDriver(); hailiangAutoCacheLineDeviceDriver.set(phase, index, inst); } @@ -209,10 +213,12 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic //双任务-取满箱任务起点2 一般是专机满料点和缓存线 if (StrUtil.equals(inst.getStart_device_code(), device_code)) { if (device.getDeviceDriver() instanceof HailiangSpecialFullStationDeviceDriver) { + log.info("开始设置phase值,设备号:{}", device_code); hailiangSpecialFullStationDeviceDriver = (HailiangSpecialFullStationDeviceDriver) device.getDeviceDriver(); hailiangSpecialFullStationDeviceDriver.set(phase, index, inst); } if (device.getDeviceDriver() instanceof HailiangAutoCacheLineDeviceDriver) { + log.info("开始设置phase值,设备号:{}", device_code); hailiangAutoCacheLineDeviceDriver = (HailiangAutoCacheLineDeviceDriver) device.getDeviceDriver(); hailiangAutoCacheLineDeviceDriver.set(phase, index, inst); } @@ -243,10 +249,12 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic //双任务-取满箱任务起点2 一般是专机满料点和缓存线 if (StrUtil.equals(inst.getStart_device_code(), device_code)) { if (device.getDeviceDriver() instanceof HailiangSpecialFullStationDeviceDriver) { + log.info("开始设置phase值,设备号:{}", device_code); hailiangSpecialFullStationDeviceDriver = (HailiangSpecialFullStationDeviceDriver) device.getDeviceDriver(); hailiangSpecialFullStationDeviceDriver.set(phase, index, inst); } if (device.getDeviceDriver() instanceof HailiangAutoCacheLineDeviceDriver) { + log.info("开始设置phase值,设备号:{}", device_code); hailiangAutoCacheLineDeviceDriver = (HailiangAutoCacheLineDeviceDriver) device.getDeviceDriver(); hailiangAutoCacheLineDeviceDriver.set(phase, index, inst); } @@ -277,6 +285,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic //只有满料位入到缓存线有到达送满框 if (StrUtil.equals(inst.getPut_device_code(), device_code)) { if (device.getDeviceDriver() instanceof HailiangAutoCacheLineDeviceDriver) { + log.info("开始设置phase值,设备号:{}", device_code); hailiangAutoCacheLineDeviceDriver = (HailiangAutoCacheLineDeviceDriver) device.getDeviceDriver(); hailiangAutoCacheLineDeviceDriver.set(phase, index, inst); break; @@ -311,11 +320,13 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic //只有满料位到倒料位、清洗储料仓,及缓存线到倒料位、清洗储料仓有倒料点 倒料点都是倒料位、清洗储料仓 if (StrUtil.equals(inst.getPut_device_code(), device_code)) { if (device.getDeviceDriver() instanceof HailiangSpecialPourStationDeviceDriver) { + log.info("开始设置phase值,设备号:{}", device_code); hailiangSpecialPourStationDeviceDriver = (HailiangSpecialPourStationDeviceDriver) device.getDeviceDriver(); hailiangSpecialPourStationDeviceDriver.set(phase, index, inst); break; } if (device.getDeviceDriver() instanceof HailiangCleaningMachineStorageStationDeviceDriver) { + log.info("开始设置phase值,设备号:{}", device_code); hailiangCleaningMachineStorageStationDeviceDriver = (HailiangCleaningMachineStorageStationDeviceDriver) device.getDeviceDriver(); hailiangCleaningMachineStorageStationDeviceDriver.set(phase, index, inst); break; @@ -348,6 +359,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic //送满框1 只有满料位到缓存线才有送满框1 if (StrUtil.equals(inst.getPut_device_code(), device_code)) { if (device.getDeviceDriver() instanceof HailiangAutoCacheLineDeviceDriver) { + log.info("开始设置phase值,设备号:{}", device_code); hailiangAutoCacheLineDeviceDriver = (HailiangAutoCacheLineDeviceDriver) device.getDeviceDriver(); hailiangAutoCacheLineDeviceDriver.set(phase, index, inst); break; @@ -380,11 +392,13 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic //只有满料位、缓存线到倒料位、清洗储料仓才有倒料完毕1 if (StrUtil.equals(inst.getPut_device_code(), device_code)) { if (device.getDeviceDriver() instanceof HailiangSpecialPourStationDeviceDriver) { + log.info("开始设置phase值,设备号:{}", device_code); hailiangSpecialPourStationDeviceDriver = (HailiangSpecialPourStationDeviceDriver) device.getDeviceDriver(); hailiangSpecialPourStationDeviceDriver.set(phase, index, inst); break; } if (device.getDeviceDriver() instanceof HailiangCleaningMachineStorageStationDeviceDriver) { + log.info("开始设置phase值,设备号:{}", device_code); hailiangCleaningMachineStorageStationDeviceDriver = (HailiangCleaningMachineStorageStationDeviceDriver) device.getDeviceDriver(); hailiangCleaningMachineStorageStationDeviceDriver.set(phase, index, inst); break; @@ -416,6 +430,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic //只有满料位到缓存线放满完成后才有到达取空框1 取空框是缓存线才有 if (StrUtil.equals(inst.getPut_device_code(), device_code)) { if (device.getDeviceDriver() instanceof HailiangAutoCacheLineDeviceDriver) { + log.info("开始设置phase值,设备号:{}", device_code); hailiangAutoCacheLineDeviceDriver = (HailiangAutoCacheLineDeviceDriver) device.getDeviceDriver(); hailiangAutoCacheLineDeviceDriver.set(phase, index, inst); break; @@ -447,11 +462,13 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic //只有满料位到倒料位、清洗储料仓,及缓存线到倒料位、清洗储料仓有倒料点 倒料点都是倒料位、清洗储料仓 if (StrUtil.equals(inst.getPut_device_code(), device_code)) { if (device.getDeviceDriver() instanceof HailiangSpecialPourStationDeviceDriver) { + log.info("开始设置phase值,设备号:{}", device_code); hailiangSpecialPourStationDeviceDriver = (HailiangSpecialPourStationDeviceDriver) device.getDeviceDriver(); hailiangSpecialPourStationDeviceDriver.set(phase, index, inst); break; } if (device.getDeviceDriver() instanceof HailiangCleaningMachineStorageStationDeviceDriver) { + log.info("开始设置phase值,设备号:{}", device_code); hailiangCleaningMachineStorageStationDeviceDriver = (HailiangCleaningMachineStorageStationDeviceDriver) device.getDeviceDriver(); hailiangCleaningMachineStorageStationDeviceDriver.set(phase, index, inst); break; @@ -483,6 +500,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic //只有满料位到缓存线入库才有取空框1完毕 if (StrUtil.equals(inst.getPut_device_code(), device_code)) { if (device.getDeviceDriver() instanceof HailiangAutoCacheLineDeviceDriver) { + log.info("开始设置phase值,设备号:{}", device_code); hailiangAutoCacheLineDeviceDriver = (HailiangAutoCacheLineDeviceDriver) device.getDeviceDriver(); hailiangAutoCacheLineDeviceDriver.set(phase, index, inst); break; @@ -514,6 +532,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic //只有满料位到缓存线才有到达送满框2 if (StrUtil.equals(inst.getPut_device_code(), device_code)) { if (device.getDeviceDriver() instanceof HailiangAutoCacheLineDeviceDriver) { + log.info("开始设置phase值,设备号:{}", device_code); hailiangAutoCacheLineDeviceDriver = (HailiangAutoCacheLineDeviceDriver) device.getDeviceDriver(); hailiangAutoCacheLineDeviceDriver.set(phase, index, inst); break; @@ -545,6 +564,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic //只有满料位到缓存线才有到送满框完毕 if (StrUtil.equals(inst.getPut_device_code(), device_code)) { if (device.getDeviceDriver() instanceof HailiangAutoCacheLineDeviceDriver) { + log.info("开始设置phase值,设备号:{}", device_code); hailiangAutoCacheLineDeviceDriver = (HailiangAutoCacheLineDeviceDriver) device.getDeviceDriver(); hailiangAutoCacheLineDeviceDriver.set(phase, index, inst); break; @@ -577,6 +597,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic //只有满料位到缓存线才有到达取空框2 if (StrUtil.equals(inst.getPut_device_code(), device_code)) { if (device.getDeviceDriver() instanceof HailiangAutoCacheLineDeviceDriver) { + log.info("开始设置phase值,设备号:{}", device_code); hailiangAutoCacheLineDeviceDriver = (HailiangAutoCacheLineDeviceDriver) device.getDeviceDriver(); hailiangAutoCacheLineDeviceDriver.set(phase, index, inst); break; @@ -608,6 +629,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic //只有满料位到缓存线才有到达取空框完毕2 if (StrUtil.equals(inst.getPut_device_code(), device_code)) { if (device.getDeviceDriver() instanceof HailiangAutoCacheLineDeviceDriver) { + log.info("开始设置phase值,设备号:{}", device_code); hailiangAutoCacheLineDeviceDriver = (HailiangAutoCacheLineDeviceDriver) device.getDeviceDriver(); hailiangAutoCacheLineDeviceDriver.set(phase, index, inst); break; @@ -640,11 +662,13 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic //只有满料位到倒料位、清洗储料仓,及缓存线到倒料位、清洗储料仓有倒料点 倒料点都是倒料位、清洗储料仓 if (StrUtil.equals(inst.getPut_device_code(), device_code)) { if (device.getDeviceDriver() instanceof HailiangSpecialPourStationDeviceDriver) { + log.info("开始设置phase值,设备号:{}", device_code); hailiangSpecialPourStationDeviceDriver = (HailiangSpecialPourStationDeviceDriver) device.getDeviceDriver(); hailiangSpecialPourStationDeviceDriver.set(phase, index, inst); break; } if (device.getDeviceDriver() instanceof HailiangCleaningMachineStorageStationDeviceDriver) { + log.info("开始设置phase值,设备号:{}", device_code); hailiangCleaningMachineStorageStationDeviceDriver = (HailiangCleaningMachineStorageStationDeviceDriver) device.getDeviceDriver(); hailiangCleaningMachineStorageStationDeviceDriver.set(phase, index, inst); break; @@ -678,10 +702,12 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic //所有任务都有到达送空框1 if (StrUtil.equals(inst.getNext_device_code(), device_code)) { if (device.getDeviceDriver() instanceof HailiangSpecialEmptyStationDeviceDriver) { + log.info("开始设置phase值,设备号:{}", device_code); hailiangSpecialEmptyStationDeviceDriver = (HailiangSpecialEmptyStationDeviceDriver) device.getDeviceDriver(); hailiangSpecialEmptyStationDeviceDriver.set(phase, index, inst); } if (device.getDeviceDriver() instanceof HailiangAutoCacheLineDeviceDriver) { + log.info("开始设置phase值,设备号:{}", device_code); hailiangAutoCacheLineDeviceDriver = (HailiangAutoCacheLineDeviceDriver) device.getDeviceDriver(); hailiangAutoCacheLineDeviceDriver.set(phase, index, inst); } @@ -714,10 +740,12 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic //所有任务都有到送空框1完毕 if (StrUtil.equals(inst.getNext_device_code(), device_code)) { if (device.getDeviceDriver() instanceof HailiangSpecialEmptyStationDeviceDriver) { + log.info("开始设置phase值,设备号:{}", device_code); hailiangSpecialEmptyStationDeviceDriver = (HailiangSpecialEmptyStationDeviceDriver) device.getDeviceDriver(); hailiangSpecialEmptyStationDeviceDriver.set(phase, index, inst); } if (device.getDeviceDriver() instanceof HailiangAutoCacheLineDeviceDriver) { + log.info("开始设置phase值,设备号:{}", device_code); hailiangAutoCacheLineDeviceDriver = (HailiangAutoCacheLineDeviceDriver) device.getDeviceDriver(); hailiangAutoCacheLineDeviceDriver.set(phase, index, inst); } @@ -750,10 +778,12 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic //所有双任务都有到达送空框2 if (StrUtil.equals(inst.getNext_device_code(), device_code)) { if (device.getDeviceDriver() instanceof HailiangSpecialEmptyStationDeviceDriver) { + log.info("开始设置phase值,设备号:{}", device_code); hailiangSpecialEmptyStationDeviceDriver = (HailiangSpecialEmptyStationDeviceDriver) device.getDeviceDriver(); hailiangSpecialEmptyStationDeviceDriver.set(phase, index, inst); } if (device.getDeviceDriver() instanceof HailiangAutoCacheLineDeviceDriver) { + log.info("开始设置phase值,设备号:{}", device_code); hailiangAutoCacheLineDeviceDriver = (HailiangAutoCacheLineDeviceDriver) device.getDeviceDriver(); hailiangAutoCacheLineDeviceDriver.set(phase, index, inst); } @@ -786,10 +816,12 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic //所有双任务都有送空框完毕2 if (StrUtil.equals(inst.getNext_device_code(), device_code)) { if (device.getDeviceDriver() instanceof HailiangSpecialEmptyStationDeviceDriver) { + log.info("开始设置phase值,设备号:{}", device_code); hailiangSpecialEmptyStationDeviceDriver = (HailiangSpecialEmptyStationDeviceDriver) device.getDeviceDriver(); hailiangSpecialEmptyStationDeviceDriver.set(phase, index, inst); } if (device.getDeviceDriver() instanceof HailiangAutoCacheLineDeviceDriver) { + log.info("开始设置phase值,设备号:{}", device_code); hailiangAutoCacheLineDeviceDriver = (HailiangAutoCacheLineDeviceDriver) device.getDeviceDriver(); hailiangAutoCacheLineDeviceDriver.set(phase, index, inst); } @@ -841,7 +873,6 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic } } data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); - logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + phase + "反馈:" + data); } else if (phase == 0x71) { x = ikey; diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_auto_cache_line/HailiangAutoCacheLineDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_auto_cache_line/HailiangAutoCacheLineDeviceDriver.java index 592a44c9..5cf4b914 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_auto_cache_line/HailiangAutoCacheLineDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_auto_cache_line/HailiangAutoCacheLineDeviceDriver.java @@ -248,8 +248,7 @@ public class HailiangAutoCacheLineDeviceDriver extends AbstractOpcDeviceDriver i + "," + two_barcode1 + "," + two_barcode2 + "," + two_barcode3 + "," + two_barcode4 + "," + two_barcode5 + "," + two_barcode6 + "," + two_barcode7 + "," + two_barcode8 + "," + two_barcode9 + "," + two_barcode10 + "," + three_barcode1 + "," + three_barcode2 + "," + three_barcode3 + "," + three_barcode4 + "," + three_barcode5 - + "," + three_barcode6 + "," + three_barcode7 + "," + three_barcode8 + "," + three_barcode9 + "," + three_barcode10 - + "," + prepare_barcode + "," + prepare_barcode; + + "," + three_barcode6 + "," + three_barcode7 + "," + three_barcode8 + "," + three_barcode9 + "," + three_barcode10; if (!StrUtil.equals(material_spec, last_material_spec)) { logServer.deviceExecuteLog(this.device_code, "", "", "信号material_spec:" + last_material_spec + "->" + material_spec); diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_special_full_station/HailiangSpecialFullStationDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_special_full_station/HailiangSpecialFullStationDeviceDriver.java index 961b4625..d7e71fa9 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_special_full_station/HailiangSpecialFullStationDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_special_full_station/HailiangSpecialFullStationDeviceDriver.java @@ -153,6 +153,9 @@ public class HailiangSpecialFullStationDeviceDriver extends AbstractOpcDeviceDri logServer.deviceExecuteLog(this.device_code, "", "", "信号order:" + last_order + "->" + order); } + if (device_code.equals("A1_XY_50_8_M")) { + logServer.deviceExecuteLog(device_code, "", "", "进来了........"); + } } catch (Exception var17) { var17.printStackTrace(); logServer.deviceExecuteLog(this.device_code, "", "", "读取信号值时出现异常:" + var17 + ",inst == null :" + ObjectUtil.isEmpty(inst)); diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java b/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java index dfc68fc7..a14ada1e 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java @@ -569,8 +569,10 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { hailiangAutoCacheLineDeviceDriver = (HailiangAutoCacheLineDeviceDriver) device.getDeviceDriver(); if (StrUtil.equals(type, StatusEnum.PAUSE_TYPE.getCode())) { hailiangAutoCacheLineDeviceDriver.writing("to_pause", "1"); + hailiangAutoCacheLineDeviceDriver.writing("to_pause_out_check", "1"); } else if (StrUtil.equals(type, StatusEnum.RESUME_TYPE.getCode())) { hailiangAutoCacheLineDeviceDriver.writing("to_pause", "0"); + hailiangAutoCacheLineDeviceDriver.writing("to_pause_out_check", "0"); } } JSONObject resultJson = new JSONObject(); @@ -683,8 +685,9 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { @Override public Map putAction(String jsonObject) throws Exception { + log.info("接收WMS下发动作信号,下发参数:{}", JSON.toJSONString(jsonObject)); JSONArray datas = JSONArray.parseArray(jsonObject); - log.info("putAction--------------:输入参数" + datas.toString()); + HailiangAutoCacheLineDeviceDriver hailiangAutoCacheLineDeviceDriver; for (int i = 0; i < datas.size(); i++) { JSONObject data = datas.getJSONObject(i); String device_code = data.getString("device_code"); @@ -694,12 +697,16 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { if (ObjectUtil.isEmpty(device)) { throw new Exception("未找到对应设备:" + device_code); } + if (device.getDeviceDriver() instanceof HailiangAutoCacheLineDeviceDriver) { + hailiangAutoCacheLineDeviceDriver = (HailiangAutoCacheLineDeviceDriver) device.getDeviceDriver(); + hailiangAutoCacheLineDeviceDriver.writing(code, value); + } } JSONObject resultJson = new JSONObject(); resultJson.put("status", HttpStatus.OK); resultJson.put("message", "操作成功"); resultJson.put("data", new JSONObject()); - log.info("putAction--------------:输出参数" + resultJson.toString()); + log.info("接收WMS暂停或恢复缓存线,响应参数:{}", JSON.toJSONString(resultJson)); return resultJson; } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/instruction/service/InstructionService.java b/wcs/nladmin-system/src/main/java/org/nl/acs/instruction/service/InstructionService.java index 3fd7790a..ebbb90a7 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/instruction/service/InstructionService.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/instruction/service/InstructionService.java @@ -331,7 +331,7 @@ public interface InstructionService { * @param to_task_type 缓存线任务类型 * @return */ - public Map issued(String inst_code, String to_priority_layer, String barcodeArr, String to_task_type,String to_open_check_barcode); + public Map issued(String inst_code, String to_priority_layer, String barcodeArr, String to_task_type, String to_open_check_barcode); /** * 自动创建指令时,根据任务信息创建指令对象 @@ -341,4 +341,11 @@ public interface InstructionService { * @return */ Instruction createInstDtoByTask(TaskDto taskDto, String link_no); + + /** + * 取消缓存线指令时清除agv上报信息 + * + * @param dto + */ + void removeCacheLinePhase(Instruction dto); } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java b/wcs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java index 79aad848..861f837a 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java @@ -893,7 +893,7 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public void cancel(String id) throws Exception { // flag= true时取消指令 boolean flag = false; @@ -958,11 +958,12 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu entity.setInstruction_status("3"); this.update(entity); + removeCacheLinePhase(entity); } } @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public void cancelByLinkNum(String linkNum) { List insts = this.findByLinkNum(linkNum); if (insts != null) { @@ -978,7 +979,7 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu } @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public void forceCancel(String id) throws Exception { // flag= true时取消指令 boolean flag = false; @@ -1020,7 +1021,7 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu } @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public void forceCancelByLinkNum(String linkNum) throws Exception { List insts = this.findByLinkNum(linkNum); if (insts != null) { @@ -1036,6 +1037,7 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu } @Override + @Transactional(rollbackFor = Exception.class) public void cancelNoSendAgv(String id) throws Exception { // flag= true时取消指令 Instruction entity = this.findById(id); @@ -1415,4 +1417,25 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu instDto.setAgv_system_type(taskDto.getAgv_system_type()); return instDto; } + + @Override + public void removeCacheLinePhase(Instruction dto) { + if (dto != null) { + String start_point_code = dto.getStart_device_code(); + String next_point_code = dto.getNext_device_code(); + String put_point_code = dto.getPut_device_code(); + Device start_device = deviceAppService.findDeviceByCode(start_point_code); + Device next_device = deviceAppService.findDeviceByCode(next_point_code); + Device put_device = deviceAppService.findDeviceByCode(put_point_code); + HailiangAutoCacheLineDeviceDriver hailiangAutoCacheLineDeviceDriver; + if (put_device != null && put_device.getDeviceDriver() instanceof HailiangAutoCacheLineDeviceDriver) { + hailiangAutoCacheLineDeviceDriver = (HailiangAutoCacheLineDeviceDriver) put_device.getDeviceDriver(); + hailiangAutoCacheLineDeviceDriver.set(0, 0, null); + } + if (start_device != null && next_device != null && start_device.getDeviceDriver() instanceof HailiangAutoCacheLineDeviceDriver && next_device.getDeviceDriver() instanceof HailiangAutoCacheLineDeviceDriver) { + hailiangAutoCacheLineDeviceDriver = (HailiangAutoCacheLineDeviceDriver) start_device.getDeviceDriver(); + hailiangAutoCacheLineDeviceDriver.set(0, 0, null); + } + } + } } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java b/wcs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java index 601d1cc9..b5df1079 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java @@ -412,11 +412,11 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC Object obj = accessor_value.getValue(relate); sb.append("key:" + relate + "value:" + obj + ";"); } - lucene.deviceExecuteLog(new LuceneLogDto(itemDto.getOpc_server_code(), itemDto.getOpc_plc_code(), itemDto.getDevice_code(), itemDto.getItem_code().substring(itemDto.getItem_code().lastIndexOf(".")+1), String.valueOf(his), String.valueOf(value))); + //lucene.deviceExecuteLog(new LuceneLogDto(itemDto.getOpc_server_code(), itemDto.getOpc_plc_code(), itemDto.getDevice_code(), itemDto.getItem_code().substring(itemDto.getItem_code().lastIndexOf(".")+1), String.valueOf(his), String.valueOf(value))); } else { - lucene.deviceExecuteLog(new LuceneLogDto(itemDto.getOpc_server_code(), itemDto.getOpc_plc_code(), itemDto.getDevice_code(), itemDto.getItem_code().substring(itemDto.getItem_code().lastIndexOf(".")+1), String.valueOf(his), String.valueOf(value))); + // lucene.deviceExecuteLog(new LuceneLogDto(itemDto.getOpc_server_code(), itemDto.getOpc_plc_code(), itemDto.getDevice_code(), itemDto.getItem_code().substring(itemDto.getItem_code().lastIndexOf(".")+1), String.valueOf(his), String.valueOf(value))); } } diff --git a/wcs/nladmin-system/src/main/java/org/nl/modules/lucene/common/LuceneIndexWriter.java b/wcs/nladmin-system/src/main/java/org/nl/modules/lucene/common/LuceneIndexWriter.java index df7c4eb9..d4e89056 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/modules/lucene/common/LuceneIndexWriter.java +++ b/wcs/nladmin-system/src/main/java/org/nl/modules/lucene/common/LuceneIndexWriter.java @@ -16,7 +16,7 @@ import java.text.SimpleDateFormat; import java.util.Date; public class LuceneIndexWriter { - private static IndexWriter indexWriter; + private static volatile IndexWriter indexWriter; static { try { @@ -27,16 +27,16 @@ public class LuceneIndexWriter { e.printStackTrace(); } /**当当前线程结束时,自动关闭IndexWriter,使用Runtime对象*/ - Runtime.getRuntime().addShutdownHook(new Thread(){ - @Override - public void run() { - try { - closeIndexWriter(); - } catch (Exception e) { - e.printStackTrace(); - } - } - }); +// Runtime.getRuntime().addShutdownHook(new Thread(){ +// @Override +// public void run() { +// try { +// closeIndexWriter(); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// }); } /**在线程结束时,自动关闭IndexWriter*/ public static IndexWriter getIndexWriter() { @@ -47,7 +47,7 @@ public class LuceneIndexWriter { * @throws CorruptIndexException */ public static void closeIndexWriter() throws Exception { if(indexWriter != null) { - indexWriter.close(); +// indexWriter.close(); } } diff --git a/wcs/nladmin-system/src/main/java/org/nl/modules/lucene/service/impl/LuceneExecuteLogServiceImpl.java b/wcs/nladmin-system/src/main/java/org/nl/modules/lucene/service/impl/LuceneExecuteLogServiceImpl.java index f350977e..c1fd06cd 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/modules/lucene/service/impl/LuceneExecuteLogServiceImpl.java +++ b/wcs/nladmin-system/src/main/java/org/nl/modules/lucene/service/impl/LuceneExecuteLogServiceImpl.java @@ -81,7 +81,7 @@ public class LuceneExecuteLogServiceImpl implements LuceneExecuteLogService { long endTime = System.currentTimeMillis(); log.info("建立索引共耗时{}毫秒", endTime - startTime); indexWriter.commit(); - MDC.put("DEVICECODE", luceneLogDto.getDevice_code()); +// MDC.put("DEVICECODE", luceneLogDto.getDevice_code()); } catch (Exception e) { log.error(e.getMessage(), e); } diff --git a/wcs/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCreateInst.java b/wcs/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCreateInst.java index 50627abf..e587cd25 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCreateInst.java +++ b/wcs/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCreateInst.java @@ -1,5 +1,6 @@ package org.nl.modules.quartz.task; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import lombok.extern.slf4j.Slf4j; import org.nl.acs.acsEnum.AgvTypeEnum; @@ -47,6 +48,9 @@ public class AutoCreateInst { //查询所有诺宝AGV任务 List list = taskService.queryAll("task_status = '0' and agv_system_type = '1' "); + if (ObjectUtil.isEmpty(list)) { + return; + } //根据LINK_NUM分组任务 Map> link_num_tasks = Optional .ofNullable(list) @@ -77,7 +81,6 @@ public class AutoCreateInst { if (StrUtil.equals(taskDto.getIs_send(), StatusEnum.NO_SEND.getCode())) { continue; } - //生产指令关联编号 String link_no = CodeUtil.getNewCode("LINK_NO"); @@ -96,7 +99,6 @@ public class AutoCreateInst { taskService.update(taskDto); } else if (tasks.size() == TASK_SIZE_2) { - //生产指令关联编号 String link_no = CodeUtil.getNewCode("LINK_NO"); From f73fdf49e61c601dea63e95c08560ec100167574 Mon Sep 17 00:00:00 2001 From: "USER-20220102CG\\noblelift" <546428999@qq.com> Date: Thu, 25 May 2023 19:27:14 +0800 Subject: [PATCH 2/3] =?UTF-8?q?add=20=E8=80=81=E8=BD=A6=E9=97=B4=E5=8C=85?= =?UTF-8?q?=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...iliangOldLetteringPackageDeviceDriver.java | 69 +- .../ItemProtocol.java | 22 +- ...iliangLetteringPackageSsxDeviceDriver.java | 105 +-- .../HailiangOldPalletizingStationDriver.java | 47 +- .../HailiangOldStackingManipulatorDriver.java | 99 +-- ...ailiangOldUnboxingMachineDeviceDriver.java | 3 +- .../EalingMachineDeviceDriver.java | 1 + .../driver/AbstractOpcDeviceDriver.java | 7 + .../nl/acs/opc/DeviceOpcProtocolRunable.java | 9 +- .../hailiang_old_package_ssx_station.vue | 4 +- .../src/views/acs/monitor/device/index.vue | 601 ------------------ wcs/nladmin-ui/src/views/acs/order/index.vue | 40 +- .../src/views/system/monitor/device/index.vue | 42 ++ 13 files changed, 321 insertions(+), 728 deletions(-) diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/HailiangOldLetteringPackageDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/HailiangOldLetteringPackageDeviceDriver.java index 5a265278..2575add0 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/HailiangOldLetteringPackageDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/HailiangOldLetteringPackageDeviceDriver.java @@ -9,8 +9,11 @@ import org.nl.acs.acsEnum.WorkerOrderEnum; import org.nl.acs.device_driver.DeviceDriver; import org.nl.acs.device_driver.RouteableDeviceDriver; import org.nl.acs.device_driver.basedriver.hailiang_one.IssuedDeviceOrderInfo; +import org.nl.acs.device_driver.basedriver.hailiang_one.MonitoringLargeScreenData; 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.history.ErrorUtil; import org.nl.acs.history.service.DeviceErrorLogService; import org.nl.acs.history.service.dto.DeviceErrorLogDto; @@ -19,8 +22,10 @@ import org.nl.acs.instruction.service.dto.Instruction; import org.nl.acs.log.service.DeviceExecuteLogService; import org.nl.acs.monitor.DeviceStageMonitor; import org.nl.acs.opc.Device; +import org.nl.acs.order.service.ProduceshiftorderService; import org.nl.acs.order.service.dto.EalingOrderDto; import org.nl.acs.order.service.dto.ProduceshiftorderDto; +import org.nl.modules.lucene.service.LuceneExecuteLogService; import org.nl.modules.wql.util.SpringContextHolder; import org.springframework.beans.factory.annotation.Autowired; @@ -37,9 +42,15 @@ import java.util.Map; public class HailiangOldLetteringPackageDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor, IssuedDeviceOrderInfo { protected ItemProtocol itemProtocol = new ItemProtocol(this); + @Autowired + AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsServiceImpl.class); + @Autowired DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); @Autowired + ProduceshiftorderService produceshiftorderService = SpringContextHolder.getBean(ProduceshiftorderService.class); + @Autowired DeviceErrorLogService deviceErrorLogService = SpringContextHolder.getBean(DeviceErrorLogServiceImpl.class); + LuceneExecuteLogService luceneExecuteLogService = SpringContextHolder.getBean("luceneExecuteLogServiceImpl"); int heartbeat = 0; @@ -47,12 +58,16 @@ public class HailiangOldLetteringPackageDeviceDriver extends AbstractOpcDeviceDr int error = 0; int task = 0; int move = 0; + int order = 0; + int finish = 0; String barcode,last_barcode; int last_heartbeat = 0; int last_mode = 0; int last_error = 0; int last_task = 0; + int last_finish = 0; + int last_order = 0; Boolean isonline = true; @@ -77,7 +92,8 @@ public class HailiangOldLetteringPackageDeviceDriver extends AbstractOpcDeviceDr device_code = this.getDeviceCode(); mode = this.itemProtocol.getMode(); error = this.itemProtocol.getError(); - + order = this.itemProtocol.getOrder(); + finish = this.itemProtocol.getOrder_finish(); if (mode != last_mode) { logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode + "复位请求标记"); } @@ -92,7 +108,33 @@ public class HailiangOldLetteringPackageDeviceDriver extends AbstractOpcDeviceDr } logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error + "复位请求标记"); } + if (finish != last_finish) { + if (mode == 2 && finish == 1) { + MonitoringLargeScreenData.orderData.put(String.valueOf(order), -1); + } + logServer.deviceExecuteLog(this.device_code, "", "", "信号finish:" + last_finish + "->" + finish); + } + // 修改工单状态为生产中 + if (mode == 2 && order > 0) { + ProduceshiftorderDto pdto = produceshiftorderService.findByCodeFromCache(String.valueOf(order)); + if (pdto != null) { + if (pdto.getOrder_status().equals(WorkerOrderEnum.READY.getCode())) { + pdto.setOrder_status(WorkerOrderEnum.PRODUCTING.getCode()); + produceshiftorderService.update(pdto); + } + } + } + + //修改工单状态为自动完成 + if (mode == 2 && finish != last_finish && finish == 1 && order > 0) { + ProduceshiftorderDto pdto = produceshiftorderService.findByCodeFromCache(String.valueOf(order)); + if (pdto != null) { + if (pdto.getOrder_status().equals(WorkerOrderEnum.PRODUCTING.getCode())) { + produceshiftorderService.finished(pdto); + } + } + } } catch (Exception var17) { var17.printStackTrace(); @@ -117,6 +159,9 @@ public class HailiangOldLetteringPackageDeviceDriver extends AbstractOpcDeviceDr last_mode = mode; last_error = error; last_task = task; + last_finish = finish; + last_order = order; + } @@ -141,24 +186,30 @@ public class HailiangOldLetteringPackageDeviceDriver extends AbstractOpcDeviceDr @Override public void issuedOrderInfo(ProduceshiftorderDto dto) { - EalingOrderDto ealingOrderDto = dto.getEalingOrderDto(); - if (ealingOrderDto != null) { - String is_foreward = ealingOrderDto.getIs_foreward(); + if (dto != null) { Map map = new HashMap<>(); - map.put("to_qty", dto.getQty()); + map.put("to_clear", "1"); + map.put("to_order_qty", String.valueOf(dto.getQty())); map.put("to_order", dto.getOrder_code()); - map.put("item_to_bz_qty", dto.getPackage_qty()); - map.put("item_to_box_qty", dto.getBox_num()); + map.put("to_bz_qty", dto.getPackage_qty()); + map.put("to_box_qty", dto.getBox_num()); map.put("to_one_box_qty", dto.getOne_box_package_qty()); map.put("to_one_bag_qty", dto.getOne_package_qty()); - map.put("to_one_box_qty", dto.getOne_box_package_qty()); this.writing(map); } } @Override public void issuedOrderFinish(String autoFinish) { - + Map map = new HashMap<>(); + if (StrUtil.equals(autoFinish, WorkerOrderEnum.FORCEFINISH.getCode())) { + map.put("to_finished", "1"); + } else { + map.put("to_confirm_finished", "1"); + } + //map.put("to_order", "0"); + //map.put("to_clear", "1"); + this.writing(map); } @Override diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/ItemProtocol.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/ItemProtocol.java index f0e9d9b2..9562df72 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/ItemProtocol.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/ItemProtocol.java @@ -26,6 +26,7 @@ public class ItemProtocol { public static String item_kz_qty = "kz_qty"; public static String item_ds_qty = "ds_qty"; public static String item_bz_qty = "bz_qty"; + public static String item_bz_box_qty = "bz_box_qty"; public static String item_order_finish = "order_finish"; public static String item_order_compulsion_finish = "order_compulsion_finish"; public static String item_order = "order"; @@ -91,6 +92,10 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_bz_qty); } + public int getBz_box_qty() { + return this.getOpcIntegerValue(item_bz_box_qty); + } + public int getError() { return this.getOpcIntegerValue(item_error); } @@ -111,6 +116,10 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_order); } + public int getOrder_finish() { + return this.getOpcIntegerValue(item_order_finish); + } + //是否有货 public int hasGoods(int move) { @@ -157,12 +166,13 @@ public class ItemProtocol { list.add(new ItemDto(item_kz_error, "刻字机报警信号", "DB600.W18")); list.add(new ItemDto(item_ds_error, "点数机报警信号", "DB600.W20")); list.add(new ItemDto(item_bz_error, "包装机报警信号", "DB600.W22")); - list.add(new ItemDto(item_kz_qty, "刻字数量", "DB600.W24")); - list.add(new ItemDto(item_ds_qty, "点数数量", "DB600.W26")); - list.add(new ItemDto(item_bz_qty, "包装数量", "DB600.W28")); - list.add(new ItemDto(item_order_finish, "工单完成", "DB600.W30")); - list.add(new ItemDto(item_order_compulsion_finish, "工单强制完成", "DB600.W32")); - list.add(new ItemDto(item_order, "工单号", "DB600.D34")); + list.add(new ItemDto(item_kz_qty, "刻字数量", "DB600.D24")); + list.add(new ItemDto(item_ds_qty, "点数数量", "DB600.D28")); + list.add(new ItemDto(item_bz_qty, "包装数量", "DB600.W32")); + list.add(new ItemDto(item_bz_box_qty, "包装箱数量", "DB600.W34")); + list.add(new ItemDto(item_order_finish, "工单完成", "DB600.W36")); + list.add(new ItemDto(item_order_compulsion_finish, "工单强制完成", "DB600.W38")); + list.add(new ItemDto(item_order, "工单号", "DB600.D40")); return list; } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/HailiangLetteringPackageSsxDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/HailiangLetteringPackageSsxDeviceDriver.java index 4b4ccaa7..64bb9c9c 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/HailiangLetteringPackageSsxDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/HailiangLetteringPackageSsxDeviceDriver.java @@ -1,10 +1,13 @@ package org.nl.acs.device_driver.basedriver.hailiang_old.hailiang_old_package_ssx; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import lombok.Data; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.nl.acs.AcsConfig; import org.nl.acs.acsEnum.WorkerOrderEnum; import org.nl.acs.device_driver.DeviceDriver; import org.nl.acs.device_driver.RouteableDeviceDriver; @@ -24,6 +27,7 @@ import org.nl.acs.order.service.dto.ProduceshiftorderDto; import org.nl.modules.wql.util.SpringContextHolder; import org.springframework.beans.factory.annotation.Autowired; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -45,6 +49,7 @@ public class HailiangLetteringPackageSsxDeviceDriver extends AbstractOpcDeviceDr int heartbeat = 0; int mode = 0; + int action = 0; int error = 0; int task = 0; int move = 0; @@ -61,8 +66,8 @@ public class HailiangLetteringPackageSsxDeviceDriver extends AbstractOpcDeviceDr Boolean isonline = true; String message = null; Boolean iserror = false; - - private int instruction_require_time_out; + private Date instruction_require_time = new Date(); + private int instruction_require_time_out = 3000; boolean requireSucess = false; private int instruction_finished_time_out; @@ -80,6 +85,7 @@ public class HailiangLetteringPackageSsxDeviceDriver extends AbstractOpcDeviceDr device_code = this.getDeviceCode(); mode = this.itemProtocol.getMode(); move = this.itemProtocol.getMove(); + action = this.itemProtocol.getAction(); error = this.itemProtocol.getError(); task = this.itemProtocol.getTask(); barcode = this.itemProtocol.getBarcode(); @@ -88,11 +94,12 @@ public class HailiangLetteringPackageSsxDeviceDriver extends AbstractOpcDeviceDr logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode + "复位请求标记"); } if (move != last_move){ - if(to_command != 0){ + message = null; + requireSucess =false; + if(to_command != 0 && "true".equals(this.device.getExtraValue().get("open_scanner"))){ this.writing("to_command", "0"); this.writing("to_target", "0"); } - requireSucess =false; } if (error != last_error) { if (error != 0) { @@ -113,53 +120,16 @@ public class HailiangLetteringPackageSsxDeviceDriver extends AbstractOpcDeviceDr logServer.deviceExecuteLog(this.device_code, "", "", "读取信号值时出现异常:" + var17); } - if (!this.itemProtocol.getIsonline()) { - //this.setIsonline(false); - //this.setIserror(true); - message = "信号量同步异常"; - //未联机 - } else if (mode == 0) { + if (mode == 0) { message = "未联机"; } else { - message = ""; Instruction instruction = null; List toInstructions; - if(move == 1 && error == 0 && barcode.length() > 0 && requireSucess == false ){ - //2305281100001 - if(barcode.trim().length() == 16){ - if(isNumeric(barcode.trim())){ - /** - * 工单为前9位 - * 第10位是否翻转 - * 第11位为前往巷道 - * 后5位为流水号 - */ - String order = barcode.trim().substring(0,9); - int isFlip = Integer.parseInt(barcode.trim().substring(9,10)); - int target = Integer.parseInt(barcode.trim().substring(10,11)); - if(isFlip>0 && target>0){ - this.writing("to_is_flip",String.valueOf(isFlip)); - this.writing("to_target", String.valueOf(target)); - this.writing("to_command","1"); - requireSucess = true; - } else { - message = "条码:"+ barcode + ",是否翻转:"+isFlip + "目标巷道:"+target; - } - - - } else { - message = "条码不为数字,无法解析"; - } - } else { - message = "条码长度不等于16,无法下发目标位置"; - } + if(action == 1 && move > 0 && error == 0 && barcode.length() > 0 && "true".equals(this.device.getExtraValue().get("open_scanner"))){ + applyTarget(barcode.trim()); } - - - - } last_mode = mode; last_move = move; @@ -169,6 +139,43 @@ public class HailiangLetteringPackageSsxDeviceDriver extends AbstractOpcDeviceDr } + public synchronized void applyTarget(String barcode) { + Date date = new Date(); + if (date.getTime() - this.instruction_require_time.getTime() < (long) this.instruction_require_time_out) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); + return; + } else { + //2305281100001 + if (barcode.trim().length() == 16) { + if (isNumeric(barcode.trim())) { + /** + * 工单为前9位 + * 第10位是否翻转 + * 第11位为前往巷道 + * 后5位为流水号 + */ + String order = barcode.trim().substring(0, 9); + int isFlip = Integer.parseInt(barcode.trim().substring(9, 10)); + int target = Integer.parseInt(barcode.trim().substring(10, 11)); + if (target > 0) { + this.writing("to_is_flip", String.valueOf(isFlip)); + this.writing("to_target", String.valueOf(target)); + this.writing("to_command", "1"); + requireSucess = true; + } else { + message = "条码:" + barcode + ",是否翻转:" + isFlip + "目标巷道:" + target; + } + + + } else { + message = "条码不为数字,无法解析"; + } + } else { + message = "条码长度不等于16,无法下发目标位置"; + } + } + } + @Override public JSONObject getDeviceStatusName() { JSONObject jo = new JSONObject(); @@ -178,23 +185,23 @@ public class HailiangLetteringPackageSsxDeviceDriver extends AbstractOpcDeviceDr String move = ""; if (this.getMode() == 0) { mode = "未联机"; + jo.put("isOnline", false); } else if (this.getMode() == 1) { mode = "单机"; + jo.put("isOnline", false); } else if (this.getMode() == 2) { mode = "联机"; + jo.put("isOnline", true); } else if (this.getMode() == 3) { mode = "运行中"; + jo.put("isOnline", true); } if (this.getMove() == 0) { move = "无货"; jo.put("hasGoods", false); - } else if (this.getMove() == 1) { + } else if (this.getMove() > 0) { move = "有货"; jo.put("hasGoods", true); - } else if (this.getMove() == 2) { - move = "有托盘有货"; - jo.put("move", move); - jo.put("hasGoods", true); } jo.put("move", move); jo.put("mode", mode); diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_palletizing_station/HailiangOldPalletizingStationDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_palletizing_station/HailiangOldPalletizingStationDriver.java index 7d5a0ea4..4f708bb2 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_palletizing_station/HailiangOldPalletizingStationDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_palletizing_station/HailiangOldPalletizingStationDriver.java @@ -1,5 +1,7 @@ package org.nl.acs.device_driver.basedriver.hailiang_old.hailiang_old_palletizing_station; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.Data; import lombok.RequiredArgsConstructor; @@ -22,6 +24,8 @@ import org.nl.acs.opc.DeviceAppService; import org.nl.acs.order.service.ProduceshiftorderService; import org.nl.acs.route.service.RouteLineService; import org.nl.acs.task.service.TaskService; +import org.nl.modules.lucene.service.LuceneExecuteLogService; +import org.nl.modules.lucene.service.dto.LuceneLogDto; import org.nl.modules.wql.util.SpringContextHolder; import org.openscada.opc.lib.da.Server; import org.springframework.beans.factory.annotation.Autowired; @@ -56,7 +60,8 @@ public class HailiangOldPalletizingStationDriver extends AbstractOpcDeviceDriver ProduceshiftorderService produceshiftorderService = SpringContextHolder.getBean(ProduceshiftorderService.class); @Autowired DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); - + @Autowired + LuceneExecuteLogService lucene = SpringContextHolder.getBean(LuceneExecuteLogService.class); Boolean isonline = true; int hasGoods = 0; String message = null; @@ -72,7 +77,8 @@ public class HailiangOldPalletizingStationDriver extends AbstractOpcDeviceDriver private int instruction_require_time_out = 3000; //请求成功标记 Boolean requireSucess = false; - + JSONArray barcodeArr = new JSONArray(); + JSONArray last_barcodeArr = new JSONArray(); String device_code; //心跳 @@ -112,25 +118,17 @@ public class HailiangOldPalletizingStationDriver extends AbstractOpcDeviceDriver error = this.itemProtocol.getError(); boxtype = this.itemProtocol.getBoxtype(); if (mode != last_mode) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode); + } - if (move != last_move) { - logServer.deviceItemValue(this.device_code, "move", String.valueOf(move)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + last_move + "->" + move); + + if(!ObjectUtil.equal(barcodeArr,last_barcodeArr)){ + lucene.deviceExecuteLog(new LuceneLogDto(this.device_code,"码垛工位当前最新条码:"+barcodeArr.toString())); } - if (number != last_number) { - logServer.deviceItemValue(this.device_code, "number", String.valueOf(number)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号number:" + last_number + "->" + number); - } - if (error != last_error) { - logServer.deviceItemValue(this.device_code, "error", String.valueOf(error)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error); - } - if (boxtype != last_boxtype) { - logServer.deviceItemValue(this.device_code, "boxtype", String.valueOf(boxtype)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号boxtype:" + last_boxtype + "->" + boxtype); + + if(number != last_number && number ==0 ){ + barcodeArr.clear(); } + } catch (Exception var17) { logServer.deviceExecuteLog(this.device_code, "", "", "读取信号出现异常:" + var17.getMessage()); return; @@ -157,6 +155,9 @@ public class HailiangOldPalletizingStationDriver extends AbstractOpcDeviceDriver this.setIserror(false); } + last_mode = mode; + last_number = number; + last_barcodeArr = barcodeArr; } protected void executing(Instruction instruction) { @@ -180,6 +181,7 @@ public class HailiangOldPalletizingStationDriver extends AbstractOpcDeviceDriver Map itemMap = new HashMap(); itemMap.put(to_param, Integer.parseInt(value)); ReadUtil.write(itemMap, server); + server.dispose(); } @@ -192,12 +194,16 @@ public class HailiangOldPalletizingStationDriver extends AbstractOpcDeviceDriver String move = ""; if (this.getMode() == 0) { mode = "未联机"; + jo.put("isOnline", false); } else if (this.getMode() == 1) { mode = "单机"; + jo.put("isOnline", false); } else if (this.getMode() == 2) { mode = "联机"; + jo.put("isOnline", true); } else if (this.getMode() == 3) { mode = "运行中"; + jo.put("isOnline", true); } if (this.getMove() == 0) { move = "无货"; @@ -209,11 +215,16 @@ public class HailiangOldPalletizingStationDriver extends AbstractOpcDeviceDriver move = "有托盘有货"; jo.put("hasGoods", true); } + jo.put("move", move); + jo.put("mode", mode); + jo.put("number", this.itemProtocol.getNumber()); + jo.put("boxType", this.itemProtocol.getBoxtype()); jo.put("isOnline", this.getIsonline()); jo.put("isError", this.getIserror()); jo.put("error", ErrorUtil.getDictDetail("ssx_error_type", String.valueOf(error))); jo.put("isOnline", this.itemProtocol.getIsonline()); jo.put("message", message); + jo.put("barcodeArr",barcodeArr); return jo; } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_stacking_manipulator/HailiangOldStackingManipulatorDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_stacking_manipulator/HailiangOldStackingManipulatorDriver.java index 8cdd07cb..42727180 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_stacking_manipulator/HailiangOldStackingManipulatorDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_stacking_manipulator/HailiangOldStackingManipulatorDriver.java @@ -1,6 +1,7 @@ package org.nl.acs.device_driver.basedriver.hailiang_old.hailiang_old_stacking_manipulator; import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -99,8 +100,6 @@ public class HailiangOldStackingManipulatorDriver extends AbstractOpcDeviceDrive Boolean singlePlacementRequireSuccess = false; //请求码垛完成标志 Boolean stackingRequireSuccess = false; - - JSONArray barcodeArr = new JSONArray(); //当前设备状态 01代表 关机, 02代表 开机, 03代表 生产中, 04代表 待机, 05代表 异常 int status_type = 0; //上次设备状态 @@ -162,25 +161,24 @@ public class HailiangOldStackingManipulatorDriver extends AbstractOpcDeviceDrive logServer.deviceItemValue(this.device_code, "error", String.valueOf(error)); logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error); } - if (getStation != last_getStation) { - logServer.deviceItemValue(this.device_code, "getStation", String.valueOf(getStation)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号getStation:" + last_getStation + "->" + getStation); - } - if (putStation != last_putStation) { - logServer.deviceItemValue(this.device_code, "putStation", String.valueOf(putStation)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号putStation:" + last_putStation + "->" + putStation); - } - if (encoder_qty != last_encoder_qty) { - logServer.deviceItemValue(this.device_code, "encoder_qty", String.valueOf(encoder_qty)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号encoder_qty:" + last_encoder_qty + "->" + encoder_qty); - } - if (boxtype != last_boxtype) { - logServer.deviceItemValue(this.device_code, "boxtype", String.valueOf(boxtype)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号boxtype:" + last_boxtype + "->" + boxtype); - } +// if (getStation != last_getStation) { +// logServer.deviceItemValue(this.device_code, "getStation", String.valueOf(getStation)); +// logServer.deviceExecuteLog(this.device_code, "", "", "信号getStation:" + last_getStation + "->" + getStation); +// } +// if (putStation != last_putStation) { +// logServer.deviceItemValue(this.device_code, "putStation", String.valueOf(putStation)); +// logServer.deviceExecuteLog(this.device_code, "", "", "信号putStation:" + last_putStation + "->" + putStation); +// } +// if (encoder_qty != last_encoder_qty) { +// logServer.deviceItemValue(this.device_code, "encoder_qty", String.valueOf(encoder_qty)); +// logServer.deviceExecuteLog(this.device_code, "", "", "信号encoder_qty:" + last_encoder_qty + "->" + encoder_qty); +// } +// if (boxtype != last_boxtype) { +// logServer.deviceItemValue(this.device_code, "boxtype", String.valueOf(boxtype)); +// logServer.deviceExecuteLog(this.device_code, "", "", "信号boxtype:" + last_boxtype + "->" + boxtype); +// } } catch (Exception var17) { logServer.deviceExecuteLog(this.device_code, "", "", "读取信号出现异常:" + var17.getMessage()); - return; } if (!this.itemProtocol.getIsonline()) { this.setIsonline(false); @@ -274,7 +272,7 @@ public class HailiangOldStackingManipulatorDriver extends AbstractOpcDeviceDrive } String order = barcode.trim().substring(0,9); ProduceshiftorderDto dto =produceshiftorderService.findByCodeFromCache(order); - if(Objects.isNull(dto)){ + if(ObjectUtil.isEmpty(dto)){ message = "获取托盘信息,工单号:" + order + "未找到对应工单"; return false; } @@ -302,7 +300,10 @@ public class HailiangOldStackingManipulatorDriver extends AbstractOpcDeviceDrive HailiangOldPalletizingStationDriver hailiangOldPalletizingStationDriver; if(device.getDeviceDriver() instanceof HailiangOldPalletizingStationDriver){ hailiangOldPalletizingStationDriver = (HailiangOldPalletizingStationDriver) device.getDeviceDriver(); - if(hailiangOldPalletizingStationDriver.getNumber() == 0 ){ + if(hailiangOldPalletizingStationDriver.getNumber() == 0 && + hailiangOldPalletizingStationDriver.getMode() == 2 && + hailiangOldPalletizingStationDriver.getMove()==1 && + hailiangOldPalletizingStationDriver.getBoxtype() ==0) { targetStation = putDeviceCodeList.get(i); lucene.deviceExecuteLog(new LuceneLogDto(this.device_code,"单次码垛完成,取货位:"+getDeviceCode+",条码:"+barcode +",未找到相同箱型放货位,分配空放货位:"+ putDeviceCodeList.get(i))); putIndex = i; @@ -362,19 +363,29 @@ public class HailiangOldStackingManipulatorDriver extends AbstractOpcDeviceDrive //暂时不反馈MES Device getDevice = deviceAppservice.findDeviceByCode(getDeviceCode); + Device putDevice = deviceAppservice.findDeviceByCode(putDeviceCode); HailiangLetteringPackageSsxDeviceDriver hailiangLetteringPackageSsxDeviceDriver; + HailiangOldPalletizingStationDriver hailiangOldPalletizingStationDriver; + String barcode = null; if(getDevice.getDeviceDriver() instanceof HailiangLetteringPackageSsxDeviceDriver ){ hailiangLetteringPackageSsxDeviceDriver = (HailiangLetteringPackageSsxDeviceDriver) getDevice.getDeviceDriver(); - String barcode = hailiangLetteringPackageSsxDeviceDriver.getLast_barcode(); - if(Objects.isNull(barcode)){ + barcode = hailiangLetteringPackageSsxDeviceDriver.getLast_barcode(); + if(ObjectUtil.isEmpty(barcode)){ message = "单次码垛完成,取货位:"+getDeviceCode+"条码为空"; return false; } lucene.deviceExecuteLog(new LuceneLogDto(this.device_code,"单次码垛完成,取货位:"+getDeviceCode+",条码:"+barcode)); - barcodeArr.add(barcode); + } + + if(putDevice.getDeviceDriver() instanceof HailiangOldPalletizingStationDriver ) { + hailiangOldPalletizingStationDriver = (HailiangOldPalletizingStationDriver) putDevice.getDeviceDriver(); + JSONArray arr = hailiangOldPalletizingStationDriver.getBarcodeArr(); + arr.add(barcode.trim()); + hailiangOldPalletizingStationDriver.setBarcodeArr(arr); } this.writing("to_feedback", "2"); + this.writing("to_boxType", "0"); this.setSinglePlacementRequireSuccess(true); } return true; @@ -393,22 +404,34 @@ public class HailiangOldStackingManipulatorDriver extends AbstractOpcDeviceDrive List putDeviceCodeList = this.getExtraDeviceCodes("link_put_device_code"); //根据kep读取到的放货工位的值 - 1 得到对应设备的下标,再根据下标获得对应设备的编码 String putDeviceCode = putDeviceCodeList.get(getPutStation() - 1).replace("\"", ""); + HailiangOldPalletizingStationDriver hailiangOldPalletizingStationDriver; + Device putDevice = deviceAppservice.findDeviceByCode(putDeviceCode); + JSONArray ja = null; + if(putDevice.getDeviceDriver() instanceof HailiangOldPalletizingStationDriver ) { + hailiangOldPalletizingStationDriver = (HailiangOldPalletizingStationDriver) putDevice.getDeviceDriver(); + ja = hailiangOldPalletizingStationDriver.getBarcodeArr(); + lucene.deviceExecuteLog(new LuceneLogDto(this.device_code,"码垛完成ja:"+ja.toString())); + } JSONObject map = new JSONObject(); map.put("device_code", putDeviceCode); map.put("encoder_qty", String.valueOf(getEncoder_qty())); map.put("boxtype", String.valueOf(getBoxtype())); - map.put("barcodeArr",barcodeArr); + map.put("barcodeArr", String.valueOf(ja)); map.put("id", IdUtil.simpleUUID()); - JSONObject resp = acsToWmsService.stackingCompleted(map); - int code = Integer.parseInt(resp.getString("code")); - String message = resp.getString("message"); - JSONObject data = resp.getJSONObject("data"); - if (code == 200) { - this.writing("to_feedback", "3"); - this.setStackingRequireSuccess(true); - } else { - log.warn("码垛完成反馈失败!设备号:{},原因{}", device_code, message); - } + lucene.deviceExecuteLog(new LuceneLogDto(this.device_code,"码垛完成反馈:"+map)); + +// JSONObject resp = acsToWmsService.stackingCompleted(map); +// int code = Integer.parseInt(resp.getString("code")); +// String message = resp.getString("message"); +// JSONObject data = resp.getJSONObject("data"); +// if (code == 200) { +// this.writing("to_feedback", "3"); +// this.setStackingRequireSuccess(true); +// } else { +// log.warn("码垛完成反馈失败!设备号:{},原因{}", device_code, message); +// } + this.writing("to_feedback", "3"); + this.setStackingRequireSuccess(true); } return true; } @@ -435,16 +458,18 @@ public class HailiangOldStackingManipulatorDriver extends AbstractOpcDeviceDrive Map itemMap = new HashMap(); itemMap.put(to_param, Integer.parseInt(value)); ReadUtil.write(itemMap, server); + server.disconnect(); } @Override public JSONObject getDeviceStatusName() { JSONObject jo = new JSONObject(); jo.put("device_name", this.getDevice().getDevice_name()); - jo.put("mode", mode == 1 ? "联机" : "未联机"); + jo.put("mode", mode == 2 ? "联机" : "未联机"); jo.put("action", action); jo.put("error", ErrorUtil.getDictDetail("jxs_error_type", String.valueOf(error))); - jo.put("barcodeArr", barcodeArr); + jo.put("getStation", this.itemProtocol.getGetStation()); + jo.put("putStation", this.itemProtocol.getPutStation()); jo.put("isOnline", this.itemProtocol.getIsonline()); jo.put("message", message); return jo; diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_unboxing_machine/HailiangOldUnboxingMachineDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_unboxing_machine/HailiangOldUnboxingMachineDeviceDriver.java index 1b22675e..d5e27a8b 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_unboxing_machine/HailiangOldUnboxingMachineDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_unboxing_machine/HailiangOldUnboxingMachineDeviceDriver.java @@ -129,11 +129,12 @@ public class HailiangOldUnboxingMachineDeviceDriver extends AbstractOpcDeviceDri @Override public JSONObject getDeviceStatusName() { JSONObject jo = new JSONObject(); + jo.put("device_code", this.getDevice().getDevice_code()); jo.put("device_name", this.getDevice().getDevice_name()); jo.put("mode", mode == 1 ? "联机" : "未联机"); jo.put("error", ErrorUtil.getDictDetail("unbox_error_type", String.valueOf(error))); jo.put("qty", qty); - jo.put("status", this.itemProtocol.getStatus()==1 ? "未知":"工作中"); + jo.put("status", this.itemProtocol.getStatus()== 0 ? "未知":"工作中"); jo.put("one_qty", this.itemProtocol.getOne_qty()); jo.put("two_qty", this.itemProtocol.getTwo_qty()); jo.put("three_qty", this.itemProtocol.getThree_qty()); diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_ealing_machine/EalingMachineDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_ealing_machine/EalingMachineDeviceDriver.java index 6782b258..ef24be19 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_ealing_machine/EalingMachineDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_ealing_machine/EalingMachineDeviceDriver.java @@ -246,6 +246,7 @@ public class EalingMachineDeviceDriver extends AbstractOpcDeviceDriver implement @Override public JSONObject getDeviceStatusName() { JSONObject jo = new JSONObject(); + jo.put("device_code", this.getDevice().getDevice_code()); jo.put("device_name", this.getDevice().getDevice_name()); jo.put("isOnline", this.itemProtocol.getIsonline()); return jo; diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/driver/AbstractOpcDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/driver/AbstractOpcDeviceDriver.java index b2680b73..7d1b2e28 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/driver/AbstractOpcDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/driver/AbstractOpcDeviceDriver.java @@ -13,6 +13,8 @@ import org.nl.acs.opc.WcsConfig; import org.nl.acs.udw.UnifiedDataAccessor; import org.nl.acs.udw.UnifiedDataAccessorFactory; import org.nl.acs.udw.UnifiedDataAppService; +import org.nl.modules.lucene.service.LuceneExecuteLogService; +import org.nl.modules.lucene.service.dto.LuceneLogDto; import org.nl.modules.wql.exception.WDKException; import org.nl.modules.wql.util.SpringContextHolder; import org.openscada.opc.lib.da.Server; @@ -144,6 +146,7 @@ public class AbstractOpcDeviceDriver extends AbstractDeviceDriver implements Opc * @param value */ public void writing(String key, String value) { + LuceneExecuteLogService lucene = SpringContextHolder.getBean(LuceneExecuteLogService.class); DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); String opcServerId = this.getDevice().getOpc_server_id(); Server server = ReadUtil.getServer(opcServerId); @@ -151,6 +154,7 @@ public class AbstractOpcDeviceDriver extends AbstractDeviceDriver implements Opc itemMap.put(getToParam() + key, value); ReadUtil.write(itemMap, server); server.disconnect(); + lucene.deviceExecuteLog(new LuceneLogDto(this.getDeviceCode(),"下发单个电气信号:" + key + ",下发电气信号值:" + value)); logServer.deviceExecuteLog(this.getDevice().getDevice_code(), "", "", "下发单个电气信号:" + key + ",下发电气信号值:" + value); } @@ -162,6 +166,8 @@ public class AbstractOpcDeviceDriver extends AbstractDeviceDriver implements Opc */ public void writing(Map map) { DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); + LuceneExecuteLogService lucene = SpringContextHolder.getBean(LuceneExecuteLogService.class); + Map itemMap = new HashMap(); map.forEach((key, value) -> { if (ObjectUtil.isNotEmpty(value)) { @@ -170,6 +176,7 @@ public class AbstractOpcDeviceDriver extends AbstractDeviceDriver implements Opc }); if (ObjectUtil.isNotEmpty(itemMap)) { this.control(itemMap); + lucene.deviceExecuteLog(new LuceneLogDto(this.getDeviceCode(),"下发多个电气信号:" + itemMap)); logServer.deviceExecuteLog(this.getDevice().getDevice_code(), "", "", "下发多个电气信号:" + itemMap); } } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java b/wcs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java index 601d1cc9..7ea25f40 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java @@ -412,11 +412,14 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC Object obj = accessor_value.getValue(relate); sb.append("key:" + relate + "value:" + obj + ";"); } - lucene.deviceExecuteLog(new LuceneLogDto(itemDto.getOpc_server_code(), itemDto.getOpc_plc_code(), itemDto.getDevice_code(), itemDto.getItem_code().substring(itemDto.getItem_code().lastIndexOf(".")+1), String.valueOf(his), String.valueOf(value))); + if (!itemDto.getItem_code().endsWith("heartbeat")) { + lucene.deviceExecuteLog(new LuceneLogDto(itemDto.getOpc_server_code(), itemDto.getOpc_plc_code(), itemDto.getDevice_code(), itemDto.getItem_code().substring(itemDto.getItem_code().lastIndexOf(".")+1), String.valueOf(his), String.valueOf(value))); + } } else { - - lucene.deviceExecuteLog(new LuceneLogDto(itemDto.getOpc_server_code(), itemDto.getOpc_plc_code(), itemDto.getDevice_code(), itemDto.getItem_code().substring(itemDto.getItem_code().lastIndexOf(".")+1), String.valueOf(his), String.valueOf(value))); + if (!itemDto.getItem_code().endsWith("heartbeat")) { + lucene.deviceExecuteLog(new LuceneLogDto(itemDto.getOpc_server_code(), itemDto.getOpc_plc_code(), itemDto.getDevice_code(), itemDto.getItem_code().substring(itemDto.getItem_code().lastIndexOf(".")+1), String.valueOf(his), String.valueOf(value))); + } } } diff --git a/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_package_ssx_station.vue b/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_package_ssx_station.vue index f6ab9efc..3130ac08 100644 --- a/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_package_ssx_station.vue +++ b/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_package_ssx_station.vue @@ -67,8 +67,8 @@ - - + + diff --git a/wcs/nladmin-ui/src/views/acs/monitor/device/index.vue b/wcs/nladmin-ui/src/views/acs/monitor/device/index.vue index 14249508..e69de29b 100644 --- a/wcs/nladmin-ui/src/views/acs/monitor/device/index.vue +++ b/wcs/nladmin-ui/src/views/acs/monitor/device/index.vue @@ -1,601 +0,0 @@ - - - - - diff --git a/wcs/nladmin-ui/src/views/acs/order/index.vue b/wcs/nladmin-ui/src/views/acs/order/index.vue index 047f7d4a..504b9dca 100644 --- a/wcs/nladmin-ui/src/views/acs/order/index.vue +++ b/wcs/nladmin-ui/src/views/acs/order/index.vue @@ -135,6 +135,27 @@ + + + + + + + + + + + + + + + + + + + + +