opt: 1.解决写入plc报错导致和ndc断开连接。2.解决处理沾包时数组index超出报警。3.解决指令和任务不一致问题。4.新增定时任务自动发送充电任务给ndc。
This commit is contained in:
@@ -200,7 +200,7 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
|||||||
if (!ObjectUtil.isEmpty(inst)) {
|
if (!ObjectUtil.isEmpty(inst)) {
|
||||||
instructionService.finish(inst.getInstruction_id());
|
instructionService.finish(inst.getInstruction_id());
|
||||||
} else {
|
} else {
|
||||||
log.warn("指令号:{},未反馈wms任务完成,因为agv上报指令号查询指令为空!");
|
log.info("指令号:{},未反馈wms任务完成,因为agv上报指令号查询指令为空!");
|
||||||
}
|
}
|
||||||
data = NDCAgvService.sendAgvOneModeInst(phase, index, 0, 0, 0, 0, 0);
|
data = NDCAgvService.sendAgvOneModeInst(phase, index, 0, 0, 0, 0, 0);
|
||||||
log.info("指令号:{},已反馈agv任务完成!");
|
log.info("指令号:{},已反馈agv任务完成!");
|
||||||
@@ -232,7 +232,11 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
|||||||
if (ObjectUtil.isNotEmpty(device)) {
|
if (ObjectUtil.isNotEmpty(device)) {
|
||||||
if (device.getDeviceDriver() instanceof AgvNdcOneDeviceDriver) {
|
if (device.getDeviceDriver() instanceof AgvNdcOneDeviceDriver) {
|
||||||
agvNdcOneDeviceDriver = (AgvNdcOneDeviceDriver) device.getDeviceDriver();
|
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;
|
offset+=messageHeaderLength;
|
||||||
// ArrayUtils.indexOf()
|
// 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)
|
.filter(i -> packetData[i] == 135 && packetData[i + 1] == 205)
|
||||||
.findFirst()
|
.findFirst()
|
||||||
.orElse(-1);
|
.orElse(-1);
|
||||||
@@ -260,7 +264,7 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
|||||||
}
|
}
|
||||||
}else {
|
}else {
|
||||||
log.info("消息头无效,不处理。");
|
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)
|
.filter(i -> packetData[i] == 135 && packetData[i + 1] == 205)
|
||||||
.findFirst()
|
.findFirst()
|
||||||
.orElse(-1);
|
.orElse(-1);
|
||||||
@@ -281,6 +285,7 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
|||||||
s.close();
|
s.close();
|
||||||
}
|
}
|
||||||
System.out.println(e.getMessage());
|
System.out.println(e.getMessage());
|
||||||
|
log.error("异常信息:{}", e.getMessage());
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
@@ -96,8 +96,8 @@ public class TwoNDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
|||||||
s = new Socket(ip, port);
|
s = new Socket(ip, port);
|
||||||
dos = new DataOutputStream(s.getOutputStream());
|
dos = new DataOutputStream(s.getOutputStream());
|
||||||
dis = new DataInputStream(s.getInputStream());
|
dis = new DataInputStream(s.getInputStream());
|
||||||
System.out.println("NDCAgv链接成功");
|
System.out.println("TwoNDCAgv链接成功");
|
||||||
log.info("NDCAgv链接成功");
|
log.info("TwoNDC2Agv链接成功");
|
||||||
while (bConnected) {
|
while (bConnected) {
|
||||||
int count = dis.read(b);
|
int count = dis.read(b);
|
||||||
|
|
||||||
@@ -231,7 +231,11 @@ public class TwoNDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
|||||||
if (ObjectUtil.isNotEmpty(device)) {
|
if (ObjectUtil.isNotEmpty(device)) {
|
||||||
if (device.getDeviceDriver() instanceof AgvNdcOneDeviceDriver) {
|
if (device.getDeviceDriver() instanceof AgvNdcOneDeviceDriver) {
|
||||||
agvNdcOneDeviceDriver = (AgvNdcOneDeviceDriver) device.getDeviceDriver();
|
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;
|
offset+=messageHeaderLength;
|
||||||
// ArrayUtils.indexOf()
|
// 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)
|
.filter(i -> packetData[i] == 135 && packetData[i + 1] == 205)
|
||||||
.findFirst()
|
.findFirst()
|
||||||
.orElse(-1);
|
.orElse(-1);
|
||||||
@@ -259,7 +263,7 @@ public class TwoNDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
|||||||
}
|
}
|
||||||
}else {
|
}else {
|
||||||
log.info("消息头无效,不处理。");
|
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)
|
.filter(i -> packetData[i] == 135 && packetData[i + 1] == 205)
|
||||||
.findFirst()
|
.findFirst()
|
||||||
.orElse(-1);
|
.orElse(-1);
|
||||||
|
|||||||
@@ -1472,8 +1472,12 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
|
|||||||
JSONObject resp = acsToWmsService.feedAgvTaskAction(ja);
|
JSONObject resp = acsToWmsService.feedAgvTaskAction(ja);
|
||||||
if ("200".equals(resp.getString("code"))) {
|
if ("200".equals(resp.getString("code"))) {
|
||||||
JSONObject respjson = JSONObject.parseObject(resp.getString("msg"));
|
JSONObject respjson = JSONObject.parseObject(resp.getString("msg"));
|
||||||
inst.setInstruction_status("1");
|
//解决指令和任务不一致问题,放货完成后执行修改指令时,ndc上报phase10 先执行的修改指令状态完成,再执行这条修改导致指令完成被脏数据覆盖。
|
||||||
inst.setExecute_status("2");
|
//放货完成后 修改指令状态为完成。
|
||||||
|
if (status == 4){
|
||||||
|
inst.setInstruction_status("2");
|
||||||
|
}
|
||||||
|
inst.setExecute_status(status.toString());
|
||||||
instructionService.update(inst);
|
instructionService.update(inst);
|
||||||
LuceneLogDto resplogDto = LuceneLogDto.builder()
|
LuceneLogDto resplogDto = LuceneLogDto.builder()
|
||||||
.device_code(device_code)
|
.device_code(device_code)
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user