From 216e8022878bfb24c16612ea516280877755b521 Mon Sep 17 00:00:00 2001 From: "han\\hanst" Date: Mon, 22 Dec 2025 10:24:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E6=A8=A1=E6=9D=BF=E5=90=8D?= =?UTF-8?q?=E7=A7=B0=E6=9C=89=E4=BF=AE=E6=94=B9=EF=BC=8C=E7=82=B9"?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E6=A8=A1=E6=9D=BF"=E4=BC=9A=E5=8F=A6?= =?UTF-8?q?=E5=AD=98=E4=B8=BA=E6=96=B0=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sys/modules/ecss/mapper/CoDelMapper.java | 19 +++++- .../ecss/service/impl/CoDelServiceImpl.java | 64 ++++++++++++++++++- 2 files changed, 81 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/xujie/sys/modules/ecss/mapper/CoDelMapper.java b/src/main/java/com/xujie/sys/modules/ecss/mapper/CoDelMapper.java index 2fa84b0b..39e07f21 100644 --- a/src/main/java/com/xujie/sys/modules/ecss/mapper/CoDelMapper.java +++ b/src/main/java/com/xujie/sys/modules/ecss/mapper/CoDelMapper.java @@ -12,6 +12,8 @@ import com.xujie.sys.modules.sys.entity.SysUserEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Update; +import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Insert; import java.util.List; import java.util.Map; @@ -273,7 +275,22 @@ public interface CoDelMapper { // 获取客户模板列表 List> getCustomerTemplateList(Map params); - // 更新客户模板 + // 根据模板名称获取客户模板信息 + @Select("SELECT * FROM ecss_Customer_template WHERE template_name = #{templateName}") + Map getCustomerTemplateByName(@Param("templateName") String templateName); + + // 获取最大的template_no(用于生成新的template_no) + @Select("SELECT TOP 1 template_no FROM ecss_Customer_template ORDER BY template_no DESC") + String getMaxTemplateNo(); + + // 插入新的客户模板(模板名称变化时使用) + @Insert("INSERT INTO ecss_Customer_template (template_no, template_name,ccuscode, ccusname, localShipAddress, " + + "overseasShipper, overseasAddress, cnative, salesArea) " + + "VALUES (#{template_no}, #{templateName},#{ccuscode}, #{ccusname}, #{localShipAddress}, " + + "#{overseasShipper}, #{overseasAddress}, #{cnative}, #{salesArea})") + void insertCustomerTemplate(Map params); + + // 更新客户模板(保留原方法签名以兼容) void updateCustomerTemplate(Map params); // ========== 物料包装属性导入相关方法 ========== diff --git a/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelServiceImpl.java b/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelServiceImpl.java index 47ce6473..32f25153 100644 --- a/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelServiceImpl.java +++ b/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelServiceImpl.java @@ -2338,7 +2338,69 @@ public class CoDelServiceImpl implements CoDelService { @Override public void updateCustomerTemplate(Map params) { - coDelMapper.updateCustomerTemplate(params); + String templateName = (String) params.get("templateName"); + String originalTemplateName = (String) params.get("originalTemplateName"); + + // 如果没有传入原始模板名称,则认为是更新当前模板 + if (originalTemplateName == null || originalTemplateName.trim().isEmpty()) { + originalTemplateName = templateName; + } + + // 获取原始模板信息 + Map originalTemplate = coDelMapper.getCustomerTemplateByName(originalTemplateName); + + if (originalTemplate == null) { + throw new RuntimeException("原始模板不存在:" + originalTemplateName); + } + + // 判断模板名称是否发生变化 + boolean nameChanged = !templateName.equals(originalTemplateName); + + if (nameChanged) { + // 模板名称变化,创建新模板 + // 1. 生成新的template_no + String maxTemplateNo = coDelMapper.getMaxTemplateNo(); + String newTemplateNo = generateNextTemplateNo(maxTemplateNo); + + // 2. 设置新的template_no + params.put("template_no", newTemplateNo); + + // 3. 插入新模板 + coDelMapper.insertCustomerTemplate(params); + } else { + // 模板名称未变化,直接更新 + coDelMapper.updateCustomerTemplate(params); + } + } + + /** + * 生成下一个template_no + * 例如:TP0036 -> TP0037 + * + * @param currentMaxNo 当前最大的template_no + * @return 新的template_no + */ + private String generateNextTemplateNo(String currentMaxNo) { + if (currentMaxNo == null || currentMaxNo.trim().isEmpty()) { + // 如果没有现有记录,从TP0001开始 + return "TP0001"; + } + + try { + // 提取数字部分(假设格式为 TP0036) + String prefix = currentMaxNo.substring(0, 2); // "TP" + String numberPart = currentMaxNo.substring(2); // "0036" + + // 转换为整数并加1 + int nextNumber = Integer.parseInt(numberPart) + 1; + + // 格式化为固定长度(保持前导零) + String newNumberPart = String.format("%0" + numberPart.length() + "d", nextNumber); + + return prefix + newNumberPart; + } catch (Exception e) { + throw new RuntimeException("生成新的template_no失败,当前最大值:" + currentMaxNo, e); + } } /**