From 8183a403dba87494602f2ebf7fa7e0a3d470136f Mon Sep 17 00:00:00 2001 From: "han\\hanst" Date: Wed, 1 Apr 2026 10:01:33 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A1=E5=88=92=E5=91=98=E5=8F=AF=E8=83=BD?= =?UTF-8?q?=E4=BC=9A=E6=9C=89=E7=AC=AC=E4=BA=8C=E4=B8=AA=E9=82=AE=E7=AE=B1?= =?UTF-8?q?=EF=BC=8Cemail2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ErfExpApplyServiceImpl.java | 38 ++++++++++++++++--- .../sys/modules/sys/dto/UserEmailInfoDto.java | 15 +++++--- src/main/resources/mapper/sys/SysUserDao.xml | 2 +- 3 files changed, 43 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/xujie/sys/modules/erf/service/impl/ErfExpApplyServiceImpl.java b/src/main/java/com/xujie/sys/modules/erf/service/impl/ErfExpApplyServiceImpl.java index eefe6c3b..ed291cdd 100644 --- a/src/main/java/com/xujie/sys/modules/erf/service/impl/ErfExpApplyServiceImpl.java +++ b/src/main/java/com/xujie/sys/modules/erf/service/impl/ErfExpApplyServiceImpl.java @@ -2060,9 +2060,11 @@ public class ErfExpApplyServiceImpl extends ServiceImpl plannerEmails = new LinkedHashSet<>(); + appendEmailRecipients(plannerEmails, planner.getEmail()); + appendEmailRecipients(plannerEmails, planner.getEmail2()); + if (plannerEmails.isEmpty()) { + log.warn("计划员 {} 未配置邮箱(email/email2),跳过下达邮件通知", planner.getUsername()); continue; } @@ -2074,10 +2076,11 @@ public class ErfExpApplyServiceImpl extends ServiceImpl"; - MailUtil.sendMail(subject, body, new String[]{plannerEmail}, mailSendData); - successEmails.add(plannerEmail); + String[] recipients = plannerEmails.toArray(new String[0]); + MailUtil.sendMail(subject, body, recipients, mailSendData); + successEmails.addAll(plannerEmails); log.info("已向计划员 {} ({}) 发送下达通知邮件,试验单: {}", - planner.getUsername(), plannerEmail, entity.getApplyNo()); + planner.getUsername(), String.join(";", plannerEmails), entity.getApplyNo()); } catch (Exception e) { log.error("向计划员ID {} 发送邮件失败: {}", plannerId, e.getMessage()); } @@ -2097,6 +2100,29 @@ public class ErfExpApplyServiceImpl extends ServiceImpl recipientSet, String rawEmails) { + if (recipientSet == null || rawEmails == null) { + return; + } + String normalizedRaw = rawEmails.trim(); + if (normalizedRaw.isEmpty()) { + return; + } + String[] emailArray = normalizedRaw.split("[,,;;、\\s]+"); + for (String email : emailArray) { + if (email == null) { + continue; + } + String normalizedEmail = email.trim(); + if (!normalizedEmail.isEmpty()) { + recipientSet.add(normalizedEmail); + } + } + } + /** * 经理层审批全部通过后(进入计划员排产节点时)通知试验负责人:其负责的试验申请单已审批通过 */ diff --git a/src/main/java/com/xujie/sys/modules/sys/dto/UserEmailInfoDto.java b/src/main/java/com/xujie/sys/modules/sys/dto/UserEmailInfoDto.java index 027bf60f..4d1763c6 100644 --- a/src/main/java/com/xujie/sys/modules/sys/dto/UserEmailInfoDto.java +++ b/src/main/java/com/xujie/sys/modules/sys/dto/UserEmailInfoDto.java @@ -4,27 +4,32 @@ import lombok.Data; /** * 用户邮件信息DTO - * + * *

用于查询用户的基本信息和邮箱

- * + * * @author System * @since 2026-02-04 */ @Data public class UserEmailInfoDto { - + /** * 用户ID */ private Long userId; - + /** * 用户名 */ private String username; - + /** * 用户邮箱 */ private String email; + + /** + * 用户备用邮箱 + */ + private String email2; } diff --git a/src/main/resources/mapper/sys/SysUserDao.xml b/src/main/resources/mapper/sys/SysUserDao.xml index f6439462..0037dc5c 100644 --- a/src/main/resources/mapper/sys/SysUserDao.xml +++ b/src/main/resources/mapper/sys/SysUserDao.xml @@ -102,7 +102,7 @@