From 604a30ce5ecc725427bb1e384abdbdf777a4074b Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Wed, 06 Dec 2023 16:40:03 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/jtdev' into jtdev

---
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/AttResBaseServiceImpl.java        |    5 +
 skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/jobhandler/SendSmsXxlJob.java           |   21 ++++++
 skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sms/feign/DataAbnormalWarnClientFallback.java |   19 ++++++
 skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sms/feign/IDataAbnormalWarnClient.java        |   28 +++++++++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.xml                    |    4 +
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/feign/DataAbnormalWarnClient.java                 |   82 +++++++++++++++++++++++++++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.java                   |    6 ++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/IAttResBaseService.java                |    2 
 8 files changed, 166 insertions(+), 1 deletions(-)

diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sms/feign/DataAbnormalWarnClientFallback.java b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sms/feign/DataAbnormalWarnClientFallback.java
new file mode 100644
index 0000000..28b2dc0
--- /dev/null
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sms/feign/DataAbnormalWarnClientFallback.java
@@ -0,0 +1,19 @@
+package cn.gistack.sm.sms.feign;
+
+import org.springframework.stereotype.Component;
+
+/**
+ * @PROJECT_NAME: skjcmanager
+ * @DESCRIPTION: 失败调度
+ * @USER: aix
+ * @DATE: 2023/12/5 15:31
+ */
+@Component
+public class DataAbnormalWarnClientFallback implements IDataAbnormalWarnClient {
+
+	@Override
+	public void sendOperate(String tableName, String phones) {
+
+	}
+
+}
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sms/feign/IDataAbnormalWarnClient.java b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sms/feign/IDataAbnormalWarnClient.java
new file mode 100644
index 0000000..3a35309
--- /dev/null
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sms/feign/IDataAbnormalWarnClient.java
@@ -0,0 +1,28 @@
+package cn.gistack.sm.sms.feign;
+
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+/**
+ * @PROJECT_NAME: skjcmanager
+ * @DESCRIPTION: 数据异常预警
+ * @USER: aix
+ * @DATE: 2023/12/5 15:28
+ */
+@FeignClient(
+	value = "blade-sm",
+	fallback = DataAbnormalWarnClientFallback.class
+)
+public interface IDataAbnormalWarnClient {
+
+	String API_PREFIX = "/client";
+	String SEND_OPERATE = API_PREFIX + "/sendOperate";
+
+	/**
+	 * 当有异常数据时,发送预警短信
+	 */
+	@GetMapping(SEND_OPERATE)
+	void sendOperate(@RequestParam("tableName")String tableName, @RequestParam("phones")String phones);
+
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.java
index 878a7d7..388e746 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.java
@@ -59,4 +59,10 @@
 	 * @return
 	 */
     AttResAdVO getWaterRegionInfoByResGuid(@Param("guid") String guid);
+
+	/**
+	 * 获取水库基本信息表DimResInfo总数
+	 * @return
+	 */
+	int getDimResInfoACount();
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.xml b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.xml
index b617d38..0d78ff3 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.xml
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.xml
@@ -182,4 +182,8 @@
         where a."guid" = #{guid}
     </select>
 
+    <select id="getDimResInfoACount" resultType="java.lang.Integer">
+        select count(*) from sjzt_dw."dim_res_info_a"
+    </select>
+
 </mapper>
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/IAttResBaseService.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/IAttResBaseService.java
index 0576c30..b7582b7 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/IAttResBaseService.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/IAttResBaseService.java
@@ -50,4 +50,6 @@
 	 * @return
 	 */
 	AttResAdVO getWaterRegionInfoByResGuid(String guid);
+
+	int getDimResInfoACount();
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/AttResBaseServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/AttResBaseServiceImpl.java
index 15d9b86..36714d5 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/AttResBaseServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/AttResBaseServiceImpl.java
@@ -93,4 +93,9 @@
 	public AttResAdVO getWaterRegionInfoByResGuid(String guid) {
 		return baseMapper.getWaterRegionInfoByResGuid(guid);
 	}
+
+	@Override
+	public int getDimResInfoACount() {
+		return baseMapper.getDimResInfoACount();
+	}
 }
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
new file mode 100644
index 0000000..88e2b72
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/feign/DataAbnormalWarnClient.java
@@ -0,0 +1,82 @@
+package cn.gistack.sm.sms.feign;
+
+import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendRequest;
+import cn.gistack.sm.sjztmd.entity.AttStBase;
+import cn.gistack.sm.sjztmd.service.*;
+import cn.gistack.sm.sms.util.SmsUtils;
+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.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+/**
+ * @PROJECT_NAME: skjcmanager
+ * @DESCRIPTION: 数据异常告警feign实现
+ * @USER: aix
+ * @DATE: 2023/12/5 15:39
+ */
+@NonDS
+@ApiIgnore
+@RestController
+@AllArgsConstructor
+@Slf4j
+public class DataAbnormalWarnClient implements IDataAbnormalWarnClient{
+
+	@Autowired
+	private IAttResBaseService resBaseService;
+
+	@Autowired
+	private IAttStBaseService attStBaseService;
+	@Autowired
+	private IAttResStagCharService attResStagCharService;
+
+	@Autowired
+	private IAttResRsbNorspiService attResRsbNorspiService;
+
+	@Autowired
+	private IAttResFlseLimService attResFlseLimService;
+
+	@Override
+	public void sendOperate(String tableName, String phones) {
+		//汇聚任务水库基本信息表 用于判断是否有数据
+		long count = 1l;
+		if (tableName.equals("dim_res_info_a"))
+			count = resBaseService.getDimResInfoACount();
+		else if (tableName.equals("att_res_base"))
+			count = resBaseService.count();
+		else if (tableName.equals("att_st_base")) {
+			// 构造 QueryWrapper 对象
+			QueryWrapper<AttStBase> wrapper = new QueryWrapper<>();
+			wrapper.isNotNull("\"share_st_code\"").ne("\"share_st_code\"", "");
+			count = attStBaseService.count(wrapper);
+		} else if (tableName.equals("att_res_stag_char")) {
+			count = attResStagCharService.count();
+		} else if (tableName.equals("att_res_rsb_norspi")) {
+			count = attResRsbNorspiService.count();
+		} else if (tableName.equals("att_res_flse_lim")) {
+			count = attResFlseLimService.count();
+		}
+
+		log.info("预警数量count:" +  count);
+
+		if (count == 0) {
+			sendMsg(tableName, phones);
+		}
+
+	}
+
+	private void sendMsg(String tableName, String phones) {
+		SMSSendRequest request = new SMSSendRequest();
+		String [] phoness = phones.split(",");
+		for (String n: phoness) {
+			request.setUserNumber(n);
+			request.setTemplateId("2431012268292");
+			request.setMessageContent("紧急通知:数据表异常,请立即检查数据源并填充缺失的数据!"+tableName+",数据为空");
+			SmsUtils.sendMsg(request);
+		}
+	}
+
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/jobhandler/SendSmsXxlJob.java b/skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/jobhandler/SendSmsXxlJob.java
index 6688ce1..0e955fc 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/jobhandler/SendSmsXxlJob.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/jobhandler/SendSmsXxlJob.java
@@ -1,7 +1,7 @@
 package cn.gistack.job.executor.jobhandler;
 
 import cn.gistack.alerts.sms.feign.ISmsRecordClient;
-import cn.gistack.sm.intelligentCall.feign.OutCallClient;
+import cn.gistack.sm.sms.feign.IDataAbnormalWarnClient;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.xxl.job.core.biz.model.ReturnT;
@@ -21,6 +21,9 @@
 
 	@Autowired
 	private ISmsRecordClient smsRecordClient;
+
+	@Autowired
+	private IDataAbnormalWarnClient dataAbnormalWarnClient;
 
 	/**
 	 * 外呼未接通-发送短信
@@ -45,4 +48,20 @@
 		XxlJobLogger.log("结束自动创建任务...");
 		return ReturnT.SUCCESS;
 	}
+
+	/**
+	 * 监测数据表异常,异常发送短信给运维人员
+	 * @return
+	 */
+	@XxlJob("sendOperate")
+	public ReturnT<String> sendOperate(String param) {
+		XxlJobLogger.log("开始执行任务...");
+		JSONObject jsonParam = JSON.parseObject(param);
+		String tableName = jsonParam.getString("tableName");
+		String phones = jsonParam.getString("phones");
+		dataAbnormalWarnClient.sendOperate(tableName, phones);
+		XxlJobLogger.log("结束执行任务...");
+		return ReturnT.SUCCESS;
+	}
+
 }

--
Gitblit v1.9.3