From c0cc0778ae520c614e2adde9eb48d3f56529edc8 Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Wed, 10 Apr 2024 16:37:06 +0800
Subject: [PATCH] 变形告警,渗流告警

---
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeHandle.java |  110 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 110 insertions(+), 0 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 f275e59..b1f30aa 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
@@ -1,20 +1,26 @@
 package cn.gistack.alerts.notice.service.impl;
 
+import cn.com.flaginfo.sdk.cmc.api.result.ComResult;
+import cn.com.flaginfo.sdk.cmc.api.sms.dynsend.DynSMSSendDataResult;
 import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendRequest;
 import cn.gistack.alerts.alarmRule.entity.AlarmRecord;
 import cn.gistack.alerts.alarmRule.entity.AlarmRecordDetail;
 import cn.gistack.alerts.alarmRule.entity.AlarmRule;
 import cn.gistack.alerts.alarmRule.entity.AlarmRuleDetail;
 import cn.gistack.alerts.alarmRule.service.AlarmRecordService;
+import cn.gistack.alerts.alarmRule.vo.AlarmRecordDetailVO;
 import cn.gistack.alerts.notice.constant.ZnwhColumnConstant;
 import cn.gistack.alerts.notice.constant.ZtApiUrlConstant;
 import cn.gistack.alerts.notice.constant.ZtConfigConstant;
 import cn.gistack.alerts.notice.enums.PersonEnum;
 import cn.gistack.alerts.notice.util.FormatUtil;
 import cn.gistack.alerts.push.service.IPushService;
+import cn.gistack.alerts.sms.entity.SmsRecord;
+import cn.gistack.alerts.sms.entity.SmsResult;
 import cn.gistack.alerts.sms.entity.SmsTemplate;
 import cn.gistack.alerts.sms.service.ISmsTemplateService;
 import cn.gistack.alerts.sms.vo.SmsRequestTemplate;
+import cn.gistack.alerts.sms.vo.Temp;
 import cn.gistack.alerts.sse.server.SSEServer;
 import cn.gistack.common.utils.SpringContextUtil;
 import cn.gistack.sm.intelligentCall.feign.OutCallClient;
@@ -29,6 +35,7 @@
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.google.common.collect.Lists;
 import lombok.extern.slf4j.Slf4j;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
@@ -48,6 +55,7 @@
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
+import java.util.stream.Collectors;
 
 @Component
 @Slf4j
@@ -747,6 +755,108 @@
 		return map;
 	}
 
+
+
+	/**
+	 * 保存站内信记录(水库合并)
+	 * @param smsRequestTemplate
+	 * @param alarmRule
+	 * @return
+	 */
+	public Map<String, Object> saveInStationInfoMerge(SmsRequestTemplate smsRequestTemplate, AlarmRule alarmRule) {
+		// 取出数据
+		SMSSendRequest request = new SMSSendRequest();
+		SmsTemplate smsTemplate = smsRequestTemplate.getSmsTemplate();
+		request.setTemplateId(smsTemplate.getTemplateId());
+		List<List<String>> templateContent = smsRequestTemplate.getTemplateContent();
+
+		List<MessageRecord> messageRecordList = new ArrayList<>();
+		List<Temp> tempList = new ArrayList<>();
+		// 合并数据
+		for (List<String> list : templateContent) {
+			Temp temp = new Temp();
+			temp.setPhone(list.get(1));
+			temp.setReservoirCode(list.get(0));
+			temp.setReservoirName(list.get(3));
+			temp.setAlarmRecordId(list.get(list.size()-1));
+			// 放入临时集合
+			tempList.add(temp);
+		}
+
+		// 按手机号分组
+		Map<String, List<Temp>> listMap = tempList.stream().collect(Collectors.groupingBy(Temp::getPhone));
+
+
+		listMap.forEach((s, temps) -> {
+			StringBuilder builder = new StringBuilder();
+			StringBuilder smsRecordBuilder = new StringBuilder();
+			builder.append(s).append(",");
+			// 站内信其实不用分组,与短信发送结构保持一致,
+			List<List<Temp>> lists = Lists.partition(new ArrayList<>(temps), 7000);
+			for (List<Temp> list : lists) {
+				List<AlarmRecordDetailVO> alarmRecordDetailList = new ArrayList<>();
+				// 设置站内信记录信息
+				MessageRecord messageRecord = new MessageRecord();
+
+				// 遍历
+				for (Temp temp : list) {
+					builder.append(temp.getReservoirName()).append(",");
+					smsRecordBuilder.append(temp.getReservoirName()).append(",");
+					AlarmRecordDetailVO alarmRecordDetail = new AlarmRecordDetailVO();
+					alarmRecordDetail.setReservoirNumber(temp.getReservoirCode());
+					alarmRecordDetail.setAlarmRecordId(Long.parseLong(temp.getAlarmRecordId()));
+					alarmRecordDetail.setAlarmMode("站内信");
+					alarmRecordDetail.setPhone(temp.getPhone());
+					alarmRecordDetail.setReservoirName(temp.getReservoirName());
+					// 加入集合
+					alarmRecordDetailList.add(alarmRecordDetail);
+				}
+
+
+				String row = builder.substring(0, builder.length() - 1);
+				// 组装数据
+				String[] titleArr = smsRequestTemplate.getTitle().split(",");
+				String[][] dyns = new String[2][titleArr.length];
+				dyns[0] = titleArr;
+				dyns[1] = row.split(",");
+				// 内容处理
+				String str = smsTemplate.getContent().replaceAll("\\{.+?\\}", "%s");
+				// 短信内容拼接(完成发送的结果信息)
+				String substring = smsRecordBuilder.substring(0, smsRecordBuilder.length() - 1);
+				// 格式转换
+				String format = String.format(str, substring.split(","));
+
+
+				messageRecord.setTheme(alarmRule.getRuleName());
+				messageRecord.setSender(AuthUtil.getUserId().toString());
+				messageRecord.setSource("智能告警");
+				messageRecord.setStatus(0);
+
+				// 删除 最后一个 告警记录id
+				list.remove(list.size() - 1);
+				// 删除 0 水库编码
+				list.remove(0);
+
+				// 设置手机号
+//				messageRecord.setRecipient(list.get(0));
+				messageRecord.setContent(format);
+				// 放入集合
+				messageRecordList.add(messageRecord);
+
+			}
+		});
+
+		// 保存告警记录详情信息
+		if (smsRequestTemplate.getIsSendStation()) {
+			saveMessageRecord(messageRecordList);
+		}
+		Map<String, Object> map = new HashMap<>(2);
+		// 返回
+		return map;
+	}
+
+
+
 	/**
 	 * 保存站内信记录信息
 	 * @param messageRecordList

--
Gitblit v1.9.3