From 50bc6ee76ffcebc0b539e0fb5698a3911e5f6c02 Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Mon, 07 Aug 2023 10:31:03 +0800
Subject: [PATCH] Merge branch 'jtdev' of https://hbsl-code.gistack.cn/hbwri/manager into jtdev

---
 skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/ArimaPredictServiceImpl.java          |   32 ++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/mapper/DamSecurityMapper.xml             |  189 +++++++++++++++
 skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/rabbitmq/MyRabbitReceiver.java                     |   12 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/vo/DamSecurityStatistics.java            |   32 ++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/controller/DamSecurityController.java    |   54 ++++
 skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/requestpojo/HstPredictReqPo.java           |    6 
 skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/jobhandler/NkyXxlJob.java              |   60 +++-
 skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/entity/AlarmGet.java                       |   32 ++
 skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/HstPredictServiceImpl.java            |  107 +++++++-
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/service/IDamSecurityService.java         |   21 +
 skjcmanager/skjcmanager-common/src/main/java/cn/gistack/common/utils/CommonUtil.java                                            |   17 +
 skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/IHsybService.java                          |    8 
 skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/ZtApiServiceImpl.java                 |    7 
 skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/resultpojo/HsybGetFuturePo.java            |   20 +
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/mapper/DamSecurityMapper.java            |   16 +
 skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/HsybServiceImpl.java                  |   69 +++++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/service/impl/DamSecurityServiceImpl.java |   26 ++
 skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/IZtApiService.java                         |    1 
 18 files changed, 654 insertions(+), 55 deletions(-)

diff --git a/skjcmanager/skjcmanager-common/src/main/java/cn/gistack/common/utils/CommonUtil.java b/skjcmanager/skjcmanager-common/src/main/java/cn/gistack/common/utils/CommonUtil.java
index 14eb083..e966fc3 100644
--- a/skjcmanager/skjcmanager-common/src/main/java/cn/gistack/common/utils/CommonUtil.java
+++ b/skjcmanager/skjcmanager-common/src/main/java/cn/gistack/common/utils/CommonUtil.java
@@ -16,6 +16,10 @@
  */
 package cn.gistack.common.utils;
 
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
 /**
  * 通用工具类
  *
@@ -23,4 +27,17 @@
  */
 public class CommonUtil {
 
+	public static Date strToDate(String stringDate){
+
+		//SimpleDateFormat 格式化日期所用到的类
+		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");//格式为 年-月-日 如2017-09-16
+		java.util.Date date = null;
+		try {
+			date = format.parse(stringDate);
+		} catch (ParseException e) {
+			e.printStackTrace();
+		}
+
+		return date;
+	}
 }
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/entity/AlarmGet.java b/skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/entity/AlarmGet.java
index e070916..1c4dfb9 100644
--- a/skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/entity/AlarmGet.java
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/entity/AlarmGet.java
@@ -1,16 +1,30 @@
 package cn.gistack.nky.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
 
 /**
  * 南科院判定异常查询实体类
  */
 @Data
+@TableName( value = "NKY_ALARM_GET",autoResultMap = true)
 public class AlarmGet {
 
 	/**
 	 * 主键
 	 */
+	@TableId(
+		value = "id",
+		type = IdType.ASSIGN_ID
+	)
 	private String id;
 
 	/**
@@ -31,7 +45,13 @@
 	/**
 	 * 数据时间
 	 */
-	private String time;
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	private Date time;
 
 	/**
 	 * 测量值
@@ -41,6 +61,7 @@
 	/**
 	 * 描述
 	 */
+	@TableField("\"DESC\"")
 	private String desc;
 
 	/**
@@ -71,15 +92,18 @@
 	/**
 	 * 正向阈值
 	 */
-	private String forward;
+	@TableField(value = "forward",typeHandler = FastjsonTypeHandler.class)
+	private Object forward;
 
 	/**
 	 * 反向阈值
 	 */
-	private String reverse;
+	@TableField(value = "\"REVERSE\"",typeHandler = FastjsonTypeHandler.class)
+	private Object reverse;
 
 	/**
 	 * 系数阈值
 	 */
-	private String ratio;
+	@TableField(value = "ratio",typeHandler = FastjsonTypeHandler.class)
+	private Object ratio;
 }
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/requestpojo/HstPredictReqPo.java b/skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/requestpojo/HstPredictReqPo.java
index f4d9b0d..83c9632 100644
--- a/skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/requestpojo/HstPredictReqPo.java
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/requestpojo/HstPredictReqPo.java
@@ -23,9 +23,9 @@
 
 	private List<PredictWatersPo> predictWaters;
 
