diff --git a/nladmin-system/nlsso-server/pom.xml b/nladmin-system/nlsso-server/pom.xml
index 0bb50eb..29b5f28 100644
--- a/nladmin-system/nlsso-server/pom.xml
+++ b/nladmin-system/nlsso-server/pom.xml
@@ -418,11 +418,23 @@
org.openscada.jinterop
org.openscada.jinterop.core
2.1.8
+
+
+ org.bouncycastle
+ bcprov-jdk15on
+
+
org.openscada.jinterop
org.openscada.jinterop.deps
1.5.0
+
+
+ org.bouncycastle
+ bcprov-jdk15on
+
+
org.openscada.utgard
diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/TwoNDCSocketConnectionAutoRun.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/TwoNDCSocketConnectionAutoRun.java
index bffe35f..0762090 100644
--- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/TwoNDCSocketConnectionAutoRun.java
+++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/TwoNDCSocketConnectionAutoRun.java
@@ -1,330 +1,330 @@
-package org.nl.acs.auto.run;
-import cn.hutool.core.util.ObjectUtil;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.ArrayUtils;
-import org.nl.acs.AcsConfig;
-import org.nl.acs.agv.server.NDCAgvService;
-import org.nl.acs.device.domain.Device;
-import org.nl.acs.device.service.DeviceService;
-import org.nl.acs.device_driver.basedriver.agv.ndcone.AgvNdcOneDeviceDriver;
-import org.nl.acs.ext.wms.service.AcsToWmsService;
-import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl;
-import org.nl.acs.instruction.domain.Instruction;
-import org.nl.acs.instruction.service.InstructionService;
-import org.nl.acs.instruction.service.impl.InstructionServiceImpl;
-import org.nl.acs.log.service.DeviceExecuteLogService;
-import org.nl.acs.opc.DeviceAppService;
-import org.nl.config.SpringContextHolder;
-import org.nl.system.service.dict.ISysDictService;
-import org.nl.system.service.lucene.LuceneExecuteLogService;
-import org.nl.system.service.param.ISysParamService;
-import org.nl.system.service.param.impl.SysParamServiceImpl;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Lazy;
-import org.springframework.stereotype.Component;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.net.Socket;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
-import java.util.stream.IntStream;
-
-import static org.nl.acs.agv.server.impl.NDCAgvServiceImpl.Bytes2HexString;
-
-
-@Slf4j
-@Component
-@Lazy
-public class TwoNDCSocketConnectionAutoRun extends AbstractAutoRunnable {
-
- Socket s;
- String ip = "192.168.10.34";
- int port = 1234;
- static DataOutputStream dos;
- static DataInputStream dis;
- private int recordTimeOut = 10000;
- private Date recordTime;
- String[] ERROR = new String[]{
- "货叉尖部传感器触发", "S300传感器触发", "载货状态改变", "急停按钮触发", "触边开关出发", "需要复位",
- "停在充电位", "取货失败", "放货失败", "轮子打滑", "没有动作码不能进入站点", "取货时有货", "丢失定位",
- "抬叉停止"};
- boolean bConnected = true;
-
- boolean isReConnect = false;
-
- @Autowired
- ISysParamService paramService;
- @Autowired
- AutoRunService autoRunService;
- @Autowired
- LuceneExecuteLogService luceneExecuteLogService;
- @Autowired
- ISysDictService dictService;
-
-
- public TwoNDCSocketConnectionAutoRun() {
- this.recordTime = new Date((new Date()).getTime() - (long) this.recordTimeOut);
- }
-
- public String getCode() {
- return TwoNDCSocketConnectionAutoRun.class.getSimpleName();
- }
-
- public String getName() {
- return "NDC2在线连接";
- }
-
- //todo NDC相关逻辑
- public void autoRun() throws IOException {
- System.out.println("TwoNDCAgv链接开始");
- ISysParamService ISysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class);
- InstructionService instructionService = SpringContextHolder.getBean(InstructionServiceImpl.class);
- AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsServiceImpl.class);
- NDCAgvService NDCAgvService = SpringContextHolder.getBean(NDCAgvService.class);
- DeviceAppService deviceAppService = SpringContextHolder.getBean(DeviceAppService.class);
- DeviceService deviceService = SpringContextHolder.getBean(DeviceService.class);
- DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class);
- ip = paramService.findByCode(AcsConfig.AGVURL).getValue();
- port = Integer.parseInt(paramService.findByCode(AcsConfig.AGVPORT2).getValue());
-
-
- try {
- byte[] b = new byte[1024];
- s = new Socket(ip, port);
- dos = new DataOutputStream(s.getOutputStream());
- dis = new DataInputStream(s.getInputStream());
- System.out.println("TwoNDCAgv链接成功");
- log.info("TwoNDC2Agv链接成功");
- while (bConnected) {
- int count = dis.read(b);
-
- if (count == -1) {
- break;
- }
-
- int[] packetData = new int[count];
- StringBuffer bs = new StringBuffer();
-
- for (int i = 0; i < count; i++) {
- int temp = b[i];
- if (temp < 0)
- temp += 256;
- packetData[i] = temp;
- StringBuffer bs1 = new StringBuffer("0");
- bs.append(temp < 16 ? bs1.append(Integer.toHexString(temp)) : Integer.toHexString(temp));
- }
- log.info("接收agv上报状态信息:" + bs);
- // 从字节流的开头开始读取
- int offset = 0;
- // 循环处理字节流,逐个拆包 按照S消息解析
- while (offset < packetData.length) {
- if (offset + 6 > packetData.length) {
- System.out.println("错误:没有足够的字节来读取长度字段。");
- break;
- }
- int messageHeader = packetData[offset] * 256 + packetData[offset+1];
- //检测消息头是否有效
- if (messageHeader == 0x87CD){
- //消息头长度
- int messageHeaderLength = packetData[offset+2] * 256 + packetData[offset+3];
- //消息数据长度
- int messageDataLength = packetData[offset+4] * 256 + packetData[offset+5];
- //消息总长度
- int messageLength = messageHeaderLength + messageDataLength;
- // 检查剩余字节是否足够处理完整的数据包
- if (offset + messageLength > packetData.length) {
-// System.out.println("错误:检测到不完整的数据包。");
- log.info("错误:检测到不完整的数据包");
- // 数据包不完整,停止处理
- break;
- }
- int[] arr = Arrays.copyOfRange(packetData, offset, offset+messageLength);
- boolean flag = false;
- if (arr[8] * 256 + arr[9] == 0x73) {
- byte[] data = null;
- System.out.println("接收agv上报信息:" + bs);
- //执行阶段
- int phase = arr[16] * 256 + arr[17];
- // agv任务号
- int index = arr[12] * 256 + arr[13];
- //任务号
- int ikey = arr[26] * 256 + arr[27];
- //站点号
- int agvaddr = arr[18] * 256 + arr[19];
- //车号
- int carno = arr[20];
- //充电桩站点号
- int station = arr[25];
- Instruction link_inst = null;
- Instruction inst = null;
- List insts = null;
- boolean link_flag = false;
- Device agv_device = null;
- if (carno != 0) {
- agv_device = deviceAppService.findDeviceByCode(String.valueOf(carno));
- }
- if (ikey != 0) {
- inst = instructionService.findByCodeFromCache(String.valueOf(ikey));
- if (ObjectUtil.isEmpty(inst)) {
- inst = instructionService.findByCode(String.valueOf(ikey));
- }
- }
- if (!ObjectUtil.isEmpty(link_inst)) {
- link_flag = true;
- }
- log.info("接收agv上报信息:" + "phase--" + phase + " index--" + index + " ikey--" + ikey + " agvaddr--" + agvaddr + " Car--" + carno);
- Device device = null;
- String device_code = null;
-
-
- //
- AgvNdcOneDeviceDriver agvNdcOneDeviceDriver;
-
- //开始任务/上报订单号
- if (phase == 0x01) {
- if (!ObjectUtil.isEmpty(inst)) {
- inst.setInstruction_status("1");
- inst.setAgv_jobno(String.valueOf(index));
- inst.setSend_status("1");
- instructionService.update(inst);
- data = NDCAgvService.sendAgvOneModeInst(phase, index, 0, 0, 0, 0, 0);
- }
- }
- //任务完毕
- //(无车id及状态)
- else if (phase == 0x0A) {
- if (!ObjectUtil.isEmpty(inst)) {
- instructionService.finish(inst.getInstruction_id());
- } else {
- log.warn("指令号:{},未反馈wms任务完成,因为agv上报指令号查询指令为空!");
- }
- data = NDCAgvService.sendAgvOneModeInst(phase, index, 0, 0, 0, 0, 0);
- log.info("指令号:{},已反馈agv任务完成!");
- }
- //todo 检查协议里删除任务流程有很多个步骤,在哪体现的
- //(需要WCS反馈)
- else if (phase == 0x30) {
- data = NDCAgvService.sendAgvOneModeInst(0x8F, index, 0, 0, 0, 0, 0);
- }
- //任务删除确认
- //(需要WCS反馈)
- else if (phase == 0xFF) {
-
- if (!ObjectUtil.isEmpty(inst)) {
- if (!ObjectUtil.isEmpty(inst)) {
- instructionService.cancelNOSendAgv(inst.getInstruction_id());
- }
- }
- data = NDCAgvService.sendAgvOneModeInst(phase, index, 0, 0, 0, 0, 0);
- } else {
- //上报异常信息
- //(不需要WCS反馈)
- if (phase == 0x70 || phase == 0x71 || phase == 0x72 || phase == 0x73 || phase == 0x74 || phase == 0x75 || phase == 0x76 || phase == 0x77) {
- device = deviceAppService.findDeviceByCode(String.valueOf(agvaddr));
- } else {
- //todo NDC根据车辆编号123456进行查找特定车辆
- device = deviceAppService.findDeviceByCode(Integer.toString(arr[20]));
- }
- if (ObjectUtil.isNotEmpty(device)) {
- if (device.getDeviceDriver() instanceof AgvNdcOneDeviceDriver) {
- agvNdcOneDeviceDriver = (AgvNdcOneDeviceDriver) device.getDeviceDriver();
- try {
-// agvNdcOneDeviceDriver.processSocket2(arr);
- }catch (Exception e){
- log.error("处理phase:{},发生异常。异常信息:{}",phase,e.getMessage());
- }
- }
- }
-
- }
- if (!ObjectUtil.isEmpty(data)) {
- write(data);
- }
- // 更新偏移量,继续处理下一个数据包
- offset+=messageLength;
- } else {
- log.info("agv上报不是0073类型动作,不处理");
- // 更新偏移量,继续处理下一个数据包
- offset+=messageHeaderLength;
-// ArrayUtils.indexOf()
- int index = IntStream.range(offset, packetData.length-1)
- .filter(i -> packetData[i] == 135 && packetData[i + 1] == 205)
- .findFirst()
- .orElse(-1);
- // 如果未找到,返回 -1
- if (index == -1) {
- break;
- }else {
- offset = index;
- }
- }
- }else {
- log.info("消息头无效,不处理。");
- int index = IntStream.range(offset, packetData.length-1)
- .filter(i -> packetData[i] == 135 && packetData[i + 1] == 205)
- .findFirst()
- .orElse(-1);
- if (index == -1) {
- break;
- }else {
- offset = index;
- }
- }
- }
- }
-
- } catch (Exception e) {
- System.out.println("Agv链接异常");
- log.info("Agv链接异常");
- log.error("agv连接出现异常:{}", e);
- if (ObjectUtil.isNotEmpty(s)) {
- s.close();
- }
- System.out.println(e.getMessage());
- e.printStackTrace();
-
- } finally {
-
-
- }
-
- }
-
-
- @Override
- public void stop() {
- super.after();
- try {
- s.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
-
- public static void write(byte[] b) {
- try {
- log.info("下发agv数据:" + Bytes2HexString(b));
- System.out.println("下发agv数据:" + Bytes2HexString(b));
- dos.write(b);
- dos.flush();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- try {
- Thread.sleep(5000L);
- log.error("tofix下发agv数据失败,再次下发,再次下发agv数据:" + Bytes2HexString(b) + "失败原因:" + e.getMessage());
- System.out.println("再次下发agv数据:" + Bytes2HexString(b));
- dos.write(b);
- dos.flush();
- } catch (Exception e1) {
- log.error("tofix下发agv数据失败,再次下发,下发agv数据:" + Bytes2HexString(b) + "失败原因:" + e1.getMessage());
- e1.printStackTrace();
- }
-
- }
- }
-}
-
+//package org.nl.acs.auto.run;
+//import cn.hutool.core.util.ObjectUtil;
+//import lombok.extern.slf4j.Slf4j;
+//import org.apache.commons.lang3.ArrayUtils;
+//import org.nl.acs.AcsConfig;
+//import org.nl.acs.agv.server.NDCAgvService;
+//import org.nl.acs.device.domain.Device;
+//import org.nl.acs.device.service.DeviceService;
+//import org.nl.acs.device_driver.basedriver.agv.ndcone.AgvNdcOneDeviceDriver;
+//import org.nl.acs.ext.wms.service.AcsToWmsService;
+//import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl;
+//import org.nl.acs.instruction.domain.Instruction;
+//import org.nl.acs.instruction.service.InstructionService;
+//import org.nl.acs.instruction.service.impl.InstructionServiceImpl;
+//import org.nl.acs.log.service.DeviceExecuteLogService;
+//import org.nl.acs.opc.DeviceAppService;
+//import org.nl.config.SpringContextHolder;
+//import org.nl.system.service.dict.ISysDictService;
+//import org.nl.system.service.lucene.LuceneExecuteLogService;
+//import org.nl.system.service.param.ISysParamService;
+//import org.nl.system.service.param.impl.SysParamServiceImpl;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.context.annotation.Lazy;
+//import org.springframework.stereotype.Component;
+//
+//import java.io.DataInputStream;
+//import java.io.DataOutputStream;
+//import java.io.IOException;
+//import java.net.Socket;
+//import java.util.Arrays;
+//import java.util.Date;
+//import java.util.List;
+//import java.util.stream.IntStream;
+//
+//import static org.nl.acs.agv.server.impl.NDCAgvServiceImpl.Bytes2HexString;
+//
+//
+//@Slf4j
+//@Component
+//@Lazy
+//public class TwoNDCSocketConnectionAutoRun extends AbstractAutoRunnable {
+//
+// Socket s;
+// String ip = "192.168.10.34";
+// int port = 1234;
+// static DataOutputStream dos;
+// static DataInputStream dis;
+// private int recordTimeOut = 10000;
+// private Date recordTime;
+// String[] ERROR = new String[]{
+// "货叉尖部传感器触发", "S300传感器触发", "载货状态改变", "急停按钮触发", "触边开关出发", "需要复位",
+// "停在充电位", "取货失败", "放货失败", "轮子打滑", "没有动作码不能进入站点", "取货时有货", "丢失定位",
+// "抬叉停止"};
+// boolean bConnected = true;
+//
+// boolean isReConnect = false;
+//
+// @Autowired
+// ISysParamService paramService;
+// @Autowired
+// AutoRunService autoRunService;
+// @Autowired
+// LuceneExecuteLogService luceneExecuteLogService;
+// @Autowired
+// ISysDictService dictService;
+//
+//
+// public TwoNDCSocketConnectionAutoRun() {
+// this.recordTime = new Date((new Date()).getTime() - (long) this.recordTimeOut);
+// }
+//
+// public String getCode() {
+// return TwoNDCSocketConnectionAutoRun.class.getSimpleName();
+// }
+//
+// public String getName() {
+// return "NDC2在线连接";
+// }
+//
+// //todo NDC相关逻辑
+// public void autoRun() throws IOException {
+// System.out.println("TwoNDCAgv链接开始");
+// ISysParamService ISysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class);
+// InstructionService instructionService = SpringContextHolder.getBean(InstructionServiceImpl.class);
+// AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsServiceImpl.class);
+// NDCAgvService NDCAgvService = SpringContextHolder.getBean(NDCAgvService.class);
+// DeviceAppService deviceAppService = SpringContextHolder.getBean(DeviceAppService.class);
+// DeviceService deviceService = SpringContextHolder.getBean(DeviceService.class);
+// DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class);
+// ip = paramService.findByCode(AcsConfig.AGVURL).getValue();
+// port = Integer.parseInt(paramService.findByCode(AcsConfig.AGVPORT2).getValue());
+//
+//
+// try {
+// byte[] b = new byte[1024];
+// s = new Socket(ip, port);
+// dos = new DataOutputStream(s.getOutputStream());
+// dis = new DataInputStream(s.getInputStream());
+// System.out.println("TwoNDCAgv链接成功");
+// log.info("TwoNDC2Agv链接成功");
+// while (bConnected) {
+// int count = dis.read(b);
+//
+// if (count == -1) {
+// break;
+// }
+//
+// int[] packetData = new int[count];
+// StringBuffer bs = new StringBuffer();
+//
+// for (int i = 0; i < count; i++) {
+// int temp = b[i];
+// if (temp < 0)
+// temp += 256;
+// packetData[i] = temp;
+// StringBuffer bs1 = new StringBuffer("0");
+// bs.append(temp < 16 ? bs1.append(Integer.toHexString(temp)) : Integer.toHexString(temp));
+// }
+// log.info("接收agv上报状态信息:" + bs);
+// // 从字节流的开头开始读取
+// int offset = 0;
+// // 循环处理字节流,逐个拆包 按照S消息解析
+// while (offset < packetData.length) {
+// if (offset + 6 > packetData.length) {
+// System.out.println("错误:没有足够的字节来读取长度字段。");
+// break;
+// }
+// int messageHeader = packetData[offset] * 256 + packetData[offset+1];
+// //检测消息头是否有效
+// if (messageHeader == 0x87CD){
+// //消息头长度
+// int messageHeaderLength = packetData[offset+2] * 256 + packetData[offset+3];
+// //消息数据长度
+// int messageDataLength = packetData[offset+4] * 256 + packetData[offset+5];
+// //消息总长度
+// int messageLength = messageHeaderLength + messageDataLength;
+// // 检查剩余字节是否足够处理完整的数据包
+// if (offset + messageLength > packetData.length) {
+//// System.out.println("错误:检测到不完整的数据包。");
+// log.info("错误:检测到不完整的数据包");
+// // 数据包不完整,停止处理
+// break;
+// }
+// int[] arr = Arrays.copyOfRange(packetData, offset, offset+messageLength);
+// boolean flag = false;
+// if (arr[8] * 256 + arr[9] == 0x73) {
+// byte[] data = null;
+// System.out.println("接收agv上报信息:" + bs);
+// //执行阶段
+// int phase = arr[16] * 256 + arr[17];
+// // agv任务号
+// int index = arr[12] * 256 + arr[13];
+// //任务号
+// int ikey = arr[26] * 256 + arr[27];
+// //站点号
+// int agvaddr = arr[18] * 256 + arr[19];
+// //车号
+// int carno = arr[20];
+// //充电桩站点号
+// int station = arr[25];
+// Instruction link_inst = null;
+// Instruction inst = null;
+// List insts = null;
+// boolean link_flag = false;
+// Device agv_device = null;
+// if (carno != 0) {
+// agv_device = deviceAppService.findDeviceByCode(String.valueOf(carno));
+// }
+// if (ikey != 0) {
+// inst = instructionService.findByCodeFromCache(String.valueOf(ikey));
+// if (ObjectUtil.isEmpty(inst)) {
+// inst = instructionService.findByCode(String.valueOf(ikey));
+// }
+// }
+// if (!ObjectUtil.isEmpty(link_inst)) {
+// link_flag = true;
+// }
+// log.info("接收agv上报信息:" + "phase--" + phase + " index--" + index + " ikey--" + ikey + " agvaddr--" + agvaddr + " Car--" + carno);
+// Device device = null;
+// String device_code = null;
+//
+//
+// //
+// AgvNdcOneDeviceDriver agvNdcOneDeviceDriver;
+//
+// //开始任务/上报订单号
+// if (phase == 0x01) {
+// if (!ObjectUtil.isEmpty(inst)) {
+// inst.setInstruction_status("1");
+// inst.setAgv_jobno(String.valueOf(index));
+// inst.setSend_status("1");
+// instructionService.update(inst);
+// data = NDCAgvService.sendAgvOneModeInst(phase, index, 0, 0, 0, 0, 0);
+// }
+// }
+// //任务完毕
+// //(无车id及状态)
+// else if (phase == 0x0A) {
+// if (!ObjectUtil.isEmpty(inst)) {
+// instructionService.finish(inst.getInstruction_id());
+// } else {
+// log.warn("指令号:{},未反馈wms任务完成,因为agv上报指令号查询指令为空!");
+// }
+// data = NDCAgvService.sendAgvOneModeInst(phase, index, 0, 0, 0, 0, 0);
+// log.info("指令号:{},已反馈agv任务完成!");
+// }
+// //todo 检查协议里删除任务流程有很多个步骤,在哪体现的
+// //(需要WCS反馈)
+// else if (phase == 0x30) {
+// data = NDCAgvService.sendAgvOneModeInst(0x8F, index, 0, 0, 0, 0, 0);
+// }
+// //任务删除确认
+// //(需要WCS反馈)
+// else if (phase == 0xFF) {
+//
+// if (!ObjectUtil.isEmpty(inst)) {
+// if (!ObjectUtil.isEmpty(inst)) {
+// instructionService.cancelNOSendAgv(inst.getInstruction_id());
+// }
+// }
+// data = NDCAgvService.sendAgvOneModeInst(phase, index, 0, 0, 0, 0, 0);
+// } else {
+// //上报异常信息
+// //(不需要WCS反馈)
+// if (phase == 0x70 || phase == 0x71 || phase == 0x72 || phase == 0x73 || phase == 0x74 || phase == 0x75 || phase == 0x76 || phase == 0x77) {
+// device = deviceAppService.findDeviceByCode(String.valueOf(agvaddr));
+// } else {
+// //todo NDC根据车辆编号123456进行查找特定车辆
+// device = deviceAppService.findDeviceByCode(Integer.toString(arr[20]));
+// }
+// if (ObjectUtil.isNotEmpty(device)) {
+// if (device.getDeviceDriver() instanceof AgvNdcOneDeviceDriver) {
+// agvNdcOneDeviceDriver = (AgvNdcOneDeviceDriver) device.getDeviceDriver();
+// try {
+//// agvNdcOneDeviceDriver.processSocket2(arr);
+// }catch (Exception e){
+// log.error("处理phase:{},发生异常。异常信息:{}",phase,e.getMessage());
+// }
+// }
+// }
+//
+// }
+// if (!ObjectUtil.isEmpty(data)) {
+// write(data);
+// }
+// // 更新偏移量,继续处理下一个数据包
+// offset+=messageLength;
+// } else {
+// log.info("agv上报不是0073类型动作,不处理");
+// // 更新偏移量,继续处理下一个数据包
+// offset+=messageHeaderLength;
+//// ArrayUtils.indexOf()
+// int index = IntStream.range(offset, packetData.length-1)
+// .filter(i -> packetData[i] == 135 && packetData[i + 1] == 205)
+// .findFirst()
+// .orElse(-1);
+// // 如果未找到,返回 -1
+// if (index == -1) {
+// break;
+// }else {
+// offset = index;
+// }
+// }
+// }else {
+// log.info("消息头无效,不处理。");
+// int index = IntStream.range(offset, packetData.length-1)
+// .filter(i -> packetData[i] == 135 && packetData[i + 1] == 205)
+// .findFirst()
+// .orElse(-1);
+// if (index == -1) {
+// break;
+// }else {
+// offset = index;
+// }
+// }
+// }
+// }
+//
+// } catch (Exception e) {
+// System.out.println("Agv链接异常");
+// log.info("Agv链接异常");
+// log.error("agv连接出现异常:{}", e);
+// if (ObjectUtil.isNotEmpty(s)) {
+// s.close();
+// }
+// System.out.println(e.getMessage());
+// e.printStackTrace();
+//
+// } finally {
+//
+//
+// }
+//
+// }
+//
+//
+// @Override
+// public void stop() {
+// super.after();
+// try {
+// s.close();
+// } catch (Exception e) {
+// e.printStackTrace();
+// }
+// }
+//
+//
+// public static void write(byte[] b) {
+// try {
+// log.info("下发agv数据:" + Bytes2HexString(b));
+// System.out.println("下发agv数据:" + Bytes2HexString(b));
+// dos.write(b);
+// dos.flush();
+// } catch (IOException e) {
+// // TODO Auto-generated catch block
+// try {
+// Thread.sleep(5000L);
+// log.error("tofix下发agv数据失败,再次下发,再次下发agv数据:" + Bytes2HexString(b) + "失败原因:" + e.getMessage());
+// System.out.println("再次下发agv数据:" + Bytes2HexString(b));
+// dos.write(b);
+// dos.flush();
+// } catch (Exception e1) {
+// log.error("tofix下发agv数据失败,再次下发,下发agv数据:" + Bytes2HexString(b) + "失败原因:" + e1.getMessage());
+// e1.printStackTrace();
+// }
+//
+// }
+// }
+//}
+//
diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/enums/ResponseWMSTaskStatusEnum.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/enums/ResponseWMSTaskStatusEnum.java
index 2ccc1a7..7179f1c 100644
--- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/enums/ResponseWMSTaskStatusEnum.java
+++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/enums/ResponseWMSTaskStatusEnum.java
@@ -19,6 +19,7 @@ public enum ResponseWMSTaskStatusEnum {
*/
BUSY("1", 20, "任务执行中"),
CANCEL("3", 30, "取消任务"),
+ WAITING_FOR_EXECUTION("4", 10, "等待执行中"),
PICKUP_COMPLETED("5", 50, "取货完成"),
FINISHED("2", 100, "完成");
diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/LmsUtil.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/LmsUtil.java
index 31aa530..a14179d 100644
--- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/LmsUtil.java
+++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/LmsUtil.java
@@ -10,6 +10,7 @@ import org.nl.acs.log.service.DeviceExecuteLogService;
import org.nl.config.SpringContextHolder;
import org.nl.system.service.param.ISysParamService;
import org.nl.system.service.param.impl.SysParamServiceImpl;
+import org.springframework.beans.factory.annotation.Value;
/**
* ACS连接外部系统工具类:
@@ -17,6 +18,8 @@ import org.nl.system.service.param.impl.SysParamServiceImpl;
@Slf4j
public class LmsUtil {
+ private final static String wmsToken = "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiJXQ1MiLCJpc3MiOiJ3bXMtY29yZSIsImV4cCI6NDA4MzIxMTcyMiwiaWF0IjoxNzE2NTMyNDAxLCJvcGVyYXRvciI6ImFkbWluIiwianRpIjoiMGFiZDI0NDItZjAxOS00MWUyLWIzMGYtNTA1NjQ4OGFkYzE1In0.iKmQM78JArRyPLJmZiHQb-pMWFbCE-fDcbppEDYNCj8TSMSQNNXeYA1SOD8QNUp4SpGME4qrPmJ-jpq_iNbgNLRbTciaymliNyWEAhf2Ozu91EPWUlhVvtEOlWPOAbhm8CH-75Ctz93nNwJ7jyzl796mfbUbz_uFFLAhn677NVs";
+
public static String notifyAcs(String api, W requestParam) {
DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class);;
ISysParamService paramService = SpringContextHolder.getBean(SysParamServiceImpl.class);
@@ -35,6 +38,7 @@ public class LmsUtil {
//log.info("请求LMS参数:{}", JSON.toJSONString(requestParam));
String body = HttpRequest
.post(wmsUrl + api).setConnectionTimeout(3000)
+ .header("token", wmsToken)
.body(JSON.toJSONString(requestParam))
.execute()
.body();
diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/CreateTaskRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/CreateTaskRequest.java
index d2a6587..4d2ed98 100644
--- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/CreateTaskRequest.java
+++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/CreateTaskRequest.java
@@ -44,6 +44,11 @@ public class CreateTaskRequest extends BaseRequest {
*/
String vehicle_type;
+ /**
+ * 运输载体 0托盘 1仓储笼
+ */
+ String carrier;
+
/**
* 任务类型
diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java
index feeb193..1b30e2f 100644
--- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java
+++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java
@@ -433,6 +433,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService {
CreateTaskRequest req = reqs.get(i);
String task_code = req.getTask_code();
String task_id = req.getTask_id();
+ String carrier = req.getCarrier();
String start_device_code = req.getStart_device_code();
String next_device_code = req.getNext_device_code();
String priority = req.getPriority();
@@ -473,6 +474,16 @@ public class WmsToAcsServiceImpl implements WmsToAcsService {
errArr.add(json);
continue;
}
+ if (StrUtil.isEmpty(carrier)) {
+ JSONObject json = new JSONObject();
+ json.put("task_code", task_code);
+ json.put("message", "载货类型不能为空");
+ errArr.add(json);
+ continue;
+ }
+ start_device_code = start_device_code + carrier;
+ next_device_code = next_device_code + carrier;
+
//JSONObject start_device_json = WQLObject.getWQLObject("acs_storage_cell").query("parent_storage_code ='" + start_device_code + "'").uniqueResult(0);
StorageCell storageCell_start = new LambdaQueryChainWrapper<>(storageCellMapper)
.eq(StorageCell::getParent_storage_code, start_device_code)
diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java
index 310071d..979dc03 100644
--- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java
+++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java
@@ -429,11 +429,13 @@ public class InstructionServiceImpl extends CommonServiceImpl impleme
FeedBackTaskStatusRequest_WeiBang request_weiBang = new FeedBackTaskStatusRequest_WeiBang();
Instruction instruction = instructionService.findByTaskcode(entity.getTask_code());
if (ObjectUtil.isNotEmpty(instruction)){
- request_weiBang.setCarNo(Integer.valueOf(instruction.getCarno()));
+ int carNo = ObjectUtil.isEmpty(instruction.getCarno()) ? 0 : Integer.parseInt(instruction.getCarno());
+ request_weiBang.setCarNo(carNo);
}
request_weiBang.setTaskNo(entity.getTask_code());
request_weiBang.setStatus(ResponseWMSTaskStatusEnum.getCode(dto.getTask_status()));
@@ -997,7 +998,8 @@ public class TaskServiceImpl extends CommonServiceImpl impleme
FeedBackTaskStatusRequest_WeiBang request_weiBang = new FeedBackTaskStatusRequest_WeiBang();
Instruction instruction = instructionService.findByTaskcode(entity.getTask_code());
if (ObjectUtil.isNotEmpty(instruction)){
- request_weiBang.setCarNo(Integer.valueOf(instruction.getCarno()));
+ int carNo = ObjectUtil.isEmpty(instruction.getCarno()) ? 0 : Integer.parseInt(instruction.getCarno());
+ request_weiBang.setCarNo(carNo);
}
request_weiBang.setTaskNo(entity.getTask_code());
request_weiBang.setStatus(ResponseWMSTaskStatusEnum.getCode(entity.getTask_status()));
@@ -1031,7 +1033,8 @@ public class TaskServiceImpl extends CommonServiceImpl impleme
FeedBackTaskStatusRequest_WeiBang request_weiBang = new FeedBackTaskStatusRequest_WeiBang();
Instruction instruction = instructionService.findByTaskcode(entity.getTask_code());
if (ObjectUtil.isNotEmpty(instruction)){
- request_weiBang.setCarNo(Integer.valueOf(instruction.getCarno()));
+ int carNo = ObjectUtil.isEmpty(instruction.getCarno()) ? 0 : Integer.parseInt(instruction.getCarno());
+ request_weiBang.setCarNo(carNo);
}
request_weiBang.setTaskNo(entity.getTask_code());
request_weiBang.setStatus(ResponseWMSTaskStatusEnum.getCode(entity.getTask_status()));
@@ -1077,7 +1080,8 @@ public class TaskServiceImpl extends CommonServiceImpl impleme
FeedBackTaskStatusRequest_WeiBang request_weiBang = new FeedBackTaskStatusRequest_WeiBang();
Instruction instruction = instructionService.findByTaskcode(entity.getTask_code());
if (ObjectUtil.isNotEmpty(instruction)){
- request_weiBang.setCarNo(Integer.valueOf(instruction.getCarno()));
+ int carNo = ObjectUtil.isEmpty(instruction.getCarno()) ? 0 : Integer.parseInt(instruction.getCarno());
+ request_weiBang.setCarNo(carNo);
}
request_weiBang.setTaskNo(entity.getTask_code());
request_weiBang.setStatus(ResponseWMSTaskStatusEnum.getCode(entity.getTask_status()));
diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/hand/dto/HeadDto.java b/nladmin-system/nlsso-server/src/main/java/org/nl/hand/dto/HeadDto.java
index 35bc4b7..b798c16 100644
--- a/nladmin-system/nlsso-server/src/main/java/org/nl/hand/dto/HeadDto.java
+++ b/nladmin-system/nlsso-server/src/main/java/org/nl/hand/dto/HeadDto.java
@@ -26,4 +26,9 @@ public class HeadDto implements Serializable {
*/
private String task_type;
+ /**
+ * 任务类型
+ */
+ private String vehicle_type;
+
}
diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/hand/rest/HandController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/hand/rest/HandController.java
index 8332255..5e543ea 100644
--- a/nladmin-system/nlsso-server/src/main/java/org/nl/hand/rest/HandController.java
+++ b/nladmin-system/nlsso-server/src/main/java/org/nl/hand/rest/HandController.java
@@ -97,4 +97,13 @@ public class HandController {
return new ResponseEntity<>(handService.taskOperation(dto), HttpStatus.OK);
}
+ @PostMapping("/queryVehicleType")
+ @Log("查询载具类型")
+ @ApiOperation("查询载具类型")
+ @SaIgnore
+ //@PreAuthorize("@el.check('sect:list')")
+ public ResponseEntity