From b3eac89b903fd1b59a8ca2a8460f073b9180079c Mon Sep 17 00:00:00 2001
From: zhongrijian <646384940@qq.com>
Date: Sat, 01 Jun 2024 17:41:11 +0800
Subject: [PATCH] 新增超过防洪高水位告警

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

--
Gitblit v1.9.3