From e1454a154718e20abbab36d0def4de9124a07254 Mon Sep 17 00:00:00 2001
From: lyfO_o <764716047@qq.com>
Date: 星期五, 11 六月 2021 12:03:26 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master

---
 src/main/java/com/nanometer/smartlab/util/EmailSend.java          |   69 +++++++++++++++++++++++
 src/main/java/com/nanometer/smartlab/email/EmailSendSchedule.java |   58 +++++++++++++++++++
 src/main/java/com/nanometer/smartlab/util/EmailConfigService.java |   13 ++++
 src/main/webapp/WEB-INF/config.properties                         |    3 +
 pom.xml                                                           |    6 +
 5 files changed, 148 insertions(+), 1 deletions(-)

diff --git a/pom.xml b/pom.xml
index c3ba94f..63e613a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -368,7 +368,11 @@
       <artifactId>mail</artifactId>
       <version>1.4.1</version>
     </dependency>
-
+    <dependency >
+      <groupId >com.sun.mail </groupId >
+      <artifactId >javax.mail </artifactId >
+      <version >1.6.0 </version >
+    </dependency >
     <dependency>
       <groupId>org.apache.poi</groupId>
       <artifactId>poi</artifactId>
diff --git a/src/main/java/com/nanometer/smartlab/email/EmailSendSchedule.java b/src/main/java/com/nanometer/smartlab/email/EmailSendSchedule.java
index a88d64c..25a3378 100644
--- a/src/main/java/com/nanometer/smartlab/email/EmailSendSchedule.java
+++ b/src/main/java/com/nanometer/smartlab/email/EmailSendSchedule.java
@@ -1,6 +1,7 @@
 package com.nanometer.smartlab.email;
 
 import com.nanometer.smartlab.entity.EmailStatus;
+import com.nanometer.smartlab.entity.SysReagent;
 import com.nanometer.smartlab.entity.enumtype.EmailSendStatus;
 import com.nanometer.smartlab.exception.BusinessException;
 import com.nanometer.smartlab.service.*;
@@ -11,6 +12,7 @@
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -56,4 +58,60 @@
             }
         }
     }
+
+
+//        @Scheduled(cron = "0/5 * * * * ?") //每隔5秒执行一次
+    @Scheduled(cron = "0 0 8 * * ?") //每天8点执行一次
+    public void EmailSendStock(){
+        List<String> revicerList = new ArrayList<>();
+
+        List<SysReagent> sysReagentList = new ArrayList<>();
+
+
+        StringBuffer content = new StringBuffer("<html><body>");
+        content.append("<div style=\"line-height:1.7;color:#000000;font-size:14px;font-family:Arial\">");
+        content.append("<table border=\"1\">");
+        content.append("<tbody>");
+        content.append("<tr>");
+        content.append("<th>试剂名称</th>");
+        content.append("<th>产品编号</th>");
+        content.append("<th>CAS</th>");
+        content.append("<th>试剂类型</th>");
+        content.append("<th>供应商</th>");
+        content.append("<th>厂家</th>");
+        content.append("<th>规格</th>");
+        content.append("<th>包装</th>");
+        content.append("<th>安全库存</th>");
+        content.append("<th>实际库存</th>");
+        content.append("</tr>");
+        for (SysReagent sysReagent : sysReagentList){
+            content.append("<tr>");
+            content.append("<td>"+sysReagent.getName()+"</td>");
+            content.append("<td>"+sysReagent.getProductSn()+"</td>");
+            content.append("<td>"+sysReagent.getCas()+"</td>");
+            content.append("<td>"+sysReagent.getReagentType()+"</td>");
+            content.append("<td>"+sysReagent.getSupplierName()+"</td>");
+            content.append("<td>"+sysReagent.getProductHomeName()+"</td>");
+            content.append("<td>"+sysReagent.getReagentFormat()+"</td>");
+            content.append("<td>"+sysReagent.getReagentUnit()+"</td>");
+            //content.append("<td>"+sysReagent+"</td>");安全库存
+            //content.append("<td>"+sysReagent+"</td>");实际库存
+            content.append("</tr>");
+        }
+        content.append("</tbody></table></div>");
+        content.append("</body></html>");
+
+        try {
+            EmailSend.sendArrivalEmail(revicerList,content.toString());
+            //  发送成功,更新邮件发送状态为:已发送
+        } catch (BusinessException e) {
+            //  发送失败,更新邮件发送状态为:发送失败
+            logger.warn("操作失败。", e);
+        } catch (Exception e) {
+            logger.error(e);
+        }
+    }
+
+
+
 }
diff --git a/src/main/java/com/nanometer/smartlab/util/EmailConfigService.java b/src/main/java/com/nanometer/smartlab/util/EmailConfigService.java
index 6181cbd..8ed8b25 100644
--- a/src/main/java/com/nanometer/smartlab/util/EmailConfigService.java
+++ b/src/main/java/com/nanometer/smartlab/util/EmailConfigService.java
@@ -19,6 +19,11 @@
 	@Value("${smtp.content}")
 	String smtpContent;
 
