From b2242d5a169666e2edda7ed95b9ba51cd9808e14 Mon Sep 17 00:00:00 2001 From: "han\\hanst" Date: Tue, 10 Feb 2026 11:12:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A8=A1=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ecss/service/impl/CoDelServiceImpl.java | 142 ++++++++++++++---- 1 file changed, 114 insertions(+), 28 deletions(-) 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 6ba7d4e8..ba8fac09 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 @@ -2586,48 +2586,134 @@ public class CoDelServiceImpl implements CoDelService { return coDelMapper.getCustomerTemplateList(params); } + /** + * 更新或创建客户模板 + * + *

逻辑说明:

+ * + * + * @param params 包含模板信息的Map + */ @Override public void updateCustomerTemplate(Map params) { String templateName = (String) params.get("templateName"); String originalTemplateName = (String) params.get("originalTemplateName"); String customerName = (String) params.get("ccusname"); - // 如果没有传入原始模板名称,则认为是更新当前模板 - if (originalTemplateName == null || originalTemplateName.trim().isEmpty()) { - originalTemplateName = templateName; + // 判断是否传入了原始模板名称 + boolean hasOriginalTemplate = originalTemplateName != null && !originalTemplateName.trim().isEmpty(); + + Map targetTemplate = null; + Map originalTemplate = null; + + try { + if (hasOriginalTemplate) { + // 场景1:基于原模板修改(来自双击选择模板后的操作) + // 获取原始模板信息 + originalTemplate = coDelMapper.getCustomerTemplateByName(originalTemplateName); + + // 判断模板名称是否发生变化 + boolean nameChanged = !templateName.equals(originalTemplateName); + + if (nameChanged) { + // 模板名称变化,另存为新模板 + // 检查新模板名是否已存在 + targetTemplate = coDelMapper.getCustomerTemplateByName(templateName); + if (targetTemplate == null) { + // 新模板名不存在,创建新模板 + createNewTemplate(params, customerName); + } else { + // 新模板名已存在,更新该模板 + updateExistingTemplate(params, targetTemplate); + } + } else { + // 模板名称未变化,更新原模板 + if (originalTemplate != null) { + updateExistingTemplate(params, originalTemplate); + } else { + // 原模板不存在(异常情况),创建新模板 + log.warn("原模板[{}]不存在,将创建新模板", originalTemplateName); + createNewTemplate(params, customerName); + } + } + } else { + // 场景2:直接输入模板名(来自手动输入模板名的操作) + // 查询该模板名是否已存在 + targetTemplate = coDelMapper.getCustomerTemplateByName(templateName); + + if (targetTemplate == null) { + // 模板不存在,创建新模板 + createNewTemplate(params, customerName); + } else { + // 模板已存在,更新该模板 + updateExistingTemplate(params, targetTemplate); + } + } + } catch (Exception e) { + log.error("更新客户模板失败: templateName={}, originalTemplateName={}", + templateName, originalTemplateName, e); + throw new RuntimeException("更新客户模板失败: " + e.getMessage()); } + } - // 获取原始模板信息 - Map originalTemplate = coDelMapper.getCustomerTemplateByName(originalTemplateName); + /** + * 创建新模板 + * + * @param params 模板参数 + * @param customerName 客户名称 + */ + private void createNewTemplate(Map params, String customerName) { + // 1. 根据客户名称获取客户编码 + String customerCode = null; + if (customerName != null && !customerName.trim().isEmpty()) { + customerCode = coDelMapper.getCustomerCodeByName(customerName); + } + params.put("ccuscode", customerCode != null ? customerCode : ""); - // 判断是否为纯新增场景 - boolean isNewTemplate = originalTemplate == null; + // 2. 生成新的template_no + String maxTemplateNo = coDelMapper.getMaxTemplateNo(); + String newTemplateNo = generateNextTemplateNo(maxTemplateNo); + params.put("template_no", newTemplateNo); - // 判断模板名称是否发生变化 - boolean nameChanged = !templateName.equals(originalTemplateName); + // 3. 插入新模板 + coDelMapper.insertCustomerTemplate(params); - if (isNewTemplate || nameChanged) { - // 纯新增或模板名称变化,创建新模板 - // 1. 根据客户名称获取客户编码 - String customerCode = null; - if (customerName != null && !customerName.trim().isEmpty()) { - customerCode = coDelMapper.getCustomerCodeByName(customerName); - } - params.put("ccuscode", customerCode != null ? customerCode : ""); + log.info("创建新模板成功: templateName={}, template_no={}", + params.get("templateName"), newTemplateNo); + } + + /** + * 更新已存在的模板 + * + * @param params 模板参数 + * @param existingTemplate 已存在的模板信息 + */ + private void updateExistingTemplate(Map params, Map existingTemplate) { + // 保留原有的template_no和ccuscode + String existingTemplateNo = (String) existingTemplate.get("template_no"); + String existingCcuscode = (String) existingTemplate.get("ccuscode"); - // 2. 生成新的template_no - String maxTemplateNo = coDelMapper.getMaxTemplateNo(); - String newTemplateNo = generateNextTemplateNo(maxTemplateNo); + params.put("template_no", existingTemplateNo); + params.put("ccuscode", existingCcuscode != null ? existingCcuscode : ""); - // 3. 设置新的template_no - params.put("template_no", newTemplateNo); + // 更新模板 + coDelMapper.updateCustomerTemplate(params); - // 4. 插入新模板 - coDelMapper.insertCustomerTemplate(params); - } else { - // 模板名称未变化,直接更新 - coDelMapper.updateCustomerTemplate(params); - } + log.info("更新模板成功: templateName={}, template_no={}", + params.get("templateName"), existingTemplateNo); } /**