guoshilong
2023-08-02 818113e9a0cf7c20d836291e2a151f7346aad8a7
南科院预测定时器
6 files modified
4 files renamed
31 files added
6 files deleted
1753 ■■■■ changed files
skjcmanager/skjcmanager-service-api/pom.xml 1 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/pom.xml 24 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/entity/AlarmGet.java 85 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/entity/ArimaPredict.java 52 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/entity/HstPredict.java 47 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/fegin/INkyClient.java 68 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/fegin/INkyClientFallback.java 38 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/requestpojo/AlarmGetPo.java 37 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/requestpojo/ArimaPredictReqPo.java patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/requestpojo/BDDataPo.java 84 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/requestpojo/BatchDataPo.java 35 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/requestpojo/HstPredictReqPo.java 44 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/requestpojo/PredictWatersPo.java 33 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/requestpojo/QueryReqPo.java 56 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/resultpojo/DataBigResultPojo.java patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/resultpojo/DataResChildrenPo.java 43 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/resultpojo/DataResPo.java patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/resultpojo/ZtResultPo.java patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/service/impl/PushServiceImpl.java 1 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/pom.xml 8 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/controller/ArimaPredictController.java 15 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/controller/HstPredictController.java 15 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/feign/NkyClientImpl.java 63 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/mapper/AlarmGetMapper.java 7 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/mapper/AlarmGetMapper.xml 5 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/mapper/ArimaPredictMapper.java 7 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/mapper/ArimaPredictMapper.xml 5 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/mapper/HstPredictMapper.java 7 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/mapper/HstPredictMapper.xml 5 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/requestpojo/HstPredictReqPo.java 30 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/requestpojo/PredictWatersPo.java 18 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/requestpojo/QueryReqPo.java 39 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/resultpojo/DataResChildrenPo.java 21 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/IAlarmGetService.java 10 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/IArimaPredictService.java 15 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/IHstPredictService.java 10 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/INkyService.java 27 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/IZtApiService.java 20 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/NkyServiceImpl.java 66 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/ZtApiServiceImpl.java 66 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/AlarmGetServiceImpl.java 91 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/ArimaPredictServiceImpl.java 91 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/HstPredictServiceImpl.java 90 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/NkyServiceImpl.java 115 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/ZtApiServiceImpl.java 119 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-xxljob/pom.xml 5 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/jobhandler/NkyXxlJob.java 135 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/pom.xml
@@ -24,6 +24,7 @@
        <module>skjcmanager-sm-api</module>
        <module>skjcmanager-alerts-api</module>
        <module>skjcmanager-xxljob-api</module>
        <module>skjcmanager-nky-api</module>
    </modules>
    <dependencies>
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/pom.xml
New file
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>skjcmanager-service-api</artifactId>
        <groupId>cn.gistack</groupId>
        <version>3.0.1.RELEASE</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>skjcmanager-nky-api</artifactId>
    <name>${project.artifactId}</name>
    <version>${bladex.project.version}</version>
    <packaging>jar</packaging>
    <dependencies>
        <dependency>
            <groupId>org.springblade</groupId>
            <artifactId>blade-starter-cache</artifactId>
        </dependency>
    </dependencies>
</project>
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/entity/AlarmGet.java
New file
@@ -0,0 +1,85 @@
package cn.gistack.nky.entity;
import lombok.Data;
/**
 * 南科院判定异常查询实体类
 */
@Data
public class AlarmGet {
    /**
     * 主键
     */
    private String id;
    /**
     * 大坝id
     */
    private String damId;
    /**
     * 测点id
     */
    private String pointId;
    /**
     * 物理量id
     */
    private String type;
    /**
     * 数据时间
     */
    private String time;
    /**
     * 测量值
     */
    private String value;
    /**
     * 描述
     */
    private String desc;
    /**
     * 生成时间
     */
    private String createTime;
    /**
     * 算法编号
     */
    private Integer taskCategory;
    /**
     * 报警等级
     */
    private Integer level;
    /**
     * 报警值
     */
    private Double baojingzhi;
    /**
     * 原始数据id
     */
    private Integer originId;
    /**
     * 正向阈值
     */
    private String forward;
    /**
     * 反向阈值
     */
    private String reverse;
    /**
     * 系数阈值
     */
    private String ratio;
}
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/entity/ArimaPredict.java
New file
@@ -0,0 +1,52 @@
package cn.gistack.nky.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import lombok.Data;
import java.util.Date;
/**
 * Arima预测结果实体类
 */
@Data
@TableName( value = "NKY_ARIMA_PREDICT",autoResultMap = true)
public class ArimaPredict {
    /**
     * 主键
     */
    private String id;
    /**
     * 大坝id
     */
    private String damId;
    /**
     * 测点id
     */
    private String pointId;
    /**
     * 预测类型(1:渗压,2:渗流,3:X位移,4:Y位移,5:Z位移)
     */
    private String type;
    /**
     * 预测值
     */
    @TableField(value = "predicts",typeHandler = FastjsonTypeHandler.class)
    private Object predicts;
    /**
     * 错误id
     */
    private String errorId;
    /**
     * 时间
     */
    private Date createTime;
}
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/entity/HstPredict.java
New file
@@ -0,0 +1,47 @@
package cn.gistack.nky.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import lombok.Data;
import java.util.Date;
/**
 * Hst预测结果实体类
 */
