From 2559dc27cb9529069bb6f4b1a7c43f5cda61ca07 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Fri, 12 Jun 2026 13:17:33 +0800 Subject: [PATCH] =?UTF-8?q?feat(crm):=20=E6=B7=BB=E5=8A=A0=E5=AE=A2?= =?UTF-8?q?=E6=88=B7=E7=BC=96=E7=A0=81=E8=87=AA=E5=8A=A8=E7=94=9F=E6=88=90?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 selectMaxCustomerCode 方法查询最大客户编码 - 实现客户编码自动生成逻辑,支持纯数字和带前缀格式 - 添加正则表达式解析编码规则并递增末尾数字 - 集成编码生成功能到客户插入业务流程中 --- .../com/klp/crm/mapper/CrmCustomerMapper.java | 5 +++++ .../service/impl/CrmCustomerServiceImpl.java | 19 +++++++++++++++++++ .../resources/mapper/CrmCustomerMapper.xml | 3 +++ 3 files changed, 27 insertions(+) diff --git a/klp-crm/src/main/java/com/klp/crm/mapper/CrmCustomerMapper.java b/klp-crm/src/main/java/com/klp/crm/mapper/CrmCustomerMapper.java index afba5029..29e6bec1 100644 --- a/klp-crm/src/main/java/com/klp/crm/mapper/CrmCustomerMapper.java +++ b/klp-crm/src/main/java/com/klp/crm/mapper/CrmCustomerMapper.java @@ -12,4 +12,9 @@ import com.klp.common.core.mapper.BaseMapperPlus; */ public interface CrmCustomerMapper extends BaseMapperPlus { + /** + * 查询当前最大的customer_code,用于自动生成新编码 + */ + String selectMaxCustomerCode(); + } diff --git a/klp-crm/src/main/java/com/klp/crm/service/impl/CrmCustomerServiceImpl.java b/klp-crm/src/main/java/com/klp/crm/service/impl/CrmCustomerServiceImpl.java index 8218fa94..a2369575 100644 --- a/klp-crm/src/main/java/com/klp/crm/service/impl/CrmCustomerServiceImpl.java +++ b/klp-crm/src/main/java/com/klp/crm/service/impl/CrmCustomerServiceImpl.java @@ -91,6 +91,25 @@ public class CrmCustomerServiceImpl implements ICrmCustomerService { @Override public Boolean insertByBo(CrmCustomerBo bo) { CrmCustomer add = BeanUtil.toBean(bo, CrmCustomer.class); + // 自动生成customer_code:查询最大编码并加1 + if (StringUtils.isBlank(add.getCustomerCode())) { + String maxCode = baseMapper.selectMaxCustomerCode(); + if (StringUtils.isBlank(maxCode)) { + add.setCustomerCode("00001"); + } else { + // 提取末尾数字后缀并递增,支持纯数字("00001")和带前缀("KH00001")两种格式 + java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("^(.*?)(\\d+)$"); + java.util.regex.Matcher matcher = pattern.matcher(maxCode); + if (matcher.matches()) { + String prefix = matcher.group(1); + String numStr = matcher.group(2); + long num = Long.parseLong(numStr) + 1; + add.setCustomerCode(prefix + String.format("%0" + numStr.length() + "d", num)); + } else { + add.setCustomerCode(maxCode + "1"); + } + } + } validEntityBeforeSave(add); boolean flag = baseMapper.insert(add) > 0; if (flag) { diff --git a/klp-crm/src/main/resources/mapper/CrmCustomerMapper.xml b/klp-crm/src/main/resources/mapper/CrmCustomerMapper.xml index 0d7f9832..f8cbc6e3 100644 --- a/klp-crm/src/main/resources/mapper/CrmCustomerMapper.xml +++ b/klp-crm/src/main/resources/mapper/CrmCustomerMapper.xml @@ -23,5 +23,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" +