|
@@ -0,0 +1,185 @@
|
|
|
+package com.ruoyi.framework.task.training;
|
|
|
+
|
|
|
+import com.ruoyi.common.sendEmail.IMailService;
|
|
|
+import com.ruoyi.common.thread.training.WorklicenseCertificateDueMailThread;
|
|
|
+import com.ruoyi.framework.web.controller.BaseController;
|
|
|
+import com.ruoyi.project.plant.domain.TStaffmgr;
|
|
|
+import com.ruoyi.project.plant.mapper.TStaffmgrMapper;
|
|
|
+import com.ruoyi.project.system.domain.SysUser;
|
|
|
+import com.ruoyi.project.system.mapper.SysUserMapper;
|
|
|
+import com.ruoyi.project.training.domain.TWorklicenseCertificate;
|
|
|
+import com.ruoyi.project.training.mapper.TWorklicenseCertificateMapper;
|
|
|
+import com.ruoyi.project.training.service.ITWorklicenseCertificateService;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Calendar;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 上岗证/作业证书一览表 定时任务
|
|
|
+ */
|
|
|
+@Component("worklicenseCertificateTask")
|
|
|
+public class WorklicenseCertificateTask extends BaseController {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private TWorklicenseCertificateMapper worklicenseCertificateMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private SysUserMapper sysUserMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private TStaffmgrMapper staffmgrMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IMailService mailService;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 检查即将到期的上岗证/作业证书
|
|
|
+ *
|
|
|
+ * 条件:上岗证/作业证书到期时间在三个月内
|
|
|
+ * 处理:邮件提醒缺失人的班组组长、OTS培训专员
|
|
|
+ */
|
|
|
+ public void checkDueWorklicenseCertificate() {
|
|
|
+ TWorklicenseCertificate wlc = new TWorklicenseCertificate();
|
|
|
+ List<TWorklicenseCertificate> list = worklicenseCertificateMapper.selectTWorklicenseCertificateList(wlc);//上岗证/作业证书列表
|
|
|
+ Calendar currentDate = Calendar.getInstance();//当前日期
|
|
|
+ currentDate.setTime(new Date());
|
|
|
+ for (TWorklicenseCertificate tWorklicenseCertificate : list) {
|
|
|
+ //flag
|
|
|
+ boolean validityExpiring = false;
|
|
|
+ boolean pipevalidityExpiring = false;
|
|
|
+ boolean boilvalidityExpiring = false;
|
|
|
+ boolean hydreviewExpiring = false;
|
|
|
+ boolean crackingreviewExpiring = false;
|
|
|
+ boolean refrigerationreviewExpiring = false;
|
|
|
+ boolean foremannextreviewExpiring = false;
|
|
|
+ boolean waterreviewExpiring = false;
|
|
|
+ boolean energyreviewExpiring = false;
|
|
|
+ //条件判定使用的字段
|
|
|
+ Calendar validity = Calendar.getInstance();
|
|
|
+ Calendar pipevalidity = Calendar.getInstance();
|
|
|
+ Calendar boilvalidity = Calendar.getInstance();
|
|
|
+ Calendar hydreview = Calendar.getInstance();
|
|
|
+ Calendar crackingreview = Calendar.getInstance();
|
|
|
+ Calendar refrigerationreview = Calendar.getInstance();
|
|
|
+ Calendar foremannextreview = Calendar.getInstance();
|
|
|
+ Calendar waterreview = Calendar.getInstance();
|
|
|
+ Calendar energyreview = Calendar.getInstance();
|
|
|
+ Date validity1 = tWorklicenseCertificate.getValidity();
|
|
|
+ Date pipevalidity1 = tWorklicenseCertificate.getPipevalidity();
|
|
|
+ Date boilvalidity1 = tWorklicenseCertificate.getBoilvalidity();
|
|
|
+ Date hydnextreview = tWorklicenseCertificate.getHydnextreview();
|
|
|
+ Date crackingreview1 = tWorklicenseCertificate.getCrackingreview();
|
|
|
+ Date refrigerationview = tWorklicenseCertificate.getRefrigerationview();
|
|
|
+ Date foremannextreview1 = tWorklicenseCertificate.getForemannextreview();
|
|
|
+ Date waterreview1 = tWorklicenseCertificate.getWaterreview();
|
|
|
+ Date energyreview1 = tWorklicenseCertificate.getEnergyreview();
|
|
|
+ if (validity1 == null || pipevalidity1 == null || boilvalidity1 == null
|
|
|
+ || hydnextreview == null || crackingreview1 == null || refrigerationview == null
|
|
|
+ || foremannextreview1 == null || waterreview1 == null || energyreview1 == null) {//日期为空进行下一次循环
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ validity.setTime(validity1);//作业证书有效期
|
|
|
+ pipevalidity.setTime(pipevalidity1);//压力容器和管道证书有效期
|
|
|
+ boilvalidity.setTime(boilvalidity1);//锅炉证书有效期
|
|
|
+ hydreview.setTime(hydnextreview);//加氢工艺复审
|
|
|
+ crackingreview.setTime(crackingreview1);//裂化工艺复审
|
|
|
+ refrigerationreview.setTime(refrigerationview);//制冷与空调作业复审
|
|
|
+ foremannextreview.setTime(foremannextreview1);//班组长安全生产合格证下次复审
|
|
|
+ waterreview.setTime(waterreview1);//锅炉水质处理复审
|
|
|
+ energyreview.setTime(energyreview1);//锅炉能效复审
|
|
|
+ //判定条件减去三个月
|
|
|
+ validity.add(Calendar.MONTH , -3);
|
|
|
+ pipevalidity.add(Calendar.MONTH , -3);
|
|
|
+ boilvalidity.add(Calendar.MONTH , -3);
|
|
|
+ hydreview.add(Calendar.MONTH , -3);
|
|
|
+ crackingreview.add(Calendar.MONTH , -3);
|
|
|
+ refrigerationreview.add(Calendar.MONTH , -3);
|
|
|
+ foremannextreview.add(Calendar.MONTH , -3);
|
|
|
+ waterreview.add(Calendar.MONTH , -3);
|
|
|
+ energyreview.add(Calendar.MONTH , -3);
|
|
|
+ ArrayList<String> invalidList = new ArrayList<>();
|
|
|
+ //当前日期>判定条件减去三个月->即将到期
|
|
|
+ if (currentDate.compareTo(validity) > 0) {
|
|
|
+ validityExpiring = true;
|
|
|
+ invalidList.add("作业证书");
|
|
|
+ }
|
|
|
+ if (currentDate.compareTo(pipevalidity) > 0) {
|
|
|
+ pipevalidityExpiring = true;
|
|
|
+ invalidList.add("压力容器和管道证书");
|
|
|
+ }
|
|
|
+ if (currentDate.compareTo(boilvalidity) > 0) {
|
|
|
+ boilvalidityExpiring = true;
|
|
|
+ invalidList.add("锅炉证书");
|
|
|
+ }
|
|
|
+ if (currentDate.compareTo(hydreview) > 0) {
|
|
|
+ hydreviewExpiring = true;
|
|
|
+ invalidList.add("加氢工艺证书");
|
|
|
+ }
|
|
|
+ if (currentDate.compareTo(crackingreview) > 0) {
|
|
|
+ crackingreviewExpiring = true;
|
|
|
+ invalidList.add("裂化工艺证书");
|
|
|
+ }
|
|
|
+ if (currentDate.compareTo(refrigerationreview) > 0) {
|
|
|
+ refrigerationreviewExpiring = true;
|
|
|
+ invalidList.add("制冷与空调作业证书");
|
|
|
+ }
|
|
|
+ if (currentDate.compareTo(foremannextreview) > 0) {
|
|
|
+ foremannextreviewExpiring = true;
|
|
|
+ invalidList.add("班组长安全生产合格证");
|
|
|
+ }
|
|
|
+ if (currentDate.compareTo(waterreview) > 0) {
|
|
|
+ waterreviewExpiring = true;
|
|
|
+ invalidList.add("锅炉水质处理证书");
|
|
|
+ }
|
|
|
+ if (currentDate.compareTo(energyreview) > 0) {
|
|
|
+ energyreviewExpiring = true;
|
|
|
+ invalidList.add("锅炉能效证书");
|
|
|
+ }
|
|
|
+ //符合判定条件
|
|
|
+ if (validityExpiring || pipevalidityExpiring || boilvalidityExpiring || hydreviewExpiring || crackingreviewExpiring
|
|
|
+ || refrigerationreviewExpiring || foremannextreviewExpiring ||waterreviewExpiring || energyreviewExpiring) {
|
|
|
+ //查询邮件提醒列表
|
|
|
+ List<TStaffmgr> alertList = new ArrayList<>();//提醒列表
|
|
|
+ String employeeid = tWorklicenseCertificate.getEmployeeid();
|
|
|
+ TStaffmgr staffmgr = staffmgrMapper.selectTStaffmgrByStaffId(employeeid);
|
|
|
+ TStaffmgr monitor = null;//缺失人的班组组长
|
|
|
+ List<TStaffmgr> otsList = null;//OTS培训专员
|
|
|
+ if (staffmgr != null) {
|
|
|
+ monitor = staffmgrMapper.selectMonitor(staffmgr);
|
|
|
+ otsList = staffmgrMapper.selectOtsList(staffmgr);
|
|
|
+ }
|
|
|
+ if (monitor != null) {
|
|
|
+ alertList.add(monitor);
|
|
|
+ }
|
|
|
+ if (otsList != null) {
|
|
|
+ for (TStaffmgr tStaffmgr : otsList) {
|
|
|
+ alertList.add(tStaffmgr);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //拼接提醒内容
|
|
|
+ StringBuilder msg = new StringBuilder();
|
|
|
+ msg.append(tWorklicenseCertificate.getName());
|
|
|
+ msg.append("的");
|
|
|
+ for (int i = 0; i < invalidList.size(); i++) {
|
|
|
+ String s = invalidList.get(i);
|
|
|
+ msg.append(s);
|
|
|
+ if (i != invalidList.size() - 1) {
|
|
|
+ msg.append("、");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ msg.append("即将到期,请注意。");
|
|
|
+ //邮件提醒
|
|
|
+ for (TStaffmgr tStaffmgr : alertList) {
|
|
|
+ SysUser sysUser = sysUserMapper.selectUserByStaffId(tStaffmgr.getStaffid());
|
|
|
+ WorklicenseCertificateDueMailThread mailThread = new WorklicenseCertificateDueMailThread(mailService, msg.toString(), sysUser);//邮件线程
|
|
|
+ Thread thread = new Thread(mailThread);
|
|
|
+ thread.start();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|