@Data
@TableName( value = "NKY_HST_PREDICT",autoResultMap = true)
public class HstPredict {
    /**
     * 主键
     */
    private String id;
    /**
     * 大坝id
     */
    private String damId;
    /**
     * 测点id
     */
    private String pointId;
    /**
     * 预测类型(1:渗压,2:渗流,3:X位移,4:Y位移,5:Z位移)
     */
    private String type;
    /**
     * 数据
     */
    @TableField(value = "data",typeHandler = FastjsonTypeHandler.class)
    private Object data;
    /**
     * 时间
     */
    private Date createTime;
}
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/fegin/INkyClient.java
New file
@@ -0,0 +1,68 @@
package cn.gistack.nky.fegin;
import org.apache.ibatis.annotations.Param;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@FeignClient(
    value = "blade-nky",
    fallback = INkyClientFallback.class
)
public interface INkyClient {
    String API_PREFIX = "/client";
    //Arima预测结果
    String GET_ARIMA_DATA= API_PREFIX + "/getArimaData";
    //Arima预测
    String PREDICT_ARIMA_DATA = API_PREFIX+"/predictArimaData";
    //Hst预测结果
    String GET_HST_DATA= API_PREFIX + "/getHstData";
    //Hst预测
    String PREDICT_HST_DATA = API_PREFIX+"/predictHstData";
    //按库查询
    String GET_BATCH_DATA = API_PREFIX + "getBatchData";
    //异常查询
    String ALARM_GET_DATA = API_PREFIX + "alarmGetData";
    /**
     * 获取arima预测结果
     * @param type
     */
    @GetMapping(GET_ARIMA_DATA)
    void arimaQueryData(@RequestParam("type")String type);
    /**
     * arima请求预测
     * @param type
     */
    @GetMapping(PREDICT_ARIMA_DATA)
    void arimaPredictData(@RequestParam("type")String type);
    /**
     * 获取hst预测结果
     * @param type
     */
    @GetMapping(GET_HST_DATA)
    void hstQueryData(@RequestParam("type")String type);
    /**
     * hst请求预测
     * @param type
     */
    @GetMapping(PREDICT_HST_DATA)
    void hstPredictData(@RequestParam("type")String type);
    /**
     * 按库请求
     * @param type
     */
    @GetMapping(GET_BATCH_DATA)
    void batchData(@RequestParam("type") String type);
    @GetMapping(ALARM_GET_DATA)
    void alarmGetData(@RequestParam("type") String type);
}
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/fegin/INkyClientFallback.java
New file
@@ -0,0 +1,38 @@
package cn.gistack.nky.fegin;
import org.springframework.stereotype.Component;
@Component
public class INkyClientFallback implements INkyClient{
    @Override
    public void arimaQueryData(String type) {
    }
    @Override
    public void arimaPredictData(String type) {
    }
    @Override
    public void hstQueryData(String type) {
    }
    @Override
    public void hstPredictData(String type) {
    }
    @Override
    public void batchData(String type) {
    }
    @Override
    public void alarmGetData(String type) {
    }
}
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/requestpojo/AlarmGetPo.java
New file
@@ -0,0 +1,37 @@
package cn.gistack.nky.requestpojo;
import cn.gistack.nky.resultpojo.DataResChildrenPo;
import lombok.Data;
import org.springblade.core.tool.utils.DateUtil;
import java.util.Date;
/**
 * 判定异常请求参数类
 */
@Data
public class AlarmGetPo {
    private Integer pageNo;
    private Integer pageSize;
    private Integer startNo;
    private String damId;
    private String pointId;
    private String type;
    private String start;
    private String end;
    public AlarmGetPo(DataResChildrenPo dataResChildrenPo,String type){
        this.pageNo = 1;
        this.pageSize = 1;
        this.damId = dataResChildrenPo.getRes_cd();
        this.pointId = dataResChildrenPo.getCd();
        this.type = type;
        this.start = DateUtil.format(DateUtil.now(),"yyyy-MM-dd HH:mm:ss");
        long endTime = DateUtil.now().getTime() + 60*60*1000;
        Date d = new Date();
        d.setTime(endTime);
        this.end = DateUtil.format(d,"yyyy-MM-dd HH:mm:ss");
    }
}
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/requestpojo/ArimaPredictReqPo.java
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/requestpojo/BDDataPo.java
New file
@@ -0,0 +1,84 @@
package cn.gistack.nky.requestpojo;
import cn.gistack.nky.resultpojo.DataResChildrenPo;
import lombok.Data;
/**
 * 测点数据
 */
