lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningEquipmentStatusJob.java
@@ -31,6 +31,7 @@ import java.time.LocalDate; import java.util.Date; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** @@ -102,10 +103,12 @@ 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()); // 判断利用率 // step.1 查询消息中此设备报警时间 SysAnnouncement sysAnnouncement = sysAnnouncementService.findLastMessage("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备利用率低于正常值报警!"); SysAnnouncement sysAnnouncement = sysAnnouncementService.findLastMessage("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备利用率低于正常值!"); boolean flag1 = true; if (sysAnnouncement != null) { Date createTime = sysAnnouncement.getCreateTime(); @@ -130,18 +133,18 @@ if (flag) { // 上报 MessageDTO messageDTO = new MessageDTO(); messageDTO.setTitle("设备利用率报警!"); messageDTO.setTitle("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备利用率低于正常值!"); messageDTO.setCategory(CommonConstant.MSG_CATEGORY_2); messageDTO.setFromUser("admin"); messageDTO.setToUser("admin"); messageDTO.setContent("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备利用率低于正常值报警!"); messageDTO.setContent("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备利用率低于正常值!"); sysBaseApi.sendSysAnnouncement(messageDTO); } } } // 判断设备状态长时间无变化审批人 SysAnnouncement sysAnnouncement1 = sysAnnouncementService.findLastMessage("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备状态长期无变化报警!"); 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); @@ -170,28 +173,28 @@ if (adminList != null && !adminList.isEmpty()) { for (SysUser sysUser : adminList) { MessageDTO messageDTO = new MessageDTO(); messageDTO.setTitle("设备状态长期无变化报警!"); messageDTO.setTitle("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备状态长期无变化!"); messageDTO.setCategory(CommonConstant.MSG_CATEGORY_2); messageDTO.setFromUser("admin"); messageDTO.setToUser(sysUser.getUsername()); messageDTO.setContent("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备状态长期无变化报警!"); messageDTO.setContent("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备状态长期无变化!"); sysBaseApi.sendSysAnnouncement(messageDTO); } } else { MessageDTO messageDTO = new MessageDTO(); messageDTO.setTitle("设备状态长期无变化报警!"); messageDTO.setTitle("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备状态长期无变化!"); messageDTO.setCategory(CommonConstant.MSG_CATEGORY_2); messageDTO.setFromUser("admin"); messageDTO.setToUser("admin"); messageDTO.setContent("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备状态长期无变化报警!"); 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("设备状态长期无变化报警!"); mdcMessageApproval.setMsgContent("设备编号为 [" + 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()); lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningMonitoringSpeedJob.java
@@ -27,6 +27,8 @@ import java.math.RoundingMode; import java.util.Date; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * @author Lius @@ -77,7 +79,9 @@ range = new BigDecimal(dictModelList.get(0).getValue()); } Map<String, String> proNamesByEquipmentIds = mdcEquipmentService.getProNamesByEquipmentIds(mdcEquipmentList.stream().map(MdcEquipment::getId).collect(Collectors.toList())); for (MdcEquipment mdcEquipment : mdcEquipmentList) { String productionName = proNamesByEquipmentIds.get(mdcEquipment.getId()); String saveTableName = mdcEquipment.getSaveTableName(); MdcEquipmentDto mdcEquipmentDto = new MdcEquipmentDto(); @@ -86,7 +90,7 @@ if (mdcEquipmentDto != null && StringUtils.isNotBlank(mdcEquipmentDto.getSpindlespeed()) && StringUtils.isNotBlank(mdcEquipmentDto.getActualspindlespeed())) { MessageDTO messageDTO = new MessageDTO(); messageDTO.setTitle("设备运行转速报警!"); messageDTO.setTitle("【设备异常提醒】" + productionName + "车间设备 [" + mdcEquipment.getEquipmentId() + "] 运行转速!"); messageDTO.setCategory(CommonConstant.MSG_CATEGORY_2); messageDTO.setFromUser("admin"); messageDTO.setToUser("admin"); @@ -102,15 +106,15 @@ if (range.equals(BigDecimal.ZERO)) { if (spindlespeed.compareTo(actualspindlespeed) == 1) { // 设定值大于实际值 低 messageDTO.setContent("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备运行转速低报警!"); messageDTO.setContent("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备运行转速低!"); sysBaseApi.sendSysAnnouncement(messageDTO); mdcOverrunAlarm.setAlarmContent("设备运行转速比NC代码设定值低报警"); mdcOverrunAlarm.setAlarmContent("设备运行转速比NC代码设定值低"); mdcOverrunAlarmService.save(mdcOverrunAlarm); } else if (spindlespeed.compareTo(actualspindlespeed) == -1) { // 设定值小于实际值 高 messageDTO.setContent("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备运行转速高报警!"); messageDTO.setContent("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备运行转速高!"); sysBaseApi.sendSysAnnouncement(messageDTO); mdcOverrunAlarm.setAlarmContent("设备运行转速比NC代码设定值高报警"); mdcOverrunAlarm.setAlarmContent("设备运行转速比NC代码设定值高"); mdcOverrunAlarmService.save(mdcOverrunAlarm); } } else { @@ -120,15 +124,15 @@ if (actualspindlespeed.compareTo(max) == 1 || actualspindlespeed.compareTo(min) == -1) { if (spindlespeed.compareTo(actualspindlespeed) == 1) { // 设定值大于实际值 低 messageDTO.setContent("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备运行转速低报警!"); messageDTO.setContent("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备运行转速低!"); sysBaseApi.sendSysAnnouncement(messageDTO); mdcOverrunAlarm.setAlarmContent("设备运行转速比NC代码设定值低报警"); mdcOverrunAlarm.setAlarmContent("设备运行转速比NC代码设定值低"); mdcOverrunAlarmService.save(mdcOverrunAlarm); } else if (spindlespeed.compareTo(actualspindlespeed) == -1) { // 设定值小于实际值 高 messageDTO.setContent("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备运行转速高报警!"); messageDTO.setContent("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备运行转速高!"); sysBaseApi.sendSysAnnouncement(messageDTO); mdcOverrunAlarm.setAlarmContent("设备运行转速比NC代码设定值高报警"); mdcOverrunAlarm.setAlarmContent("设备运行转速比NC代码设定值高"); mdcOverrunAlarmService.save(mdcOverrunAlarm); } } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEfficiencyReportMapper.xml
@@ -179,17 +179,29 @@ #{ id } </foreach> </if> <if test="vo.driveType != null and vo.driveType != null"> AND me.drive_type = #{ vo.driveType } <if test="vo.driveTypeList != null and vo.driveTypeList .size() > 0 "> AND me.drive_type IN <foreach collection="vo.driveTypeList" item="driveType" index="index" open="(" close=")" separator=","> #{ driveType } </foreach> </if> <if test="vo.equipmentType != null and vo.equipmentType != '' "> AND me.equipment_type = #{ vo.equipmentType } <if test="vo.equipmentTypeList != null and vo.equipmentTypeList.size() > 0 "> AND me.equipment_type IN <foreach collection="vo.equipmentTypeList" item="equipmentType" index="index" open="(" close=")" separator=","> #{ equipmentType } </foreach> </if> <if test="vo.deviceLevel != null and vo.deviceLevel != '' "> AND me.device_level = #{vo.deviceLevel} <if test="vo.deviceLevelList != null and vo.deviceLevelList.size() > 0 "> AND me.device_level IN <foreach collection="vo.deviceLevelList" item="deviceLevel" index="index" open="(" close=")" separator=","> #{ deviceLevel } </foreach> </if> <if test="vo.deviceCategory != null and vo.deviceCategory != '' "> AND me.device_category = #{vo.deviceCategory} <if test="vo.deviceCategoryList != null and vo.deviceCategoryList.size() > 0 "> AND me.device_category IN <foreach collection="vo.deviceCategoryList" item="deviceCategory" index="index" open="(" close=")" separator=","> #{ deviceCategory } </foreach> </if> <if test="vo.deviceImportanceLevel != null and vo.deviceImportanceLevel != '' "> AND me.device_importance_level = #{vo.deviceImportanceLevel} lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java
@@ -1344,6 +1344,10 @@ if (vo.getEquipmentIdList() == null || vo.getEquipmentIdList().isEmpty()) { return result; } vo.setDeviceCategoryList(Arrays.asList(vo.getDeviceCategory().split(","))); vo.setDeviceLevelList(Arrays.asList(vo.getDeviceLevel().split(","))); vo.setDriveTypeList(Arrays.asList(vo.getDriveType().split(","))); vo.setEquipmentTypeList(Arrays.asList(vo.getEquipmentType().split(","))); // 查询原始数据 List<MdcComAnaDto> resultDtos = mdcEfficiencyReportMapper.comparativeAnalysis(vo); lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java
@@ -767,8 +767,9 @@ // List<MdcEquipment> equipmentList = super.list(new LambdaQueryWrapper<MdcEquipment>().eq(MdcEquipment::getDriveType, "FANUC")); List<MdcEquipment> equipmentList = super.list(); //List<MdcEquipment> equipmentList = super.list(new LambdaQueryWrapper<MdcEquipment>().eq(MdcEquipment::getEquipmentId, "2140198")); Map<String, String> proNamesByEquipmentIds = this.getProNamesByEquipmentIds(equipmentList.stream().map(MdcEquipment::getId).collect(Collectors.toList())); for (MdcEquipment mdcEquipment : equipmentList) { String productionName = proNamesByEquipmentIds.get(mdcEquipment.getId()); List<MdcEquipmentThreshold> mdcEquipmentThresholdList = mdcEquipmentThresholdService.list(new LambdaQueryWrapper<MdcEquipmentThreshold>().eq(MdcEquipmentThreshold::getControlSystemType, mdcEquipment.getDriveType())); if (mdcEquipmentThresholdList != null && !mdcEquipmentThresholdList.isEmpty()) { String saveTableName = mdcEquipment.getSaveTableName(); @@ -791,7 +792,7 @@ Integer max = mdcEquipmentThreshold.getMaxThreshold(); Integer min = mdcEquipmentThreshold.getMinThreshold(); MessageDTO messageDTO = new MessageDTO(); messageDTO.setTitle("设备" + mdcEquipmentThreshold.getChineseName() + "报警!"); messageDTO.setTitle("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备" + mdcEquipmentThreshold.getChineseName() + "报警!"); messageDTO.setCategory(CommonConstant.MSG_CATEGORY_2); messageDTO.setFromUser("admin"); messageDTO.setToUser("admin"); @@ -801,15 +802,15 @@ mdcOverrunAlarm.setRealValue(actualValue.toString()); if (actualValue > max) { // 高 messageDTO.setContent("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备" + mdcEquipmentThreshold.getChineseName() + "高报警!"); messageDTO.setContent("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备" + mdcEquipmentThreshold.getChineseName() + "高报警!"); sysBaseApi.sendSysAnnouncement(messageDTO); mdcOverrunAlarm.setAlarmContent(mdcEquipmentThreshold.getChineseName() + "高报警"); mdcOverrunAlarm.setAlarmContent("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备" + mdcEquipmentThreshold.getChineseName() + "高报警!"); mdcOverrunAlarmService.save(mdcOverrunAlarm); } else if (actualValue < min) { // 低 messageDTO.setContent("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备" + mdcEquipmentThreshold.getChineseName() + "低报警!"); messageDTO.setContent("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备" + mdcEquipmentThreshold.getChineseName() + "低报警!"); sysBaseApi.sendSysAnnouncement(messageDTO); mdcOverrunAlarm.setAlarmContent(mdcEquipmentThreshold.getChineseName() + "低报警"); mdcOverrunAlarm.setAlarmContent("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备" + mdcEquipmentThreshold.getChineseName() + "低报警!"); mdcOverrunAlarmService.save(mdcOverrunAlarm); } } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/ComparativeAnalysisQueryVo.java
@@ -16,6 +16,8 @@ */ private String driveType; private List<String> driveTypeList; /** * 开始时间 -> 20220101 */ @@ -45,16 +47,23 @@ * 设备类型 */ private String equipmentType; private List<String> equipmentTypeList; /** * 设备级别 */ private String deviceLevel; private List<String> deviceLevelList; /** * 设备种类 */ private String deviceCategory; private List<String> deviceCategoryList; /** * 重要程度 */ private Integer deviceImportanceLevel; }