From 79c23c08740a33a9b3e2d453f2a864287482bf2d Mon Sep 17 00:00:00 2001 From: "zangch@mesnac.com" Date: Tue, 2 Dec 2025 13:48:36 +0800 Subject: [PATCH] =?UTF-8?q?fix(device):=20=E4=BC=98=E5=8C=96=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E7=BC=96=E5=8F=B7=E7=94=9F=E6=88=90=E9=80=BB=E8=BE=91?= =?UTF-8?q?=EF=BC=8C=E5=85=BC=E5=AE=B9=E5=A4=9A=E7=A7=8D=E7=BC=96=E5=8F=B7?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 获取设备编号时,支持格式如E00001和SJ_2等 - 增加对空或无数字编号的处理,返回默认编号E00001 - 通过正则提取数字部分,数字自增后格式化为5位编号 - 捕获解析异常,避免程序崩溃并返回默认编号 - 调整SQL查询条件,确保条件字段加上表别名dp,避免歧义 --- .../impl/BaseDeviceLedgerServiceImpl.java | 32 +++++++++++++------ .../mapper/base/BaseDeviceParamMapper.xml | 26 +++++++-------- 2 files changed, 35 insertions(+), 23 deletions(-) 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 @@