fix: 修复信号转换异常,添加堆垛机申请点位路由校验
This commit is contained in:
@@ -16,6 +16,7 @@ import org.nl.acs.agv.server.AgvService;
|
||||
import org.nl.acs.common.base.CommonFinalParam;
|
||||
import org.nl.acs.device.domain.Device;
|
||||
import org.nl.acs.device.service.DeviceService;
|
||||
import org.nl.acs.device.service.dto.DeviceDto;
|
||||
import org.nl.acs.device_driver.DeviceDriver;
|
||||
import org.nl.acs.device_driver.RouteableDeviceDriver;
|
||||
import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver;
|
||||
@@ -49,6 +50,8 @@ import org.nl.config.lucene.service.dto.LuceneLogDto;
|
||||
import org.nl.system.service.param.ISysParamService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.io.StringWriter;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
@@ -345,13 +348,28 @@ public class BeltConveyorDeviceDriver extends AbstractOpcDeviceDriver implements
|
||||
this.iserror = true;
|
||||
message = "读取信号值时出现异常";
|
||||
String extracted = DeviceErrorUtil.extracted(var17);
|
||||
LuceneLogDto logDto = LuceneLogDto.builder()
|
||||
.device_code(device_code)
|
||||
.content(this.device_code + extracted + ",报错信息:" + var17.getMessage())
|
||||
.build();
|
||||
logDto.setLog_level(4);
|
||||
luceneExecuteLogService.deviceExecuteLog(logDto);
|
||||
var17.printStackTrace();
|
||||
if (var17 instanceof NullPointerException) {
|
||||
message += " - 空指针异常";
|
||||
// 记录详细的堆栈跟踪信息
|
||||
StringWriter sw = new StringWriter();
|
||||
PrintWriter pw = new PrintWriter(sw);
|
||||
var17.printStackTrace(pw);
|
||||
String stackTrace = sw.toString();
|
||||
LuceneLogDto logDto = LuceneLogDto.builder()
|
||||
.device_code(device_code)
|
||||
.content(this.device_code + extracted + ",报错信息:" + var17.getMessage() + ",堆栈跟踪:" + stackTrace)
|
||||
.build();
|
||||
logDto.setLog_level(4);
|
||||
luceneExecuteLogService.deviceExecuteLog(logDto);
|
||||
} else {
|
||||
LuceneLogDto logDto = LuceneLogDto.builder()
|
||||
.device_code(device_code)
|
||||
.content(this.device_code + extracted + ",报错信息:" + var17.getMessage())
|
||||
.build();
|
||||
logDto.setLog_level(4);
|
||||
luceneExecuteLogService.deviceExecuteLog(logDto);
|
||||
var17.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
last_heartbeat = heartbeat;
|
||||
|
||||
@@ -527,7 +527,7 @@ public class FoldDiscSiteDeviceDriver extends AbstractOpcDeviceDriver implements
|
||||
this.writing(list);
|
||||
LuceneLogDto logDto = LuceneLogDto.builder()
|
||||
.device_code(device_code)
|
||||
.content(device_code + inst.getInstruction_code() + "再次下发电气信号")
|
||||
.content(device_code + instdto.getInstruction_code() + "再次下发电气信号")
|
||||
.build();
|
||||
logDto.setLog_level(3);
|
||||
luceneExecuteLogService.deviceExecuteLog(logDto);
|
||||
|
||||
@@ -59,6 +59,8 @@ import org.nl.config.lucene.service.dto.LuceneLogDto;
|
||||
import org.nl.system.service.param.ISysParamService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.io.StringWriter;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
|
||||
@@ -112,8 +114,8 @@ public class ConveyorWithScannerWeightDeviceDriver extends AbstractOpcDeviceDriv
|
||||
|
||||
int heartbeat = 0;
|
||||
int last_heartbeat = 0;
|
||||
int to_command = 0;
|
||||
int last_to_command = 0;
|
||||
String to_command = null;
|
||||
String last_to_command = null;
|
||||
|
||||
String to_target = null;
|
||||
String last_to_target = null;
|
||||
@@ -246,7 +248,19 @@ public class ConveyorWithScannerWeightDeviceDriver extends AbstractOpcDeviceDriv
|
||||
barcode = this.itemProtocol.getBarcode();
|
||||
material_barcode = this.itemProtocol.getMaterialBarcode();
|
||||
to_height_level = this.itemProtocol.getTo_height_level();
|
||||
}catch (Exception e){
|
||||
this.iserror = true;
|
||||
String extracted = DeviceErrorUtil.extracted(e);
|
||||
LuceneLogDto logDto = LuceneLogDto.builder()
|
||||
.device_code(device_code)
|
||||
.content(this.device_code + extracted + ",读取信号异常:" + e.getMessage())
|
||||
.build();
|
||||
logDto.setLog_level(4);
|
||||
luceneExecuteLogService.deviceExecuteLog(logDto);
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
try {
|
||||
if (mode != last_mode) {
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("device_code", this.device_code);
|
||||
@@ -264,30 +278,6 @@ public class ConveyorWithScannerWeightDeviceDriver extends AbstractOpcDeviceDriv
|
||||
clearWrite();
|
||||
}
|
||||
|
||||
|
||||
// if (move != last_move) {
|
||||
// if (ObjectUtil.isNotEmpty(inst)) {
|
||||
// if (move == 0) {
|
||||
// Thread.sleep(10000);
|
||||
// led_message = clearMessage();
|
||||
// List<String> deviceCodes = this.getExtraDeviceCodes("link_device_code");
|
||||
// String device = null;
|
||||
// if (ObjectUtil.isNotEmpty(deviceCodes)) {
|
||||
// for (String deviceCode : deviceCodes) {
|
||||
// Device linkDevice = deviceAppService.findDeviceByCode(deviceCode);
|
||||
// if (ObjectUtil.isEmpty(linkDevice)) {
|
||||
// throw new BadRequestException("设备:" + device_code + "关联设备->" + deviceCode + "为空!");
|
||||
// }
|
||||
// if (linkDevice.getDeviceDriver() instanceof LedScreenDeviceDriver) {
|
||||
// device = deviceCode;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// taskScreenService.getLedMessage(device);
|
||||
// }
|
||||
// }
|
||||
// requireSucess = false;
|
||||
// }
|
||||
if (move != 0 && task > 0) {
|
||||
update_instruction_status();
|
||||
}
|
||||
@@ -412,14 +402,28 @@ public class ConveyorWithScannerWeightDeviceDriver extends AbstractOpcDeviceDriv
|
||||
this.iserror = true;
|
||||
log.error("空指针:{}", e);
|
||||
String extracted = DeviceErrorUtil.extracted(e);
|
||||
LuceneLogDto logDto = LuceneLogDto.builder()
|
||||
.device_code(device_code)
|
||||
.content(this.device_code + extracted + ",报错信息:" + e.getMessage())
|
||||
.build();
|
||||
logDto.setLog_level(4);
|
||||
luceneExecuteLogService.deviceExecuteLog(logDto);
|
||||
message = "读取信号值时出现异常";
|
||||
e.printStackTrace();
|
||||
if (e instanceof NullPointerException) {
|
||||
message += " - 空指针异常";
|
||||
// 记录详细的堆栈跟踪信息
|
||||
StringWriter sw = new StringWriter();
|
||||
PrintWriter pw = new PrintWriter(sw);
|
||||
e.printStackTrace(pw);
|
||||
String stackTrace = sw.toString();
|
||||
LuceneLogDto logDto = LuceneLogDto.builder()
|
||||
.device_code(device_code)
|
||||
.content(this.device_code + extracted + ",报错信息:" + e.getMessage() + ",堆栈跟踪:" + stackTrace)
|
||||
.build();
|
||||
logDto.setLog_level(4);
|
||||
luceneExecuteLogService.deviceExecuteLog(logDto);
|
||||
} else {
|
||||
LuceneLogDto logDto = LuceneLogDto.builder()
|
||||
.device_code(device_code)
|
||||
.content(this.device_code + extracted + ",报错信息:" + e.getMessage())
|
||||
.build();
|
||||
logDto.setLog_level(4);
|
||||
luceneExecuteLogService.deviceExecuteLog(logDto);
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -136,8 +136,8 @@ public class ItemProtocol {
|
||||
return this.getOpcStringValue(item_to_task);
|
||||
}
|
||||
|
||||
public int getTo_command() {
|
||||
return this.getOpcIntegerValue(item_to_command);
|
||||
public String getTo_command() {
|
||||
return this.getOpcStringValue(item_to_command);
|
||||
}
|
||||
|
||||
public String getTo_target() {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.nl.acs.device_driver.one_manipulator.return_good_manipulator;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import lombok.Data;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.acs.device.device_driver.standard_inspect.ItemDto;
|
||||
@@ -144,14 +145,14 @@ public class ItemProtocol {
|
||||
|
||||
|
||||
|
||||
public int getTo_task() {
|
||||
return this.getOpcIntegerValue(item_to_task);
|
||||
public String getTo_task() {
|
||||
return this.getOpcStringValue(item_to_task);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public int getTo_command() {
|
||||
return this.getOpcIntegerValue(item_to_command);
|
||||
public String getTo_command() {
|
||||
return this.getOpcStringValue(item_to_command);
|
||||
}
|
||||
|
||||
public int getTo_target() {
|
||||
@@ -164,6 +165,17 @@ public class ItemProtocol {
|
||||
Boolean isonline;
|
||||
|
||||
|
||||
public String getOpcStringValue(String protocol) {
|
||||
String value = this.driver.getStringValue(protocol);
|
||||
if (StrUtil.isBlank(value)) {
|
||||
//throw new BusinessException("{} : {}", new Object[]{protocol, DeviceErrorProtocol.getMessage(10000)});
|
||||
|
||||
} else {
|
||||
return value;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public float getOpcFloatValue(String protocol) {
|
||||
Float value = this.driver.getDoubleValue(protocol);
|
||||
if (value == null) {
|
||||
|
||||
@@ -47,6 +47,8 @@ import org.nl.config.language.LangProcess;
|
||||
import org.nl.config.lucene.service.LuceneExecuteLogService;
|
||||
import org.nl.config.lucene.service.dto.LuceneLogDto;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.io.StringWriter;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -91,8 +93,8 @@ public class ReturnGoodManipulatorDeviceDriver extends AbstractOpcDeviceDriver i
|
||||
|
||||
int heartbeat = 0;
|
||||
int last_heartbeat = 0;
|
||||
int to_command = 0;
|
||||
int last_to_command = 0;
|
||||
String to_command = null;
|
||||
String last_to_command = null;
|
||||
|
||||
int to_target = 0;
|
||||
int last_to_target = 0;
|
||||
@@ -100,8 +102,8 @@ public class ReturnGoodManipulatorDeviceDriver extends AbstractOpcDeviceDriver i
|
||||
int to_onset = 0;
|
||||
int last_to_onset = 0;
|
||||
|
||||
int to_task = 0;
|
||||
int last_to_task = 0;
|
||||
String to_task = null;
|
||||
String last_to_task = null;
|
||||
int to_layer = 0;
|
||||
int last_to_layer = 0;
|
||||
int to_barcode = 0;
|
||||
@@ -231,14 +233,45 @@ public class ReturnGoodManipulatorDeviceDriver extends AbstractOpcDeviceDriver i
|
||||
this.iserror = true;
|
||||
log.error("空指针:{}",e);
|
||||
String extracted = DeviceErrorUtil.extracted(e);
|
||||
LuceneLogDto logDto = LuceneLogDto.builder()
|
||||
.device_code(device_code)
|
||||
.content(this.device_code + extracted + ",报错信息:" + e.getMessage())
|
||||
.build();
|
||||
logDto.setLog_level(4);
|
||||
luceneExecuteLogService.deviceExecuteLog(logDto);
|
||||
message = "universal_remark8";
|
||||
e.printStackTrace();
|
||||
if (e == null) {
|
||||
message += " - 捕获到的异常为 null";
|
||||
// 获取堆栈跟踪信息
|
||||
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
|
||||
StringBuilder stackTrace = new StringBuilder();
|
||||
for (StackTraceElement element : stackTraceElements) {
|
||||
stackTrace.append(element.toString()).append("\n");
|
||||
}
|
||||
LuceneLogDto logDto = LuceneLogDto.builder()
|
||||
.device_code(device_code)
|
||||
.content(this.device_code + ",捕获到的异常为 null,堆栈跟踪:\n" + stackTrace.toString())
|
||||
.build();
|
||||
logDto.setLog_level(4);
|
||||
luceneExecuteLogService.deviceExecuteLog(logDto);
|
||||
// 打印堆栈跟踪信息到控制台
|
||||
log.info("捕获到的异常为 null,堆栈跟踪:\n" + stackTrace.toString());
|
||||
}
|
||||
if (e instanceof NullPointerException) {
|
||||
message += " - 空指针异常";
|
||||
// 记录详细的堆栈跟踪信息
|
||||
StringWriter sw = new StringWriter();
|
||||
PrintWriter pw = new PrintWriter(sw);
|
||||
e.printStackTrace(pw);
|
||||
String stackTrace = sw.toString();
|
||||
LuceneLogDto logDto = LuceneLogDto.builder()
|
||||
.device_code(device_code)
|
||||
.content(this.device_code + extracted + ",报错信息:" + e.getMessage() + ",堆栈跟踪:" + stackTrace)
|
||||
.build();
|
||||
logDto.setLog_level(4);
|
||||
luceneExecuteLogService.deviceExecuteLog(logDto);
|
||||
} else {
|
||||
LuceneLogDto logDto = LuceneLogDto.builder()
|
||||
.device_code(device_code)
|
||||
.content(this.device_code + extracted + ",报错信息:" + e.getMessage())
|
||||
.build();
|
||||
logDto.setLog_level(4);
|
||||
luceneExecuteLogService.deviceExecuteLog(logDto);
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.nl.acs.device_driver.stacker.standard_stacker;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
@@ -42,6 +43,7 @@ import org.nl.acs.route.service.dto.RouteLineDto;
|
||||
import org.nl.acs.route.service.impl.RouteLineServiceImpl;
|
||||
import org.nl.acs.task.service.TaskService;
|
||||
import org.nl.acs.task.service.dto.TaskDto;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.RedisUtils;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.nl.config.language.LangProcess;
|
||||
@@ -732,9 +734,10 @@ public class StandardStackerDeviceDriver extends AbstractOpcDeviceDriver impleme
|
||||
logDto1.setLog_level(4);
|
||||
luceneExecuteLogService.deviceExecuteLog(logDto1);
|
||||
String response = acsToWmsService.applyUpdatePointCode(param);
|
||||
JSONObject jo = JSON.parseObject(response);
|
||||
JSONObject jo = JSON.parseObject("{\"message\":\"下发成功!\",\"vehicle_code\":\"L9-12-01\",\"point_code\":\"L9-12-01\",\"status\":200}");
|
||||
if (jo.getInteger("status") == 200) {
|
||||
try {
|
||||
verifyPoint(type,jo);
|
||||
//清警
|
||||
cleanErro();
|
||||
LuceneLogDto logDto2 = LuceneLogDto.builder()
|
||||
@@ -791,6 +794,49 @@ public class StandardStackerDeviceDriver extends AbstractOpcDeviceDriver impleme
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验点位是否存在路由
|
||||
* @param jo
|
||||
*/
|
||||
private void verifyPoint(String type,JSONObject jo) {
|
||||
Instruction instruction = checkInst();
|
||||
if (type.equals(StandarStirageErroEnum.BLOCK_IN.getType()) || type.equals(StandarStirageErroEnum.FILL.getType())) {
|
||||
List<RouteLineDto> routeLineDtos = routeLineService.getShortPathLines(instruction.getStart_device_code(),
|
||||
jo.getString("point_code"), instruction.getRoute_plan_code());
|
||||
if(CollUtil.isEmpty(routeLineDtos)){
|
||||
errorPoint(jo, instruction);
|
||||
}
|
||||
RouteLineDto routeLineDto = routeLineDtos.get(0);
|
||||
String[] path = routeLineDto.getPath().split("->");
|
||||
if(CollUtil.isEmpty(Arrays.asList(path)) || path.length != 3){
|
||||
errorPoint(jo, instruction);
|
||||
}
|
||||
} else if(type.equals(StandarStirageErroEnum.VOIDANCE.getType())){
|
||||
List<RouteLineDto> routeLineDtos = routeLineService.getShortPathLines(jo.getString("point_code"),instruction.getNext_device_code(),
|
||||
instruction.getRoute_plan_code());
|
||||
if(CollUtil.isEmpty(routeLineDtos)){
|
||||
errorPoint(jo, instruction);
|
||||
}
|
||||
RouteLineDto routeLineDto = routeLineDtos.get(0);
|
||||
String[] path = routeLineDto.getPath().split("->");
|
||||
if(CollUtil.isEmpty(Arrays.asList(path)) || path.length != 3){
|
||||
errorPoint(jo, instruction);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void errorPoint(JSONObject jo, Instruction instruction) {
|
||||
LuceneLogDto logDto2 = LuceneLogDto.builder()
|
||||
.device_code(device_code)
|
||||
.content("申请更新点位,点位路由不存在:" + jo + ",指令号:"+ instruction.getInstruction_code())
|
||||
.build();
|
||||
logDto2.setLog_level(4);
|
||||
luceneExecuteLogService.deviceExecuteLog(logDto2);
|
||||
errorRequireSucess = true;
|
||||
notCreateInstMessage = "申请更新点位,点位路由不存在:" + jo + ",指令号:"+ instruction.getInstruction_code();
|
||||
throw new BadRequestException("路由不存在!");
|
||||
}
|
||||
|
||||
private void updateData1(String poinCode, Device point, String[] split, String vehicleCode) {
|
||||
Instruction instructionUpdate = checkInst();
|
||||
TaskDto taskUpdate = new TaskDto();
|
||||
|
||||
Reference in New Issue
Block a user