From f2bfb4490106abcb41e3c7e09159e89a0f7219c0 Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Thu, 13 Jul 2023 16:07:26 +0800
Subject: [PATCH] 水位缺失预警调整,重复水库进行去重,合并水库最多30个发送

---
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeHandle.java |  100 ++++++++++++++++++++-----------------------------
 1 files changed, 41 insertions(+), 59 deletions(-)

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 11f15b9..a8882e5 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
@@ -75,6 +75,7 @@
 	 * @param columnsList 列名集合信息
 	 * @param flag 是否包含日期
 	 * @param adCode 行政区编号
+	 * @param uuid 本次执行临时编号
 	 * @return
 	 */
 	public SmsRequestTemplate getSendSmsTemplate(JSONArray jsonArray,
@@ -82,7 +83,8 @@
 												  AlarmRule alarmRule,
 												  List<String> columnsList,
 												  Boolean flag,
-												  String adCode) {
+												  String adCode,
+												  String uuid) {
 		// 通过模板id 查询模板相关信息
 		SmsTemplate smsTemplate = smsTemplateService.getOne(new QueryWrapper<SmsTemplate>().eq("template_id",templateId).eq("is_deleted",0));
 		if (null != smsTemplate) {
@@ -93,7 +95,7 @@
 			// 解析模板并设置 title
 			smsRequestTemplate.setTitle(FormatUtil.composeMessage(smsTemplate.getContent()));
 			// 列名数据转换
-			getColumnData(jsonArray, columnsList,smsRequestTemplate,alarmRule,flag,adCode);
+			getColumnData(jsonArray, columnsList,smsRequestTemplate,alarmRule,flag,adCode,uuid);
 			//返回
 			return smsRequestTemplate;
 		}
@@ -107,6 +109,7 @@
 	 * @param smsRequestTemplate
 	 * @param flag
 	 * @param adCode
+	 * @param uuid
 	 * @return
 	 */
 	private void getColumnData(JSONArray jsonArray,
@@ -114,59 +117,25 @@
 							   SmsRequestTemplate smsRequestTemplate,
 							   AlarmRule alarmRule,
 							   Boolean flag,
-							   String adCode) {
+							   String adCode,
+							   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++) {
 			if (null!=adCode){
 				// 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);
+					jointData(jsonArray, columnsList, alarmRule, flag, personLists, lists, i,uuid,set);
 				}
 			}else {
-				jointData(jsonArray, columnsList, alarmRule, flag, personLists, lists, i);
+				jointData(jsonArray, columnsList, alarmRule, flag, personLists, lists, i,uuid,set);
 			}
 		}
 		// 设置信息
 		smsRequestTemplate.setPersonVOList(personLists);
 		smsRequestTemplate.setTemplateContent(lists);
-	}
-
-	/**
-	 * 列名数据转换-- 需合并水库名称
-	 * @param jsonArray
-	 * @param columnsList
-	 * @param smsRequestTemplate
-	 * @param flag
-	 * @param adCode
-	 * @return
-	 */
-	private void getMergeColumnData(JSONArray jsonArray,
-							   List<String> columnsList,
-							   SmsRequestTemplate smsRequestTemplate,
-							   AlarmRule alarmRule,
-							   Boolean flag,
-							   String adCode) {
-		Set<String> resCdSet = new HashSet<>();
-		for (int i = 0; i < jsonArray.size(); i++) {
-			String res_cd = jsonArray.getJSONObject(i).getString("res_cd");
-			resCdSet.add(res_cd);
-		}
-		// 查询对应的人员
-		getPersonListByResList(resCdSet,alarmRule);
-		// 设置信息
-//		smsRequestTemplate.setPersonVOList(personLists);
-//		smsRequestTemplate.setTemplateContent(lists);
-	}
-
-	/**
-	 * 查询对应的用户及水库信息
-	 * @param resCdSet
-	 * @param alarmRule
-	 */
-	private void getPersonListByResList(Set<String> resCdSet, AlarmRule alarmRule) {
-		// 查询对应的用户及水库信息
 	}
 
 	/**
@@ -180,27 +149,40 @@
 	 * @param i
 	 * @return
 	 */
-	private void jointData(JSONArray jsonArray, List<String> columnsList, AlarmRule alarmRule, Boolean flag, List<PersonVO> personLists, List<List<String>> lists, int i) {
+	private void jointData(JSONArray jsonArray,
+						   List<String> columnsList,
+						   AlarmRule alarmRule,
+						   Boolean flag,
+						   List<PersonVO> personLists,
+						   List<List<String>> lists,
+						   int i,
+						   String uuid,
+						   Set<String> set) {
 		// 根据水库编号,所在区域查询需要发送的人员手机号及设置
 		String res_cd = jsonArray.getJSONObject(i).getString("res_cd");
-		// 取出测站编码
-		String stcd = jsonArray.getJSONObject(i).getString("stcd");
-		// 判断时间是否存在
-		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;
+		String tempStr = uuid + res_cd;
+		// 去重水库操作,如果有重复的水库则不操作
+		if (!set.contains(tempStr)) {
+			set.add(tempStr);
+			// 取出测站编码
+			String stcd = jsonArray.getJSONObject(i).getString("stcd");
+			// 判断时间是否存在
+			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;
+			}
+			// 获取告警人员信息
+			getAlarmPersonList(jsonArray, columnsList, alarmRule, flag, personLists, lists, i, res_cd, day, hour, minute, stcd);
 		}
-		// 获取告警人员信息
-		getAlarmPersonList(jsonArray, columnsList, alarmRule, flag, personLists, lists, i, res_cd, day, hour, minute,stcd);
 	}
 
 	/**

--
Gitblit v1.9.3