zrj
2024-06-19 ae09f9370d15087692b39a6938f764ca9698bf11
新增告警统计
5 files modified
157 ■■■■■ changed files
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/alarmRule/controller/AlarmRecordController.java 11 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/alarmRule/mapper/AlarmRecordMapper.java 7 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/alarmRule/mapper/AlarmRecordMapper.xml 40 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/alarmRule/service/AlarmRecordService.java 7 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/alarmRule/service/impl/AlarmRecordServiceImpl.java 92 ●●●●● patch | view | raw | blame | history
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 &lt;= #{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;
    }
}