|
@@ -3,7 +3,7 @@ package com.jiayue.ipfcst.console.service;
|
|
|
|
|
|
import com.jiayue.ipfcst.common.core.util.CommonUtil;
|
|
|
import com.jiayue.ipfcst.common.core.util.DateMomentUtil;
|
|
|
-import com.jiayue.ipfcst.common.data.constant.enums.AlarmTypeEnum;
|
|
|
+import com.jiayue.ipfcst.common.data.entity.ElectricField;
|
|
|
import com.jiayue.ipfcst.common.data.entity.Nwp;
|
|
|
import com.jiayue.ipfcst.common.data.entity.NwpHis;
|
|
|
import com.jiayue.ipfcst.common.data.repository.NwpHisRepository;
|
|
@@ -14,11 +14,18 @@ import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang.time.DateFormatUtils;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.data.domain.Page;
|
|
|
+import org.springframework.data.domain.PageRequest;
|
|
|
+import org.springframework.data.domain.Pageable;
|
|
|
+import org.springframework.data.domain.Sort;
|
|
|
+import org.springframework.data.jpa.domain.Specification;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Propagation;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import javax.persistence.criteria.Predicate;
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -26,169 +33,498 @@ import java.util.stream.Collectors;
|
|
|
@Slf4j
|
|
|
public class NwpService extends BaseService {
|
|
|
|
|
|
- @Autowired
|
|
|
- NwpRepository nwpRepository;
|
|
|
- @Autowired
|
|
|
- NwpHisRepository nwpHisRepository;
|
|
|
+ @Autowired
|
|
|
+ NwpRepository nwpRepository;
|
|
|
+ @Autowired
|
|
|
+ NwpHisRepository nwpHisRepository;
|
|
|
+ @Autowired
|
|
|
+ ElectricFieldService electricFieldService;
|
|
|
|
|
|
+ /**
|
|
|
+ * 保存全部
|
|
|
+ *
|
|
|
+ * @param listNwp
|
|
|
+ */
|
|
|
+ public void saveAll(List<Nwp> listNwp) {
|
|
|
+ nwpRepository.saveAll(listNwp);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据时间段删除数据
|
|
|
+ *
|
|
|
+ * @param startTime
|
|
|
+ * @param endTime
|
|
|
+ * @param listNwp
|
|
|
+ */
|
|
|
+ @Transactional(propagation = Propagation.REQUIRED)
|
|
|
+ public void deleteBetweenAndPreTime(Long startTime, Long endTime, List<Nwp> listNwp, String stationCode) {
|
|
|
+ nwpRepository.deleteByPreTimeBetweenAndStationCode(startTime, endTime, stationCode);
|
|
|
+ nwpRepository.saveAll(listNwp);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询NWP数据,当查询结果不足时,需要本地化生成NWP数据并保存到数据库中,用于NWP数据上报时使用
|
|
|
+ *
|
|
|
+ * @param startTime 开始时间
|
|
|
+ * @param endTime 结束时间
|
|
|
+ * @return NWP数据结果集
|
|
|
+ */
|
|
|
+ @Transactional(propagation = Propagation.REQUIRED)
|
|
|
+ public List<Nwp> getNwpData(@NotNull final Long startTime, @NotNull final Long endTime) {
|
|
|
+ log.info("开始获取NWP数据" + DateFormatUtils.format(startTime, "yyyy-MM-dd HH:mm:ss") + " 至 " + DateFormatUtils.format(endTime, "yyyy-MM-dd HH:mm:ss"));
|
|
|
+ // 查询NWP数据
|
|
|
+ List<Nwp> nwpDataList = this.nwpRepository.findByPreTimeBetween(startTime, endTime);
|
|
|
+ nwpDataList.sort(Comparator.comparing(Nwp::getPreTime));// 按预测时间升序
|
|
|
+ log.info("查询现有NWP数据记录数:" + nwpDataList.size());
|
|
|
+ // 判断查询结果是否满足查询所需
|
|
|
+ Long momentTime = 15 * 60 * 1000L; // 15分钟一个时刻
|
|
|
+ Integer moments = Math.toIntExact((endTime - startTime) / momentTime + 1);
|
|
|
+ log.info("获取所需记录数:" + moments);
|
|
|
+ if (moments > nwpDataList.size()) {
|
|
|
+ // 如果查询结果少于所需预测数,则进行本地化计算,补齐预测记录
|
|
|
+ Map<Long, List<Nwp>> nwpDataMap = nwpDataList.stream().collect(Collectors.groupingBy(Nwp::getPreTime));
|
|
|
+ // 如果查询结果少于所需预测数,则进行本地化计算,补齐预测记录
|
|
|
+ List<Nwp> addNwpDataList = new ArrayList<>();
|
|
|
+ for (Long tempTime = startTime; tempTime <= endTime; tempTime = tempTime + momentTime) {
|
|
|
+ if (nwpDataMap.get(tempTime) == null) {
|
|
|
+ // 缺失时间点
|
|
|
+ List<Nwp> _nwpDataList = this.generateNwpData(tempTime);
|
|
|
+ addNwpDataList.addAll(_nwpDataList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!addNwpDataList.isEmpty()) {
|
|
|
+ this.nwpRepository.saveAll(addNwpDataList);
|
|
|
+ // 将补齐的NWP数据追加到查询结果集中
|
|
|
+ nwpDataList.addAll(addNwpDataList);
|
|
|
+ // 进行告警
|
|
|
+ String errorInfo = "NWP数据不足";
|
|
|
+ log.error(errorInfo);
|
|
|
+ // 进行告警
|
|
|
+ String name = "NWP数据不足";
|
|
|
+ String describe = "";
|
|
|
+ String solution = "请检查NWP数据下载软件";
|
|
|
+ //super.saveSysAlarm(AlarmTypeEnum.E1, name, describe, errorInfo, solution);
|
|
|
+ }
|
|
|
|
|
|
- /**
|
|
|
- * 保存全部
|
|
|
- *
|
|
|
- * @param listNwp
|
|
|
- */
|
|
|
- public void saveAll(List<Nwp> listNwp) {
|
|
|
- nwpRepository.saveAll(listNwp);
|
|
|
}
|
|
|
+ // 处理NWP历史数据记录
|
|
|
+ List<NwpHis> nwpDataHiss = new ArrayList<>();
|
|
|
+ NwpHis nwpHis;
|
|
|
+ Long systemTime = new Date().getTime();
|
|
|
|
|
|
- /**
|
|
|
- * 根据时间段删除数据
|
|
|
- *
|
|
|
- * @param startTime
|
|
|
- * @param endTime
|
|
|
- * @param listNwp
|
|
|
- */
|
|
|
- @Transactional(propagation = Propagation.REQUIRED)
|
|
|
- public void deleteBetweenAndPreTime(Long startTime, Long endTime, List<Nwp> listNwp,String stationCode) {
|
|
|
- nwpRepository.deleteByPreTimeBetweenAndStationCode(startTime, endTime,stationCode);
|
|
|
- nwpRepository.saveAll(listNwp);
|
|
|
+ for (Nwp nwp : nwpDataList) {
|
|
|
+ nwpHis = new NwpHis();
|
|
|
+ BeanUtils.copyProperties(nwp, nwpHis);
|
|
|
+ // 设置提前几天预测
|
|
|
+ nwpHis.setForecastHowLongAgo(DateMomentUtil.getDaysBetweenTwoDate(systemTime, nwpHis.getPreTime()));
|
|
|
+ nwpDataHiss.add(nwpHis);
|
|
|
}
|
|
|
+ // 按预测时间升序
|
|
|
+ nwpDataHiss.sort(Comparator.comparing(NwpHis::getPreTime));
|
|
|
+ // 删除当日生成的短期历史记录
|
|
|
+ this.nwpHisRepository.deleteToday(startTime, endTime);
|
|
|
+ // 保存NWP历史记录
|
|
|
+ this.nwpHisRepository.saveAll(nwpDataHiss);
|
|
|
+ return nwpDataList;
|
|
|
+ }
|
|
|
|
|
|
- /**
|
|
|
- * 查询NWP数据,当查询结果不足时,需要本地化生成NWP数据并保存到数据库中,用于NWP数据上报时使用
|
|
|
- *
|
|
|
- * @param startTime 开始时间
|
|
|
- * @param endTime 结束时间
|
|
|
- * @return NWP数据结果集
|
|
|
- */
|
|
|
- @Transactional(propagation = Propagation.REQUIRED)
|
|
|
- public List<Nwp> getNwpData(@NotNull final Long startTime, @NotNull final Long endTime) {
|
|
|
- log.info("开始获取NWP数据" + DateFormatUtils.format(startTime, "yyyy-MM-dd HH:mm:ss") + " 至 " + DateFormatUtils.format(endTime, "yyyy-MM-dd HH:mm:ss"));
|
|
|
- // 查询NWP数据
|
|
|
- List<Nwp> nwpDataList = this.nwpRepository.findByPreTimeBetween(startTime, endTime);
|
|
|
- nwpDataList.sort(Comparator.comparing(Nwp::getPreTime));// 按预测时间升序
|
|
|
- log.info("查询现有NWP数据记录数:" + nwpDataList.size());
|
|
|
- // 判断查询结果是否满足查询所需
|
|
|
- Long momentTime = 15 * 60 * 1000L; // 15分钟一个时刻
|
|
|
- Integer moments = Math.toIntExact((endTime - startTime) / momentTime + 1);
|
|
|
- log.info("获取所需记录数:" + moments);
|
|
|
- if (moments > nwpDataList.size()) {
|
|
|
- // 如果查询结果少于所需预测数,则进行本地化计算,补齐预测记录
|
|
|
- Map<Long, List<Nwp>> nwpDataMap = nwpDataList.stream().collect(Collectors.groupingBy(Nwp::getPreTime));
|
|
|
- // 如果查询结果少于所需预测数,则进行本地化计算,补齐预测记录
|
|
|
- List<Nwp> addNwpDataList = new ArrayList<>();
|
|
|
- for (Long tempTime = startTime; tempTime <= endTime; tempTime = tempTime + momentTime) {
|
|
|
- if (nwpDataMap.get(tempTime) == null) {
|
|
|
- // 缺失时间点
|
|
|
- List<Nwp> _nwpDataList = this.generateNwpData(tempTime);
|
|
|
- addNwpDataList.addAll(_nwpDataList);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (!addNwpDataList.isEmpty()) {
|
|
|
- this.nwpRepository.saveAll(addNwpDataList);
|
|
|
- // 将补齐的NWP数据追加到查询结果集中
|
|
|
- nwpDataList.addAll(addNwpDataList);
|
|
|
- // 进行告警
|
|
|
- String errorInfo = "NWP数据不足";
|
|
|
- log.error(errorInfo);
|
|
|
- // 进行告警
|
|
|
- String name = "NWP数据不足";
|
|
|
- String describe = "";
|
|
|
- String solution = "请检查NWP数据下载软件";
|
|
|
- //super.saveSysAlarm(AlarmTypeEnum.E1, name, describe, errorInfo, solution);
|
|
|
- }
|
|
|
+ /**
|
|
|
+ * 生成NWP数据,NWP数据为云下载数据,这里不进行覆盖更新,只针对NWP数据不足时补充
|
|
|
+ *
|
|
|
+ * @param startTime 开始时间
|
|
|
+ * @param endTime 结束时间
|
|
|
+ */
|
|
|
+ @Transactional(propagation = Propagation.REQUIRED)
|
|
|
+ public void buildNwpData(@NotNull final Long startTime, @NotNull final Long endTime) {
|
|
|
+ this.getNwpData(startTime, endTime);
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
- // 处理NWP历史数据记录
|
|
|
- List<NwpHis> nwpDataHiss = new ArrayList<>();
|
|
|
- NwpHis nwpHis;
|
|
|
- Long systemTime = new Date().getTime();
|
|
|
-
|
|
|
- for (Nwp nwp : nwpDataList) {
|
|
|
- nwpHis = new NwpHis();
|
|
|
- BeanUtils.copyProperties(nwp, nwpHis);
|
|
|
- // 设置提前几天预测
|
|
|
- nwpHis.setForecastHowLongAgo(DateMomentUtil.getDaysBetweenTwoDate(systemTime, nwpHis.getPreTime()));
|
|
|
- nwpDataHiss.add(nwpHis);
|
|
|
- }
|
|
|
- // 按预测时间升序
|
|
|
- nwpDataHiss.sort(Comparator.comparing(NwpHis::getPreTime));
|
|
|
- // 删除当日生成的短期历史记录
|
|
|
- this.nwpHisRepository.deleteToday(startTime, endTime);
|
|
|
- // 保存NWP历史记录
|
|
|
- this.nwpHisRepository.saveAll(nwpDataHiss);
|
|
|
- return nwpDataList;
|
|
|
+ /**
|
|
|
+ * 生成NWP数据
|
|
|
+ *
|
|
|
+ * @return nwp数据集
|
|
|
+ */
|
|
|
+ @Transactional(propagation = Propagation.REQUIRED)
|
|
|
+ private List<Nwp> generateNwpData(@NotNull final Long tempTime) {
|
|
|
+
|
|
|
+ List<Nwp> nwpDataList;
|
|
|
+
|
|
|
+ // 使用历史NWP数据生成NWP数据
|
|
|
+ List<Nwp> result = new ArrayList<>();
|
|
|
+ // 查询前一天同时刻NWP数据
|
|
|
+ nwpDataList = this.nwpRepository.findByPreTimeBetween(tempTime - 24 * 60 * 60 * 1000L, tempTime - 24 * 50 * 60 * 1000L);
|
|
|
+ if (nwpDataList.size() > 0) {
|
|
|
+ Nwp nwp = new Nwp();
|
|
|
+ BeanUtils.copyProperties(nwpDataList.get(0), nwp, "id");
|
|
|
+ nwp.setPreTime(tempTime);
|
|
|
+ nwp.setPreDate(DateFormatUtils.format(tempTime, "yyyy-MM-dd"));
|
|
|
+ result.add(nwp);
|
|
|
+ } else {// 如果未查询到前一天数据,则随机生成NWP数据
|
|
|
+ result.add(this.createNwpData(tempTime));
|
|
|
}
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ private Nwp createNwpData(Long preTime) {
|
|
|
+ Long systemTime = System.currentTimeMillis();
|
|
|
+ Nwp nwpData = new Nwp();
|
|
|
+ nwpData.setFarmId("1");
|
|
|
+ nwpData.setScDate(DateFormatUtils.format(systemTime, "yyyy-MM-dd"));
|
|
|
+ nwpData.setScTime(DateFormatUtils.format(systemTime, "HH:mm:ss"));
|
|
|
+ nwpData.setPreTime(preTime);
|
|
|
+ nwpData.setPreDate(DateFormatUtils.format(preTime, "yyyy-MM-dd"));
|
|
|
+ nwpData.setPressure(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2, BigDecimal.ROUND_UP));
|
|
|
+ nwpData.setT(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2, BigDecimal.ROUND_UP));
|
|
|
+ nwpData.setRh(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2, BigDecimal.ROUND_UP));
|
|
|
+ nwpData.setSenf(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2, BigDecimal.ROUND_UP));
|
|
|
+ nwpData.setSwr(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2, BigDecimal.ROUND_UP));
|
|
|
+ nwpData.setLwr(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2, BigDecimal.ROUND_UP));
|
|
|
+
|
|
|
+ nwpData.setWd10(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2, BigDecimal.ROUND_UP));
|
|
|
+ nwpData.setWd30(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2, BigDecimal.ROUND_UP));
|
|
|
+ nwpData.setWd50(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2, BigDecimal.ROUND_UP));
|
|
|
+ nwpData.setWd70(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2, BigDecimal.ROUND_UP));
|
|
|
+ nwpData.setWd80(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2, BigDecimal.ROUND_UP));
|
|
|
+ nwpData.setWd90(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2, BigDecimal.ROUND_UP));
|
|
|
+ nwpData.setWd100(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2, BigDecimal.ROUND_UP));
|
|
|
+ nwpData.setWd170(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2, BigDecimal.ROUND_UP));
|
|
|
+ nwpData.setWs10(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2, BigDecimal.ROUND_UP));
|
|
|
+ nwpData.setWs30(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2, BigDecimal.ROUND_UP));
|
|
|
+ nwpData.setWs50(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2, BigDecimal.ROUND_UP));
|
|
|
+ nwpData.setWs70(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2, BigDecimal.ROUND_UP));
|
|
|
+ nwpData.setWs80(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2, BigDecimal.ROUND_UP));
|
|
|
+ nwpData.setWs90(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2, BigDecimal.ROUND_UP));
|
|
|
+ nwpData.setWs100(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2, BigDecimal.ROUND_UP));
|
|
|
+ nwpData.setWs170(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2, BigDecimal.ROUND_UP));
|
|
|
+ return nwpData;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
- /**
|
|
|
- * 生成NWP数据,NWP数据为云下载数据,这里不进行覆盖更新,只针对NWP数据不足时补充
|
|
|
- *
|
|
|
- * @param startTime 开始时间
|
|
|
- * @param endTime 结束时间
|
|
|
- */
|
|
|
- @Transactional(propagation = Propagation.REQUIRED)
|
|
|
- public void buildNwpData(@NotNull final Long startTime, @NotNull final Long endTime) {
|
|
|
- this.getNwpData(startTime, endTime);
|
|
|
+ /**
|
|
|
+ * 按时间查询实时NWP yh
|
|
|
+ *
|
|
|
+ * @param startTime 开始时间
|
|
|
+ * @param endTime 结束时间
|
|
|
+ * @return 结果集
|
|
|
+ */
|
|
|
+ @Transactional(propagation = Propagation.NOT_SUPPORTED, readOnly = true)
|
|
|
+ public Map<String, Object> findByForecastTimeBetween(Long startTime, Long endTime, String stationCode) {
|
|
|
+
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ List<Nwp> checkList = new ArrayList<>();
|
|
|
+ Map<String, Object> datas = new LinkedHashMap<>();
|
|
|
+ List<Nwp> list = nwpRepository.findByPreTimeBetweenAndStationCode(startTime, endTime, stationCode);
|
|
|
+ list.sort(Comparator.comparing(Nwp::getPreTime));
|
|
|
+
|
|
|
+ long startTimeLong = startTime;
|
|
|
+ long endTimeLong = endTime;
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ long timeStep = 900000L;
|
|
|
+ if (startTimeLong % timeStep != 0) {
|
|
|
+ startTimeLong = startTimeLong - (startTimeLong % timeStep);
|
|
|
}
|
|
|
+ List<String> times = new ArrayList<>();
|
|
|
|
|
|
- /**
|
|
|
- * 生成NWP数据
|
|
|
- *
|
|
|
- * @return nwp数据集
|
|
|
- */
|
|
|
- @Transactional(propagation = Propagation.REQUIRED)
|
|
|
- private List<Nwp> generateNwpData(@NotNull final Long tempTime) {
|
|
|
-
|
|
|
- List<Nwp> nwpDataList;
|
|
|
-
|
|
|
- // 使用历史NWP数据生成NWP数据
|
|
|
- List<Nwp> result = new ArrayList<>();
|
|
|
- // 查询前一天同时刻NWP数据
|
|
|
- nwpDataList = this.nwpRepository.findByPreTimeBetween(tempTime - 24 * 60 * 60 * 1000L, tempTime - 24 * 50 * 60 * 1000L);
|
|
|
- if (nwpDataList.size() > 0) {
|
|
|
- Nwp nwp = new Nwp();
|
|
|
- BeanUtils.copyProperties(nwpDataList.get(0), nwp, "id");
|
|
|
- nwp.setPreTime(tempTime);
|
|
|
- nwp.setPreDate(DateFormatUtils.format(tempTime, "yyyy-MM-dd"));
|
|
|
- result.add(nwp);
|
|
|
- } else {// 如果未查询到前一天数据,则随机生成NWP数据
|
|
|
- result.add(this.createNwpData(tempTime));
|
|
|
- }
|
|
|
- return result;
|
|
|
+ for (long i = startTimeLong; i < endTimeLong; i = i + timeStep) {
|
|
|
+ long finalI = i;
|
|
|
+ List<Nwp> p = list.stream().filter(t -> t.getPreTime() == finalI).collect(Collectors.toList());
|
|
|
+ if (p != null && p.size() > 0) {
|
|
|
+ checkList.add(p.get(0));
|
|
|
+ } else {
|
|
|
+ checkList.add(new Nwp());
|
|
|
+ }
|
|
|
+ String timeFormat = sdf.format(new Date(i));
|
|
|
+ times.add(timeFormat);
|
|
|
}
|
|
|
+ defaultReplace(checkList);//对集合进行 -99替换null操作,主要用于图标展示空值
|
|
|
+ ElectricField electricFieldInfo = electricFieldService.getSingleStation(stationCode);
|
|
|
|
|
|
- private Nwp createNwpData(Long preTime) {
|
|
|
- Long systemTime = System.currentTimeMillis();
|
|
|
- Nwp nwpData = new Nwp();
|
|
|
- nwpData.setFarmId("1");
|
|
|
- nwpData.setScDate(DateFormatUtils.format(systemTime, "yyyy-MM-dd"));
|
|
|
- nwpData.setScTime(DateFormatUtils.format(systemTime, "HH:mm:ss"));
|
|
|
- nwpData.setPreTime(preTime);
|
|
|
- nwpData.setPreDate(DateFormatUtils.format(preTime, "yyyy-MM-dd"));
|
|
|
- nwpData.setPressure(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2,BigDecimal.ROUND_UP));
|
|
|
- nwpData.setT(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2,BigDecimal.ROUND_UP));
|
|
|
- nwpData.setRh(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2,BigDecimal.ROUND_UP));
|
|
|
- nwpData.setSenf(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2,BigDecimal.ROUND_UP));
|
|
|
- nwpData.setSwr(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2,BigDecimal.ROUND_UP));
|
|
|
- nwpData.setLwr(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2,BigDecimal.ROUND_UP));
|
|
|
-
|
|
|
- nwpData.setWd10(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2,BigDecimal.ROUND_UP));
|
|
|
- nwpData.setWd30(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2,BigDecimal.ROUND_UP));
|
|
|
- nwpData.setWd50(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2,BigDecimal.ROUND_UP));
|
|
|
- nwpData.setWd70(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2,BigDecimal.ROUND_UP));
|
|
|
- nwpData.setWd80(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2,BigDecimal.ROUND_UP));
|
|
|
- nwpData.setWd90(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2,BigDecimal.ROUND_UP));
|
|
|
- nwpData.setWd100(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2,BigDecimal.ROUND_UP));
|
|
|
- nwpData.setWd170(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2,BigDecimal.ROUND_UP));
|
|
|
- nwpData.setWs10(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2,BigDecimal.ROUND_UP));
|
|
|
- nwpData.setWs30(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2,BigDecimal.ROUND_UP));
|
|
|
- nwpData.setWs50(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2,BigDecimal.ROUND_UP));
|
|
|
- nwpData.setWs70(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2,BigDecimal.ROUND_UP));
|
|
|
- nwpData.setWs80(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2,BigDecimal.ROUND_UP));
|
|
|
- nwpData.setWs90(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2,BigDecimal.ROUND_UP));
|
|
|
- nwpData.setWs100(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2,BigDecimal.ROUND_UP));
|
|
|
- nwpData.setWs170(new BigDecimal(CommonUtil.getRandom(1, 5000) / 10.0).setScale(2,BigDecimal.ROUND_UP));
|
|
|
- return nwpData;
|
|
|
+ if (electricFieldInfo.getElectricFieldTypeEnum().getCode() == 1) {
|
|
|
+ List<BigDecimal> swrCollect = checkList.stream().map(Nwp::getSwr).collect(Collectors.toList());
|
|
|
+ List<BigDecimal> diffuseRadiationCollect = checkList.stream().map(Nwp::getDiffuseRadiation).collect(Collectors.toList());
|
|
|
+ List<BigDecimal> directRadiationCollect = checkList.stream().map(Nwp::getDirectRadiation).collect(Collectors.toList());
|
|
|
+ datas.put("swr", swrCollect);
|
|
|
+ datas.put("diffuseRadiation", diffuseRadiationCollect);
|
|
|
+ datas.put("directRadiation", directRadiationCollect);
|
|
|
+ map.put("stationType", "1");
|
|
|
+ } else {
|
|
|
+ List<BigDecimal> ws10Collect = checkList.stream().map(Nwp::getWs10).collect(Collectors.toList());
|
|
|
+ List<BigDecimal> ws30Collect = checkList.stream().map(Nwp::getWs30).collect(Collectors.toList());
|
|
|
+ List<BigDecimal> ws50Collect = checkList.stream().map(Nwp::getWs50).collect(Collectors.toList());
|
|
|
+ List<BigDecimal> ws70Collect = checkList.stream().map(Nwp::getWs70).collect(Collectors.toList());
|
|
|
+ List<BigDecimal> ws80Collect = checkList.stream().map(Nwp::getWs80).collect(Collectors.toList());
|
|
|
+ List<BigDecimal> ws90Collect = checkList.stream().map(Nwp::getWs90).collect(Collectors.toList());
|
|
|
+ List<BigDecimal> ws100Collect = checkList.stream().map(Nwp::getWs100).collect(Collectors.toList());
|
|
|
+ List<BigDecimal> ws170Collect = checkList.stream().map(Nwp::getWs170).collect(Collectors.toList());
|
|
|
+ datas.put("ws10", ws10Collect);
|
|
|
+ datas.put("ws30", ws30Collect);
|
|
|
+ datas.put("ws50", ws50Collect);
|
|
|
+ datas.put("ws70", ws70Collect);
|
|
|
+ datas.put("ws80", ws80Collect);
|
|
|
+ datas.put("ws90", ws90Collect);
|
|
|
+ datas.put("ws100", ws100Collect);
|
|
|
+ datas.put("ws170", ws170Collect);
|
|
|
+ Map<String, String> map1 = new HashMap<>();
|
|
|
+ map1.put("ws10", "10米风速");
|
|
|
+ map1.put("ws30", "30米风速");
|
|
|
+ map1.put("ws50", "50米风速");
|
|
|
+ map1.put("ws70", "70米风速");
|
|
|
+ map1.put("ws80", "80米风速");
|
|
|
+ map1.put("ws90", "90米风速");
|
|
|
+ map1.put("ws100", "100米风速");
|
|
|
+ map1.put("ws170", "170米风速");
|
|
|
+ map.put("cName", map1);
|
|
|
+ map.put("stationType", "0");
|
|
|
}
|
|
|
+
|
|
|
+ map.put("times", times);
|
|
|
+ map.put("datas", datas);
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 对集合进行 -99替换null操作,主要用于图标展示空值
|
|
|
+ *
|
|
|
+ * @param datas 需要替换集合
|
|
|
+ */
|
|
|
+ public void defaultReplace(List<Nwp> datas) {
|
|
|
+ BigDecimal nullBig = new BigDecimal(-99);
|
|
|
+ for (Nwp i : datas) {
|
|
|
+
|
|
|
+
|
|
|
+ if (i.getT().compareTo(nullBig) == 0) {
|
|
|
+ i.setT(null);
|
|
|
+ }
|
|
|
+ if (i.getRh().compareTo(nullBig) == 0) {
|
|
|
+ i.setRh(null);
|
|
|
+ }
|
|
|
+ if (i.getPressure().compareTo(nullBig) == 0) {
|
|
|
+ i.setPressure(null);
|
|
|
+ }
|
|
|
+ if (i.getSwr().compareTo(nullBig) == 0) {
|
|
|
+ i.setSwr(null);
|
|
|
+ }
|
|
|
+ if (i.getDirectRadiation().compareTo(nullBig) == 0) {
|
|
|
+ i.setDirectRadiation(null);
|
|
|
+ }
|
|
|
+ if (i.getDiffuseRadiation().compareTo(nullBig) == 0) {
|
|
|
+ i.setDiffuseRadiation(null);
|
|
|
+ }
|
|
|
+ if (i.getSenf().compareTo(nullBig) == 0) {
|
|
|
+ i.setSenf(null);
|
|
|
+ }
|
|
|
+ if (i.getWs10().compareTo(nullBig) == 0) {
|
|
|
+ i.setWs10(null);
|
|
|
+ }
|
|
|
+ if (i.getWs30().compareTo(nullBig) == 0) {
|
|
|
+ i.setWs30(null);
|
|
|
+ }
|
|
|
+ if (i.getWs50().compareTo(nullBig) == 0) {
|
|
|
+ i.setWs50(null);
|
|
|
+ }
|
|
|
+ if (i.getWs70().compareTo(nullBig) == 0) {
|
|
|
+ i.setWs70(null);
|
|
|
+ }
|
|
|
+ if (i.getWs80().compareTo(nullBig) == 0) {
|
|
|
+ i.setWs80(null);
|
|
|
+ }
|
|
|
+ if (i.getWs90().compareTo(nullBig) == 0) {
|
|
|
+ i.setWs90(null);
|
|
|
+ }
|
|
|
+ if (i.getWs100().compareTo(nullBig) == 0) {
|
|
|
+ i.setWs100(null);
|
|
|
+ }
|
|
|
+ if (i.getWs170().compareTo(nullBig) == 0) {
|
|
|
+ i.setWs170(null);
|
|
|
+ }
|
|
|
+ if (i.getWd10().compareTo(nullBig) == 0) {
|
|
|
+ i.setWd10(null);
|
|
|
+ }
|
|
|
+ if (i.getWd30().compareTo(nullBig) == 0) {
|
|
|
+ i.setWd30(null);
|
|
|
+ }
|
|
|
+ if (i.getWd50().compareTo(nullBig) == 0) {
|
|
|
+ i.setWd50(null);
|
|
|
+ }
|
|
|
+ if (i.getWd70().compareTo(nullBig) == 0) {
|
|
|
+ i.setWd70(null);
|
|
|
+ }
|
|
|
+ if (i.getWd80().compareTo(nullBig) == 0) {
|
|
|
+ i.setWd80(null);
|
|
|
+ }
|
|
|
+ if (i.getWd90().compareTo(nullBig) == 0) {
|
|
|
+ i.setWd90(null);
|
|
|
+ }
|
|
|
+ if (i.getWd100().compareTo(nullBig) == 0) {
|
|
|
+ i.setWd100(null);
|
|
|
+ }
|
|
|
+ if (i.getWd170().compareTo(nullBig) == 0) {
|
|
|
+ i.setWd170(null);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据时间和编号 分页查询条件 yh
|
|
|
+ *
|
|
|
+ * @param startTime 开始时间
|
|
|
+ * @param endTime 结束时间
|
|
|
+ * @return 过滤条件
|
|
|
+ */
|
|
|
+ public Specification<Nwp> specificationFindByTimeAndNo(final Long startTime, final Long endTime, String stationCode) {
|
|
|
+ return (Specification<Nwp>) (root, criteriaQuery, cb) -> {
|
|
|
+ List<Predicate> predicates = new ArrayList<>();
|
|
|
+ if (startTime != null) {
|
|
|
+ //大于或等于传入时间
|
|
|
+ predicates.add(cb.greaterThanOrEqualTo(root.get("preTime").as(Long.class), startTime));
|
|
|
+ }
|
|
|
+ if (endTime != null) {
|
|
|
+ //小于传入时间
|
|
|
+ predicates.add(cb.lessThan(root.get("preTime").as(Long.class), endTime));
|
|
|
+ }
|
|
|
+ predicates.add(cb.equal(root.get("stationCode").as(String.class), stationCode));
|
|
|
+ //添加排序的功能
|
|
|
+ return cb.and(predicates.toArray(new Predicate[predicates.size()]));
|
|
|
+
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ public Map<String, Object> findByTimeBetweenAndNoForPaging(Long startTime, Long endTime, String stationCode, Integer page, Integer size, String sortOrder) {
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ Sort sort = Sort.by(Sort.Direction.DESC, "preTime");
|
|
|
+ if (sortOrder.contains("asc")) {
|
|
|
+ sort = Sort.by(Sort.Direction.ASC, "preTime");
|
|
|
+ }
|
|
|
+ Specification<Nwp> specification = specificationFindByTimeAndNo(startTime, endTime, stationCode);
|
|
|
+ Pageable pageable = PageRequest.of(page - 1, size, sort);
|
|
|
+ Page nwps = nwpRepository.findAll(specification, pageable);
|
|
|
+ List<Nwp> datas = new ArrayList<>();
|
|
|
+ datas = nwps.getContent();
|
|
|
+ this.defaultReplace(datas);
|
|
|
+ map.put("content", datas);
|
|
|
+ map.put("count", nwps.getTotalElements());
|
|
|
+ Map<String, String> map1 = new HashMap<>();
|
|
|
+ map1.put("preTime", "预测时间");
|
|
|
+ map1.put("scTime", "生成时间");
|
|
|
+ map1.put("pressure", "气压");
|
|
|
+ map1.put("t", "温度");
|
|
|
+ map1.put("rh", "湿度");
|
|
|
+ map1.put("swr", "总辐射");
|
|
|
+ map1.put("directRadiation", "直辐射");
|
|
|
+ map1.put("diffuseRadiation", "散辐射");
|
|
|
+ map1.put("senf", "热感通量");
|
|
|
+ map1.put("ws10", "10米风速");
|
|
|
+ map1.put("ws30", "30米风速");
|
|
|
+ map1.put("ws50", "50米风速");
|
|
|
+ map1.put("ws70", "70米风速");
|
|
|
+ map1.put("ws80", "80米风速");
|
|
|
+ map1.put("ws90", "90米风速");
|
|
|
+ map1.put("ws100", "100米风速");
|
|
|
+ map1.put("ws170", "170米风速");
|
|
|
+ map1.put("wd10", "10米风向");
|
|
|
+ map1.put("wd30", "30米风向");
|
|
|
+ map1.put("wd50", "50米风向");
|
|
|
+ map1.put("wd70", "70米风向");
|
|
|
+ map1.put("wd80", "80米风向");
|
|
|
+ map1.put("wd90", "90米风向");
|
|
|
+ map1.put("wd100", "100米风向");
|
|
|
+ map1.put("wd170", "170米风向");
|
|
|
+
|
|
|
+ map.put("cName", map1);
|
|
|
+ //################ 统计 ##################
|
|
|
+ int days = DateMomentUtil.getDaysBetweenTwoDate(startTime, endTime + 1000);
|
|
|
+ List<Nwp> dataList = new ArrayList<>();
|
|
|
+ for (int i = 0; i < days; i++) {
|
|
|
+ Nwp nwp = new Nwp();
|
|
|
+ List<Nwp> nwpList = nwpRepository.findByPreTimeBetween(startTime + ((long) i * 60 * 60 * 24 * 1000), startTime + ((long) (i + 1) * 60 * 60 * 24 * 1000 - 1000));
|
|
|
+ BigDecimal t = new BigDecimal(0);
|
|
|
+ BigDecimal rh = new BigDecimal(0);
|
|
|
+ BigDecimal pressure = new BigDecimal(0);
|
|
|
+ BigDecimal swr = new BigDecimal(0);
|
|
|
+ BigDecimal lwr = new BigDecimal(0);
|
|
|
+ BigDecimal directRadiation = new BigDecimal(0);
|
|
|
+ BigDecimal diffuseRadiation = new BigDecimal(0);
|
|
|
+ BigDecimal senf = new BigDecimal(0);
|
|
|
+ BigDecimal ws10 = new BigDecimal(0);
|
|
|
+ BigDecimal ws30 = new BigDecimal(0);
|
|
|
+ BigDecimal ws50 = new BigDecimal(0);
|
|
|
+ BigDecimal ws70 = new BigDecimal(0);
|
|
|
+ BigDecimal ws80 = new BigDecimal(0);
|
|
|
+ BigDecimal ws90 = new BigDecimal(0);
|
|
|
+ BigDecimal ws100 = new BigDecimal(0);
|
|
|
+ BigDecimal ws170 = new BigDecimal(0);
|
|
|
+ BigDecimal wd10 = new BigDecimal(0);
|
|
|
+ BigDecimal wd30 = new BigDecimal(0);
|
|
|
+ BigDecimal wd50 = new BigDecimal(0);
|
|
|
+ BigDecimal wd70 = new BigDecimal(0);
|
|
|
+ BigDecimal wd80 = new BigDecimal(0);
|
|
|
+ BigDecimal wd90 = new BigDecimal(0);
|
|
|
+ BigDecimal wd100 = new BigDecimal(0);
|
|
|
+ BigDecimal wd170 = new BigDecimal(0);
|
|
|
+ for (int j = 0; j < nwpList.size(); j++) {
|
|
|
+ t = t.add(nwpList.get(j).getT() == null ? BigDecimal.valueOf(0) : nwpList.get(j).getT());
|
|
|
+ rh = rh.add(nwpList.get(j).getRh() == null ? BigDecimal.valueOf(0) : nwpList.get(j).getRh());
|
|
|
+ pressure = pressure.add(nwpList.get(j).getPressure() == null ? BigDecimal.valueOf(0) : nwpList.get(j).getPressure());
|
|
|
+ swr = swr.add(nwpList.get(j).getSwr() == null ? BigDecimal.valueOf(0) : nwpList.get(j).getSwr());
|
|
|
+ lwr = lwr.add(nwpList.get(j).getLwr() == null ? BigDecimal.valueOf(0) : nwpList.get(j).getLwr());
|
|
|
+ directRadiation = directRadiation.add(nwpList.get(j).getDirectRadiation() == null ? BigDecimal.valueOf(0) : nwpList.get(j).getDirectRadiation());
|
|
|
+ diffuseRadiation = diffuseRadiation.add(nwpList.get(j).getDiffuseRadiation() == null ? BigDecimal.valueOf(0) : nwpList.get(j).getDiffuseRadiation());
|
|
|
+ senf = senf.add(nwpList.get(j).getSenf() == null ? BigDecimal.valueOf(0) : nwpList.get(j).getSenf());
|
|
|
+ ws10 = ws10.add(nwpList.get(j).getWs10() == null ? BigDecimal.valueOf(0) : nwpList.get(j).getWs10());
|
|
|
+ ws30 = ws30.add(nwpList.get(j).getWs30() == null ? BigDecimal.valueOf(0) : nwpList.get(j).getWs30());
|
|
|
+ ws50 = ws50.add(nwpList.get(j).getWs50() == null ? BigDecimal.valueOf(0) : nwpList.get(j).getWs50());
|
|
|
+ ws70 = ws70.add(nwpList.get(j).getWs70() == null ? BigDecimal.valueOf(0) : nwpList.get(j).getWs70());
|
|
|
+ ws80 = ws80.add(nwpList.get(j).getWs80() == null ? BigDecimal.valueOf(0) : nwpList.get(j).getWs80());
|
|
|
+ ws90 = ws90.add(nwpList.get(j).getWs90() == null ? BigDecimal.valueOf(0) : nwpList.get(j).getWs90());
|
|
|
+ ws100 = ws100.add(nwpList.get(j).getWs100() == null ? BigDecimal.valueOf(0) : nwpList.get(j).getWs100());
|
|
|
+ ws170 = ws170.add(nwpList.get(j).getWs170() == null ? BigDecimal.valueOf(0) : nwpList.get(j).getWs170());
|
|
|
+ wd10 = wd10.add(nwpList.get(j).getWd10() == null ? BigDecimal.valueOf(0) : nwpList.get(j).getWd10());
|
|
|
+ wd30 = wd30.add(nwpList.get(j).getWd30() == null ? BigDecimal.valueOf(0) : nwpList.get(j).getWd30());
|
|
|
+ wd50 = wd50.add(nwpList.get(j).getWd50() == null ? BigDecimal.valueOf(0) : nwpList.get(j).getWd50());
|
|
|
+ wd70 = wd70.add(nwpList.get(j).getWd70() == null ? BigDecimal.valueOf(0) : nwpList.get(j).getWd70());
|
|
|
+ wd80 = wd80.add(nwpList.get(j).getWd80() == null ? BigDecimal.valueOf(0) : nwpList.get(j).getWd80());
|
|
|
+ wd90 = wd90.add(nwpList.get(j).getWd90() == null ? BigDecimal.valueOf(0) : nwpList.get(j).getWd90());
|
|
|
+ wd100 = wd100.add(nwpList.get(j).getWd100() == null ? BigDecimal.valueOf(0) : nwpList.get(j).getWd100());
|
|
|
+ wd170 = wd170.add(nwpList.get(j).getWd170() == null ? BigDecimal.valueOf(0) : nwpList.get(j).getWd170());
|
|
|
+ }
|
|
|
+ if (nwpList.size() > 0) {
|
|
|
+ nwp.setScTime(nwpList.get(0).getScTime());
|
|
|
+ nwp.setScDate(nwpList.get(0).getScDate());
|
|
|
+ nwp.setPreTime(nwpList.get(0).getPreTime());
|
|
|
+ nwp.setPreDate(nwpList.get(0).getPreDate());
|
|
|
+ nwp.setFarmId(nwpList.get(0).getFarmId());
|
|
|
+ nwp.setT(t.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP).doubleValue() < 0d ? new BigDecimal(0) : t.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ nwp.setRh(rh.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP).doubleValue() < 0d ? new BigDecimal(0) : rh.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ nwp.setPressure(pressure.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP).doubleValue() < 0d ? new BigDecimal(0) : pressure.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ nwp.setSwr(swr.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP).doubleValue() < 0d ? new BigDecimal(0) : swr.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ nwp.setLwr(lwr.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP).doubleValue() < 0d ? new BigDecimal(0) : lwr.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ nwp.setDirectRadiation(directRadiation.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP).doubleValue() < 0d ? new BigDecimal(0) : directRadiation.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ nwp.setDiffuseRadiation(diffuseRadiation.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP).doubleValue() < 0d ? new BigDecimal(0) : diffuseRadiation.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ nwp.setSenf(senf.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP).doubleValue() < 0d ? new BigDecimal(0) : senf.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ nwp.setWs10(ws10.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP).doubleValue() < 0d ? new BigDecimal(0) : ws10.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ nwp.setWs30(ws30.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP).doubleValue() < 0d ? new BigDecimal(0) : ws30.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ nwp.setWs50(ws50.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP).doubleValue() < 0d ? new BigDecimal(0) : ws50.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ nwp.setWs70(ws70.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP).doubleValue() < 0d ? new BigDecimal(0) : ws70.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ nwp.setWs80(ws80.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP).doubleValue() < 0d ? new BigDecimal(0) : ws80.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ nwp.setWs90(ws90.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP).doubleValue() < 0d ? new BigDecimal(0) : ws90.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ nwp.setWs100(ws100.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP).doubleValue() < 0d ? new BigDecimal(0) : ws100.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ nwp.setWs170(ws170.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP).doubleValue() < 0d ? new BigDecimal(0) : ws170.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ nwp.setWd10(wd10.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP).doubleValue() < 0d ? new BigDecimal(0) : wd10.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ nwp.setWd30(wd30.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP).doubleValue() < 0d ? new BigDecimal(0) : wd30.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ nwp.setWd50(wd50.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP).doubleValue() < 0d ? new BigDecimal(0) : wd50.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ nwp.setWd70(wd70.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP).doubleValue() < 0d ? new BigDecimal(0) : wd70.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ nwp.setWd80(wd80.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP).doubleValue() < 0d ? new BigDecimal(0) : wd80.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ nwp.setWd90(wd90.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP).doubleValue() < 0d ? new BigDecimal(0) : wd90.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ nwp.setWd100(wd100.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP).doubleValue() < 0d ? new BigDecimal(0) : wd100.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ nwp.setWd170(wd170.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP).doubleValue() < 0d ? new BigDecimal(0) : wd170.divide(BigDecimal.valueOf(nwpList.size()), 2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ dataList.add(nwp);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ map.put("statistics", dataList);
|
|
|
+ return map;
|
|
|
+ }
|
|
|
}
|