guoshilong
2023-08-04 e8ca684e5efa645a3954d507c0763e8b183bcd61
预测接口
2 files modified
1 files added
183 ■■■■ changed files
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/HstPredictServiceImpl.java 107 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/HsybServiceImpl.java 69 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/ZtApiServiceImpl.java 7 ●●●● patch | view | raw | blame | history
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;
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/HsybServiceImpl.java
New file
@@ -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;
    }
}
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);