@Data
public class BDDataPo {
    /**
     * 大坝id
     */
    private String damId;
    /**
     * 测点id
     */
    private String pointId;
    /**
     * 监测量类型
     */
    private String type;
    /**
     * 测点名称
     */
    private String pointName;
    /**
     * 大坝名称
     */
    private String damName;
    /**
     * 类型名称
     */
    private String typeName;
    /**
     * 测点值
     */
    private Double value;
    /**
     * 采集时间
     */
    private String time;
    /**
     * 是否正常数据 0、初次进入;1、正常;2、检验异常
     */
    private Integer status;
    /**
     * 是否粗差1、是;2、否
     */
    private Integer isError;
    public BDDataPo(DataResChildrenPo po,String type){
        this.damId = po.getRes_cd();
        this.pointId = po.getCd();
        this.type = type;
        if (this.type == "1"){
            //渗压
            this.value = po.getSw_val();
        }else if (this.type == "2"){
            //渗流
        }else if (this.type == "3"){
            //x
            this.value = po.getDe();
        }else if (this.type == "4"){
            //y
            this.value = po.getDn();
        }else if (this.type == "5"){
            //z
            this.value = po.getDu();
        }
        this.time = po.getTm();
    }
}
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/requestpojo/BatchDataPo.java
New file
@@ -0,0 +1,35 @@
package cn.gistack.nky.requestpojo;
import cn.gistack.nky.resultpojo.DataResPo;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
public class BatchDataPo {
    List<BDDataPo> datas;
    PredictWatersPo water;
    public BatchDataPo(){}
    public BatchDataPo(DataResPo dataResPo,String type){
        List<BDDataPo> list = new ArrayList<>();
            dataResPo.getChildren().forEach(dataResChildrenPo -> {
                BDDataPo bdDataPo = new BDDataPo(dataResChildrenPo,type);
                if (type == "1"){
                    //渗压
                    if (dataResChildrenPo.getIs_main_cd().equals("y")){
                        PredictWatersPo waters = new PredictWatersPo(dataResChildrenPo.getTm(),dataResChildrenPo.getSw_val(),dataResChildrenPo.getRes_cd());
                        this.water = waters;
                    }
                }
                list.add(bdDataPo);
            });
            this.datas = list;
    }
}
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/requestpojo/HstPredictReqPo.java
New file
@@ -0,0 +1,44 @@
package cn.gistack.nky.requestpojo;
import cn.gistack.nky.resultpojo.DataResChildrenPo;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
 * @PROJECT_NAME: skjcmanager
 * @DESCRIPTION: hst预测请求参数
 * @USER: aix
 * @DATE: 2023/7/31 11:04
 */
@Data
public class HstPredictReqPo {
    private String damId;
    private String pointId;
    private String type;
    private List<PredictWatersPo> predictWaters;
    public HstPredictReqPo(String damId, String pointId, String type, List<PredictWatersPo> predictWaters) {
        this.damId = damId;
        this.pointId = pointId;
        this.type = type;
        this.predictWaters = predictWaters;
    }
    public HstPredictReqPo(DataResChildrenPo dataResChildrenPo,String type){
        this.damId = dataResChildrenPo.getRes_cd();
        this.pointId = dataResChildrenPo.getCd();
        this.type = type;
        PredictWatersPo predictWatersPo = new PredictWatersPo(dataResChildrenPo.getTm(),dataResChildrenPo.getSw_val());
        List<PredictWatersPo> list = new ArrayList<>();
        list.add(predictWatersPo);
        this.predictWaters = list;
    }
}
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/requestpojo/PredictWatersPo.java
New file
@@ -0,0 +1,33 @@
package cn.gistack.nky.requestpojo;
import lombok.Data;
/**
 * @PROJECT_NAME: skjcmanager
 * @DESCRIPTION:
 * @USER: aix
 * @DATE: 2023/7/31 11:05
 */
@Data
public class PredictWatersPo {
    private String time;
    private Double value;
    private String damId;
    public PredictWatersPo(){}
    public PredictWatersPo(String time,Double value){
        this.time = time;
        this.value = value;
    }
    public PredictWatersPo(String time,Double value,String damId){
        this.time = time;
        this.value = value;
        this.damId = damId;
    }
}
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/requestpojo/QueryReqPo.java
New file
@@ -0,0 +1,56 @@
package cn.gistack.nky.requestpojo;
import cn.gistack.nky.resultpojo.DataResChildrenPo;
import lombok.Data;
/**
 * @PROJECT_NAME: skjcmanager
 * @DESCRIPTION: 查询结果请求参数
 * @USER: aix
 * @DATE: 2023/7/31 11:07
 */
@Data
public class QueryReqPo {
    /**
     * 第几页
     */
    private int pageNo;
    /**
     * 每页数量
     */
    private int pageSize;
    /**
     * 开始记录No
     */
    private int startNo;
    /**
     * 大坝id
     */
    private String damId;
    /**
     * 测点id
     */
    private String pointId;
    /**
     * 监测量类型
     */
    private String type;
    public QueryReqPo(){}
    public QueryReqPo(String damId, String pointId, String type) {
        this.damId = damId;
        this.pointId = pointId;
        this.type = type;
    }
    public QueryReqPo(DataResChildrenPo dataResChildrenPo,String type) {
        this.damId = dataResChildrenPo.getRes_cd();
        this.pointId = dataResChildrenPo.getCd();
        this.type = type;
        this.pageNo = 1;
        this.pageSize = 1;
    }
}
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/resultpojo/DataBigResultPojo.java
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/resultpojo/DataResChildrenPo.java
New file
@@ -0,0 +1,43 @@
package cn.gistack.nky.resultpojo;
import lombok.Data;
/**
 * @PROJECT_NAME: skjcmanager
 * @DESCRIPTION:
 * @USER: aix
 * @DATE: 2023/7/31 9:38
 */
