فهرست منبع

LY 专项培训

ly 3 سال پیش
والد
کامیت
13d410025c

+ 85 - 0
master/src/main/java/com/ruoyi/common/thread/Trainning/PlanApproveMailThead.java

@@ -0,0 +1,85 @@
+package com.ruoyi.common.thread.Trainning;
+
+import com.ruoyi.common.sendEmail.IMailService;
+import com.ruoyi.project.training.spec.domain.TStApprove;
+
+import java.util.Date;
+
+public class PlanApproveMailThead implements Runnable {
+    private IMailService mailService;
+
+    private String email;
+    private String apNo;
+
+    private String username;
+    private String usernameEN;
+    private TStApprove tApprove;
+    private String sendType;
+
+    public PlanApproveMailThead(String email, String apNo, String username, String usernameEN, IMailService mailService, TStApprove tApprove, String sendType) {
+        this.email = email;
+        this.apNo = apNo;
+        this.username = username;
+        this.usernameEN = usernameEN;
+        this.mailService = mailService;
+        this.tApprove = tApprove;
+        this.sendType = sendType;
+    }
+    /*
+     * 发送邮件
+     */
+    @Override
+    public void run() {
+        addApprove();
+    }
+
+    /*
+     * 发送年度邮件
+     */
+    public void addApprove() {
+        String devType = "";
+        String devTypeEN = "";
+        String approveType = "培养计划审核";
+        String approveTypeEN = "Training plan review";
+        //写html开始内容
+        String start = "<!DOCTYPE html><html><head><meta charset=\"utf-8\"><title></title></head><body><div style=\"background-color:#ECECEC; padding: 35px;\">" +
+                "<table cellpadding=\"0\" align=\"center\"" +
+                "style=\"width: 600px; margin: 0px auto; text-align: left; position: relative; border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; font-size: 14px; font-family:微软雅黑, 黑体; line-height: 1.5; box-shadow: rgb(153, 153, 153) 0px 0px 5px; border-collapse: collapse; background-position: initial initial; background-repeat: initial initial;background:#fff;\">" +
+                "<tbody><tr><th valign=\"middle\" style=\"height: 25px; line-height: 25px; padding: 15px 35px; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #42a3d3; background-color: #49bcff; border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px;\">" +
+                "<font face=\"微软雅黑\" size=\"5\" style=\"color: rgb(255, 255, 255); \">CPMS管理系统 </font><font face=\"微软雅黑\" size=\"3\" style=\"color: rgb(255, 255, 255); \">CPMS System</font></th></tr>";
+        //表html中间内容
+        String prime = "";
+        String center = "<tr><td><div style=\"padding:25px 35px 40px; background-color:#fff;\"><h2 style=\"margin: 5px 0px; \">" +
+                "<font color=\"#333333\" style=\"line-height: 20px; \"><font style=\"line-height: 22px; \" size=\"4\">" +
+                "亲爱的 username</font><br><font style=\"line-height: 22px; \" size=\"4\">" +
+                "Dear usernameEN</font></font></h2>" +
+                "<p>您有一个新的待办任务:<br>" +
+                "You have a new to-do task:<br>" +
+                "任务编号:<b>apNo</b><br>" +
+                "Task Number: <b>apNoEN</b><br>" +
+                "审批类型:<b>approveType</b><br>" +
+                "Application Category: <b>approveTypeEN</b><br>" +
+                "请登录<a href=\"https://cpms.basf-ypc.net.cn/cpms/index.html#/approve/pending\">CPMS管理系统</a>查看。<br>" +
+                "Please log in the <a href=\"https://cpms.basf-ypc.net.cn/cpms/index.html#/approve/pending\">CPMS</a> to handle it.</p>" +
+                "<p align=\"right\">date</p>" +
+                "<div style=\"width:700px;margin:0 auto;\">" +
+                "<div style=\"padding:10px 10px 0;border-top:1px solid #ccc;color:#747474;margin-bottom:20px;line-height:1.3em;font-size:12px;\">" +
+                "<p>此为系统邮件,请勿回复<br>This e-Mail is an automatic reminder sent by CPMS, please do not reply</p>" +
+                "</div></div></div></td></tr>";
+        String one = center.replaceFirst("username", username);
+        String two = one.replaceFirst("usernameEN", usernameEN);
+        String three = two.replaceFirst("devType", devType);
+        String four = three.replaceFirst("apNo", apNo);
+        String five = four.replaceFirst("apNoEN", apNo);
+        String six = five.replaceFirst("devTypeEN", devTypeEN);
+        String seven = six.replaceFirst("approveType", approveType);
+        String eight = seven.replaceFirst("approveTypeEN", approveTypeEN);
+        String result = eight.replaceFirst("date", String.valueOf(new Date()));
+        prime = prime + result;
+        //写html结尾内容
+        String end = "</tbody></table></div></body></html>";
+        //拼接html
+        String html = start + prime + end;
+        mailService.sendHtmlMail(email, "CPMS:您有一个新的待办任务 CPMS:You have a new to-do task (" + apNo + ")", html);
+    }
+}

