From e8ca684e5efa645a3954d507c0763e8b183bcd61 Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Fri, 04 Aug 2023 17:53:45 +0800
Subject: [PATCH] 预测接口

---
 skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/ZtApiServiceImpl.java      |    7 +
 skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/HsybServiceImpl.java       |   69 +++++++++++++++++
 skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/HstPredictServiceImpl.java |  107 +++++++++++++++++++++-----
 3 files changed, 160 insertions(+), 23 deletions(-)

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);
 

--
Gitblit v1.9.3