@Data
public class DataResChildrenPo {
    private String res_reg_code;
    private String cd;// 测站编码
    private String tm;
    private String res_cd; // 水库编码
    private String res_nm; // 水库名称
    /**
     * 水位
     */
    private Double sw_val;
    /**
     * 上下游方向
     */
    private Double de;
    /**
     * 左右岸方向
     */
    private Double dn;
    /**
     * 垂直位移
     */
    private Double du;
    private String is_main_cd;
    private String main_cd;
}
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/resultpojo/DataResPo.java
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/resultpojo/ZtResultPo.java
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/service/impl/PushServiceImpl.java
@@ -138,7 +138,6 @@
     * @return
     */
    public Boolean pushMessage(PushVO pushVO) {
        RestTemplate template = new RestTemplate();
        Map<String, Object> params = new LinkedHashMap<>();
        //用户cId,可数组,可字符串
skjcmanager/skjcmanager-service/skjcmanager-nky/pom.xml
@@ -24,6 +24,14 @@
            <artifactId>blade-core-auto</artifactId>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>cn.gistack</groupId>
            <artifactId>skjcmanager-nky-api</artifactId>
            <version>3.0.1.RELEASE</version>
        </dependency>
    </dependencies>
    <build>
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/controller/ArimaPredictController.java
New file
@@ -0,0 +1,15 @@
package cn.gistack.nky.controller;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.boot.ctrl.BladeController;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
@AllArgsConstructor
@RequestMapping("/arimaPredict/arimaPredict")
public class ArimaPredictController extends BladeController {
}
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/controller/HstPredictController.java
New file
@@ -0,0 +1,15 @@
package cn.gistack.nky.controller;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.boot.ctrl.BladeController;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
@AllArgsConstructor
@RequestMapping("/hstPredict/hstPredict")
public class HstPredictController extends BladeController {
}
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/feign/NkyClientImpl.java
New file
@@ -0,0 +1,63 @@
package cn.gistack.nky.feign;
import cn.gistack.nky.fegin.INkyClient;
import cn.gistack.nky.service.IAlarmGetService;
import cn.gistack.nky.service.IArimaPredictService;
import cn.gistack.nky.service.IHstPredictService;
import cn.gistack.nky.service.INkyService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.tenant.annotation.NonDS;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
@NonDS
@ApiIgnore
@RestController
@AllArgsConstructor
@Slf4j
public class NkyClientImpl implements INkyClient {
    private final INkyService nkyService;
    private final IArimaPredictService arimaPredictService;
    private final IHstPredictService hstPredictService;
    private final IAlarmGetService alarmGetService;
    @Override
    @GetMapping(GET_ARIMA_DATA)
    public void arimaQueryData(String type) {
        arimaPredictService.getData(type);
    }
    @Override
    @GetMapping(PREDICT_ARIMA_DATA)
    public void arimaPredictData(String type) {
        arimaPredictService.predictData(type);
    }
    @Override
    @GetMapping(GET_HST_DATA)
    public void hstQueryData(String type) {
        hstPredictService.getData(type);
    }
    @Override
    @GetMapping(PREDICT_HST_DATA)
    public void hstPredictData(String type) {
        hstPredictService.predictData(type);
    }
    @Override
    @GetMapping(GET_BATCH_DATA)
    public void batchData(String type) {
        alarmGetService.batchData(type);
    }
    @Override
    @GetMapping(ALARM_GET_DATA)
    public void alarmGetData(String type) {
        alarmGetService.alarmGetData(type);
    }
}
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/mapper/AlarmGetMapper.java
New file
@@ -0,0 +1,7 @@
package cn.gistack.nky.mapper;
import cn.gistack.nky.entity.AlarmGet;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface AlarmGetMapper extends BaseMapper<AlarmGet> {
}
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/mapper/AlarmGetMapper.xml
New file
@@ -0,0 +1,5 @@
<?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.nky.mapper.AlarmGetMapper">
</mapper>
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/mapper/ArimaPredictMapper.java
New file
@@ -0,0 +1,7 @@
package cn.gistack.nky.mapper;
import cn.gistack.nky.entity.ArimaPredict;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface ArimaPredictMapper  extends BaseMapper<ArimaPredict>{
}
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/mapper/ArimaPredictMapper.xml
New file
@@ -0,0 +1,5 @@
<?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.nky.mapper.ArimaPredictMapper">
</mapper>
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/mapper/HstPredictMapper.java
New file
@@ -0,0 +1,7 @@
package cn.gistack.nky.mapper;
import cn.gistack.nky.entity.HstPredict;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface HstPredictMapper extends BaseMapper<HstPredict> {
}
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/mapper/HstPredictMapper.xml
New file
@@ -0,0 +1,5 @@
<?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.nky.mapper.HstPredictMapper">
</mapper>
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/requestpojo/HstPredictReqPo.java
File was deleted
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/requestpojo/PredictWatersPo.java
File was deleted
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/requestpojo/QueryReqPo.java
File was deleted
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/resultpojo/DataResChildrenPo.java
File was deleted
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/IAlarmGetService.java
New file
@@ -0,0 +1,10 @@
package cn.gistack.nky.service;
import cn.gistack.nky.entity.AlarmGet;
import com.baomidou.mybatisplus.extension.service.IService;
public interface IAlarmGetService extends IService<AlarmGet> {
    void batchData(String type);
    void alarmGetData(String type);
}
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/IArimaPredictService.java
New file
@@ -0,0 +1,15 @@
package cn.gistack.nky.service;
import cn.gistack.nky.entity.ArimaPredict;
import com.baomidou.mybatisplus.extension.service.IService;
public interface IArimaPredictService extends IService<ArimaPredict> {
    void getData(String type);
    /**
     * 请求数据预测
     * @param type
     */
    void predictData(String type);
}
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/IHstPredictService.java
New file
@@ -0,0 +1,10 @@
package cn.gistack.nky.service;
import cn.gistack.nky.entity.HstPredict;
import com.baomidou.mybatisplus.extension.service.IService;
public interface IHstPredictService extends IService<HstPredict> {
    void getData(String type);
    void predictData(String type);
}
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/INkyService.java
@@ -1,8 +1,9 @@
package cn.gistack.nky.service;
import cn.gistack.nky.requestpojo.ArimaPredictReqPo;
import cn.gistack.nky.requestpojo.HstPredictReqPo;
import cn.gistack.nky.requestpojo.QueryReqPo;
import cn.gistack.nky.entity.AlarmGet;
import cn.gistack.nky.entity.ArimaPredict;
import cn.gistack.nky.entity.HstPredict;
import cn.gistack.nky.requestpojo.*;
/**
 * @PROJECT_NAME: skjcmanager
@@ -16,25 +17,37 @@
     * arima 预测
     * 结果通过请通过查询接口查看
     */
    void arimaPredict(ArimaPredictReqPo po);
    Boolean arimaPredict(ArimaPredictReqPo po);
    /**
     * hst预测
     * 结果通过请通过查询接口查看
     */
    void hstPredict(HstPredictReqPo po);
    Boolean hstPredict(HstPredictReqPo po);
    /**
     * arima预测查询结果
     * @param po 查询参数对象
     * @return
     */
    Object arimaQuery(QueryReqPo po);
    ArimaPredict arimaQuery(QueryReqPo po);
    /**
     * hst预测查询结果
     * @return
     */
    Object hstQuery(QueryReqPo po);
    HstPredict hstQuery(QueryReqPo po);
    /**
     * 按库查询
     * @param po
     * @return
     */
    Boolean batchData(BatchDataPo po);
    /**
     * 查询判定异常
     * @param alarmGetPo
     */
    AlarmGet alarmGetData(AlarmGetPo alarmGetPo);
}
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/IZtApiService.java
@@ -2,6 +2,10 @@
import cn.gistack.nky.resultpojo.DataBigResultPojo;
import cn.gistack.nky.resultpojo.DataResChildrenPo;
import cn.gistack.nky.resultpojo.DataResPo;
import java.util.List;
/**
 * @PROJECT_NAME: skjcmanager
@@ -15,12 +19,24 @@
     * 实时渗压监测数据
     * @return list集合
     */
    DataBigResultPojo getSljc();
    List<DataResChildrenPo> getSy();
    /**
     * 实时变形监测数据
     * @return list集合
     */
    DataBigResultPojo getWy();
    List<DataResChildrenPo> getWy();
    /**
     * 获取渗压水库集
     * @return
     */
    List<DataResPo> getResSy();
    /**
     * 获取位移水库集
     * @return
     */
    List<DataResPo> getResWy();
}
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/NkyServiceImpl.java
File was deleted
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/ZtApiServiceImpl.java
File was deleted
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/AlarmGetServiceImpl.java
New file
@@ -0,0 +1,91 @@
package cn.gistack.nky.service.impl;
import cn.gistack.nky.entity.AlarmGet;
import cn.gistack.nky.mapper.AlarmGetMapper;
import cn.gistack.nky.requestpojo.AlarmGetPo;
import cn.gistack.nky.requestpojo.BatchDataPo;
import cn.gistack.nky.resultpojo.DataResChildrenPo;
import cn.gistack.nky.resultpojo.DataResPo;
import cn.gistack.nky.service.IAlarmGetService;
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.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@AllArgsConstructor
@Service
public class AlarmGetServiceImpl extends ServiceImpl<AlarmGetMapper, AlarmGet> implements IAlarmGetService {
    private final INkyService nkyService;
    private final IZtApiService ztApiService;
    @Override
    public void batchData(String type) {
        List<DataResPo> cdList = getResCdList(type);
        cdList.forEach(dataResPo -> {
            if (dataResPo.getChildren() != null){
                BatchDataPo batchDataPo = new BatchDataPo(dataResPo, type);
                nkyService.batchData(batchDataPo);
            }
        });
    }
    @Override
    public void alarmGetData(String type) {
        List<DataResChildrenPo> cdList = getCdList(type);
        cdList.forEach(dataResChildrenPo -> {
            AlarmGetPo alarmGetPo = new AlarmGetPo(dataResChildrenPo,type);
            nkyService.alarmGetData(alarmGetPo);
        });
    }
    /**
     * 获取水库集
     *
     * @param type
     * @return
     */
    public List<DataResPo> getResCdList(String type) {
        List<DataResPo> cdList = new ArrayList<>();
        if (type.equals("1")) {
            //获取渗压测点
            cdList = ztApiService.getResSy();
        } else if (type.equals("2")) {
            //获取渗流测点
            return null;
        } else if (type.equals("3") || type.equals("4") || type.equals("5")) {
            //获取位移测点
            cdList = ztApiService.getResWy();
        } else {
            return null;
        }
        return cdList;
    }
    public  List<DataResChildrenPo> getCdList(String type){
        List<DataResChildrenPo> cdList = new ArrayList<>();
        if (type.equals("1")){
            //获取渗压测点
            cdList = ztApiService.getSy();
        }else if (type.equals("2")){
            //获取渗流测点
            return null;
        }else if (type.equals("3") || type.equals("4") || type.equals("5")){
            //获取位移测点
            cdList = ztApiService.getWy();
        }else {
            return null;
        }
        return cdList;
    }
}
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/ArimaPredictServiceImpl.java
New file
@@ -0,0 +1,91 @@
package cn.gistack.nky.service.impl;
import cn.gistack.nky.entity.ArimaPredict;
import cn.gistack.nky.mapper.ArimaPredictMapper;
import cn.gistack.nky.requestpojo.ArimaPredictReqPo;
import cn.gistack.nky.requestpojo.QueryReqPo;
import cn.gistack.nky.resultpojo.DataResChildrenPo;
import cn.gistack.nky.service.IArimaPredictService;
import cn.gistack.nky.service.INkyService;
import cn.gistack.nky.service.IZtApiService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mysql.cj.util.StringUtils;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service
@AllArgsConstructor
public class ArimaPredictServiceImpl extends ServiceImpl<ArimaPredictMapper, ArimaPredict> implements IArimaPredictService {
    private final INkyService nkyService;
    private final IZtApiService ztApiService;
    @Override
    public void getData(String type) {
        List<DataResChildrenPo> cdList = getCdList(type);
        cdList.forEach(dataResChildrenPo -> {
                //循环请求预测结果
                QueryReqPo queryReqPo = new QueryReqPo(dataResChildrenPo,type);
                //请求预测结果
                ArimaPredict arimaPredict = nkyService.arimaQuery(queryReqPo);
                if (arimaPredict != null){
                    //存储预测结果至数据库
                    save(arimaPredict);
                }
        });
    }
    @Override
    public void predictData(String type) {
        List<DataResChildrenPo> cdList = getCdList(type);
        cdList.forEach(dataResChildrenPo -> {
            ArimaPredictReqPo arimaPredictReqPo = new ArimaPredictReqPo(dataResChildrenPo, type, 7);
            //循环预测请求
            nkyService.arimaPredict(arimaPredictReqPo);
        });
    }
    @Override
    public boolean save(ArimaPredict entity) {
        if (ObjectUtil.isEmpty(entity.getId())){
            return false;
        }
        //遍历表中当前水库,当前测点,当前类型的数据,检查是否有重复数据
        ArimaPredict params = new ArimaPredict();
        params.setDamId(entity.getDamId());
        params.setPointId(entity.getPointId());
        params.setType(entity.getType());
        params.setCreateTime(entity.getCreateTime());
        List<ArimaPredict> list = list(Condition.getQueryWrapper(params));
        if (list.size()>0){
            return false;
        }else {
            return super.save(entity);
        }
    }
    public  List<DataResChildrenPo> getCdList(String type){
        List<DataResChildrenPo> cdList = new ArrayList<>();
        if (type.equals("1")){
            //获取渗压测点
            cdList = ztApiService.getSy();
        }else if (type.equals("2")){
            //获取渗流测点
            return null;
        }else if (type.equals("3") || type.equals("4") || type.equals("5")){
            //获取位移测点
            cdList = ztApiService.getWy();
        }else {
            return null;
        }
        return cdList;
    }
}
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/HstPredictServiceImpl.java
New file
@@ -0,0 +1,90 @@
package cn.gistack.nky.service.impl;
import cn.gistack.nky.entity.HstPredict;
import cn.gistack.nky.mapper.HstPredictMapper;
import cn.gistack.nky.requestpojo.HstPredictReqPo;
import cn.gistack.nky.requestpojo.QueryReqPo;
import cn.gistack.nky.resultpojo.DataResChildrenPo;
import cn.gistack.nky.service.IHstPredictService;
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.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@AllArgsConstructor
@Service
public class HstPredictServiceImpl extends ServiceImpl<HstPredictMapper, HstPredict> implements IHstPredictService {
    private final INkyService nkyService;
    private final IZtApiService ztApiService;
    @Override
    public void getData(String type) {
        List<DataResChildrenPo> cdList = getCdList(type);
        cdList.forEach(dataResChildrenPo -> {
            //循环请求预测结果
            QueryReqPo queryReqPo = new QueryReqPo(dataResChildrenPo,type);
            //请求预测结果
            HstPredict hstPredict = nkyService.hstQuery(queryReqPo);
            if (hstPredict != null){
                //存储预测结果至数据库
                save(hstPredict);
            }
        });
    }
    @Override
    public void predictData(String type) {
        List<DataResChildrenPo> cdList = getCdList(type);
        cdList.forEach(dataResChildrenPo -> {
            HstPredictReqPo arimaPredictReqPo = new HstPredictReqPo(dataResChildrenPo, type);
            //循环预测请求
            nkyService.hstPredict(arimaPredictReqPo);
        });
    }
    @Override
    public boolean save(HstPredict entity) {
        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 = list(Condition.getQueryWrapper(params));
        if (list.size()>0){
            return false;
        }else {
            return super.save(entity);
        }
    }
    public  List<DataResChildrenPo> getCdList(String type){
        List<DataResChildrenPo> cdList = new ArrayList<>();
        if (type.equals("1")){
            //获取渗压测点
            cdList = ztApiService.getSy();
        }else if (type.equals("2")){
            //获取渗流测点
            return null;
        }else if (type.equals("3") || type.equals("4") || type.equals("5")){
            //获取位移测点
            cdList = ztApiService.getWy();
        }else {
            return null;
        }
        return cdList;
    }
}
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/NkyServiceImpl.java
New file
@@ -0,0 +1,115 @@
package cn.gistack.nky.service.impl;
import cn.gistack.nky.entity.AlarmGet;
import cn.gistack.nky.entity.ArimaPredict;
import cn.gistack.nky.entity.HstPredict;
import cn.gistack.nky.requestpojo.*;
import cn.gistack.nky.service.INkyService;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.AllArgsConstructor;
import org.springframework.http.*;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import java.util.List;
/**
 * @PROJECT_NAME: skjcmanager
 * @DESCRIPTION:
 * @USER: aix
 * @DATE: 2023/7/31 14:19
 */