+ 27 - 0
master/src/main/java/com/ruoyi/project/training/spec/controller/TStApproveController.java

@@ -4,10 +4,16 @@ import java.text.SimpleDateFormat;
 import java.util.*;
 
 import com.alibaba.fastjson.JSON;
+import com.github.stuxuhai.jpinyin.PinyinFormat;
+import com.github.stuxuhai.jpinyin.PinyinHelper;
+import com.ruoyi.common.sendEmail.IMailService;
+import com.ruoyi.common.thread.SendEmailThead;
+import com.ruoyi.common.thread.Trainning.PlanApproveMailThead;
 import com.ruoyi.project.approve.damain.DevTask;
 import com.ruoyi.project.listener.monthSemsApprove.*;
 import com.ruoyi.project.sems.domain.*;
 import com.ruoyi.project.sems.his.domain.*;
+import com.ruoyi.project.system.mapper.SysUserMapper;
 import com.ruoyi.project.training.spec.domain.TStPlan;
 import com.ruoyi.project.training.spec.domain.TStYearplan;
 import com.ruoyi.project.training.spec.service.ITStPlanService;
@@ -36,6 +42,8 @@ import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.web.page.TableDataInfo;
 
+import javax.annotation.Resource;
+
 /**
  * 专项培训计划申请Controller
  *
@@ -58,6 +66,11 @@ public class TStApproveController extends BaseController
     private ITStPlanService tStPlanService;
     @Autowired
     private ITStYearplanService tStYearplanService;
+    @Resource
+    private SysUserMapper sysUserMapper;
+    @Autowired
+    private IMailService mailService;
+
     /**
      * 查询专项培训计划申请列表
      */
@@ -135,6 +148,20 @@ public class TStApproveController extends BaseController
         logger.info("流程定义对象:" + pi.getProcessVariables());
         tStApprove.setProcessId(pi.getProcessInstanceId());
         tStApproveService.updateTStApprove(tStApprove);
+        //发送邮件
+        try {
+            String email = sysUserMapper.selectUserById(tStApprove.getZzjl()).getEmail();
+            String apNo = tStApprove.getApNo();
+            String username = sysUserMapper.selectUserById(tStApprove.getZzjl()).getNickName();
+            String usernameEN = PinyinHelper.convertToPinyinString(username, " ", PinyinFormat.WITHOUT_TONE);
+            logger.info("email:" + email);
+            logger.info("username:" + username);
+            PlanApproveMailThead sendEmailThead = new PlanApproveMailThead(email,apNo, username,usernameEN, mailService, tStApprove, "");
+            Thread t = new Thread(sendEmailThead);
+            t.start();
+        }catch (Exception e) {
+            logger.error("邮件发送失败" + JSON.toJSONString(e));
+        }
         return AjaxResult.success();
     }
 

+ 11 - 0
master/src/main/java/com/ruoyi/project/training/spec/controller/TStYearplanController.java

@@ -5,6 +5,8 @@ import java.util.List;
 import com.ruoyi.project.system.domain.SysUser;
 import com.ruoyi.project.system.service.ISysUserService;
 import com.ruoyi.project.training.spec.domain.TStFeedback;
+import com.ruoyi.project.training.spec.mapper.TStPlanMapper;
+import com.ruoyi.project.training.spec.mapper.TStYearplanMapper;
 import com.ruoyi.project.training.spec.service.ITStFeedbackService;
 import com.ruoyi.project.training.spec.service.ITStSuccessorService;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -26,6 +28,8 @@ import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.web.page.TableDataInfo;
 
