From a3cfd941f3ccb05906ecbe99e6993f96770b51ed Mon Sep 17 00:00:00 2001 From: Lius <Lius2225@163.com> Date: 星期四, 10 七月 2025 10:43:05 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningEquipmentStatusJob.java | 143 ++++++++++++++++++++++++++++++++++++----------- 1 files changed, 110 insertions(+), 33 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 6c79675..b3b180a 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 @@ -1,14 +1,17 @@ package org.jeecg.modules.mdc.job; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.api.dto.message.MessageDTO; import org.jeecg.common.constant.CommonConstant; +import org.jeecg.common.constant.enums.MessageSplitTypeEnum; 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,14 +32,14 @@ import java.time.LocalDate; import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * @author Lius * @Description: 鍒╃敤鐜囨甯稿�硷紝璁惧鐘舵�侀暱鏈熸棤鍙樺寲鎶ヨ * @date 2024/1/17 14:10 */ -@PersistJobDataAfterExecution -@DisallowConcurrentExecution @Slf4j public class RunningEquipmentStatusJob implements Job { @@ -61,6 +67,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(); @@ -72,8 +84,8 @@ log.info("璁惧鐘舵�侀暱鏈熸棤鍙樺寲鎶ヨ浠诲姟 RunningEquipmentStatusJob start! 鏃堕棿:" + DateUtils.getNow()); 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(); +// 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; @@ -81,40 +93,69 @@ equipmentRateJudge = Integer.valueOf(dictModelList1.get(0).getValue()); } // 鑾峰彇鍒╃敤鐜囨甯稿�� - List<DictModel> dictModelList2 = sysDictService.queryEnableDictItemsByCode(CommonConstant.DICT_EQUIPMENT_SPEED_JUDGE); + List<DictModel> dictModelList2 = sysDictService.queryEnableDictItemsByCode(CommonConstant.DICT_EQUIPMENT_RATE_NORMAL); Integer equipmentRateNormal = 20; if (dictModelList2 != null && !dictModelList2.isEmpty()) { equipmentRateNormal = Integer.valueOf(dictModelList2.get(0).getValue()); } // 鑾峰彇璁惧鐘舵�佸ぉ鏁� - List<DictModel> dictModelList3 = sysDictService.queryEnableDictItemsByCode(CommonConstant.DICT_EQUIPMENT_RATE_NORMAL); + List<DictModel> dictModelList3 = sysDictService.queryEnableDictItemsByCode(CommonConstant.DICT_EQUIPMENT_SPEED_JUDGE); Integer equipmentStatusJudge = 5; if (dictModelList3 != null && !dictModelList3.isEmpty()) { equipmentStatusJudge = Integer.valueOf(dictModelList3.get(0).getValue()); } + Map<String, String> proNamesByEquipmentIds = mdcEquipmentService.getProNamesByEquipmentIds(equipmentList.stream().map(MdcEquipment::getId).collect(Collectors.toList())); for (MdcEquipment mdcEquipment : equipmentList) { + String productionName = proNamesByEquipmentIds.get(mdcEquipment.getId()); // 鍒ゆ柇鍒╃敤鐜� - 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.setCategory("棰勮娑堟伅"); - messageDTO.setFromUser("admin"); - messageDTO.setToUser("admin"); - messageDTO.setContent("璁惧缂栧彿涓� [" + mdcEquipment.getEquipmentId() + "] 鐨勮澶囧埄鐢ㄧ巼浣庝簬姝e父鍊兼姤璀︼紒"); - sysBaseApi.sendSysAnnouncement(messageDTO); + // step.1 鏌ヨ娑堟伅涓璁惧鎶ヨ鏃堕棿 + SysAnnouncement sysAnnouncement = sysAnnouncementService.findLastMessage("銆愯澶囧紓甯告彁閱掋��" + productionName + "杞﹂棿璁惧缂栧彿涓� [" + 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("銆愯澶囧紓甯告彁閱掋��" + productionName + "杞﹂棿璁惧缂栧彿涓� [" + mdcEquipment.getEquipmentId() + "] 鐨勮澶囧埄鐢ㄧ巼浣庝簬姝e父鍊硷紒"); + messageDTO.setCategory(MessageSplitTypeEnum.deviceRunError.getNote()); + messageDTO.setMessageType(MessageSplitTypeEnum.deviceRunError.getType()); + messageDTO.setFromUser("admin"); + messageDTO.setToUser("admin"); + messageDTO.setContent("銆愯澶囧紓甯告彁閱掋��" + productionName + "杞﹂棿璁惧缂栧彿涓� [" + mdcEquipment.getEquipmentId() + "] 鐨勮澶囧埄鐢ㄧ巼浣庝簬姝e父鍊硷紒"); + sysBaseApi.sendSysAnnouncement(messageDTO); + } + } + } + + // 鍒ゆ柇璁惧鐘舵�侀暱鏃堕棿鏃犲彉鍖栧鎵逛汉 + SysAnnouncement sysAnnouncement1 = sysAnnouncementService.findLastMessage("銆愯澶囧紓甯告彁閱掋��" + productionName + "杞﹂棿璁惧缂栧彿涓� [" + 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) { @@ -127,12 +168,48 @@ } if (flag) { // 涓婃姤 - MessageDTO messageDTO = new MessageDTO(); - 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("銆愯澶囧紓甯告彁閱掋��" + productionName + "杞﹂棿璁惧缂栧彿涓� [" + mdcEquipment.getEquipmentId() + "] 鐨勮澶囩姸鎬侀暱鏈熸棤鍙樺寲锛�"); + messageDTO.setCategory(MessageSplitTypeEnum.deviceRunError.getNote()); + messageDTO.setMessageType(MessageSplitTypeEnum.deviceRunError.getType()); + messageDTO.setFromUser("admin"); + messageDTO.setToUser(sysUser.getUsername()); + messageDTO.setContent("銆愯澶囧紓甯告彁閱掋��" + productionName + "杞﹂棿璁惧缂栧彿涓� [" + mdcEquipment.getEquipmentId() + "] 鐨勮澶囩姸鎬侀暱鏈熸棤鍙樺寲锛�"); + sysBaseApi.sendSysAnnouncement(messageDTO); + } + } else { + MessageDTO messageDTO = new MessageDTO(); + messageDTO.setTitle("銆愯澶囧紓甯告彁閱掋��" + productionName + "杞﹂棿璁惧缂栧彿涓� [" + mdcEquipment.getEquipmentId() + "] 鐨勮澶囩姸鎬侀暱鏈熸棤鍙樺寲锛�"); + messageDTO.setCategory(MessageSplitTypeEnum.deviceRunError.getNote()); + messageDTO.setMessageType(MessageSplitTypeEnum.deviceRunError.getType()); + messageDTO.setFromUser("admin"); + messageDTO.setToUser("admin"); + messageDTO.setContent("銆愯澶囧紓甯告彁閱掋��" + productionName + "杞﹂棿璁惧缂栧彿涓� [" + mdcEquipment.getEquipmentId() + "] 鐨勮澶囩姸鎬侀暱鏈熸棤鍙樺寲锛�"); + sysBaseApi.sendSysAnnouncement(messageDTO); + } + + if (adminList != null && !adminList.isEmpty() && superList != null && !superList.isEmpty()) { + MdcMessageApproval mdcMessageApproval = new MdcMessageApproval(); + mdcMessageApproval.setEquipmentId(mdcEquipment.getEquipmentId()); + mdcMessageApproval.setTitile("銆愯澶囧紓甯告彁閱掋��" + productionName + "杞﹂棿璁惧缂栧彿涓� [" + mdcEquipment.getEquipmentId() + "] 鐨勮澶囩姸鎬侀暱鏈熸棤鍙樺寲锛�"); + mdcMessageApproval.setMsgContent("銆愯澶囧紓甯告彁閱掋��" + productionName + "杞﹂棿璁惧缂栧彿涓� [" + 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); + } } } } @@ -141,7 +218,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