Browse Source

迦南fix

master
psh 2 years ago
parent
commit
65742a4bb6
  1. 112
      acs/hd/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java
  2. 456
      acs/hd/nladmin-system/src/main/java/org/nl/start/auto/run/NDCSocketConnectionAutoRun.java
  3. 2
      acs/hd/nladmin-system/src/main/resources/config/application.yml
  4. 30
      acs/hd/nladmin-system/src/main/resources/log/WmsToAcs.xml
  5. 56
      acs/hd/nladmin-system/src/main/resources/logback-spring.xml
  6. 18
      lms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendMaterialTask.java
  7. 2
      lms/hd/nladmin-system/src/main/resources/config/application-dev.yml
  8. 4
      lms/hd/nladmin-system/src/main/resources/config/application-prod.yml
  9. 2
      lms/hd/nladmin-system/src/main/resources/config/application.yml

112
acs/hd/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java

@ -22,6 +22,7 @@ import org.nl.acs.opc.DeviceAppService;
import org.nl.acs.opc.DeviceAppServiceImpl; import org.nl.acs.opc.DeviceAppServiceImpl;
import org.nl.acs.opc.DeviceType; import org.nl.acs.opc.DeviceType;
import org.nl.exception.BadRequestException; import org.nl.exception.BadRequestException;
import org.nl.start.auto.run.NDCSocketConnectionAutoRun;
import org.nl.utils.SpringContextHolder; import org.nl.utils.SpringContextHolder;
import org.slf4j.MDC; import org.slf4j.MDC;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -51,7 +52,7 @@ public class NDCAgvServiceImpl implements NDCAgvService {
try { try {
MDC.put(log_file_type, log_type); MDC.put(log_file_type, log_type);
if (StrUtil.equals(acsConfigService.findConfigFromCache().get(AcsConfig.FORKAGV).toString(), "1")) { if (StrUtil.equals(acsConfigService.findConfigFromCache().get(AcsConfig.FORKAGV).toString(), "1")) {
int index = Integer.parseInt(inst.getAgv_jobno()); int index = ObjectUtil.isEmpty(inst.getAgv_jobno())?0:Integer.parseInt(inst.getAgv_jobno());
byte indexhigh = (byte) IntToHexHigh(index); byte indexhigh = (byte) IntToHexHigh(index);
byte indexlow = (byte) IntToHexLow(index); byte indexlow = (byte) IntToHexLow(index);
@ -181,7 +182,7 @@ public class NDCAgvServiceImpl implements NDCAgvService {
}; };
log.info("下发AGV作业指令--{}", str1); log.info("下发AGV作业指令--{}", str1);
// NDCSocketConnectionAutoRun.write(b); NDCSocketConnectionAutoRun.write(b);
System.out.println("下发agv指令数据:" + Bytes2HexString(b)); System.out.println("下发agv指令数据:" + Bytes2HexString(b));
} }
} finally { } finally {
@ -230,91 +231,30 @@ public class NDCAgvServiceImpl implements NDCAgvService {
return new byte[0]; return new byte[0];
} }
@Override
public byte[] sendAgvOneModeInst(int phase, int index, int result) { public byte[] sendAgvOneModeInst(int phase, int index, int result) {
try { if (phase < 0 || index < 0)
MDC.put(log_file_type, log_type); return null;
if (phase < 0 || index < 0) byte indexhigh = (byte) IntToHexHigh(index);
return null; byte indexlow = (byte) IntToHexLow(index);
byte indexhigh = (byte) IntToHexHigh(index); byte phasehigh = (byte) IntToHexHigh(phase);
byte indexlow = (byte) IntToHexLow(index); byte phaselow = (byte) IntToHexLow(phase);
byte phasehigh = (byte) IntToHexHigh(phase);
byte phaselow = (byte) IntToHexLow(phase); byte[] b = new byte[]{(byte) 0X87, (byte) 0XCD,
byte resulthigh = (byte) IntToHexHigh(result); (byte) 0X00, (byte) 0X08,
byte resultlow = (byte) IntToHexLow(result); (byte) 0X00, (byte) 0X0A,
(byte) 0X00, (byte) 0X01,
int type = Integer.parseInt(acsConfigService.findConfigFromCache().get(AcsConfig.BUSINESSTYPE)); (byte) 0X00, (byte) 0X6D,
byte[] b = new byte[]{}; (byte) 0X00, (byte) 0X06,
switch (type) { (byte) indexhigh, (byte) indexlow,
case 0: (byte) 0X01, (byte) 0X12,
b = new byte[]{(byte) 0X87, (byte) 0XCD, (byte) phasehigh, (byte) phaselow
(byte) 0X00, (byte) 0X08, };
(byte) 0X00, (byte) 0X0A,
(byte) 0X00, (byte) 0X01,
(byte) 0X00, (byte) 0X6D, log.info("反馈agv动作数据--index:" + hexToString(indexhigh & 0xFF) + hexToString(indexlow & 0xFF) + ",phase:" + hexToString(phasehigh & 0xFF) + hexToString(phaselow & 0xFF));
(byte) 0X00, (byte) 0X06,
(byte) indexhigh, (byte) indexlow, System.out.println("反馈agv动作数据:" + Bytes2HexString(b));
(byte) 0X01, (byte) 0X12, return b;
(byte) phasehigh, (byte) phaselow
};
break;
case 1:
b = new byte[]{(byte) 0X87, (byte) 0XCD,
(byte) 0X00, (byte) 0X08,
(byte) 0X00, (byte) 0X0D,
(byte) 0X00, (byte) 0X01,
(byte) 0X00, (byte) 0X6D,
(byte) 0X00, (byte) 0X08,
(byte) indexhigh, (byte) indexlow,
(byte) 0X01, (byte) 0X12,
(byte) phasehigh, (byte) phaselow,
(byte) resulthigh, (byte) resultlow
};
break;
case 2:
b = new byte[]{(byte) 0X87, (byte) 0XCD,
(byte) 0X00, (byte) 0X08,
(byte) 0X00, (byte) 0X0A,
(byte) 0X00, (byte) 0X01,
(byte) 0X00, (byte) 0X6D,
(byte) 0X00, (byte) 0X06,
(byte) indexhigh, (byte) indexlow,
(byte) 0X01, (byte) 0X12,
(byte) phasehigh, (byte) phaselow
};
break;
case 5:
b = new byte[]{(byte) 0X87, (byte) 0XCD,
(byte) 0X00, (byte) 0X08,
(byte) 0X00, (byte) 0X0A,
(byte) 0X00, (byte) 0X01,
(byte) 0X00, (byte) 0X6D,
(byte) 0X00, (byte) 0X06,
(byte) indexhigh, (byte) indexlow,
(byte) 0X01, (byte) 0X12,
(byte) phasehigh, (byte) phaselow
};
break;
case 7:
b = new byte[]{(byte) 0X87, (byte) 0XCD,
(byte) 0X00, (byte) 0X08,
(byte) 0X00, (byte) 0X0A,
(byte) 0X00, (byte) 0X01,
(byte) 0X00, (byte) 0X6D,
(byte) 0X00, (byte) 0X06,
(byte) indexhigh, (byte) indexlow,
(byte) 0X01, (byte) 0X12,
(byte) phasehigh, (byte) phaselow
};
break;
}
log.info("反馈agv动作数据--index:" + hexToString(indexhigh & 0xFF) + hexToString(indexlow & 0xFF) + ",phase:" + hexToString(phasehigh & 0xFF) + hexToString(phaselow & 0xFF));
System.out.println("反馈agv动作数据:" + Bytes2HexString(b));
return b;
} finally {
MDC.remove(log_file_type);
}
} }

456
acs/hd/nladmin-system/src/main/java/org/nl/start/auto/run/NDCSocketConnectionAutoRun.java

@ -162,14 +162,13 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable {
try { try {
if (phase == 0x01) { if (phase == 0x01) {
data = AgvService.sendAgvOneModeInst(phase, index);
if (!ObjectUtil.isEmpty(inst)) { if (!ObjectUtil.isEmpty(inst)) {
inst.setInstruction_status("1"); inst.setInstruction_status("1");
inst.setAgv_jobno(String.valueOf(index)); inst.setAgv_jobno(String.valueOf(index));
inst.setSend_status("1"); inst.setSend_status("1");
instructionService.update(inst); instructionService.update(inst);
data = AgvService.sendAgvOneModeInst(phase, index, 0);
} }
data = AgvService.sendAgvOneModeInst(phase, index, 0);
flag = true; flag = true;
} }
//分配 车id //分配 车id
@ -221,22 +220,34 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable {
//检测站点smart200 //检测站点smart200
if (device.getDeviceDriver() instanceof StandardInspectSiteSmartDeviceDriver) { if (device.getDeviceDriver() instanceof StandardInspectSiteSmartDeviceDriver) {
standardInspectSiteSmartDeviceDriver = (StandardInspectSiteSmartDeviceDriver) device.getDeviceDriver(); standardInspectSiteSmartDeviceDriver = (StandardInspectSiteSmartDeviceDriver) device.getDeviceDriver();
if (StrUtil.equals(acsConfigService.findConfigFromCache().get(AcsConfig.IGNOREHASGOODS), "1")) { inst.setExecute_status("1");
inst.setExecute_status("1"); instructionService.update(inst);
data = AgvService.sendAgvOneModeInst(phase, index, 0);
}
}
// 取货完成请求离开
else if (phase == 0x05) {
if (ObjectUtil.isEmpty(inst)) {
logServer.deviceExecuteLog("未找到指令号对应的指令:", "", "", String.valueOf(ikey));
break;
}
if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) {
standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver();
standardInspectSiteDeviceDriver.writing(3);
if (standardInspectSiteDeviceDriver.getMode() != 0
&& standardInspectSiteDeviceDriver.getMove() == 0) {
inst.setExecute_status("5");
instructionService.update(inst); instructionService.update(inst);
data = AgvService.sendAgvOneModeInst(phase, index, 0); data = AgvService.sendAgvOneModeInst(phase, index, 0);
flag = true; flag = true;
} else { } else {
if (device.getHas_goods() != 0) { logServer.deviceExecuteLog(device_code, "", "", "AGV取货完成请求离开设备{}有货,无法反馈");
inst.setExecute_status("1");
instructionService.update(inst);
data = AgvService.sendAgvOneModeInst(phase, index, 0);
flag = true;
} else {
logServer.deviceExecuteLog(device_code, "", "", "AGV请求取货设备{}无货,无法反馈");
}
} }
}
//检测站点smart200
if (device.getDeviceDriver() instanceof StandardInspectSiteSmartDeviceDriver) {
standardInspectSiteSmartDeviceDriver = (StandardInspectSiteSmartDeviceDriver) device.getDeviceDriver();
//如果是混料区则上送LMS当前点位的字段,同步到st_ivt_structivt仓位库存表 //如果是混料区则上送LMS当前点位的字段,同步到st_ivt_structivt仓位库存表
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("device_code", device_code); jsonObject.put("device_code", device_code);
@ -245,49 +256,28 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable {
jsonObject.put("batch_code", standardInspectSiteSmartDeviceDriver.getBatch_code()); jsonObject.put("batch_code", standardInspectSiteSmartDeviceDriver.getBatch_code());
jsonObject.put("product_specifications", standardInspectSiteSmartDeviceDriver.getProduct_specifications()); jsonObject.put("product_specifications", standardInspectSiteSmartDeviceDriver.getProduct_specifications());
jsonObject.put("time", standardInspectSiteSmartDeviceDriver.getTime()); jsonObject.put("time", standardInspectSiteSmartDeviceDriver.getTime());
jsonObject.put("type","9"); jsonObject.put("type", "9");
acsToWmsService.lnshApplyTaskToWms(jsonObject); acsToWmsService.lnshApplyTaskToWms(jsonObject);
} }
// 检验取放货条件
// 检验取放货条件 JSONObject agv_check = device_extra_table
JSONObject agv_check = device_extra_table .query("is_delete = '0' AND extra_code = 'agv_check' AND device_code = '" + device.getDevice_code() + "'")
.query("is_delete = '0' AND extra_code = 'agv_check' AND device_code = '" + device.getDevice_code() + "'")
.uniqueResult(0);
if (ObjectUtil.isNotEmpty(agv_check) && "true".equals(agv_check.getString("extra_value"))) {
JSONObject agv_check_status = device_extra_table
.query("is_delete = '0' AND extra_code = 'agv_check_status' AND device_code = '" + device.getDevice_code() + "'")
.uniqueResult(0); .uniqueResult(0);
if (ObjectUtil.isNotEmpty(agv_check_status) && "2".equals(agv_check_status.getString("extra_value"))) { if (ObjectUtil.isNotEmpty(agv_check) && "true".equals(agv_check.getString("extra_value"))) {
inst.setExecute_status("1"); JSONObject agv_check_status = device_extra_table
instructionService.update(inst); .query("is_delete = '0' AND extra_code = 'agv_check_status' AND device_code = '" + device.getDevice_code() + "'")
data = AgvService.sendAgvOneModeInst(phase, index, 0); .uniqueResult(0);
flag = true; if (ObjectUtil.isNotEmpty(agv_check_status) && "2".equals(agv_check_status.getString("extra_value"))) {
agv_check_status.put("extra_value", "0"); inst.setExecute_status("1");
device_extra_table.update(agv_check_status); instructionService.update(inst);
} else { data = AgvService.sendAgvOneModeInst(phase, index, 0);
logServer.deviceExecuteLog(device_code, "", "", "AGV请求取货设备{}未放盖确认,无法反馈"); flag = true;
} agv_check_status.put("extra_value", "0");
} device_extra_table.update(agv_check_status);
} } else {
// 取货完成请求离开 logServer.deviceExecuteLog(device_code, "", "", "AGV请求取货设备{}未放盖确认,无法反馈");
else if (phase == 0x05) { }
if (ObjectUtil.isEmpty(inst)) {
logServer.deviceExecuteLog("未找到指令号对应的指令:", "", "", String.valueOf(ikey));
break;
}
if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) {
standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver();
standardInspectSiteDeviceDriver.writing(3);
if (standardInspectSiteDeviceDriver.getMode() != 0
&& standardInspectSiteDeviceDriver.getMove() == 0) {
inst.setExecute_status("5");
instructionService.update(inst);
data = AgvService.sendAgvOneModeInst(phase, index, 0);
flag = true;
} else {
logServer.deviceExecuteLog(device_code, "", "", "AGV取货完成请求离开设备{}有货,无法反馈");
} }
}
// if(!inst.getTask_code().startsWith("-")) { // if(!inst.getTask_code().startsWith("-")) {
// //反馈wms系统动作完成 // //反馈wms系统动作完成
@ -302,65 +292,69 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable {
// acsToWmsService.feedbackActionStatusToWms(feedja); // acsToWmsService.feedbackActionStatusToWms(feedja);
// } // }
}
//请求放货
else if (phase == 0x07) {
if (ObjectUtil.isEmpty(inst)) {
logServer.deviceExecuteLog("未找到指令号对应的指令:", "", "", String.valueOf(ikey));
break;
} }
if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { //请求放货
standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); else if (phase == 0x07) {
standardInspectSiteDeviceDriver.writing(4); if (ObjectUtil.isEmpty(inst)) {
if (standardInspectSiteDeviceDriver.getMode() != 0 logServer.deviceExecuteLog("未找到指令号对应的指令:", "", "", String.valueOf(ikey));
&& standardInspectSiteDeviceDriver.getMove() == 0) { break;
inst.setExecute_status("3");
instructionService.update(inst);
data = AgvService.sendAgvOneModeInst(phase, index, 0);
flag = true;
} else {
logServer.deviceExecuteLog(device_code, "", "", "AGV请求放货设备{}有货,无法反馈");
} }
} if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) {
// 检验取放货条件 standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver();
JSONObject agv_check = device_extra_table standardInspectSiteDeviceDriver.writing(4);
.query("is_delete = '0' AND extra_code = 'agv_check' AND device_code = '" + device.getDevice_code() + "'") if (standardInspectSiteDeviceDriver.getMode() != 0
.uniqueResult(0); && standardInspectSiteDeviceDriver.getMove() == 0) {
if (ObjectUtil.isNotEmpty(agv_check) && "true".equals(agv_check.getString("extra_value"))) { inst.setExecute_status("3");
JSONObject agv_check_status = device_extra_table instructionService.update(inst);
.query("is_delete = '0' AND extra_code = 'agv_check_status' AND device_code = '" + device.getDevice_code() + "'") data = AgvService.sendAgvOneModeInst(phase, index, 0);
flag = true;
} else {
logServer.deviceExecuteLog(device_code, "", "", "AGV请求放货设备{}有货,无法反馈");
}
}
// 检验取放货条件
JSONObject agv_check = device_extra_table
.query("is_delete = '0' AND extra_code = 'agv_check' AND device_code = '" + device.getDevice_code() + "'")
.uniqueResult(0); .uniqueResult(0);
if (ObjectUtil.isNotEmpty(agv_check_status) && "1".equals(agv_check_status.getString("extra_value"))) { if (ObjectUtil.isNotEmpty(agv_check) && "true".equals(agv_check.getString("extra_value"))) {
inst.setExecute_status("1"); JSONObject agv_check_status = device_extra_table
instructionService.update(inst); .query("is_delete = '0' AND extra_code = 'agv_check_status' AND device_code = '" + device.getDevice_code() + "'")
data = AgvService.sendAgvOneModeInst(phase, index, 0); .uniqueResult(0);
flag = true; if (ObjectUtil.isNotEmpty(agv_check_status) && "1".equals(agv_check_status.getString("extra_value"))) {
agv_check_status.put("extra_value", "0"); inst.setExecute_status("1");
device_extra_table.update(agv_check_status); instructionService.update(inst);
} else { data = AgvService.sendAgvOneModeInst(phase, index, 0);
logServer.deviceExecuteLog(device_code, "", "", "AGV请求取货设备{}未取盖确认,无法反馈"); flag = true;
agv_check_status.put("extra_value", "0");
device_extra_table.update(agv_check_status);
} else {
logServer.deviceExecuteLog(device_code, "", "", "AGV请求取货设备{}未取盖确认,无法反馈");
}
} }
} }
} // 放货完成请求离开
// 放货完成请求离开 else if (phase == 0x09) {
else if (phase == 0x09) { if (ObjectUtil.isEmpty(inst)) {
if (ObjectUtil.isEmpty(inst)) { logServer.deviceExecuteLog("未找到指令号对应的指令:", "", "", String.valueOf(ikey));
logServer.deviceExecuteLog("未找到指令号对应的指令:", "", "", String.valueOf(ikey)); break;
break; }
} if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) {
if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver();
standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); standardInspectSiteDeviceDriver.writing(5);
standardInspectSiteDeviceDriver.writing(5); if (standardInspectSiteDeviceDriver.getMode() != 0
if (standardInspectSiteDeviceDriver.getMode() != 0 && standardInspectSiteDeviceDriver.getMove() != 0) {
&& standardInspectSiteDeviceDriver.getMove() != 0) { inst.setExecute_status("6");
instructionService.update(inst);
data = AgvService.sendAgvOneModeInst(phase, index, 0);
flag = true;
} else {
logServer.deviceExecuteLog(device_code, "", "", "AGV放货完成请求离开设备{}无货,无法反馈");
}
} else {
inst.setExecute_status("6"); inst.setExecute_status("6");
instructionService.update(inst); instructionService.update(inst);
data = AgvService.sendAgvOneModeInst(phase, index, 0); data = AgvService.sendAgvOneModeInst(phase, index, 0);
flag = true;
} else {
logServer.deviceExecuteLog(device_code, "", "", "AGV放货完成请求离开设备{}无货,无法反馈");
} }
}
// if(!inst.getTask_code().startsWith("-")){ // if(!inst.getTask_code().startsWith("-")){
// //反馈wms系统动作完成 // //反馈wms系统动作完成
@ -376,167 +370,157 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable {
// acsToWmsService.feedbackActionStatusToWms(feedja); // acsToWmsService.feedbackActionStatusToWms(feedja);
// } // }
}
//任务完毕
//(无车id及状态)
else if (phase == 0x0A) {
if (!ObjectUtil.isEmpty(inst)) {
inst.setInstruction_status("2");
instructionService.finish(inst);
} }
data = AgvService.sendAgvOneModeInst(phase, index, 0); //任务完毕
} //(无车id及状态)
//请求删除任务 else if (phase == 0x0A) {
else if (phase == 0x30) { if (!ObjectUtil.isEmpty(inst)) {
flag = true; inst.setInstruction_status("2");
if (!ObjectUtil.isEmpty(inst)) { instructionService.finish(inst);
}
data = AgvService.sendAgvOneModeInst(phase, index, 0);
}
//请求删除任务
else if (phase == 0x30) {
data = AgvService.sendAgvOneModeInst(0x8F, index, 0); data = AgvService.sendAgvOneModeInst(0x8F, index, 0);
} else {
log.info("未找到对应的指令无法删除");
break;
} }
} //任务删除确认
//任务删除确认 //(需要WCS反馈)
//(需要WCS反馈) else if (phase == 0xFF) {
else if (phase == 0xFF) { flag = true;
flag = true; if (!ObjectUtil.isEmpty(inst)) {
if (!ObjectUtil.isEmpty(inst)) { instructionService.cancel(inst.getInstruction_id());
instructionService.cancel(inst.getInstruction_id()); }
data = AgvService.sendAgvOneModeInst(phase, index, 0);
} }
data = AgvService.sendAgvOneModeInst(phase, index, 0); //进入区域
} else if (phase == 0x50) {
//进入区域 //开门
else if (phase == 0x50) { if (device.getDeviceDriver() instanceof StandardAutodoorDeviceDriver) {
//开门 standardAutodoorDeviceDriver = (StandardAutodoorDeviceDriver) device.getDeviceDriver();
if (device.getDeviceDriver() instanceof StandardAutodoorDeviceDriver) {
standardAutodoorDeviceDriver = (StandardAutodoorDeviceDriver) device.getDeviceDriver();
standardAutodoorDeviceDriver.OpenOrClose("1");
standardAutodoorDeviceDriver.writeing(1);
if (standardAutodoorDeviceDriver.getAction() == 1) {
standardAutodoorDeviceDriver.OpenOrClose("1"); standardAutodoorDeviceDriver.OpenOrClose("1");
data = AgvService.sendAgvOneModeInst(phase, index, 0); standardAutodoorDeviceDriver.writeing(1);
if (standardAutodoorDeviceDriver.getAction() == 1) {
standardAutodoorDeviceDriver.OpenOrClose("1");
data = AgvService.sendAgvOneModeInst(phase, index, 0);
}
} }
} }
} //离开区域
//离开区域 else if (phase == 0x51) {
else if (phase == 0x51) { //关门
//关门 if (device.getDeviceDriver() instanceof StandardAutodoorDeviceDriver) {
if (device.getDeviceDriver() instanceof StandardAutodoorDeviceDriver) { standardAutodoorDeviceDriver = (StandardAutodoorDeviceDriver) device.getDeviceDriver();
standardAutodoorDeviceDriver = (StandardAutodoorDeviceDriver) device.getDeviceDriver(); standardAutodoorDeviceDriver.OpenOrClose("2");
standardAutodoorDeviceDriver.OpenOrClose("2"); standardAutodoorDeviceDriver.writeing(2);
standardAutodoorDeviceDriver.writeing(2); if (standardAutodoorDeviceDriver.getAction() == 2) {
if (standardAutodoorDeviceDriver.getAction() == 2) { data = AgvService.sendAgvOneModeInst(phase, index, 0);
data = AgvService.sendAgvOneModeInst(phase, index, 0); }
} }
} else if (phase == 0x64) {
data = AgvService.sendAgvOneModeInst(phase, index, 0);
} }
} else if (phase == 0x64) { //上报异常
data = AgvService.sendAgvOneModeInst(phase, index, 0); else if (phase == 0x67) {
} AgvDto dto = null;
//上报异常 Map<String, AgvDto> map = AgvService.findAllAgvFromCache();
else if (phase == 0x67) { if (map.containsKey(String.valueOf(carno))) {
AgvDto dto = null; dto = map.get(String.valueOf(carno));
Map<String, AgvDto> map = AgvService.findAllAgvFromCache(); } else {
if (map.containsKey(String.valueOf(carno))) { dto = new AgvDto();
dto = map.get(String.valueOf(carno)); }
} else { dto.setName(String.valueOf(carno));
dto = new AgvDto(); if (arr[18] * 256 + arr[19] == 0) {
dto.setState("IDLE");
acsToWmsService.feedbackAgvStatus(String.valueOf(carno), "0", "");
} else {
StringBuffer errbs = new StringBuffer();
for (int i = 0; i < ERROR.length; i++) {
if (((arr[18] * 256 + arr[19]) & (1 << i)) > 0)
errbs.append("," + ERROR[i]);
//反馈故障
}
dto.setState("ERROR");
acsToWmsService.feedbackAgvStatus(String.valueOf(carno), "1", "error");
}
} }
dto.setName(String.valueOf(carno)); //X坐标
if (arr[18] * 256 + arr[19] == 0) { else if (phase == 0x70) {
dto.setState("IDLE"); AgvDto dto = null;
acsToWmsService.feedbackAgvStatus(String.valueOf(carno), "0", ""); Map<String, AgvDto> map = AgvService.findAllAgvFromCache();
} else { carno = arr[18] * 256 + arr[19];
StringBuffer errbs = new StringBuffer(); if (map.containsKey(String.valueOf(carno))) {
for (int i = 0; i < ERROR.length; i++) { dto = map.get(String.valueOf(carno));
if (((arr[18] * 256 + arr[19]) & (1 << i)) > 0) } else {
errbs.append("," + ERROR[i]); dto = new AgvDto();
//反馈故障
} }
dto.setState("ERROR"); dto.setName(String.valueOf(carno));
acsToWmsService.feedbackAgvStatus(String.valueOf(carno), "1", "error"); dto.setPositionX(String.valueOf(ikey));
} }
} //Y坐标
//X坐标 else if (phase == 0x71) {
else if (phase == 0x70) { AgvDto dto = null;
AgvDto dto = null; Map<String, AgvDto> map = AgvService.findAllAgvFromCache();
Map<String, AgvDto> map = AgvService.findAllAgvFromCache(); carno = arr[18] * 256 + arr[19];
carno = arr[18] * 256 + arr[19]; if (map.containsKey(String.valueOf(carno))) {
if (map.containsKey(String.valueOf(carno))) { dto = map.get(String.valueOf(carno));
dto = map.get(String.valueOf(carno)); } else {
} else { dto = new AgvDto();
dto = new AgvDto(); }
dto.setName(String.valueOf(carno));
dto.setPositionY(String.valueOf(ikey));
} }
dto.setName(String.valueOf(carno)); //角度
dto.setPositionX(String.valueOf(ikey)); else if (phase == 0x72) {
} AgvDto dto = null;
//Y坐标 Map<String, AgvDto> map = AgvService.findAllAgvFromCache();
else if (phase == 0x71) { carno = arr[18] * 256 + arr[19];
AgvDto dto = null; if (map.containsKey(String.valueOf(carno))) {
Map<String, AgvDto> map = AgvService.findAllAgvFromCache(); dto = map.get(String.valueOf(carno));
carno = arr[18] * 256 + arr[19]; } else {
if (map.containsKey(String.valueOf(carno))) { dto = new AgvDto();
dto = map.get(String.valueOf(carno)); }
} else { dto.setName(String.valueOf(carno));
dto = new AgvDto(); dto.setPositionAngle(String.valueOf(ikey));
} }
dto.setName(String.valueOf(carno)); //电量
dto.setPositionY(String.valueOf(ikey)); else if (phase == 0x73) {
} AgvDto dto = null;
//角度 Map<String, AgvDto> map = AgvService.findAllAgvFromCache();
else if (phase == 0x72) { carno = arr[18] * 256 + arr[19];
AgvDto dto = null; if (map.containsKey(String.valueOf(carno))) {
Map<String, AgvDto> map = AgvService.findAllAgvFromCache(); dto = map.get(String.valueOf(carno));
carno = arr[18] * 256 + arr[19]; } else {
if (map.containsKey(String.valueOf(carno))) { dto = new AgvDto();
dto = map.get(String.valueOf(carno)); }
} else { dto.setName(String.valueOf(carno));
dto = new AgvDto(); dto.setEnergyLevel(String.valueOf(ikey));
} }
dto.setName(String.valueOf(carno)); if (!ObjectUtil.isEmpty(data)) {
dto.setPositionAngle(String.valueOf(ikey)); write(data);
}
//电量
else if (phase == 0x73) {
AgvDto dto = null;
Map<String, AgvDto> map = AgvService.findAllAgvFromCache();
carno = arr[18] * 256 + arr[19];
if (map.containsKey(String.valueOf(carno))) {
dto = map.get(String.valueOf(carno));
} else {
dto = new AgvDto();
} }
dto.setName(String.valueOf(carno)); } catch (Exception e) {
dto.setEnergyLevel(String.valueOf(ikey)); System.out.println(e);
log.info(e.toString());
log.info(e.getMessage());
e.printStackTrace();
} }
if (!ObjectUtil.isEmpty(data)) { } else {
write(data); System.out.println("agv上报不是0073类型动作,不处理");
}
} catch(Exception e){
System.out.println(e);
log.info(e.toString());
log.info(e.getMessage());
e.printStackTrace();
} }
} else{
System.out.println("agv上报不是0073类型动作,不处理");
} }
}
} catch( } catch (
Exception e) Exception e) {
{
} finally {
} finally
{
}
} }
}
@Override @Override
public void stop() { public void stop() {

2
acs/hd/nladmin-system/src/main/resources/config/application.yml

@ -2,7 +2,7 @@ spring:
freemarker: freemarker:
check-template-location: false check-template-location: false
profiles: profiles:
active: dev active: prod
jackson: jackson:
time-zone: GMT+8 time-zone: GMT+8
data: data:

30
acs/hd/nladmin-system/src/main/resources/log/WmsToAcs.xml

@ -1,30 +0,0 @@
<!--<?xml version="1.0" encoding="UTF-8"?>-->
<!--<included>-->
<!-- <springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/>-->
<!-- <springProperty scope="context" name="lokiUrl" source="loki.url"/>-->
<!-- <property name="LOKI_URL" value="${lokiUrl}"/>-->
<!-- <property name="log.pattern"-->
<!-- value="%black(%contextName-) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}) - %gray(%msg%n)"/>-->
<!-- &lt;!&ndash;添加loki&ndash;&gt;-->
<!-- <appender name="lokiAppender" class="com.github.loki4j.logback.Loki4jAppender">-->
<!-- <batchTimeoutMs>1000</batchTimeoutMs>-->
<!-- <http class="com.github.loki4j.logback.ApacheHttpSender">-->
<!-- <url>${LOKI_URL}</url>-->
<!-- </http>-->
<!-- <format>-->
<!-- <label>-->
<!-- <pattern>logType=wms_to_acs</pattern>-->
<!-- </label>-->
<!-- <message>-->
<!-- <pattern>${log.pattern}</pattern>-->
<!-- </message>-->
<!-- <sortByTime>true</sortByTime>-->
<!-- </format>-->
<!-- </appender>-->
<!-- &lt;!&ndash; 打印sql &ndash;&gt;-->
<!-- <logger name="org.nl.acs.ext.wms.service.impl.WmsToAcsServiceImpl" level="info" additivity="false">-->
<!-- <appender-ref ref="lokiAppender" />-->
<!-- </logger>-->
<!--</included>-->

56
acs/hd/nladmin-system/src/main/resources/logback-spring.xml

@ -12,7 +12,7 @@ https://juejin.cn/post/6844903775631572999
<contextName>nlAdmin</contextName> <contextName>nlAdmin</contextName>
<property name="log.charset" value="utf-8"/> <property name="log.charset" value="utf-8"/>
<property name="log.pattern" <property name="log.pattern"
value="%black(%contextName-) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}) - %gray(%msg%n)"/> value="%black(%contextName-) %red(%d{yyyy-MM-dd HH:mm:ss.SSS}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}) - %gray(%msg%n)"/>
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/> <springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/>
<springProperty scope="context" name="lokiUrl" source="loki.url"/> <springProperty scope="context" name="lokiUrl" source="loki.url"/>
<springProperty scope="context" name="systemName" source="loki.systemName"/> <springProperty scope="context" name="systemName" source="loki.systemName"/>
@ -21,16 +21,26 @@ https://juejin.cn/post/6844903775631572999
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径--> <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<property name="LOG_HOME" value="${logPath}"/> <property name="LOG_HOME" value="${logPath}"/>
<!--引入默认的一些设置--> <!--引入默认的一些设置-->
<!-- <include resource="log/AutoCreateInst.xml"/> <!-- <include resource="log/AutoCreateInst.xml"/>
<include resource="log/QueryAgvTaskStatus.xml"/> <include resource="log/QueryAgvTaskStatus.xml"/>
<include resource="log/AgvFeedbackServiceImpl.xml"/> <include resource="log/AgvFeedbackServiceImpl.xml"/>
<include resource="log/AgvLeaveServlet.xml"/> <include resource="log/AgvLeaveServlet.xml"/>
<include resource="log/AcsToErp.xml"/> <include resource="log/AcsToErp.xml"/>
<include resource="log/AcsToWms.xml"/>
<include resource="log/WmsToAcs.xml"/>
<include resource="log/QueryXZAgvTaskStatus.xml"/>
-->
<!-- <include resource="log/QueryMagicAgvDeviceStatus.xml"/>-->
<!--FILE 10开始+1-->
<include resource="log/OneNDCSocketConnectionAutoRun.xml"/>
<include resource="log/AgvNdcOneDeviceDriver.xml"/>
<include resource="log/AcsToLk.xml"/>
<include resource="log/LkToAcs.xml"/>
<include resource="log/AcsToWms.xml"/> <include resource="log/AcsToWms.xml"/>
<include resource="log/WmsToAcs.xml"/> <include resource="log/WmsToAcs.xml"/>
<include resource="log/QueryXZAgvTaskStatus.xml"/> <include resource="log/OpcUtil.xml"/>
<include resource="log/NDCSocketConnectionAutoRun.xml"/>-->
<!-- <include resource="log/QueryMagicAgvDeviceStatus.xml"/>-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder> <encoder>
@ -39,6 +49,7 @@ https://juejin.cn/post/6844903775631572999
</encoder> </encoder>
</appender> </appender>
<!-- 按照每天生成日志文件 --> <!-- 按照每天生成日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
@ -81,15 +92,37 @@ https://juejin.cn/post/6844903775631572999
</format> </format>
</appender> </appender>
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>error</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/ERROR/%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!--日志文件保留天数-->
<maxHistory>15</maxHistory>
<!--单个日志最大容量 至少10MB才能看得出来-->
<maxFileSize>200MB</maxFileSize>
<!--所有日志最多占多大容量-->
<totalSizeCap>20GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
<charset>${log.charset}</charset>
</encoder>
</appender>
<!--开发环境:打印控制台--> <!--开发环境:打印控制台-->
<springProfile name="dev"> <springProfile name="dev">
<root level="info"> <root level="info">
<appender-ref ref="CONSOLE"/> <appender-ref ref="CONSOLE"/>
<appender-ref ref="lokiAppender" /> <appender-ref ref="lokiAppender" />
<appender-ref ref="asyncFileAppender"/>
</root> </root>
<!--logmanage --> <!--logmanage -->
<logger name="org.nl.acs.log.service.impl.DeviceExecuteLogServiceImpl" level="info" additivity="false"> <logger name="org.nl.acs.log.service.impl.DeviceExecuteLogServiceImpl" level="info" additivity="false">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="lokiAppender" /> <appender-ref ref="lokiAppender" />
</logger> </logger>
<logger name="jdbc.resultsettable" level="ERROR" additivity="false"> <logger name="jdbc.resultsettable" level="ERROR" additivity="false">
@ -130,15 +163,16 @@ https://juejin.cn/post/6844903775631572999
</logger> </logger>
<root level="info"> <root level="info">
<appender-ref ref="CONSOLE"/> <appender-ref ref="CONSOLE"/>
<appender-ref ref="lokiAppender" />
</root> </root>
</springProfile> </springProfile>
<!--生产环境:打印控制台和输出到文件--> <!--生产环境:打印控制台和输出到文件-->
<springProfile name="prod"> <springProfile name="prod">
<root level="info"> <root level="info">
<appender-ref ref="CONSOLE"/> <appender-ref ref="ERROR"/>
<appender-ref ref="lokiAppender" /> <appender-ref ref="lokiAppender" />
<appender-ref ref="asyncFileAppender"/>
</root> </root>
<!--logmanage --> <!--logmanage -->
<logger name="org.nl.acs.log.service.impl.DeviceExecuteLogServiceImpl" level="info" additivity="false"> <logger name="org.nl.acs.log.service.impl.DeviceExecuteLogServiceImpl" level="info" additivity="false">

18
lms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendMaterialTask.java

@ -235,17 +235,17 @@ public class SendMaterialTask extends AbstractAcsTask {
PointService pointService = SpringContextHolder.getBean(PointService.class); PointService pointService = SpringContextHolder.getBean(PointService.class);
// 起点是空位不能搬 // // 起点是空位不能搬
PointDto startPoint = pointService.findByCode(start_point_code); PointDto startPoint = pointService.findByCode(start_point_code);
if (StrUtil.equals(startPoint.getPoint_status(), "00")) { // if (StrUtil.equals(startPoint.getPoint_status(), "00")) {
throw new BadRequestException("起点是空位"); // throw new BadRequestException("起点是空位");
} // }
//
// 终点不是空位不能搬 // // 终点不是空位不能搬
PointDto nextPoint = pointService.findByCode(next_point_code); PointDto nextPoint = pointService.findByCode(next_point_code);
if (!StrUtil.equals(nextPoint.getPoint_status(), "00")) { // if (!StrUtil.equals(nextPoint.getPoint_status(), "00")) {
throw new BadRequestException("终点不是空位"); // throw new BadRequestException("终点不是空位");
} // }
// 判断起点有没有未完成的指令 // 判断起点有没有未完成的指令
JSONObject startPointTask = taskTable JSONObject startPointTask = taskTable

2
lms/hd/nladmin-system/src/main/resources/config/application-dev.yml

@ -68,7 +68,7 @@ spring:
multi-statement-alagvslow: true multi-statement-alagvslow: true
redis: redis:
#数据库索引 #数据库索引
database: ${REDIS_DB:1} database: ${REDIS_DB:3}
host: ${REDIS_HOST:127.0.0.1} host: ${REDIS_HOST:127.0.0.1}
port: ${REDIS_PORT:6379} port: ${REDIS_PORT:6379}
password: ${REDIS_PWD:} password: ${REDIS_PWD:}

4
lms/hd/nladmin-system/src/main/resources/config/application-prod.yml

@ -157,4 +157,6 @@ jetcache:
maxTotal: 1000 maxTotal: 1000
uri: uri:
- redis://localhost:6379 - redis://localhost:6379
loki:
url: http://localhost:3100/loki/api/v1
systemName: lms

2
lms/hd/nladmin-system/src/main/resources/config/application.yml

@ -2,7 +2,7 @@ spring:
freemarker: freemarker:
check-template-location: false check-template-location: false
profiles: profiles:
active: dev active: prod
jackson: jackson:
time-zone: GMT+8 time-zone: GMT+8
data: data:

Loading…
Cancel
Save