demand: tms-基础管理-产品类型管理-新增时产品类型code重复问题修复

committer: heyu
This commit is contained in:
aike 2025-11-12 13:53:26 +08:00
parent 8049915cd8
commit 36e2e496d8

View File

@ -67,10 +67,36 @@ public class EmisTransProductServiceImpl implements IEmisTransProductService
public int insertEmisTransProduct(EmisTransProduct emisTransProduct)
{
// 获取线路编号
QueryWrapper<EmisTransProduct> queryWrapper=new QueryWrapper();
queryWrapper.eq("trans_line_code",emisTransProduct.getTransLineCode());
Long count = emisTransProductMapper.selectCount(queryWrapper);
String prodCode=emisTransProduct.getTransLineCode()+"-"+ StringUtils.leftPad(String.valueOf(count),4,"0");
QueryWrapper<EmisTransProduct> queryWrapper=new QueryWrapper<>();
queryWrapper.likeRight("prod_code",emisTransProduct.getTransLineCode()+"-");
queryWrapper.select("prod_code");
queryWrapper.orderByDesc("prod_code");
queryWrapper.last("LIMIT 1");
List<EmisTransProduct> productList = emisTransProductMapper.selectList(queryWrapper);
String prodCode;
if (productList == null || productList.isEmpty()) {
// 如果查询结果为空,使用0000
prodCode = emisTransProduct.getTransLineCode()+"-"+"0000";
} else {
// 获取最大的prod_code,提取数字部分加1
String maxProdCode = productList.get(0).getProdCode();
String prefix = emisTransProduct.getTransLineCode()+"-";
if (maxProdCode != null && maxProdCode.startsWith(prefix)) {
String numberPart = maxProdCode.substring(prefix.length());
try {
int maxNumber = Integer.parseInt(numberPart);
int newNumber = maxNumber + 1;
prodCode = prefix + StringUtils.leftPad(String.valueOf(newNumber), 4, "0");
} catch (NumberFormatException e) {
// 如果解析失败,使用0000
prodCode = emisTransProduct.getTransLineCode()+"-"+"0000";
}
} else {
// 如果格式不匹配,使用0000
prodCode = emisTransProduct.getTransLineCode()+"-"+"0000";
}
}
emisTransProduct.setProdCode(prodCode);
emisTransProduct.preInsert();