@Service
@AllArgsConstructor
public class NkyServiceImpl implements INkyService {
    private static final String API_PREFIX = "https://sk.hubeishuiyi.cn/warnIp/";
    // ARIMA预测接口URL
    private static final String ARIMA_PREDICT = API_PREFIX + "predict/arimaPredict";
    // ARIMA预测结果接口
    private static final String ARIMA_QUERY = API_PREFIX+"predict/arimaQuery";
    // HST预测接口URL
    private static final String HST_PREDICT =API_PREFIX+ "predict/hstPredict";
    // HST预测结果接口
    private static final String HST_QUERY =API_PREFIX+ "predict/hstQuery";
    //按库传输数据接口
    private static final String ORIGIN_BATCHDATA = API_PREFIX + "origin/batchData";
    //判定异常
    private static final String ALARM_GET = API_PREFIX+"alarm/get";
    @Override
    public Boolean arimaPredict(ArimaPredictReqPo po) {
        JSONObject jsonObject = requestNkyApi(ARIMA_PREDICT, JSON.toJSONString(po));
        return jsonObject.get("status").equals(200);
    }
    @Override
    public Boolean hstPredict(HstPredictReqPo po) {
        JSONObject jsonObject = requestNkyApi(HST_PREDICT, JSON.toJSONString(po));
        return jsonObject.get("status").equals(200);
    }
    @Override
    public ArimaPredict  arimaQuery(QueryReqPo po) {
        JSONObject jsonObject = requestNkyApi(ARIMA_QUERY, JSON.toJSONString(po));
        JSONArray data = jsonObject.getJSONArray("data");
        if (data.size()>0){
            ArimaPredict arimaPredict = data.getJSONObject(0).toJavaObject(ArimaPredict.class);
            return arimaPredict;
        }else {
            return null;
        }
    }
    @Override
    public HstPredict hstQuery(QueryReqPo po) {
        JSONObject jsonObject = requestNkyApi(HST_QUERY, JSON.toJSONString(po));
        HstPredict hstPredict = jsonObject.toJavaObject(HstPredict.class);
        return hstPredict;
    }
    @Override
    public Boolean batchData(BatchDataPo po) {
        JSONObject jsonObject = requestNkyApi(ORIGIN_BATCHDATA, JSON.toJSONString(po));
        return jsonObject.get("status").equals(200);
    }
    @Override
    public AlarmGet alarmGetData(AlarmGetPo alarmGetPo) {
        JSONObject jsonObject = requestNkyApi(ALARM_GET,JSON.toJSONString(alarmGetPo));
        AlarmGet alarmGet = jsonObject.toJavaObject(AlarmGet.class);
        return alarmGet;
    }
    /**
     * 请求南科院接口
     * @param url
     * @param jsonparams
     * @return
     */
    private JSONObject requestNkyApi(String url, String jsonparams) {
        // 声明一个header变量
        HttpHeaders headers = new HttpHeaders();
        // 设置为json格式
        MediaType mediaType = MediaType.parseMediaType("application/json;charset=utf-8");
        headers.setContentType(mediaType);
        headers.add("Accept", MediaType.APPLICATION_JSON.toString());
        HttpEntity<String> httpEntity = new HttpEntity(jsonparams, headers);
        RestTemplate template = new RestTemplate();
        String resultStr = template.postForObject(url, httpEntity, String.class);
        System.out.println(resultStr);
        JSONObject jsonObject = JSONObject.parseObject(resultStr);
        return jsonObject;
    }
}
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/ZtApiServiceImpl.java
New file
@@ -0,0 +1,119 @@
package cn.gistack.nky.service.impl;
import cn.gistack.nky.resultpojo.DataBigResultPojo;
import cn.gistack.nky.resultpojo.DataResChildrenPo;
import cn.gistack.nky.resultpojo.DataResPo;
import cn.gistack.nky.resultpojo.ZtResultPo;
import cn.gistack.nky.service.IZtApiService;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
 * @PROJECT_NAME: skjcmanager
 * @DESCRIPTION:
 * @USER: aix
 * @DATE: 2023/7/28 17:16
 */
