From c51323e6fcc84f08bc8c01e3dd6c916427f83f4e Mon Sep 17 00:00:00 2001
From: Lius <Lius2225@163.com>
Date: 星期四, 07 三月 2024 10:41:50 +0800
Subject: [PATCH] 设备状态长时间未变化算法更新

---
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningEquipmentStatusJob.java |  129 +++++++++++++++++++++++++++++++++---------
 1 files changed, 100 insertions(+), 29 deletions(-)

diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningEquipmentStatusJob.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningEquipmentStatusJob.java
index 8acc779..793eb81 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningEquipmentStatusJob.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningEquipmentStatusJob.java
@@ -6,9 +6,12 @@
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.system.api.ISysBaseAPI;
 import org.jeecg.common.system.vo.DictModel;
+import org.jeecg.modules.mdc.constant.MdcConstant;
 import org.jeecg.modules.mdc.entity.MdcEquipment;
+import org.jeecg.modules.mdc.entity.MdcMessageApproval;
 import org.jeecg.modules.mdc.service.IMdcEquipmentRunningSectionService;
 import org.jeecg.modules.mdc.service.IMdcEquipmentService;
+import org.jeecg.modules.mdc.service.IMdcMessageApprovalService;
 import org.jeecg.modules.mdc.service.MdcEfficiencyReportService;
 import org.jeecg.modules.mdc.util.DateUtils;
 import org.jeecg.modules.mdc.util.ThrowableUtil;
@@ -16,8 +19,11 @@
 import org.jeecg.modules.quartz.entity.SysQuartzLog;
 import org.jeecg.modules.quartz.service.IQuartzJobService;
 import org.jeecg.modules.quartz.service.ISysQuartzLogService;
+import org.jeecg.modules.system.entity.SysAnnouncement;
+import org.jeecg.modules.system.entity.SysUser;
 import org.jeecg.modules.system.service.ISysAnnouncementService;
 import org.jeecg.modules.system.service.ISysDictService;
+import org.jeecg.modules.system.service.ISysUserService;
 import org.quartz.*;
 
 import javax.annotation.Resource;
@@ -26,6 +32,7 @@
 import java.time.LocalDate;
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @author Lius
@@ -61,6 +68,12 @@
     @Resource
     private IMdcEquipmentRunningSectionService mdcEquipmentRunningSectionService;
 
+    @Resource
+    private IMdcMessageApprovalService mdcMessageApprovalService;
+
+    @Resource
+    private ISysUserService sysUserService;
+
     @Override
     public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
         SysQuartzLog quartzLog = new SysQuartzLog();
