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