Commit 630fa641 authored by wanghao's avatar wanghao

1 标定柜子 序号调整

parent 48a46e91
...@@ -36,8 +36,13 @@ public class CalibrationResultEventHandler { ...@@ -36,8 +36,13 @@ public class CalibrationResultEventHandler {
@Resource @Resource
private IPalletDeviceUploadHistoryService palletDeviceUploadHistoryService; private IPalletDeviceUploadHistoryService palletDeviceUploadHistoryService;
// 格式: /@A1_1/0/0.0/ 或 /@A2_1/0/0.0/ 或 /@A3_1/0/0.0/ // 格式: /@A1_1/0/0.0/ 或 /@B2_1/0/0.0/ 或 /@C3_1/0/0.0/
private static final Pattern DEVICE_PATTERN = Pattern.compile("/@(A[1-4])_(\\d+)/([^/]+)/([^/]+)"); // 支持任意大写字母后跟数字的设备标识符,如 A1, B2, C3, D4 等
private static final Pattern DEVICE_PATTERN = Pattern.compile("/@([A-Z]\\d+)_(\\d+)/([^/]+)/([^/]+)");
// 如果您需要支持多位字母的设备标识符(如 AB1, ABC2 等),可以使用以下正则表达式:
// private static final Pattern DEVICE_PATTERN = Pattern.compile("/@([A-Z]+\\d+)_(\\d+)/([^/]+)/([^/]+)");
@Resource @Resource
private IPalletDeviceBindingService palletDeviceBindingService; private IPalletDeviceBindingService palletDeviceBindingService;
...@@ -129,21 +134,21 @@ public class CalibrationResultEventHandler { ...@@ -129,21 +134,21 @@ public class CalibrationResultEventHandler {
String trayCode = parseTrayCode(message); String trayCode = parseTrayCode(message);
if (StringUtils.isBlank(trayCode)) { if (StringUtils.isBlank(trayCode)) {
log.error("无法从消息中解析出托盘号: {}", message); log.info("无法从消息中解析出托盘号: {}", message);
return new ArrayList<>(); return new ArrayList<>();
} }
List<PalletDeviceBinding> palletDeviceBindings = palletDeviceBindingService.listByTrayCode(trayCode); List<PalletDeviceBinding> palletDeviceBindings = palletDeviceBindingService.listByTrayCode(trayCode);
if (palletDeviceBindings.isEmpty()) { if (palletDeviceBindings.isEmpty()) {
log.warn("未找到托盘号 {} 绑定的设备", trayCode); log.info("未找到托盘号 {} 绑定的设备", trayCode);
return new ArrayList<>(); return new ArrayList<>();
} }
// 根据message 处理 标定浓度值 标定状态 // 根据message 处理 标定浓度值 标定状态
List<DeviceData> deviceDataList = parseDeviceData(message); List<DeviceData> deviceDataList = parseDeviceData(message);
if (deviceDataList.isEmpty()) { if (deviceDataList.isEmpty()) {
log.warn("消息中未包含有效的设备数据: {}", message); log.info("消息中未包含有效的设备数据: {}", message);
return palletDeviceBindings; return palletDeviceBindings;
} }
...@@ -159,7 +164,7 @@ public class CalibrationResultEventHandler { ...@@ -159,7 +164,7 @@ public class CalibrationResultEventHandler {
/** /**
* 阶段一:解析托盘号 * 阶段一:解析托盘号
* 消息格式: @00012346/@A1_1/0/0.0/@A1_2/0/0.0/@A1_3/0/0.0/ * 消息格式: @00012346/@A1_1/0/0.0/@B2_2/0/0.0/@C3_3/0/0.0/
*/ */
private String parseTrayCode(String message) { private String parseTrayCode(String message) {
if (StringUtils.isBlank(message) || !message.startsWith("@")) { if (StringUtils.isBlank(message) || !message.startsWith("@")) {
...@@ -177,7 +182,7 @@ public class CalibrationResultEventHandler { ...@@ -177,7 +182,7 @@ public class CalibrationResultEventHandler {
// 提取托盘号(去掉开头的@) // 提取托盘号(去掉开头的@)
return message.substring(1, endIndex); return message.substring(1, endIndex);
} catch (Exception e) { } catch (Exception e) {
log.error("解析托盘号失败: {}", message, e); log.info("解析托盘号失败: {}", message, e);
return null; return null;
} }
} }
...@@ -199,9 +204,11 @@ public class CalibrationResultEventHandler { ...@@ -199,9 +204,11 @@ public class CalibrationResultEventHandler {
while (deviceMatcher.find()) { while (deviceMatcher.find()) {
try { try {
String sequenceStr = deviceMatcher.group(1); // 顺序号 // 修改后:group(1) 是设备标识符(如A1, B2, C3等),group(2) 是顺序号
String statusStr = deviceMatcher.group(2); // 标定状态 String deviceType = deviceMatcher.group(1); // 设备类型,如A1, B2, C3等
String valueStr = deviceMatcher.group(3); // 标定值 String sequenceStr = deviceMatcher.group(2); // 顺序号
String statusStr = deviceMatcher.group(3); // 标定状态
String valueStr = deviceMatcher.group(4); // 标定值
// 解析数据 // 解析数据
Integer sequenceNumber = parseInt(sequenceStr); Integer sequenceNumber = parseInt(sequenceStr);
...@@ -209,21 +216,22 @@ public class CalibrationResultEventHandler { ...@@ -209,21 +216,22 @@ public class CalibrationResultEventHandler {
if (sequenceNumber != null) { if (sequenceNumber != null) {
DeviceData deviceData = new DeviceData(); DeviceData deviceData = new DeviceData();
deviceData.setDeviceType(deviceType); // 存储设备类型(如果需要)
deviceData.setSequenceNumber(sequenceNumber); deviceData.setSequenceNumber(sequenceNumber);
deviceData.setCalibrationStatus(statusStr); deviceData.setCalibrationStatus(statusStr);
deviceData.setCalibrationValue(calibrationValue); deviceData.setCalibrationValue(calibrationValue);
deviceDataList.add(deviceData); deviceDataList.add(deviceData);
log.debug("解析到设备数据: 顺序号={}, 状态={}, 值={}", log.info("解析到设备数据: 设备类型={}, 顺序号={}, 状态={}, 值={}",
sequenceNumber, statusStr, calibrationValue); deviceType, sequenceNumber, statusStr, calibrationValue);
} }
} catch (Exception e) { } catch (Exception e) {
log.warn("解析设备数据失败,跳过此设备: {}", deviceMatcher.group(), e); log.info("解析设备数据失败,跳过此设备: {}", deviceMatcher.group(), e);
} }
} }
} catch (Exception e) { } catch (Exception e) {
log.error("解析设备数据列表失败: {}", message, e); log.info("解析设备数据列表失败: {}", message, e);
} }
return deviceDataList; return deviceDataList;
...@@ -240,7 +248,7 @@ public class CalibrationResultEventHandler { ...@@ -240,7 +248,7 @@ public class CalibrationResultEventHandler {
try { try {
return Integer.parseInt(str.trim()); return Integer.parseInt(str.trim());
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
log.warn("解析整数失败: {}", str, e); log.info("解析整数失败: {}", str, e);
return null; return null;
} }
} }
...@@ -255,7 +263,7 @@ public class CalibrationResultEventHandler { ...@@ -255,7 +263,7 @@ public class CalibrationResultEventHandler {
try { try {
return new BigDecimal(str.trim()); return new BigDecimal(str.trim());
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
log.warn("解析BigDecimal失败: {}", str, e); log.info("解析BigDecimal失败: {}", str, e);
return null; return null;
} }
} }
...@@ -296,7 +304,7 @@ public class CalibrationResultEventHandler { ...@@ -296,7 +304,7 @@ public class CalibrationResultEventHandler {
// 可以添加其他字段的更新,比如更新时间等 // 可以添加其他字段的更新,比如更新时间等
binding.setUpdateTime(new Date()); binding.setUpdateTime(new Date());
log.debug("更新设备绑定: 顺序号={}, 托盘号={}, 状态={}, 值={}", log.info("更新设备绑定: 顺序号={}, 托盘号={}, 状态={}, 值={}",
sequenceNumber, binding.getfTrayCode(), sequenceNumber, binding.getfTrayCode(),
deviceData.getCalibrationStatus(), deviceData.getCalibrationStatus(),
deviceData.getCalibrationValue()); deviceData.getCalibrationValue());
...@@ -401,4 +409,47 @@ public class CalibrationResultEventHandler { ...@@ -401,4 +409,47 @@ public class CalibrationResultEventHandler {
return history; return history;
} }
}
/**
* 设备数据内部类(如果需要存储设备类型,可以扩展此类)
*/
private static class DeviceData {
private String deviceType; // 设备类型,如A1, B2, C3等
private Integer sequenceNumber; // 顺序号
private String calibrationStatus; // 标定状态
private BigDecimal calibrationValue;// 标定值
// getter 和 setter 方法
public String getDeviceType() {
return deviceType;
}
public void setDeviceType(String deviceType) {
this.deviceType = deviceType;
}
public Integer getSequenceNumber() {
return sequenceNumber;
}
public void setSequenceNumber(Integer sequenceNumber) {
this.sequenceNumber = sequenceNumber;
}
public String getCalibrationStatus() {
return calibrationStatus;
}
public void setCalibrationStatus(String calibrationStatus) {
this.calibrationStatus = calibrationStatus;
}
public BigDecimal getCalibrationValue() {
return calibrationValue;
}
public void setCalibrationValue(BigDecimal calibrationValue) {
this.calibrationValue = calibrationValue;
}
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment