Browse Source

LY 会议 邮件状态

ly 1 year ago
parent
commit
2a1cab39f1

+ 17 - 12
master/src/main/java/com/ruoyi/project/ehs/controller/TJobticketController.java

@@ -81,13 +81,18 @@ public class TJobticketController extends BaseController {
                 final CountDownLatch latch = new CountDownLatch(list.size()); //相同线程数量的计数
                 for (TJobticket t : list
                 ) {
-                        executorService.submit(() -> {
-                        //续票列表 -- 业务模块
-                        if ("10".equals(t.getXpxp())) {
-                            List<TJobticket> cList = tJobticketMapper.selectTJobticketChildren(t);
-                            t.setChildren(cList);
+                    executorService.submit(() -> {
+                        try {
+                            //续票列表 -- 业务模块
+                            if ("10".equals(t.getXpxp())) {
+                                List<TJobticket> cList = tJobticketMapper.selectTJobticketChildren(t);
+                                t.setChildren(cList);
+                            }
+                        } catch (Exception e) {
+                            logger.error("e:", e);
+                        } finally {
+                            latch.countDown(); //线程计数
                         }
-                        latch.countDown(); //线程计数
                     });
                 }
                 try {
@@ -188,7 +193,7 @@ public class TJobticketController extends BaseController {
     @Log(title = "工作票", businessType = BusinessType.INSERT)
     @PostMapping
     public AjaxResult add(@RequestBody TJobticket tJobticket) {
-        if (StringUtils.isEmpty(tJobticket.getWhgzxkzh()) && StringUtils.isEmpty(tJobticket.getDhzyxkzh()) &&StringUtils.isEmpty(tJobticket.getXzkjxkzh()) &&StringUtils.isEmpty(tJobticket.getMbzyxkzh()) &&StringUtils.isEmpty(tJobticket.getGczyxkzh()) ){
+        if (StringUtils.isEmpty(tJobticket.getWhgzxkzh()) && StringUtils.isEmpty(tJobticket.getDhzyxkzh()) && StringUtils.isEmpty(tJobticket.getXzkjxkzh()) && StringUtils.isEmpty(tJobticket.getMbzyxkzh()) && StringUtils.isEmpty(tJobticket.getGczyxkzh())) {
             return AjaxResult.error("票号不能为空");
         }
         if (tJobticket.getXpxp() != null && tJobticket.getXpxp().equals("12")) {
@@ -201,7 +206,7 @@ public class TJobticketController extends BaseController {
         ISysUserService sysUserService = (ISysUserService) SpringContextUtils.getBean("sysUserService");
         StringBuilder contentUserUnit = new StringBuilder();
         if (tJobticket.getUserUnit() != null) {
-                    contentUserUnit.append(tJobticket.getUserUnit());//用户单位
+            contentUserUnit.append(tJobticket.getUserUnit());//用户单位
         }
         if (tJobticket.getUserMg() != null) {
             SysUser sysUser = sysUserService.selectUserById(tJobticket.getUserMg());
@@ -290,14 +295,14 @@ public class TJobticketController extends BaseController {
     @Log(title = "工作票", businessType = BusinessType.UPDATE)
     @PutMapping
     public AjaxResult edit(@RequestBody TJobticket tJobticket) {
-        if (StringUtils.isEmpty(tJobticket.getWhgzxkzh()) && StringUtils.isEmpty(tJobticket.getDhzyxkzh()) &&StringUtils.isEmpty(tJobticket.getXzkjxkzh()) &&StringUtils.isEmpty(tJobticket.getMbzyxkzh()) &&StringUtils.isEmpty(tJobticket.getGczyxkzh()) ){
+        if (StringUtils.isEmpty(tJobticket.getWhgzxkzh()) && StringUtils.isEmpty(tJobticket.getDhzyxkzh()) && StringUtils.isEmpty(tJobticket.getXzkjxkzh()) && StringUtils.isEmpty(tJobticket.getMbzyxkzh()) && StringUtils.isEmpty(tJobticket.getGczyxkzh())) {
             return AjaxResult.error("票号不能为空");
         }
         ISysUserService sysUserService = (ISysUserService) SpringContextUtils.getBean("sysUserService");
         StringBuilder contentUserUnit = new StringBuilder();
         if (tJobticket.getUserUnit() != null) {
-                    contentUserUnit.append(tJobticket.getUserUnit());//用户单位
-            }
+            contentUserUnit.append(tJobticket.getUserUnit());//用户单位
+        }
         if (tJobticket.getUserMg() != null) {
             SysUser sysUser = sysUserService.selectUserById(tJobticket.getUserMg());
             contentUserUnit.append(sysUser.getNickName());
@@ -316,7 +321,7 @@ public class TJobticketController extends BaseController {
     @PutMapping("/status")
     public AjaxResult editStatus(@RequestBody TJobticket tJobticket) {
         if ("18".equals(tJobticket.getZypzt())) {
-            if (StringUtils.isEmpty(tJobticket.getWhgzxkzh()) && StringUtils.isEmpty(tJobticket.getDhzyxkzh()) &&StringUtils.isEmpty(tJobticket.getXzkjxkzh()) &&StringUtils.isEmpty(tJobticket.getMbzyxkzh()) &&StringUtils.isEmpty(tJobticket.getGczyxkzh()) ){
+            if (StringUtils.isEmpty(tJobticket.getWhgzxkzh()) && StringUtils.isEmpty(tJobticket.getDhzyxkzh()) && StringUtils.isEmpty(tJobticket.getXzkjxkzh()) && StringUtils.isEmpty(tJobticket.getMbzyxkzh()) && StringUtils.isEmpty(tJobticket.getGczyxkzh())) {
                 return AjaxResult.error("票号不能为空");
             }
             //批量

+ 15 - 8
master/src/main/java/com/ruoyi/project/invoice/controller/TInvoiceBookingworkticketController.java

@@ -78,21 +78,26 @@ public class TInvoiceBookingworkticketController extends BaseController {
         //先找到子表内容
         List<TInvoiceWorkcontent> tInvoiceWorkcontentList = tInvoiceBookingworkticketService.selectTInvoiceWorkcontentList(tInvoiceBookingworkticket);
         if (tInvoiceWorkcontentList.size() > 0) {
-            ExecutorService executorService = Executors.newFixedThreadPool(tInvoiceWorkcontentList.size());
+            ExecutorService executorService = Executors.newFixedThreadPool(20);
             final CountDownLatch latch = new CountDownLatch(tInvoiceWorkcontentList.size());
             for (TInvoiceWorkcontent workcontent : tInvoiceWorkcontentList) {
                 executorService.execute(() -> {
-                    TInvoiceBookingworkticket bookingworkticket = tInvoiceBookingworkticketService.selectTInvoiceBookingworkticketById(workcontent.getBookingticketId());
-                    workcontent.setBookingworkticket(bookingworkticket);
-                    latch.countDown();
+                    try {
+                        TInvoiceBookingworkticket bookingworkticket = tInvoiceBookingworkticketService.selectTInvoiceBookingworkticketById(workcontent.getBookingticketId());
+                        workcontent.setBookingworkticket(bookingworkticket);
+                    } catch (Exception e) {
+                        logger.error("e:", e);
+                    } finally {
+                        latch.countDown();
+                    }
                 });
             }
-            executorService.shutdown();
             try {
                 latch.await();
             } catch (InterruptedException e) {
                 e.printStackTrace();
             }
+            executorService.shutdown();
         }
         return getDataTable(tInvoiceWorkcontentList);
     }
@@ -121,7 +126,7 @@ public class TInvoiceBookingworkticketController extends BaseController {
             TInvoiceBookingworkticket bookingworkticket = tInvoiceBookingworkticketService.selectTInvoiceBookingworkticketById(workcontent.getBookingticketId());
             workcontent.setBookingworkticket(bookingworkticket);
         }
-        if (tInvoiceBookingworkticket.getStatus() != null && tInvoiceBookingworkticket.getStatus() == 7){
+        if (tInvoiceBookingworkticket.getStatus() != null && tInvoiceBookingworkticket.getStatus() == 7) {
             //除去作废的票 以及 续票
             Iterator<TInvoiceWorkcontent> iterator = tInvoiceWorkcontentList.iterator();
             while (iterator.hasNext()) {
@@ -130,7 +135,7 @@ public class TInvoiceBookingworkticketController extends BaseController {
                     iterator.remove();
                 }
             }
-        }else {
+        } else {
             //除去未完成的票 以及 续票
             Iterator<TInvoiceWorkcontent> iterator = tInvoiceWorkcontentList.iterator();
             while (iterator.hasNext()) {
@@ -520,7 +525,9 @@ public class TInvoiceBookingworkticketController extends BaseController {
                         bookingworkticket.setUserSupDeptName(sup.getDept().getDeptName());
                     }
                     workcontent.setBookingworkticket(bookingworkticket);
-                } finally {
+                } catch (Exception e) {
+                    logger.error("e:", e);
+                }finally {
                     latch.countDown();
                 }
             });

+ 80 - 75
master/src/main/java/com/ruoyi/project/plant/controller/TMtMeetingController.java

@@ -360,89 +360,94 @@ public class TMtMeetingController extends BaseController {
     @GetMapping("/sendMail")
     public AjaxResult sendMail(TMtMeeting tMtMeeting) {
         TMtMeeting mtMeeting = tMtMeetingService.selectTMtMeetingById(tMtMeeting.getId());
-
-        //写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); \">化工装置管理系统 </font><font face=\"微软雅黑\" size=\"3\" style=\"color: rgb(255, 255, 255); \">Chemical Plant Management System(CPMS)</font></th></tr>";
-        //写html结尾内容
-        String end = "</tbody></table></div></body></html>";
-        String username = "";
+        try {
+            //写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); \">化工装置管理系统 </font><font face=\"微软雅黑\" size=\"3\" style=\"color: rgb(255, 255, 255); \">Chemical Plant Management System(CPMS)</font></th></tr>";
+            //写html结尾内容
+            String end = "</tbody></table></div></body></html>";
+            String username = "";
 
 //        email = "735032128@qq.com";
-        //表html中间内容
-        String prime = "";
-        String firstcenter = "<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\">" +
-                "亲爱的 CPMS用户</font><br><font style=\"line-height: 22px; \" size=\"4\">" +
-                "<p>您有一条新的周会议:<br>" +
-                "会议日期:<b>meetingDate</b><br>" +
-                "请前往<a href=\"requestJumpPath/plant/meeting/meeting\">周历史会议</a>查看或下载邮件附件。<br>" +
-                "<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 pattern = "yyyy年MM月dd日"; // 定义日期格式化模板
-
-        SimpleDateFormat dateFormat = new SimpleDateFormat(pattern); // 创建日期格式化器
-
-        String formattedDate = dateFormat.format(mtMeeting.getMeetingDate()); // 将日期转换为字符串
-
-        String one = firstcenter.replaceFirst("meetingDate", formattedDate);
-        String two = one.replace("requestJumpPath", this.ruoyiConfig.getRequestJumpPath());
-        String result = two.replaceFirst("date", dateFormat.format(new Date()));
-        prime = prime + result;
-        //拼接html
-        String html = start + prime + end;
-
-        // 需要转换的文件路径
-        String filePath = RuoYiConfig.getProfile() + mtMeeting.getWordUrl().replace("/profile", "");
-
-        //发送人和抄送人
-        String[] email = {"735032128@qq.com", "1213269375@qq.com"};
-        String[] emailCc = {"ly@seashoreept.com", "ly735032128@gmail.com"};
-
-        ArrayList<String> emailList = new ArrayList<>();
-        ArrayList<String> emailCcList = new ArrayList<>();
-
-        //邮件发送人
-        TMtPerson tMtPerson = new TMtPerson();
-        tMtPerson.setMeetingId(mtMeeting.getId());
-        tMtPerson.setIsCc(0l);
-        List<TMtPerson> personList = tMtPersonMapper.selectTMtPersonList(tMtPerson);
-        for (TMtPerson t : personList
-        ) {
-            SysUser user = sysUserService.selectUserByStaffId(t.getStaffid());
-            if (user != null && StringUtils.isNotEmpty(user.getEmail())) {
-                emailList.add(user.getEmail());
+            //表html中间内容
+            String prime = "";
+            String firstcenter = "<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\">" +
+                    "亲爱的 CPMS用户</font><br><font style=\"line-height: 22px; \" size=\"4\">" +
+                    "<p>您有一条新的周会议:<br>" +
+                    "会议日期:<b>meetingDate</b><br>" +
+                    "请前往<a href=\"requestJumpPath/plant/meeting/meeting\">周历史会议</a>查看或下载邮件附件。<br>" +
+                    "<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 pattern = "yyyy年MM月dd日"; // 定义日期格式化模板
+
+            SimpleDateFormat dateFormat = new SimpleDateFormat(pattern); // 创建日期格式化器
+
+            String formattedDate = dateFormat.format(mtMeeting.getMeetingDate()); // 将日期转换为字符串
+
+            String one = firstcenter.replaceFirst("meetingDate", formattedDate);
+            String two = one.replace("requestJumpPath", this.ruoyiConfig.getRequestJumpPath());
+            String result = two.replaceFirst("date", dateFormat.format(new Date()));
+            prime = prime + result;
+            //拼接html
+            String html = start + prime + end;
+
+            // 需要转换的文件路径
+            String filePath = RuoYiConfig.getProfile() + mtMeeting.getWordUrl().replace("/profile", "");
+
+            //发送人和抄送人
+            String[] email = {"735032128@qq.com", "1213269375@qq.com"};
+            String[] emailCc = {"ly@seashoreept.com", "ly735032128@gmail.com"};
+
+            ArrayList<String> emailList = new ArrayList<>();
+            ArrayList<String> emailCcList = new ArrayList<>();
+
+            //邮件发送人
+            TMtPerson tMtPerson = new TMtPerson();
+            tMtPerson.setMeetingId(mtMeeting.getId());
+            tMtPerson.setIsCc(0l);
+            List<TMtPerson> personList = tMtPersonMapper.selectTMtPersonList(tMtPerson);
+            for (TMtPerson t : personList
+            ) {
+                SysUser user = sysUserService.selectUserByStaffId(t.getStaffid());
+                if (user != null && StringUtils.isNotEmpty(user.getEmail())) {
+                    emailList.add(user.getEmail());
+                }
             }
-        }
 
-        //邮件抄送人
-        tMtPerson.setIsCc(1l);
-        List<TMtPerson> personCcList = tMtPersonMapper.selectTMtPersonList(tMtPerson);
-        for (TMtPerson t : personCcList
-        ) {
-            SysUser user = sysUserService.selectUserByStaffId(t.getStaffid());
-            if (user != null && StringUtils.isNotEmpty(user.getEmail())) {
-                emailCcList.add(user.getEmail());
+            //邮件抄送人
+            tMtPerson.setIsCc(1l);
+            List<TMtPerson> personCcList = tMtPersonMapper.selectTMtPersonList(tMtPerson);
+            for (TMtPerson t : personCcList
+            ) {
+                SysUser user = sysUserService.selectUserByStaffId(t.getStaffid());
+                if (user != null && StringUtils.isNotEmpty(user.getEmail())) {
+                    emailCcList.add(user.getEmail());
+                }
             }
-        }
 
-        email = emailList.toArray(new String[emailList.size()]);
-        emailCc = emailCcList.toArray(new String[emailCcList.size()]);
-        logger.info("发送人:" + JSON.toJSONString(email));
-        logger.info("抄送人:" + JSON.toJSONString(emailCc));
-        try {
-            mailService.sendAttachmentsMail(email, "CPMS:您有一条" + formattedDate + "装置周会议信息", html, emailCc, filePath);
+            email = emailList.toArray(new String[emailList.size()]);
+            emailCc = emailCcList.toArray(new String[emailCcList.size()]);
+            logger.info("发送人:" + JSON.toJSONString(email));
+            logger.info("抄送人:" + JSON.toJSONString(emailCc));
+
+//            mailService.sendAttachmentsMail(email, "CPMS:您有一条" + formattedDate + "装置周会议信息", html, emailCc, filePath);
+            tMtMeeting.setEmailStatus(1);
+            return AjaxResult.success();
         } catch (Exception e) {
-            return AjaxResult.error(JSON.toJSONString(e));
+            logger.error("e", e);
+            tMtMeeting.setEmailStatus(-1);
+            return AjaxResult.error("发送失败");
+        } finally {
+            tMtMeetingService.updateTMtMeeting(tMtMeeting);
         }
-        return AjaxResult.success();
     }
 
 

+ 112 - 113
master/src/main/java/com/ruoyi/project/plant/controller/TMtdDailyController.java

@@ -59,8 +59,7 @@ import javax.annotation.Resource;
  */
 @RestController
 @RequestMapping("/plant/dailyMeeting")
-public class TMtdDailyController extends BaseController
-{
+public class TMtdDailyController extends BaseController {
     @Autowired
     private ITMtdDailyService tMtdDailyService;
     @Resource
@@ -84,23 +83,20 @@ public class TMtdDailyController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('plant:dailyMeeting:list')")
     @GetMapping("/list")
-    public TableDataInfo list(TMtdDaily tMtdDaily)
-    {
+    public TableDataInfo list(TMtdDaily tMtdDaily) {
         startPage();
         List<TMtdDaily> list = tMtdDailyService.selectTMtdDailyList(tMtdDaily);
         return getDataTable(list);
     }
 
 
-
     /**
      * 导出调度会议列表
      */
     @PreAuthorize("@ss.hasPermi('plant:dailyMeeting:export')")
     @Log(title = "调度会议", businessType = BusinessType.EXPORT)
     @GetMapping("/export")
-    public AjaxResult export(TMtdDaily tMtdDaily)
-    {
+    public AjaxResult export(TMtdDaily tMtdDaily) {
         List<TMtdDaily> list = tMtdDailyService.selectTMtdDailyList(tMtdDaily);
         ExcelUtil<TMtdDaily> util = new ExcelUtil<TMtdDaily>(TMtdDaily.class);
         return util.exportExcel(list, "dailyMeeting");
@@ -111,8 +107,7 @@ public class TMtdDailyController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('plant:dailyMeeting:query')")
     @GetMapping(value = "/{id}")
-    public AjaxResult getInfo(@PathVariable("id") Long id)
-    {
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
 
         TMtdDaily tMtdDaily = tMtdDailyService.selectTMtdDailyById(id);
         //获取item列表
@@ -150,8 +145,7 @@ public class TMtdDailyController extends BaseController
      * 获取调度会议详细信息
      */
     @GetMapping(value = "/last")
-    public AjaxResult getLast(TMtdDaily mtdDaily)
-    {
+    public AjaxResult getLast(TMtdDaily mtdDaily) {
 
         TMtdDaily tMtdDaily = tMtdDailyMapper.selectTMtdDailyLast(mtdDaily);
         //获取item列表
@@ -220,9 +214,8 @@ public class TMtdDailyController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('plant:dailyMeeting:remove')")
     @Log(title = "调度会议", businessType = BusinessType.DELETE)
-	@DeleteMapping("/{ids}")
-    public AjaxResult remove(@PathVariable Long[] ids)
-    {
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
         return toAjax(tMtdDailyService.deleteTMtdDailyByIds(ids));
     }
 
@@ -233,83 +226,87 @@ public class TMtdDailyController extends BaseController
     @Log(title = "发送调度会议邮件", businessType = BusinessType.OTHER)
     @RepeatSubmit
     @GetMapping("/sendMail")
-    public AjaxResult sendMail(TMtdDaily tMtdDaily)
-    {
+    public AjaxResult sendMail(TMtdDaily tMtdDaily) {
         TMtdDaily daily = tMtdDailyService.selectTMtdDailyById(tMtdDaily.getId());
-
-        //写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); \">化工装置管理系统 </font><font face=\"微软雅黑\" size=\"3\" style=\"color: rgb(255, 255, 255); \">Chemical Plant Management System(CPMS)</font></th></tr>";
-        //写html结尾内容
-        String end = "</tbody></table></div></body></html>";
-        String username = "";
+        try {
+            //写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); \">化工装置管理系统 </font><font face=\"微软雅黑\" size=\"3\" style=\"color: rgb(255, 255, 255); \">Chemical Plant Management System(CPMS)</font></th></tr>";
+            //写html结尾内容
+            String end = "</tbody></table></div></body></html>";
+            String username = "";
 
 //        email = "735032128@qq.com";
-        //表html中间内容
-        String prime = "";
-        String firstcenter = "<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\">" +
-                "亲爱的 CPMS用户</font><br><font style=\"line-height: 22px; \" size=\"4\">" +
-                "<p>您有一条新的调度会议:<br>" +
-                "会议日期:<b>meetingDate</b><br>" +
-                "请前往<a href=\"requestJumpPath/plant/meeting/detail/dailyId\">会议详情</a>查看或下载邮件附件。<br>" +
-                "<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 pattern = "yyyy年MM月dd日"; // 定义日期格式化模板
-
-        SimpleDateFormat dateFormat = new SimpleDateFormat(pattern); // 创建日期格式化器
-
-        String formattedDate = dateFormat.format(daily.getMeetingDate()); // 将日期转换为字符串
-
-        String one = firstcenter.replaceFirst("meetingDate", formattedDate);
-        String two = one.replace("requestJumpPath", this.ruoyiConfig.getRequestJumpPath());
-        String three = two.replace("dailyId", daily.getId().toString());
-        String result = three.replaceFirst("date",  dateFormat.format(new Date()));
-        prime = prime + result;
-        //拼接html
-        String html = start + prime + end;
-
-        // 需要转换的文件路径
-        String filePath = RuoYiConfig.getProfile()+daily.getWordUrl().replace("/profile","");
-
-        //发送人和抄送人
-        String[] email = {"735032128@qq.com", "1213269375@qq.com"};
-        String[] emailCc = {"ly@seashoreept.com", "ly735032128@gmail.com"};
-
-        ArrayList<String> emailList = new ArrayList<>();
-        ArrayList<String> emailCcList = new ArrayList<>();
-
-        List<TMtdEmail> list = tMtdEmailService.selectTMtdEmailList(new TMtdEmail());
-        for (TMtdEmail t: list
-        ) {
-            SysUser user = sysUserService.selectUserByStaffId(t.getStaffid());
-            if (user != null && StringUtils.isNotEmpty(user.getEmail())) {
-                if (t.getType() == 1) {
-                    emailList.add(user.getEmail());
-                }
-                if (t.getType() == 2 && StringUtils.isNotEmpty(user.getEmail())) {
-                    emailCcList.add(user.getEmail());
+            //表html中间内容
+            String prime = "";
+            String firstcenter = "<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\">" +
+                    "亲爱的 CPMS用户</font><br><font style=\"line-height: 22px; \" size=\"4\">" +
+                    "<p>您有一条新的调度会议:<br>" +
+                    "会议日期:<b>meetingDate</b><br>" +
+                    "请前往<a href=\"requestJumpPath/plant/meeting/detail/dailyId\">会议详情</a>查看或下载邮件附件。<br>" +
+                    "<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 pattern = "yyyy年MM月dd日"; // 定义日期格式化模板
+
+            SimpleDateFormat dateFormat = new SimpleDateFormat(pattern); // 创建日期格式化器
+
+            String formattedDate = dateFormat.format(daily.getMeetingDate()); // 将日期转换为字符串
+
+            String one = firstcenter.replaceFirst("meetingDate", formattedDate);
+            String two = one.replace("requestJumpPath", this.ruoyiConfig.getRequestJumpPath());
+            String three = two.replace("dailyId", daily.getId().toString());
+            String result = three.replaceFirst("date", dateFormat.format(new Date()));
+            prime = prime + result;
+            //拼接html
+            String html = start + prime + end;
+
+            // 需要转换的文件路径
+            String filePath = RuoYiConfig.getProfile() + daily.getWordUrl().replace("/profile", "");
+
+            //发送人和抄送人
+            String[] email = {"735032128@qq.com", "1213269375@qq.com"};
+            String[] emailCc = {"ly@seashoreept.com", "ly735032128@gmail.com"};
+
+            ArrayList<String> emailList = new ArrayList<>();
+            ArrayList<String> emailCcList = new ArrayList<>();
+
+            List<TMtdEmail> list = tMtdEmailService.selectTMtdEmailList(new TMtdEmail());
+            for (TMtdEmail t : list
+            ) {
+                SysUser user = sysUserService.selectUserByStaffId(t.getStaffid());
+                if (user != null && StringUtils.isNotEmpty(user.getEmail())) {
+                    if (t.getType() == 1) {
+                        emailList.add(user.getEmail());
+                    }
+                    if (t.getType() == 2 && StringUtils.isNotEmpty(user.getEmail())) {
+                        emailCcList.add(user.getEmail());
+                    }
                 }
             }
+            email = emailList.toArray(new String[emailList.size()]);
+            emailCc = emailCcList.toArray(new String[emailCcList.size()]);
+            logger.info("发送人:" + email.toString());
+            logger.info("抄送人:" + emailCc.toString());
+            logger.info("文件地址:" + filePath);
+
+            mailService.sendAttachmentsMail(email, "CPMS:您有一条" + formattedDate + "装置调度会议信息", html, emailCc, filePath);
+            daily.setEmailStatus(1);
+            return AjaxResult.success();
+        } catch (Exception e) {
+            daily.setEmailStatus(-1);
+            logger.error("e" , e);
+            return AjaxResult.error("邮件发送失败");
+        }finally {
+            tMtdDailyService.updateTMtdDaily(daily);
         }
-        email = emailList.toArray(new String[emailList.size()]);
-        emailCc = emailCcList.toArray(new String[emailCcList.size()]);
-        logger.info("发送人:" + email.toString());
-        logger.info("抄送人:" + emailCc.toString());
-        logger.info("文件地址:" + filePath);
-        try {
-            mailService.sendAttachmentsMail(email, "CPMS:您有一条"+ formattedDate+"装置调度会议信息", html, emailCc,filePath);
-        }catch (Exception e) {
-            return AjaxResult.error(JSON.toJSONString(e));
-        }
-        return AjaxResult.success();
     }
 
 
@@ -330,33 +327,33 @@ public class TMtdDailyController extends BaseController
 
         item.setItemType(1);
         List<TMtdItem> item1 = tMtdItemMapper.selectTMtdItemList(item);
-        tMtdDaily.setItems1(getItemAndName(item1 , "1",tMtdDaily));
+        tMtdDaily.setItems1(getItemAndName(item1, "1", tMtdDaily));
 
         item.setItemType(2);
         List<TMtdItem> item2 = tMtdItemMapper.selectTMtdItemList(item);
-        tMtdDaily.setItems2(getItemAndName(item2 , "2",tMtdDaily));
+        tMtdDaily.setItems2(getItemAndName(item2, "2", tMtdDaily));
 
         item.setItemType(3);
         List<TMtdItem> item3 = tMtdItemMapper.selectTMtdItemList(item);
-        tMtdDaily.setItems3(getItemAndName(item3 , "3",tMtdDaily));
+        tMtdDaily.setItems3(getItemAndName(item3, "3", tMtdDaily));
 
         item.setItemType(4);
         List<TMtdItem> item4 = tMtdItemMapper.selectTMtdItemList(item);
-        tMtdDaily.setItems4(getItemAndName(item4 , "4",tMtdDaily));
+        tMtdDaily.setItems4(getItemAndName(item4, "4", tMtdDaily));
 
         item.setItemType(5);
         List<TMtdItem> item5 = tMtdItemMapper.selectTMtdItemList(item);
-        tMtdDaily.setItems5(getItemAndName(item5 , "5",tMtdDaily));
+        tMtdDaily.setItems5(getItemAndName(item5, "5", tMtdDaily));
         String url = this.createcheck(tMtdDaily);
         return url;
     }
 
-    private List<TMtdItem> getItemAndName(List<TMtdItem> items, String itemNum, TMtdDaily tMtdDaily){
+    private List<TMtdItem> getItemAndName(List<TMtdItem> items, String itemNum, TMtdDaily tMtdDaily) {
         int num = 1;
         if (itemNum.equals("1")) {
             num = 3;
         }
-        for (TMtdItem t: items
+        for (TMtdItem t : items
         ) {
             t.setItem(itemNum + "." + num);
 //            if (StringUtils.isNotEmpty(t.getActionby())){
@@ -365,7 +362,7 @@ public class TMtdDailyController extends BaseController
 //            }
             t.setActionName(t.getActionby());
             if (tMtdDaily.getMeetingDate() != null) {
-                t.setBeginTime(DateUtils.parseDateToStr("MM-dd",tMtdDaily.getMeetingDate()));
+                t.setBeginTime(DateUtils.parseDateToStr("MM-dd", tMtdDaily.getMeetingDate()));
             }
             num++;
         }
@@ -384,7 +381,7 @@ public class TMtdDailyController extends BaseController
         // 生成word的路径
         String fileDir = RuoYiConfig.getProfile() + "/" + "plant/dailymeeting";
         // 生成word的文件名称
-        String fileName = DateUtils.parseDateToStr("YYYY-MM-dd",tMtdDaily.getMeetingDate())+"装置调度会议"+tMtdDaily.getId() + ".docx";
+        String fileName = DateUtils.parseDateToStr("YYYY-MM-dd", tMtdDaily.getMeetingDate()) + "装置调度会议" + tMtdDaily.getId() + ".docx";
         String wordPath = this.createWord(templatePath, fileDir, fileName, params);
         return wordPath;
     }
@@ -395,8 +392,8 @@ public class TMtdDailyController extends BaseController
     public Map<String, Object> getWordData(TMtdDaily tMtdDaily) {
         Map<String, Object> params = new HashMap<>();
         if (tMtdDaily.getMeetingDate() != null) {
-            params.put("meetingDate", DateUtils.parseDateToStr("YYYY-MM-dd",tMtdDaily.getMeetingDate()));
-            params.put("reDate", DateUtils.parseDateToStr("MM-dd",tMtdDaily.getMeetingDate()));
+            params.put("meetingDate", DateUtils.parseDateToStr("YYYY-MM-dd", tMtdDaily.getMeetingDate()));
+            params.put("reDate", DateUtils.parseDateToStr("MM-dd", tMtdDaily.getMeetingDate()));
         }
 
         params.put("venue", tMtdDaily.getVenue());
@@ -413,30 +410,32 @@ public class TMtdDailyController extends BaseController
 //            params.put("recorder", recorder.getNickName());
 //        }
         params.put("recorder", tMtdDaily.getRecorder());
-        params.put("cracker",tMtdDaily.getAttendCracker());
-        params.put("ctm",tMtdDaily.getAttendCtm());
-        params.put("cta",tMtdDaily.getAttendCta());
-        params.put("lab",tMtdDaily.getAttendLab());
-
-        params.put("item1",tMtdDaily.getItems1());
-        params.put("item2",tMtdDaily.getItems2());
-        params.put("item3",tMtdDaily.getItems3());
-        params.put("item4",tMtdDaily.getItems4());
-        params.put("item5",tMtdDaily.getItems5());
+        params.put("cracker", tMtdDaily.getAttendCracker());
+        params.put("ctm", tMtdDaily.getAttendCtm());
+        params.put("cta", tMtdDaily.getAttendCta());
+        params.put("lab", tMtdDaily.getAttendLab());
+
+        params.put("item1", tMtdDaily.getItems1());
+        params.put("item2", tMtdDaily.getItems2());
+        params.put("item3", tMtdDaily.getItems3());
+        params.put("item4", tMtdDaily.getItems4());
+        params.put("item5", tMtdDaily.getItems5());
         // 渲染文本
         return params;
     }
 
-      private String getUserName(String str){
+    private String getUserName(String str) {
         String names = "";
         if (str == null) return "";
         String[] arr = str.split(",");
-          for (int i = 0; i < arr.length; i++) {
-             SysUser user = sysUserMapper.selectUserByStaffId(arr[i]);
-              names = names + user.getNickName() + ",";
-          }
+        for (int i = 0; i < arr.length; i++) {
+            SysUser user = sysUserMapper.selectUserByStaffId(arr[i]);
+            names = names + user.getNickName() + ",";
+        }
         return names;
-      };
+    }
+
+    ;
 
     /**
      * @param templatePath word模板文件路径
@@ -472,7 +471,7 @@ public class TMtdDailyController extends BaseController
                 .bind("item5", policy)
                 .build();
 
-        XWPFTemplate template = XWPFTemplate.compile(is,config).render(paramMap);
+        XWPFTemplate template = XWPFTemplate.compile(is, config).render(paramMap);
         try {
             // 将模板参数写入路径
             template.writeToFile(filePath);

+ 3 - 1
master/src/main/java/com/ruoyi/project/plant/controller/TStaffmgrController.java

@@ -329,7 +329,9 @@ public class TStaffmgrController extends BaseController {
                         }
                     }
                     list.get(finalI).setTrainingTime(String.valueOf(time));
-                } finally {
+                } catch (Exception e) {
+                    logger.error("e:", e);
+                }finally {
                     latch.countDown(); //线程计数
                 }
             });

+ 10 - 0
master/src/main/java/com/ruoyi/project/plant/domain/TMtMeeting.java

@@ -67,6 +67,8 @@ public class TMtMeeting extends BaseEntity
 
     private String wordUrl;
 
+    private Integer emailStatus;
+
     /** 部门名称 */
     @Excel(name = "部门名称")
     private String deptName;
@@ -218,6 +220,14 @@ public class TMtMeeting extends BaseEntity
         this.wordUrl = wordUrl;
     }
 
+    public Integer getEmailStatus() {
+        return emailStatus;
+    }
+
+    public void setEmailStatus(Integer emailStatus) {
+        this.emailStatus = emailStatus;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

+ 11 - 0
master/src/main/java/com/ruoyi/project/plant/domain/TMtdDaily.java

@@ -127,6 +127,9 @@ public class TMtdDaily extends BaseEntity
     private String aeu;
 
     private String wordUrl;
+
+    private Integer emailStatus;
+
     private String deptName;
 
     private List<TMtdItem> items0;
@@ -403,6 +406,14 @@ public class TMtdDaily extends BaseEntity
         this.wordUrl = wordUrl;
     }
 
+    public Integer getEmailStatus() {
+        return emailStatus;
+    }
+
+    public void setEmailStatus(Integer emailStatus) {
+        this.emailStatus = emailStatus;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

+ 44 - 25
master/src/main/java/com/ruoyi/project/sems/controller/TApproveController.java

@@ -138,12 +138,11 @@ public class TApproveController extends BaseController {
      * 根据参数键名查询政府回执
      */
     @GetMapping(value = "/getGovUserId")
-    public AjaxResult govUserId()
-    {
+    public AjaxResult govUserId() {
         SysConfig config = new SysConfig();
         config.setConfigKey("sems.approve.gov");
         SysConfig retConfig = configMapper.selectConfig(config);
-        SysUser sysUser =  userMapper.selectUserByStaffId(retConfig.getConfigValue());
+        SysUser sysUser = userMapper.selectUserByStaffId(retConfig.getConfigValue());
         return AjaxResult.success(sysUser.getUserId());
     }
 
@@ -211,7 +210,7 @@ public class TApproveController extends BaseController {
         //获取操作日志参数
         String operType = getOperType(Integer.parseInt(tApprove.getApproveType().toString()));
         LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
-        String userName =loginUser != null? loginUser.getUsername(): "";
+        String userName = loginUser != null ? loginUser.getUsername() : "";
 
         String[] ids = tApprove.getDevId().split(",");
         switch (Integer.parseInt(tApprove.getDevType().toString())) {
@@ -225,8 +224,8 @@ public class TApproveController extends BaseController {
                 }
                 logger.info("特种设备操作日志");
                 new Thread(() -> {
-                    tSpechiYlrqController.addOperLog(ids,userName,new Date() , operType + "-申请" );
-                },"特种设备操作日志").start();
+                    tSpechiYlrqController.addOperLog(ids, userName, new Date(), operType + "-申请");
+                }, "特种设备操作日志").start();
                 break;
             case 2:
                 for (String i : ids
@@ -238,8 +237,8 @@ public class TApproveController extends BaseController {
                 }
                 logger.info("特种设备操作日志");
                 new Thread(() -> {
-                    tSpechiYlgdController.addOperLog(ids,userName,new Date() , operType + "-申请" );
-                },"特种设备操作日志").start();
+                    tSpechiYlgdController.addOperLog(ids, userName, new Date(), operType + "-申请");
+                }, "特种设备操作日志").start();
                 break;
             case 3:
                 for (String i : ids
@@ -251,8 +250,8 @@ public class TApproveController extends BaseController {
                 }
                 logger.info("特种设备操作日志");
                 new Thread(() -> {
-                    tSpechiDzsbController.addOperLog(ids,userName,new Date() , operType + "-申请" );
-                },"特种设备操作日志").start();
+                    tSpechiDzsbController.addOperLog(ids, userName, new Date(), operType + "-申请");
+                }, "特种设备操作日志").start();
                 break;
             case 4:
                 for (String i : ids
@@ -264,8 +263,8 @@ public class TApproveController extends BaseController {
                 }
                 logger.info("特种设备操作日志");
                 new Thread(() -> {
-                    tSpechiGlController.addOperLog(ids,userName,new Date() , operType + "-申请" );
-                },"特种设备操作日志").start();
+                    tSpechiGlController.addOperLog(ids, userName, new Date(), operType + "-申请");
+                }, "特种设备操作日志").start();
                 break;
             case 5:
                 for (String i : ids
@@ -277,8 +276,8 @@ public class TApproveController extends BaseController {
                 }
                 logger.info("特种设备操作日志");
                 new Thread(() -> {
-                    tSpechiDtController.addOperLog(ids,userName,new Date() , operType + "-申请" );
-                },"特种设备操作日志").start();
+                    tSpechiDtController.addOperLog(ids, userName, new Date(), operType + "-申请");
+                }, "特种设备操作日志").start();
                 break;
             case 6:
                 for (String i : ids
@@ -290,8 +289,8 @@ public class TApproveController extends BaseController {
                 }
                 logger.info("特种设备操作日志");
                 new Thread(() -> {
-                    tSpechiCcController.addOperLog(ids,userName,new Date() , operType + "-申请" );
-                },"特种设备操作日志").start();
+                    tSpechiCcController.addOperLog(ids, userName, new Date(), operType + "-申请");
+                }, "特种设备操作日志").start();
                 break;
         }
         //
@@ -413,6 +412,7 @@ public class TApproveController extends BaseController {
                                     reportYlrqEntity.setDevEntity(tSpecdevYlrqService.getById(reportYlrqEntity.getDevId()));
                                     devList.add(reportYlrqEntity);
                                 } catch (Exception e) {
+                                    logger.error("e:", e);
                                 } finally {
                                     latch.countDown(); //线程计数
                                 }
@@ -456,6 +456,8 @@ public class TApproveController extends BaseController {
                     devList.add(reportMonthEntity);
                     tApprove.setDevType(0l);
                 }
+                executorService.shutdown();
+                break;
         }
         tApprove.setDevList(devList);
         return AjaxResult.success(tApprove);
@@ -783,16 +785,22 @@ public class TApproveController extends BaseController {
         //修改设备申请状态
         String[] ids = tApprove.getReportId().split(",");
         ExecutorService executorService = Executors.newFixedThreadPool(30);
-
+        final CountDownLatch latch = new CountDownLatch(ids.length); //相同线程数量的计数
         switch (tApprove.getDevType().toString()) {
             case "1":
                 for (String i : ids
                 ) {
                     executorService.execute(() -> {
-                        TReportYlrq rq = tReportYlrqService.selectTReportYlrqById(Long.parseLong(i));
-                        rq.setApproveStatus(7l);
-                        rq.setApproveTime(new Date());
-                        tReportYlrqService.updateTReportYlrq(rq);
+                        try {
+                            TReportYlrq rq = tReportYlrqService.selectTReportYlrqById(Long.parseLong(i));
+                            rq.setApproveStatus(7l);
+                            rq.setApproveTime(new Date());
+                            tReportYlrqService.updateTReportYlrq(rq);
+                        } catch (Exception e) {
+                            logger.error("e:", e);
+                        } finally {
+                            latch.countDown(); //线程计数
+                        }
                     });
                 }
                 break;
@@ -800,13 +808,24 @@ public class TApproveController extends BaseController {
                 for (String i : ids
                 ) {
                     executorService.execute(() -> {
-                        TReportYlgd gd = tReportYlgdService.selectTReportYlgdById(Long.parseLong(i));
-                        gd.setApproveStatus(7l);
-                        gd.setApproveTime(new Date());
-                        tReportYlgdService.updateTReportYlgd(gd);
+                        try {
+                            TReportYlgd gd = tReportYlgdService.selectTReportYlgdById(Long.parseLong(i));
+                            gd.setApproveStatus(7l);
+                            gd.setApproveTime(new Date());
+                            tReportYlgdService.updateTReportYlgd(gd);
+                        } catch (Exception e) {
+                            logger.error("e:", e);
+                        } finally {
+                            latch.countDown(); //线程计数
+                        }
                     });
                 }
         }
+        try {
+            latch.await();
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
         executorService.shutdown();
         Map<String, Object> variables = new HashMap<>();
         //开始工作流、监听

+ 1 - 1
master/src/main/java/com/ruoyi/project/sems/controller/TSpecdevYlgdController.java

@@ -614,7 +614,7 @@ public class TSpecdevYlgdController extends BaseController {
                     TSpecdevYlgd t = tSpecdevYlgdService.getById(i);
                     list.add(t);
                 } catch (Exception e) {
-                    logger.info("e:" + e);
+                    logger.error("e:" + e);
                 } finally {
                     latch.countDown(); //线程计数
                 }

+ 16 - 24
master/src/main/java/com/ruoyi/project/training/newstaff/controller/TTnNewController.java

@@ -46,8 +46,7 @@ import javax.annotation.Resource;
  */
 @RestController
 @RequestMapping("/newstaff/tnNew")
-public class TTnNewController extends BaseController
-{
+public class TTnNewController extends BaseController {
     @Autowired
     private ITTnNewService tTnNewService;
     @Autowired
@@ -66,15 +65,14 @@ public class TTnNewController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('newstaff:tnNew:list')")
     @GetMapping("/list")
-    public TableDataInfo list(TTnNew tTnNew)
-    {
+    public TableDataInfo list(TTnNew tTnNew) {
         startPage();
         List<TTnNew> list = tTnNewService.selectTTnNewList(tTnNew);
         //线程池
         ExecutorService executorService = Executors.newFixedThreadPool(10);
         final CountDownLatch latch = new CountDownLatch(list.size()); //相同线程数量的计数
-        for (TTnNew t: list
-             ) {
+        for (TTnNew t : list
+        ) {
             executorService.execute(() -> {
                 try {
                     //岗前培训
@@ -94,23 +92,23 @@ public class TTnNewController extends BaseController
                         tTnSchoolplan.setPlanStatus(1l);
                         List<TTnSchoolplan> schoolplansNow = tTnSchoolplanMapper.selectTTnSchoolplanListByNewId(tTnSchoolplan);
                         secAll = schoolplansAll.size();
-                        secNow= schoolplansNow.size();
-                    }else {
+                        secNow = schoolplansNow.size();
+                    } else {
                         TTnTransferplan tTnTransferplan = new TTnTransferplan();
                         tTnTransferplan.setNewId(t.getNewId());
                         List<TTnTransferplan> transferplanAll = tTnTransferplanMapper.selectTTnTransferplanListByNewId(tTnTransferplan);
                         tTnTransferplan.setPlanStatus(1l);
                         List<TTnTransferplan> transferplanNow = tTnTransferplanMapper.selectTTnTransferplanListByNewId(tTnTransferplan);
                         secAll = transferplanAll.size();
-                        secNow= transferplanNow.size();
+                        secNow = transferplanNow.size();
                     }
                     if (secAll + firstAll != 0) {
                         String finsh = String.valueOf((secNow + firstNow) * 100 / (secAll + firstAll));
                         t.setPlanFinish(finsh);
-                    }else {
+                    } else {
                         t.setPlanFinish("0");
                     }
-                }finally {
+                } finally {
                     latch.countDown(); //线程计数
                 }
             });
@@ -143,8 +141,7 @@ public class TTnNewController extends BaseController
      * 查询下拉
      */
     @GetMapping("/listStaff")
-    public AjaxResult listStaff()
-    {
+    public AjaxResult listStaff() {
         List<TStaffmgr> list = tStaffmgrService.selectAllTStaffmgrList(new TStaffmgr());
         return AjaxResult.success(list);
     }
@@ -155,8 +152,7 @@ public class TTnNewController extends BaseController
     @PreAuthorize("@ss.hasPermi('newstaff:tnNew:export')")
     @Log(title = "新员工培训", businessType = BusinessType.EXPORT)
     @GetMapping("/export")
-    public AjaxResult export(TTnNew tTnNew)
-    {
+    public AjaxResult export(TTnNew tTnNew) {
         List<TTnNew> list = tTnNewService.selectTTnNewList(tTnNew);
         ExcelUtil<TTnNew> util = new ExcelUtil<TTnNew>(TTnNew.class);
         return util.exportExcel(list, "tnNew");
@@ -167,8 +163,7 @@ public class TTnNewController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('newstaff:tnNew:query')")
     @GetMapping(value = "/{newId}")
-    public AjaxResult getInfo(@PathVariable("newId") Long newId)
-    {
+    public AjaxResult getInfo(@PathVariable("newId") Long newId) {
         return AjaxResult.success(tTnNewService.selectTTnNewById(newId));
     }
 
@@ -178,8 +173,7 @@ public class TTnNewController extends BaseController
     @PreAuthorize("@ss.hasPermi('newstaff:tnNew:add')")
     @Log(title = "新员工培训", businessType = BusinessType.INSERT)
     @PostMapping
-    public AjaxResult add(@RequestBody TTnNew tTnNew)
-    {
+    public AjaxResult add(@RequestBody TTnNew tTnNew) {
         tTnNewService.insertTTnNew(tTnNew);
 
         return toAjax(1);
@@ -191,8 +185,7 @@ public class TTnNewController extends BaseController
     @PreAuthorize("@ss.hasPermi('newstaff:tnNew:edit')")
     @Log(title = "新员工培训", businessType = BusinessType.UPDATE)
     @PutMapping
-    public AjaxResult edit(@RequestBody TTnNew tTnNew)
-    {
+    public AjaxResult edit(@RequestBody TTnNew tTnNew) {
         return toAjax(tTnNewService.updateTTnNew(tTnNew));
     }
 
@@ -201,9 +194,8 @@ public class TTnNewController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('newstaff:tnNew:remove')")
     @Log(title = "新员工培训", businessType = BusinessType.DELETE)
-	@DeleteMapping("/{newIds}")
-    public AjaxResult remove(@PathVariable Long[] newIds)
-    {
+    @DeleteMapping("/{newIds}")
+    public AjaxResult remove(@PathVariable Long[] newIds) {
         return toAjax(tTnNewService.deleteTTnNewByIds(newIds));
     }
 }

+ 7 - 1
master/src/main/resources/mybatis/plant/TMtMeetingMapper.xml

@@ -21,10 +21,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="remarks"    column="remarks"    />
         <result property="deptName" column="dept_name" />
         <result property="wordUrl"    column="word_url"    />
+        <result property="emailStatus"    column="email_status"    />
     </resultMap>
 
     <sql id="selectTMtMeetingVo">
-        select d.id, d.plant_code, d.recorder,d.word_url, d.meeting_no, d.meeting_date, d.venue, d.subject, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks ,s.dept_name from t_mt_meeting d
+        select d.id, d.plant_code, d.recorder,email_status,d.word_url, d.meeting_no, d.meeting_date, d.venue, d.subject
+             , d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks
+             ,s.dept_name from t_mt_meeting d
       left join sys_dept s on s.dept_id = d.dept_id
     </sql>
 
@@ -77,6 +80,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="deptId != null">dept_id,</if>
             <if test="remarks != null">remarks,</if>
             <if test="wordUrl != null">word_url,</if>
+            <if test="emailStatus != null">email_status,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="id != null">#{id},</if>
@@ -94,6 +98,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="deptId != null">#{deptId},</if>
             <if test="remarks != null">#{remarks},</if>
             <if test="wordUrl != null">#{wordUrl},</if>
+            <if test="emailStatus != null">#{emailStatus},</if>
          </trim>
     </insert>
 
@@ -114,6 +119,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="deptId != null">dept_id = #{deptId},</if>
             <if test="remarks != null">remarks = #{remarks},</if>
             <if test="wordUrl != null">word_url = #{wordUrl},</if>
+            <if test="emailStatus != null">email_status = #{emailStatus},</if>
         </trim>
         where id = #{id}
     </update>

+ 11 - 1
master/src/main/resources/mybatis/plant/TMtdDailyMapper.xml

@@ -29,10 +29,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="pgu"    column="pgu"    />
         <result property="aeu"    column="aeu"    />
         <result property="wordUrl"    column="word_url"    />
+        <result property="emailStatus"    column="email_status"    />
     </resultMap>
 
     <sql id="selectTMtdDailyVo">
-        select d.id, d.recorder, d.meeting_no, d.meeting_date, d.venue, d.subject, d.attend_cracker, d.attend_ctm, d.attend_cta, d.attend_lab, d.safety_topic, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id , d.opt_mode, d.opt_item, d.split, d.pgu, d.aeu,d.word_url ,s.dept_name from t_mtd_daily d
+        select d.id, d.recorder, d.meeting_no, d.meeting_date, d.venue, d.subject, d.attend_cracker, d.attend_ctm
+             , d.attend_cta, d.attend_lab, d.safety_topic, d.del_flag, d.creater_code, d.createdate, d.updater_code
+             , d.updatedate, d.dept_id , d.opt_mode, d.opt_item, d.split, d.pgu, d.aeu,d.word_url ,email_status
+             ,s.dept_name from t_mtd_daily d
       left join sys_dept s on s.dept_id = d.dept_id
     </sql>
 
@@ -99,6 +103,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="pgu != null">pgu,</if>
             <if test="aeu != null">aeu,</if>
             <if test="wordUrl != null">word_url,</if>
+            <if test="emailStatus != null">email_status,</if>
+
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="id != null">#{id},</if>
@@ -124,6 +130,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="pgu != null">#{pgu},</if>
             <if test="aeu != null">#{aeu},</if>
             <if test="wordUrl != null">#{wordUrl},</if>
+            <if test="emailStatus != null">#{emailStatus},</if>
+
          </trim>
     </insert>
 
@@ -152,6 +160,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="pgu != null">pgu = #{pgu},</if>
             <if test="aeu != null">aeu = #{aeu},</if>
             <if test="wordUrl != null">word_url = #{wordUrl},</if>
+            <if test="emailStatus != null">email_status = #{emailStatus},</if>
+
         </trim>
         where id = #{id}
     </update>

+ 0 - 2
ui/src/main.js

@@ -42,8 +42,6 @@ import '@/assets/iconfont/iconfont.js'
 import { UTable, UTableColumn } from 'umy-ui';
 
 
-
-
 // 全局注册图标
 Vue.component('icon', Icon);
 // 全局方法挂载

+ 9 - 1
ui/src/views/plant/dailyMeeting/index.vue

@@ -103,7 +103,14 @@
       <el-table-column label="记录人" align="center" prop="recorder" :show-overflow-tooltip="true"/>
       <el-table-column label="会议地点" align="center" prop="venue" :show-overflow-tooltip="true"/>
       <el-table-column label="主题" align="center" prop="subject" :show-overflow-tooltip="true"/>
-      <el-table-column label="所属部门" align="center" prop="deptName" :show-overflow-tooltip="true"/>
+      <el-table-column label="邮件状态" align="center" width="120" prop="emailStatus" >
+        <template slot-scope="scope">
+          <el-tag v-if="scope.row.emailStatus == 1" size="small" type="success">已发送</el-tag>
+          <el-tag v-else-if="scope.row.emailStatus == 0" size="small" type="info">未发送</el-tag>
+          <el-tag v-else-if="scope.row.emailStatus == -1" size="small" type="danger">发送失败</el-tag>
+        </template>
+      </el-table-column>
+      <el-table-column label="所属部门" align="center" prop="deptName" width="100" :show-overflow-tooltip="true"/>
       <el-table-column label="操作" align="center" fixed="right" width="300" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
@@ -474,6 +481,7 @@ export default {
       handleMail(row){
         let parm = {id: row.id}
         sendMail(parm).then(response => {
+          this.getList();
           this.msgSuccess("发送成功");
         });
       },

+ 9 - 1
ui/src/views/plant/hismeeting/index.vue

@@ -97,8 +97,15 @@
       <el-table-column :label="$t('会议编号')" align="center" prop="meetingNo"  width="160" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('会议地点')" align="center" prop="venue" width="150" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('主题')" align="center" prop="subject"  />
+      <el-table-column label="邮件状态" align="center" width="120" prop="emailStatus" >
+        <template slot-scope="scope">
+          <el-tag v-if="scope.row.emailStatus == 1" size="small" type="success">已发送</el-tag>
+          <el-tag v-else-if="scope.row.emailStatus == 0" size="small" type="info">未发送</el-tag>
+          <el-tag v-else-if="scope.row.emailStatus == -1" size="small" type="danger">发送失败</el-tag>
+        </template>
+      </el-table-column>
       <el-table-column :label="$t('备注')" align="center" prop="remarks" width="150" :show-overflow-tooltip="true"/>
-      <el-table-column :label="$t('操作')" align="center" fixed="right" width="160" class-name="small-padding fixed-width">
+      <el-table-column :label="$t('操作')" align="center" fixed="right" width="260" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
             size="mini"
@@ -482,6 +489,7 @@ export default {
     handleMail(row){
       let parm = {id: row.id}
       sendMail(parm).then(response => {
+        this.getList();
         this.msgSuccess("发送成功");
       });
     },