From 13a2488a1c825da7e2404f5f1036a42b6c44c849 Mon Sep 17 00:00:00 2001
From: zrj <646384940@qq.com>
Date: Mon, 02 Sep 2024 18:04:09 +0800
Subject: [PATCH] 告警合并发送调整

---
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeHandle.java |   80 +++++++++++++++++++++++++++++++++++++---
 1 files changed, 74 insertions(+), 6 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 7b68ed0..a47a474 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
@@ -119,6 +119,12 @@
 		if (null != smsTemplate) {
 			// 创建消息发送对象
 			SmsRequestTemplate smsRequestTemplate = new SmsRequestTemplate();
+			// 通过模板id 查询模板相关信息(外呼对应的模板id则为场景id)
+			SmsTemplate mergeSmsTemplate
+				= smsTemplateService.getOne(new QueryWrapper<SmsTemplate>().eq("id", alarmRuleDetail.getMergeTemplateId()).eq("is_deleted", 0));
+			if (null!=mergeSmsTemplate){
+				smsRequestTemplate.setSmsTemplateMerge(mergeSmsTemplate);
+			}
 			// 设置是否发送站内信
 			smsRequestTemplate.setIsSendStation(isSendStation);
 			// 设置告警信息
@@ -227,6 +233,7 @@
 		// 设置信息
 		smsRequestTemplate.setPersonVOList(personLists);
 		smsRequestTemplate.setTemplateContent(lists);
+		smsRequestTemplate.setTemplateMergeContent(moreLists);
 	}
 
 	/**
@@ -283,7 +290,9 @@
 				//日期处理
 				flag = timeHandle(jsonArray, alarmRuleDetail, flag, i, list);
 				// 合并水库名称
-				boolean isMerge = mergeResName(jsonArray, columnsList, lists, i, personVO,list.size());
+				boolean isMerge = Strings.isBlank(alarmRuleDetail.getMergeTemplateId())?
+					mergeResName(jsonArray, columnsList,lists, i, personVO,list.size()):
+					mergeResName(jsonArray,list, mergeColumnsList,lists,moreLists, i, personVO,list.size());
 				if (isMerge){
 					break;
 				}
@@ -437,6 +446,65 @@
 						}
 					}
 				}
+				break;
+			}
+		}
+		return isMerge;
+	}
+
+	/**
+	 * 合并水库名称内容--暂不启用
+	 * @param jsonArray 告警数据
+	 * @param list 当前告警内容
+	 * @param columnsList 告警列(合并)
+	 * @param lists 告警内容
+	 * @param moreLists 合并告警内容
+	 * @param i 集合索引
+	 * @param personVO 人员信息
+	 * @param index 索引
+	 * @return
+	 */
+	private boolean mergeResName(JSONArray jsonArray,
+								 List<String> list,
+								 List<String> columnsList,
+								 List<List<String>> lists,
+								 List<List<String>> moreLists,
+								 int i,
+								 PersonVO personVO,
+								 int index) {
+		boolean isMerge = false;
+		for (List<String> listStr : lists) {
+			// 如果告警人员已经存在,则需要按规则判断是否合并水库名称,将当前人员告警内容中的水库名称合并
+			if (listStr.contains(personVO.getPhone())) {
+				isMerge = true;
+				// 判断合并的水库名称是否超过3个,超过3个则不在合并,直接舍弃
+				String resNames = listStr.get(index);
+				int length = resNames.split("、").length;
+				if (length>2){
+					break;
+				}
+				// 变量将值放入集合中
+				for (String column : columnsList) {
+					String[] split = column.split(",");
+					String format = "";
+					String lastString = split[split.length-1];
+					if (lastString.equals("1")) {
+						// 需要合并数据,目前只会合并乡镇水库名称,其他情况不处理
+						for (String s : split) {
+							// 乡镇水库拼接
+							format = format + jsonArray.getJSONObject(i).getString(s);
+						}
+						format = format.replaceAll("null","");
+						// 合并水库名称信息,2個以上拼接等
+						if (length==2){
+							list.add(listStr.get(index) + "、" + format + "等");
+						}else {
+							list.add(listStr.get(index) + "、" + format);
+						}
+					}
+				}
+				// 加入合并的集合
+				moreLists.add(list);
 				break;
 			}
 		}
@@ -805,12 +873,12 @@
 			//删除测值
 			list.remove(3);
 			// 新增
-//			boolean save = alarmRecordService.save(alarm);
-//			// 删除测站编号
+			boolean save = alarmRecordService.save(alarm);
+			// 删除测站编号
 			list.remove(0);
-//			if (save) {
-//				return alarm;
-//			}
+			if (save) {
+				return alarm;
+			}
 		}
 		// 返回
 		return null;

--
Gitblit v1.9.3