skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/alarmRule/controller/AlarmRecordController.java
@@ -162,4 +162,15 @@ return R.data(alarmRecordService.statisticAlarmRecord(alarmRecord)); } /** * 告警统计按告警分类-等级统计 * @param alarmRecord * @return */ @ApiOperation(value="告警记录-告警统计按告警分类-等级统计", notes="告警记录-告警统计按告警分类-等级统计") @GetMapping(value = "/statisticAlaByTypeAndLev") public R statisticAlaByTypeAndLev(AlarmRecordVO alarmRecord) { return R.data(alarmRecordService.statisticAlaByTypeAndLev(alarmRecord)); } } skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/alarmRule/mapper/AlarmRecordMapper.java
@@ -74,4 +74,11 @@ List<StatisticAlarmRecord> statisticsPie(@Param("alarmRecord") AlarmRecordVO alarmRecordVO); /** * 告警统计按告警分类-等级统计 * @param alarmRecord * @return */ List<StatisticAlarmRecord> statisticAlaByTypeAndLev(@Param("alarmRecord") AlarmRecordVO alarmRecord); } skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/alarmRule/mapper/AlarmRecordMapper.xml
@@ -404,4 +404,44 @@ order by field(rule.alarm_level,'蓝色预警','黄色预警','橙色预警','红色预警') </select> <!--告警统计按告警分类-等级统计--> <select id="statisticAlaByTypeAndLev" resultType="cn.gistack.alerts.alarmRule.vo.StatisticAlarmRecord"> SELECT count(*) num,type as ruleName,rule.alarm_level alarmLevel FROM YWXT.sm_alarm_record record LEFT JOIN ywxt.SM_ALARM_RULE rule on rule.id = record.alarm_rule_id LEFT JOIN SJZT_MD."att_res_base" arb on arb."guid" = record.reservoir_number LEFT JOIN SJZT_MD."rel_res_bas_loc" rrbl ON rrbl."res_guid" = record.reservoir_number LEFT JOIN SJZT_MD."att_bas_base" abb ON abb."code" = rrbl."bas_guid" LEFT JOIN SJZT_MD."att_bas_base" pabb ON abb."p_code" = pabb."code" where record.is_deleted = 0 and rule.type in ('渗压监测','渗流监测','变形监测','水情监测','雨情监测') <if test="alarmRecord.reservoirName!=null and alarmRecord.reservoirName!=''"> and arb."name" like concat('%',#{alarmRecord.reservoirName},'%') </if> <if test="alarmRecord.alarmRuleType!=null and alarmRecord.alarmRuleType!=''"> and rule.alarm_rule_type = #{alarmRecord.alarmRuleType} </if> <if test="alarmRecord.createAlarmType!=null and alarmRecord.createAlarmType!=''"> and rule.create_alarm_type = #{alarmRecord.createAlarmType} </if> <if test="alarmRecord.ruleName!=null and alarmRecord.ruleName!=''"> and rule.rule_name = #{alarmRecord.ruleName} </if> <if test="alarmRecord.startTime!=null and alarmRecord.startTime!=''"> and record.create_time >= #{alarmRecord.startTime} </if> <if test="alarmRecord.endTime!=null and alarmRecord.endTime!=''"> and record.create_time <= #{alarmRecord.endTime} </if> <if test="alarmRecord.resGuids != null and alarmRecord.resGuids !=''"> AND record.reservoir_number in <foreach collection="alarmRecord.resGuids.split(',')" item="item" index="index" open="(" separator="," close=")"> #{item} </foreach> </if> group by type,rule.alarm_level </select> </mapper> skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/alarmRule/service/AlarmRecordService.java
@@ -44,4 +44,11 @@ Boolean updateStatus(AlarmRecord alarmRecord); Object statisticsPie(AlarmRecordVO alarmRecordVO); /** * 告警统计按告警分类-等级统计 * @param alarmRecord * @return */ Object statisticAlaByTypeAndLev(AlarmRecordVO alarmRecord); } skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/alarmRule/service/impl/AlarmRecordServiceImpl.java
@@ -182,4 +182,96 @@ List<StatisticAlarmRecord> list = baseMapper.statisticsPie(alarmRecordVO); return list; } /** * 告警统计按告警分类-等级统计 * @param alarmRecord * @return */ @Override public Object statisticAlaByTypeAndLev(AlarmRecordVO alarmRecord) { Map<String, Object> map = new HashMap<>(4); List<StatisticAlarmRecord> recordList = baseMapper.statisticAlaByTypeAndLev(alarmRecord); if (recordList.size()>0){ map.put("水情监测",setAlaStatisticListByData(recordList,"水情监测")); map.put("雨情监测",setAlaStatisticListByData(recordList,"雨情监测")); map.put("渗压监测",setAlaStatisticListByData(recordList,"渗压监测")); map.put("渗流监测",setAlaStatisticListByData(recordList,"渗流监测")); map.put("变形监测",setAlaStatisticListByData(recordList,"变形监测")); }else { map.put("水情监测",setAlaStatisticList()); map.put("雨情监测",setAlaStatisticList()); map.put("渗压监测",setAlaStatisticList()); map.put("渗流监测",setAlaStatisticList()); map.put("变形监测",setAlaStatisticList()); } return map; } /** * 设置组装预警统计数据-带参数 * @return */ private List<StatisticAlarmRecord> setAlaStatisticListByData(List<StatisticAlarmRecord> recordList, String typeName) { List<StatisticAlarmRecord> list = new ArrayList<>(); List<String> levelList = new ArrayList<>(){{ add("蓝色预警"); add("黄色预警"); add("橙色预警"); add("红色预警"); }}; List<String> alarmLevelList = recordList.stream() .filter(a -> a.getRuleName().equals(typeName)) .map(StatisticAlarmRecord::getAlarmLevel) .distinct() .collect(Collectors.toList()); // 先取差集 List<String> diffList = levelList.stream().filter(item -> !alarmLevelList.contains(item)).collect(Collectors.toList()); for (StatisticAlarmRecord alarmRecord : recordList) { if (alarmRecord.getRuleName().equals(typeName)){ StatisticAlarmRecord statisticAlarmRecord = new StatisticAlarmRecord(); statisticAlarmRecord.setAlarmLevel(alarmRecord.getAlarmLevel()); statisticAlarmRecord.setNum(alarmRecord.getNum()); list.add(statisticAlarmRecord); } } if (diffList.size()>0){ for (String level : diffList) { StatisticAlarmRecord statisticAlarmRecord = new StatisticAlarmRecord(); statisticAlarmRecord.setAlarmLevel(level); statisticAlarmRecord.setNum(0); list.add(statisticAlarmRecord); } } return list; } /** * 设置组装预警统计数据 * @return */ private List<StatisticAlarmRecord> setAlaStatisticList() { List<StatisticAlarmRecord> list = new ArrayList<>(); StatisticAlarmRecord statisticAlarmRecord1 = new StatisticAlarmRecord(); statisticAlarmRecord1.setAlarmLevel("蓝色预警"); statisticAlarmRecord1.setNum(0); StatisticAlarmRecord statisticAlarmRecord2 = new StatisticAlarmRecord(); statisticAlarmRecord2.setAlarmLevel("黄色预警"); statisticAlarmRecord2.setNum(0); StatisticAlarmRecord statisticAlarmRecord3 = new StatisticAlarmRecord(); statisticAlarmRecord3.setAlarmLevel("橙色预警"); statisticAlarmRecord3.setNum(0); StatisticAlarmRecord statisticAlarmRecord4 = new StatisticAlarmRecord(); statisticAlarmRecord4.setAlarmLevel("红色预警"); statisticAlarmRecord4.setNum(0); list.add(statisticAlarmRecord1); list.add(statisticAlarmRecord2); list.add(statisticAlarmRecord3); list.add(statisticAlarmRecord4); return list; } }