From b47270f832387263cdafd30ce5b4f056a18492aa Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Mon, 03 Jul 2023 15:50:13 +0800
Subject: [PATCH] 水位初次超汛限告警修改,短信批量发送超过1000条报错逻辑调整
---
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeStrategyImpl.java | 177 ++++++++++++++++++++++++++++++++++------------------------
1 files changed, 103 insertions(+), 74 deletions(-)
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeStrategyImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeStrategyImpl.java
index f77b057..7720fff 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeStrategyImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeStrategyImpl.java
@@ -32,6 +32,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import java.util.UUID;
/**
* 通知策略
@@ -108,47 +109,51 @@
List<PersonVO> personLists = new ArrayList<>();
List<List<String>> lists = new ArrayList<>();
for (int i = 0; i < jsonArray.size(); i++) {
- // 根据水库编号,所在区域查询需要发送的人员手机号及设置
- String res_cd = jsonArray.getJSONObject(i).getString("res_cd");
- // 判断时间是否存在
- String tm = jsonArray.getJSONObject(i).getString("tm");
- String day = "";
- String hour = "";
- String minute = "";
- if (null!=tm && !tm.equals("") && flag){
- flag = true;
- // 加入天,时,分
- day = tm.substring(8,10);
- hour = tm.substring(11,13);
- minute = tm.substring(14,16);
- }else {
- flag = false;
- }
- // 查询告警人员信息
- List<PersonVO> personVOList = getPersonListByResGuid(res_cd,alarmRule);
- if (personVOList.size() > 0) {
- for (PersonVO personVO : personVOList) {
- List<String> list = new ArrayList<>();
- list.add(res_cd);
- list.add(personVO.getPhone());
- if (flag) {
- list.add(day);
- list.add(hour);
- list.add(minute);
- }
- // 变量将值放入集合中
- for (String column : columnsList) {
- String[] split = column.split(",");
- String format = "";
- for (String s : split) {
- format = format + jsonArray.getJSONObject(i).getString(s);
- }
- list.add(format);
- }
- lists.add(list);
+ String county_cd = jsonArray.getJSONObject(i).getString("county_cd");
+ // city_cd,county_cd
+ if (county_cd.equals("421223000000")) {
+ // 根据水库编号,所在区域查询需要发送的人员手机号及设置
+ String res_cd = jsonArray.getJSONObject(i).getString("res_cd");
+ // 判断时间是否存在
+ String tm = jsonArray.getJSONObject(i).getString("tm");
+ String day = "";
+ String hour = "";
+ String minute = "";
+ if (null != tm && !tm.equals("") && flag) {
+ flag = true;
+ // 加入天,时,分
+ day = tm.substring(8, 10);
+ hour = tm.substring(11, 13);
+ minute = tm.substring(14, 16);
+ } else {
+ flag = false;
}
+ // 查询告警人员信息
+ List<PersonVO> personVOList = getPersonListByResGuid(res_cd, alarmRule);
+ if (personVOList.size() > 0) {
+ for (PersonVO personVO : personVOList) {
+ List<String> list = new ArrayList<>();
+ list.add(res_cd);
+ list.add(personVO.getPhone());
+ if (flag) {
+ list.add(day);
+ list.add(hour);
+ list.add(minute);
+ }
+ // 变量将值放入集合中
+ for (String column : columnsList) {
+ String[] split = column.split(",");
+ String format = "";
+ for (String s : split) {
+ format = format + jsonArray.getJSONObject(i).getString(s);
+ }
+ list.add(format);
+ }
+ lists.add(list);
+ }
+ }
+ personLists.addAll(personVOList);
}
- personLists.addAll(personVOList);
}
// 设置信息
smsRequestTemplate.setPersonVOList(personLists);
@@ -159,18 +164,30 @@
* 保存告警记录信息
* @param list
* @param alarmRule 告警规则
+ * @param uuid 临时id
* @return
*/
- private AlarmRecord saveAlarmRecord(List<String> list,AlarmRule alarmRule) {
- AlarmRecord alarmRecord = new AlarmRecord();
- // 设置相关信息
- alarmRecord.setAlarmRuleId(alarmRule.getId().toString());
- alarmRecord.setReservoirNumber(list.get(0));
- alarmRecord.setAlarmCondition(alarmRule.getRuleRemark());
- // 新增
- boolean save = alarmRecordService.save(alarmRecord);
- if (save){
+ private AlarmRecord saveAlarmRecord(List<String> list,AlarmRule alarmRule,String uuid) {
+ AlarmRecord alarmRecord = alarmRecordService.getOne(new QueryWrapper<AlarmRecord>()
+ .eq("temp_code",uuid)
+ .eq("alarm_rule_id",alarmRule.getId())
+ .eq("reservoir_number",list.get(0))
+ );
+ if (null!=alarmRecord) {
return alarmRecord;
+ }else {
+ AlarmRecord alarm = new AlarmRecord();
+ // 设置相关信息
+ alarm.setAlarmRuleId(alarmRule.getId().toString());
+
+ alarm.setReservoirNumber(list.get(0));
+ alarm.setAlarmCondition(alarmRule.getRuleRemark());
+ alarm.setTempCode(uuid);
+ // 新增
+ boolean save = alarmRecordService.save(alarm);
+ if (save) {
+ return alarm;
+ }
}
// 返回
return null;
@@ -235,9 +252,9 @@
list.add(jszrr);
}else {
// 巡查责任人姓名
- list.add("?");
+ list.add("");
// 技术责任人姓名
- list.add("?");
+ list.add("");
}
}
@@ -258,7 +275,7 @@
// 拼接水利部人员信息
list.add(builder.substring(0,builder.length()-1));
}else {
- list.add("?");
+ list.add("");
}
}
@@ -282,20 +299,22 @@
* @return
*/
public String waterInfoNotHandle(String arg1, String arg2) {
+ String templateId = "2431012216668";
+ String uuid = templateId + UUID.randomUUID().toString();
// 查询当前策略对应的告警规则信息
AlarmRule alarmRule = alarmRuleService.getOne(new QueryWrapper<AlarmRule>().eq("rule_name", arg1));
if (null!=alarmRule) {
// 调用中台服务接口查询数据
JSONArray ztData = getZtData("", ZtApiUrlConstant.res_z_null_api);
// 只发短信,将发短信信息组装好
- SmsRequestTemplate smsRequestTemplate = getSendSmsTemplate(ztData, "2431012216668",alarmRule, ZtApiDataColumnConstant.waterInfoNotList,false);
+ SmsRequestTemplate smsRequestTemplate = getSendSmsTemplate(ztData, templateId,alarmRule, ZtApiDataColumnConstant.waterInfoNotList,false);
// 拼接内容后面的联系方式,当前模板拼接平台服务电话
// 遍历,拼接平台服务电话
for (List<String> list : smsRequestTemplate.getTemplateContent()) {
// 添加平台电话
list.add(PtInfoConstant.serverPhone);
// 保存告警记录信息
- AlarmRecord alarmRecord = saveAlarmRecord(list,alarmRule);
+ AlarmRecord alarmRecord = saveAlarmRecord(list,alarmRule,uuid);
if (null != alarmRecord) {
list.add(alarmRecord.getId().toString());
}
@@ -315,6 +334,8 @@
* @return
*/
public String waterDataExcHandle(String arg1, String arg2) {
+ String templateId = "2431012248591";
+ String uuid = templateId + UUID.randomUUID().toString();
// 查询当前策略对应的告警规则信息
AlarmRule alarmRule = alarmRuleService.getOne(new QueryWrapper<AlarmRule>().eq("rule_name", arg1));
if (null!=alarmRule) {
@@ -322,11 +343,11 @@
JSONArray ztData = getZtData("", ZtApiUrlConstant.res_z_not_normal_api);
// 只发短信,将发短信信息组装好
SmsRequestTemplate smsRequestTemplate
- = getSendSmsTemplate(ztData, "2431012248591",alarmRule, ZtApiDataColumnConstant.waterDataExcList,false);
+ = getSendSmsTemplate(ztData, templateId,alarmRule, ZtApiDataColumnConstant.waterDataExcList,false);
// 拼接后面内容
for (List<String> list : smsRequestTemplate.getTemplateContent()) {
// 保存告警记录信息
- AlarmRecord alarmRecord = saveAlarmRecord(list,alarmRule);
+ AlarmRecord alarmRecord = saveAlarmRecord(list,alarmRule,uuid);
if (null != alarmRecord) {
list.add(alarmRecord.getId().toString());
}
@@ -346,20 +367,22 @@
* @return
*/
public String waterLessDeadHandle(String arg1, String arg2) {
+ String templateId = "2431012248594";
+ String uuid = templateId + UUID.randomUUID().toString();
// 查询当前策略对应的告警规则信息
AlarmRule alarmRule = alarmRuleService.getOne(new QueryWrapper<AlarmRule>().eq("rule_name", arg1));
if (null!=alarmRule) {
// 调用中台服务接口查询数据
JSONArray ztData = getZtData("", ZtApiUrlConstant.res_diff_dead_z_api);
// 只发短信,将发短信信息组装好
- SmsRequestTemplate smsRequestTemplate = getSendSmsTemplate(ztData, "2431012248594",alarmRule, ZtApiDataColumnConstant.waterLessDeadList,true);
+ SmsRequestTemplate smsRequestTemplate = getSendSmsTemplate(ztData, templateId,alarmRule, ZtApiDataColumnConstant.waterLessDeadList,true);
// 拼接内容后面的联系方式,当前模板县水利部人员姓名电话
// 遍历,拼接县水利部人员电话
for (List<String> list : smsRequestTemplate.getTemplateContent()) {
// 查询县水利部人员(通过水库编号)
// list.add("测试:13112341234");
// 保存告警记录信息
- AlarmRecord alarmRecord = saveAlarmRecord(list,alarmRule);
+ AlarmRecord alarmRecord = saveAlarmRecord(list,alarmRule,uuid);
if (null != alarmRecord) {
list.add(alarmRecord.getId().toString());
}
@@ -393,13 +416,15 @@
* @return
*/
public String waterComeOverHandle(String arg1, String arg2) {
+ String templateId = "znxsw10000001";
+ String uuid = templateId + UUID.randomUUID().toString();
// 查询当前策略对应的告警规则信息
AlarmRule alarmRule = alarmRuleService.getOne(new QueryWrapper<AlarmRule>().eq("rule_name", arg1));
if (null!=alarmRule) {
// 调用中台服务接口查询数据
JSONArray ztData = getZtData("", ZtApiUrlConstant.res_diff_dead_z_api);
// 只发送站内信
- SmsRequestTemplate smsRequestTemplate = getSendSmsTemplate(ztData, "znxsw10000001",alarmRule, ZtApiDataColumnConstant.waterLessDeadList,true);
+ SmsRequestTemplate smsRequestTemplate = getSendSmsTemplate(ztData, templateId,alarmRule, ZtApiDataColumnConstant.waterLessDeadList,true);
// 拼接内容后面的联系方式,当前模板县水利部人员姓名电话
// 遍历,拼接县水利部人员电话
for (List<String> list : smsRequestTemplate.getTemplateContent()) {
@@ -408,7 +433,7 @@
// 市县水利部门人员姓名电话(暂时不要)
// list.add("测试:13112341234");
// 保存告警记录信息
- AlarmRecord alarmRecord = saveAlarmRecord(list,alarmRule);
+ AlarmRecord alarmRecord = saveAlarmRecord(list,alarmRule,uuid);
if (null != alarmRecord) {
list.add(alarmRecord.getId().toString());
// list.add("999");
@@ -430,6 +455,8 @@
* @return
*/
public String waterFirstOverHandle(String arg1, String arg2) {
+ String templateId = "2431012216671";
+ String uuid = templateId + UUID.randomUUID().toString();
// 查询当前策略对应的告警规则信息
AlarmRule alarmRule = alarmRuleService.getOne(new QueryWrapper<AlarmRule>().eq("rule_name", arg1));
if (null!=alarmRule) {
@@ -437,24 +464,26 @@
JSONArray ztData = getZtData("", ZtApiUrlConstant.over_z_res_api);
// 只发短信,将发短信信息组装好
SmsRequestTemplate smsRequestTemplate
- = getSendSmsTemplate(ztData, "2431012216671",alarmRule, ZtApiDataColumnConstant.waterFirstOverList,true);
+ = getSendSmsTemplate(ztData, templateId,alarmRule, ZtApiDataColumnConstant.waterFirstOverList,true);
// 拼接后面内容
- for (List<String> list : smsRequestTemplate.getTemplateContent()) {
- // 依次拼接巡查责任人,技术责任人姓名
- addPatrolTechnologyInfo(list);
- // 拼接市县水利部人员姓名及联系方式
- addCityCountyBusinessPersonInfo(list);
- // 保存告警记录信息
- AlarmRecord alarmRecord = saveAlarmRecord(list,alarmRule);
- if (null != alarmRecord) {
- list.add(alarmRecord.getId().toString());
-// list.add("999");
+ if (smsRequestTemplate.getPersonVOList().size()>0) {
+ for (List<String> list : smsRequestTemplate.getTemplateContent()) {
+ // 依次拼接巡查责任人,技术责任人姓名
+ addPatrolTechnologyInfo(list);
+ // 拼接市县水利部人员姓名及联系方式
+ addCityCountyBusinessPersonInfo(list);
+ // 保存告警记录信息
+ AlarmRecord alarmRecord = saveAlarmRecord(list,alarmRule,uuid);
+ if (null != alarmRecord) {
+ list.add(alarmRecord.getId().toString());
+// list.add("999");
+ }
}
+ // 调用短信服务
+ Map<String, Object> map = smsService.sendSignMsg(smsRequestTemplate);
+ // 返回
+ return "本次-水位初次超汛限告警短信成功通知数量:" + map.get("smsRecord");
}
- // 调用短信服务
- Map<String, Object> map = smsService.sendSignMsg(smsRequestTemplate);
- // 返回
- return "本次-水位初次超汛限告警短信成功通知数量:" + map.get("smsRecord");
}
// 返回
return "水位初次超汛限告警";
--
Gitblit v1.9.3