EmailService.java
4.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
package com.ruoyi.service;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.email.domain.EmailConfig;
import com.ruoyi.email.service.IEmailConfigService;
import com.ruoyi.domain.DriverScheduling;
import com.ruoyi.utils.ConstDateUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import javax.mail.internet.MimeMessage;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* 发送邮箱服务
*
* @author 20412
*/
@Service
public class EmailService {
@Autowired
private JavaMailSender javaMailSender;
@Autowired
private IEmailConfigService emailConfigService;
private static final Logger log = LoggerFactory.getLogger(EmailService.class);
@Value("${spring.mail.form}")
private String from;
@Value("${spring.mail.nickname}")
private String name;
public void sendWarningEmail(DriverScheduling item, Date signTime, BigDecimal alcoholIntake) {
// TODO 支持发送多人 读取配置文件选着发送对象
List<EmailConfig> emailConfigs = emailConfigService.selectRecipientsEmailConfigList();
for (EmailConfig config : emailConfigs) {
String recipientEmail = config.getEmail().trim();
List<String> emails = getRecipientsEmailIds(config);
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
try {
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
mimeMessageHelper.setFrom(from,name);
mimeMessageHelper.setTo(recipientEmail);
mimeMessageHelper.setSubject("重要警示:酒精测试通知");
if (!Objects.isNull(emails)) mimeMessageHelper.setCc(emails.toArray(new String[0]));
String jobCode = "工号:" + item.getJobCode() + "\n";
String name = "姓名:" + item.getName() + "\n";
String posts = "工种:" + item.getPosts() + "\n";
String fleetName = "车队:" + item.getFleetName() + "\n";
String scheduling = "排班:" + (Objects.isNull(item.getScheduleDate()) ? "无排班" : "有排班") + "\n";
String signDate = "打卡时间:" + ConstDateUtil.formatDate("yyyy-MM-dd HH:mm:ss", signTime) + "\n";
String cause = "原因:酒精测试超标,当前测试值达到" + alcoholIntake.toString() + "mg/100ml。属于" + getResultString(alcoholIntake);
String content = jobCode + name + posts + fleetName + scheduling + signDate + cause;
mimeMessageHelper.setText(content);
javaMailSender.send(mimeMessage);
log.info("发送给:" + recipientEmail + "邮件发送成功");
} catch (Exception e) {
log.info("发送给:" + recipientEmail + "邮件发送失败");
log.error(e.getMessage());
}
}
}
private List<String> getRecipientsEmailIds(EmailConfig config) {
if (StringUtils.isNotEmpty(config.getParentId())){
return emailConfigService
.selectEmailConfigListByIds(Arrays.stream(config.getParentId()
.split(","))
.map(Long::parseLong)
.collect(Collectors.toList()))
.stream()
.map(EmailConfig::getEmail)
.collect(Collectors.toList());
}
return null;
}
private String getResultString(BigDecimal alcoholIntake) {
if (alcoholIntake.compareTo(new BigDecimal(20)) >= 0 && alcoholIntake.compareTo(new BigDecimal(80)) < 0)
return "饮酒后驾驶机动车";
else
return "醉酒后驾驶机动车";
}
}