zhongrj
2023-07-26 6735eaad855055d7a7e1149f3a01ebff1e29005b
雨量大雨,暴雨,6小时告警新增
6 files modified
299 ■■■■ changed files
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/constant/ZtApiDataColumnConstant.java 33 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/constant/ZtApiUrlConstant.java 6 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/AsyncNoticeHandle.java 113 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeHandle.java 25 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeStrategyImpl.java 39 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsServiceImpl.java 83 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/constant/ZtApiDataColumnConstant.java
@@ -64,4 +64,37 @@
        add("drp_24");
    }};
    /**
     * 已降大雨告警
     */
    public static List<String>  alreadyHeavyRainList = new ArrayList<String>()
    {{
        add("town_nm");
        add("res_nm");
        add("alarm_val");
        add("rz");
    }};
    /**
     * 已降暴雨告警
     */
    public static List<String> alreadyRainstormList = new ArrayList<String>()
    {{
        add("town_nm");
        add("res_nm");
        add("alarm_val");
        add("rz");
    }};
    /**
     * 6小时降雨告警
     */
    public static List<String> sixHourRainList = new ArrayList<String>()
    {{
        add("county_nm,town_nm");
        add("res_nm");
        add("alarm_val");
        add("rz");
    }};
}
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/constant/ZtApiUrlConstant.java
@@ -50,16 +50,16 @@
    /**
     * 已降大雨告警
     */
    public static final String alam_rain_dy_api = "/services/1234567890ABCDEFGHIJKLMN/alarm/rain/dy/api";
    public static final String alarm_rain_dy_api = "/services/1234567890ABCDEFGHIJKLMN/alarm/rain/dy/api";
    /**
     * 已降暴雨告警
     */
    public static final String alam_rain_by_api = "/services/1234567890ABCDEFGHIJKLMN/alarm/rain/by/api";
    public static final String alarm_rain_by_api = "/services/1234567890ABCDEFGHIJKLMN/alarm/rain/by/api";
    /**
     * 6小时降雨告警
     */
    public static final String alam_rain_6_over_api = "/services/1234567890ABCDEFGHIJKLMN/alarm/rain/6/over/api";
    public static final String alarm_rain_6_over_api = "/services/1234567890ABCDEFGHIJKLMN/alarm/rain/6/over/api";
}
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/AsyncNoticeHandle.java
@@ -224,4 +224,117 @@
        return map;
    }
    /**
     * 策略15: 已降大雨告警
     *
     * @param templateId
     * @param uuid
     * @param alarmRule
     * @param adCode
     * @param isSendStation 是否发送站内信
     * @return
     */
    @Async
    public Map<String, Object> alreadyHeavyRainHandle(String templateId, String uuid, AlarmRule alarmRule, String adCode, boolean isSendStation) {
        Map<String, Object> map = new HashMap<>();
        // 调用中台服务接口查询数据
        JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.alarm_rain_dy_api);
        // 只发短信,将发短信信息组装好
        SmsRequestTemplate smsRequestTemplate
            = noticeHandle.getSendSmsTemplate(ztData, templateId, alarmRule, ZtApiDataColumnConstant.alreadyHeavyRainList, false, adCode,uuid);
        // 拼接后面内容
        if (smsRequestTemplate.getPersonVOList().size() > 0) {
            for (List<String> list : smsRequestTemplate.getTemplateContent()) {
                // 依次添加巡查责任人技术责任人信息姓名
                noticeHandle.addPatrolTechnologyInfo(list);
                // 拼接市县水利部人员姓名及联系方式
                noticeHandle.addCityCountyBusinessPersonInfo(list);
                // 保存告警记录信息
                AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list, alarmRule, uuid);
                if (null != alarmRecord) {
                    list.add(alarmRecord.getId().toString());
                }
            }
            map = smsService.sendSignMsg(smsRequestTemplate);
            // 调用短信服务
            return map;
        }
        return map;
    }
    /**
     * 策略16: 已降暴雨告警
     *
     * @param templateId
     * @param uuid
     * @param alarmRule
     * @param adCode
     * @param isSendStation 是否发送站内信
     * @return
     */
    @Async
    public Map<String, Object> alreadyRainstormHandle(String templateId, String uuid, AlarmRule alarmRule, String adCode, boolean isSendStation) {
        Map<String, Object> map = new HashMap<>();
        // 调用中台服务接口查询数据
        JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.alarm_rain_by_api);
        // 只发短信,将发短信信息组装好
        SmsRequestTemplate smsRequestTemplate
            = noticeHandle.getSendSmsTemplate(ztData, templateId, alarmRule, ZtApiDataColumnConstant.alreadyRainstormList, false, adCode,uuid);
        // 拼接后面内容
        if (smsRequestTemplate.getPersonVOList().size() > 0) {
            for (List<String> list : smsRequestTemplate.getTemplateContent()) {
                // 依次添加巡查责任人技术责任人信息姓名
                noticeHandle.addPatrolTechnologyInfo(list);
                // 拼接市县水利部人员姓名及联系方式
                noticeHandle.addCityCountyBusinessPersonInfo(list);
                // 保存告警记录信息
                AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list, alarmRule, uuid);
                if (null != alarmRecord) {
                    list.add(alarmRecord.getId().toString());
                }
            }
            map = smsService.sendSignMsg(smsRequestTemplate);
            // 调用短信服务
            return map;
        }
        return map;
    }
    /**
     * 策略18: 6小时降雨告警
     *
     * @param templateId
     * @param uuid
     * @param alarmRule
     * @param adCode
     * @param isSendStation 是否发送站内信
     * @return
     */
    @Async
    public Map<String, Object> sixHourRainHandle(String templateId, String uuid, AlarmRule alarmRule, String adCode, boolean isSendStation) {
        Map<String, Object> map = new HashMap<>();
        // 调用中台服务接口查询数据
        JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.alarm_rain_6_over_api);
        // 只发短信,将发短信信息组装好
        SmsRequestTemplate smsRequestTemplate
            = noticeHandle.getSendSmsTemplate(ztData, templateId, alarmRule, ZtApiDataColumnConstant.sixHourRainList, false, adCode,uuid);
        // 拼接后面内容
        if (smsRequestTemplate.getPersonVOList().size() > 0) {
            for (List<String> list : smsRequestTemplate.getTemplateContent()) {
                // 依次添加行政责任人,主管部门责任人,技术责任人,巡查责任人信息(姓名,联系电话)
                noticeHandle.addWaterMoreDesignPatrolTechnologyInfo(list,"1,2,4,5");
                // 拼接市县水利部人员姓名及联系方式
                noticeHandle.addCityCountyBusinessPersonInfo(list);
                // 保存告警记录信息
                AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list, alarmRule, uuid);
                if (null != alarmRecord) {
                    list.add(alarmRecord.getId().toString());
                }
            }
            map = smsService.sendSignMsg(smsRequestTemplate);
            // 调用短信服务
            return map;
        }
        return map;
    }
}
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeHandle.java
@@ -78,7 +78,7 @@
     * @param alarmRule
     * @param columnsList 列名集合信息
     * @param flag 是否包含日期
     * @param adCode 行政区编号
     * @param adCode 行政区编号(是否过滤区县数据)
     * @param uuid 本次执行临时编号
     * @return
     */