+	@Value("${zkysmtp.user}")
+	String zkySmtpUser;
+	@Value("${zkysmtp.pwd}")
+	String zkySmtpPwd;
+
 	public String getSmtpSubject() {
 		return smtpSubject;
 	}
@@ -42,4 +47,12 @@
 	public String getSmtpPwd() {
 		return smtpPwd;
 	}
+
+	public String getZkySmtpUser() {
+		return zkySmtpUser;
+	}
+
+	public String getZkySmtpPwd() {
+		return zkySmtpPwd;
+	}
 }
diff --git a/src/main/java/com/nanometer/smartlab/util/EmailSend.java b/src/main/java/com/nanometer/smartlab/util/EmailSend.java
index 1a20d2c..4eb6c29 100644
--- a/src/main/java/com/nanometer/smartlab/util/EmailSend.java
+++ b/src/main/java/com/nanometer/smartlab/util/EmailSend.java
@@ -12,8 +12,11 @@
 import javax.mail.internet.InternetAddress;
 import javax.mail.internet.MimeMessage;
 import java.text.MessageFormat;
+import java.text.SimpleDateFormat;
 import java.util.Date;
+import java.util.List;
 import java.util.Properties;
+import com.sun.mail.util.MailSSLSocketFactory;
 
 public class EmailSend {
 
@@ -74,5 +77,71 @@
             }
         }
     }
+
+
+    public static void sendArrivalEmail(List<String> revicerList, String msg){
+        EmailConfigService cs = SpringUtil.getBean("emailConfigService", EmailConfigService.class);
+        String sender = cs.getZkySmtpUser();/*发送人*/
+        String password = cs.getZkySmtpPwd();
+
+        String ZkySmtp = "smtp.cstnet.cn"; /*中科院邮件服务器*/
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        Properties prop = new Properties();
+        prop.setProperty("mail.host", ZkySmtp);
+        prop.setProperty("mail.transport.protocol", "smtp"); // 邮件发送协议
+        prop.setProperty("mail.smtp.auth", "true"); // 需要验证用户名密码
+        prop.setProperty("mail.smtp.port", "25");
+
+        MailSSLSocketFactory mailSSLSocketFactory = null;
+        try{
+            mailSSLSocketFactory = new MailSSLSocketFactory();
+            mailSSLSocketFactory.setTrustAllHosts(true);
+        }catch (Exception e){
+            logger.error("邮件开启 MailSSLSocketFactory 失败:"+e.getMessage());
+        }
+
+        if (mailSSLSocketFactory != null) {
+
+            prop.put("mail.smtp.ssl.enable", false);
+            prop.put("mail.smtp.ssl.socketFactory", mailSSLSocketFactory);
+            //创建定义整个应用程序所需的环境信息的 Session 对象
+            Session session = Session.getDefaultInstance(prop, new Authenticator() {
+                public PasswordAuthentication getPasswordAuthentication() {
+                    //发件人邮件用户名、授权码
+                    return new PasswordAuthentication(sender, password);
+                }
+            });
+
+            for (String revicer : revicerList) {
+                try {
+                    //2、通过session得到transport对象
+                    Transport ts = session.getTransport();
+                    //3、使用邮箱的用户名和授权码连上邮件服务器
+                    ts.connect(sender, password);
+                    try {
+                        //4、创建邮件
+                        //创建邮件对象
+                        MimeMessage message = new MimeMessage(session);
+                        //指明邮件的发件人
+                        message.setFrom(new InternetAddress(sender));
+                        //指明邮件的收件人
+                        message.setRecipient(Message.RecipientType.TO, new InternetAddress(revicer));
+                        //邮件的标题
+                        message.setSubject(sdf.format(new Date())+"-待补货试剂");
+                        //邮件的文本内容
+                        message.setContent(msg, "text/html;charset=UTF-8");
+                        //5、发送邮件
+                        ts.sendMessage(message, message.getAllRecipients());
+                    } catch (Exception e) {
+                        logger.error("邮件发送" + "失败:" + e.getMessage());
+                    }
+                    ts.close();
+                } catch (Exception e) {
+                    logger.error("邮件发送失败:" + e.getMessage());
+                }
+            }
+        }
+        logger.error("邮件发送完成" + "时间:" + sdf.format(new Date()));
+    }
 }
 
diff --git a/src/main/webapp/WEB-INF/config.properties b/src/main/webapp/WEB-INF/config.properties
index 3c2647e..21165d9 100644
--- a/src/main/webapp/WEB-INF/config.properties
+++ b/src/main/webapp/WEB-INF/config.properties
@@ -35,6 +35,9 @@
 smtp.from=
 smtp.subject=
 smtp.content=
+
+zkysmtp.user=xlli2020@sinano.ac.cn
+zkysmtp.pwd=Forever*#15
 #\u8C03\u7528\u7C7B EmailSendSchedule \u7535\u5B50\u90AE\u4EF6\u53D1\u9001\u8BA1\u5212(\u5355\u4F4D\u6BEB\u79D2)
 emailSend.schedule.delay=60000
 

--
Gitblit v1.9.2