fix: 优化工单创建的邮件发送逻辑

This commit is contained in:
曹鹏飞 2025-05-08 16:37:51 +08:00
parent a5ef6c9bc6
commit 540e781056
1 changed files with 15 additions and 10 deletions

View File

@ -19,7 +19,10 @@ import org.springframework.context.ApplicationEvent;
import javax.mail.MessagingException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@Slf4j
public class TicketCreateEvent extends ApplicationEvent implements ApplicationContextAware {
@ -93,30 +96,32 @@ public class TicketCreateEvent extends ApplicationEvent implements ApplicationCo
.replace("${handleUser}","")
.replace("${createTime}",toTimeString(ticket.getCreateTime()))
.replace("${msg}",subject);
List<AdminUser> adminUsers =new ArrayList<>();
//发给所属CQM负责人
List<Integer> cqms=deviceTypeService.getCqmsByDeviceType(ticket.getDeviceNo());
if (CollectionUtil.isNotEmpty(cqms)){
sendEmail(adminUserService.listByIds(cqms),subject,content);
adminUsers.addAll(adminUserService.listByIds(cqms));
}
//发给事业部部长
sendEmail(adminUserService.getByTitleCode(Constant.TITLE_DIRECTOROF_BUSINESS_UNIT),subject,content);
adminUsers.addAll(adminUserService.getByTitleCode(Constant.TITLE_DIRECTOROF_BUSINESS_UNIT));
//发给技术主管
sendEmail(adminUserService.getByTitleCode(Constant.TITLE_TECHNICAL_MANAGER),subject,content);
adminUsers.addAll(adminUserService.getByTitleCode(Constant.TITLE_TECHNICAL_MANAGER));
//发给售后主管
sendEmail(adminUserService.getByTitleCode(Constant.TITLE_SALES_MANAGER),subject,content);
adminUsers.addAll(adminUserService.getByTitleCode(Constant.TITLE_SALES_MANAGER));
//发给测试主管
sendEmail(adminUserService.getByTitleCode(Constant.TITLE_TEST_MANAGER),subject,content);
adminUsers.addAll(adminUserService.getByTitleCode(Constant.TITLE_TEST_MANAGER));
//发给质量主管
sendEmail(adminUserService.getByTitleCode(Constant.TITLE_QUALITY_MANAGER),subject,content);
adminUsers.addAll(adminUserService.getByTitleCode(Constant.TITLE_QUALITY_MANAGER));
sendEmail(adminUsers.stream().map(AdminUser::getEmail).collect(Collectors.toSet()), subject,content);
}catch (Exception ex){
log.error("邮件发送失败",ex);
}
}
private void sendEmail(List<AdminUser> adminUsers,String subject,String content) throws MessagingException {
if (CollectionUtil.isNotEmpty(adminUsers)){
for (AdminUser adminUser:adminUsers) {
emailService.sendEmail(adminUser.getEmail(),subject,content);
private void sendEmail(Set<String> emails, String subject, String content) throws MessagingException {
if (CollectionUtil.isNotEmpty(emails)){
for (String email:emails) {
emailService.sendEmail(email,subject,content);
}
}
}