zhongrj
2024-12-16 5831d6357e0976c03b7f2260ca4e9eb04bdb2be2
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/ArimaPredictServiceImpl.java
@@ -1,5 +1,6 @@
package cn.gistack.nky.service.impl;
import cn.gistack.common.utils.CommonUtil;
import cn.gistack.nky.entity.ArimaPredict;
import cn.gistack.nky.mapper.ArimaPredictMapper;
import cn.gistack.nky.requestpojo.ArimaPredictReqPo;
@@ -8,15 +9,21 @@
import cn.gistack.nky.service.IArimaPredictService;
import cn.gistack.nky.service.INkyService;
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 com.mysql.cj.util.StringUtils;
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;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@Service
@AllArgsConstructor
@@ -42,11 +49,57 @@
   @Override
   public void predictData(String type) {
      List<DataResChildrenPo> cdList = getCdList(type);
      cdList.forEach(dataResChildrenPo -> {
         ArimaPredictReqPo arimaPredictReqPo = new ArimaPredictReqPo(dataResChildrenPo, type);
         //循环预测请求
         nkyService.arimaPredict(arimaPredictReqPo);
      if (type.equals("1")){
         //渗压
            cdList.forEach(dataResChildrenPo -> {
               ArimaPredictReqPo arimaPredictReqPo = new ArimaPredictReqPo(dataResChildrenPo, type);
               //循环预测请求
               nkyService.arimaPredict(arimaPredictReqPo);
            });
      }else if (type.equals("2")){
         //渗流
         cdList.forEach(dataResChildrenPo -> {
            ArimaPredictReqPo arimaPredictReqPo = new ArimaPredictReqPo(dataResChildrenPo, type);
            //循环预测请求
            nkyService.arimaPredict(arimaPredictReqPo);
         });
      }else if (type.equals("3") || type.equals("4") || type.equals("5")){
         cdList.forEach(dataResChildrenPo -> {
            //循环预测请求
            ArimaPredictReqPo arimaPredictReqPoX = new ArimaPredictReqPo(dataResChildrenPo, "3");
            nkyService.arimaPredict(arimaPredictReqPoX);
            ArimaPredictReqPo arimaPredictReqPoY = new ArimaPredictReqPo(dataResChildrenPo, "4");
            nkyService.arimaPredict(arimaPredictReqPoY);
            ArimaPredictReqPo arimaPredictReqPoZ = new ArimaPredictReqPo(dataResChildrenPo, "5");
            nkyService.arimaPredict(arimaPredictReqPoZ);
         });
      }
   }
   @Override
   public List<ArimaPredictVO> getFutureData(String resCd, String type) {
      List<ArimaPredictVO> futureData = new ArrayList<>();
      if (type.equals("3")){
         //位移另一张表
//         futureData=baseMapper.getFutureDataWy(resCd,type);
         futureData=baseMapper.getFutureDataWy2(resCd,type);
      }else{
//          futureData = baseMapper.getFutureData(resCd, type);
          futureData = baseMapper.getFutureData2(resCd, type);
      }
      futureData.forEach(arimaPredict -> {
//         arimaPredict.setValue(JSON.parse(arimaPredict.getValue()).toString());
         if (!Strings.isBlank(arimaPredict.getValue())) {
            arimaPredict.setPredicts(JSON.parse(arimaPredict.getValue()));
         }
      });
      return futureData;
   }
   @Override
@@ -56,17 +109,13 @@
         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));
      List<ArimaPredict> list = baseMapper.selectTodayData(entity);
      if (list.size()>0){
         return false;
         //删除该数据,添加最新数据
//         baseMapper.deleteById(list.get(0));
//         return super.save(entity);
            return false;
      }else {
         return super.save(entity);
      }
@@ -79,13 +128,35 @@
         cdList = ztApiService.getSy();
      }else if (type.equals("2")){
         //获取渗流测点
         return null;
         cdList = ztApiService.getSl();
      }else if (type.equals("3") || type.equals("4") || type.equals("5")){
         //获取位移测点
         cdList = ztApiService.getWy();
      }else {
         return null;
      }
      return cdList;
      List<DataResChildrenPo> filterList = filterTimeList(cdList, 24);
      return filterList;
   }
   /**
    * 筛选时间内的集合
    * @param sourceList
    * @param timeGap
    * @return
    */
   public List<DataResChildrenPo> filterTimeList(List<DataResChildrenPo> sourceList,Integer timeGap){
      //当前时间的时间戳
      Long todayTimeStamp = DateUtil.now().getTime();
      //过去时间的时间戳
      Long beforeTimeStamp = todayTimeStamp - 1000*60*60*timeGap;
      //过去时间的日期
      Date beforeDate = new Date(beforeTimeStamp);
      List<DataResChildrenPo> collect = sourceList.stream().filter(item -> CommonUtil.strToDate(item.getTm()).after(beforeDate)).collect(Collectors.toList());
      return collect;
   }
}