ke
2024-12-20 1b316e12ad2694a77f1ea45f3214fcfb90c45393
Merge remote-tracking branch 'origin/jtdev' into jtdev
6 files modified
165 ■■■■■ changed files
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/entity/DamAlarmRecord.java 27 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-nky-api/src/main/java/cn/gistack/nky/vo/ArimaPredictVO.java 2 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/mapper/ArimaPredictMapper.java 15 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/mapper/ArimaPredictMapper.xml 55 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/ArimaPredictServiceImpl.java 13 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/OpenApiServiceImpl.java 53 ●●●● patch | view | raw | blame | history
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