Lius
2024-03-07 c51323e6fcc84f08bc8c01e3dd6c916427f83f4e
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,6 +107,19 @@
            }
            for (MdcEquipment mdcEquipment : equipmentList) {
                // 判断利用率
                // step.1 查询消息中此设备报警时间
                SysAnnouncement sysAnnouncement = sysAnnouncementService.findLastMessage("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备利用率低于正常值报警!");
                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()) {
@@ -115,7 +141,19 @@
                        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,6 +166,21 @@
                    }
                    if (flag) {
                        // 上报
                        // 查询设备管理员
                        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("预警消息");
@@ -136,6 +189,24 @@
                        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);
                        }
                    }
                }
            }
            quartzLog.setIsSuccess(0);
@@ -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)));