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