From 1fac057c7f8b8c0d620a241e6e0811154e11bcac Mon Sep 17 00:00:00 2001
From: xieb <vip_xiaobin810@163.com>
Date: Tue, 30 Apr 2024 15:52:55 +0800
Subject: [PATCH] 测站短信预警

---
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/feign/DataAbnormalWarnClient.java |  148 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 148 insertions(+), 0 deletions(-)

diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/feign/DataAbnormalWarnClient.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/feign/DataAbnormalWarnClient.java
index 88e2b72..2840002 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/feign/DataAbnormalWarnClient.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/feign/DataAbnormalWarnClient.java
@@ -1,16 +1,33 @@
 package cn.gistack.sm.sms.feign;
 
 import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendRequest;
+import cn.gistack.common.utils.SpringContextUtil;
 import cn.gistack.sm.sjztmd.entity.AttStBase;
 import cn.gistack.sm.sjztmd.service.*;
+import cn.gistack.sm.sjztods.constant.ZtApiUrlConstant;
+import cn.gistack.sm.sjztods.constant.ZtConfigConstant;
 import cn.gistack.sm.sms.util.SmsUtils;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.parser.Feature;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+import org.springframework.util.MultiValueMap;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.client.RestTemplate;
 import springfox.documentation.annotations.ApiIgnore;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
 
 /**
  * @PROJECT_NAME: skjcmanager
@@ -38,6 +55,9 @@
 
 	@Autowired
 	private IAttResFlseLimService attResFlseLimService;
+
+	@Autowired
+	private RestTemplate restTemplate;
 
 	@Override
 	public void sendOperate(String tableName, String phones) {
@@ -68,6 +88,123 @@
 
 	}
 
+	@Override
+	public void sendOperateCZ(String phones, String rate) {
+
+		String url = "/services/1234567890ABCDEFGHIJKLMN/source_data_ssync_staus";
+
+		// 获取当前时间
+		LocalDateTime now = LocalDateTime.now();
+
+		// 减去一个小时
+		LocalDateTime oneHourAgo = now.minusHours(1);
+
+		// 调整为整点时间
+		LocalDateTime oneHourAgoRoundedDown = oneHourAgo.truncatedTo(ChronoUnit.HOURS);
+
+		// 获取整点时间的结束时间(该小时的最后一分钟)
+		LocalDateTime oneHourAgoRoundedDownEnd = oneHourAgoRoundedDown.plusHours(1).minusSeconds(1);
+
+		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+		String startTime = formatter.format(oneHourAgoRoundedDown);
+		String endTime = formatter.format(oneHourAgoRoundedDownEnd);
+
+		String param = "?start_dt=" + startTime + "&end_dt=" + endTime + "&over_rate=" + rate;
+//		String param = "?start_dt=2024-04-30 10:00:00&end_dt=2024-04-30 10:59:59&over_rate=20";
+
+		JSONObject jsonObject = getZtData(param, url);
+		int code = jsonObject.getInteger("code");
+		if (code == 200) {
+			JSONArray jsonArray = jsonObject.getJSONObject("data").getJSONArray("data");
+			String str = "";
+
+			for (int i = 0; i < jsonArray.size(); i++) {
+				JSONObject data = jsonArray.getJSONObject(i);
+				String flag = data.getString("flag");
+				String title = data.getString("title");
+				String tm = data.getString("tm");
+				String rateB = data.getString("rate");
+
+				if ("".equals(str)) {
+					str += tm + flag + title + "数据比昨日少" + rateB;
+				} else {
+					str += ";" + tm + flag + title + "数据比昨日少" + rateB;
+				}
+			}
+
+			if (!str.equals("")) {
+				sendMsgByCZ(phones, str);
+			}
+//			else {
+//				jsonObject = getZtData(param, url);
+//				code = jsonObject.getInteger("code");
+//
+//				if (code == 200) {
+//					jsonArray = jsonObject.getJSONObject("data").getJSONArray("data");
+//					str = "";
+//
+//					for (int i = 0; i < jsonArray.size(); i++) {
+//						JSONObject data = jsonArray.getJSONObject(i);
+//						String flag = data.getString("flag");
+//						String title = data.getString("title");
+//						String tm = data.getString("tm");
+//						String rate = data.getString("rate");
+//
+//						str += tm + flag + title + "当前比例为:" + rate + ";";
+//					}
+//
+//					if (!str.equals("")) {
+//						sendMsgByCZ(phones, str);
+//					}
+//				}
+//			}
+
+
+		}
+	}
+
+
+	/**
+	 * 调用中台接口查询数据
+	 *
+	 * @param params
+	 * @param url
+	 * @return
+	 */
+	public JSONObject getZtData(String params, String url) {
+		// 获取环境
+		String activeProfile = SpringContextUtil.getActiveProfile();
+		if (activeProfile.equals("dev")){
+			url = ZtApiUrlConstant.url_prefix_dev + url;
+		}
+		if (activeProfile.equals("prod")){
+			url = ZtApiUrlConstant.url_prefix_prod + url;
+		}
+		if (activeProfile.equals("test")){
+			url = ZtApiUrlConstant.url_prefix_test + url;
+		}
+		//设置请求头
+		HttpHeaders headers = new HttpHeaders();
+		headers.add(ZtConfigConstant.header_key, ZtConfigConstant.header_value);
+		//封装请求头
+		HttpEntity<MultiValueMap<String, Object>> formEntity = new HttpEntity<MultiValueMap<String, Object>>(headers);
+		try {
+			//有请求头,有参数请求
+			ResponseEntity<String> responseEntity =
+				restTemplate.exchange(url + params,
+					HttpMethod.GET,
+					formEntity,
+					String.class);
+			// Feature.IgnoreNotMatch 保留null值的属性
+			JSONObject jsonObject = JSON.parseObject(responseEntity.getBody(), Feature.IgnoreNotMatch);
+			// 返回
+			return jsonObject;
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return null;
+	}
+
 	private void sendMsg(String tableName, String phones) {
 		SMSSendRequest request = new SMSSendRequest();
 		String [] phoness = phones.split(",");
@@ -79,4 +216,15 @@
 		}
 	}
 
+	private void sendMsgByCZ(String phones, String str) {
+		SMSSendRequest request = new SMSSendRequest();
+		String [] phoness = phones.split(",");
+		for (String n: phoness) {
+			request.setUserNumber(n);
+			request.setTemplateId("2431012268292");
+			request.setMessageContent("紧急通知:数据表异常,请立即检查数据源并填充缺失的数据!"+str);
+			SmsUtils.sendMsg(request);
+		}
+	}
+
 }

--
Gitblit v1.9.3