短信,站内信告警调整(新增近1h水位陡降,陡升,水位超校核洪水位告警,水位接近设计洪水位告警,水位大幅超汛限告警,水位小幅超汛限告警),公用方法调整
7 files modified
1445 ■■■■ changed files
skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/alarmRule/entity/AlarmRuleDetail.java 10 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/alarmRule/service/impl/AlarmRuleServiceImpl.java 6 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/constant/ZtApiDataColumnConstant.java 100 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/constant/ZtApiUrlConstant.java 30 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/AsyncNoticeHandle.java 746 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeHandle.java 194 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeStrategyImpl.java 359 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/alarmRule/entity/AlarmRuleDetail.java
@@ -46,4 +46,14 @@
     * 备注
     */
    private String alarmRemark;
    /**
     * 告警频次
     */
    private String alarmFrequency;
    /**
     * 告警人
     */
    private String alarmPerson;
}
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/alarmRule/service/impl/AlarmRuleServiceImpl.java
@@ -33,15 +33,9 @@
    public Object selectAlarmRulePage(IPage<AlarmRuleVO> page, AlarmRuleVO alarmRule) {
        if (null != alarmRule.getIsExport()){
            List<AlarmRuleVO> alarmRuleVOS = baseMapper.selectAlarmRulePage(null, alarmRule);
            for (AlarmRuleVO alarmRuleVO : alarmRuleVOS) {
                alarmRuleVO.setAlarmPerson(String.join(",",sysClient.getRoleNames(alarmRuleVO.getAlarmPerson()).getData()));
            }
            return alarmRuleVOS;
        }
        List<AlarmRuleVO> alarmRuleVOS = baseMapper.selectAlarmRulePage(page, alarmRule);
        for (AlarmRuleVO alarmRuleVO : alarmRuleVOS) {
            alarmRuleVO.setAlarmPerson(String.join(",",sysClient.getRoleNames(alarmRuleVO.getAlarmPerson()).getData()));
        }
        return page.setRecords(alarmRuleVOS);
    }
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/constant/ZtApiDataColumnConstant.java
@@ -12,7 +12,7 @@
    /**
     * 水位数据缺失字段(不包含责任人相关信息)
     * 1.水位数据缺失字段(不包含责任人相关信息)
     */
    public static List<String>  waterInfoNotList = new ArrayList<String>()
    {{
@@ -21,7 +21,7 @@
    }};
    /**
     * 水位数据异常(不包含责任人相关信息)
     * 2.水位数据异常(不包含责任人相关信息)
     */
    public static List<String>  waterDataExcList = new ArrayList<String>()
    {{
@@ -31,7 +31,7 @@
    }};
    /**
     * 水位超低于死水位(水库技术责任人、巡查责任人)
     * 3.水位超低于死水位(水库技术责任人、巡查责任人)
     */
    public static List<String>  waterLessDeadList = new ArrayList<String>()
    {{
@@ -41,7 +41,7 @@
    }};
    /**
     * 水位接近汛限告警
     * 5.水位接近汛限告警
     */
    public static List<String>  waterComeOverList = new ArrayList<String>()
    {{
@@ -54,7 +54,7 @@
    }};
    /**
     * 水位初次超汛限告警
     * 6.水位初次超汛限告警
     */
    public static List<String>  waterFirstOverList = new ArrayList<String>()
    {{
@@ -65,7 +65,7 @@
    }};
    /**
     * 水位小幅超汛限告警
     * 7.水位小幅超汛限告警
     */
    public static List<String>  waterSmallScaleOverList = new ArrayList<String>()
    {{
@@ -77,7 +77,7 @@
    }};
    /**
     * 水位大幅超汛限告警1
     * 8.1水位大幅超汛限告警1
     */
    public static List<String>  waterBigScaleOverList1 = new ArrayList<String>()
    {{
@@ -90,7 +90,7 @@
    }};
    /**
     * 水位大幅超汛限告警2
     * 8.2水位大幅超汛限告警2
     */
    public static List<String>  waterBigScaleOverList2 = new ArrayList<String>()
    {{
@@ -101,8 +101,47 @@
        add("over_z");
    }};
    /**
     * 水位超设计洪水位告警处理
     * 9.1 水位接近设计洪水位告警 --短信
     */
    public static List<String> waterComeDesignList1= new ArrayList<String>()
    {{
        add("town_nm");
        add("res_nm");
        add("rz");
        add("over_z");
        add("diff_dam");
        add("drp_24");
    }};
    /**
     * 9.2 水位接近设计洪水位告警 --电话
     */
    public static List<String> waterComeDesignList2= new ArrayList<String>()
    {{
        add("town_nm");
        add("res_nm");
        add("rz");
        add("over_z");
        add("diff_dam");
    }};
    /**
     * 9.3 水位接近设计洪水位告警 --站内信
     */
    public static List<String> waterComeDesignList3= new ArrayList<String>()
    {{
        add("town_nm");
        add("res_nm");
        add("rz");
        add("over_z");
        add("diff_dam");
        add("drp_24");
    }};
    /**
     * 10 水位超设计洪水位告警处理
     */
    public static List<String>  waterMoreDesignList = new ArrayList<String>()
    {{
@@ -115,7 +154,44 @@
    }};
    /**
     * 已降大雨告警
     * 11 水位超校核洪水位告警
     */
    public static List<String>  waterMoreCheckList = new ArrayList<String>()
    {{
        add("town_nm");
        add("res_nm");
        add("rz");
        add("over_chec_fl_stag");
        add("diff_dam");
        add("drp_24");
    }};
    /**
     * 12 近1h水位陡升
     */
    public static List<String>  waterComeOneHourUpList = new ArrayList<String>()
    {{
        add("town_nm");
        add("res_nm");
        add("rz");
        add("over_1h");
        add("drp_24");
    }};
    /**
     * 13 近1h水位陡降
     */
    public static List<String>  waterComeOneHourDownList = new ArrayList<String>()
    {{
        add("town_nm");
        add("res_nm");
        add("rz");
        add("over_1h");
        add("drp_24");
    }};
    /**
     * 15 已降大雨告警
     */
    public static List<String>  alreadyHeavyRainList = new ArrayList<String>()
    {{
@@ -126,7 +202,7 @@
    }};
    /**
     * 已降暴雨告警
     * 16 已降暴雨告警
     */
    public static List<String> alreadyRainstormList = new ArrayList<String>()
    {{
@@ -137,7 +213,7 @@
    }};
    /**
     * 6小时降雨告警
     * 18 6小时降雨告警
     */
    public static List<String> sixHourRainList = new ArrayList<String>()
    {{
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/constant/ZtApiUrlConstant.java
@@ -23,77 +23,77 @@
    public static final String res_z_null_api = "/services/1234567890ABCDEFGHIJKLMN/res/z_null";
    /**
     * 水位数据缺失-全
     * 1.水位数据缺失-全
     */
    public static final String no_z_last_api_all = "/services/1234567890ABCDEFGHIJKLMN/no_z_last/all";
    /**
     *  水位数据异常
     *  2.水位数据异常
     */
    public static final String res_z_not_normal_api = "/services/1234567890ABCDEFGHIJKLMN/res/z_not_normal";
    /**
     *  水位超低于死水位
     *  3.水位超低于死水位
     */
    public static final String res_diff_dead_z_api = "/services/1234567890ABCDEFGHIJKLMN/res/diff_dead_z";
    /**
     *  水位接近汛限告警
     *  5.水位接近汛限告警
     */
    public static final String res_z_is_warn_over_flse_api = "/services/1234567890ABCDEFGHIJKLMN/res_z_is_warn/over_flse";
    /**
     *  水位初次超汛限告警
     *  6.水位初次超汛限告警
     */
    public static final String over_z_res_api = "/services/1234567890ABCDEFGHIJKLMN/over_z_res";
    /**
     *  水位小幅超汛限告警
     *  7.水位小幅超汛限告警
     */
    public static final String res_over_z_small_over_api = "/services/1234567890ABCDEFGHIJKLMN/res_over_z/small_over";
    /**
     *  水位大幅超汛限告警
     *  8.水位大幅超汛限告警
     */
    public static final String res_over_z_big_over_api = "/services/1234567890ABCDEFGHIJKLMN/res_over_z/big_over";
    /**
     *  水位接近设计洪水位告警
     *  9.水位接近设计洪水位告警
     */
    public static final String res_over_des_is_warn_api = "/services/1234567890ABCDEFGHIJKLMN/res_over_des/is_warn";
    /**
     * 水位超设计洪水位告警处理
     * 10.水位超设计洪水位告警处理
     */
    public static final String over_des_rz_warn_api = "/services/1234567890ABCDEFGHIJKLMN/over_des_rz/warn";
    /**
     * 水位超校核洪水位告警
     * 11.水位超校核洪水位告警
     */
    public static final String res_over_chec_api = "/services/1234567890ABCDEFGHIJKLMN/res_over_chec";
    /**
     * 近1h水位陡升
     * 12.近1h水位陡升
     */
    public static final String res_z_diff_up_api = "/services/1234567890ABCDEFGHIJKLMN/res_z_diff/up";
    /**
     * 近1h水位陡降
     * 13.近1h水位陡降
     */
    public static final String res_z_diff_down_api = "/services/1234567890ABCDEFGHIJKLMN/res_z_diff/down";
    /**
     * 已降大雨告警
     * 15. 已降大雨告警
     */
    public static final String alarm_rain_dy_api = "/services/1234567890ABCDEFGHIJKLMN/alarm/rain/dy/api";
    /**
     * 已降暴雨告警
     * 16. 已降暴雨告警
     */
    public static final String alarm_rain_by_api = "/services/1234567890ABCDEFGHIJKLMN/alarm/rain/by/api";
    /**
     * 6小时降雨告警
     * 18. 6小时降雨告警
     */
    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
@@ -2,6 +2,7 @@
import cn.gistack.alerts.alarmRule.entity.AlarmRecord;
import cn.gistack.alerts.alarmRule.entity.AlarmRule;
import cn.gistack.alerts.alarmRule.entity.AlarmRuleDetail;
import cn.gistack.alerts.notice.constant.ZtApiDataColumnConstant;
import cn.gistack.alerts.notice.constant.ZtApiUrlConstant;
import cn.gistack.alerts.notice.enums.DangerEnum;
@@ -15,6 +16,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
@Component
public class AsyncNoticeHandle {
@@ -28,50 +30,27 @@
    /**
     * 1.水位信息接收不到
     * @param alarmRule
     * @param templateId
     * @param uuid
     * @param adCode
     * @param isSendStation
     * 1.水位信息接收不到  2. 水位数据异常 需要合并水库的
     * @param alarmRule 告警规则信息
     * @param alarmRuleDetail 告警规则详情信息
     * @param ztData 告警数据
     * @param columnList 告警模板动态内容key
     * @param flag 是否包含日期
     * @param adCode 行政区code用户过滤数据
     * @param isSendStation 是否发送站内信
     */
    @Async
    public void waterInfoNotHandle(AlarmRule alarmRule, String templateId, String uuid, String adCode,Boolean isSendStation) {
        // 调用中台服务接口查询数据
        JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.no_z_last_api_all);
    public void waterInfoNotHandle(AlarmRule alarmRule,
                                   AlarmRuleDetail alarmRuleDetail,
                                   JSONArray ztData,
                                   List<String> columnList,
                                   Boolean flag,
                                   String adCode,
                                   Boolean isSendStation) {
        String uuid = alarmRuleDetail.getTemplateId() + UUID.randomUUID().toString();
        // 只发短信,将发短信信息组装好
        SmsRequestTemplate smsRequestTemplate
            = noticeHandle.getSendSmsTemplate(ztData, templateId,alarmRule, ZtApiDataColumnConstant.waterInfoNotList,false,adCode,uuid,null);
        smsRequestTemplate.setIsSendStation(isSendStation);
        // 遍历
        for (List<String> list : smsRequestTemplate.getTemplateContent()) {
            // 保存告警记录信息
            AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list,alarmRule,uuid);
            if (null != alarmRecord) {
                list.add(alarmRecord.getId().toString());
            }
        }
        // 调用短信服务
        smsService.sendMergeSignMsg(smsRequestTemplate);
    }
    /**
     * 策略2: 水位数据异常
     * @param alarmRule
     * @param templateId
     * @param uuid
     * @param adCode
     * @param isSendStation
     */
    @Async
    public void waterDataExcHandle(AlarmRule alarmRule, String templateId, String uuid, String adCode, boolean isSendStation) {
        // 调用中台服务接口查询数据
        JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.res_z_not_normal_api);
        // 只发短信,将发短信信息组装好
        SmsRequestTemplate smsRequestTemplate
            = noticeHandle.getSendSmsTemplate(ztData, templateId,alarmRule, ZtApiDataColumnConstant.waterDataExcList,false,adCode,uuid,null);
        smsRequestTemplate.setIsSendStation(isSendStation);
            = noticeHandle.getSendSmsTemplate(ztData,alarmRule,alarmRuleDetail,columnList ,flag,adCode,uuid,isSendStation);
        // 遍历
        for (List<String> list : smsRequestTemplate.getTemplateContent()) {
            // 保存告警记录信息
@@ -86,21 +65,28 @@
    /**
     * 3.水位超低于死水位
     * @param templateId
     * @param uuid
     * @param alarmRule
     * @param adCode
     * @param isSendStation
     * @param alarmRule 告警规则信息
     * @param alarmRuleDetail 告警规则详情信息
     * @param ztData 告警数据
     * @param columnList 告警模板动态内容key
     * @param flag 是否包含日期
     * @param adCode 行政区code用户过滤数据
     * @param isSendStation 是否发送站内信
     * @return
     */
    @Async
    public Map<String, Object> waterLessDeadHandle(String templateId, String uuid, AlarmRule alarmRule, String adCode, boolean isSendStation) {
    public Map<String, Object> waterLessDeadHandle(AlarmRule alarmRule,
                                                   AlarmRuleDetail alarmRuleDetail,
                                                   JSONArray ztData,
                                                   List<String> columnList,
                                                   Boolean flag,
                                                   String adCode,
                                                   Boolean isSendStation) {
        Map<String, Object> map = new HashMap<>();
        // 调用中台服务接口查询数据
        JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.res_diff_dead_z_api);
        // 获取需要发送的信息
        String uuid = alarmRuleDetail.getTemplateId() + UUID.randomUUID().toString();
        // 只发短信,将发短信信息组装好
        SmsRequestTemplate smsRequestTemplate
            = noticeHandle.getSendSmsTemplate(ztData, templateId,alarmRule, ZtApiDataColumnConstant.waterLessDeadList,true,adCode,uuid,null);
        smsRequestTemplate.setIsSendStation(isSendStation);
            = noticeHandle.getSendSmsTemplate(ztData,alarmRule,alarmRuleDetail,columnList ,flag,adCode,uuid,isSendStation);
        // 拼接内容后面的联系方式,当前模板县水利部人员姓名电话
        if (smsRequestTemplate.getPersonVOList().size()>0) {
            // 遍历,拼接县水利部人员电话
@@ -124,19 +110,27 @@
    /**
     * 5.水位接近汛限告警
     * @param templateId
     * @param uuid
     * @param alarmRule
     * @param adCode
     * 5.水位接近汛限告警--发送站内信
     * @param alarmRule 告警规则信息
     * @param alarmRuleDetail 告警规则详情信息
     * @param ztData 告警数据
     * @param columnList 告警模板动态内容key
     * @param flag 是否包含日期
     * @param adCode 行政区code用户过滤数据
     * @param isSendStation 是否发送站内信
     */
    @Async
    public void waterComeOverHandle(String templateId, String uuid, AlarmRule alarmRule, String adCode,Boolean isSendStation) {
        // 调用中台服务接口查询数据
        JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.res_z_is_warn_over_flse_api);
        // 只发送站内信
        SmsRequestTemplate smsRequestTemplate = noticeHandle.getSendSmsTemplate(ztData, templateId,alarmRule, ZtApiDataColumnConstant.waterComeOverList,true,adCode,uuid, DangerEnum.DISTANCE.getValue());
        smsRequestTemplate.setIsSendStation(isSendStation);
    public void waterComeOverHandle(AlarmRule alarmRule,
                                    AlarmRuleDetail alarmRuleDetail,
                                    JSONArray ztData,
                                    List<String> columnList,
                                    Boolean flag,
                                    String adCode,
                                    Boolean isSendStation) {
        String uuid = alarmRuleDetail.getTemplateId() + UUID.randomUUID().toString();
        // 只发短信,将发短信信息组装好
        SmsRequestTemplate smsRequestTemplate
            = noticeHandle.getSendSmsTemplate(ztData,alarmRule,alarmRuleDetail,columnList ,flag,adCode,uuid,isSendStation);
        // 拼接内容后面的联系方式,当前模板县水利部人员姓名电话
        if (smsRequestTemplate.getPersonVOList().size()>0) {
            // 遍历,拼接县水利部人员电话
@@ -151,30 +145,36 @@
                    list.add(alarmRecord.getId().toString());
                }
            }
            // 保存站内信记录信息
            noticeHandle.saveInStationInfo(smsRequestTemplate,alarmRule);
        }
        // 保存站内信记录信息
        noticeHandle.saveInStationInfo(smsRequestTemplate,alarmRule);
    }
    /**
     * 6.水位初次超汛限告警 处理
     * @param templateId
     * @param uuid
     * @param alarmRule
     * @param adCode
     * @param alarmRule 告警规则信息
     * @param alarmRuleDetail 告警规则详情信息
     * @param ztData 告警数据
     * @param columnList 告警模板动态内容key
     * @param flag 是否包含日期
     * @param adCode 行政区code用户过滤数据
     * @param isSendStation 是否发送站内信
     * @return
     */
    @Async
    public Map<String, Object> waterFirstOverHandle(String templateId, String uuid, AlarmRule alarmRule,String adCode,Boolean isSendStation) {
    public Map<String, Object> waterFirstOverHandle(AlarmRule alarmRule,
                                                    AlarmRuleDetail alarmRuleDetail,
                                                    JSONArray ztData,
                                                    List<String> columnList,
                                                    Boolean flag,
                                                    String adCode,
                                                    Boolean isSendStation) {
        Map<String, Object> map = new HashMap<>();
        // 调用中台服务接口查询数据
        JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.over_z_res_api);
        String uuid = alarmRuleDetail.getTemplateId() + UUID.randomUUID().toString();
        // 只发短信,将发短信信息组装好
        SmsRequestTemplate smsRequestTemplate
            = noticeHandle.getSendSmsTemplate(ztData, templateId,alarmRule, ZtApiDataColumnConstant.waterFirstOverList,true,adCode,uuid,DangerEnum.OVER.getValue());
        smsRequestTemplate.setIsSendStation(isSendStation);
            = noticeHandle.getSendSmsTemplate(ztData,alarmRule,alarmRuleDetail,columnList ,flag,adCode,uuid,isSendStation);
        // 拼接后面内容
        if (smsRequestTemplate.getPersonVOList().size()>0) {
@@ -198,22 +198,30 @@
    /**
     * 7.1 水位小幅超汛限告警(发松给 水库技术责任人、巡查责任人)
     * @param templateId
     * @param uuid
     * @param alarmRule
     * @param adCode
     * @param alarmRule 告警规则信息
     * @param alarmRuleDetail 告警规则详情信息
     * @param ztData 告警数据
     * @param columnList 告警模板动态内容key
     * @param flag 是否包含日期
     * @param adCode 行政区code用户过滤数据
     * @param isSendStation 是否发送站内信
     * @param uuid 变量
     * @return
     */
    @Async
    public Map<String, Object> waterSmallScaleOverHandle1(String templateId, String uuid, AlarmRule alarmRule,String adCode,Boolean isSendStation) {
    public Map<String, Object> waterSmallScaleOverHandle1(AlarmRule alarmRule,
                                                         AlarmRuleDetail alarmRuleDetail,
                                                         JSONArray ztData,
                                                         List<String> columnList,
                                                         Boolean flag,
                                                         String adCode,
                                                         Boolean isSendStation,
                                                         String uuid) {
        Map<String, Object> map = new HashMap<>();
        // 调用中台服务接口查询数据
        JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.res_over_z_small_over_api);
//        String uuid = alarmRuleDetail.getTemplateId() + UUID.randomUUID().toString();
        // 只发短信,将发短信信息组装好
        SmsRequestTemplate smsRequestTemplate
            = noticeHandle.getSendSmsTemplate(ztData, templateId,alarmRule, ZtApiDataColumnConstant.waterSmallScaleOverList,true,adCode,uuid,DangerEnum.ALREADY_OVER.getValue());
        smsRequestTemplate.setIsSendStation(isSendStation);
            = noticeHandle.getSendSmsTemplate(ztData,alarmRule,alarmRuleDetail,columnList ,flag,adCode,uuid,isSendStation);
        // 拼接后面内容
        if (smsRequestTemplate.getPersonVOList().size()>0) {
@@ -237,22 +245,29 @@
    /**
     * 7.2 水位小幅超汛限告警(发送给 县级水利部门有关人员、主管部门责任人)
     * @param templateId
     * @param uuid
     * @param alarmRule
     * @param adCode
     * @param alarmRule 告警规则信息
     * @param alarmRuleDetail 告警规则详情信息
     * @param ztData 告警数据
     * @param columnList 告警模板动态内容key
     * @param flag 是否包含日期
     * @param adCode 行政区code用户过滤数据
     * @param isSendStation 是否发送站内信
     * @return
     */
    @Async
    public Map<String, Object> waterSmallScaleOverHandle2(String templateId, String uuid, AlarmRule alarmRule,String adCode,Boolean isSendStation) {
    public Map<String, Object> waterSmallScaleOverHandle2(AlarmRule alarmRule,
                                                          AlarmRuleDetail alarmRuleDetail,
                                                          JSONArray ztData,
                                                          List<String> columnList,
                                                          Boolean flag,
                                                          String adCode,
                                                          Boolean isSendStation,
                                                          String uuid) {
        Map<String, Object> map = new HashMap<>();
        // 调用中台服务接口查询数据
        JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.res_over_z_small_over_api);
//        String uuid = alarmRuleDetail.getTemplateId() + UUID.randomUUID().toString();
        // 只发短信,将发短信信息组装好
        SmsRequestTemplate smsRequestTemplate
            = noticeHandle.getSendSmsTemplate(ztData, templateId,alarmRule, ZtApiDataColumnConstant.waterSmallScaleOverList,true,adCode,uuid,DangerEnum.ALREADY_OVER.getValue());
        smsRequestTemplate.setIsSendStation(isSendStation);
            = noticeHandle.getSendSmsTemplate(ztData,alarmRule,alarmRuleDetail,columnList ,flag,adCode,uuid,isSendStation);
        // 拼接后面内容
        if (smsRequestTemplate.getPersonVOList().size()>0) {
@@ -276,22 +291,29 @@
    /**
     * 8.1 水位大幅超汛限告警(发松给 水库技术责任人、巡查责任人)
     * @param templateId
     * @param uuid
     * @param alarmRule
     * @param adCode
     * @param alarmRule 告警规则信息
     * @param alarmRuleDetail 告警规则详情信息
     * @param ztData 告警数据
     * @param columnList 告警模板动态内容key
     * @param flag 是否包含日期
     * @param adCode 行政区code用户过滤数据
     * @param isSendStation 是否发送站内信
     * @return
     */
    @Async
    public Map<String, Object> waterBigScaleOverHandle1(String templateId, String uuid, AlarmRule alarmRule,String adCode,Boolean isSendStation) {
    public Map<String, Object> waterBigScaleOverHandle1(AlarmRule alarmRule,
                                                        AlarmRuleDetail alarmRuleDetail,
                                                        JSONArray ztData,
                                                        List<String> columnList,
                                                        Boolean flag,
                                                        String adCode,
                                                        Boolean isSendStation,
                                                        String uuid) {
        Map<String, Object> map = new HashMap<>();
        // 调用中台服务接口查询数据
        JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.res_over_z_big_over_api);
//        String uuid = alarmRuleDetail.getTemplateId() + UUID.randomUUID().toString();
        // 只发短信,将发短信信息组装好
        SmsRequestTemplate smsRequestTemplate
            = noticeHandle.getSendSmsTemplate(ztData, templateId,alarmRule, ZtApiDataColumnConstant.waterBigScaleOverList1,true,adCode,uuid,DangerEnum.ALREADY_BIG_OVER.getValue());
        smsRequestTemplate.setIsSendStation(isSendStation);
            = noticeHandle.getSendSmsTemplate(ztData,alarmRule,alarmRuleDetail,columnList ,flag,adCode,uuid,isSendStation);
        // 拼接后面内容
        if (smsRequestTemplate.getPersonVOList().size()>0) {
@@ -315,30 +337,35 @@
    /**
     * 8.2 水位大幅超汛限告警(发送给 县级水利部门有关人员、主管部门责任人)
     * @param templateId
     * @param uuid
     * @param alarmRule
     * @param adCode
     * @param alarmRule 告警规则信息
     * @param alarmRuleDetail 告警规则详情信息
     * @param ztData 告警数据
     * @param columnList 告警模板动态内容key
     * @param flag 是否包含日期
     * @param adCode 行政区code用户过滤数据
     * @param isSendStation 是否发送站内信
     * @return
     */
    @Async
    public Map<String, Object> waterBigScaleOverHandle2(String templateId, String uuid, AlarmRule alarmRule,String adCode,Boolean isSendStation) {
    public Map<String, Object> waterBigScaleOverHandle2(AlarmRule alarmRule,
                                                        AlarmRuleDetail alarmRuleDetail,
                                                        JSONArray ztData,
                                                        List<String> columnList,
                                                        Boolean flag,
                                                        String adCode,
                                                        Boolean isSendStation,
                                                        String uuid) {
        Map<String, Object> map = new HashMap<>();
        // 调用中台服务接口查询数据
        JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.res_over_z_big_over_api);
//        String uuid = alarmRuleDetail.getTemplateId() + UUID.randomUUID().toString();
        // 只发短信,将发短信信息组装好
        SmsRequestTemplate smsRequestTemplate
            = noticeHandle.getSendSmsTemplate(ztData, templateId,alarmRule, ZtApiDataColumnConstant.waterBigScaleOverList2,true,adCode,uuid,DangerEnum.ALREADY_BIG_OVER.getValue());
        smsRequestTemplate.setIsSendStation(isSendStation);
            = noticeHandle.getSendSmsTemplate(ztData,alarmRule,alarmRuleDetail,columnList ,flag,adCode,uuid,isSendStation);
        // 拼接后面内容
        if (smsRequestTemplate.getPersonVOList().size()>0) {
            for (List<String> list : smsRequestTemplate.getTemplateContent()) {
                // 依次拼接巡查责任人,技术责任人姓名联系电话
                noticeHandle.addPatrolTechnologyInfo(list,true);
                // 拼接市县水利部人员姓名及联系方式
//                noticeHandle.addCityCountyBusinessPersonInfo(list);
                // 保存告警记录信息
                AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list,alarmRule,uuid);
                if (null != alarmRecord) {
@@ -353,20 +380,31 @@
    }
    /**
     * 10.水位超设计洪水位告警处理
     * @param templateId
     * @param uuid
     * @param alarmRule
     * 策略9.1: 水位接近设计洪水位告警-短信
     *
     * @param alarmRule 告警规则信息
     * @param alarmRuleDetail 告警规则详情信息
     * @param ztData 告警数据
     * @param columnList 告警模板动态内容key
     * @param flag 是否包含日期
     * @param adCode 行政区code用户过滤数据
     * @param isSendStation 是否发送站内信
     * @return
     */
    @Async
    public Map<String, Object> waterMoreDesignHandle(String templateId, String uuid, AlarmRule alarmRule) {
    public Map<String, Object> waterComeDesignHandleBySms(AlarmRule alarmRule,
                                                          AlarmRuleDetail alarmRuleDetail,
                                                          JSONArray ztData,
                                                          List<String> columnList,
                                                          Boolean flag,
                                                          String adCode,
                                                          Boolean isSendStation,
                                                          String uuid) {
        Map<String, Object> map = new HashMap<>();
        // 调用中台服务接口查询数据
        JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.over_des_rz_warn_api);
//        String uuid = alarmRuleDetail.getTemplateId() + UUID.randomUUID().toString();
        // 只发短信,将发短信信息组装好
        SmsRequestTemplate smsRequestTemplate
            = noticeHandle.getSendSmsTemplate(ztData, templateId, alarmRule, ZtApiDataColumnConstant.waterMoreDesignList, true, null,uuid,null);
            = noticeHandle.getSendSmsTemplate(ztData, alarmRule, alarmRuleDetail, columnList, flag, adCode, uuid, isSendStation);
        // 拼接后面内容
        if (smsRequestTemplate.getPersonVOList().size() > 0) {
            for (List<String> list : smsRequestTemplate.getTemplateContent()) {
@@ -388,23 +426,380 @@
    }
    /**
     * 策略15: 已降大雨告警
     * 策略9.1: 水位接近设计洪水位告警-电话
     *
     * @param templateId
     * @param uuid
     * @param alarmRule
     * @param adCode
     * @param alarmRule 告警规则信息
     * @param alarmRuleDetail 告警规则详情信息
     * @param ztData 告警数据
     * @param columnList 告警模板动态内容key
     * @param flag 是否包含日期
     * @param adCode 行政区code用户过滤数据
     * @param isSendStation 是否发送站内信
     * @return
     */
    @Async
    public Map<String, Object> alreadyHeavyRainHandle(String templateId, String uuid, AlarmRule alarmRule, String adCode, boolean isSendStation) {
    public Map<String, Object> waterComeDesignHandleCall(AlarmRule alarmRule,
                                                          AlarmRuleDetail alarmRuleDetail,
                                                          JSONArray ztData,
                                                          List<String> columnList,
                                                          Boolean flag,
                                                          String adCode,
                                                         Boolean isSendStation,
                                                         String uuid) {
        Map<String, Object> map = new HashMap<>();
        // 调用中台服务接口查询数据
        JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.alarm_rain_dy_api);
//        String uuid = alarmRuleDetail.getTemplateId() + UUID.randomUUID().toString();
        // 只发短信,将发短信信息组装好
        SmsRequestTemplate smsRequestTemplate
            = noticeHandle.getSendSmsTemplate(ztData, templateId, alarmRule, ZtApiDataColumnConstant.alreadyHeavyRainList, false, adCode,uuid,null);
            = noticeHandle.getSendSmsTemplate(ztData, alarmRule, alarmRuleDetail, columnList, flag, adCode, uuid, isSendStation);
        // 拼接后面内容
        if (smsRequestTemplate.getPersonVOList().size() > 0) {
            for (List<String> list : smsRequestTemplate.getTemplateContent()) {
                // 拼接市县水利部人员姓名及联系方式
                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;
    }
    /**
     * 策略9.3: 水位接近设计洪水位告警-站内信
     *
     * @param alarmRule 告警规则信息
     * @param alarmRuleDetail 告警规则详情信息
     * @param ztData 告警数据
     * @param columnList 告警模板动态内容key
     * @param flag 是否包含日期
     * @param adCode 行政区code用户过滤数据
     * @param isSendStation 是否发送站内信
     * @return
     */
    @Async
    public void waterComeDesignHandleStation(AlarmRule alarmRule,
                                             AlarmRuleDetail alarmRuleDetail,
                                             JSONArray ztData,
                                             List<String> columnList,
                                             Boolean flag,
                                             String adCode,
                                             Boolean isSendStation,
                                             String uuid) {
//        String uuid = alarmRuleDetail.getTemplateId() + UUID.randomUUID().toString();
        // 只发短信,将发短信信息组装好
        SmsRequestTemplate smsRequestTemplate
            = noticeHandle.getSendSmsTemplate(ztData, alarmRule, alarmRuleDetail, columnList, flag, adCode, uuid, isSendStation);
        // 拼接后面内容
        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());
                }
            }
            // 保存站内信记录信息
            noticeHandle.saveInStationInfo(smsRequestTemplate,alarmRule);
        }
    }
    /**
     * 10.1 水位超设计洪水位告警处理--短信
     * @param alarmRule 告警规则信息
     * @param alarmRuleDetail 告警规则详情信息
     * @param ztData 告警数据
     * @param columnList 告警模板动态内容key
     * @param flag 是否包含日期
     * @param adCode 行政区code用户过滤数据
     * @param isSendStation 是否发送站内信
     * @return
     */
    @Async
    public Map<String, Object> waterMoreDesignHandle(AlarmRule alarmRule,
                                                     AlarmRuleDetail alarmRuleDetail,
                                                     JSONArray ztData,
                                                     List<String> columnList,
                                                     Boolean flag,
                                                     String adCode,
                                                     Boolean isSendStation,
                                                     String uuid) {
        Map<String, Object> map = new HashMap<>();
//        String uuid = alarmRuleDetail.getTemplateId() + UUID.randomUUID().toString();
        // 只发短信,将发短信信息组装好
        SmsRequestTemplate smsRequestTemplate
            = noticeHandle.getSendSmsTemplate(ztData,alarmRule,alarmRuleDetail,columnList ,flag,adCode,uuid,isSendStation);
        // 拼接后面内容
        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;
    }
    /**
     * 10.水位超设计洪水位告警处理 - 电话
     * @param alarmRule 告警规则信息
     * @param alarmRuleDetail 告警规则详情信息
     * @param ztData 告警数据
     * @param columnList 告警模板动态内容key
     * @param flag 是否包含日期
     * @param adCode 行政区code用户过滤数据
     * @param isSendStation 是否发送站内信
     * @return
     */
    @Async
    public Map<String, Object> waterMoreDesignHandleCall(AlarmRule alarmRule,
                                                     AlarmRuleDetail alarmRuleDetail,
                                                     JSONArray ztData,
                                                     List<String> columnList,
                                                     Boolean flag,
                                                     String adCode,
                                                     Boolean isSendStation,
                                                     String uuid) {
        Map<String, Object> map = new HashMap<>();
//        String uuid = alarmRuleDetail.getTemplateId() + UUID.randomUUID().toString();
        // 只发短信,将发短信信息组装好
        SmsRequestTemplate smsRequestTemplate
            = noticeHandle.getSendSmsTemplate(ztData,alarmRule,alarmRuleDetail,columnList ,flag,adCode,uuid,isSendStation);
        // 拼接后面内容
        if (smsRequestTemplate.getPersonVOList().size() > 0) {
            for (List<String> list : smsRequestTemplate.getTemplateContent()) {
                // 拼接市县水利部人员姓名及联系方式
                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;
    }
    /**
     * 11.1 水位超校核洪水位告警--短信
     * @param alarmRule 告警规则信息
     * @param alarmRuleDetail 告警规则详情信息
     * @param ztData 告警数据
     * @param columnList 告警模板动态内容key
     * @param flag 是否包含日期
     * @param adCode 行政区code用户过滤数据
     * @param isSendStation 是否发送站内信
     * @return
     */
    @Async
    public Map<String, Object> waterMoreCheckHandle(AlarmRule alarmRule,
                                                     AlarmRuleDetail alarmRuleDetail,
                                                     JSONArray ztData,
                                                     List<String> columnList,
                                                     Boolean flag,
                                                     String adCode,
                                                     Boolean isSendStation,
                                                     String uuid) {
        Map<String, Object> map = new HashMap<>();
//        String uuid = alarmRuleDetail.getTemplateId() + UUID.randomUUID().toString();
        // 只发短信,将发短信信息组装好
        SmsRequestTemplate smsRequestTemplate
            = noticeHandle.getSendSmsTemplate(ztData,alarmRule,alarmRuleDetail,columnList ,flag,adCode,uuid,isSendStation);
        // 拼接后面内容
        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;
    }
    /**
     * 11.2 水位超校核洪水位告警 - 电话
     * @param alarmRule 告警规则信息
     * @param alarmRuleDetail 告警规则详情信息
     * @param ztData 告警数据
     * @param columnList 告警模板动态内容key
     * @param flag 是否包含日期
     * @param adCode 行政区code用户过滤数据
     * @param isSendStation 是否发送站内信
     * @return
     */
    @Async
    public Map<String, Object> waterMoreCheckHandleCall(AlarmRule alarmRule,
                                                     AlarmRuleDetail alarmRuleDetail,
                                                     JSONArray ztData,
                                                     List<String> columnList,
                                                     Boolean flag,
                                                     String adCode,
                                                     Boolean isSendStation,
                                                     String uuid) {
        Map<String, Object> map = new HashMap<>();
        // 只发短信,将发短信信息组装好
        SmsRequestTemplate smsRequestTemplate
            = noticeHandle.getSendSmsTemplate(ztData,alarmRule,alarmRuleDetail,columnList ,flag,adCode,uuid,isSendStation);
        // 拼接后面内容
        if (smsRequestTemplate.getPersonVOList().size() > 0) {
            for (List<String> list : smsRequestTemplate.getTemplateContent()) {
                // 拼接市县水利部人员姓名及联系方式
                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;
    }
    /**
     * 12 近1h水位陡升--短信
     * @param alarmRule 告警规则信息
     * @param alarmRuleDetail 告警规则详情信息
     * @param ztData 告警数据
     * @param columnList 告警模板动态内容key
     * @param flag 是否包含日期
     * @param adCode 行政区code用户过滤数据
     * @param isSendStation 是否发送站内信
     * @return
     */
    @Async
    public Map<String, Object> waterComeOneHourUpHandle(AlarmRule alarmRule,
                                                    AlarmRuleDetail alarmRuleDetail,
                                                    JSONArray ztData,
                                                    List<String> columnList,
                                                    Boolean flag,
                                                    String adCode,
                                                    Boolean isSendStation,
                                                    String uuid) {
        Map<String, Object> map = new HashMap<>();
        // 只发短信,将发短信信息组装好
        SmsRequestTemplate smsRequestTemplate
            = noticeHandle.getSendSmsTemplate(ztData,alarmRule,alarmRuleDetail,columnList ,flag,adCode,uuid,isSendStation);
        // 拼接后面内容
        if (smsRequestTemplate.getPersonVOList().size() > 0) {
            for (List<String> list : smsRequestTemplate.getTemplateContent()) {
                // 依次添加行巡查责任人,技术责任人信息(姓名)
                noticeHandle.addPatrolTechnologyInfo(list,false);
                // 拼接市县水利部人员姓名及联系方式
                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;
    }
    /**
     * 13 近1h水位陡降--短信
     * @param alarmRule 告警规则信息
     * @param alarmRuleDetail 告警规则详情信息
     * @param ztData 告警数据
     * @param columnList 告警模板动态内容key
     * @param flag 是否包含日期
     * @param adCode 行政区code用户过滤数据
     * @param isSendStation 是否发送站内信
     * @return
     */
    @Async
    public Map<String, Object> waterComeOneHourDownHandle(AlarmRule alarmRule,
                                                    AlarmRuleDetail alarmRuleDetail,
                                                    JSONArray ztData,
                                                    List<String> columnList,
                                                    Boolean flag,
                                                    String adCode,
                                                    Boolean isSendStation,
                                                    String uuid) {
        Map<String, Object> map = new HashMap<>();
        // 只发短信,将发短信信息组装好
        SmsRequestTemplate smsRequestTemplate
            = noticeHandle.getSendSmsTemplate(ztData,alarmRule,alarmRuleDetail,columnList ,flag,adCode,uuid,isSendStation);
        // 拼接后面内容
        if (smsRequestTemplate.getPersonVOList().size() > 0) {
            for (List<String> list : smsRequestTemplate.getTemplateContent()) {
                // 依次添加行巡查责任人,技术责任人信息(姓名)
                noticeHandle.addPatrolTechnologyInfo(list,false);
                // 拼接市县水利部人员姓名及联系方式
                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;
    }
    /**
     * 策略15: 已降大雨告警
     *
     * @param alarmRule 告警规则信息
     * @param alarmRuleDetail 告警规则详情信息
     * @param ztData 告警数据
     * @param columnList 告警模板动态内容key
     * @param flag 是否包含日期
     * @param adCode 行政区code用户过滤数据
     * @param isSendStation 是否发送站内信
     * @return
     */
    @Async
    public Map<String, Object> alreadyHeavyRainHandle(AlarmRule alarmRule,
                                                      AlarmRuleDetail alarmRuleDetail,
                                                      JSONArray ztData,
                                                      List<String> columnList,
                                                      Boolean flag,
                                                      String adCode,
                                                      Boolean isSendStation) {
        Map<String, Object> map = new HashMap<>();
        String uuid = alarmRuleDetail.getTemplateId() + UUID.randomUUID().toString();
        // 只发短信,将发短信信息组装好
        SmsRequestTemplate smsRequestTemplate
            = noticeHandle.getSendSmsTemplate(ztData,alarmRule,alarmRuleDetail,columnList ,flag,adCode,uuid,isSendStation);
        // 拼接后面内容
        if (smsRequestTemplate.getPersonVOList().size() > 0) {
            for (List<String> list : smsRequestTemplate.getTemplateContent()) {
@@ -428,21 +823,28 @@
    /**
     * 策略16: 已降暴雨告警
     *
     * @param templateId
     * @param uuid
     * @param alarmRule
     * @param adCode
     * @param alarmRule 告警规则信息
     * @param alarmRuleDetail 告警规则详情信息
     * @param ztData 告警数据
     * @param columnList 告警模板动态内容key
     * @param flag 是否包含日期
     * @param adCode 行政区code用户过滤数据
     * @param isSendStation 是否发送站内信
     * @return
     */
    @Async
    public Map<String, Object> alreadyRainstormHandle(String templateId, String uuid, AlarmRule alarmRule, String adCode, boolean isSendStation) {
    public Map<String, Object> alreadyRainstormHandle(AlarmRule alarmRule,
                                                      AlarmRuleDetail alarmRuleDetail,
                                                      JSONArray ztData,
                                                      List<String> columnList,
                                                      Boolean flag,
                                                      String adCode,
                                                      Boolean isSendStation) {
        Map<String, Object> map = new HashMap<>();
        // 调用中台服务接口查询数据
        JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.alarm_rain_by_api);
        String uuid = alarmRuleDetail.getTemplateId() + UUID.randomUUID().toString();
        // 只发短信,将发短信信息组装好
        SmsRequestTemplate smsRequestTemplate
            = noticeHandle.getSendSmsTemplate(ztData, templateId, alarmRule, ZtApiDataColumnConstant.alreadyRainstormList, false, adCode,uuid,null);
            = noticeHandle.getSendSmsTemplate(ztData,alarmRule,alarmRuleDetail,columnList ,flag,adCode,uuid,isSendStation);
        // 拼接后面内容
        if (smsRequestTemplate.getPersonVOList().size() > 0) {
            for (List<String> list : smsRequestTemplate.getTemplateContent()) {
@@ -464,23 +866,31 @@
    }
    /**
     * 策略18: 6小时降雨告警
     * 策略18: 6小时降雨告警--短信
     *
     * @param templateId
     * @param uuid
     * @param alarmRule
     * @param adCode
     * @param alarmRule 告警规则信息
     * @param alarmRuleDetail 告警规则详情信息
     * @param ztData 告警数据
     * @param columnList 告警模板动态内容key
     * @param flag 是否包含日期
     * @param adCode 行政区code用户过滤数据
     * @param isSendStation 是否发送站内信
     * @return
     */
    @Async
    public Map<String, Object> sixHourRainHandle(String templateId, String uuid, AlarmRule alarmRule, String adCode, boolean isSendStation) {
    public Map<String, Object> sixHourRainHandle(AlarmRule alarmRule,
                                                 AlarmRuleDetail alarmRuleDetail,
                                                 JSONArray ztData,
                                                 List<String> columnList,
                                                 Boolean flag,
                                                 String adCode,
                                                 Boolean isSendStation,
                                                 String uuid) {
        Map<String, Object> map = new HashMap<>();
        // 调用中台服务接口查询数据
        JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.alarm_rain_6_over_api);
//        String uuid = alarmRuleDetail.getTemplateId() + UUID.randomUUID().toString();
        // 只发短信,将发短信信息组装好
        SmsRequestTemplate smsRequestTemplate
            = noticeHandle.getSendSmsTemplate(ztData, templateId, alarmRule, ZtApiDataColumnConstant.sixHourRainList, false, adCode,uuid,null);
            = noticeHandle.getSendSmsTemplate(ztData,alarmRule,alarmRuleDetail,columnList ,flag,adCode,uuid,isSendStation);
        // 拼接后面内容
        if (smsRequestTemplate.getPersonVOList().size() > 0) {
            for (List<String> list : smsRequestTemplate.getTemplateContent()) {
@@ -500,4 +910,50 @@
        }
        return map;
    }
    /**
     * 策略18: 6小时降雨告警--电话
     *
     * @param alarmRule 告警规则信息
     * @param alarmRuleDetail 告警规则详情信息
     * @param ztData 告警数据
     * @param columnList 告警模板动态内容key
     * @param flag 是否包含日期
     * @param adCode 行政区code用户过滤数据
     * @param isSendStation 是否发送站内信
     * @return
     */
    @Async
    public Map<String, Object> sixHourRainHandleByCall(AlarmRule alarmRule,
                                                 AlarmRuleDetail alarmRuleDetail,
                                                 JSONArray ztData,
                                                 List<String> columnList,
                                                 Boolean flag,
                                                 String adCode,
                                                 Boolean isSendStation,
                                                 String uuid) {
        Map<String, Object> map = new HashMap<>();
//        String uuid = alarmRuleDetail.getTemplateId() + UUID.randomUUID().toString();
        // 只发短信,将发短信信息组装好
        SmsRequestTemplate smsRequestTemplate
            = noticeHandle.getSendSmsTemplate(ztData,alarmRule,alarmRuleDetail,columnList ,flag,adCode,uuid,isSendStation);
        // 拼接后面内容
        if (smsRequestTemplate.getPersonVOList().size() > 0) {
            for (List<String> list : smsRequestTemplate.getTemplateContent()) {
                // 拼接市县水利部人员姓名及联系方式
                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
@@ -4,6 +4,7 @@
import cn.gistack.alerts.alarmRule.entity.AlarmRecord;
import cn.gistack.alerts.alarmRule.entity.AlarmRecordDetail;
import cn.gistack.alerts.alarmRule.entity.AlarmRule;
import cn.gistack.alerts.alarmRule.entity.AlarmRuleDetail;
import cn.gistack.alerts.alarmRule.service.AlarmRecordService;
import cn.gistack.alerts.notice.constant.ZtApiUrlConstant;
import cn.gistack.alerts.notice.constant.ZtConfigConstant;
@@ -25,7 +26,6 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.shaded.com.google.gson.JsonObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
@@ -73,34 +73,40 @@
    /**
     * 短信发送数据组装
     *
     * @param jsonArray
     * @param templateId
     * @param alarmRule
     * @param jsonArray 告警动态数据
     * @param alarmRule 告警规则信息
     * @param alarmRuleDetail 告警规则详情信息
     * @param columnsList 列名集合信息
     * @param flag 是否包含日期
     * @param adCode 行政区编号(是否过滤区县数据)
     * @param uuid 本次执行临时编号
     * @param isSendStation 是否发送站内信
     * @return
     */
    public SmsRequestTemplate getSendSmsTemplate(JSONArray jsonArray,
                                                  String templateId,
                                                  AlarmRule alarmRule,
                                                  AlarmRuleDetail alarmRuleDetail,
                                                  List<String> columnsList,
                                                  Boolean flag,
                                                  String adCode,
                                                  String uuid,
                                                  String dangerValue) {
                                                  Boolean isSendStation) {
        // 通过模板id 查询模板相关信息
        SmsTemplate smsTemplate = smsTemplateService.getOne(new QueryWrapper<SmsTemplate>().eq("template_id",templateId).eq("is_deleted",0));
        SmsTemplate smsTemplate
            = smsTemplateService.getOne(new QueryWrapper<SmsTemplate>().eq("id",alarmRuleDetail.getTemplateId()).eq("is_deleted",0));
        if (null != smsTemplate) {
            // 创建消息发送对象
            SmsRequestTemplate smsRequestTemplate = new SmsRequestTemplate();
            // 设置是否发送站内信
            smsRequestTemplate.setIsSendStation(isSendStation);
            // 设置告警信息
            smsRequestTemplate.setAlarmRule(alarmRule);
            // 设置模板信息
            smsRequestTemplate.setSmsTemplate(smsTemplate);
            // 解析模板并设置 title
            smsRequestTemplate.setTitle(FormatUtil.composeMessage(smsTemplate.getContent()));
            // 列名数据转换
            getColumnData(jsonArray, columnsList,smsRequestTemplate,alarmRule,flag,adCode,uuid,dangerValue);
            getColumnData(jsonArray, columnsList,smsRequestTemplate,alarmRuleDetail.getAlarmPerson(),flag,adCode,uuid);
            //返回
            return smsRequestTemplate;
        }
@@ -109,23 +115,25 @@
    /**
     * 列名数据转换
     * @param jsonArray
     * @param columnsList
     * @param smsRequestTemplate
     * @param flag
     * @param adCode
     * @param uuid
     * @param jsonArray 告警动态数据
     * @param columnsList 告警动态内容 key
     * @param smsRequestTemplate 消息发送对象
     * @param roleIds 告警人员角色ids
     * @param flag 告警内容是否日期
     * @param adCode 行政区 code ,用于过滤数据
     * @param uuid 用于过滤数据
     * @return
     */
    private void getColumnData(JSONArray jsonArray,
                               List<String> columnsList,
                               SmsRequestTemplate smsRequestTemplate,
                               AlarmRule alarmRule,
                               String roleIds,
                               Boolean flag,
                               String adCode,
                               String uuid,
                               String dangerValue) {
                               String uuid) {
        // 告警人员
        List<PersonVO> personLists = new ArrayList<>();
        // 告警内容
        List<List<String>> lists = new ArrayList<>();
        Set<String> set = new HashSet<>();
        for (int i = 0; i < jsonArray.size(); i++) {
@@ -133,10 +141,10 @@
                // city_cd,county_cd 过滤数据
                String county_cd = jsonArray.getJSONObject(i).getString("county_cd");
                if (null!= county_cd && county_cd.equals(adCode)) {
                    jointData(jsonArray, columnsList, alarmRule, flag, personLists, lists, i,uuid,set,dangerValue);
                    jointData(jsonArray, columnsList, roleIds, flag, personLists, lists, i,uuid,set);
                }
            }else {
                jointData(jsonArray, columnsList, alarmRule, flag, personLists, lists, i,uuid,set,dangerValue);
                jointData(jsonArray, columnsList, roleIds, flag, personLists, lists, i,uuid,set);
            }
        }
        // 设置信息
@@ -146,25 +154,24 @@
    /**
     * 拼接列数据设置告警人员信息
     * @param jsonArray
     * @param columnsList
     * @param alarmRule
     * @param flag
     * @param personLists
     * @param lists
     * @param i
     * @param jsonArray 告警动态数据
     * @param columnsList 告警动态内容 key
     * @param roleIds 告警人角色ids
     * @param flag 告警内容是否日期
     * @param personLists 告警人
     * @param lists 告警内容
     * @param i 第几个
     * @return
     */
    private void jointData(JSONArray jsonArray,
                           List<String> columnsList,
                           AlarmRule alarmRule,
                           String roleIds,
                           Boolean flag,
                           List<PersonVO> personLists,
                           List<List<String>> lists,
                           int i,
                           String uuid,
                           Set<String> set,
                           String dangerValue) {
                           Set<String> set) {
        // 根据水库编号,所在区域查询需要发送的人员手机号及设置
        String res_cd = jsonArray.getJSONObject(i).getString("res_cd");
        String tempStr = uuid + res_cd;
@@ -188,19 +195,19 @@
                flag = false;
            }
            // 获取告警人员信息
            getAlarmPersonList(jsonArray, columnsList, alarmRule, flag, personLists, lists, i, res_cd, day, hour, minute, stcd,dangerValue);
            getAlarmPersonList(jsonArray, columnsList, roleIds, flag, personLists, lists, i, res_cd, day, hour, minute, stcd);
        }
    }
    /**
     * 获取告警人员信息
     * @param jsonArray
     * @param columnsList
     * @param alarmRule
     * @param flag
     * @param personLists
     * @param lists
     * @param i
     * @param jsonArray 接口水库相关数据
     * @param columnsList 模板对应列key
     * @param roleIds 告警人员角色ids
     * @param flag 模板中是否填入时间
     * @param personLists 告警人员集合
     * @param lists  告警内容集合
     * @param i 第 i 个水库
     * @param res_cd 水库编码
     * @param day 日期
     * @param hour 小时
@@ -209,7 +216,7 @@
     */
    private void getAlarmPersonList(JSONArray jsonArray,
                                    List<String> columnsList,
                                    AlarmRule alarmRule,
                                    String roleIds,
                                    Boolean flag,
                                    List<PersonVO> personLists,
                                    List<List<String>> lists,
@@ -218,10 +225,9 @@
                                    String day,
                                    String hour,
                                    String minute,
                                    String stcd,
                                    String dangerValue) {
                                    String stcd) {
        // 查询告警人员信息
        List<PersonVO> personVOList = getPersonListByResGuid(res_cd, alarmRule);
        List<PersonVO> personVOList = getPersonListByResGuid(res_cd, roleIds);
        if (personVOList.size() > 0) {
            for (PersonVO personVO : personVOList) {
                List<String> list = new ArrayList<>();
@@ -237,43 +243,74 @@
                for (String column : columnsList) {
                    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 + dangerValue + "控制运用水位" + jsonArray.getJSONObject(i).getString(s);
                            } else if (jsonArray.getJSONObject(i).getString(is_danger_res).equals("false")) {
                                format = format + dangerValue + "汛限水位" + 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 {
                            format = format + jsonArray.getJSONObject(i).getString(s);
                        }
                    }
                    // 内容处理
                    format = addAlarmContent(jsonArray, i, split, format);
                    // 加入集合
                    list.add(format);
                }
                lists.add(list);
            }
        }
        personLists.addAll(personVOList);
    }
    /**
     * 告警内容拼接处理
     * @param jsonArray 数据
     * @param i 第几个
     * @param split key 值
     * @param format 值结果
     * @return
     */
    private String addAlarmContent(JSONArray jsonArray, int i,String[] 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 {
                    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 if (s.equals("diff_dam")) {
                String over_chec_fl_stag = "over_chec_fl_stag";
                // 如果是超校核的需要判断超值
                if (null!=jsonArray.getJSONObject(i).getString(over_chec_fl_stag) && !jsonArray.getJSONObject(i).getString(over_chec_fl_stag).equals("")) {
                    // 校核,是否漫过坝顶(正数代表未漫过坝顶,负数则反之)
                    String diff_dam = jsonArray.getJSONObject(i).getString(s);
                    double parseDouble = Double.parseDouble(diff_dam);
                    if (parseDouble>0) {
                        format = format + "距离大坝坝顶仅" + jsonArray.getJSONObject(i).getString(s);
                    }else {
                        format = format + "已漫过坝顶" + (-parseDouble);
                    }
                }else {
                    format = format + jsonArray.getJSONObject(i).getString(s);
                }
            } else {
                format = format + jsonArray.getJSONObject(i).getString(s);
            }
        }
        // 返回
        return format;
    }
    /**
@@ -317,12 +354,12 @@
    /**
     * 查询告警人员信息
     * @param res_cd 水库 guid
     * @param alarmRule
     * @param roleIds 角色ids
     * @return
     */
    private List<PersonVO> getPersonListByResGuid(String res_cd,AlarmRule alarmRule) {
    private List<PersonVO> getPersonListByResGuid(String res_cd,String roleIds) {
        // 查询对应的角色信息
        List<String> roles =  sysClient.getRoleNames(alarmRule.getAlarmPerson()).getData();
        List<String> roles =  sysClient.getRoleNames(roleIds).getData();
        List<String> personList = new ArrayList<>();
        List<String> areaList = new ArrayList<>();
        // 遍历
@@ -351,8 +388,9 @@
    }
    /**
     * 依次添加巡查责任人,技术责任人信息(只有姓名)
     * 依次添加巡查责任人,技术责任人信息
     * @param list
     * @param isPhone 是否保护电话
     */
    public void addPatrolTechnologyInfo(List<String> list,Boolean isPhone) {
        // 查询巡查责任人姓名,技术责任人姓名信息
@@ -558,7 +596,9 @@
        for (MessageRecord messageRecord : messageRecordList) {
            // 通过手机号获取用户id信息
            R<List<User>> listR = userClient.userInfoByPhone("000000", messageRecord.getRecipient());
            messageRecord.setRecipient(listR.getData().get(0).getId().toString());
            if (listR.getData().size()>0) {
                messageRecord.setRecipient(listR.getData().get(0).getId().toString());
            }
        }
//        List<MessageRecord> messageRecordList1 = new ArrayList<>();
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeStrategyImpl.java
@@ -1,38 +1,16 @@
package cn.gistack.alerts.notice.service.impl;
import cn.gistack.alerts.alarmRule.entity.AlarmRecord;
import cn.gistack.alerts.alarmRule.entity.AlarmRule;
import cn.gistack.alerts.alarmRule.service.AlarmRecordService;
import cn.gistack.alerts.alarmRule.entity.AlarmRuleDetail;
import cn.gistack.alerts.alarmRule.service.AlarmRuleDetailService;
import cn.gistack.alerts.alarmRule.service.AlarmRuleService;
import cn.gistack.alerts.notice.constant.ZtConfigConstant;
import cn.gistack.alerts.sms.service.ISmsTemplateService;
import cn.gistack.common.utils.SpringContextUtil;
import cn.gistack.alerts.notice.constant.PtInfoConstant;
import cn.gistack.alerts.notice.constant.ZtApiDataColumnConstant;
import cn.gistack.alerts.notice.constant.ZtApiUrlConstant;
import cn.gistack.alerts.notice.enums.PersonEnum;
import cn.gistack.alerts.notice.util.FormatUtil;
import cn.gistack.sm.sjztmd.vo.PersonVO;
import cn.gistack.sm.sjztmd.feign.IAttResManagePersonClient;
import cn.gistack.alerts.sms.entity.SmsTemplate;
import cn.gistack.alerts.sms.service.SmsService;
import cn.gistack.alerts.sms.vo.SmsRequestTemplate;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.UUID;
/**
@@ -45,10 +23,10 @@
public class NoticeStrategyImpl {
    @Autowired
    private SmsService smsService;
    private AlarmRuleService alarmRuleService;
    @Autowired
    private AlarmRuleService alarmRuleService;
    private AlarmRuleDetailService alarmRuleDetailService;
    @Autowired
    private NoticeHandle noticeHandle;
@@ -79,14 +57,24 @@
     * @return
     */
    public String waterInfoNotHandle(String arg1, String arg2) {
        String templateId = "2431012216668";
//        String adCode = "421181000000";
        //String adCode = "421181000000";
        String adCode = null;
        String uuid = templateId + UUID.randomUUID().toString();
        // 查询当前策略对应的告警规则信息
        AlarmRule alarmRule = alarmRuleService.getOne(new QueryWrapper<AlarmRule>().eq("rule_name", arg1));
        // 调用中台服务接口查询数据
        JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.no_z_last_api_all);
        // 获取告警规则详情,判断告警类型(短信,电话,站内信)
        if (null!=alarmRule) {
            asyncNoticeHandle.waterInfoNotHandle(alarmRule,templateId,uuid,adCode,false);
            // 查询告警详情信息
            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.waterInfoNotHandle(alarmRule, alarmRuleDetail, ztData,ZtApiDataColumnConstant.waterInfoNotList,false, adCode, false);
                    }
                }
            }
        }
        // 返回
        return "水位信息接收不到";
@@ -100,14 +88,24 @@
     * @return
     */
    public String waterDataExcHandle(String arg1, String arg2) {
        String templateId = "2431012248591";
        //String adCode = "421181000000";
        String adCode = null;
        String uuid = templateId + UUID.randomUUID().toString();
        // 查询当前策略对应的告警规则信息
        AlarmRule alarmRule = alarmRuleService.getOne(new QueryWrapper<AlarmRule>().eq("rule_name", arg1));
        // 调用中台服务接口查询数据
        JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.res_z_not_normal_api);
        // 获取告警规则详情,判断告警类型(短信,电话,站内信)
        if (null!=alarmRule) {
            asyncNoticeHandle.waterDataExcHandle(alarmRule,templateId,uuid,adCode,false);
            // 查询告警详情信息
            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.waterInfoNotHandle(alarmRule, alarmRuleDetail, ztData,ZtApiDataColumnConstant.waterDataExcList,false, adCode, false);
                    }
                }
            }
        }
        // 返回
        return "水位数据异常";
@@ -121,14 +119,24 @@
     * @return
     */
    public String waterLessDeadHandle(String arg1, String arg2) {
        String adCode = "420607000000";
        String adCode = "420881000000";
//        String adCode = null;
        String templateId = "2431012248594";
        String uuid = templateId + UUID.randomUUID().toString();
        // 查询当前策略对应的告警规则信息
        AlarmRule alarmRule = alarmRuleService.getOne(new QueryWrapper<AlarmRule>().eq("rule_name", arg1));
        // 调用中台服务接口查询数据
        JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.res_diff_dead_z_api);
        // 获取告警规则详情,判断告警类型(短信,电话,站内信)
        if (null!=alarmRule) {
            asyncNoticeHandle.waterLessDeadHandle(templateId,uuid,alarmRule,adCode,false);
            // 查询告警详情信息
            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.waterLessDeadHandle(alarmRule, alarmRuleDetail, ztData,ZtApiDataColumnConstant.waterLessDeadList,true, adCode, false);
                    }
                }
            }
        }
        // 返回
        return "水位超低于死水位";
@@ -157,12 +165,22 @@
     */
    public String waterComeOverHandle(String arg1, String arg2) {
        String adCode = null;
        String templateId = "znxsw10000001";
        String uuid = templateId + UUID.randomUUID().toString();
        // 查询当前策略对应的告警规则信息
        AlarmRule alarmRule = alarmRuleService.getOne(new QueryWrapper<AlarmRule>().eq("rule_name", arg1));
        // 调用中台服务接口查询数据
        JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.res_z_is_warn_over_flse_api);
        // 获取告警规则详情,判断告警类型(短信,电话,站内信)
        if (null!=alarmRule) {
            asyncNoticeHandle.waterComeOverHandle(templateId,uuid,alarmRule, adCode,true);
            // 查询告警详情信息
            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.waterComeOverHandle(alarmRule, alarmRuleDetail, ztData,ZtApiDataColumnConstant.waterComeOverList,true, adCode, true);
                    }
                }
            }
        }
        return "水位接近汛限告警";
    }
@@ -170,7 +188,7 @@
    /**
     * 策略6: 水位初次超汛限告警
     * 策略6: 水位初次超汛限告警(当前测试发送站内信)
     *
     * @param arg1
     * @param arg2
@@ -178,15 +196,22 @@
     */
    public String waterFirstOverHandle(String arg1, String arg2) {
        String adCode = "421303000000";
        String templateId = "2431012216671";
        String uuid = templateId + UUID.randomUUID().toString();
        // 查询当前策略对应的告警规则信息
        AlarmRule alarmRule = alarmRuleService.getOne(new QueryWrapper<AlarmRule>().eq("rule_name", arg1));
        // 调用中台服务接口查询数据
        JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.over_z_res_api);
        // 获取告警规则详情,判断告警类型(短信,电话,站内信)
        if (null!=alarmRule) {
            // 短信发送
            asyncNoticeHandle.waterFirstOverHandle(templateId, uuid, alarmRule,adCode,true);
            // 返回
            return "水位初次超汛限告警";
            // 查询告警详情信息
            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.waterFirstOverHandle(alarmRule, alarmRuleDetail, ztData,ZtApiDataColumnConstant.waterFirstOverList,true, adCode, true);
                    }
                }
            }
        }
        // 返回
        return "水位初次超汛限告警";
@@ -203,22 +228,24 @@
    public String waterSmallScaleOverHandle(String arg1, String arg2) {
//        String adCode = "421303000000";
        String adCode = null;
        String templateId1 = "2431012216674";
        String templateId2 = "2431012248617";
        String uuid1 = templateId1 + UUID.randomUUID().toString();
        String uuid2 = templateId2 + UUID.randomUUID().toString();
        String[] split = arg1.split(",");
        String uuid = UUID.randomUUID().toString();
        // 查询当前策略对应的告警规则信息
        AlarmRule alarmRule1 = alarmRuleService.getOne(new QueryWrapper<AlarmRule>().eq("rule_name", split[0]));
        AlarmRule alarmRule2 = alarmRuleService.getOne(new QueryWrapper<AlarmRule>().eq("rule_name", split[1]));
        // 发两个不同的模板
        if (null!=alarmRule1) {
            // 短信发送
            asyncNoticeHandle.waterSmallScaleOverHandle1(templateId1, uuid1, alarmRule1,adCode,true);
        }
        if (null!=alarmRule2) {
            // 短信发送
            asyncNoticeHandle.waterSmallScaleOverHandle2(templateId2, uuid2, alarmRule2,adCode,true);
        AlarmRule alarmRule = alarmRuleService.getOne(new QueryWrapper<AlarmRule>().eq("rule_name", arg1));
        // 调用中台服务接口查询数据
        JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.res_over_z_small_over_api);
        // 获取告警规则详情,判断告警类型(短信,电话,站内信)
        if (null!=alarmRule) {
            // 查询告警详情信息
            List<AlarmRuleDetail> alarmRuleDetailList = alarmRuleDetailService.list(new QueryWrapper<AlarmRuleDetail>().eq("alarm_rule_id", alarmRule.getId()));
            if (alarmRuleDetailList.size()>0){
                // 遍历
                if (alarmRuleDetailList.get(0).getAlarmMode().equals("短信")) {
                    asyncNoticeHandle.waterSmallScaleOverHandle1(alarmRule, alarmRuleDetailList.get(0), ztData,ZtApiDataColumnConstant.waterSmallScaleOverList,true, adCode, false,uuid);
                }
                if (alarmRuleDetailList.get(1).getAlarmMode().equals("短信")) {
                    asyncNoticeHandle.waterSmallScaleOverHandle2(alarmRule, alarmRuleDetailList.get(1), ztData,ZtApiDataColumnConstant.waterSmallScaleOverList,true, adCode, false,uuid);
                }
            }
        }
        // 返回
        return "水位小幅超汛限告警";
@@ -234,22 +261,24 @@
    public String waterBigScaleOverHandle(String arg1, String arg2) {
        //String adCode = "421303000000";
        String adCode = null;
        String templateId1 = "2431012248620";
        String templateId2 = "2431012248623";
        String uuid1 = templateId1 + UUID.randomUUID().toString();
        String uuid2 = templateId2 + UUID.randomUUID().toString();
        String[] split = arg1.split(",");
        String uuid = UUID.randomUUID().toString();
        // 查询当前策略对应的告警规则信息
        AlarmRule alarmRule1 = alarmRuleService.getOne(new QueryWrapper<AlarmRule>().eq("rule_name", split[0]));
        AlarmRule alarmRule2 = alarmRuleService.getOne(new QueryWrapper<AlarmRule>().eq("rule_name", split[1]));
        // 发两个不同的模板
        if (null!=alarmRule1) {
            // 短信发送
            asyncNoticeHandle.waterBigScaleOverHandle1(templateId1, uuid1, alarmRule1,adCode,true);
        }
        if (null!=alarmRule2) {
            // 短信发送
            asyncNoticeHandle.waterBigScaleOverHandle2(templateId2, uuid2, alarmRule2,adCode,true);
        AlarmRule alarmRule = alarmRuleService.getOne(new QueryWrapper<AlarmRule>().eq("rule_name", arg1));
        // 调用中台服务接口查询数据
        JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.res_over_z_big_over_api);
        // 获取告警规则详情,判断告警类型(短信,电话,站内信)
        if (null!=alarmRule) {
            // 查询告警详情信息
            List<AlarmRuleDetail> alarmRuleDetailList = alarmRuleDetailService.list(new QueryWrapper<AlarmRuleDetail>().eq("alarm_rule_id", alarmRule.getId()));
            if (alarmRuleDetailList.size()>0){
                // 遍历
                if (alarmRuleDetailList.get(0).getAlarmMode().equals("短信")) {
                    asyncNoticeHandle.waterBigScaleOverHandle1(alarmRule, alarmRuleDetailList.get(0), ztData,ZtApiDataColumnConstant.waterBigScaleOverList1,true, adCode, false,uuid);
                }
                if (alarmRuleDetailList.get(1).getAlarmMode().equals("短信")) {
                    asyncNoticeHandle.waterBigScaleOverHandle2(alarmRule, alarmRuleDetailList.get(1), ztData,ZtApiDataColumnConstant.waterBigScaleOverList2,true, adCode, false,uuid);
                }
            }
        }
        // 返回
        return "水位大幅超汛限告警";
@@ -263,8 +292,32 @@
     * @return
     */
    public String waterComeDesignHandle(String arg1, String arg2) {
        // 业务逻辑处理 2...
        return "";
        String adCode = null;
        String uuid = UUID.randomUUID().toString();
        // 查询当前策略对应的告警规则信息
        AlarmRule alarmRule = alarmRuleService.getOne(new QueryWrapper<AlarmRule>().eq("rule_name", arg1));
        // 调用中台服务接口查询数据
        JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.res_over_des_is_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.waterComeDesignHandleBySms(alarmRule, alarmRuleDetail, ztData,ZtApiDataColumnConstant.waterComeDesignList1,true, adCode, false,uuid);
                    }
//                    if (alarmRuleDetail.getAlarmMode().equals("电话")) {
//                        asyncNoticeHandle.waterComeDesignHandleCall(alarmRule, alarmRuleDetail, ztData,ZtApiDataColumnConstant.waterComeDesignList2,true, adCode, false,uuid);
//                    }
                    if (alarmRuleDetail.getAlarmMode().equals("站内信")) {
                        asyncNoticeHandle.waterComeDesignHandleStation(alarmRule, alarmRuleDetail, ztData,ZtApiDataColumnConstant.waterComeDesignList3,true, adCode, true,uuid);
                    }
                }
            }
        }
        return "水位接近设计洪水位告警";
    }
    /**
@@ -275,15 +328,27 @@
     * @return
     */
    public String waterMoreDesignHandle(String arg1, String arg2) {
        String templateId = "2431012248604";
        String uuid = templateId + UUID.randomUUID().toString();
        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_des_rz_warn_api);
        // 获取告警规则详情,判断告警类型(短信,电话,站内信)
        if (null!=alarmRule) {
            // 异步处理,暂时解决超时重置问题
            Map<String, Object> map = asyncNoticeHandle.waterMoreDesignHandle(templateId, uuid, alarmRule);
            // 返回
            return "水位超设计洪水位告警";
            // 查询告警详情信息
            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.waterMoreDesignHandle(alarmRule, alarmRuleDetail, ztData,ZtApiDataColumnConstant.waterMoreDesignList,true, adCode, false,uuid);
                    }
//                    if (alarmRuleDetail.getAlarmMode().equals("电话")) {
//                        asyncNoticeHandle.waterMoreDesignHandleCall(alarmRule, alarmRuleDetail, ztData,ZtApiDataColumnConstant.waterMoreDesignList,true, adCode, false,uuid);
//                    }
                }
            }
        }
        // 返回
        return "水位超设计洪水位告警";
@@ -297,8 +362,30 @@
     * @return
     */
    public String waterMoreCheckHandle(String arg1, String arg2) {
        // 业务逻辑处理 2...
        return "";
        String adCode = null;
        String uuid = UUID.randomUUID().toString();
        // 查询当前策略对应的告警规则信息
        AlarmRule alarmRule = alarmRuleService.getOne(new QueryWrapper<AlarmRule>().eq("rule_name", arg1));
        // 调用中台服务接口查询数据
        JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.res_over_chec_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.waterMoreCheckHandle(alarmRule, alarmRuleDetail, ztData,ZtApiDataColumnConstant.waterMoreCheckList,true, adCode, false,uuid);
                    }
//                    if (alarmRuleDetail.getAlarmMode().equals("电话")) {
//                        asyncNoticeHandle.waterMoreCheckHandleCall(alarmRule, alarmRuleDetail, ztData,ZtApiDataColumnConstant.waterMoreCheckList,true, adCode, false,uuid);
//                    }
                }
            }
        }
        // 返回
        return "水位超校核洪水位告警";
    }
    /**
@@ -309,8 +396,27 @@
     * @return
     */
    public String waterComeOneHourUpHandle(String arg1, String arg2) {
        // 业务逻辑处理 2...
        return "";
        String adCode = null;
        String uuid = UUID.randomUUID().toString();
        // 查询当前策略对应的告警规则信息
        AlarmRule alarmRule = alarmRuleService.getOne(new QueryWrapper<AlarmRule>().eq("rule_name", arg1));
        // 调用中台服务接口查询数据
        JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.res_z_diff_up_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.waterComeOneHourUpHandle(alarmRule, alarmRuleDetail, ztData,ZtApiDataColumnConstant.waterComeOneHourUpList,true, adCode, false,uuid);
                    }
                }
            }
        }
        // 返回
        return "近1h水位陡升";
    }
    /**
@@ -321,8 +427,27 @@
     * @return
     */
    public String waterComeOneHourDownHandle(String arg1, String arg2) {
        // 业务逻辑处理 2...
        return "";
        String adCode = null;
        String uuid = UUID.randomUUID().toString();
        // 查询当前策略对应的告警规则信息
        AlarmRule alarmRule = alarmRuleService.getOne(new QueryWrapper<AlarmRule>().eq("rule_name", arg1));
        // 调用中台服务接口查询数据
        JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.res_z_diff_down_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.waterComeOneHourDownHandle(alarmRule, alarmRuleDetail, ztData,ZtApiDataColumnConstant.waterComeOneHourDownList,true, adCode, false,uuid);
                    }
                }
            }
        }
        // 返回
        return "近1h水位陡降";
    }
    /**
@@ -347,12 +472,22 @@
    public String alreadyHeavyRainHandle(String arg1, String arg2) {
        //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));
        // 调用中台服务接口查询数据
        JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.alarm_rain_dy_api);
        // 获取告警规则详情,判断告警类型(短信,电话,站内信)
        if (null!=alarmRule) {
            asyncNoticeHandle.alreadyHeavyRainHandle(templateId,uuid,alarmRule,adCode,false);
            // 查询告警详情信息
            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.alreadyHeavyRainHandle(alarmRule, alarmRuleDetail, ztData,ZtApiDataColumnConstant.alreadyHeavyRainList,true, adCode, false);
                    }
                }
            }
        }
        // 返回
        return "已降大雨告警";
@@ -368,12 +503,22 @@
    public String alreadyRainstormHandle(String arg1, String arg2) {
        //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));
        // 调用中台服务接口查询数据
        JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.alarm_rain_by_api);
        // 获取告警规则详情,判断告警类型(短信,电话,站内信)
        if (null!=alarmRule) {
            asyncNoticeHandle.alreadyRainstormHandle(templateId,uuid,alarmRule,adCode,false);
            // 查询告警详情信息
            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.alreadyRainstormHandle(alarmRule, alarmRuleDetail, ztData,ZtApiDataColumnConstant.alreadyRainstormList,true, adCode, false);
                    }
                }
            }
        }
        // 返回
        return "已降暴雨告警";
@@ -400,13 +545,27 @@
     */
    public String sixHourRainHandle(String arg1, String arg2) {
        //String adCode = "420607000000";
        String uuid = UUID.randomUUID().toString();
        String adCode = null;
        String templateId = "2431012216686";
        String uuid = templateId + UUID.randomUUID().toString();
        // 查询当前策略对应的告警规则信息
        AlarmRule alarmRule = alarmRuleService.getOne(new QueryWrapper<AlarmRule>().eq("rule_name", arg1));
        // 调用中台服务接口查询数据
        JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.alarm_rain_6_over_api);
        // 获取告警规则详情,判断告警类型(短信,电话,站内信)
        if (null!=alarmRule) {
            asyncNoticeHandle.sixHourRainHandle(templateId,uuid,alarmRule,adCode,false);
            // 查询告警详情信息
            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.sixHourRainHandle(alarmRule, alarmRuleDetail, ztData,ZtApiDataColumnConstant.sixHourRainList,true, adCode, false,uuid);
                    }
//                    if (alarmRuleDetail.getAlarmMode().equals("电话")) {
//                        asyncNoticeHandle.sixHourRainHandleByCall(alarmRule, alarmRuleDetail, ztData,ZtApiDataColumnConstant.sixHourRainList,true, adCode, false,uuid);
//                    }
                }
            }
        }
        // 返回
        return "6小时降雨告警";