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