skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/entity/DamAlarmRecord.java
@@ -75,9 +75,32 @@ private Date createTime; /** * 算法值 * 预测算法值 */ @ApiModelProperty(value = "算法值") @ApiModelProperty(value = "预测算法值") private String value; /** * “value”属性处理后的值 */ @ApiModelProperty(value = "value属性处理后的值") private String timeValue; /** * 回调类型 1:规则法 取generalInfo、detailInfo 2:其他算法 取value(arima预测) 3:待补充 */ @ApiModelProperty(value = "回调类型 1:规则法 取generalInfo、detailInfo 2:其他算法 取value(arima预测) 3:待补充") private Integer callbackType; /** * 类型 */ @ApiModelProperty(value = "类型") private Integer type; /** * 测点id */ @ApiModelProperty(value = "测点id") private String stationId; } skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/vo/ArimaPredictVO.java
@@ -6,4 +6,6 @@ @Data public class ArimaPredictVO extends ArimaPredict { private String cdNm; private String value; } skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/mapper/ArimaPredictMapper.java
@@ -15,4 +15,19 @@ List<ArimaPredict> selectTodayData(@Param("entity") ArimaPredict entity); /** * 查询预测数据 * @param resCd * @param type * @return */ List<ArimaPredictVO> getFutureData2(@Param("resCd") String resCd, @Param("type") String type); /** * 位移预测数据查询 * @param resCd * @param type * @return */ List<ArimaPredictVO> getFutureDataWy2(@Param("resCd") String resCd, @Param("type") String type); } skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/mapper/ArimaPredictMapper.xml
@@ -4,10 +4,9 @@ <select id="getFutureData" resultType="cn.gistack.nky.vo.ArimaPredictVO"> SELECT NAP.*, acb."cd_nm" cdNm FROM NKY_ARIMA_PREDICT NAP LEFT JOIN SJZT_MD."att_cd_base" acb ON acb."res_cd" = NAP.DAM_ID AND NAP.POINT_ID = acb."cd" WHERE DATE_FORMAT(create_time,'%Y-%m-%d')>= CURDATE() WHERE 1=1 <if test="resCd != null and resCd !='' "> AND NAP.DAM_ID = #{resCd} </if> @@ -61,4 +60,56 @@ AND type = #{entity.type} </if> </select> <!--查询预测数据--> <select id="getFutureData2" resultType="cn.gistack.nky.vo.ArimaPredictVO"> select NAP.id, NAP.STATION_ID AS POINT_ID, NAP.RES_GUID AS DAM_ID, NAP.CREATE_TIME, NAP.VALUE, acb."cd_nm" as cdNm from ywxt.NKY_DAM_AlARM_RECORD NAP left join SJZT_MD."att_cd_base" acb on acb."res_cd" = NAP.RES_GUID and NAP.STATION_ID = acb."cd" where DATE_FORMAT(create_time, '%Y-%m-%d') >= CURDATE() <if test="resCd != null and resCd !='' "> AND NAP.RES_GUID = #{resCd} </if> <if test="type != null and type !='' and type == 1 "> AND NAP.type = #{type} </if> <if test="type != null and type !='' and type == 2"> AND NAP.type = #{type} </if> <if test="type != null and type !='' and type == 3"> AND (NAP.type = '3' or NAP.type = '4' or NAP.type = '5') </if> ORDER BY NAP.STATION_ID ASC </select> <!--位移预测数据查询--> <select id="getFutureDataWy2" resultType="cn.gistack.nky.vo.ArimaPredictVO"> SELECT NAP.id, NAP.STATION_ID AS POINT_ID, NAP.RES_GUID AS DAM_ID, NAP.CREATE_TIME, NAP.VALUE, awcb."cd_nm" cdNm FROM NKY_DAM_AlARM_RECORD NAP LEFT JOIN SJZT_MD."att_wy_cd_base" awcb ON awcb."res_cd" = NAP.RES_GUID and awcb."cd" = NAP.STATION_ID WHERE DATE_FORMAT(create_time,'%Y-%m-%d')>= CURDATE() <if test="resCd != null and resCd !='' "> AND NAP.RES_GUID = #{resCd} </if> <if test="type != null and type !='' and type == 1 "> AND NAP.type = #{type} </if> <if test="type != null and type !='' and type == 2"> AND NAP.type = #{type} </if> <if test="type != null and type !='' and type == 3"> AND (NAP.type = '3' or NAP.type = '4' or NAP.type = '5') </if> ORDER BY NAP.STATION_ID ASC </select> </mapper> skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/ArimaPredictServiceImpl.java
@@ -11,8 +11,10 @@ import cn.gistack.nky.service.IZtApiService; import cn.gistack.nky.vo.ArimaPredictVO; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.AllArgsConstructor; import org.apache.logging.log4j.util.Strings; import org.springblade.core.mp.support.Condition; import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.ObjectUtil; @@ -84,13 +86,18 @@ List<ArimaPredictVO> futureData = new ArrayList<>(); if (type.equals("3")){ //位移另一张表 futureData=baseMapper.getFutureDataWy(resCd,type); // futureData=baseMapper.getFutureDataWy(resCd,type); futureData=baseMapper.getFutureDataWy2(resCd,type); }else{ futureData = baseMapper.getFutureData(resCd, type); // futureData = baseMapper.getFutureData(resCd, type); futureData = baseMapper.getFutureData2(resCd, type); } futureData.forEach(arimaPredict -> { arimaPredict.setPredicts(JSON.parse(arimaPredict.getPredicts().toString())); // arimaPredict.setValue(JSON.parse(arimaPredict.getValue()).toString()); if (!Strings.isBlank(arimaPredict.getValue())) { arimaPredict.setPredicts(JSON.parse(arimaPredict.getValue())); } }); return futureData; } skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/OpenApiServiceImpl.java
@@ -118,6 +118,7 @@ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"); String oneHour = oneHourAgo.format(formatter) + ":00"; String nowHour = now.format(formatter) + ":00"; // 调用中台接口获取实时测点数据 JSONArray ztData = getZtData("", ZtConfigConstant.url_prefix + DamEnum.ofType(type).getApiUrl() + "?start_tm=" + oneHour + "&end_tm=" + nowHour + ""); @@ -276,6 +277,7 @@ * @return */ public JSONArray getZtData(String params, String url) { log.info("实时测点请求中台接口:{}",url); //设置请求头 HttpHeaders headers = new HttpHeaders(); headers.add(ZtConfigConstant.header_key, ZtConfigConstant.header_value); @@ -289,6 +291,7 @@ formEntity, String.class); JSONObject jsonObject = JSON.parseObject(responseEntity.getBody()); log.info("实时测点请求中台接口结果数据:{}",jsonObject); // 返回 return JSONArray.parseArray(jsonObject.get("data").toString()); } catch (Exception e) { @@ -312,18 +315,28 @@ for (int i = 0; i < dataJsonArray.size(); i++) { DamAlarmRecord damAlarmRecord = new DamAlarmRecord(); JSONObject alarmRecordJSONObject = dataJsonArray.getJSONObject(i); damAlarmRecord.setPointId(alarmRecordJSONObject.getString("pointId")); // 设置测点信息,类型、测点编号 setPointInfo(damAlarmRecord,alarmRecordJSONObject.getString("pointId")); // 设置其他信息 damAlarmRecord.setResGuid(alarmRecordJSONObject.getString("RS_CODE")); damAlarmRecord.setCollecTime(alarmRecordJSONObject.getDate("collecTime")); damAlarmRecord.setPointValue(alarmRecordJSONObject.getString("ponitValue")); damAlarmRecord.setValue(alarmRecordJSONObject.getString("value")); JSONObject generalInfo = alarmRecordJSONObject.getJSONObject("generalInfo"); damAlarmRecord.setPointWarnLevel(generalInfo.getInteger("pointWarnLevel")); damAlarmRecord.setPointWarnInfo(generalInfo.getString("pointWarnInfo")); damAlarmRecord.setCreateTime(new Date()); // 保存 // 获取回调类型:1:告警规则法 2: 预测法 3:待补充 Integer callbackType = alarmRecordJSONObject.getInteger("callbackType"); damAlarmRecord.setCallbackType(callbackType); if (callbackType==1){ JSONObject generalInfo = alarmRecordJSONObject.getJSONObject("generalInfo"); damAlarmRecord.setPointWarnLevel(generalInfo.getInteger("pointWarnLevel")); damAlarmRecord.setPointWarnInfo(generalInfo.getString("pointWarnInfo")); } if (callbackType==2){ damAlarmRecord.setValue(alarmRecordJSONObject.getString("value")); damAlarmRecord.setTimeValue(alarmRecordJSONObject.getString("timeValue")); } // 保存详情,预测没有详情 flag = damAlarmRecordService.save(damAlarmRecord); if (flag){ if (callbackType==1 && flag){ flag = saveDamAlarmRecordDetail(alarmRecordJSONObject.getJSONArray("detailInfo"),damAlarmRecord); } } @@ -331,6 +344,32 @@ } /** * 设置测点信息 * @param pointId */ private void setPointInfo(DamAlarmRecord damAlarmRecord,String pointId) { damAlarmRecord.setPointId(pointId); // 测点值解析赋值 String[] point = pointId.split("_"); // 渗压、渗流 if (point.length==3) { // 设置测点id damAlarmRecord.setStationId(point[1]); String typeName = point[2]; // 设置 大坝安全监测类型 damAlarmRecord.setType(Integer.parseInt(DamEnum.ofName(typeName).getKey())); } // 位移 if (point.length==4) { // 设置测点id damAlarmRecord.setStationId(point[1]); String typeName = point[2] + "_" + point[3]; // 设置 大坝安全监测类型 damAlarmRecord.setType(Integer.parseInt(DamEnum.ofName(typeName).getKey())); } } /** * 详情 * @param detailInfo * @param damAlarmRecord