+import javax.annotation.Resource;
+
 /**
  * 专项培训年度计划Controller
  *
@@ -48,6 +52,9 @@ public class TStYearplanController extends BaseController
     @Autowired
     private ITStFeedbackService feedbackService;
 
+    @Resource
+    private TStYearplanMapper tStYearplanMapper;
+
     /**
      * 查询专项培训年度计划列表
      */
@@ -95,6 +102,10 @@ public class TStYearplanController extends BaseController
     @PostMapping
     public AjaxResult add(@RequestBody TStYearplan tStYearplan)
     {
+        List<TStYearplan> plantExistList = tStYearplanMapper.selectTStYearPlanExist(tStYearplan);
+        if (plantExistList.size() != 0) {
+            return AjaxResult.error("无法新增,当前数据已存在");
+        }
         // 王子文 2022年4月28日 修改
         Long planYear = tStYearplan.getPlanYear();
         String staffId = tStYearplan.getStaffId();

+ 2 - 0
master/src/main/java/com/ruoyi/project/training/spec/mapper/TStPlanMapper.java

@@ -4,6 +4,7 @@ import java.util.List;
 import com.ruoyi.framework.aspectj.lang.annotation.DataScope;
 import com.ruoyi.project.training.spec.domain.TStFeedback;
 import com.ruoyi.project.training.spec.domain.TStPlan;
+import com.ruoyi.project.training.spec.domain.TStYearplan;
 
 /**
  * 培训计划Mapper接口
@@ -83,4 +84,5 @@ public interface TStPlanMapper
      * @return 结果
      */
     public int deleteTStPlanByIds(Long[] ids);
+
 }

+ 2 - 0
master/src/main/java/com/ruoyi/project/training/spec/mapper/TStYearplanMapper.java

@@ -60,4 +60,6 @@ public interface TStYearplanMapper
      * @return 结果
      */
     public int deleteTStYearplanByIds(Long[] ids);
+
+    List<TStYearplan> selectTStYearPlanExist(TStYearplan tStYearplan);
 }

+ 14 - 14
master/src/main/resources/application.yml

@@ -93,24 +93,24 @@ spring:
         max-wait: -1ms
   # 邮箱配置
   mail:
-    host: smtpout.basf-it-services.com
-    protocol: smtp
-    default-encoding: UTF-8
-    password:
-    username:
-    port: 25
-    properties.mail.stmp.socketFactory.class: javax.net.ssl.SSLSocketFactory
-    properties.mail.debug: true
-    from: CPMS.byc@BASF-YPC.com.cn
-#    host: smtp.exmail.qq.com
+#    host: smtpout.basf-it-services.com
 #    protocol: smtp
 #    default-encoding: UTF-8
-#    password: vvTAT8hciG7FLk4C
-#    username: email@seashoreept.com
-#    port: 587
+#    password:
+#    username:
+#    port: 25
 #    properties.mail.stmp.socketFactory.class: javax.net.ssl.SSLSocketFactory
 #    properties.mail.debug: true
-#    from: email@seashoreept.com
+#    from: CPMS.byc@BASF-YPC.com.cn
+    host: smtp.exmail.qq.com
+    protocol: smtp
+    default-encoding: UTF-8
+    password: vvTAT8hciG7FLk4C
+    username: email@seashoreept.com
+    port: 587
+    properties.mail.stmp.socketFactory.class: javax.net.ssl.SSLSocketFactory
+    properties.mail.debug: true
+    from: email@seashoreept.com
 # token配置
 token:
     # 令牌自定义标识

+ 8 - 0
master/src/main/resources/mybatis/training/spec/TStYearplanMapper.xml

@@ -52,6 +52,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where d.id = #{id}
     </select>
 
+    <select id="selectTStYearPlanExist" parameterType="TStYearplan" resultMap="TStYearplanResult">
+        select
+            d.id
+        from t_st_yearplan d
+        where d.staff_id = #{staffId} and d.plan_year = #{planYear}
+          and d.del_flag = 0
+    </select>
+
     <insert id="insertTStYearplan" parameterType="TStYearplan">
         <selectKey keyProperty="id" resultType="long" order="BEFORE">
             SELECT seq_t_st_yearplan.NEXTVAL as id FROM DUAL