@@ -73,7 +86,7 @@
         long startTime = System.currentTimeMillis();
         try {
             List<MdcEquipment> equipmentList = mdcEquipmentService.list(new LambdaQueryWrapper<>());
-            //List<MdcEquipment> equipmentList = mdcEquipmentService.list(new LambdaQueryWrapper<MdcEquipment>().eq(MdcEquipment::getEquipmentId, "2140198"));
+//            List<MdcEquipment> equipmentList = mdcEquipmentService.list(new LambdaQueryWrapper<MdcEquipment>().eq(MdcEquipment::getEquipmentId, "3140045"));
             // 鑾峰彇鍒╃敤鐜囧垽瀹氬ぉ鏁�
             List<DictModel> dictModelList1 = sysDictService.queryEnableDictItemsByCode(CommonConstant.DICT_EQUIPMENT_RATE_JUDGE);
             Integer equipmentRateJudge = 5;
@@ -94,28 +107,53 @@
             }
             for (MdcEquipment mdcEquipment : equipmentList) {
                 // 鍒ゆ柇鍒╃敤鐜�
-                String date = DateUtils.format(DateUtils.toDate(LocalDate.now().plusDays(-equipmentRateJudge).toString(), DateUtils.STR_DATE), DateUtils.STRDATE);
-                List<BigDecimal> efficiencyRateList = mdcEfficiencyReportService.getEfficiencyRate(mdcEquipment.getEquipmentId(), date);
-                if (efficiencyRateList != null && !efficiencyRateList.isEmpty()) {
-                    boolean flag = true;
-                    for (BigDecimal processLong : efficiencyRateList) {
-                        BigDecimal efficiencyRate = processLong.divide(new BigDecimal("86400"), 4, RoundingMode.HALF_UP);
-                        if (efficiencyRate.compareTo(new BigDecimal(equipmentRateNormal)) > -1) {
-                            flag = false;
-                        }
-                    }
-                    if (flag) {
-                        // 涓婃姤
-                        MessageDTO messageDTO = new MessageDTO();
-                        messageDTO.setTitle("璁惧鍒╃敤鐜囨姤璀︼紒");
-                        messageDTO.setCategory("棰勮娑堟伅");
-                        messageDTO.setFromUser("admin");
-                        messageDTO.setToUser("admin");
-                        messageDTO.setContent("璁惧缂栧彿涓� [" + mdcEquipment.getEquipmentId() + "] 鐨勮澶囧埄鐢ㄧ巼浣庝簬姝e父鍊兼姤璀︼紒");
-                        sysBaseApi.sendSysAnnouncement(messageDTO);
+                // step.1 鏌ヨ娑堟伅涓璁惧鎶ヨ鏃堕棿
+                SysAnnouncement sysAnnouncement = sysAnnouncementService.findLastMessage("璁惧缂栧彿涓� [" + mdcEquipment.getEquipmentId() + "] 鐨勮澶囧埄鐢ㄧ巼浣庝簬姝e父鍊兼姤璀︼紒");
+                boolean flag1 = true;
+                if (sysAnnouncement != null) {
+                    Date createTime = sysAnnouncement.getCreateTime();
+                    Date msgDate = DateUtils.toDate(DateUtils.format(createTime, DateUtils.STR_DATE), DateUtils.STR_DATE);
+                    Date now = DateUtils.toDate(LocalDate.now().toString(), DateUtils.STR_DATE);
+                    Integer days = DateUtils.getDays(msgDate, now);
+                    if (days < equipmentRateJudge) {
+                        flag1 = false;
                     }
                 }
-                // 鍒ゆ柇璁惧鐘舵��
+                if (flag1) {
+                    String date = DateUtils.format(DateUtils.toDate(LocalDate.now().plusDays(-equipmentRateJudge).toString(), DateUtils.STR_DATE), DateUtils.STRDATE);
+                    List<BigDecimal> efficiencyRateList = mdcEfficiencyReportService.getEfficiencyRate(mdcEquipment.getEquipmentId(), date);
+                    if (efficiencyRateList != null && !efficiencyRateList.isEmpty()) {
+                        boolean flag = true;
+                        for (BigDecimal processLong : efficiencyRateList) {
+                            BigDecimal efficiencyRate = processLong.divide(new BigDecimal("86400"), 4, RoundingMode.HALF_UP);
+                            if (efficiencyRate.compareTo(new BigDecimal(equipmentRateNormal)) > -1) {
+                                flag = false;
+                            }
+                        }
+                        if (flag) {
+                            // 涓婃姤
+                            MessageDTO messageDTO = new MessageDTO();
+                            messageDTO.setTitle("璁惧鍒╃敤鐜囨姤璀︼紒");
+                            messageDTO.setCategory("棰勮娑堟伅");
+                            messageDTO.setFromUser("admin");
+                            messageDTO.setToUser("admin");
+                            messageDTO.setContent("璁惧缂栧彿涓� [" + mdcEquipment.getEquipmentId() + "] 鐨勮澶囧埄鐢ㄧ巼浣庝簬姝e父鍊兼姤璀︼紒");
+                            sysBaseApi.sendSysAnnouncement(messageDTO);
+                        }
+                    }
+                }
+
+                // 鍒ゆ柇璁惧鐘舵�侀暱鏃堕棿鏃犲彉鍖栧鎵逛汉
+                SysAnnouncement sysAnnouncement1 = sysAnnouncementService.findLastMessage("璁惧缂栧彿涓� [" + mdcEquipment.getEquipmentId() + "] 鐨勮澶囩姸鎬侀暱鏈熸棤鍙樺寲鎶ヨ锛�");
+                if (sysAnnouncement1 != null) {
+                    Date createTime = sysAnnouncement1.getCreateTime();
+                    Date msgDate = DateUtils.toDate(DateUtils.format(createTime, DateUtils.STR_DATE), DateUtils.STR_DATE);
+                    Date now = DateUtils.toDate(LocalDate.now().toString(), DateUtils.STR_DATE);
+                    Integer days = DateUtils.getDays(msgDate, now);
+                    if (days < equipmentStatusJudge) {
+                        continue;
+                    }
+                }
                 Date date1 = DateUtils.toDate(LocalDate.now().plusDays(-equipmentStatusJudge).toString(), DateUtils.STR_DATE);
                 List<Integer> sectionList = mdcEquipmentRunningSectionService.getDataList(mdcEquipment.getEquipmentId(), date1);
                 if (sectionList != null && !sectionList.isEmpty() && sectionList.size() > 1) {
@@ -128,13 +166,46 @@
                     }
                     if (flag) {
                         // 涓婃姤
-                        MessageDTO messageDTO = new MessageDTO();
-                        messageDTO.setTitle("璁惧鐘舵�侀暱鏈熸棤鍙樺寲鎶ヨ锛�");
-                        messageDTO.setCategory("棰勮娑堟伅");
-                        messageDTO.setFromUser("admin");
-                        messageDTO.setToUser("admin");
-                        messageDTO.setContent("璁惧缂栧彿涓� [" + mdcEquipment.getEquipmentId() + "] 鐨勮澶囩姸鎬侀暱鏈熸棤鍙樺寲鎶ヨ锛�");
-                        sysBaseApi.sendSysAnnouncement(messageDTO);
+                        // 鏌ヨ璁惧绠$悊鍛�
+                        List<SysUser> adminList = sysUserService.getEquipmentAdmin(MdcConstant.MDC_EQUIPMENT_MANAGER, mdcEquipment.getEquipmentId());
+                        // 鏌ヨ璁惧瓒呯骇绠$悊鍛�
+                        List<SysUser> superList = sysUserService.getEquipmentAdmin(MdcConstant.MDC_EQUIPMENT_SUPER_MANAGER, mdcEquipment.getEquipmentId());
+                        if (adminList != null && !adminList.isEmpty()) {
+                            for (SysUser sysUser : adminList) {
+                                MessageDTO messageDTO = new MessageDTO();
+                                messageDTO.setTitle("璁惧鐘舵�侀暱鏈熸棤鍙樺寲鎶ヨ锛�");
+                                messageDTO.setCategory("棰勮娑堟伅");
+                                messageDTO.setFromUser("admin");
+                                messageDTO.setToUser(sysUser.getUsername());
+                                messageDTO.setContent("璁惧缂栧彿涓� [" + mdcEquipment.getEquipmentId() + "] 鐨勮澶囩姸鎬侀暱鏈熸棤鍙樺寲鎶ヨ锛�");
+                                sysBaseApi.sendSysAnnouncement(messageDTO);
+                            }
+                        } else {
+                            MessageDTO messageDTO = new MessageDTO();
+                            messageDTO.setTitle("璁惧鐘舵�侀暱鏈熸棤鍙樺寲鎶ヨ锛�");
+                            messageDTO.setCategory("棰勮娑堟伅");
+                            messageDTO.setFromUser("admin");
+                            messageDTO.setToUser("admin");
+                            messageDTO.setContent("璁惧缂栧彿涓� [" + mdcEquipment.getEquipmentId() + "] 鐨勮澶囩姸鎬侀暱鏈熸棤鍙樺寲鎶ヨ锛�");
+                            sysBaseApi.sendSysAnnouncement(messageDTO);
+                        }
+
+                        if (adminList != null && !adminList.isEmpty() && superList != null && !superList.isEmpty()) {
+                            MdcMessageApproval mdcMessageApproval = new MdcMessageApproval();
+                            mdcMessageApproval.setEquipmentId(mdcEquipment.getEquipmentId());
+                            mdcMessageApproval.setTitile("璁惧鐘舵�侀暱鏈熸棤鍙樺寲鎶ヨ锛�");
+                            mdcMessageApproval.setMsgContent("璁惧缂栧彿涓� [" + mdcEquipment.getEquipmentId() + "] 鐨勮澶囩姸鎬侀暱鏈熸棤鍙樺寲鎶ヨ锛�");
+                            List<String> senderIdList = adminList.stream().map(SysUser::getId).collect(Collectors.toList());
+                            mdcMessageApproval.setSenderIds(String.join(",", senderIdList));
+                            List<String> senderNameList = adminList.stream().map(SysUser::getRealname).collect(Collectors.toList());
+                            mdcMessageApproval.setSenderNames(String.join(",", senderNameList));
+                            List<String> superIdList = superList.stream().map(SysUser::getId).collect(Collectors.toList());
+                            mdcMessageApproval.setApproverIds(String.join(",", superIdList));
+                            List<String> superNameList = superList.stream().map(SysUser::getRealname).collect(Collectors.toList());
+                            mdcMessageApproval.setApproverNames(String.join(",", superNameList));
+                            mdcMessageApproval.setMsgStatus(MdcConstant.MSG_STATUS_0);
+                            mdcMessageApprovalService.save(mdcMessageApproval);
+                        }
                     }
                 }
             }
@@ -143,7 +214,7 @@
             quartzLog.setIsSuccess(-1);
             quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e));
             // 鍙戦�佹秷鎭�氱煡
-            sysAnnouncementService.jobSendMessage("璁惧鐘舵�侀暱鏈熸棤鍙樺寲鎶ヨ浠诲姟澶辫触锛�", quartzLog.getExceptionDetail());
+            sysAnnouncementService.jobSendMessage("璁惧鐘舵�侀暱鏈熸棤鍙樺寲鎶ヨ浠诲姟", quartzLog.getExceptionDetail());
         }
         long endTime = System.currentTimeMillis();
         quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime)));

--
Gitblit v1.9.3