-	public HstPredictReqPo(String damId, String pointId, String type, List<PredictWatersPo> predictWaters) {
-		this.damId = damId;
-		this.pointId = pointId;
+	public HstPredictReqPo(DataResChildrenPo dataResChildrenPo, String type, List<PredictWatersPo> predictWaters) {
+		this.damId = dataResChildrenPo.getRes_cd();
+		this.pointId = dataResChildrenPo.getCd();
 		this.type = type;
 		this.predictWaters = predictWaters;
 	}
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/resultpojo/HsybGetFuturePo.java b/skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/resultpojo/HsybGetFuturePo.java
new file mode 100644
index 0000000..c293197
--- /dev/null
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/resultpojo/HsybGetFuturePo.java
@@ -0,0 +1,20 @@
+package cn.gistack.nky.resultpojo;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class HsybGetFuturePo {
+
+	List<List<String>> data;
+
+	String respCode;
+
+	String message;
+
+	String params;
+
+	String success;
+
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/rabbitmq/MyRabbitReceiver.java b/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/rabbitmq/MyRabbitReceiver.java
index e6f12c5..3883f7b 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/rabbitmq/MyRabbitReceiver.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/rabbitmq/MyRabbitReceiver.java
@@ -1,5 +1,9 @@
 package cn.gistack.nky.rabbitmq;
 
+import cn.gistack.nky.entity.AlarmGet;
+import cn.gistack.nky.service.IAlarmGetService;
+import com.alibaba.fastjson.JSONObject;
+import lombok.AllArgsConstructor;
 import org.springframework.amqp.core.Message;
 import org.springframework.amqp.rabbit.annotation.RabbitListener;
 import org.springframework.stereotype.Component;
@@ -11,11 +15,17 @@
  * @DATE: 2023/8/3 15:54
  */
 @Component
+@AllArgsConstructor
 public class MyRabbitReceiver {
+	private final IAlarmGetService alarmGetService;
 
 	@RabbitListener(queues = "alarm")
 	public void processMessage(Message message) {
-		System.out.println("收到消息"+new String(message.getBody()));
+
+//		AlarmGet alarmGet = JSONObject.parseObject(new String(message.getBody()), AlarmGet.class);
+//		alarmGetService.save(alarmGet);
+//
+//		System.out.println("收到消息"+new String(message.getBody()));
 	}
 
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/IHsybService.java b/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/IHsybService.java
new file mode 100644
index 0000000..a6f6b31
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/IHsybService.java
@@ -0,0 +1,8 @@
+package cn.gistack.nky.service;
+
+import java.util.List;
+
+public interface IHsybService {
+
+	List<List<String>> getFuture(String resCd);
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/IZtApiService.java b/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/IZtApiService.java
index 0988382..e5f1069 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/IZtApiService.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/IZtApiService.java
@@ -4,6 +4,7 @@
 import cn.gistack.nky.resultpojo.DataBigResultPojo;
 import cn.gistack.nky.resultpojo.DataResChildrenPo;
 import cn.gistack.nky.resultpojo.DataResPo;
+import com.alibaba.fastjson.JSONObject;
 
 import java.util.List;
 
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/ArimaPredictServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/ArimaPredictServiceImpl.java
index e7558a0..a89259d 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/ArimaPredictServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/ArimaPredictServiceImpl.java
@@ -3,6 +3,8 @@
 import cn.gistack.nky.entity.ArimaPredict;
 import cn.gistack.nky.mapper.ArimaPredictMapper;
 import cn.gistack.nky.requestpojo.ArimaPredictReqPo;
+import cn.gistack.nky.requestpojo.HstPredictReqPo;
+import cn.gistack.nky.requestpojo.PredictWatersPo;
 import cn.gistack.nky.requestpojo.QueryReqPo;
 import cn.gistack.nky.resultpojo.DataResChildrenPo;
 import cn.gistack.nky.service.IArimaPredictService;
@@ -42,11 +44,31 @@
 	@Override
 	public void predictData(String type) {
 		List<DataResChildrenPo> cdList = getCdList(type);
-		cdList.forEach(dataResChildrenPo -> {
-			ArimaPredictReqPo arimaPredictReqPo = new ArimaPredictReqPo(dataResChildrenPo, type);
-			//循环预测请求
-			nkyService.arimaPredict(arimaPredictReqPo);
-		});
+
+		if (type.equals("1")){
+			//渗压
+				cdList.forEach(dataResChildrenPo -> {
+					ArimaPredictReqPo arimaPredictReqPo = new ArimaPredictReqPo(dataResChildrenPo, type);
+					//循环预测请求
+					nkyService.arimaPredict(arimaPredictReqPo);
+				});
+		}else if (type.equals("2")){
+			//渗流
+		}else if (type.equals("3") || type.equals("4") || type.equals("5")){
+			cdList.forEach(dataResChildrenPo -> {
+				//循环预测请求
+				ArimaPredictReqPo arimaPredictReqPoX = new ArimaPredictReqPo(dataResChildrenPo, "3");
+				nkyService.arimaPredict(arimaPredictReqPoX);
+
+				ArimaPredictReqPo arimaPredictReqPoY = new ArimaPredictReqPo(dataResChildrenPo, "4");
+				nkyService.arimaPredict(arimaPredictReqPoY);
+
+				ArimaPredictReqPo arimaPredictReqPoZ = new ArimaPredictReqPo(dataResChildrenPo, "5");
+				nkyService.arimaPredict(arimaPredictReqPoZ);
+			});
+		}
+
+
 	}
 
 	@Override
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/HstPredictServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/HstPredictServiceImpl.java
index b8f8a5d..c1bd73b 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/HstPredictServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/HstPredictServiceImpl.java
@@ -3,56 +3,121 @@
 import cn.gistack.nky.entity.HstPredict;
 import cn.gistack.nky.mapper.HstPredictMapper;
 import cn.gistack.nky.requestpojo.HstPredictReqPo;
+import cn.gistack.nky.requestpojo.PredictWatersPo;
 import cn.gistack.nky.requestpojo.QueryReqPo;
 import cn.gistack.nky.resultpojo.DataResChildrenPo;
 import cn.gistack.nky.service.IHstPredictService;
+import cn.gistack.nky.service.IHsybService;
 import cn.gistack.nky.service.INkyService;
 import cn.gistack.nky.service.IZtApiService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import lombok.AllArgsConstructor;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.tool.utils.ObjectUtil;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
-@AllArgsConstructor
 @Service
 public class HstPredictServiceImpl extends ServiceImpl<HstPredictMapper, HstPredict> implements IHstPredictService {
+	@Autowired
+	private  INkyService nkyService;
+	@Autowired
+	private  IZtApiService ztApiService;
+	@Autowired
+	private  IHsybService hsybService;
 
-	private final INkyService nkyService;
-	private final IZtApiService ztApiService;
+
 	@Override
 	public void getData(String type) {
 		List<DataResChildrenPo> cdList = getCdList(type);
-
-		cdList.forEach(dataResChildrenPo -> {
+		List<DataResChildrenPo> collect = cdList.stream().filter(item -> item.getRes_cd().equals("42011640018") || item.getRes_cd().equals("42128140006")).collect(Collectors.toList());
+		collect.forEach(dataResChildrenPo -> {
 			//循环请求预测结果
-			QueryReqPo queryReqPo = new QueryReqPo(dataResChildrenPo,type);
+			QueryReqPo queryReqPo = new QueryReqPo(dataResChildrenPo, type);
 			//请求预测结果
 			HstPredict hstPredict = nkyService.hstQuery(queryReqPo);
-			if (hstPredict != null){
+			if (hstPredict != null) {
 				//存储预测结果至数据库
 				save(hstPredict);
 			}
 		});
 	}
 
+	private String resCd = "";
+
 	@Override
 	public void predictData(String type) {
 		List<DataResChildrenPo> cdList = getCdList(type);
-		cdList.forEach(dataResChildrenPo -> {
-			HstPredictReqPo arimaPredictReqPo = new HstPredictReqPo(dataResChildrenPo, type);
-			//循环预测请求
-			nkyService.hstPredict(arimaPredictReqPo);
-		});
+		//暂时筛选出这两个水库的数据
+		List<DataResChildrenPo> collect = cdList.stream().filter(item -> item.getRes_cd().equals("42011640018") || item.getRes_cd().equals("42128140006")).collect(Collectors.toList());
+
+
+		if (type.equals("1")){
+			//渗压
+			collect.forEach(dataResChildrenPo -> {
+				//所有水库请求预报数据
+				if (!resCd.equals(dataResChildrenPo.getRes_cd())) {
+					//请求预报水位
+					List<List<String>> future = hsybService.getFuture(dataResChildrenPo.getRes_cd());
+					resCd = dataResChildrenPo.getRes_cd();
+					if (future != null && future.size() > 0) {
+						List<PredictWatersPo> po = new ArrayList<>();
+						future.forEach(item -> {
+							PredictWatersPo predictWatersPo = new PredictWatersPo();
+							//设置时间
+							predictWatersPo.setTime(item.get(0));
+							//设置预测水位
+							predictWatersPo.setValue(Double.parseDouble(item.get(2)));
+							po.add(predictWatersPo);
+						});
+						HstPredictReqPo arimaPredictReqPo = new HstPredictReqPo(dataResChildrenPo, type,po);
+						//循环预测请求
+						nkyService.hstPredict(arimaPredictReqPo);
+					}
+				}
+			});
+		}else if (type.equals("2")){
+			//渗流
+		}else if (type.equals("3") || type.equals("4") || type.equals("5")){
+			collect.forEach(dataResChildrenPo -> {
+				//所有水库请求预报数据
+				if (!resCd.equals(dataResChildrenPo.getRes_cd())) {
+					//请求预报水位
+					List<List<String>> future = hsybService.getFuture(dataResChildrenPo.getRes_cd());
+					resCd = dataResChildrenPo.getRes_cd();
+					if (future != null && future.size() > 0) {
+						List<PredictWatersPo> po = new ArrayList<>();
+						future.forEach(item -> {
+							PredictWatersPo predictWatersPo = new PredictWatersPo();
+							//设置时间
+							predictWatersPo.setTime(item.get(0));
+							//设置预测水位
+							predictWatersPo.setValue(Double.parseDouble(item.get(2)));
+							po.add(predictWatersPo);
+						});
+						//循环预测请求(位移一起请求减少请求次数)
+						HstPredictReqPo arimaPredictReqPoX = new HstPredictReqPo(dataResChildrenPo, "3",po);
+						nkyService.hstPredict(arimaPredictReqPoX);
+
+						HstPredictReqPo arimaPredictReqPoY= new HstPredictReqPo(dataResChildrenPo, "4",po);
+						nkyService.hstPredict(arimaPredictReqPoY);
+
+						HstPredictReqPo arimaPredictReqPoZ = new HstPredictReqPo(dataResChildrenPo, "5",po);
+						nkyService.hstPredict(arimaPredictReqPoZ);
+					}
+				}
+			});
+		}
+		resCd = "";
 	}
 
 	@Override
 	public boolean save(HstPredict entity) {
 
-		if (ObjectUtil.isEmpty(entity.getCreateTime())){
+		if (ObjectUtil.isEmpty(entity.getCreateTime())) {
 			return false;
 		}
 
@@ -64,25 +129,25 @@
 
 		List<HstPredict> list = list(Condition.getQueryWrapper(params));
 
-		if (list.size()>0){
+		if (list.size() > 0) {
 			return false;
-		}else {
+		} else {
 			return super.save(entity);
 		}
 	}
 
-	public  List<DataResChildrenPo> getCdList(String type){
+	public List<DataResChildrenPo> getCdList(String type) {
 		List<DataResChildrenPo> cdList = new ArrayList<>();
-		if (type.equals("1")){
+		if (type.equals("1")) {
 			//获取渗压测点
 			cdList = ztApiService.getSy();
-		}else if (type.equals("2")){
+		} else if (type.equals("2")) {
 			//获取渗流测点
 			return null;
-		}else if (type.equals("3") || type.equals("4") || type.equals("5")){
+		} else if (type.equals("3") || type.equals("4") || type.equals("5")) {
 			//获取位移测点
 			cdList = ztApiService.getWy();
-		}else {
+		} else {
 			return null;
 		}
 		return cdList;
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/HsybServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/HsybServiceImpl.java
new file mode 100644
index 0000000..6c8369e
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/HsybServiceImpl.java
@@ -0,0 +1,69 @@
+package cn.gistack.nky.service.impl;
+
+import cn.gistack.common.utils.CommonUtil;
+import cn.gistack.nky.resultpojo.HsybGetFuturePo;
+import cn.gistack.nky.service.IHsybService;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import lombok.AllArgsConstructor;
+import org.springblade.core.tool.utils.DateUtil;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Service
+@AllArgsConstructor
+public class HsybServiceImpl implements IHsybService {
+
+	private static String GET_FUTURE = "https://sk.hubeishuiyi.cn/hsybApi/api/fh-admin/skkr/getFuture";
+
+	private static String AUTHORIZATION = "Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiJBRE1JTiIsIlVzZXJJZCI6IjEiLCJzY29wZSI6WyJhbGwiXSwiVXNlclJlYWxOYW1lIjoi6LaF57qn566h55CG5ZGYIiwiVXNlclh6cWhkbSI6IjQyMDUiLCJleHAiOjI1MTk3NzIwMTAsImp0aSI6ImExNTcxYzk1LTBkNjMtNDkyYi1iOWEyLTE2ZTIzNTQ5ZTY1ZiIsImNsaWVudF9pZCI6InVzZXItc2VydmljZSJ9.ebNVZrw9LbhKaj2w6RR8b2wccQiDkhvBeq79SxxCK-yWiOlIFqBkotTN4TNJg8umcpyYvLILwvqXWRJhffEtgi25sX2y6MqLIWM4kMZ9d8ptdnSmTpBPhltSiQOM0KFa1kl5nSDCBwYOLn-pESJglam76cjpgZNoC88x3iNHacdiXDItY0rtY85HrQ26uyJu9UovKtmYmZRHsIbGMpDta5Q1p4vfaCIr-YUayDrCweZJiQDEEcOSpWJ7O7RMk3pRkX_4UmPHFzrOI2lMp1jQIhxnSTE7EVAz_4z8h8r46muSkpF54Ic4XSawHKqdSLHx8T05LB0MpvOzWMPS6c1uHA";
+
+
+	@Override
+	public List<List<String>> getFuture(String resCd) {
+		HsybGetFuturePo hsybGetFuturePo  = apiRequest(GET_FUTURE, resCd);
+
+		if (hsybGetFuturePo != null && hsybGetFuturePo.getRespCode().equals("200")){
+			List<List<String>> data = hsybGetFuturePo.getData();
+
+			//过滤空值数据,过滤过去时间
+			List<List<String>> collect =
+				data.stream().filter(item -> item.get(0) != null).filter(item -> CommonUtil.strToDate(item.get(0)).after(DateUtil.now())).collect(Collectors.toList());
+			return collect;
+		}else {
+			return null;
+		}
+	}
+
+	public HsybGetFuturePo apiRequest(String url, String jsonparams){
+
+//		Long param = Long.parseLong(jsonparams);
+		System.out.println("请求参数:"+ jsonparams);
+		// 声明一个header变量
+		HttpHeaders headers = new HttpHeaders();
+		// 设置为json格式
+		MediaType mediaType = MediaType.parseMediaType("application/json;charset=utf-8");
+		headers.setContentType(mediaType);
+		//设置请求头
+		headers.set("Authorization",AUTHORIZATION);
+		headers.add("Accept", MediaType.APPLICATION_JSON.toString());
+
+		HttpEntity<String> httpEntity = new HttpEntity(jsonparams, headers);
+		RestTemplate template = new RestTemplate();
+		try {
+			HsybGetFuturePo hsybGetFuturePo = template.postForObject(url, httpEntity, HsybGetFuturePo.class);
+			System.out.println(hsybGetFuturePo.toString());
+			return hsybGetFuturePo;
+		}catch (Exception e){
+			System.out.println(e);
+		}
+
+		return null;
+	}
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/ZtApiServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/ZtApiServiceImpl.java
index b9f3792..da8da10 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/ZtApiServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/ZtApiServiceImpl.java
@@ -5,6 +5,7 @@
 import cn.gistack.nky.resultpojo.DataResPo;
 import cn.gistack.nky.resultpojo.ZtResultPo;
 import cn.gistack.nky.service.IZtApiService;
+import com.alibaba.fastjson.JSONObject;
 import org.springblade.core.tool.utils.ObjectUtil;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
@@ -26,6 +27,8 @@
  */
 @Service
 public class ZtApiServiceImpl implements IZtApiService {
+
+	private static final String API_KEY = "F1DBECD719108635189480CF60E6553ADB3109616426BD537F25A430DFC613B491A025C4A51E77FD08C6E5B7CBE05917A461286E7B6D69F1AB1B14F946149D2065B0C675F8FEDF4B9B05C1496881BC5A";
 
 	/**
 	 * 实时渗压监测
@@ -71,7 +74,7 @@
 		// 声明一个header变量
 		HttpHeaders headers = new HttpHeaders();
 		// 设置apikey
-		headers.set("apikey","F1DBECD719108635189480CF60E6553ADB3109616426BD537F25A430DFC613B491A025C4A51E77FD08C6E5B7CBE05917A461286E7B6D69F1AB1B14F946149D2065B0C675F8FEDF4B9B05C1496881BC5A");
+		headers.set("apikey",API_KEY);
 
 		HttpEntity<String> httpEntity = new HttpEntity(null, headers);
 
@@ -103,7 +106,7 @@
 		// 声明一个header变量
 		HttpHeaders headers = new HttpHeaders();
 		// 设置apikey
-		headers.set("apikey","F1DBECD719108635189480CF60E6553ADB3109616426BD537F25A430DFC613B491A025C4A51E77FD08C6E5B7CBE05917A461286E7B6D69F1AB1B14F946149D2065B0C675F8FEDF4B9B05C1496881BC5A");
+		headers.set("apikey",API_KEY);
 
 		HttpEntity<String> httpEntity = new HttpEntity(null, headers);
 
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/controller/DamSecurityController.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/controller/DamSecurityController.java
new file mode 100644
index 0000000..ca0ebd5
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/controller/DamSecurityController.java
@@ -0,0 +1,54 @@
+package cn.gistack.sm.damSecurity.controller;
+
+import cn.gistack.sm.damSecurity.service.IDamSecurityService;
+import cn.gistack.sm.damSecurity.vo.DamSecurityStatistics;
+import cn.gistack.sm.exam.entity.ExamPlan;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@Slf4j
+@Api(tags = "大坝安全统计")
+@RestController
+@RequestMapping("/damSecurity/damSecurity")
+@AllArgsConstructor
+public class DamSecurityController extends BladeController {
+
+	private final IDamSecurityService damSecurityService;
+
+	/**
+	 * 大坝安全监测状况统计
+	 * @param damSecurityStatistics
+	 * @return
+	 */
+	@ApiOperation(value = "大坝安全统计-大坝安全监测状况统计", notes = "大坝安全统计-大坝安全监测状况统计")
+	@GetMapping(value = "/singleRegionCount")
+	public R singleRegionCount(DamSecurityStatistics damSecurityStatistics) {
+		DamSecurityStatistics data =  damSecurityService.getSingleRegionCount(damSecurityStatistics);
+		return R.data(data);
+	}
+
+	/**
+	 * 大坝安全监测区域统计
+	 * @param damSecurityStatistics
+	 * @return
+	 */
+	@ApiOperation(value = "大坝安全统计-大坝安全监测区域统计", notes = "大坝安全统计-大坝安全监测区域统计")
+	@GetMapping(value = "/listRegionCount")
+	public R listRegionCount(DamSecurityStatistics damSecurityStatistics) {
+		List<DamSecurityStatistics> list =  damSecurityService.listRegionCount(damSecurityStatistics);
+		return R.data(list);
+	}
+
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/mapper/DamSecurityMapper.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/mapper/DamSecurityMapper.java
new file mode 100644
index 0000000..944fcc7
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/mapper/DamSecurityMapper.java
@@ -0,0 +1,16 @@
+package cn.gistack.sm.damSecurity.mapper;
+
+import cn.gistack.sm.damSecurity.vo.DamSecurityStatistics;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface DamSecurityMapper {
+
+
+	DamSecurityStatistics getSingleRegionCount(@Param("dam") DamSecurityStatistics damSecurityStatistics);
+
+	List<DamSecurityStatistics> listRegionCount(@Param("dam") DamSecurityStatistics damSecurityStatistics);
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/mapper/DamSecurityMapper.xml b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/mapper/DamSecurityMapper.xml
new file mode 100644
index 0000000..64c2387
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/mapper/DamSecurityMapper.xml
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.gistack.sm.damSecurity.mapper.DamSecurityMapper">
+
+    <select id="getSingleRegionCount" resultType="cn.gistack.sm.damSecurity.vo.DamSecurityStatistics">
+        SELECT allNum,errorNum,AllNum-errorNum normalNum,aab."ad_name" adName,aab."guid" adCode FROM
+            (
+                SELECT
+                    (
+                        SELECT count(*) FROM
+                            (
+                                SELECT
+                                    a."guid",
+                                    a."name",
+                                    a."eng_scal",
+                                    case when b."ad_grad" = 4 THEN b."ad_code" ELSE NULL END AS "town_ad_code",
+                                    case when b."ad_grad" = 4 THEN b."ad_name" ELSE NULL END AS "town_ad_name",
+                                    case when b."ad_grad" = 4 THEN b."order_id" ELSE NULL END AS "town_order_id",
+                                    case when b."ad_grad" = 3 THEN b."ad_code" when c."ad_grad" = 3 THEN c."ad_code" END AS "county_ad_code",
+                                    case when b."ad_grad" = 3 THEN b."ad_name"when c."ad_grad" = 3 THEN C."ad_name" END AS "county_ad_name",
+                                    case when b."ad_grad" = 3 THEN b."order_id"when c."ad_grad" = 3 THEN C."order_id" END AS "county_order_id",
+                                    case when b."ad_grad" = 2 THEN b."ad_code"when c."ad_grad" = 2 THEN c."ad_code"ELSE d."ad_code" END AS "city_ad_code",
+                                    case when b."ad_grad" = 2 THEN b."ad_name"when c."ad_grad" = 2 THEN c."ad_name"ELSE d."ad_name" END AS "city_ad_name",
+                                    case when b."ad_grad" = 2 THEN b."order_id" when c."ad_grad" = 2 THEN c."order_id"ELSE d."order_id" END AS "city_order_id",
+                                    case when b."ad_grad" = 1 THEN b."ad_code"when c."ad_grad" = 1 THEN c."ad_code"when d."ad_grad" = 1 THEN d."ad_code"ELSE e."ad_code" END AS "province_ad_code",
+                                    case when b."ad_grad" = 1 THEN b."ad_name"when c."ad_grad" = 1 THEN c."ad_name"when d."ad_grad" = 1 THEN d."ad_name"ELSE e."ad_name" END AS "province_ad_name",
+                                    case when b."ad_grad" = 1 THEN b."order_id"when c."ad_grad" = 1 THEN c."order_id" when d."ad_grad" = 1 THEN d."order_id"ELSE e."order_id" END AS "province_order_id"
+                                FROM sjzt_md."att_res_base" a
+                                         LEFT JOIN (
+                                             SELECT "res_cd", "sys_resource"FROM
+                                                        (SELECT b."guid" as "res_cd", 'sy' as "sys_resource" FROM sjzt_ods."dsm_spg_pztb" a LEFT JOIN SJZT_MD."att_res_base" b on a."rscd" = b."res_reg_code"
+                                                         UNION
+                                                         SELECT  b."guid" as "res_cd", 'sy' as "sys_resource" FROM  sjzt_ods."dsm_spg_spprmp" a  LEFT JOIN SJZT_MD."att_res_base" b on a."rscd" = b."res_reg_code") WHERE "res_cd" is not null) f ON a."guid" = f."res_cd"
+                                         LEFT JOIN (
+                                             SELECT "res_cd", "sys_resource" FROM (SELECT b."guid" as "res_cd", 'sl' as "sys_resource" FROM sjzt_ods."dsm_spg_spqnmp" a LEFT JOIN SJZT_MD."att_res_base" b on a."rscd" = b."res_reg_code" group by b."guid") WHERE "res_cd" is not null) G on a."guid" = g."res_cd"
+                                         LEFT JOIN (
+                                             SELECT "res_cd", "sys_resource" FROM (SELECT b."guid" as "res_cd",  'wy' as "sys_resource" FROM (SELECT "station_code" from sjzt_md."att_mqtt_calc_data" group by "station_code") a  LEFT JOIN SJZT_MD."att_res_base" b on substr(a."station_code",0,length(a."station_code")-2) = b."guid" group by b."guid") WHERE "res_cd" is not null) h ON a."guid" = h."res_cd"
+                                         LEFT JOIN sjzt_md."att_ad_base" b ON a."interior_ad_guid" = b."guid"
+                                         LEFT JOIN sjzt_md."att_ad_base" c ON b."p_ad_code" = c."guid"
+                                         LEFT JOIN sjzt_md."att_ad_base" d ON c."p_ad_code" = d."guid"
+                                         LEFT JOIN sjzt_md."att_ad_base" e ON d."p_ad_code" = e."guid"
+                                where (f."res_cd" is not null OR g."res_cd" is not null OR h."res_cd" is not null)
+                            ) baseRes
+                                LEFT JOIN SJZT_MD."att_ad_base" aab ON aab."guid" = baseRes."town_ad_code"
+                                LEFT JOIN SJZT_MD."att_ad_base" aa ON aab."p_ad_code" = aa."ad_code"
+                                LEFT JOIN SJZT_MD."att_ad_base" ab ON aa."p_ad_code" = ab."ad_code"
+                                LEFT JOIN SJZT_MD."att_ad_base" ac ON ab."p_ad_code" = ac."ad_code"
+                                where 1=1
+                        <if test="dam.adCode != null and dam.adCode != '' ">
+                            AND (aab."ad_code" =#{dam.adCode}  or aa."ad_code" = #{dam.adCode} or ab."ad_code" = #{dam.adCode} or ac."ad_code" = #{dam.adCode})
+                        </if>
+                        ) AllNum,
+                    (
+                        SELECT COUNT(*)
+                        FROM (SELECT distinct DAM_ID FROM NKY_ALARM_GET NAG
+                                        LEFT JOIN SJZT_MD."att_res_base" arb ON arb."guid" = NAG.DAM_ID
+                                        LEFT JOIN SJZT_MD."att_ad_base" aab ON aab."guid" = arb."interior_ad_guid"
+                                        LEFT JOIN SJZT_MD."att_ad_base" aa ON aab."p_ad_code" = aa."ad_code"
+                                        LEFT JOIN SJZT_MD."att_ad_base" ab ON aa."p_ad_code" = ab."ad_code"
+                                         LEFT JOIN SJZT_MD."att_ad_base" ac ON ab."p_ad_code" = ac."ad_code"
+                        WHERE 1=1
+                            <if test="dam.adCode != null and dam.adCode != '' ">
+                                and (aab."ad_code" =#{dam.adCode}  or aa."ad_code" = #{dam.adCode} or ab."ad_code" = #{dam.adCode} or ac."ad_code" = #{dam.adCode})
+                            </if>
+                        )) errorNum
+            ),SJZT_MD."att_ad_base" aab
+            where 1=1
+        <if test="dam.adCode != null and dam.adCode != '' ">
+            and aab."guid" = #{dam.adCode}
+        </if>
+
+
+    </select>
+
+
+
+
+
+    <select id="listRegionCount" resultType="cn.gistack.sm.damSecurity.vo.DamSecurityStatistics">
+
+        SELECT allNum,errorNum, allNum-errorNum normalNum,adName,adCode FROM
+        (
+
+        SELECT
+        (
+        SELECT COUNT(*) FROM
+        (
+        SELECT
+        a."guid",
+        a."name",
+        a."eng_scal",
+        case when b."ad_grad" = 4 THEN b."ad_code" ELSE NULL END AS "town_ad_code",
+        case when b."ad_grad" = 4 THEN b."ad_name" ELSE NULL END AS "town_ad_name",
+        case when b."ad_grad" = 4 THEN b."order_id" ELSE NULL END AS "town_order_id",
+        case when b."ad_grad" = 3 THEN b."ad_code"
+        when c."ad_grad" = 3 THEN c."ad_code" END AS "county_ad_code",
+        case when b."ad_grad" = 3 THEN b."ad_name"
+        when c."ad_grad" = 3 THEN C."ad_name" END AS "county_ad_name",
+        case when b."ad_grad" = 3 THEN b."order_id"
+        when c."ad_grad" = 3 THEN C."order_id" END AS "county_order_id",
+        case when b."ad_grad" = 2 THEN b."ad_code"
+        when c."ad_grad" = 2 THEN c."ad_code"
+        ELSE d."ad_code" END AS "city_ad_code",
+        case when b."ad_grad" = 2 THEN b."ad_name"
+        when c."ad_grad" = 2 THEN c."ad_name"
+        ELSE d."ad_name" END AS "city_ad_name",
+        case when b."ad_grad" = 2 THEN b."order_id"
+        when c."ad_grad" = 2 THEN c."order_id"
+        ELSE d."order_id" END AS "city_order_id",
+        case when b."ad_grad" = 1 THEN b."ad_code"
+        when c."ad_grad" = 1 THEN c."ad_code"
+        when d."ad_grad" = 1 THEN d."ad_code"
+        ELSE e."ad_code" END AS "province_ad_code",
+        case when b."ad_grad" = 1 THEN b."ad_name"
+        when c."ad_grad" = 1 THEN c."ad_name"
+        when d."ad_grad" = 1 THEN d."ad_name"
+        ELSE e."ad_name" END AS "province_ad_name",
+        case when b."ad_grad" = 1 THEN b."order_id"
+        when c."ad_grad" = 1 THEN c."order_id"
+        when d."ad_grad" = 1 THEN d."order_id"
+        ELSE e."order_id" END AS "province_order_id"
+        FROM sjzt_md."att_res_base" a
+        LEFT JOIN (SELECT
+        "res_cd",
+        "sys_resource"
+        FROM
+        (SELECT
+        b."guid" as "res_cd",
+        'sy' as "sys_resource"
+        FROM
+        sjzt_ods."dsm_spg_pztb" a
+        LEFT JOIN SJZT_MD."att_res_base" b on a."rscd" = b."res_reg_code"
+        UNION
+        SELECT
+        b."guid" as "res_cd",
+        'sy' as "sys_resource"
+        FROM
+        sjzt_ods."dsm_spg_spprmp" a
+        LEFT JOIN SJZT_MD."att_res_base" b on a."rscd" = b."res_reg_code") WHERE "res_cd" is not null) f ON a."guid" = f."res_cd"
+        LEFT JOIN (SELECT
+        "res_cd",
+        "sys_resource"
+        FROM
+        (SELECT
+        b."guid" as "res_cd",
+        'sl' as "sys_resource"
+        FROM
+        sjzt_ods."dsm_spg_spqnmp" a
+        LEFT JOIN SJZT_MD."att_res_base" b on a."rscd" = b."res_reg_code" group by b."guid") WHERE "res_cd" is not null) G on a."guid" = g."res_cd"
+        LEFT JOIN (SELECT
+        "res_cd",
+        "sys_resource"
+        FROM
+        (SELECT
+        b."guid" as "res_cd",
+        'wy' as "sys_resource"
+        FROM
+        (SELECT "station_code" from sjzt_md."att_mqtt_calc_data" group by "station_code") a
+        LEFT JOIN SJZT_MD."att_res_base" b on substr(a."station_code",0,length(a."station_code")-2) = b."guid" group by b."guid") WHERE "res_cd" is not null) h ON a."guid" = h."res_cd"
+        LEFT JOIN sjzt_md."att_ad_base" b ON a."interior_ad_guid" = b."guid"
+        LEFT JOIN sjzt_md."att_ad_base" c ON b."p_ad_code" = c."guid"
+        LEFT JOIN sjzt_md."att_ad_base" d ON c."p_ad_code" = d."guid"
+        LEFT JOIN sjzt_md."att_ad_base" e ON d."p_ad_code" = e."guid"
+        where (f."res_cd" is not null OR g."res_cd" is not null OR h."res_cd" is not null)  and (d."ad_code" = aab."guid" or c."ad_code" = aab."guid" or b."ad_code" = aab."guid" )
+        )
+        ) allNum,
+
+        (
+        SELECT COUNT(*)FROM (SELECT distinct DAM_ID FROM NKY_ALARM_GET NAG
+        LEFT JOIN SJZT_MD."att_res_base" arb ON arb."guid" = NAG.DAM_ID
+        left join SJZT_MD."att_ad_base" b on arb."interior_ad_guid" = b."ad_code"
+        left join SJZT_MD."att_ad_base" c on b."p_ad_code" = c."ad_code"
+        left join SJZT_MD."att_ad_base" d on c."p_ad_code" = d."ad_code"
+        where (d."ad_code" = aab."guid" or c."ad_code" = aab."guid" or b."ad_code" = aab."guid" )
+        )) errorNum,
+        aab."ad_name" adName , aab."guid" adCode  from SJZT_MD."att_ad_base" aab
+        where
+        <choose>
+            <when test="dam.adCode != null and dam.adCode !='' ">
+                "p_ad_code" = #{dam.adCode}
+            </when>
+            <otherwise>
+                "ad_grad" = 2
+            </otherwise>
+        </choose>
+        )
+
+    </select>
+</mapper>
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/service/IDamSecurityService.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/service/IDamSecurityService.java
new file mode 100644
index 0000000..2a73bed
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/service/IDamSecurityService.java
@@ -0,0 +1,21 @@
+package cn.gistack.sm.damSecurity.service;
+
+import cn.gistack.sm.damSecurity.vo.DamSecurityStatistics;
+
+import java.util.List;
+
+public interface IDamSecurityService {
+	/**
+	 * 查询单行政区下的统计数据
+	 * @param damSecurityStatistics
+	 * @return
+	 */
+	DamSecurityStatistics getSingleRegionCount(DamSecurityStatistics damSecurityStatistics);
+
+	/**
+	 * 查询该行政区下的统计数据
+	 * @param damSecurityStatistics
+	 * @return
+	 */
+	List<DamSecurityStatistics> listRegionCount(DamSecurityStatistics damSecurityStatistics);
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/service/impl/DamSecurityServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/service/impl/DamSecurityServiceImpl.java
new file mode 100644
index 0000000..baf182a
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/service/impl/DamSecurityServiceImpl.java
@@ -0,0 +1,26 @@
+package cn.gistack.sm.damSecurity.service.impl;
+
+import cn.gistack.sm.damSecurity.mapper.DamSecurityMapper;
+import cn.gistack.sm.damSecurity.service.IDamSecurityService;
+import cn.gistack.sm.damSecurity.vo.DamSecurityStatistics;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class DamSecurityServiceImpl implements IDamSecurityService {
+
+	@Autowired
+	private DamSecurityMapper damSecurityMapper;
+
+	@Override
+	public DamSecurityStatistics getSingleRegionCount(DamSecurityStatistics damSecurityStatistics) {
+		return damSecurityMapper.getSingleRegionCount(damSecurityStatistics);
+	}
+
+	@Override
+	public List<DamSecurityStatistics> listRegionCount(DamSecurityStatistics damSecurityStatistics) {
+		return damSecurityMapper.listRegionCount(damSecurityStatistics);
+	}
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/vo/DamSecurityStatistics.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/vo/DamSecurityStatistics.java
new file mode 100644
index 0000000..1c1be90
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/vo/DamSecurityStatistics.java
@@ -0,0 +1,32 @@
+package cn.gistack.sm.damSecurity.vo;
+
+import lombok.Data;
+
+@Data
+public class DamSecurityStatistics {
+
+	/**
+	 * 行政区划编码
+	 */
+	private String adCode;
+
+	/**
+	 * 行政区划名
+	 */
+	private String adName;
+
+	/**
+	 * 正常数量
+	 */
+	private Integer normalNum;
+
+	/**
+	 * 异常数量
+	 */
+	private Integer errorNum;
+
+	/**
+	 * 总数
+	 */
+	private Integer allNum;
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/jobhandler/NkyXxlJob.java b/skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/jobhandler/NkyXxlJob.java
index 97abf07..eaad23d 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/jobhandler/NkyXxlJob.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/jobhandler/NkyXxlJob.java
@@ -1,8 +1,6 @@
 package cn.gistack.job.executor.jobhandler;
 
 import cn.gistack.nky.fegin.INkyClient;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
 import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.core.handler.annotation.XxlJob;
 import com.xxl.job.core.log.XxlJobLogger;
@@ -28,7 +26,7 @@
 	private final INkyClient nkyClient;
 
 	/**
-	 * 南科院请求预测
+	 * 南科院Arima请求预测
 	 * @param param
 	 * @return
 	 * @throws Exception
@@ -39,16 +37,43 @@
 		arimaPredict();
 		XxlJobLogger.log("ArimaPredict预测结束...");
 
-		XxlJobLogger.log("开始Hst预测...");
-		hstPredict();
-		XxlJobLogger.log("Hst预测结束...");
-
 		XxlJobLogger.log("结束任务...");
 		return ReturnT.SUCCESS;
 	}
 
 	/**
-	 * 南科院请求预测结果
+	 * 南科院Hst请求预测
+	 * @param param
+	 * @return
+	 * @throws Exception
+	 */
+	@XxlJob("predictNkyHstDataJobHandler")
+	public ReturnT<String> predictNkyHstDataJobHandler(String param){
+
+		XxlJobLogger.log("开始Hst预测...");
+		hstPredict();
+		XxlJobLogger.log("Hst预测结束...");
+		XxlJobLogger.log("结束任务...");
+		return ReturnT.SUCCESS;
+	}
+
+	/**
+	 * 南科院Hst请求预测结果
+	 * @param param
+	 * @return
+	 * @throws Exception
+	 */
+	@XxlJob("queryNkyHstDataJobHandler")
+	public ReturnT<String> queryNkyHstDataJobHandler(String param){
+		XxlJobLogger.log("开始Hst预测结果请求");
+		hstQuery();
+		XxlJobLogger.log("Hst预测结果请求结束");
+		XxlJobLogger.log("结束任务...");
+		return ReturnT.SUCCESS;
+	}
+
+	/**
+	 * 南科院Arima请求预测结果
 	 * @param param
 	 * @return
 	 * @throws Exception
@@ -57,23 +82,17 @@
 	public ReturnT<String> queryNkyDataJobHandler(String param){
 		XxlJobLogger.log("开始Arima预测结果请求");
 		arimaQuery();
-
 		XxlJobLogger.log("Arima预测结果请求结束");
-
-		XxlJobLogger.log("开始Hst预测结果请求");
-		hstQuery();
-		XxlJobLogger.log("Hst预测结果请求结束");
-
-
 		XxlJobLogger.log("结束任务...");
 		return ReturnT.SUCCESS;
 	}
 
 	public void arimaPredict(){
+		XxlJobLogger.log("渗压预测开始");
 		nkyClient.arimaPredictData(SY);
+		XxlJobLogger.log("位移预测开始");
 		nkyClient.arimaPredictData(X);
-		nkyClient.arimaPredictData(Y);
-		nkyClient.arimaPredictData(Z);
+
 	}
 
 	public void arimaQuery(){
@@ -83,11 +102,14 @@
 		nkyClient.arimaQueryData(Z);
 	}
 
+	/**
+	 * hst预测
+	 */
 	public void hstPredict(){
+		XxlJobLogger.log("渗压预测开始");
 		nkyClient.hstPredictData(SY);
+		XxlJobLogger.log("位移预测开始");
 		nkyClient.hstPredictData(X);
-		nkyClient.hstPredictData(Y);
-		nkyClient.hstPredictData(Z);
 	}
 
 	public void hstQuery(){

--
Gitblit v1.9.3