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); + } + } +}