diff --git a/aucma-base/src/main/java/com/aucma/base/service/impl/BaseDeviceLedgerServiceImpl.java b/aucma-base/src/main/java/com/aucma/base/service/impl/BaseDeviceLedgerServiceImpl.java index 9fd21ce..5ca7e53 100644 --- a/aucma-base/src/main/java/com/aucma/base/service/impl/BaseDeviceLedgerServiceImpl.java +++ b/aucma-base/src/main/java/com/aucma/base/service/impl/BaseDeviceLedgerServiceImpl.java @@ -92,20 +92,34 @@ public class BaseDeviceLedgerServiceImpl implements IBaseDeviceLedgerService } /** - * 获取设备编号 + * 获取设备编号(生成建议编号,用户可修改) + * 兼容不同类型的编号格式:E00001、SJ_2 等 * @return */ @Override public String getDeviceCode() { String deviceCode = baseDeviceLedgerMapper.getDeviceCode(); - String numericPart = deviceCode.substring(1); - // 将数字部分转换为整数并加1 - int incrementedNumber = Integer.parseInt(numericPart) + 1; - // 格式化加1后的数字部分,确保总长度为5位 - String formattedNumber = String.format("%05d", incrementedNumber); - // 拼接 'E' 和格式化后的数字部分 - String newDeviceCode = "E" + formattedNumber; - return newDeviceCode; + // 如果没有设备记录,返回默认编号 + if (deviceCode == null || deviceCode.isEmpty()) { + return "E00001"; + } + // 尝试提取数字部分 + String numericPart = deviceCode.replaceAll("[^0-9]", ""); + if (numericPart.isEmpty()) { + // 没有数字部分,返回默认编号 + return "E00001"; + } + try { + // 将数字部分转换为整数并加1 + int incrementedNumber = Integer.parseInt(numericPart) + 1; + // 格式化加1后的数字部分,确保总长度为5位 + String formattedNumber = String.format("%05d", incrementedNumber); + // 拼接 'E' 和格式化后的数字部分 + return "E" + formattedNumber; + } catch (NumberFormatException e) { + // 解析失败,返回默认编号 + return "E00001"; + } } } diff --git a/aucma-base/src/main/resources/mapper/base/BaseDeviceParamMapper.xml b/aucma-base/src/main/resources/mapper/base/BaseDeviceParamMapper.xml index 6760b4e..6faa578 100644 --- a/aucma-base/src/main/resources/mapper/base/BaseDeviceParamMapper.xml +++ b/aucma-base/src/main/resources/mapper/base/BaseDeviceParamMapper.xml @@ -46,20 +46,18 @@