@@ -234,16 +234,33 @@
                    String[] split = column.split(",");
                    String format = "";
                    for (String s : split) {
                        // 超汛限水位
                        if (s.equals("over_z")) {
                            String is_danger_res = "is_danger_res";
                            if (jsonArray.getJSONObject(i).getString(is_danger_res).equals("true")) {
                                format = format + "超过控制运用水位" + jsonArray.getJSONObject(i).getString(s);
                            }else if (jsonArray.getJSONObject(i).getString(is_danger_res).equals("false")){
                                format = format +  "超过汛限水位" + jsonArray.getJSONObject(i).getString(s);
                            } else if (jsonArray.getJSONObject(i).getString(is_danger_res).equals("false")) {
                                format = format + "超过汛限水位" + jsonArray.getJSONObject(i).getString(s);
                            } else {
                                format = format + jsonArray.getJSONObject(i).getString(s);
                            }
                        } else if (s.equals("rz")) {
                            // 水位
                            String rz = "rz";
                            if (null==jsonArray.getJSONObject(i).getString(rz)) {
                                format = format + "无数据";
                            } else {
                                format = format + jsonArray.getJSONObject(i).getString(s) + "米";
                            }
                        } else if (s.equals("alarm_val")) {
                            // 小时雨量
                            String alarm_type = "alarm_type";
                            if (null!=jsonArray.getJSONObject(i).getString(alarm_type) && !jsonArray.getJSONObject(i).getString(alarm_type).equals("")) {
                                format = format + jsonArray.getJSONObject(i).getString(alarm_type) + "小时坝前点雨量" + jsonArray.getJSONObject(i).getString(s);
                            }else {
                                format = format + jsonArray.getJSONObject(i).getString(s);
                            }
                        }else {
                        } else {
                            format = format + jsonArray.getJSONObject(i).getString(s);
                        }
                    }
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeStrategyImpl.java
@@ -307,8 +307,17 @@
     * @return
     */
    public String alreadyHeavyRainHandle(String arg1, String arg2) {
        // 业务逻辑处理 2...
        return "";
        //String adCode = "420607000000";
        String adCode = null;
        String templateId = "2431012248569";
        String uuid = templateId + UUID.randomUUID().toString();
        // 查询当前策略对应的告警规则信息
        AlarmRule alarmRule = alarmRuleService.getOne(new QueryWrapper<AlarmRule>().eq("rule_name", arg1));
        if (null!=alarmRule) {
            asyncNoticeHandle.alreadyHeavyRainHandle(templateId,uuid,alarmRule,adCode,false);
        }
        // 返回
        return "已降大雨告警";
    }
    /**
@@ -319,8 +328,17 @@
     * @return
     */
    public String alreadyRainstormHandle(String arg1, String arg2) {
        // 业务逻辑处理 2...
        return "";
        //String adCode = "420607000000";
        String adCode = null;
        String templateId = "2431012216683";
        String uuid = templateId + UUID.randomUUID().toString();
        // 查询当前策略对应的告警规则信息
        AlarmRule alarmRule = alarmRuleService.getOne(new QueryWrapper<AlarmRule>().eq("rule_name", arg1));
        if (null!=alarmRule) {
            asyncNoticeHandle.alreadyRainstormHandle(templateId,uuid,alarmRule,adCode,false);
        }
        // 返回
        return "已降暴雨告警";
    }
    /**
@@ -343,8 +361,17 @@
     * @return
     */
    public String sixHourRainHandle(String arg1, String arg2) {
        // 业务逻辑处理 2...
        return "";
        //String adCode = "420607000000";
        String adCode = null;
        String templateId = "2431012216686";
        String uuid = templateId + UUID.randomUUID().toString();
        // 查询当前策略对应的告警规则信息
        AlarmRule alarmRule = alarmRuleService.getOne(new QueryWrapper<AlarmRule>().eq("rule_name", arg1));
        if (null!=alarmRule) {
            asyncNoticeHandle.sixHourRainHandle(templateId,uuid,alarmRule,adCode,false);
        }
        // 返回
        return "6小时降雨告警";
    }
}
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsServiceImpl.java
@@ -274,49 +274,52 @@
        List<MessageRecord> messageRecordList = new ArrayList<>();
        // 遍历处理
        for (List<String> list : templateContent) {
            // 设置站内信记录信息
            MessageRecord messageRecord = new MessageRecord();
            messageRecord.setTheme(alarmRule.getRuleName());
            messageRecord.setSender(AuthUtil.getUserId().toString());
            messageRecord.setSource("智能告警");
            messageRecord.setStatus(0);
            // 设置告警记录信息
            AlarmRecordDetail alarmRecordDetail = new AlarmRecordDetail();
            alarmRecordDetail.setReservoirNumber(list.get(0));
            alarmRecordDetail.setAlarmRecordId(Long.parseLong(list.get(list.size() - 1)));
            alarmRecordDetail.setAlarmMode("短信");
            // 删除 最后一个 告警记录id
            list.remove(list.size() - 1);
            // 删除 0 水库编码
            list.remove(0);
            SmsRecord smsRecord = new SmsRecord();
            if (null != smsResult){
                alarmRecordDetail.setPhone(list.get(0));
                messageRecord.setRecipient(list.get(0));
                // 设置手机号
                request.setUserNumber(list.get(0));
                // 内容处理
                String s = smsTemplate.getContent().replaceAll("\\{.+?\\}", "%s");
                // 短信内容拼接(完成发送的结果信息)
                // 需要删除最前面的手机号
            // 校验手机号,发送短信时已校验
            if (validator(list.get(1))) {
                // 设置站内信记录信息
                MessageRecord messageRecord = new MessageRecord();
                messageRecord.setTheme(alarmRule.getRuleName());
                messageRecord.setSender(AuthUtil.getUserId().toString());
                messageRecord.setSource("智能告警");
                messageRecord.setStatus(0);
                // 设置告警记录信息
                AlarmRecordDetail alarmRecordDetail = new AlarmRecordDetail();
                alarmRecordDetail.setReservoirNumber(list.get(0));
                alarmRecordDetail.setAlarmRecordId(Long.parseLong(list.get(list.size() - 1)));
                alarmRecordDetail.setAlarmMode("短信");
                // 删除 最后一个 告警记录id
                list.remove(list.size() - 1);
                // 删除 0 水库编码
                list.remove(0);
                // 格式转换
                String format = String.format(s, list.toArray());
                // 设置内容
                request.setMessageContent(format);
                messageRecord.setContent(format);
                messageRecordList.add(messageRecord);
                // 保存短信发送记录
                smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId());
                if (null != smsRecord){
                    alarmRecordDetail.setAlarmContent(format);
                    alarmRecordDetail.setSendRecordId(smsRecord.getId());
                    alarmRecordDetail.setCreateTime(new Date());
                    // 保存告警记录详情信息
                    boolean save = alarmRecordDetailService.save(alarmRecordDetail);
                SmsRecord smsRecord = new SmsRecord();
                if (null != smsResult) {
                    alarmRecordDetail.setPhone(list.get(0));
                    messageRecord.setRecipient(list.get(0));
                    // 设置手机号
                    request.setUserNumber(list.get(0));
                    // 内容处理
                    String s = smsTemplate.getContent().replaceAll("\\{.+?\\}", "%s");
                    // 短信内容拼接(完成发送的结果信息)
                    // 需要删除最前面的手机号
                    list.remove(0);
                    // 格式转换
                    String format = String.format(s, list.toArray());
                    // 设置内容
                    request.setMessageContent(format);
                    messageRecord.setContent(format);
                    messageRecordList.add(messageRecord);
                    // 保存短信发送记录
                    smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId());
                    if (null != smsRecord) {
                        alarmRecordDetail.setAlarmContent(format);
                        alarmRecordDetail.setSendRecordId(smsRecord.getId());
                        alarmRecordDetail.setCreateTime(new Date());
                        // 保存告警记录详情信息
                        boolean save = alarmRecordDetailService.save(alarmRecordDetail);
                    }
                }
                smsRecordList.add(smsRecord);
            }
            smsRecordList.add(smsRecord);
        }
        if (isSendStation) {
            // 保存站内信信息