From 14ad8ac7a6a5198acbfc74bed77fce312018191b Mon Sep 17 00:00:00 2001 From: "han\\hanst" Date: Thu, 26 Feb 2026 10:37:47 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=E5=AE=A2=E6=88=B7=E6=A8=A1?= =?UTF-8?q?=E7=89=88=E5=8F=A6=E5=AD=98=E4=B8=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ecss/controller/CoDelController.java | 21 +++++- .../modules/ecss/service/CoDelService.java | 7 ++ .../ecss/service/impl/CoDelServiceImpl.java | 67 ++++++++++++++++++- 3 files changed, 93 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/xujie/sys/modules/ecss/controller/CoDelController.java b/src/main/java/com/xujie/sys/modules/ecss/controller/CoDelController.java index 21dc5f92..47a629bc 100644 --- a/src/main/java/com/xujie/sys/modules/ecss/controller/CoDelController.java +++ b/src/main/java/com/xujie/sys/modules/ecss/controller/CoDelController.java @@ -685,7 +685,26 @@ public class CoDelController { coDelService.updateCustomerTemplate(params); return R.ok("客户模板更新成功"); } catch (Exception e) { - return R.error("客户模板更新失败:" + e.getMessage()); + String msg = e.getMessage() != null ? e.getMessage() : "未知错误"; + return R.error("客户模板更新失败:" + msg); + } + } + + /** + * @Author AI + * @Description 保存Excel导入页面的客户模板(与 codelnotify 的 updateCustomerTemplate 独立,避免共用) + * @Param [params] + * @return R + */ + @PostMapping("/saveExcelImportTemplate") + @ResponseBody + public R saveExcelImportTemplate(@RequestBody Map params) { + try { + coDelService.saveExcelImportTemplate(params); + return R.ok("客户模板保存成功"); + } catch (Exception e) { + String msg = e.getMessage() != null ? e.getMessage() : "未知错误"; + return R.error("客户模板保存失败:" + msg); } } diff --git a/src/main/java/com/xujie/sys/modules/ecss/service/CoDelService.java b/src/main/java/com/xujie/sys/modules/ecss/service/CoDelService.java index 227080bf..65469640 100644 --- a/src/main/java/com/xujie/sys/modules/ecss/service/CoDelService.java +++ b/src/main/java/com/xujie/sys/modules/ecss/service/CoDelService.java @@ -165,6 +165,13 @@ public interface CoDelService { void updateCustomerTemplate(Map params); + /** + * 保存Excel导入页面的客户模板(独立于 codelnotify 的 updateCustomerTemplate) + * + * @param params 包含模板信息的Map + */ + void saveExcelImportTemplate(Map params); + /** * @Description 根据site、buNo、partNo获取物料包装属性(每卷数量、每箱卷数、箱重量) * @param site 站点 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 ba8fac09..06d0f6c0 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 @@ -2669,6 +2669,70 @@ public class CoDelServiceImpl implements CoDelService { } } + /** + * 保存Excel导入页面的客户模板(与 codelnotify 的 updateCustomerTemplate 独立,避免共用同一方法导致空指针) + * + *

业务规则与 updateCustomerTemplate 相同,但入口独立,便于后续分别维护: + *

    + *
  • originalTemplateName 为空 → 新增或覆盖同名模板
  • + *
  • originalTemplateName 不为空且与 templateName 不同 → 另存为新模板
  • + *
  • originalTemplateName 不为空且与 templateName 相同 → 更新原模板
  • + *
+ * + * @param params 包含模板信息的Map(来自Excel导入预览页面行数据) + */ + @Override + public void saveExcelImportTemplate(Map params) { + String templateName = params.get("templateName") != null ? String.valueOf(params.get("templateName")).trim() : null; + String originalTemplateName = params.get("originalTemplateName") != null ? String.valueOf(params.get("originalTemplateName")).trim() : null; + String customerName = params.get("ccusname") != null ? String.valueOf(params.get("ccusname")).trim() : null; + + if (templateName == null || templateName.isEmpty()) { + throw new RuntimeException("模板名称不能为空"); + } + if (customerName == null || customerName.isEmpty()) { + throw new RuntimeException("客户名称不能为空"); + } + + boolean hasOriginalTemplate = originalTemplateName != null && !originalTemplateName.isEmpty(); + + try { + if (hasOriginalTemplate) { + Map originalTemplate = coDelMapper.getCustomerTemplateByName(originalTemplateName); + boolean nameChanged = !templateName.equals(originalTemplateName); + + if (nameChanged) { + Map targetTemplate = coDelMapper.getCustomerTemplateByName(templateName); + if (targetTemplate == null) { + createNewTemplate(params, customerName); + } else { + updateExistingTemplate(params, targetTemplate); + } + } else { + if (originalTemplate != null) { + updateExistingTemplate(params, originalTemplate); + } else { + log.warn("Excel导入保存模板:原模板[{}]不存在,将创建新模板", originalTemplateName); + createNewTemplate(params, customerName); + } + } + } else { + Map targetTemplate = coDelMapper.getCustomerTemplateByName(templateName); + if (targetTemplate == null) { + createNewTemplate(params, customerName); + } else { + updateExistingTemplate(params, targetTemplate); + } + } + } catch (RuntimeException e) { + throw e; + } catch (Exception e) { + log.error("Excel导入保存模板失败: templateName={}, originalTemplateName={}", templateName, originalTemplateName, e); + String msg = e.getMessage() != null ? e.getMessage() : "未知错误"; + throw new RuntimeException("Excel导入保存模板失败: " + msg); + } + } + /** * 创建新模板 * @@ -2706,7 +2770,8 @@ public class CoDelServiceImpl implements CoDelService { String existingTemplateNo = (String) existingTemplate.get("template_no"); String existingCcuscode = (String) existingTemplate.get("ccuscode"); - params.put("template_no", existingTemplateNo); + // XML 中 WHERE 条件是 #{templateNo}(camelCase),必须用 templateNo 作为 key + params.put("templateNo", existingTemplateNo); params.put("ccuscode", existingCcuscode != null ? existingCcuscode : ""); // 更新模板