迦南fix
This commit is contained in:
@@ -22,6 +22,7 @@ import org.nl.acs.opc.DeviceAppService;
|
||||
import org.nl.acs.opc.DeviceAppServiceImpl;
|
||||
import org.nl.acs.opc.DeviceType;
|
||||
import org.nl.exception.BadRequestException;
|
||||
import org.nl.start.auto.run.NDCSocketConnectionAutoRun;
|
||||
import org.nl.utils.SpringContextHolder;
|
||||
import org.slf4j.MDC;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -51,7 +52,7 @@ public class NDCAgvServiceImpl implements NDCAgvService {
|
||||
try {
|
||||
MDC.put(log_file_type, log_type);
|
||||
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 indexlow = (byte) IntToHexLow(index);
|
||||
@@ -181,7 +182,7 @@ public class NDCAgvServiceImpl implements NDCAgvService {
|
||||
};
|
||||
log.info("下发AGV作业指令--{}", str1);
|
||||
|
||||
// NDCSocketConnectionAutoRun.write(b);
|
||||
NDCSocketConnectionAutoRun.write(b);
|
||||
System.out.println("下发agv指令数据:" + Bytes2HexString(b));
|
||||
}
|
||||
} finally {
|
||||
@@ -230,91 +231,30 @@ public class NDCAgvServiceImpl implements NDCAgvService {
|
||||
return new byte[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public byte[] sendAgvOneModeInst(int phase, int index, int result) {
|
||||
try {
|
||||
MDC.put(log_file_type, log_type);
|
||||
if (phase < 0 || index < 0)
|
||||
return null;
|
||||
byte indexhigh = (byte) IntToHexHigh(index);
|
||||
byte indexlow = (byte) IntToHexLow(index);
|
||||
byte phasehigh = (byte) IntToHexHigh(phase);
|
||||
byte phaselow = (byte) IntToHexLow(phase);
|
||||
byte resulthigh = (byte) IntToHexHigh(result);
|
||||
byte resultlow = (byte) IntToHexLow(result);
|
||||
if (phase < 0 || index < 0)
|
||||
return null;
|
||||
byte indexhigh = (byte) IntToHexHigh(index);
|
||||
byte indexlow = (byte) IntToHexLow(index);
|
||||
byte phasehigh = (byte) IntToHexHigh(phase);
|
||||
byte phaselow = (byte) IntToHexLow(phase);
|
||||
|
||||
int type = Integer.parseInt(acsConfigService.findConfigFromCache().get(AcsConfig.BUSINESSTYPE));
|
||||
byte[] b = new byte[]{};
|
||||
switch (type) {
|
||||
case 0:
|
||||
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 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));
|
||||
byte[] 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
|
||||
};
|
||||
|
||||
System.out.println("反馈agv动作数据:" + Bytes2HexString(b));
|
||||
return b;
|
||||
} finally {
|
||||
MDC.remove(log_file_type);
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -162,14 +162,13 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
||||
|
||||
try {
|
||||
if (phase == 0x01) {
|
||||
data = AgvService.sendAgvOneModeInst(phase, index);
|
||||
if (!ObjectUtil.isEmpty(inst)) {
|
||||
inst.setInstruction_status("1");
|
||||
inst.setAgv_jobno(String.valueOf(index));
|
||||
inst.setSend_status("1");
|
||||
instructionService.update(inst);
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
}
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
flag = true;
|
||||
}
|
||||
//分配 车id
|
||||
@@ -221,22 +220,34 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
||||
//检测站点smart200
|
||||
if (device.getDeviceDriver() instanceof StandardInspectSiteSmartDeviceDriver) {
|
||||
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);
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
flag = true;
|
||||
} else {
|
||||
if (device.getHas_goods() != 0) {
|
||||
inst.setExecute_status("1");
|
||||
instructionService.update(inst);
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
flag = true;
|
||||
} else {
|
||||
logServer.deviceExecuteLog(device_code, "", "", "AGV请求取货设备{}无货,无法反馈");
|
||||
}
|
||||
logServer.deviceExecuteLog(device_code, "", "", "AGV取货完成请求离开设备{}有货,无法反馈");
|
||||
}
|
||||
|
||||
}
|
||||
//检测站点smart200
|
||||
if (device.getDeviceDriver() instanceof StandardInspectSiteSmartDeviceDriver) {
|
||||
standardInspectSiteSmartDeviceDriver = (StandardInspectSiteSmartDeviceDriver) device.getDeviceDriver();
|
||||
//如果是混料区则上送LMS当前点位的字段,同步到st_ivt_structivt仓位库存表
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("device_code", device_code);
|
||||
@@ -245,49 +256,28 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
||||
jsonObject.put("batch_code", standardInspectSiteSmartDeviceDriver.getBatch_code());
|
||||
jsonObject.put("product_specifications", standardInspectSiteSmartDeviceDriver.getProduct_specifications());
|
||||
jsonObject.put("time", standardInspectSiteSmartDeviceDriver.getTime());
|
||||
jsonObject.put("type","9");
|
||||
jsonObject.put("type", "9");
|
||||
acsToWmsService.lnshApplyTaskToWms(jsonObject);
|
||||
}
|
||||
|
||||
// 检验取放货条件
|
||||
JSONObject agv_check = device_extra_table
|
||||
.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() + "'")
|
||||
// 检验取放货条件
|
||||
JSONObject agv_check = device_extra_table
|
||||
.query("is_delete = '0' AND extra_code = 'agv_check' AND device_code = '" + device.getDevice_code() + "'")
|
||||
.uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(agv_check_status) && "2".equals(agv_check_status.getString("extra_value"))) {
|
||||
inst.setExecute_status("1");
|
||||
instructionService.update(inst);
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
flag = true;
|
||||
agv_check_status.put("extra_value", "0");
|
||||
device_extra_table.update(agv_check_status);
|
||||
} else {
|
||||
logServer.deviceExecuteLog(device_code, "", "", "AGV请求取货设备{}未放盖确认,无法反馈");
|
||||
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);
|
||||
if (ObjectUtil.isNotEmpty(agv_check_status) && "2".equals(agv_check_status.getString("extra_value"))) {
|
||||
inst.setExecute_status("1");
|
||||
instructionService.update(inst);
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
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("-")) {
|
||||
// //反馈wms系统动作完成
|
||||
@@ -302,65 +292,69 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
||||
// 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();
|
||||
standardInspectSiteDeviceDriver.writing(4);
|
||||
if (standardInspectSiteDeviceDriver.getMode() != 0
|
||||
&& standardInspectSiteDeviceDriver.getMove() == 0) {
|
||||
inst.setExecute_status("3");
|
||||
instructionService.update(inst);
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
flag = true;
|
||||
} else {
|
||||
logServer.deviceExecuteLog(device_code, "", "", "AGV请求放货设备{}有货,无法反馈");
|
||||
//请求放货
|
||||
else if (phase == 0x07) {
|
||||
if (ObjectUtil.isEmpty(inst)) {
|
||||
logServer.deviceExecuteLog("未找到指令号对应的指令:", "", "", String.valueOf(ikey));
|
||||
break;
|
||||
}
|
||||
}
|
||||
// 检验取放货条件
|
||||
JSONObject agv_check = device_extra_table
|
||||
.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() + "'")
|
||||
if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) {
|
||||
standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver();
|
||||
standardInspectSiteDeviceDriver.writing(4);
|
||||
if (standardInspectSiteDeviceDriver.getMode() != 0
|
||||
&& standardInspectSiteDeviceDriver.getMove() == 0) {
|
||||
inst.setExecute_status("3");
|
||||
instructionService.update(inst);
|
||||
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);
|
||||
if (ObjectUtil.isNotEmpty(agv_check_status) && "1".equals(agv_check_status.getString("extra_value"))) {
|
||||
inst.setExecute_status("1");
|
||||
instructionService.update(inst);
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
flag = true;
|
||||
agv_check_status.put("extra_value", "0");
|
||||
device_extra_table.update(agv_check_status);
|
||||
} else {
|
||||
logServer.deviceExecuteLog(device_code, "", "", "AGV请求取货设备{}未取盖确认,无法反馈");
|
||||
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);
|
||||
if (ObjectUtil.isNotEmpty(agv_check_status) && "1".equals(agv_check_status.getString("extra_value"))) {
|
||||
inst.setExecute_status("1");
|
||||
instructionService.update(inst);
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
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) {
|
||||
if (ObjectUtil.isEmpty(inst)) {
|
||||
logServer.deviceExecuteLog("未找到指令号对应的指令:", "", "", String.valueOf(ikey));
|
||||
break;
|
||||
}
|
||||
if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) {
|
||||
standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver();
|
||||
standardInspectSiteDeviceDriver.writing(5);
|
||||
if (standardInspectSiteDeviceDriver.getMode() != 0
|
||||
&& standardInspectSiteDeviceDriver.getMove() != 0) {
|
||||
// 放货完成请求离开
|
||||
else if (phase == 0x09) {
|
||||
if (ObjectUtil.isEmpty(inst)) {
|
||||
logServer.deviceExecuteLog("未找到指令号对应的指令:", "", "", String.valueOf(ikey));
|
||||
break;
|
||||
}
|
||||
if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) {
|
||||
standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver();
|
||||
standardInspectSiteDeviceDriver.writing(5);
|
||||
if (standardInspectSiteDeviceDriver.getMode() != 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");
|
||||
instructionService.update(inst);
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
flag = true;
|
||||
} else {
|
||||
logServer.deviceExecuteLog(device_code, "", "", "AGV放货完成请求离开设备{}无货,无法反馈");
|
||||
}
|
||||
}
|
||||
|
||||
// if(!inst.getTask_code().startsWith("-")){
|
||||
// //反馈wms系统动作完成
|
||||
@@ -376,167 +370,157 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
||||
// 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);
|
||||
}
|
||||
//请求删除任务
|
||||
else if (phase == 0x30) {
|
||||
flag = true;
|
||||
if (!ObjectUtil.isEmpty(inst)) {
|
||||
//任务完毕
|
||||
//(无车id及状态)
|
||||
else if (phase == 0x0A) {
|
||||
if (!ObjectUtil.isEmpty(inst)) {
|
||||
inst.setInstruction_status("2");
|
||||
instructionService.finish(inst);
|
||||
}
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
}
|
||||
//请求删除任务
|
||||
else if (phase == 0x30) {
|
||||
data = AgvService.sendAgvOneModeInst(0x8F, index, 0);
|
||||
} else {
|
||||
log.info("未找到对应的指令无法删除");
|
||||
break;
|
||||
}
|
||||
}
|
||||
//任务删除确认
|
||||
//(需要WCS反馈)
|
||||
else if (phase == 0xFF) {
|
||||
flag = true;
|
||||
if (!ObjectUtil.isEmpty(inst)) {
|
||||
instructionService.cancel(inst.getInstruction_id());
|
||||
//任务删除确认
|
||||
//(需要WCS反馈)
|
||||
else if (phase == 0xFF) {
|
||||
flag = true;
|
||||
if (!ObjectUtil.isEmpty(inst)) {
|
||||
instructionService.cancel(inst.getInstruction_id());
|
||||
}
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
}
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
}
|
||||
//进入区域
|
||||
else if (phase == 0x50) {
|
||||
//开门
|
||||
if (device.getDeviceDriver() instanceof StandardAutodoorDeviceDriver) {
|
||||
standardAutodoorDeviceDriver = (StandardAutodoorDeviceDriver) device.getDeviceDriver();
|
||||
standardAutodoorDeviceDriver.OpenOrClose("1");
|
||||
standardAutodoorDeviceDriver.writeing(1);
|
||||
if (standardAutodoorDeviceDriver.getAction() == 1) {
|
||||
//进入区域
|
||||
else if (phase == 0x50) {
|
||||
//开门
|
||||
if (device.getDeviceDriver() instanceof StandardAutodoorDeviceDriver) {
|
||||
standardAutodoorDeviceDriver = (StandardAutodoorDeviceDriver) device.getDeviceDriver();
|
||||
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) {
|
||||
//关门
|
||||
if (device.getDeviceDriver() instanceof StandardAutodoorDeviceDriver) {
|
||||
standardAutodoorDeviceDriver = (StandardAutodoorDeviceDriver) device.getDeviceDriver();
|
||||
standardAutodoorDeviceDriver.OpenOrClose("2");
|
||||
standardAutodoorDeviceDriver.writeing(2);
|
||||
if (standardAutodoorDeviceDriver.getAction() == 2) {
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
//离开区域
|
||||
else if (phase == 0x51) {
|
||||
//关门
|
||||
if (device.getDeviceDriver() instanceof StandardAutodoorDeviceDriver) {
|
||||
standardAutodoorDeviceDriver = (StandardAutodoorDeviceDriver) device.getDeviceDriver();
|
||||
standardAutodoorDeviceDriver.OpenOrClose("2");
|
||||
standardAutodoorDeviceDriver.writeing(2);
|
||||
if (standardAutodoorDeviceDriver.getAction() == 2) {
|
||||
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();
|
||||
if (map.containsKey(String.valueOf(carno))) {
|
||||
dto = map.get(String.valueOf(carno));
|
||||
} else {
|
||||
dto = new AgvDto();
|
||||
}
|
||||
dto.setName(String.valueOf(carno));
|
||||
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");
|
||||
}
|
||||
}
|
||||
} else if (phase == 0x64) {
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
}
|
||||
//上报异常
|
||||
else if (phase == 0x67) {
|
||||
AgvDto dto = null;
|
||||
Map<String, AgvDto> map = AgvService.findAllAgvFromCache();
|
||||
if (map.containsKey(String.valueOf(carno))) {
|
||||
dto = map.get(String.valueOf(carno));
|
||||
} else {
|
||||
dto = new AgvDto();
|
||||
}
|
||||
dto.setName(String.valueOf(carno));
|
||||
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]);
|
||||
//反馈故障
|
||||
//X坐标
|
||||
else if (phase == 0x70) {
|
||||
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.setState("ERROR");
|
||||
acsToWmsService.feedbackAgvStatus(String.valueOf(carno), "1", "error");
|
||||
dto.setName(String.valueOf(carno));
|
||||
dto.setPositionX(String.valueOf(ikey));
|
||||
}
|
||||
}
|
||||
//X坐标
|
||||
else if (phase == 0x70) {
|
||||
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();
|
||||
//Y坐标
|
||||
else if (phase == 0x71) {
|
||||
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));
|
||||
dto.setPositionY(String.valueOf(ikey));
|
||||
}
|
||||
dto.setName(String.valueOf(carno));
|
||||
dto.setPositionX(String.valueOf(ikey));
|
||||
}
|
||||
//Y坐标
|
||||
else if (phase == 0x71) {
|
||||
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();
|
||||
//角度
|
||||
else if (phase == 0x72) {
|
||||
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));
|
||||
dto.setPositionAngle(String.valueOf(ikey));
|
||||
}
|
||||
dto.setName(String.valueOf(carno));
|
||||
dto.setPositionY(String.valueOf(ikey));
|
||||
}
|
||||
//角度
|
||||
else if (phase == 0x72) {
|
||||
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();
|
||||
//电量
|
||||
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));
|
||||
dto.setEnergyLevel(String.valueOf(ikey));
|
||||
}
|
||||
dto.setName(String.valueOf(carno));
|
||||
dto.setPositionAngle(String.valueOf(ikey));
|
||||
}
|
||||
//电量
|
||||
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();
|
||||
if (!ObjectUtil.isEmpty(data)) {
|
||||
write(data);
|
||||
}
|
||||
dto.setName(String.valueOf(carno));
|
||||
dto.setEnergyLevel(String.valueOf(ikey));
|
||||
} catch (Exception e) {
|
||||
System.out.println(e);
|
||||
log.info(e.toString());
|
||||
log.info(e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
if (!ObjectUtil.isEmpty(data)) {
|
||||
write(data);
|
||||
}
|
||||
} catch(Exception e){
|
||||
System.out.println(e);
|
||||
log.info(e.toString());
|
||||
log.info(e.getMessage());
|
||||
e.printStackTrace();
|
||||
} else {
|
||||
System.out.println("agv上报不是0073类型动作,不处理");
|
||||
}
|
||||
} else{
|
||||
System.out.println("agv上报不是0073类型动作,不处理");
|
||||
}
|
||||
|
||||
} catch (
|
||||
Exception e) {
|
||||
|
||||
|
||||
} finally {
|
||||
|
||||
|
||||
}
|
||||
|
||||
} catch(
|
||||
Exception e)
|
||||
|
||||
{
|
||||
|
||||
|
||||
} finally
|
||||
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void stop() {
|
||||
|
||||
@@ -2,7 +2,7 @@ spring:
|
||||
freemarker:
|
||||
check-template-location: false
|
||||
profiles:
|
||||
active: dev
|
||||
active: prod
|
||||
jackson:
|
||||
time-zone: GMT+8
|
||||
data:
|
||||
|
||||
@@ -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)"/>-->
|
||||
|
||||
<!-- <!–添加loki–>-->
|
||||
<!-- <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>-->
|
||||
|
||||
<!-- <!– 打印sql –>-->
|
||||
<!-- <logger name="org.nl.acs.ext.wms.service.impl.WmsToAcsServiceImpl" level="info" additivity="false">-->
|
||||
<!-- <appender-ref ref="lokiAppender" />-->
|
||||
<!-- </logger>-->
|
||||
<!--</included>-->
|
||||
@@ -12,7 +12,7 @@ https://juejin.cn/post/6844903775631572999
|
||||
<contextName>nlAdmin</contextName>
|
||||
<property name="log.charset" value="utf-8"/>
|
||||
<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="lokiUrl" source="loki.url"/>
|
||||
<springProperty scope="context" name="systemName" source="loki.systemName"/>
|
||||
@@ -21,16 +21,26 @@ https://juejin.cn/post/6844903775631572999
|
||||
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
|
||||
<property name="LOG_HOME" value="${logPath}"/>
|
||||
<!--引入默认的一些设置-->
|
||||
<!-- <include resource="log/AutoCreateInst.xml"/>
|
||||
<include resource="log/QueryAgvTaskStatus.xml"/>
|
||||
<include resource="log/AgvFeedbackServiceImpl.xml"/>
|
||||
<include resource="log/AgvLeaveServlet.xml"/>
|
||||
<include resource="log/AcsToErp.xml"/>
|
||||
<!-- <include resource="log/AutoCreateInst.xml"/>
|
||||
<include resource="log/QueryAgvTaskStatus.xml"/>
|
||||
<include resource="log/AgvFeedbackServiceImpl.xml"/>
|
||||
<include resource="log/AgvLeaveServlet.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/WmsToAcs.xml"/>
|
||||
<include resource="log/QueryXZAgvTaskStatus.xml"/>
|
||||
<include resource="log/NDCSocketConnectionAutoRun.xml"/>-->
|
||||
<!-- <include resource="log/QueryMagicAgvDeviceStatus.xml"/>-->
|
||||
<include resource="log/OpcUtil.xml"/>
|
||||
|
||||
|
||||
|
||||
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
@@ -39,6 +49,7 @@ https://juejin.cn/post/6844903775631572999
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
|
||||
<!-- 按照每天生成日志文件 -->
|
||||
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||
@@ -81,15 +92,37 @@ https://juejin.cn/post/6844903775631572999
|
||||
</format>
|
||||
</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">
|
||||
<root level="info">
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
<appender-ref ref="lokiAppender" />
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</root>
|
||||
<!--logmanage -->
|
||||
<logger name="org.nl.acs.log.service.impl.DeviceExecuteLogServiceImpl" level="info" additivity="false">
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
<appender-ref ref="lokiAppender" />
|
||||
</logger>
|
||||
<logger name="jdbc.resultsettable" level="ERROR" additivity="false">
|
||||
@@ -130,15 +163,16 @@ https://juejin.cn/post/6844903775631572999
|
||||
</logger>
|
||||
<root level="info">
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
<appender-ref ref="lokiAppender" />
|
||||
|
||||
</root>
|
||||
</springProfile>
|
||||
|
||||
<!--生产环境:打印控制台和输出到文件-->
|
||||
<springProfile name="prod">
|
||||
<root level="info">
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
<appender-ref ref="ERROR"/>
|
||||
<appender-ref ref="lokiAppender" />
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</root>
|
||||
<!--logmanage -->
|
||||
<logger name="org.nl.acs.log.service.impl.DeviceExecuteLogServiceImpl" level="info" additivity="false">
|
||||
|
||||
@@ -235,17 +235,17 @@ public class SendMaterialTask extends AbstractAcsTask {
|
||||
|
||||
PointService pointService = SpringContextHolder.getBean(PointService.class);
|
||||
|
||||
// 起点是空位不能搬
|
||||
// // 起点是空位不能搬
|
||||
PointDto startPoint = pointService.findByCode(start_point_code);
|
||||
if (StrUtil.equals(startPoint.getPoint_status(), "00")) {
|
||||
throw new BadRequestException("起点是空位");
|
||||
}
|
||||
|
||||
// 终点不是空位不能搬
|
||||
// if (StrUtil.equals(startPoint.getPoint_status(), "00")) {
|
||||
// throw new BadRequestException("起点是空位");
|
||||
// }
|
||||
//
|
||||
// // 终点不是空位不能搬
|
||||
PointDto nextPoint = pointService.findByCode(next_point_code);
|
||||
if (!StrUtil.equals(nextPoint.getPoint_status(), "00")) {
|
||||
throw new BadRequestException("终点不是空位");
|
||||
}
|
||||
// if (!StrUtil.equals(nextPoint.getPoint_status(), "00")) {
|
||||
// throw new BadRequestException("终点不是空位");
|
||||
// }
|
||||
|
||||
// 判断起点有没有未完成的指令
|
||||
JSONObject startPointTask = taskTable
|
||||
|
||||
@@ -68,7 +68,7 @@ spring:
|
||||
multi-statement-alagvslow: true
|
||||
redis:
|
||||
#数据库索引
|
||||
database: ${REDIS_DB:1}
|
||||
database: ${REDIS_DB:3}
|
||||
host: ${REDIS_HOST:127.0.0.1}
|
||||
port: ${REDIS_PORT:6379}
|
||||
password: ${REDIS_PWD:}
|
||||
|
||||
@@ -157,4 +157,6 @@ jetcache:
|
||||
maxTotal: 1000
|
||||
uri:
|
||||
- redis://localhost:6379
|
||||
|
||||
loki:
|
||||
url: http://localhost:3100/loki/api/v1
|
||||
systemName: lms
|
||||
|
||||
@@ -2,7 +2,7 @@ spring:
|
||||
freemarker:
|
||||
check-template-location: false
|
||||
profiles:
|
||||
active: dev
|
||||
active: prod
|
||||
jackson:
|
||||
time-zone: GMT+8
|
||||
data:
|
||||
|
||||
Reference in New Issue
Block a user