Browse Source

模版

master
han\hanst 2 weeks ago
parent
commit
b2242d5a16
  1. 118
      src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelServiceImpl.java

118
src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelServiceImpl.java

@ -2586,28 +2586,96 @@ public class CoDelServiceImpl implements CoDelService {
return coDelMapper.getCustomerTemplateList(params);
}
/**
* 更新或创建客户模板
*
* <p><b>逻辑说明</b></p>
* <ul>
* <li>originalTemplateName为空表示新增模板或更新同名模板
* <ul>
* <li>如果templateName已存在 更新该模板</li>
* <li>如果templateName不存在 创建新模板</li>
* </ul>
* </li>
* <li>originalTemplateName不为空表示基于原模板修改
* <ul>
* <li>如果originalTemplateName != templateName 另存为新模板</li>
* <li>如果originalTemplateName == templateName 更新原模板</li>
* </ul>
* </li>
* </ul>
*
* @param params 包含模板信息的Map
*/
@Override
public void updateCustomerTemplate(Map<String, Object> 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<String, Object> originalTemplate = coDelMapper.getCustomerTemplateByName(originalTemplateName);
Map<String, Object> targetTemplate = null;
Map<String, Object> originalTemplate = null;
// 判断是否为纯新增场景
boolean isNewTemplate = originalTemplate == null;
try {
if (hasOriginalTemplate) {
// 场景1基于原模板修改来自双击选择模板后的操作
// 获取原始模板信息
originalTemplate = coDelMapper.getCustomerTemplateByName(originalTemplateName);
// 判断模板名称是否发生变化
boolean nameChanged = !templateName.equals(originalTemplateName);
if (isNewTemplate || nameChanged) {
// 纯新增或模板名称变化创建新模板
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());
}
}
/**
* 创建新模板
*
* @param params 模板参数
* @param customerName 客户名称
*/
private void createNewTemplate(Map<String, Object> params, String customerName) {
// 1. 根据客户名称获取客户编码
String customerCode = null;
if (customerName != null && !customerName.trim().isEmpty()) {
@ -2618,16 +2686,34 @@ public class CoDelServiceImpl implements CoDelService {
// 2. 生成新的template_no
String maxTemplateNo = coDelMapper.getMaxTemplateNo();
String newTemplateNo = generateNextTemplateNo(maxTemplateNo);
// 3. 设置新的template_no
params.put("template_no", newTemplateNo);
// 4. 插入新模板
// 3. 插入新模板
coDelMapper.insertCustomerTemplate(params);
} else {
// 模板名称未变化直接更新
coDelMapper.updateCustomerTemplate(params);
log.info("创建新模板成功: templateName={}, template_no={}",
params.get("templateName"), newTemplateNo);
}
/**
* 更新已存在的模板
*
* @param params 模板参数
* @param existingTemplate 已存在的模板信息
*/
private void updateExistingTemplate(Map<String, Object> params, Map<String, Object> existingTemplate) {
// 保留原有的template_no和ccuscode
String existingTemplateNo = (String) existingTemplate.get("template_no");
String existingCcuscode = (String) existingTemplate.get("ccuscode");
params.put("template_no", existingTemplateNo);
params.put("ccuscode", existingCcuscode != null ? existingCcuscode : "");
// 更新模板
coDelMapper.updateCustomerTemplate(params);
log.info("更新模板成功: templateName={}, template_no={}",
params.get("templateName"), existingTemplateNo);
}
/**

Loading…
Cancel
Save