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