From 2e4a5ceda924d410d08632ec3bd8c6d42cf5bc08 Mon Sep 17 00:00:00 2001
From: ke <893754509@qq.com>
Date: Fri, 19 Jul 2024 12:22:09 +0800
Subject: [PATCH] 白蚁预警发短信7-19 12

---
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/feign/DataAbnormalWarnClient.java |  222 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 222 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..ce482a1 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,40 @@
 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.skBaiYiTest.entity.BaiYiTestEntity;
+import cn.gistack.sm.skBaiYiTest.entity.WarnMsg;
+import cn.gistack.sm.skBaiYiTest.service.ISkBaiYiService;
 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;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
 
 /**
  * @PROJECT_NAME: skjcmanager
@@ -38,6 +62,12 @@
 
 	@Autowired
 	private IAttResFlseLimService attResFlseLimService;
+
+	@Autowired
+	private RestTemplate restTemplate;
+
+	@Autowired
+	private ISkBaiYiService skBaiYiService;
 
 	@Override
 	public void sendOperate(String tableName, String phones) {
@@ -68,6 +98,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 +226,79 @@
 		}
 	}
 
+	private void sendMsgByCZ(String phones, String str) {
+		SMSSendRequest request = new SMSSendRequest();
+		String [] phoness = phones.split(",");
+		for (String n: phoness) {
+			request.setUserNumber(n);
+			request.setTemplateId("2431012277510");
+			request.setMessageContent("紧急通知:数据表异常,请立即检查数据源并填充缺失的数据!"+str);
+			SmsUtils.sendMsg(request);
+		}
+	}
+
+
+	/**
+	 * 白蚁预警发短信
+	 */
+	public void sendBaiYiWarn() {
+		List<BaiYiTestEntity> list = skBaiYiService.selectList();
+		Set<String> skNameSet = new HashSet<>();
+		ArrayList<WarnMsg> msgEntityList = new ArrayList<>();
+
+
+		if (list!= null && list.size()>0) {
+			log.info("白蚁预警水库数量:" +  list.size());
+			for (BaiYiTestEntity item : list ) {
+				skNameSet.add(item.getSkName());
+			}
+
+			if(skNameSet.size()>0){
+				for (String sknm : skNameSet) {
+					WarnMsg warnMsg = new WarnMsg();
+					warnMsg.setSkName(sknm);
+					String statListStr = ""; // 测点集
+					String personInCharge = ""; // 责任人名称
+					String phone = ""; // 责任人联系方式
+
+
+					for (BaiYiTestEntity item : list ) {
+						String skName = item.getSkName();
+						String termitePointNum = item.getTermitePointNum();
+						personInCharge = item.getPersonInCharge();
+						phone = item.getPhone();
+
+						if(sknm.equals(skName)){
+
+							statListStr = statListStr + termitePointNum + ","; // 同一个水库的报警白蚁测点拼接起来
+
+						}
+					}
+					warnMsg.setPhone(phone);
+					warnMsg.setPersonInCharge(personInCharge);
+					warnMsg.setBayistate(statListStr);
+					msgEntityList.add(warnMsg);
+				}
+			}
+		}
+		// 获取到了数据开始发短信
+		if (msgEntityList!= null && msgEntityList.size()>0) {
+			for (WarnMsg item : msgEntityList) {
+				String skName = item.getSkName();
+				String personInCharge = item.getPersonInCharge();
+				String phone = item.getPhone();
+				String bayistate = item.getBayistate();
+
+
+				SMSSendRequest request = new SMSSendRequest();
+				request.setUserNumber(phone);
+				request.setTemplateId("2431012268292");//短信模版编号
+				request.setMessageContent("紧急通知:"+skName+" 中 "+bayistate+" 以上白蚁监测点发生白蚁预警,请立安排人前去检查是否真实存在白蚁。");
+				SmsUtils.sendMsg(request);
+
+			}
+		}
+
+	}
+
 }

--
Gitblit v1.9.3