bom: 修复 BOM 版本号计算异常

- 优化了 BOM 版本号计算逻辑,确保在查询不到数据时默认版本号为 1
- 使用 BigInteger 替代 Long 类型,避免数据类型转换异常
- 重构了代码结构,提高了可读性和维护性
This commit is contained in:
maolei 2025-06-04 18:53:26 +08:00
parent d75f090ab0
commit 6d7e67b8bf
1 changed files with 6 additions and 7 deletions

View File

@ -1600,15 +1600,14 @@ public class APIBomBusinessServiceImpl implements IAPIBomBusinessService {
sql.append("AND hcmaterialid = ? "); sql.append("AND hcmaterialid = ? ");
param.addParam(hcmaterialid); param.addParam(hcmaterialid);
// 只查询数字版本号排除非数字版本 // 只查询数字版本号排除非数字版本
sql.append("AND REGEXP_LIKE(hversion, '^[0-9]+$') "); sql.append("AND REGEXP_LIKE(hversion, '^[0-9]+$') ");
// 如果查询不到数据默认版本号为1否则最大版本号加1
Object mayBeNullVersion = DAO.executeQuery(sql.toString(), param, new ColumnProcessor());
String number = Objects.isNull(mayBeNullVersion) ? "1" : DAO.executeQuery(sql.toString(), param, new ColumnProcessor()).toString();
return String.valueOf(Long.parseLong(number)+1);
Long maxVersion = (Long) DAO.executeQuery(sql.toString(), param, new ColumnProcessor()); } catch (Exception e) {
// 如果查询不到数据默认版本号为1否则最大版本号加1
return String.valueOf((maxVersion != null ? maxVersion : 0) + 1);
} catch (Exception e) {
throw new BusinessException("计算BOM版本号异常" + e.getMessage()); throw new BusinessException("计算BOM版本号异常" + e.getMessage());
} }
} }