@Service
public class ZtApiServiceImpl implements IZtApiService {
    /**
     * 实时渗压监测
     */
    private static final String LASTEST_OSMOTIC_PRESSURE = "https://sk.hubeishuiyi.cn/services/1234567890ABCDEFGHIJKLMN/monitor/lastest_osmotic_pressure/api?res_nm=&cd=&city_cd=&county_cd=&pageNo=1&pageSize=9999";
    /**
     * 位移监测
     */
    private static final String WY_API = "https://sk.hubeishuiyi.cn/services/1234567890ABCDEFGHIJKLMN/monitor/wy/api?res_nm=&cd=&city_cd=&county_cd=&pageNo=1&pageSize=9999";
    @Override
    public List<DataResChildrenPo> getSy() {
        Map<String, Object> params = new LinkedHashMap<>();
        return getData(LASTEST_OSMOTIC_PRESSURE, "get", params);
    }
    @Override
    public List<DataResChildrenPo> getWy() {
        Map<String, Object> params = new LinkedHashMap<>();
        return getData(WY_API, "get", params);
    }
    @Override
    public List<DataResPo> getResSy() {
        Map<String, Object> params = new LinkedHashMap<>();
        return getResData(LASTEST_OSMOTIC_PRESSURE, "get", params);
    }
    @Override
    public List<DataResPo> getResWy() {
        Map<String, Object> params = new LinkedHashMap<>();
        return getResData(WY_API, "get", params);
    }
    private List<DataResChildrenPo> getData(String url, String type, Map<String, Object> params) {
        HttpMethod method;
        if (type.toLowerCase().equals("get".toLowerCase())) {
            method = HttpMethod.GET;
        } else {
            method = HttpMethod.POST;
        }
        // 声明一个header变量
        HttpHeaders headers = new HttpHeaders();
        // 设置apikey
        headers.set("apikey","F1DBECD719108635189480CF60E6553ADB3109616426BD537F25A430DFC613B491A025C4A51E77FD08C6E5B7CBE05917A461286E7B6D69F1AB1B14F946149D2065B0C675F8FEDF4B9B05C1496881BC5A");
        HttpEntity<String> httpEntity = new HttpEntity(null, headers);
        RestTemplate template = new RestTemplate();
        ResponseEntity<ZtResultPo> ztResultPojoResponseEntity = template.exchange(url, method,httpEntity, ZtResultPo.class,params);
        if (ztResultPojoResponseEntity.getStatusCodeValue() == 200) {
            List<DataResChildrenPo> children = new ArrayList<>();
            List<DataResPo> data = ztResultPojoResponseEntity.getBody().getData().getData();
            //遍历数据,存为测站子集
            data.forEach(dataResPo -> {
                if (dataResPo.getChildren() != null){
                    dataResPo.getChildren().forEach(dataResChildrenPo -> {
                        children.add(dataResChildrenPo);
                    });
                }
            });
            return children;
        }
        return null;
    }
    private List<DataResPo> getResData(String url, String type, Map<String, Object> params){
        HttpMethod method;
        if (type.toLowerCase().equals("get".toLowerCase())) {
            method = HttpMethod.GET;
        } else {
            method = HttpMethod.POST;
        }
        // 声明一个header变量
        HttpHeaders headers = new HttpHeaders();
        // 设置apikey
        headers.set("apikey","F1DBECD719108635189480CF60E6553ADB3109616426BD537F25A430DFC613B491A025C4A51E77FD08C6E5B7CBE05917A461286E7B6D69F1AB1B14F946149D2065B0C675F8FEDF4B9B05C1496881BC5A");
        HttpEntity<String> httpEntity = new HttpEntity(null, headers);
        RestTemplate template = new RestTemplate();
        ResponseEntity<ZtResultPo> ztResultPojoResponseEntity = template.exchange(url, method,httpEntity, ZtResultPo.class,params);
        if (ztResultPojoResponseEntity.getStatusCodeValue() == 200) {
            List<DataResPo> data = ztResultPojoResponseEntity.getBody().getData().getData();
            return data;
        }
        return null;
    }
}
skjcmanager/skjcmanager-service/skjcmanager-xxljob/pom.xml
@@ -53,6 +53,11 @@
            <artifactId>skjcmanager-alerts-api</artifactId>
            <version>3.0.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>cn.gistack</groupId>
            <artifactId>skjcmanager-nky-api</artifactId>
            <version>3.0.1.RELEASE</version>
        </dependency>
    </dependencies>
    <build>
skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/jobhandler/NkyXxlJob.java
New file
@@ -0,0 +1,135 @@
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;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
/**
 * 南科院预测数据定时器
 */
@Component
@AllArgsConstructor
public class NkyXxlJob {
    //type,1:渗压,2:渗流,3:X位移,4:Y位移,5:Z位移
    private static final String SY = "1";
    private static final String SL = "2";
    private static final String X = "3";
    private static final String Y= "4";
    private static final String Z = "5";
    private final INkyClient nkyClient;
    /**
     * 南科院请求预测
     * @param param
     * @return
     * @throws Exception
     */
    @XxlJob("predictNkyDataJobHandler")
    public ReturnT<String> predictNkyDataJobHandler(String param){
        XxlJobLogger.log("开始ArimaPredict预测...");
        arimaPredict();
        XxlJobLogger.log("ArimaPredict预测结束...");
        XxlJobLogger.log("开始Hst预测...");
        hstPredict();
        XxlJobLogger.log("Hst预测结束...");
        XxlJobLogger.log("结束任务...");
        return ReturnT.SUCCESS;
    }
    /**
     * 南科院请求预测结果
     * @param param
     * @return
     * @throws Exception
     */
    @XxlJob("queryNkyDataJobHandler")
    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(){
        nkyClient.arimaPredictData(SY);
        nkyClient.arimaPredictData(X);
        nkyClient.arimaPredictData(Y);
        nkyClient.arimaPredictData(Z);
    }
    public void arimaQuery(){
        nkyClient.arimaQueryData(SY);
        nkyClient.arimaQueryData(X);
        nkyClient.arimaQueryData(Y);
        nkyClient.arimaQueryData(Z);
    }
    public void hstPredict(){
        nkyClient.hstPredictData(SY);
        nkyClient.hstPredictData(X);
        nkyClient.hstPredictData(Y);
        nkyClient.hstPredictData(Z);
    }
    public void hstQuery(){
        nkyClient.hstQueryData(SY);
        nkyClient.hstQueryData(X);
        nkyClient.hstQueryData(Y);
        nkyClient.hstQueryData(Z);
    }
    /**
     * 南科院按库请求数据接口
     * @param param
     * @return
     */
    @XxlJob("batchDataJobHandler")
    public ReturnT<String> batchDataJobHandler(String param){
        XxlJobLogger.log("按库请求开始");
        nkyClient.batchData(SY);
        nkyClient.batchData(X);
        nkyClient.batchData(Y);
        nkyClient.batchData(Z);
        XxlJobLogger.log("按库请求结束");
        return ReturnT.SUCCESS;
    }
    /**
     * 南科院按库请求数据接口
     * @param param
     * @return
     */
    @XxlJob("alarmGetJobHandler")
    public ReturnT<String> alarmGetJobHandler(String param){
        XxlJobLogger.log("判定异常开始");
        nkyClient.alarmGetData(SY);
        XxlJobLogger.log("判定异常结束");
        return ReturnT.SUCCESS;
    }
}