From 2f8eaa7c850445fde0cdca0e8ecddcb7e2a936a3 Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Tue, 05 Mar 2024 16:01:35 +0800
Subject: [PATCH] 洪水预报接口对接
---
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/HstPredictServiceImpl.java | 270 ++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 243 insertions(+), 27 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..f40539d 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
@@ -1,90 +1,306 @@
package cn.gistack.nky.service.impl;
+import cn.gistack.nky.entity.ArimaPredict;
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.resultpojo.NewSwFuturePo;
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 cn.gistack.nky.vo.HstPredictVO;
+import com.alibaba.fastjson.JSON;
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);
+ List<DataResChildrenPo> collect = cdList.stream().filter(
+// item -> item.getRes_cd().equals("42011640018") || item.getRes_cd().equals("42128140006")
+ item -> item.getRes_cd().equals("42011640018") || item.getRes_cd().equals("42130350046")|| item.getRes_cd().equals("42092250024")|| item.getRes_cd().equals("42022250039")|| item.getRes_cd().equals("42132150292")
- cdList.forEach(dataResChildrenPo -> {
+ ).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("42130350046")|| item.getRes_cd().equals("42092250024")|| item.getRes_cd().equals("42022250039")|| item.getRes_cd().equals("42132150292")
+// ).collect(Collectors.toList());
+
+// predict(collect,type);
+
+ newPredict(cdList,type);
+
+
+ }
+
+ private void newPredict(List<DataResChildrenPo> collect, String type) {
+
+ String resCd = "";
+ //无数据直接返回
+ if (collect.size() == 0){
+ return;
+ }
+ List<NewSwFuturePo> future = new ArrayList<>();
+ if (type.equals("1") || type.equals("2")){
+
+ for (int i = 0; i < collect.size(); i++) {
+ DataResChildrenPo dataResChildrenPo = collect.get(i);
+ String currentResCd = dataResChildrenPo.getRes_cd();
+
+ //第一个水库
+ if (future.size() == 0 && resCd.equals("")){
+ future = hsybService.getNewFuture(currentResCd);
+ //当前水库
+ resCd = currentResCd;
+ } else if (!resCd.equals(currentResCd)) {
+ //其他水库,获取新的预测数据
+ future = hsybService.getNewFuture(currentResCd);
+ //更换为新水库
+ resCd = currentResCd;
+ }
+
+ //预测数据构造请求数据
+ if (future != null && future.size() > 0) {
+ List<PredictWatersPo> po = new ArrayList<>();
+ future.forEach(item -> {
+ PredictWatersPo predictWatersPo = new PredictWatersPo();
+ //设置时间
+ predictWatersPo.setTime(item.getTime());
+ //设置预测水位
+ predictWatersPo.setValue(Double.parseDouble(item.getSw()));
+ po.add(predictWatersPo);
+ });
+ HstPredictReqPo arimaPredictReqPo = new HstPredictReqPo(dataResChildrenPo, type, po);
+ //循环预测请求
+ nkyService.hstPredict(arimaPredictReqPo);
+ }
+
+
+ }
+ }else if (type.equals("3") || type.equals("4") || type.equals("5")){
+
+ for (int i = 0; i < collect.size(); i++) {
+ DataResChildrenPo dataResChildrenPo = collect.get(i);
+ String currentResCd = dataResChildrenPo.getRes_cd();
+
+ //第一个水库
+ if (future.size() == 0 && resCd.equals("")){
+ future = hsybService.getNewFuture(currentResCd);
+ //当前水库
+ resCd = currentResCd;
+ } else if (!resCd.equals(currentResCd)) {
+ //其他水库,获取新的预测数据
+ future = hsybService.getNewFuture(currentResCd);
+ //更换为新水库
+ resCd = currentResCd;
+ }
+
+ //预测数据构造请求数据
+ if (future != null && future.size() > 0) {
+ List<PredictWatersPo> po = new ArrayList<>();
+ future.forEach(item -> {
+ PredictWatersPo predictWatersPo = new PredictWatersPo();
+ //设置时间
+ predictWatersPo.setTime(item.getTime());
+ //设置预测水位
+ predictWatersPo.setValue(Double.parseDouble(item.getSw()));
+ 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);
+ }
+ }
+ }
+
+ }
+
+ private void predict(List<DataResChildrenPo> collect, String type) {
+ String resCd = "";
+ //无数据直接返回
+ if (collect.size() == 0){
+ return;
+ }
+ List<List<String>> future = new ArrayList<>();
+ if (type.equals("1") || type.equals("2")){
+
+ for (int i = 0; i < collect.size(); i++) {
+ DataResChildrenPo dataResChildrenPo = collect.get(i);
+ String currentResCd = dataResChildrenPo.getRes_cd();
+
+ //第一个水库
+ if (future.size() == 0 && resCd.equals("")){
+ future = hsybService.getFuture(currentResCd);
+ //当前水库
+ resCd = currentResCd;
+ } else if (!resCd.equals(currentResCd)) {
+ //其他水库,获取新的预测数据
+ future = hsybService.getFuture(currentResCd);
+ //更换为新水库
+ resCd = currentResCd;
+ }
+
+ //预测数据构造请求数据
+ 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("3") || type.equals("4") || type.equals("5")){
+
+ for (int i = 0; i < collect.size(); i++) {
+ DataResChildrenPo dataResChildrenPo = collect.get(i);
+ String currentResCd = dataResChildrenPo.getRes_cd();
+
+ //第一个水库
+ if (future.size() == 0 && resCd.equals("")){
+ future = hsybService.getFuture(currentResCd);
+ //当前水库
+ resCd = currentResCd;
+ } else if (!resCd.equals(currentResCd)) {
+ //其他水库,获取新的预测数据
+ future = hsybService.getFuture(currentResCd);
+ //更换为新水库
+ resCd = currentResCd;
+ }
+
+ //预测数据构造请求数据
+ 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);
+ }
+ }
+ }
+ }
+
+ @Override
+ public List<HstPredictVO> getFutureData(String resCd, String type) {
+ List<HstPredictVO> list = new ArrayList<>();
+ if (type.equals("3")) {
+ list = baseMapper.getFutureDataWy(resCd, type);
+ } else {
+ list = baseMapper.getFutureData(resCd, type);
+ }
+
+
+ list.forEach(hstPredict -> {
+ if (hstPredict.getPredictList() != null) {
+ hstPredict.setPredictList(JSON.parse(hstPredict.getPredictList().toString()));
+ } else {
+ hstPredict.setPredictList("[]");
+ }
+ hstPredict.setPreWaterList(JSON.parse(hstPredict.getPreWaterList().toString()));
});
+
+ return list;
}
@Override
public boolean save(HstPredict entity) {
- if (ObjectUtil.isEmpty(entity.getCreateTime())){
+ if (ObjectUtil.isEmpty(entity.getCreateTime())) {
return false;
}
- HstPredict params = new HstPredict();
- params.setDamId(entity.getDamId());
- params.setPointId(entity.getPointId());
- params.setType(entity.getType());
- params.setCreateTime(entity.getCreateTime());
+ List<HstPredict> list = baseMapper.selectTodayData(entity);
- List<HstPredict> list = list(Condition.getQueryWrapper(params));
-
- if (list.size()>0){
+ if (list.size() > 0) {
+ //删除该数据,添加最新数据
+// baseMapper.deleteById(list.get(0));
+// return super.save(entity);
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")){
+ cdList = ztApiService.getSl();
+ } else if (type.equals("3") || type.equals("4") || type.equals("5")) {
//获取位移测点
cdList = ztApiService.getWy();
- }else {
+ } else {
return null;
}
return cdList;
}
+
}
--
Gitblit v1.9.3