浏览代码

保养计划定时任务修改批量更新通知消息

sl 1 年之前
父节点
当前提交
762f6fe697

+ 24 - 38
module_cmms/src/main/java/org/jeecg/modules/cmmsUpkeep/task/CmmsUpkeepCreateJob.java

@@ -36,7 +36,7 @@ import java.util.List;
 /**
  * ClassName: CmmsUpkeepCreateJob
  * Package: org.jeecg.modules.cmmsUpkeep.task
- * Description:
+ * Description:生成保养工单定时任务
  *
  * @Author sl
  * @Create 2024/1/18 16:57
@@ -66,28 +66,13 @@ public class CmmsUpkeepCreateJob implements Job {
 
     @Override
     public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
-
         System.out.println("进入生成保养工单任务函数");
-//        DefaultWebSecurityManager manager = new DefaultWebSecurityManager();
-//        ThreadContext.bind(manager);
-
-        // 获取登录人用户信息 V1.0版本:
-//        SysUser user= (SysUser)SecurityUtils.getSubject().getPrincipal();
-        // 获取登录人用户信息 V2.0版本:
-//        LoginUser user= (LoginUser) SecurityUtils.getSubject().getPrincipal();
-//        if(user == null){
-//            log.info("用户还未登陆,无法获取创建人!");
-//            return;
-//        }
-//        // 用户名
-//        String userName=user.getUsername();
-        String userName = "admin";
 
         PlanToOrderUtils planToOrderUtils = new PlanToOrderUtils();
-        // 获取所有保养计划(根据状态来获取,获取启用的保养计划)
-        List<CmmsUpkeepPlan> cmmsUpkeepPlanList = cmmsUpkeepPlanService.getCmmsUpkeepPlanByStatus("0");
+        // 获取所有保养计划(根据状态来获取,获取启用的保养计划) 从缓存中取
+        List<CmmsUpkeepPlan> cmmsUpkeepPlanList = cmmsUpkeepPlanService.selectAllPlan0Status();
         if(cmmsUpkeepPlanList == null || cmmsUpkeepPlanList.size() < 1){
-            return;
+            return;//如果没有启动的保养计划,任务结束
         }
         //如果存在启用的保养计划  判断是否需要生成保养工单,生成保养工单的保养计划要更新计划开始时间、下次计划开始时间以及消息提醒时间
         String dateNowStr = DateUtils.getDate("yyyy-MM-dd HH:mm:ss");//获取当前时间字符串
@@ -113,7 +98,7 @@ public class CmmsUpkeepCreateJob implements Job {
             //生成保养工单
             CmmsUpkeep cmmsUpkeep = new CmmsUpkeep();
             cmmsUpkeep.setId(IdWorker.getIdStr());//生成雪花id
-            cmmsUpkeep.setCreateBy(userName);
+            cmmsUpkeep.setCreateBy(cmmsUpkeepPlan.getCreateBy());//生成工单的创建人就是保养计划的创建人
             cmmsUpkeep.setUpkeepcode(autoCodeUtil.genSerialCode(UserConstants.CMMSUPKEEP_CODE, null));//保养工单编号
             cmmsUpkeep.setUpkeepname(cmmsUpkeepPlan.getPlanname() + "-" + dateNowStr);//保养工单名称:保养计划名称-当前时间
             cmmsUpkeep.setUpkeepplanid(cmmsUpkeepPlan.getId());//保养计划id
@@ -134,8 +119,7 @@ public class CmmsUpkeepCreateJob implements Job {
             CmmsOrderNode node = new CmmsOrderNode();
             node.setNodename("0");
             node.setRelid(cmmsUpkeep.getId());//操作记录对应的工单id
-            node.setCreateBy(userName);
-            node.setCreateBy("admin");
+            node.setCreateBy(cmmsUpkeepPlan.getCreateBy());
 //            node.setCreateTime(dateNow);
             node.setHandledate(dateNow);
             node.setOpinion("——");
@@ -147,26 +131,28 @@ public class CmmsUpkeepCreateJob implements Job {
 
         if (cmmsUpkeepPlanList != null && cmmsUpkeepPlanList.size() > 0) {
             //批量更新保养计划表  批量生成保养工单  批量生成操作记录
-            cmmsUpkeepPlanService.updateBatchById(updateCmmsUpkeepPlanList);
+            boolean b = cmmsUpkeepPlanService.updateBatchById(updateCmmsUpkeepPlanList);
             cmmsUpkeepService.saveBatch(cmmsUpkeepList);
             cmmsOrderNodeService.saveBatch(nodeList);
             System.out.println("生成保养工单、更新保养计划、生成工单操作记录完成!");
-
-            // 生成消息通知
-            for(CmmsUpkeep cmmsUpkeep:cmmsUpkeepList){
-                MessageDTO messageDTO = new MessageDTO();
-                messageDTO.setToAll(false);
-                messageDTO.setToUser(cmmsUpkeep.getChargeruser());//发送给负责人
-                messageDTO.setTitle("保养工单[" + cmmsUpkeep.getUpkeepcode() + " " + cmmsUpkeep.getUpkeepname() + "]已生成,请及时处理!");
-                //推送消息类型
-                messageDTO.setType(MessageTypeEnum.XT.getType());
-                messageDTO.setIsMarkdown(false);
-                messageDTO.setFromUser("system");
-                messageDTO.setContent(" ");
-                log.info("------------消息发送对象:{}--------------", JSON.toJSONString(messageDTO));
-                sysBaseApi.sendTemplateMessage(messageDTO);//发送系统消息
+            if(b){
+                // 更新保养计划缓存信息
+                cmmsUpkeepPlanService.setRedisCache();
+                // 生成消息通知
+                for(CmmsUpkeep cmmsUpkeep:cmmsUpkeepList){
+                    MessageDTO messageDTO = new MessageDTO();
+                    messageDTO.setToAll(false);
+                    messageDTO.setToUser(sysBaseApi.getUserById(cmmsUpkeep.getChargeruser()).getUsername());//发送给负责人
+                    messageDTO.setTitle("保养工单[" + cmmsUpkeep.getUpkeepcode() + " " + cmmsUpkeep.getUpkeepname() + "]已生成,请及时处理!");
+                    //推送消息类型
+                    messageDTO.setType(MessageTypeEnum.XT.getType());
+                    messageDTO.setIsMarkdown(false);
+                    messageDTO.setFromUser(cmmsUpkeep.getCreateBy());
+                    messageDTO.setContent(" ");
+//                    log.info("------------消息发送对象:{}--------------", JSON.toJSONString(messageDTO));
+                    sysBaseApi.sendTemplateMessage(messageDTO);//发送系统消息
+                }
             }
-
         }
 
     }

+ 31 - 26
module_cmms/src/main/java/org/jeecg/modules/cmmsUpkeep/task/CmmsUpkeepNoticeJob.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.api.dto.message.MessageDTO;
+import org.jeecg.common.aspect.annotation.Dict;
 import org.jeecg.common.constant.enums.MessageTypeEnum;
 import org.jeecg.common.system.api.ISysBaseAPI;
 import org.jeecg.common.util.DateUtils;
@@ -21,7 +22,8 @@ import java.util.List;
 /**
  * ClassName: CmmsUpkeepNoticeJob
  * Package: org.jeecg.modules.cmmsUpkeep.task
- * Description:
+ * Description:生成保养工单之前的工单即将生成提醒的定时任务
+ *
  *
  * @Author sl
  * @Create 2024/1/22 13:30
@@ -40,40 +42,43 @@ public class CmmsUpkeepNoticeJob implements Job {
     @Override
     public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
         System.out.println("进入保养工单生成提醒任务函数");
-        Date now = DateUtils.getDate();
         // 1、保养计划
         // 获取所有启用的保养计划
-        List<CmmsUpkeepPlan> cmmsUpkeepPlanList = cmmsUpkeepPlanService.getCmmsUpkeepPlanByStatus("0");
+        List<CmmsUpkeepPlan> cmmsUpkeepPlanList = cmmsUpkeepPlanService.selectAllPlan0Status();
+        System.out.println(cmmsUpkeepPlanList);
         List<CmmsUpkeepPlan> updateCmmsUpkeepPlanList = new ArrayList<>();//用来存放需要更新的保养计划
-        if (cmmsUpkeepPlanList != null && cmmsUpkeepPlanList.size() > 0) {
-            for (CmmsUpkeepPlan cmmsUpkeepPlan : cmmsUpkeepPlanList) {
-                // 如果保养计划的下次通知时间为空或时间未到,则不生成消息
-                if (cmmsUpkeepPlan.getNoticetime() == null || cmmsUpkeepPlan.getNoticetime().after(now) || "是".equals(cmmsUpkeepPlan.getIfnotice())) {
-                    continue;
-                }
-                cmmsUpkeepPlan.setIfnotice("是");
-                updateCmmsUpkeepPlanList.add(cmmsUpkeepPlan);
-
-                // 生成消息
-                MessageDTO messageDTO = new MessageDTO();
-                messageDTO.setToAll(false);
-                messageDTO.setToUser(cmmsUpkeepPlan.getChargeruser());//发送给负责人
-                messageDTO.setTitle("保养工单[" + cmmsUpkeepPlan.getPlancode() + " " + cmmsUpkeepPlan.getPlanname() + "]即将生成保养工单,请及时处理!");
-                //推送消息类型
-                messageDTO.setType(MessageTypeEnum.XT.getType());
-                messageDTO.setIsMarkdown(false);
-                messageDTO.setFromUser("system");
-                messageDTO.setContent(" ");
-                log.info("------------消息发送对象:{}--------------", JSON.toJSONString(messageDTO));
-                sysBaseApi.sendTemplateMessage(messageDTO);//发送系统消息
+        if(cmmsUpkeepPlanList == null || cmmsUpkeepPlanList.size()<1) return;
+        Date now = DateUtils.getDate();
+        for (CmmsUpkeepPlan cmmsUpkeepPlan : cmmsUpkeepPlanList) {
+            // 如果保养计划的下次通知时间为空或时间未到,则不生成消息
+            if (cmmsUpkeepPlan.getNoticetime() == null || cmmsUpkeepPlan.getNoticetime().after(now) || "是".equals(cmmsUpkeepPlan.getIfnotice())) {
+                continue;
             }
+            cmmsUpkeepPlan.setIfnotice("是");
+            updateCmmsUpkeepPlanList.add(cmmsUpkeepPlan);
+
+            // 生成消息
+            MessageDTO messageDTO = new MessageDTO();
+            messageDTO.setToAll(false);
+            System.out.println(cmmsUpkeepPlan.getChargeruser());
+            System.out.println(cmmsUpkeepPlan.getCreateBy());
+            messageDTO.setToUser(sysBaseApi.getUserById(cmmsUpkeepPlan.getChargeruser()).getUsername());//发送给负责人
+            messageDTO.setTitle("保养工单[" + cmmsUpkeepPlan.getPlancode() + " " + cmmsUpkeepPlan.getPlanname() + "]即将生成保养工单,请及时处理!");
+            //推送消息类型
+            messageDTO.setType(MessageTypeEnum.XT.getType());
+            messageDTO.setIsMarkdown(false);
+            messageDTO.setFromUser(cmmsUpkeepPlan.getCreateBy());//计划的创建人就是发送消息人
+            messageDTO.setContent(" ");
+//            log.info("------------消息发送对象:{}--------------", JSON.toJSONString(messageDTO));
+            sysBaseApi.sendTemplateMessage(messageDTO);//发送系统消息
         }
 
         // 3、修改保养计划、巡检计划的通知信息
         if (updateCmmsUpkeepPlanList != null && updateCmmsUpkeepPlanList.size() > 0) {
-            cmmsUpkeepPlanService.updateCmmsUpkeepPlanIfnoticeByIds(updateCmmsUpkeepPlanList);
+            cmmsUpkeepPlanService.updateBatchById(updateCmmsUpkeepPlanList);
+//            cmmsUpkeepPlanService.updateCmmsUpkeepPlanIfnoticeByIds(updateCmmsUpkeepPlanList);
             // 更新保养计划缓存信息
-//            upkeepPlanService.setRedisCache();
+            cmmsUpkeepPlanService.setRedisCache();
         }