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