From 0e6e8eeef9e7a38d3bf23541e749cbb47321291c Mon Sep 17 00:00:00 2001 From: tuqiang <437016993@qq.com> Date: Mon, 19 Aug 2024 18:37:03 +0800 Subject: [PATCH] =?UTF-8?q?rev:=E4=B8=80=E6=A5=BC=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nl/modules/quartz/task/ToAgvDevice.java | 2 +- .../agv/ndctwo/AgvNdcTwoDeviceDriver.java | 10 +- .../BeltConveyorDeviceDriver.java | 22 +++-- ...nishedProductOutBindLableDeviceDriver.java | 93 +++++++++++-------- .../FoldDiscSiteDeviceDriver.java | 19 ++-- ...ConveyorWithScannerWeightDeviceDriver.java | 59 +++++++----- ...pedManipulatorManipulatorDeviceDriver.java | 67 +++++++------ .../StandardStackerDeviceDriver.java | 4 + .../acs/ext/wms/service/AcsToWmsService.java | 2 +- .../wms/service/impl/AcsToWmsServiceImpl.java | 16 +--- .../org/nl/acs/task/service/TaskService.java | 8 ++ .../task/service/impl/TaskServiceImpl.java | 10 ++ .../service/quartz/task/AutoCreateInst.java | 1 + .../service/quartz/task/CreateDDJInst.java | 1 + .../quartz/task/NdcAutoReconnection.java | 2 + .../service/quartz/task/ToAgvDevice.java | 74 +++++++++++++++ acs2/nladmin-ui/src/i18n/langs/monitor/en.js | 3 +- acs2/nladmin-ui/src/i18n/langs/monitor/in.js | 3 +- acs2/nladmin-ui/src/i18n/langs/monitor/zh.js | 3 +- .../src/views/system/monitor/device/index.vue | 41 ++++---- 20 files changed, 290 insertions(+), 150 deletions(-) create mode 100644 acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/ToAgvDevice.java diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/quartz/task/ToAgvDevice.java b/acs/nladmin-system/src/main/java/org/nl/modules/quartz/task/ToAgvDevice.java index 76f136ca9..aea25ba81 100644 --- a/acs/nladmin-system/src/main/java/org/nl/modules/quartz/task/ToAgvDevice.java +++ b/acs/nladmin-system/src/main/java/org/nl/modules/quartz/task/ToAgvDevice.java @@ -70,7 +70,7 @@ public class ToAgvDevice { SocketMsg deviceInfo = new SocketMsg(json, MsgType.INFO); WebSocketServer.sendInfo(deviceInfo, "toAgvDevice_data"); - // acsToWmsService.feedbackAgv(row); +// acsToWmsService.feedbackAgv(row); } } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDeviceDriver.java index f7c30b7a5..8052ea6a3 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDeviceDriver.java @@ -2131,7 +2131,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic //x坐标 x = ikey; LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) + .device_code(this.getDeviceCode()) .content("agvphase:" + phase + "x坐标:" + x) .build(); logDto.setLog_level(4); @@ -2140,7 +2140,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic //y坐标 y = ikey; LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) + .device_code(this.getDeviceCode()) .content("agvphase:" + phase + "y坐标:" + y) .build(); logDto.setLog_level(4); @@ -2149,7 +2149,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic //车辆角度 angle = ikey; LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) + .device_code(this.getDeviceCode()) .content("agvphase:" + phase + "车辆角度:" + angle) .build(); logDto.setLog_level(4); @@ -2158,7 +2158,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic //agv电量 electric_qty = ikey; LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) + .device_code(this.getDeviceCode()) .content("agvphase:" + phase + "agv电量:" + electric_qty) .build(); logDto.setLog_level(4); @@ -2167,7 +2167,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic //三色灯状态 status = ikey; LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) + .device_code(this.getDeviceCode()) .content("agvphase:" + phase + "三色灯状态:" + status) .build(); logDto.setLog_level(4); diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/belt_conveyor/BeltConveyorDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/belt_conveyor/BeltConveyorDeviceDriver.java index 0e21f286c..ea331f6d4 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/belt_conveyor/BeltConveyorDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/belt_conveyor/BeltConveyorDeviceDriver.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import lombok.Data; @@ -179,6 +180,7 @@ public class BeltConveyorDeviceDriver extends AbstractOpcDeviceDriver implements Instruction inst = null; String material = null; + String vehicle_code2; Boolean isonline = true; @@ -246,6 +248,7 @@ public class BeltConveyorDeviceDriver extends AbstractOpcDeviceDriver implements if (move != 0 && task > 0) { if (null != inst) { inst_message = "指令号:" + inst.getInstruction_code() + " " + inst.getStart_point_code() + "->" + inst.getNext_point_code(); + vehicle_code2 = inst.getVehicle_code2(); } CompletableFuture.runAsync(() -> { // 异步更新指令状态 @@ -417,13 +420,17 @@ public class BeltConveyorDeviceDriver extends AbstractOpcDeviceDriver implements .build(); logDto.setLog_level(4); luceneExecuteLogService.deviceExecuteLog(logDto); - String response = acsToWmsService.applyTwo(param); - JSONObject jo = JSON.parseObject(response); - message = "申请空托盘出入库,返回参数:" + jo; - if (jo.getInteger("status") == 200) { + HttpResponse httpResponse = acsToWmsService.applyTwo(param); + JSONObject jsonObject = null; + if(ObjectUtil.isNotEmpty(httpResponse)){ + String body = httpResponse.body(); + jsonObject = JSONObject.parseObject(body); + } + message = "申请空托盘出入库,返回参数:" + jsonObject; + if (ObjectUtil.isNotNull(jsonObject) && jsonObject.getInteger("status") == 200) { LuceneLogDto logDto2 = LuceneLogDto.builder() .device_code(device_code) - .content("申请空托盘出入库,参数,接口返回:" + jo) + .content("申请空托盘出入库,参数,接口返回:" + jsonObject) .build(); logDto2.setLog_level(4); luceneExecuteLogService.deviceExecuteLog(logDto2); @@ -436,10 +443,10 @@ public class BeltConveyorDeviceDriver extends AbstractOpcDeviceDriver implements this.requireSucess = true; } else { this.iserror = true; - message = "申请空托盘出入库出错,返回参数:" + jo; + message = "申请空托盘出入库出错,返回参数:" + jsonObject; LuceneLogDto logDto2 = LuceneLogDto.builder() .device_code(device_code) - .content("申请空托盘出入库,返回参数:" + response) + .content("申请空托盘出入库,返回参数:" + jsonObject) .build(); logDto2.setLog_level(4); luceneExecuteLogService.deviceExecuteLog(logDto2); @@ -852,6 +859,7 @@ public class BeltConveyorDeviceDriver extends AbstractOpcDeviceDriver implements jo.put("materiel", material_barcode); jo.put("inst_message", this.inst_message); jo.put("notCreateInstMessage", LangProcess.msg(notCreateInstMessage)); + jo.put("vehicle_code2", this.vehicle_code2); return jo; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/finished_product_out_with_bind_lable_conveyor/FinishedProductOutBindLableDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/finished_product_out_with_bind_lable_conveyor/FinishedProductOutBindLableDeviceDriver.java index 9724fbcad..b018dd1b6 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/finished_product_out_with_bind_lable_conveyor/FinishedProductOutBindLableDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/finished_product_out_with_bind_lable_conveyor/FinishedProductOutBindLableDeviceDriver.java @@ -19,6 +19,7 @@ import org.nl.acs.device_driver.FeedLmsRealFailed; 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.device_driver.one_manipulator.box_package_manipulator.InteractionJsonDTO; import org.nl.acs.enums.AcsToLmsApplyTaskTypeEnum; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.history.ErrorUtil; @@ -88,6 +89,8 @@ public class FinishedProductOutBindLableDeviceDriver extends AbstractOpcDeviceDr String notCreateInstMessage = ""; + String vehicle_code2; + //工作模式 int mode = 0; int last_mode = 0; @@ -339,7 +342,7 @@ public class FinishedProductOutBindLableDeviceDriver extends AbstractOpcDeviceDr inst_message = null; } - private void applyLaStrangulationAndLabeling(int mode) { + private void applyLaStrangulationAndLabeling(int mode) throws Exception { Date date = new Date(); if (date.getTime() - this.require_apply_strangulation_time.getTime() < (long) this.instruction_require_time_out) { log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); @@ -347,47 +350,56 @@ public class FinishedProductOutBindLableDeviceDriver extends AbstractOpcDeviceDr } else { this.require_apply_strangulation_time = date; Instruction inst = instructionService.findByCodeFromCache(String.valueOf(task)); - if (ObjectUtil.isEmpty(inst) || StrUtil.isEmpty(inst.getVehicle_code())) { - message = "指令为空、或者托盘码未空"; - return; - } - JSONObject param = new JSONObject(); - param.put("device_code", device_code); - param.put("vehicle_code", inst.getVehicle_code()); - param.put("type", AcsToLmsApplyTaskTypeEnum.LABEL_BIND.getType()); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("申请捆扎,请求参数:" + param) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - String response = acsToWmsService.deviceApplyTwo(param); - JSONObject jo = JSON.parseObject(response); - message = "申请捆扎,参数,接口返回:" + jo; - if (jo.getInteger("status") == 200) { - LuceneLogDto logDto2 = LuceneLogDto.builder() - .device_code(device_code) - .content("申请捆扎,参数,接口返回:" + jo) - .build(); - logDto2.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto2); -// Map datas = applyLabelingAndBindingResponse.getData(); - packagePLCData(jo.getString("data"), mode); - requireSucess = true; + if (ObjectUtil.isNotEmpty(inst)) { + applyLaStrangulationAndLabeling2(); } else { - this.iserror = true; - LuceneLogDto logDto2 = LuceneLogDto.builder() - .device_code(device_code) - .content("申请捆扎失败,接口返回:" + response) - .build(); - logDto2.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto2); - message = "申请捆扎报错,参数,接口返回:" + jo; - + message = "当前指令号:" + task + "有误,需补码重新申请捆扎贴标"; } - + if (StrUtil.isNotEmpty(hand_barcode)) { + TaskDto taskDtoHandCode = taskserver.findByVehicleCode2AndExcute(hand_barcode); + if (Objects.nonNull(taskDtoHandCode)) { + applyLaStrangulationAndLabeling2(); + message = ""; + } + } + return; } + } + public synchronized void applyLaStrangulationAndLabeling2() throws Exception { + JSONObject param = new JSONObject(); + param.put("device_code", device_code); + param.put("vehicle_code", inst.getVehicle_code()); + param.put("type", AcsToLmsApplyTaskTypeEnum.LABEL_BIND.getType()); + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(device_code) + .content("申请捆扎,请求参数:" + param) + .build(); + logDto.setLog_level(4); + luceneExecuteLogService.deviceExecuteLog(logDto); + String response = acsToWmsService.deviceApplyTwo(param); + JSONObject jo = JSON.parseObject(response); + message = "申请捆扎,参数,接口返回:" + jo; + if (jo.getInteger("status") == 200) { + LuceneLogDto logDto2 = LuceneLogDto.builder() + .device_code(device_code) + .content("申请捆扎,参数,接口返回:" + jo) + .build(); + logDto2.setLog_level(4); + luceneExecuteLogService.deviceExecuteLog(logDto2); +// Map datas = applyLabelingAndBindingResponse.getData(); + packagePLCData(jo.getString("data"), mode); + requireSucess = true; + } else { + this.iserror = true; + LuceneLogDto logDto2 = LuceneLogDto.builder() + .device_code(device_code) + .content("申请捆扎失败,接口返回:" + response) + .build(); + logDto2.setLog_level(4); + luceneExecuteLogService.deviceExecuteLog(logDto2); + message = "申请捆扎报错,参数,接口返回:" + jo; + } } // 申请贴标 @@ -706,6 +718,7 @@ public class FinishedProductOutBindLableDeviceDriver extends AbstractOpcDeviceDr jo.put("is_click", true); jo.put("requireSucess", requireSucess); jo.put("driver_type", "siemens_conveyor"); + jo.put("vehicle_code2", this.vehicle_code2); jo.put("notCreateInstMessage", LangProcess.msg(notCreateInstMessage)); return jo; } @@ -978,6 +991,10 @@ public class FinishedProductOutBindLableDeviceDriver extends AbstractOpcDeviceDr * 更新指令状态 */ public synchronized void update_instruction_status() throws Exception { + if (null != inst) { + inst_message = "指令号:" + inst.getInstruction_code() + " " + inst.getStart_point_code() + "->" + inst.getNext_point_code(); + vehicle_code2 = inst.getVehicle_code2(); + } Date date = new Date(); if (date.getTime() - this.instruction_update_time.getTime() < (long) this.instruction_update_time_out) { log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_update_time_out); diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/fold_disc_site/FoldDiscSiteDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/fold_disc_site/FoldDiscSiteDeviceDriver.java index dee687f7a..1ae98e345 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/fold_disc_site/FoldDiscSiteDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/fold_disc_site/FoldDiscSiteDeviceDriver.java @@ -5,6 +5,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import lombok.Data; @@ -616,13 +617,17 @@ public class FoldDiscSiteDeviceDriver extends AbstractOpcDeviceDriver implements .build(); logDto.setLog_level(4); luceneExecuteLogService.deviceExecuteLog(logDto); - String response = acsToWmsService.applyTwo(param); - JSONObject jo = JSON.parseObject(response); - message = "申请空托盘出入库,参数,接口返回:" + jo; - if (jo.getInteger("status") == 200) { + HttpResponse httpResponse = acsToWmsService.applyTwo(param); + JSONObject jsonObject = null; + if(ObjectUtil.isNotEmpty(httpResponse)){ + String body = httpResponse.body(); + jsonObject = JSONObject.parseObject(body); + } + message = "申请空托盘出入库,参数,接口返回:" + jsonObject; + if (ObjectUtil.isNotNull(jsonObject) && jsonObject.getInteger("status") == 200) { LuceneLogDto logDto2 = LuceneLogDto.builder() .device_code(device_code) - .content("申请空托盘出入库,参数,接口返回:" + jo) + .content("申请空托盘出入库,参数,接口返回:" + jsonObject) .build(); logDto2.setLog_level(4); luceneExecuteLogService.deviceExecuteLog(logDto2); @@ -635,10 +640,10 @@ public class FoldDiscSiteDeviceDriver extends AbstractOpcDeviceDriver implements this.requireSucess = true; } else { this.iserror = true; - message = "申请空托盘出入库报错,接口返回:" + jo; + message = "申请空托盘出入库报错,接口返回:" + jsonObject; LuceneLogDto logDto2 = LuceneLogDto.builder() .device_code(device_code) - .content("申请空托盘出入库,返回参数:" + response) + .content("申请空托盘出入库,返回参数:" + jsonObject) .build(); logDto2.setLog_level(4); luceneExecuteLogService.deviceExecuteLog(logDto2); diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/scanner_weight_conveyor/ConveyorWithScannerWeightDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/scanner_weight_conveyor/ConveyorWithScannerWeightDeviceDriver.java index 344602fb7..56b6de7a7 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/scanner_weight_conveyor/ConveyorWithScannerWeightDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/scanner_weight_conveyor/ConveyorWithScannerWeightDeviceDriver.java @@ -159,6 +159,7 @@ public class ConveyorWithScannerWeightDeviceDriver extends AbstractOpcDeviceDriv //托盘方向 int carrier_direction = 0; int last_carrier_direction = 0; + String vehicle_code2; Boolean isonline = true; int hasGoods = 0; @@ -499,13 +500,17 @@ public class ConveyorWithScannerWeightDeviceDriver extends AbstractOpcDeviceDriv .build(); logDto.setLog_level(4); luceneExecuteLogService.deviceExecuteLog(logDto); - String response = acsToWmsService.applyTwo(param); - JSONObject jo = JSON.parseObject(response); - message = "申请退货入库,返回参数:" + jo; - if (jo.getInteger("status") == 200) { + HttpResponse httpResponse = acsToWmsService.applyTwo(param); + JSONObject jsonObject = null; + if(ObjectUtil.isNotEmpty(httpResponse)){ + String body = httpResponse.body(); + jsonObject = JSONObject.parseObject(body); + } + message = "申请退货入库,返回参数:" + jsonObject; + if (ObjectUtil.isNotNull(jsonObject) && jsonObject.getInteger("status") == 200) { LuceneLogDto logDto2 = LuceneLogDto.builder() .device_code(device_code) - .content("申请退货入库,参数,接口返回:" + jo) + .content("申请退货入库,参数,接口返回:" + jsonObject) .build(); logDto2.setLog_level(4); luceneExecuteLogService.deviceExecuteLog(logDto2); @@ -520,11 +525,11 @@ public class ConveyorWithScannerWeightDeviceDriver extends AbstractOpcDeviceDriv this.iserror = true; LuceneLogDto logDto2 = LuceneLogDto.builder() .device_code(device_code) - .content("申请退货入库,返回参数:" + response) + .content("申请退货入库,返回参数:" + jsonObject) .build(); logDto2.setLog_level(4); luceneExecuteLogService.deviceExecuteLog(logDto2); - message = "申请退货入库报错,返回参数:" + jo; + message = "申请退货入库报错,返回参数:" + jsonObject; } } catch (Exception e) { e.printStackTrace(); @@ -611,13 +616,17 @@ public class ConveyorWithScannerWeightDeviceDriver extends AbstractOpcDeviceDriv .build(); logDto.setLog_level(4); luceneExecuteLogService.deviceExecuteLog(logDto); - String response = acsToWmsService.applyTwo(param); - JSONObject jo = JSON.parseObject(response); - message = "申请空托盘出入库,返回参数:" + jo; - if (jo.getInteger("status") == 200) { + HttpResponse httpResponse = acsToWmsService.applyTwo(param); + JSONObject jsonObject = null; + if(ObjectUtil.isNotEmpty(httpResponse)){ + String body = httpResponse.body(); + jsonObject = JSONObject.parseObject(body); + } + message = "申请空托盘出入库,返回参数:" + jsonObject; + if (jsonObject.getInteger("status") == 200) { LuceneLogDto logDto2 = LuceneLogDto.builder() .device_code(device_code) - .content("申请空托盘出入库,参数,接口返回:" + jo) + .content("申请空托盘出入库,参数,接口返回:" + jsonObject) .build(); logDto2.setLog_level(4); luceneExecuteLogService.deviceExecuteLog(logDto2); @@ -630,10 +639,10 @@ public class ConveyorWithScannerWeightDeviceDriver extends AbstractOpcDeviceDriv this.requireSucess = true; } else { this.iserror = true; - message = "申请空托盘出入库报错,返回参数:" + jo; + message = "申请空托盘出入库报错,返回参数:" + jsonObject; LuceneLogDto logDto2 = LuceneLogDto.builder() .device_code(device_code) - .content("申请空托盘出入库,返回参数:" + response) + .content("申请空托盘出入库,返回参数:" + jsonObject) .build(); logDto2.setLog_level(4); luceneExecuteLogService.deviceExecuteLog(logDto2); @@ -676,13 +685,17 @@ public class ConveyorWithScannerWeightDeviceDriver extends AbstractOpcDeviceDriv .build(); logDto.setLog_level(4); luceneExecuteLogService.deviceExecuteLog(logDto); - String response = acsToWmsService.applyTwo(param); - JSONObject jo = JSON.parseObject(response); - message = "木箱、子卷入库申请入库任务,返回参数:" + jo; - if (jo.getInteger("status") == 200) { + HttpResponse httpResponse = acsToWmsService.applyTwo(param); + JSONObject jsonObject = null; + if(ObjectUtil.isNotEmpty(httpResponse)){ + String body = httpResponse.body(); + jsonObject = JSONObject.parseObject(body); + } + message = "木箱、子卷入库申请入库任务,返回参数:" + jsonObject; + if (ObjectUtil.isNotNull(jsonObject) && jsonObject.getInteger("status") == 200) { LuceneLogDto logDto2 = LuceneLogDto.builder() .device_code(device_code) - .content("木箱、子卷入库申请入库任务,参数,接口返回:" + jo) + .content("木箱、子卷入库申请入库任务,参数,接口返回:" + jsonObject) .build(); logDto2.setLog_level(4); luceneExecuteLogService.deviceExecuteLog(logDto2); @@ -697,10 +710,10 @@ public class ConveyorWithScannerWeightDeviceDriver extends AbstractOpcDeviceDriv this.iserror = true; LuceneLogDto logDto2 = LuceneLogDto.builder() .device_code(device_code) - .content("木箱、子卷入库申请入库任务,返回参数:" + response) + .content("木箱、子卷入库申请入库任务,返回参数:" + jsonObject) .build(); logDto2.setLog_level(4); - message = "木箱、子卷入库申请入库任务报错,返回参数:" + jo; + message = "木箱、子卷入库申请入库任务报错,返回参数:" + jsonObject; luceneExecuteLogService.deviceExecuteLog(logDto2); } } catch (Exception e) { @@ -713,6 +726,10 @@ public class ConveyorWithScannerWeightDeviceDriver extends AbstractOpcDeviceDriv * 更新指令状态 */ public synchronized void update_instruction_status() throws Exception { + if (null != inst) { + inst_message = "指令号:" + inst.getInstruction_code() + " " + inst.getStart_point_code() + "->" + inst.getNext_point_code(); + vehicle_code2 = inst.getVehicle_code2(); + } Date date = new Date(); if (date.getTime() - this.instruction_update_time.getTime() < (long) this.instruction_update_time_out) { log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_update_time_out); diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/trapped_manipulator/TrappedManipulatorManipulatorDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/trapped_manipulator/TrappedManipulatorManipulatorDeviceDriver.java index 648997bb0..4372496e5 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/trapped_manipulator/TrappedManipulatorManipulatorDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/trapped_manipulator/TrappedManipulatorManipulatorDeviceDriver.java @@ -381,10 +381,39 @@ public class TrappedManipulatorManipulatorDeviceDriver extends AbstractOpcDevice } } } + List taskDtosLikeReady = new ArrayList<>(); if (CollUtil.isNotEmpty(taskDtosReady)) { - List taskDtoList = taskDtosReady.stream().sorted(Comparator.comparing(TaskDto::getCreate_time)).collect(Collectors.toList()); - taskDto = taskDtoList.get(0); + for (TaskDto dto : taskDtosReady) { + BeltConveyorDeviceDriver beltConveyorDeviceDriverStart; + BeltConveyorDeviceDriver beltConveyorDeviceDriverEnd; + Device startDevice = deviceAppService.findDeviceByCode(dto.getStart_device_code()); + Device nextDevice = deviceAppService.findDeviceByCode(dto.getNext_device_code()); + if (startDevice.getDeviceDriver() instanceof BeltConveyorDeviceDriver && nextDevice.getDeviceDriver() instanceof BeltConveyorDeviceDriver) { + beltConveyorDeviceDriverStart = (BeltConveyorDeviceDriver) startDevice.getDeviceDriver(); + beltConveyorDeviceDriverEnd = (BeltConveyorDeviceDriver) nextDevice.getDeviceDriver(); + if (beltConveyorDeviceDriverStart.getMove() == 1 && beltConveyorDeviceDriverStart.getMode() == 2 && beltConveyorDeviceDriverEnd.getMove() == 1 && beltConveyorDeviceDriverEnd.getMode() == 2) { + taskDtosLikeReady.add(dto); + } else { + if (beltConveyorDeviceDriverStart.getMove() != 1) { + notCreateInstMessage = "universal_feedMessage7"; + } + if (beltConveyorDeviceDriverStart.getMode() != 2) { + notCreateInstMessage = "universal_remark2"; + } + if (beltConveyorDeviceDriverEnd.getMove() != 1) { + notCreateInstMessage = "universal_feedMessage7"; + } + if (beltConveyorDeviceDriverEnd.getMode() != 2) { + notCreateInstMessage = "universal_remark2"; + } + } + } + + } } + + + if (ObjectUtil.isNotEmpty(taskDto)) { String interactionJson = taskDto.getInteraction_json(); InteractionJsonDTO interactionJsonDTO = JSON.parseObject(interactionJson, InteractionJsonDTO.class); @@ -403,38 +432,6 @@ public class TrappedManipulatorManipulatorDeviceDriver extends AbstractOpcDevice throw new BadRequestException("设备:" + nextDevice.getDevice_code() + "未设置电气调度号!"); } - - BeltConveyorDeviceDriver beltConveyorDeviceDriverStart; - BeltConveyorDeviceDriver beltConveyorDeviceDriverEnd; - - if (startDevice.getDeviceDriver() instanceof BeltConveyorDeviceDriver) { - beltConveyorDeviceDriverStart = (BeltConveyorDeviceDriver) startDevice.getDeviceDriver(); - if (beltConveyorDeviceDriverStart.getMove() != 1 && beltConveyorDeviceDriverStart.getMode() != 2) { - notCreateInstMessage = "universal_notCreateInstMessage2"; - return false; - } - } - if (nextDevice.getDeviceDriver() instanceof BeltConveyorDeviceDriver) { - beltConveyorDeviceDriverEnd = (BeltConveyorDeviceDriver) nextDevice.getDeviceDriver(); - if (beltConveyorDeviceDriverEnd.getMove() == 1 && beltConveyorDeviceDriverEnd.getMode() == 2) { - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("当前任务号:" + taskDto.getTask_code() + " " + next_device_code + "当前move值为:" + beltConveyorDeviceDriverEnd.getMove() + ",当前mode值为:"+beltConveyorDeviceDriverEnd.getMode()) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - }else { - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("当前任务号:" + taskDto.getTask_code() + " " + next_device_code + "当前move值为:" + beltConveyorDeviceDriverEnd.getMove() + ",当前mode值为:"+beltConveyorDeviceDriverEnd.getMode()) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - notCreateInstMessage = "universal_notCreateInstMessage2"; - return false; - } - } - String taskid = taskDto.getTask_id(); String taskcode = taskDto.getTask_code(); String start_point_code = taskDto.getStart_point_code(); @@ -486,7 +483,7 @@ public class TrappedManipulatorManipulatorDeviceDriver extends AbstractOpcDevice notCreateInstMessage = "universal_notCreateInstMessage"; } } - return true; + return false; } } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/stacker/standard_stacker/StandardStackerDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/stacker/standard_stacker/StandardStackerDeviceDriver.java index 948da4767..ed97f3f03 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/stacker/standard_stacker/StandardStackerDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/stacker/standard_stacker/StandardStackerDeviceDriver.java @@ -307,6 +307,8 @@ public class StandardStackerDeviceDriver extends AbstractOpcDeviceDriver impleme Boolean iserror = false; String inst_message; + + String vehicle_code2; //阻塞队列,保证指令顺序执行 LinkedBlockingQueue tackerInstructionQueue = new LinkedBlockingQueue<>(); @@ -350,6 +352,7 @@ public class StandardStackerDeviceDriver extends AbstractOpcDeviceDriver impleme if (mode == 3 && task > 0 && command == 1 && error == 0) { if (null != inst) { inst_message = "指令号:" + inst.getInstruction_code() + " " + inst.getStart_point_code() + "->" + inst.getNext_point_code(); + vehicle_code2 = inst.getVehicle_code2(); } Date date = new Date(); if (date.getTime() - this.instruction_update_time.getTime() < (long) this.instruction_update_time_out) { @@ -1337,6 +1340,7 @@ public class StandardStackerDeviceDriver extends AbstractOpcDeviceDriver impleme jo.put("isError", this.getIserror()); jo.put("notCreateInstMessage", notCreateInstMessage); jo.put("inst_message", this.inst_message); + jo.put("vehicle_code2", this.vehicle_code2); return jo; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java index fb67ef342..618b94834 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java @@ -89,7 +89,7 @@ public interface AcsToWmsService { * @param param * @return */ - String applyTwo(JSONObject param); + HttpResponse applyTwo(JSONObject param); /** * 二期发货申请任务 diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java index 0cdb1ca55..430dff04d 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java @@ -163,14 +163,14 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } @Override - public String applyTwo(JSONObject param) { + public HttpResponse applyTwo(JSONObject param) { + HttpResponse result2 = null; try { MDC.put(log_file_type, log_type); log.info("applyTaskToWms-----输入参数{}", param); String wmsurl = paramService.findByCode(AcsConfig.WMSURL).getValue(); AddressDto addressDto = addressService.findByCode("applyTwo"); String url = wmsurl + addressDto.getMethods_url(); - HttpResponse result2 = null; try { result2 = HttpRequest.post(url) .addInterceptor(tLogHutoolhttpInterceptor) @@ -183,21 +183,11 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { log.info("applyTaskToWms-----输出参数{}", msg); //网络不通 } - if(ObjectUtil.isEmpty(result2)){ - log.info("applyTaskToWms-----输出参数{}", "返回结果为空"); - return null; - } - String type = ""; - if (result2.getStatus() == 200) { - type = "info"; - } else { - type = "error"; - } log.info("applyTaskToWms-----输出参数{}", result2.body()); LuceneLogDto luceneLogDto = new LuceneLogDto(4,"applyTwo", String.valueOf(result2.getStatus()), JSON.toJSONString(param), String.valueOf(result2.body()), "二期入库申请任务"); luceneLogService.interfaceExecuteLog(luceneLogDto); - return result2.body(); + return result2; } finally { MDC.remove(log_file_type); diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/TaskService.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/TaskService.java index 75358abb3..396482337 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/TaskService.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/TaskService.java @@ -426,6 +426,14 @@ public interface TaskService extends CommonService { */ TaskDto findByVehicleCodeCodeAndReady(String device_code); + /** + * 根据木箱号查询执行中任务 + * + * @param device_code + * @return + */ + TaskDto findByVehicleCode2AndExcute(String device_code); + /** * 根据起点设备编号查询当前是否有执行中任务 * diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java index 634f6bf65..20639d7ae 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java @@ -1196,6 +1196,16 @@ public class TaskServiceImpl extends CommonServiceImpl impleme return optionalTask.orElse(null); } + + @Override + public TaskDto findByVehicleCode2AndExcute(String vehicleCode) { + Optional optionalTask = tasks.stream() + .filter(task -> StrUtil.equals(task.getVehicle_code2(), vehicleCode) + && StrUtil.equals(task.getTask_status(), TaskStatusEnum.BUSY.getIndex())) + .findFirst(); + return optionalTask.orElse(null); + } + @Override public TaskDto findByCodeAndExcute(String start_code, String next_code) { Task task = this.lambdaQuery() diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoCreateInst.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoCreateInst.java index 76e6f4a10..7ad71a891 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoCreateInst.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoCreateInst.java @@ -46,6 +46,7 @@ public class AutoCreateInst { * 创建指令前需要判断是否条件具备:起始位置是否有货、目标位置是否有货 */ public void run() throws Exception { + log.info("自动生成指令"+DateUtil.now()); TaskService taskserver = SpringContextHolder.getBean(TaskService.class); InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class); RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineService.class); diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/CreateDDJInst.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/CreateDDJInst.java index c3d4868fc..3590b3615 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/CreateDDJInst.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/CreateDDJInst.java @@ -43,6 +43,7 @@ public class CreateDDJInst { * 定时查询堆垛机任务 */ public void run() { + log.info("定时查询堆垛机任务"+DateUtil.now()); TaskService taskserver = SpringContextHolder.getBean(TaskService.class); InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class); RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineService.class); diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/NdcAutoReconnection.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/NdcAutoReconnection.java index c1b1d54ce..f5bd3a1c6 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/NdcAutoReconnection.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/NdcAutoReconnection.java @@ -1,5 +1,6 @@ package org.nl.system.service.quartz.task; +import cn.hutool.core.date.DateUtil; import lombok.extern.slf4j.Slf4j; import org.nl.acs.auto.run.AutoRunService; import org.nl.system.service.param.ISysParamService; @@ -20,6 +21,7 @@ public class NdcAutoReconnection { AutoRunService autoRunService; public void run(String threadCode) throws Exception { + log.info("定时NDC自动重连"+ DateUtil.now()); String[] threadCodes = threadCode.split(","); for (String code : threadCodes) { if (!autoRunService.getThreadByCode(code).isAlive()) { diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/ToAgvDevice.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/ToAgvDevice.java new file mode 100644 index 000000000..8de42f3f7 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/ToAgvDevice.java @@ -0,0 +1,74 @@ +package org.nl.system.service.quartz.task; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.agv.server.AgvService; +import org.nl.acs.agv.server.dto.AgvDto; +import org.nl.acs.ext.wms.service.AcsToWmsService; +import org.nl.common.mnt.websocket.MsgType; +import org.nl.common.mnt.websocket.SocketMsg; +import org.nl.common.mnt.websocket.WebSocketServer; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Map; + +/** + * 查询AGV设备状态 + */ +@Slf4j +@Component +public class ToAgvDevice { + @Autowired + AcsToWmsService acsToWmsService; + @Autowired + AgvService agvService; + + public void run() throws Exception { + JSONObject json = new JSONObject(); + Map agv_map = agvService.findAllAgvFromCache(); + + JSONArray agv_rows = new JSONArray(); + JSONObject row = new JSONObject(); + + for (AgvDto agvDto : agv_map.values()) { + row.put("device_code", agvDto.getName()); + row.put("energyLevel", agvDto.getEnergyLevel()); + if (agvDto.getState().equals("UNKNOWN")) { + row.put("status_name", "有任务"); + row.put("flag", "1"); + } + if (agvDto.getState().equals("UNAVAILABLE")) { + row.put("status_name", "网络异常"); + row.put("flag", "1"); + } + if (agvDto.getState().equals("ERROR")) { + row.put("status_name", "机器错误"); + row.put("flag", "1"); + } + if (agvDto.getState().equals("IDLE")) { + row.put("status_name", "空闲"); + row.put("flag", "0"); + } + if (agvDto.getState().equals("EXECUTING")) { + row.put("status_name", "运行中"); + row.put("flag", "0"); + } + if (agvDto.getState().equals("CHARGING")) { + row.put("status_name", "充电中"); + row.put("flag", "0"); + } + row.put("transportOrder", agvDto.getTransportOrder()); + row.put("positionX", agvDto.getPositionX()); + row.put("positionY", agvDto.getPositionY()); + row.put("positionAngle", agvDto.getPositionAngle()); + agv_rows.add(row); + } + json.put("agv_rows", agv_rows); + SocketMsg deviceInfo = new SocketMsg(json, MsgType.INFO); + WebSocketServer.sendInfo(deviceInfo, "toAgvDevice_data"); + +// acsToWmsService.feedbackAgv(row); + } +} diff --git a/acs2/nladmin-ui/src/i18n/langs/monitor/en.js b/acs2/nladmin-ui/src/i18n/langs/monitor/en.js index 8715378b6..ec42f33a7 100644 --- a/acs2/nladmin-ui/src/i18n/langs/monitor/en.js +++ b/acs2/nladmin-ui/src/i18n/langs/monitor/en.js @@ -140,7 +140,8 @@ export default { 'Current_command_information': 'Current command information', 'The_signal_is_successfully_marked': 'The signal is successfully marked', 'Complement_information': 'Complement information', - 'agv_task_type': 'task type' + 'agv_task_type': 'task type', + 'vehicle_code2': 'Box number' } } } diff --git a/acs2/nladmin-ui/src/i18n/langs/monitor/in.js b/acs2/nladmin-ui/src/i18n/langs/monitor/in.js index a7ca9a493..5bee8e404 100644 --- a/acs2/nladmin-ui/src/i18n/langs/monitor/in.js +++ b/acs2/nladmin-ui/src/i18n/langs/monitor/in.js @@ -140,7 +140,8 @@ export default { 'Current_command_information': 'Informasi perintah saat ini', 'The_signal_is_successfully_marked': 'Sinyal berhasil ditandai', 'Complement_information': 'Informasi pelengkap', - 'agv_task_type': 'Jenis tugas' + 'agv_task_type': 'Jenis tugas', + 'vehicle_code2': 'Nomor kotak kayu' } } } diff --git a/acs2/nladmin-ui/src/i18n/langs/monitor/zh.js b/acs2/nladmin-ui/src/i18n/langs/monitor/zh.js index 7cf9458b6..de1e20282 100644 --- a/acs2/nladmin-ui/src/i18n/langs/monitor/zh.js +++ b/acs2/nladmin-ui/src/i18n/langs/monitor/zh.js @@ -140,7 +140,8 @@ export default { 'Current_command_information': '当前指令信息', 'The_signal_is_successfully_marked': '信号成功标记', 'Complement_information': '补码信息', - 'agv_task_type': '任务类型' + 'agv_task_type': '任务类型', + 'vehicle_code2': '木箱号' } } } diff --git a/acs2/nladmin-ui/src/views/system/monitor/device/index.vue b/acs2/nladmin-ui/src/views/system/monitor/device/index.vue index f2f0de071..fce530d81 100644 --- a/acs2/nladmin-ui/src/views/system/monitor/device/index.vue +++ b/acs2/nladmin-ui/src/views/system/monitor/device/index.vue @@ -9,7 +9,7 @@ /> -
+
- + - + @@ -62,7 +62,7 @@ - + @@ -72,7 +72,7 @@ - +