From 992b5598730aca0f872f948e9900f48c9956bdaf Mon Sep 17 00:00:00 2001 From: liejiu946 Date: Thu, 3 Apr 2025 16:54:23 +0800 Subject: [PATCH] =?UTF-8?q?opt:=201.=E8=A7=A3=E5=86=B3=E5=86=99=E5=85=A5pl?= =?UTF-8?q?c=E6=8A=A5=E9=94=99=E5=AF=BC=E8=87=B4=E5=92=8Cndc=E6=96=AD?= =?UTF-8?q?=E5=BC=80=E8=BF=9E=E6=8E=A5=E3=80=822.=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E5=A4=84=E7=90=86=E6=B2=BE=E5=8C=85=E6=97=B6=E6=95=B0=E7=BB=84?= =?UTF-8?q?index=E8=B6=85=E5=87=BA=E6=8A=A5=E8=AD=A6=E3=80=823.=E8=A7=A3?= =?UTF-8?q?=E5=86=B3=E6=8C=87=E4=BB=A4=E5=92=8C=E4=BB=BB=E5=8A=A1=E4=B8=8D?= =?UTF-8?q?=E4=B8=80=E8=87=B4=E9=97=AE=E9=A2=98=E3=80=824.=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8F=91=E9=80=81=E5=85=85=E7=94=B5=E4=BB=BB=E5=8A=A1=E7=BB=99?= =?UTF-8?q?ndc=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../run/OneNDCSocketConnectionAutoRun.java | 13 ++++++---- .../run/TwoNDCSocketConnectionAutoRun.java | 14 +++++++---- .../agv/ndcone/AgvNdcOneDeviceDriver.java | 8 +++++-- .../task/AutoCreateChargingTaskToNDC.java | 24 +++++++++++++++++++ 4 files changed, 48 insertions(+), 11 deletions(-) create mode 100644 nlsso-server/src/main/java/org/nl/quartz/task/AutoCreateChargingTaskToNDC.java diff --git a/nlsso-server/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java b/nlsso-server/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java index 0cb5324..6b8114b 100644 --- a/nlsso-server/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java +++ b/nlsso-server/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java @@ -200,7 +200,7 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable { if (!ObjectUtil.isEmpty(inst)) { instructionService.finish(inst.getInstruction_id()); } else { - log.warn("指令号:{},未反馈wms任务完成,因为agv上报指令号查询指令为空!"); + log.info("指令号:{},未反馈wms任务完成,因为agv上报指令号查询指令为空!"); } data = NDCAgvService.sendAgvOneModeInst(phase, index, 0, 0, 0, 0, 0); log.info("指令号:{},已反馈agv任务完成!"); @@ -232,7 +232,11 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable { if (ObjectUtil.isNotEmpty(device)) { if (device.getDeviceDriver() instanceof AgvNdcOneDeviceDriver) { agvNdcOneDeviceDriver = (AgvNdcOneDeviceDriver) device.getDeviceDriver(); - agvNdcOneDeviceDriver.processSocket(arr); + try { + agvNdcOneDeviceDriver.processSocket(arr); + }catch (Exception e){ + log.error("处理phase:{},发生异常。异常信息:{}",phase,e.getMessage()); + } } } @@ -247,7 +251,7 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable { // 更新偏移量,继续处理下一个数据包 offset+=messageHeaderLength; // ArrayUtils.indexOf() - int index = IntStream.range(offset, packetData.length) + int index = IntStream.range(offset, packetData.length - 1) .filter(i -> packetData[i] == 135 && packetData[i + 1] == 205) .findFirst() .orElse(-1); @@ -260,7 +264,7 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable { } }else { log.info("消息头无效,不处理。"); - int index = IntStream.range(offset, packetData.length) + int index = IntStream.range(offset, packetData.length - 1) .filter(i -> packetData[i] == 135 && packetData[i + 1] == 205) .findFirst() .orElse(-1); @@ -281,6 +285,7 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable { s.close(); } System.out.println(e.getMessage()); + log.error("异常信息:{}", e.getMessage()); e.printStackTrace(); } finally { diff --git a/nlsso-server/src/main/java/org/nl/acs/auto/run/TwoNDCSocketConnectionAutoRun.java b/nlsso-server/src/main/java/org/nl/acs/auto/run/TwoNDCSocketConnectionAutoRun.java index 0f15d21..3d49c58 100644 --- a/nlsso-server/src/main/java/org/nl/acs/auto/run/TwoNDCSocketConnectionAutoRun.java +++ b/nlsso-server/src/main/java/org/nl/acs/auto/run/TwoNDCSocketConnectionAutoRun.java @@ -96,8 +96,8 @@ public class TwoNDCSocketConnectionAutoRun extends AbstractAutoRunnable { s = new Socket(ip, port); dos = new DataOutputStream(s.getOutputStream()); dis = new DataInputStream(s.getInputStream()); - System.out.println("NDCAgv链接成功"); - log.info("NDCAgv链接成功"); + System.out.println("TwoNDCAgv链接成功"); + log.info("TwoNDC2Agv链接成功"); while (bConnected) { int count = dis.read(b); @@ -231,7 +231,11 @@ public class TwoNDCSocketConnectionAutoRun extends AbstractAutoRunnable { if (ObjectUtil.isNotEmpty(device)) { if (device.getDeviceDriver() instanceof AgvNdcOneDeviceDriver) { agvNdcOneDeviceDriver = (AgvNdcOneDeviceDriver) device.getDeviceDriver(); - agvNdcOneDeviceDriver.processSocket2(arr); + try { + agvNdcOneDeviceDriver.processSocket2(arr); + }catch (Exception e){ + log.error("处理phase:{},发生异常。异常信息:{}",phase,e.getMessage()); + } } } @@ -246,7 +250,7 @@ public class TwoNDCSocketConnectionAutoRun extends AbstractAutoRunnable { // 更新偏移量,继续处理下一个数据包 offset+=messageHeaderLength; // ArrayUtils.indexOf() - int index = IntStream.range(offset, packetData.length) + int index = IntStream.range(offset, packetData.length-1) .filter(i -> packetData[i] == 135 && packetData[i + 1] == 205) .findFirst() .orElse(-1); @@ -259,7 +263,7 @@ public class TwoNDCSocketConnectionAutoRun extends AbstractAutoRunnable { } }else { log.info("消息头无效,不处理。"); - int index = IntStream.range(offset, packetData.length) + int index = IntStream.range(offset, packetData.length-1) .filter(i -> packetData[i] == 135 && packetData[i + 1] == 205) .findFirst() .orElse(-1); diff --git a/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java b/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java index 54c537b..9f94440 100644 --- a/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java +++ b/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java @@ -1472,8 +1472,12 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic JSONObject resp = acsToWmsService.feedAgvTaskAction(ja); if ("200".equals(resp.getString("code"))) { JSONObject respjson = JSONObject.parseObject(resp.getString("msg")); - inst.setInstruction_status("1"); - inst.setExecute_status("2"); + //解决指令和任务不一致问题,放货完成后执行修改指令时,ndc上报phase10 先执行的修改指令状态完成,再执行这条修改导致指令完成被脏数据覆盖。 + //放货完成后 修改指令状态为完成。 + if (status == 4){ + inst.setInstruction_status("2"); + } + inst.setExecute_status(status.toString()); instructionService.update(inst); LuceneLogDto resplogDto = LuceneLogDto.builder() .device_code(device_code) diff --git a/nlsso-server/src/main/java/org/nl/quartz/task/AutoCreateChargingTaskToNDC.java b/nlsso-server/src/main/java/org/nl/quartz/task/AutoCreateChargingTaskToNDC.java new file mode 100644 index 0000000..b59172f --- /dev/null +++ b/nlsso-server/src/main/java/org/nl/quartz/task/AutoCreateChargingTaskToNDC.java @@ -0,0 +1,24 @@ +package org.nl.quartz.task; + +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.agv.server.NDCAgvService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * @author liejiu + */ +@Slf4j +@Component +public class AutoCreateChargingTaskToNDC { + + @Autowired + NDCAgvService ndcAgvService; + + public void run(String threadCode) throws Exception { + String[] threadCodes = threadCode.split(","); + for (String code : threadCodes) { + ndcAgvService.createChargingTaskToNDC(code); + } + } +}