zhongrijian
2024-06-01 b3eac89b903fd1b59a8ca2a8460f073b9180079c
新增超过防洪高水位告警
5 files modified
105 ■■■■■ changed files
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/constant/ZtApiDataColumnConstant.java 15 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/constant/ZtApiUrlConstant.java 5 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/AsyncNoticeHandle.java 51 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeStrategyImpl.java 32 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/strategy/NoticeStrategyContext.java 2 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/constant/ZtApiDataColumnConstant.java
@@ -487,4 +487,19 @@
        add("res_nm");
        add("video_name");
    }};
    /**
     * 42 水位超防洪高水位告警处理
     */
    public static List<String>  topLevOfFloAlertList = new ArrayList<String>()
    {{
        add("town_nm");
        add("res_nm");
        add("rz");
        add("over_des_wtr_level");
        add("diff_dam");
        add("drp_24");
        add("flpr_high_stag");
    }};
}
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/constant/ZtApiUrlConstant.java
@@ -171,4 +171,9 @@
     */
    public static final String alarm_video_offline_api = "/services/1234567890ABCDEFGHIJKLMN/wmst_not_online_list/api?pageNo=1&pageSize=9999";
    /**
     * 42. 超防洪高水位告警
     */
    public static final String over_flpr_rz_warn_api = "/services/1234567890ABCDEFGHIJKLMN/over_flpr_rz/warn";
}
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/AsyncNoticeHandle.java
@@ -2375,4 +2375,55 @@
        }
        return map;
    }
    /**
     * 策略42 站内信----- 超防洪高水位告警
     *
     * @param alarmRule       告警规则
     * @param alarmRuleDetail 告警规则详情
     * @param ztData            中台数据
     * @param columnList      需要展示的数据字段
     * @param flag            是否显示日期
     * @param adCode          行政区划
     * @param isSendStation   是否站内信
     * @param uuid            随机生成id
     * @return
     */
    public void topLevOfFloAlertHandleStation(AlarmRule alarmRule,
                                              AlarmRuleDetail alarmRuleDetail,
                                              JSONArray data,
                                              List<String> columnList,
                                              boolean flag,
                                              String adCode,
                                              boolean isSendStation,
                                              String uuid,
                                              String isDay
    ) {
        SmsRequestTemplate smsRequestTemplate
            = noticeHandle.getSendSmsTemplate(data, alarmRule, alarmRuleDetail, columnList, flag, adCode, uuid, isSendStation);
        // 拼接后面内容
        if (smsRequestTemplate.getPersonVOList().size() > 0) {
            for (List<String> list : smsRequestTemplate.getTemplateContent()) {
                String remark = StringUtil.format("水位:{}\n防洪高水位:{}米\n超防洪高水位:{}米\n",
                    list.get(9), list.get(13), String.format("%.2f", Double.valueOf(list.get(9).replace("米", "")) - Double.valueOf(list.get(13)))
                );
                list.remove(13);
                System.out.println(remark);
                // 依次添加行政责任人,主管部门责任人,技术责任人,巡查责任人信息(姓名,联系电话)
                noticeHandle.addWaterMoreDesignPatrolTechnologyInfo(list, "1,2,4,5");
                // 拼接市县水利部人员姓名及联系方式
                noticeHandle.addCityCountyBusinessPersonInfo(list);
                // 保存告警记录信息
                AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list, alarmRule, uuid,remark);
                if (null != alarmRecord) {
                    list.add(alarmRecord.getId().toString());
                }
            }
            //如果参数是day,表示是每天生成告警,不需要发信息
            if (isDay.equals("day")) return;
            // 保存站内信记录信息
            noticeHandle.saveInStationInfo(smsRequestTemplate, alarmRule);
        }
    }
}
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeStrategyImpl.java
@@ -1474,6 +1474,38 @@
        return "视频信息缺失告警";
    }
    /**
     * 策略42: 水位防洪高水位告警
     *
     * @param arg1
     * @param arg2
     * @return
     */
    public String topLevOfFloAlertHandle(String arg1, String arg2) {
        String adCode = null;
        String uuid = UUID.randomUUID().toString();
        // 查询当前策略对应的告警规则信息
        AlarmRule alarmRule = alarmRuleService.getOne(new QueryWrapper<AlarmRule>().eq("rule_name", arg1));
        // 调用中台服务接口查询数据
        JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.over_flpr_rz_warn_api);
        // 获取告警规则详情,判断告警类型(短信,电话,站内信)
        if (null != alarmRule) {
            // 查询告警详情信息
            List<AlarmRuleDetail> alarmRuleDetailList = alarmRuleDetailService.list(new QueryWrapper<AlarmRuleDetail>().eq("alarm_rule_id", alarmRule.getId()));
            if (alarmRuleDetailList.size() > 0) {
                // 遍历
                for (AlarmRuleDetail alarmRuleDetail : alarmRuleDetailList) {
                    if (alarmRuleDetail.getAlarmMode().equals("站内信")) {
                        asyncNoticeHandle.topLevOfFloAlertHandleStation(alarmRule, alarmRuleDetail, ztData, ZtApiDataColumnConstant.topLevOfFloAlertList, true, adCode, true, uuid,arg2);
                    }
                }
            }
        }
        // 返回
        return "水位防洪高水位告警";
    }
    private JSONArray filterData(JSONArray ztData, String level) {
        JSONArray array = new JSONArray();
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/strategy/NoticeStrategyContext.java
@@ -118,6 +118,8 @@
        strategyMap.put("damSafetySlOver10Handle",(arg1,arg2)->noticeStrategyImpl.damSafetySlOver10Handle(arg1,arg2));
        //41            视频信息接收不到
        strategyMap.put("videoOfflineHandle",(arg1,arg2)->noticeStrategyImpl.videoOfflineHandle(arg1,arg2));
        //42            水位-超防洪高水位告警
        strategyMap.put("topLevOfFloAlertHandle",(arg1,arg2)->noticeStrategyImpl.topLevOfFloAlertHandle(arg1,arg2));
    }
    /**