diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTransProductServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTransProductServiceImpl.java index 905f71de3..75d9ab82e 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTransProductServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTransProductServiceImpl.java @@ -67,10 +67,36 @@ public class EmisTransProductServiceImpl implements IEmisTransProductService public int insertEmisTransProduct(EmisTransProduct emisTransProduct) { // 获取线路编号 - QueryWrapper 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 queryWrapper=new QueryWrapper<>(); + queryWrapper.likeRight("prod_code",emisTransProduct.getTransLineCode()+"-"); + queryWrapper.select("prod_code"); + queryWrapper.orderByDesc("prod_code"); + queryWrapper.last("LIMIT 1"); + List 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();