diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/MessageTypeEnum.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/MessageTypeEnum.java index 5da4832e..4b9da3dc 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/MessageTypeEnum.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/MessageTypeEnum.java @@ -14,7 +14,9 @@ public enum MessageTypeEnum { CLFYSP("50", "材料封样审批"), QYFSSP("60", "取样复试审批"), GCSPCSBL("70", "办理工程审批超时提醒"), - GCSPCSCS("80", "抄送工程审批超时提醒"); + GCSPCSCS("80", "抄送工程审批超时提醒"), + YHZGCSGZ("90", "隐患整改超时通知"), + YHFJCSGZ("100", "隐患复检超时通知"); //工作流审批由ProcDefKey组成 private final String code; diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/TemplateMessageEnum.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/TemplateMessageEnum.java index 5f4d7450..fc882a5f 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/TemplateMessageEnum.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/TemplateMessageEnum.java @@ -9,6 +9,8 @@ public enum TemplateMessageEnum { TROUBLE_SUBMIT("f3saBGJCnUAjXHw1KooxEQOOiKEHlQxLIK-sPDgoL_E", "隐患整改通知"), TROUBLE_HANDLE("6mGOWPXS3l5a5fzXd9GIV9_IkEfZmeJ_6G2P_SQkWnU", "隐患处理完成通知"), + ROUBLE_EXPIRED_ZG("f3saBGJCnUAjXHw1KooxESpSdHMrh5liznpsbWZV8oA", "隐患整改超时通知"), + ROUBLE_EXPIRED_FJ("f3saBGJCnUAjXHw1KooxESpSdHMrh5liznpsbWZV8oA", "隐患复检超时通知"), APPLY_DEFAULT("KY7oAHgqFxUSaE3ByxFJfv_0U3LnSWfgUCwV-CZyEdo", "系统流程审批提醒"), APPLY_EXPIRED_MY("MUAXGjyaNE-maYn6XSNycRfZfPtdVTxubqlT8lHcYqw", "办理流程审批超时提醒"), APPLY_EXPIRED_COPY("MUAXGjyaNE-maYn6XSNyceRFN9h8nfIjKvyZTOLnKDE", "抄送流程审批超时提醒"); diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/mapper/TaskMapper.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/mapper/TaskMapper.java index d1ed5e05..671c92d3 100644 --- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/mapper/TaskMapper.java +++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/mapper/TaskMapper.java @@ -38,6 +38,16 @@ public interface TaskMapper { */ public List> findDaysAwaitClfyList(); + /** + * 查询超时1天未整改的隐患数据 + */ + public List> findDaysAwaitYhzgList(); + + /** + * 查询超时1天未复检的隐患数据 + */ + public List> findDaysAwaitYhfjList(); + /** * 根据条件查询流程用户 * @param businessKey 流程归属表单 diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/ITaskService.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/ITaskService.java index 8e41af95..729b8aeb 100644 --- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/ITaskService.java +++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/ITaskService.java @@ -37,6 +37,16 @@ public interface ITaskService { */ public List> findDaysAwaitClfyList(); + /** + * 查询超时1天未整改的隐患数据 + */ + public List> findDaysAwaitYhzgList(); + + /** + * 查询超时1天未复检的隐患数据 + */ + public List> findDaysAwaitYhfjList(); + /** * 根据条件查询流程用户 * @param businessKey 流程归属表单 diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/ITaskServiceImpl.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/ITaskServiceImpl.java index b8dd9b9d..f00913b2 100644 --- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/ITaskServiceImpl.java +++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/ITaskServiceImpl.java @@ -61,6 +61,22 @@ public class ITaskServiceImpl implements ITaskService { return taskMapper.findDaysAwaitClfyList(); } + /** + * 查询超时1天未整改的隐患数据 + */ + @Override + public List> findDaysAwaitYhzgList(){ + return taskMapper.findDaysAwaitYhzgList(); + } + + /** + * 查询超时1天未复检的隐患数据 + */ + @Override + public List> findDaysAwaitYhfjList(){ + return taskMapper.findDaysAwaitYhfjList(); + } + /** * 根据条件查询流程用户 * @param businessKey 流程归属表单 diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/FlowTaskExpiredTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/FlowTaskExpiredTask.java index 9a3b56d2..2be9ddf1 100644 --- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/FlowTaskExpiredTask.java +++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/FlowTaskExpiredTask.java @@ -20,7 +20,6 @@ import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @@ -113,7 +112,7 @@ public class FlowTaskExpiredTask { boolean lock = redisLock.tryLock(key, Constants.REDIS_LOCK, TimeUnit.SECONDS); if (lock) {*/ try { - log.info("劫持锁...{}...开始执行::工程审批超时提醒定时任务...{}"); + log.info("劫持锁...{}...开始执行::举牌验收超时提醒定时任务...{}"); List list = new ArrayList<>(); List> flowList = taskService.findDaysAwaitJpysList(); for(Map dataMap:flowList){ @@ -157,7 +156,7 @@ public class FlowTaskExpiredTask { boolean lock = redisLock.tryLock(key, Constants.REDIS_LOCK, TimeUnit.SECONDS); if (lock) {*/ try { - log.info("劫持锁...{}...开始执行::工程审批超时提醒定时任务...{}"); + log.info("劫持锁...{}...开始执行::实测实量超时提醒定时任务...{}"); List list = new ArrayList<>(); List> flowList = taskService.findDaysAwaitScslList(); for(Map dataMap:flowList){ @@ -201,7 +200,7 @@ public class FlowTaskExpiredTask { boolean lock = redisLock.tryLock(key, Constants.REDIS_LOCK, TimeUnit.SECONDS); if (lock) {*/ try { - log.info("劫持锁...{}...开始执行::工程审批超时提醒定时任务...{}"); + log.info("劫持锁...{}...开始执行::取样复试超时提醒定时任务...{}"); List list = new ArrayList<>(); List> flowList = taskService.findDaysAwaitQyfsList(); for(Map dataMap:flowList){ @@ -245,7 +244,7 @@ public class FlowTaskExpiredTask { boolean lock = redisLock.tryLock(key, Constants.REDIS_LOCK, TimeUnit.SECONDS); if (lock) {*/ try { - log.info("劫持锁...{}...开始执行::工程审批超时提醒定时任务...{}"); + log.info("劫持锁...{}...开始执行::材料封样超时提醒定时任务...{}"); List list = new ArrayList<>(); List> flowList = taskService.findDaysAwaitClfyList(); for(Map dataMap:flowList){ @@ -277,6 +276,104 @@ public class FlowTaskExpiredTask { }*/ } + /** + * 从Flowable中查询超时数据进行消息提醒 + * 分布式锁::quartz.task.flowTaskExpiredTask.notifyExpiredData + * 由程序定时调用 JiangYuQi + * @param + * @return + */ + public void notifyYhzgExpiredData() { + /**String key = "quartz.task.flowTaskExpiredTask.notifyExpiredData"; + boolean lock = redisLock.tryLock(key, Constants.REDIS_LOCK, TimeUnit.SECONDS); + if (lock) {*/ + try { + log.info("劫持锁...{}...开始执行::隐患整改超时提醒定时任务...{}"); + List list = new ArrayList<>(); + List> flowList = taskService.findDaysAwaitYhzgList(); + for(Map dataMap:flowList){ + String projectId = Convert.toStr(dataMap.get("projectId")); + String projectName = Convert.toStr(dataMap.get("projectName")); + String lordsentuser = Convert.toStr(dataMap.get("lordsentuser")); + String minNickTime = Convert.toStr(dataMap.get("minNickTime")); + Integer infotype = Convert.toInt(dataMap.get("infotype")); + String handlePath = infotype==0?"security":"quality"; + String infoTypeName = infotype==0?"安全隐患":"安全隐患"; + String total = Convert.toStr(dataMap.get("total")); + //模板数据 + WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder() + .toUser(this.getMsgId(lordsentuser)) + .miniProgram(new WxMpTemplateMessage.MiniProgram(WechatAccountConfig.getWxAppId(), "/pageage/project_problemmodify/"+handlePath+"/list/index?barProId="+projectId)) + .templateId(TemplateMessageEnum.ROUBLE_EXPIRED_ZG.getId()).build(); + templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing7", projectName)); + templateMessage.addWxMpTemplateData(new WxMpTemplateData("character_string2", total)); + templateMessage.addWxMpTemplateData(new WxMpTemplateData("const10", infoTypeName)); + templateMessage.addWxMpTemplateData(new WxMpTemplateData("const9", minNickTime)); + list.add(templateMessage); + } + this.send(list,"EXPIRED_"+ MessageTypeEnum.YHZGCSGZ.getCode()+"_"+System.currentTimeMillis()); + } catch (Exception e) { + log.info("任务执行异常...{}...::::结束执行...{}", e.getMessage()); + throw e; + } + /**finally { + log.info("释放锁...{}", key); + redisLock.unlock(key); + } + }else{ + log.info("尝试劫持锁失败...{}", key); + }*/ + } + + /** + * 从Flowable中查询超时数据进行消息提醒 + * 分布式锁::quartz.task.flowTaskExpiredTask.notifyExpiredData + * 由程序定时调用 JiangYuQi + * @param + * @return + */ + public void notifyYhfjExpiredData() { + /**String key = "quartz.task.flowTaskExpiredTask.notifyExpiredData"; + boolean lock = redisLock.tryLock(key, Constants.REDIS_LOCK, TimeUnit.SECONDS); + if (lock) {*/ + try { + log.info("劫持锁...{}...开始执行::隐患复检超时提醒定时任务...{}"); + List list = new ArrayList<>(); + List> flowList = taskService.findDaysAwaitYhzgList(); + for(Map dataMap:flowList){ + String projectId = Convert.toStr(dataMap.get("projectId")); + String projectName = Convert.toStr(dataMap.get("projectName")); + String rechecksenduser = Convert.toStr(dataMap.get("rechecksenduser")); + String minNickTime = Convert.toStr(dataMap.get("minNickTime")); + Integer infotype = Convert.toInt(dataMap.get("infotype")); + String handlePath = infotype==0?"security":"quality"; + String infoTypeName = infotype==0?"安全隐患":"安全隐患"; + String total = Convert.toStr(dataMap.get("total")); + //模板数据 + WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder() + .toUser(this.getMsgId(rechecksenduser)) + .miniProgram(new WxMpTemplateMessage.MiniProgram(WechatAccountConfig.getWxAppId(), "/pageage/project_problemmodify/"+handlePath+"/list/index?barProId="+projectId)) + .templateId(TemplateMessageEnum.ROUBLE_EXPIRED_FJ.getId()).build(); + templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing7", projectName)); + templateMessage.addWxMpTemplateData(new WxMpTemplateData("character_string2", total)); + templateMessage.addWxMpTemplateData(new WxMpTemplateData("const10", infoTypeName)); + templateMessage.addWxMpTemplateData(new WxMpTemplateData("const9", minNickTime)); + list.add(templateMessage); + } + this.send(list,"EXPIRED_"+ MessageTypeEnum.YHFJCSGZ.getCode()+"_"+System.currentTimeMillis()); + } catch (Exception e) { + log.info("任务执行异常...{}...::::结束执行...{}", e.getMessage()); + throw e; + } + /**finally { + log.info("释放锁...{}", key); + redisLock.unlock(key); + } + }else{ + log.info("尝试劫持锁失败...{}", key); + }*/ + } + /** * 查询微信用户列表 * @param userName diff --git a/ruoyi-quartz/src/main/resources/mapper/quartz/TaskMapper.xml b/ruoyi-quartz/src/main/resources/mapper/quartz/TaskMapper.xml index 35da5e1a..35c0227d 100644 --- a/ruoyi-quartz/src/main/resources/mapper/quartz/TaskMapper.xml +++ b/ruoyi-quartz/src/main/resources/mapper/quartz/TaskMapper.xml @@ -41,6 +41,56 @@ ORDER BY spc.project_id + + + + + +