|
@@ -1,155 +1,133 @@
|
|
|
package com.bizmatics.service.impl;
|
|
|
|
|
|
-import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.bizmatics.common.core.util.DateUtils;
|
|
|
+import com.bizmatics.common.mvc.base.AbstractCrudService;
|
|
|
import com.bizmatics.common.spring.util.JsonUtils;
|
|
|
-import com.bizmatics.model.HadDataLog;
|
|
|
+import com.bizmatics.model.HadSiteStatic;
|
|
|
import com.bizmatics.model.HtAnalogData;
|
|
|
+import com.bizmatics.model.Site;
|
|
|
import com.bizmatics.persistence.mapper.HtAnalogDataMapper;
|
|
|
-import com.bizmatics.persistence.mapper.SiteMapper;
|
|
|
+import com.bizmatics.service.HadSiteStaticService;
|
|
|
import com.bizmatics.service.HtAnalogDataService;
|
|
|
-import com.bizmatics.common.mvc.base.AbstractCrudService;
|
|
|
import com.bizmatics.service.util.Arith;
|
|
|
import com.bizmatics.service.util.SessionLocal;
|
|
|
import com.bizmatics.service.vo.*;
|
|
|
import com.fasterxml.jackson.core.type.TypeReference;
|
|
|
-import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.checkerframework.checker.nullness.Opt;
|
|
|
+import org.checkerframework.checker.units.qual.C;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
import java.util.*;
|
|
|
-import java.util.concurrent.atomic.AtomicReference;
|
|
|
-import java.util.stream.Collectors;
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
- * <p>
|
|
|
- * 服务实现类
|
|
|
- * </p>
|
|
|
- *
|
|
|
- * @author ya
|
|
|
- * @since 2021-07-07
|
|
|
+ * @author yq
|
|
|
+ * @date 2021/7/20 16:49
|
|
|
*/
|
|
|
-@Slf4j
|
|
|
@Service
|
|
|
public class HtAnalogDataServiceImpl extends AbstractCrudService<HtAnalogDataMapper, HtAnalogData> implements HtAnalogDataService {
|
|
|
- @Autowired
|
|
|
- private SiteMapper siteMapper;
|
|
|
|
|
|
- @Autowired
|
|
|
- private HadDataLogService hadDataLogService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private HadSiteStaticService hadSiteStaticService;
|
|
|
@Override
|
|
|
public HadCountVO selectCount() {
|
|
|
+ HadCountVO hadCountVO = new HadCountVO();
|
|
|
Integer userId = SessionLocal.getUserId();
|
|
|
Date date = new Date();
|
|
|
- date = DateUtils.setDays(date,27);
|
|
|
- date = DateUtils.setMonths(date,4);
|
|
|
- Date dayStartTime = DateUtils.getDayStartTime(date);
|
|
|
- Date dayStartTime1 = DateUtils.getDayEndTime(date);
|
|
|
- System.out.println(DateUtils.format(dayStartTime));
|
|
|
- System.out.println(DateUtils.format(dayStartTime1));
|
|
|
- HadCountVO hadCountVO = new HadCountVO();
|
|
|
- //获取用户对应的站点信息
|
|
|
- List<Integer> idList = siteMapper.idList(userId, null);
|
|
|
- //日
|
|
|
- List<HadDataLog> byToday = getByToday(dayStartTime, dayStartTime1);
|
|
|
-// List<HadDataLog> byToday = getByToday(DateUtils.getDayStartTime(date), date);
|
|
|
- hadCountVO.setDayCount(test(byToday, idList, null, null));
|
|
|
- //月
|
|
|
- List<HadDataLog> byMonth = getByMonth(DateUtils.getFirstDayOfMonth(date), date);
|
|
|
- hadCountVO.setMonthCount(getEpp(byMonth, idList, null, null));
|
|
|
- //年
|
|
|
- List<HadDataLog> byYear = getByMonth(DateUtils.getBeginDayOfYear(date), date);
|
|
|
- hadCountVO.setYearCount(getEpp(byYear, idList, null, null));
|
|
|
-
|
|
|
+ hadCountVO.setDayCount(hadSiteStaticService.getCount(userId,DateUtils.getDayStartTime(date),date));
|
|
|
+ hadCountVO.setMonthCount(hadSiteStaticService.getCount(userId, DateUtils.getFirstDayOfMonth(date), date));
|
|
|
+ hadCountVO.setYearCount(hadSiteStaticService.getCount(userId,DateUtils.getBeginDayOfYear(date),date));
|
|
|
return hadCountVO;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- public Double test(List<HadDataLog> list, List<Integer> siteIdList,Date startTime,Date endTime){
|
|
|
- List<HadDataLogVO> hadDateList = new ArrayList<>();
|
|
|
- for (HadDataLog hadDataLog:list) {
|
|
|
- hadDateList.addAll(getHadDateList(hadDataLog, siteIdList,startTime,endTime));
|
|
|
+ @Override
|
|
|
+ public List<CommonIcoVO> selectTrendByDate(Integer siteId) {
|
|
|
+ Integer userId = SessionLocal.getUserId();
|
|
|
+ Date date = new Date();
|
|
|
+ Date sTime = DateUtils.getDayStartTime(date);
|
|
|
+ Date eTime = DateUtils.getDayEndTime(date);
|
|
|
+ Date ysTime = DateUtils.addDays(sTime,-1);
|
|
|
+ Date yeTime = DateUtils.addDays(eTime,-1);
|
|
|
+ List<CommonIcoVO> list = new ArrayList<>();
|
|
|
+ if (null != siteId){
|
|
|
+ list.add(getTreedBySite("today", siteId, sTime, eTime));
|
|
|
+ list.add(getTreedBySite("today", siteId, ysTime, yeTime));
|
|
|
+ }else {
|
|
|
+ list.add(getTrendOne("today", userId, sTime));
|
|
|
+ list.add(getTrendOne("today", userId, yeTime));
|
|
|
}
|
|
|
- Map<Integer, DoubleSummaryStatistics> collect = hadDateList.stream()
|
|
|
- .collect(Collectors.groupingBy(HadDataLogVO::getSiteId, Collectors.summarizingDouble(HadDataLogVO::getEpp)));
|
|
|
- return 0.00;
|
|
|
+ return list;
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 获取epp计算结果
|
|
|
- * @param list
|
|
|
- * @param siteIdList
|
|
|
- * @return
|
|
|
- */
|
|
|
- public Double getEpp(List<HadDataLog> list, List<Integer> siteIdList,Date startTime,Date endTime){
|
|
|
- List<HadCrVO> hadCrVoS = new ArrayList<>();
|
|
|
- list.forEach(hadDataLog -> {
|
|
|
- //获取真实数据
|
|
|
- List<HadDataLogVO> hadDateList = getHadDateList(hadDataLog, siteIdList,startTime,endTime);
|
|
|
- Map<Integer, DoubleSummaryStatistics> collect = hadDateList.stream()
|
|
|
- .collect(Collectors.groupingBy(HadDataLogVO::getSiteId, Collectors.summarizingDouble(HadDataLogVO::getEpp)));
|
|
|
- checkData(collect,hadCrVoS);
|
|
|
- });
|
|
|
- return getSubCount(hadCrVoS);
|
|
|
- }
|
|
|
|
|
|
- public List<HadDataLog> getByToday(Date startTime,Date endTime){
|
|
|
- return hadDataLogService.list(startTime,endTime);
|
|
|
+ public CommonIcoVO getTrendOne(String name,Integer userId,Date startTime){
|
|
|
+ List<Object> objects = new ArrayList<>();
|
|
|
+ objects.add(0.0);
|
|
|
+ List<Object> dates = new ArrayList<>();
|
|
|
+ dates.add("00:00:00");
|
|
|
+ for (int i = 2; i < 24 ; i+=2) {
|
|
|
+ //结束时间
|
|
|
+ Date hours = DateUtils.setHours(startTime, i);
|
|
|
+ objects.add(hadSiteStaticService.getCount(userId,startTime,hours));
|
|
|
+ startTime = hours;
|
|
|
+ dates.add(DateUtils.getTime(hours));
|
|
|
+ }
|
|
|
+ return CommonIcoVO.builder().name(name).list(objects).listDate(dates).build();
|
|
|
}
|
|
|
|
|
|
- public List<HadDataLog> getByMonth(Date startTime,Date endTime){
|
|
|
- return hadDataLogService.maxAndMinList(startTime,endTime);
|
|
|
+ CommonIcoVO getTreedBySite(String name,Integer siteId,Date startTime,Date endTime){
|
|
|
+ Date sTime = DateUtils.getDayStartTime(startTime);
|
|
|
+ Date eTime = DateUtils.getDayEndTime(endTime);
|
|
|
+ HadSiteStatic hadSiteStatic = hadSiteStaticService.oneBySite(siteId, sTime, eTime);
|
|
|
+ CommonIcoVO commonIcoVO = null;
|
|
|
+ if (null != hadSiteStatic){
|
|
|
+ commonIcoVO = JsonUtils.fromJson(hadSiteStatic.getLoadIco(), CommonIcoVO.class);
|
|
|
+ commonIcoVO.setName(name);
|
|
|
+ }else {
|
|
|
+ List<Object> objects = new ArrayList<>();
|
|
|
+ objects.add(0.0);
|
|
|
+ List<Object> dates = new ArrayList<>();
|
|
|
+ dates.add("00:00:00");
|
|
|
+ for (int i = 2; i < 24 ; i+=2) {
|
|
|
+ //结束时间
|
|
|
+ Date hours = DateUtils.setHours(startTime, i);
|
|
|
+ objects.add(0.0);
|
|
|
+ startTime = hours;
|
|
|
+ dates.add(DateUtils.getTime(hours));
|
|
|
+ }
|
|
|
+ commonIcoVO = CommonIcoVO.builder().name(name).list(objects).listDate(dates).build();
|
|
|
+ }
|
|
|
+ return commonIcoVO;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
@Override
|
|
|
- public List<CommonIcoVO> selectTrendByDate(Integer siteId) {
|
|
|
+ public List<CommonIcoVO> selectTrendByMonth() {
|
|
|
Date date = new Date();
|
|
|
+ Integer userId = SessionLocal.getUserId();
|
|
|
List<CommonIcoVO> list = new ArrayList<>();
|
|
|
- List<Integer> idList = getSiteIdList(siteId);
|
|
|
- list.add(getTrendOne("today", idList, DateUtils.getDayStartTime(date), DateUtils.getDayEndTime(date)));
|
|
|
- Date yeDate = DateUtils.addDays(date, -1);
|
|
|
- list.add(getTrendOne("yesterday", idList,DateUtils.getDayStartTime(yeDate) , DateUtils.getDayEndTime(yeDate)));
|
|
|
+ list.add(selectTreedMonthOne(date,userId,"当月趋势图"));
|
|
|
+ list.add(selectTreedMonthOne(DateUtils.addMonths(date,-1),userId,"上月趋势图"));
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public CommonIcoVO selectTrendByMonth() {
|
|
|
- List<Integer> siteIdList = getSiteIdList(null);
|
|
|
- Date date = new Date();
|
|
|
+ public CommonIcoVO selectTreedMonthOne(Date date,Integer userId,String name){
|
|
|
List<Object> objects = new ArrayList<>();
|
|
|
List<Object> dateList = new ArrayList<>();
|
|
|
- List<HadDataLog> hadDataLogList = getByToday(DateUtils.getFirstDayOfMonth(date), date);
|
|
|
for (int i = 1; i <= Integer.parseInt(DateUtils.getDay(date)); i++) {
|
|
|
Date setDays = DateUtils.setDays(date, i);
|
|
|
Date dayStartTime = DateUtils.getDayStartTime(setDays);
|
|
|
Date dayEndTime = DateUtils.getDayEndTime(setDays);
|
|
|
- objects.add(getEpp(hadDataLogList,siteIdList,dayStartTime,dayEndTime));
|
|
|
+ objects.add(hadSiteStaticService.getCount(userId,dayStartTime,dayEndTime));
|
|
|
dateList.add(DateUtils.getDay(setDays));
|
|
|
}
|
|
|
- return CommonIcoVO.builder().name("当月趋势图").list(objects).listDate(dateList).build();
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- public CommonIcoVO getTrendOne(String name,List<Integer> idList,Date startTime,Date endTime){
|
|
|
- List<HadDataLog> list = getByToday(startTime, endTime);
|
|
|
- List<Object> objects = new ArrayList<>();
|
|
|
- objects.add(0.0);
|
|
|
- List<Object> dates = new ArrayList<>();
|
|
|
- dates.add("00:00:00");
|
|
|
- for (int i = 2; i < 24 ; i+=2) {
|
|
|
- //结束时间
|
|
|
- Date hours = DateUtils.setHours(startTime, i);
|
|
|
- objects.add(getEpp(list,idList,startTime,hours));
|
|
|
- startTime = hours;
|
|
|
- dates.add(DateUtils.getTime(hours));
|
|
|
- }
|
|
|
- return CommonIcoVO.builder().name(name).list(objects).listDate(dates).build();
|
|
|
+ return CommonIcoVO.builder().name(name).list(objects).listDate(dateList).build();
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public HadCountVO getCountBySite(Integer siteId) {
|
|
|
- List<Integer> siteIdList = getSiteIdList(siteId);
|
|
|
+ Integer userId = SessionLocal.getUserId();
|
|
|
Date date = new Date();
|
|
|
//当日开始时间
|
|
|
Date firstDayOfDate = DateUtils.getDayStartTime(date);
|
|
@@ -158,27 +136,12 @@ public class HtAnalogDataServiceImpl extends AbstractCrudService<HtAnalogDataMap
|
|
|
//当年开始时间
|
|
|
Date firstDayOfYear = DateUtils.getBeginDayOfYear(date);
|
|
|
HadCountVO hadCountVO = new HadCountVO();
|
|
|
- //今日
|
|
|
- List<HadDataLog> byToday = getByToday(firstDayOfDate, date);
|
|
|
- hadCountVO.setDayCount(getEpp(byToday,siteIdList,null,null));
|
|
|
- //本月
|
|
|
- List<HadDataLog> byToMonth = getByMonth(firstDayOfMonth, date);
|
|
|
- hadCountVO.setMonthCount(getEpp(byToMonth,siteIdList,null,null));
|
|
|
- //本年
|
|
|
- List<HadDataLog> byToYear = getByMonth(firstDayOfYear, date);
|
|
|
- hadCountVO.setYearCount(getEpp(byToYear,siteIdList,null,null));
|
|
|
- //昨天
|
|
|
- List<HadDataLog> lastDay = getByToday(DateUtils.addDays(firstDayOfDate, -1), DateUtils.addDays(date, -1));
|
|
|
- Double lastDayEpp = getEpp(lastDay, siteIdList, null,null);
|
|
|
- hadCountVO.setLastDayCount(lastDayEpp);
|
|
|
- //上月
|
|
|
- List<HadDataLog> lastMonth = getByMonth(DateUtils.addMonths(firstDayOfMonth, -1), DateUtils.addMonths(date, -1));
|
|
|
- Double lastMonthEpp = getEpp(lastMonth, siteIdList, null,null);
|
|
|
- hadCountVO.setLastMonthCount(lastMonthEpp);
|
|
|
- //去年
|
|
|
- List<HadDataLog> lastYear = getByMonth(DateUtils.addYears(firstDayOfYear, -1), DateUtils.addYears(date, -1));
|
|
|
- Double lastYearEpp = getEpp(lastYear, siteIdList, null, null);
|
|
|
- hadCountVO.setLastDayCount(lastYearEpp);
|
|
|
+ hadCountVO.setDayCount(hadSiteStaticService.getCount(userId,DateUtils.getDayStartTime(date),date));
|
|
|
+ hadCountVO.setMonthCount(hadSiteStaticService.getCount(userId, DateUtils.getFirstDayOfMonth(date), date));
|
|
|
+ hadCountVO.setYearCount(hadSiteStaticService.getCount(userId,DateUtils.getBeginDayOfYear(date),date));
|
|
|
+ hadCountVO.setLastDayCount(hadSiteStaticService.getCount(userId, DateUtils.addDays(firstDayOfDate, -1), DateUtils.addDays(date, -1)));
|
|
|
+ hadCountVO.setLastMonthCount(hadSiteStaticService.getCount(userId, DateUtils.addMonths(firstDayOfMonth, -1), DateUtils.addMonths(date, -1)));
|
|
|
+ hadCountVO.setLastYearCount(hadSiteStaticService.getCount(userId, DateUtils.addYears(firstDayOfYear, -1), DateUtils.addYears(date, -1)));
|
|
|
hadCountVO.setDayRadio(Optional.ofNullable(hadCountVO.getDayCount())
|
|
|
.filter(dayCount -> 0.00 != dayCount)
|
|
|
.map(dayCount -> Arith.div(hadCountVO.getLastDayCount(), dayCount))
|
|
@@ -192,80 +155,56 @@ public class HtAnalogDataServiceImpl extends AbstractCrudService<HtAnalogDataMap
|
|
|
.map(dayCount -> Arith.div(hadCountVO.getLastYearCount(), dayCount))
|
|
|
.orElse(0.00));
|
|
|
return hadCountVO;
|
|
|
+
|
|
|
}
|
|
|
|
|
|
+
|
|
|
@Override
|
|
|
- public TimeShareVO getTimeShare(Integer siteId, Date date) {
|
|
|
+ public TimeShareVO getTimeShare(Integer siteId, Integer type) {
|
|
|
TimeShareVO timeShareVO = new TimeShareVO();
|
|
|
- List<Integer> idList = new ArrayList<>();
|
|
|
- idList.add(siteId);
|
|
|
- List<HadDataLog> byToday = getByToday(date, DateUtils.getDayEndTime(date));
|
|
|
- //尖峰时间
|
|
|
- Date nine = DateUtils.setMinutes(DateUtils.setHours(date, 9), 30);
|
|
|
- Date eleven = DateUtils.setMinutes(DateUtils.setHours(date, 11), 30);
|
|
|
- Date nineTeen = DateUtils.setHours(date, 19);
|
|
|
- Date twoOne = DateUtils.setHours(date, 21);
|
|
|
- //高峰时间
|
|
|
- Date eight = DateUtils.setMinutes(DateUtils.setHours(date, 8), 30);
|
|
|
- Date ten = DateUtils.setMinutes(DateUtils.setHours(date, 10), 30);
|
|
|
- Date oneEight = DateUtils.setHours(date, 18);
|
|
|
- Date oneNine = DateUtils.setHours(date, 19);
|
|
|
- Date twoThree = DateUtils.setHours(date, 23);
|
|
|
- //低谷
|
|
|
- Date seven = DateUtils.setHours(date, 7);
|
|
|
- //平谷
|
|
|
- Date oneTwo = DateUtils.setHours(date, 12);
|
|
|
- Date oneSeven = DateUtils.setHours(date, 17);
|
|
|
- //尖
|
|
|
- Double nToe = getEpp(byToday, idList, nine, eleven);
|
|
|
- Double nTot = getEpp(byToday, idList, nineTeen, twoOne);
|
|
|
- timeShareVO.setNeed(Arith.sub(nToe,nTot));
|
|
|
- //高峰
|
|
|
- Double eTot = getEpp(byToday, idList, eight, ten);
|
|
|
- Double hnTot = getEpp(byToday, idList, oneEight, oneNine);
|
|
|
- Double tTot = getEpp(byToday, idList, twoOne, twoThree);
|
|
|
- timeShareVO.setPeak(Arith.sub(Arith.sub(eTot,hnTot),tTot));
|
|
|
- //低谷
|
|
|
- Double tTos = getEpp(byToday, idList, twoThree, seven);
|
|
|
- timeShareVO.setGrain(tTos);
|
|
|
- //平谷
|
|
|
- Double oToo = getEpp(byToday, idList, oneTwo, oneSeven);
|
|
|
- timeShareVO.setFlat(oToo);
|
|
|
+ Date date = new Date();
|
|
|
+ if (0 == type){
|
|
|
+ HadSiteStatic hadSiteStatic = hadSiteStaticService.oneBySite(siteId, date, date);
|
|
|
+ Optional.ofNullable(hadSiteStatic).ifPresent(hads -> JsonUtils.fromJson(hads.getTimeShare(),timeShareVO.getClass()));
|
|
|
+ }else {
|
|
|
+ List<HadSiteStatic> list = hadSiteStaticService.list(siteId, DateUtils.getFirstDayOfMonth(date), date);
|
|
|
+ for (HadSiteStatic hadSiteStatic:list) {
|
|
|
+ Optional.ofNullable(hadSiteStatic.getTimeShare())
|
|
|
+ .ifPresent(has -> {
|
|
|
+ TimeShareVO ts = JsonUtils.fromJson(has, TimeShareVO.class);
|
|
|
+ timeShareVO.setFlat(Arith.sub(timeShareVO.getFlat(),ts.getFlat()));
|
|
|
+ timeShareVO.setPeak(Arith.sub(timeShareVO.getPeak(),ts.getPeak()));
|
|
|
+ timeShareVO.setNeed(Arith.sub(timeShareVO.getNeed(),ts.getNeed()));
|
|
|
+ timeShareVO.setGrain(Arith.sub(timeShareVO.getGrain(),ts.getGrain()));
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
return timeShareVO;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public List<CommonIcoVO> getDemandIco(Integer siteId) {
|
|
|
- List<Integer> idList = new ArrayList<>();
|
|
|
- idList.add(siteId);
|
|
|
+ Integer userId = SessionLocal.getUserId();
|
|
|
Date date = new Date();
|
|
|
- List<HadDataLog> hadDataLogList = getByToday(date, DateUtils.getLastDayOfMonth(date));
|
|
|
List<Object> maxList = new ArrayList<>();
|
|
|
List<Object> minList = new ArrayList<>();
|
|
|
List<Object> avgList = new ArrayList<>();
|
|
|
List<Object> dateList = new ArrayList<>();
|
|
|
+ List<HadSiteStatic> hadSiteStatics = hadSiteStaticService.list(userId, DateUtils.getFirstDayOfMonth(date), date);
|
|
|
for (int i = 1; i <= Integer.parseInt(DateUtils.getDay(date)); i++) {
|
|
|
- List<HadCrVO> hadCrVoS = new ArrayList<>();
|
|
|
- AtomicReference<Double> count = new AtomicReference<>(0.00);
|
|
|
- AtomicReference<Integer> size = new AtomicReference<>(0);
|
|
|
Date setDays = DateUtils.setDays(date, i);
|
|
|
Date dayStartTime = DateUtils.getDayStartTime(setDays);
|
|
|
Date dayEndTime = DateUtils.getDayEndTime(setDays);
|
|
|
- //筛选出日期范围数据
|
|
|
- List<HadDataLog> hadDataLogs = hadDataLogList.stream()
|
|
|
- .filter(hadDataLog -> hadDataLog.getDataTime().after(dayStartTime) && hadDataLog.getDataTime().after(dayEndTime))
|
|
|
- .collect(Collectors.toList());
|
|
|
- hadDataLogs.forEach(hadDataLog -> {
|
|
|
- List<HadDataLogVO> hadDateList = getHadDateList(hadDataLog, idList, null, null);
|
|
|
- count.updateAndGet(v -> v + hadDateList.stream().mapToDouble(HadDataLogVO::getDemand).sum());
|
|
|
- size.updateAndGet(v -> v + hadDateList.size());
|
|
|
- Map<Integer, DoubleSummaryStatistics> collect = hadDateList.stream()
|
|
|
- .collect(Collectors.groupingBy(HadDataLogVO::getSiteId, Collectors.summarizingDouble(HadDataLogVO::getDemand)));
|
|
|
- checkData(collect,hadCrVoS);
|
|
|
- });
|
|
|
- maxList.add(hadCrVoS.stream().max(Comparator.comparingDouble(HadCrVO::getHadMax)).map(HadCrVO::getHadMax).orElse(0.00));
|
|
|
- maxList.add(hadCrVoS.stream().min(Comparator.comparingDouble(HadCrVO::getHadMin)).map(HadCrVO::getHadMin).orElse(0.00));
|
|
|
- avgList.add(Arith.div(count.get(),size.get()));
|
|
|
+ maxList.add(hadSiteStatics.stream()
|
|
|
+ .filter(hadSiteStatic -> isEffectiveDate(hadSiteStatic.getHadTime(),dayStartTime,dayEndTime)
|
|
|
+ ).findFirst().map(HadSiteStatic::getMaxDemand).orElse(0.00));
|
|
|
+
|
|
|
+ minList.add(hadSiteStatics.stream()
|
|
|
+ .filter(hadSiteStatic -> isEffectiveDate(hadSiteStatic.getHadTime(),dayStartTime,dayEndTime)
|
|
|
+ ).findFirst().map(HadSiteStatic::getMinDemand).orElse(0.00));
|
|
|
+ avgList.add(hadSiteStatics.stream()
|
|
|
+ .filter(hadSiteStatic -> isEffectiveDate(hadSiteStatic.getHadTime(),dayStartTime,dayEndTime)
|
|
|
+ ).findFirst().map(HadSiteStatic::getAvgDemand).orElse(0.00));
|
|
|
dateList.add(DateUtils.getDay(setDays));
|
|
|
}
|
|
|
List<CommonIcoVO> list = new ArrayList<>();
|
|
@@ -277,9 +216,6 @@ public class HtAnalogDataServiceImpl extends AbstractCrudService<HtAnalogDataMap
|
|
|
|
|
|
@Override
|
|
|
public List<CommonIcoVO> getElectricIco(Integer siteId, Date date) {
|
|
|
- Integer userId = SessionLocal.getUserId();
|
|
|
- List<Integer> siteIdList = new ArrayList<>();
|
|
|
- siteIdList.add(siteId);
|
|
|
List<Object> iaList = new ArrayList<>();
|
|
|
iaList.add(0.00);
|
|
|
List<Object> ibList = new ArrayList<>();
|
|
@@ -294,26 +230,30 @@ public class HtAnalogDataServiceImpl extends AbstractCrudService<HtAnalogDataMap
|
|
|
ucList.add(0.00);
|
|
|
List<Object> dateList = new ArrayList<>();
|
|
|
dateList.add("00:00:00");
|
|
|
- List<HadDataLog> hadDataLogList = getByToday(date, DateUtils.getDayStartTime(date));
|
|
|
- for (int i = 2; i < 24 ; i+=2) {
|
|
|
- //结束时间
|
|
|
- Date endTime = DateUtils.setHours(date, i);
|
|
|
- Date finalDate = date;
|
|
|
- List<HadDataLogVO> maxHadList = new ArrayList<>();
|
|
|
- Comparator<HadDataLogVO> comparator = Comparator.comparing(HadDataLogVO::getDataTime);
|
|
|
- hadDataLogList.forEach(hadDataLog -> {
|
|
|
- List<HadDataLogVO> hadDateList = getHadDateList(hadDataLog, siteIdList, finalDate, endTime);
|
|
|
- hadDateList.stream().max(comparator).ifPresent(maxHadList::add);
|
|
|
- });
|
|
|
- Optional<HadDataLogVO> max = maxHadList.stream().max(comparator);
|
|
|
- iaList.add(max.map(HadDataLogVO::getIa).orElse(0.00));
|
|
|
- ibList.add(max.map(HadDataLogVO::getIb).orElse(0.00));
|
|
|
- icList.add(max.map(HadDataLogVO::getIc).orElse(0.00));
|
|
|
- uaList.add(max.map(HadDataLogVO::getUa).orElse(0.00));
|
|
|
- ubList.add(max.map(HadDataLogVO::getUa).orElse(0.00));
|
|
|
- ucList.add(max.map(HadDataLogVO::getUa).orElse(0.00));
|
|
|
- date = endTime;
|
|
|
- dateList.add(DateUtils.getTime(endTime));
|
|
|
+ HadSiteStatic hadSiteStatic = hadSiteStaticService.oneBySite(siteId, date, date);
|
|
|
+ if (null != hadSiteStatic){
|
|
|
+ List<HtAnalogData> htList = JsonUtils.fromJson(hadSiteStatic.getHisIco(), new TypeReference<List<HtAnalogData>>(){});
|
|
|
+ for (HtAnalogData htAnalogData:htList) {
|
|
|
+ iaList.add(htAnalogData.getIa());
|
|
|
+ ibList.add(htAnalogData.getIb());
|
|
|
+ icList.add(htAnalogData.getIc());
|
|
|
+ uaList.add(htAnalogData.getUc());
|
|
|
+ ubList.add(htAnalogData.getUb());
|
|
|
+ ucList.add(htAnalogData.getUc());
|
|
|
+ dateList.add(htAnalogData.getDataTime());
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ for (int i = 2; i < 24 ; i+=2) {
|
|
|
+ iaList.add(0.00);
|
|
|
+ ibList.add(0.00);
|
|
|
+ icList.add(0.00);
|
|
|
+ uaList.add(0.00);
|
|
|
+ ubList.add(0.00);
|
|
|
+ ucList.add(0.00);
|
|
|
+ Date hours = DateUtils.setHours(date, i);
|
|
|
+ date = hours;
|
|
|
+ dateList.add(DateUtils.getTime(hours));
|
|
|
+ }
|
|
|
}
|
|
|
List<CommonIcoVO> list = new ArrayList<>();
|
|
|
list.add(CommonIcoVO.builder().name("IA").list(iaList).listDate(dateList).build());
|
|
@@ -323,91 +263,29 @@ public class HtAnalogDataServiceImpl extends AbstractCrudService<HtAnalogDataMap
|
|
|
list.add(CommonIcoVO.builder().name("UB").list(ubList).listDate(dateList).build());
|
|
|
list.add(CommonIcoVO.builder().name("UC").list(ucList).listDate(dateList).build());
|
|
|
return list;
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|
|
|
- public List<Integer> getSiteIdList(Integer siteId){
|
|
|
- Integer userId = SessionLocal.getUserId();
|
|
|
- List<Integer> list = new ArrayList<>();
|
|
|
- if (null == siteId){
|
|
|
- list = siteMapper.idList(userId, null);
|
|
|
- }else {
|
|
|
- list.add(siteId);
|
|
|
+ public static boolean isEffectiveDate(Date nowTime, Date startTime, Date endTime) {
|
|
|
+ if (nowTime.getTime() == startTime.getTime()
|
|
|
+ || nowTime.getTime() == endTime.getTime()) {
|
|
|
+ return true;
|
|
|
}
|
|
|
- return list;
|
|
|
- }
|
|
|
|
|
|
- /**
|
|
|
- * 求多个站点最大值减最小值的结果
|
|
|
- * @param list
|
|
|
- * @return
|
|
|
- */
|
|
|
- public Double getSubCount(List<HadCrVO> list){
|
|
|
- double count = 0.00;
|
|
|
- for (HadCrVO hadCrVO:list) {
|
|
|
- count+=Arith.sub(hadCrVO.getHadMax(),hadCrVO.getHadMin());
|
|
|
- }
|
|
|
- return count;
|
|
|
- }
|
|
|
+ Calendar date = Calendar.getInstance();
|
|
|
+ date.setTime(nowTime);
|
|
|
|
|
|
- /**
|
|
|
- * 根据统计表的一条记录获取真实数据
|
|
|
- * @param hadDataLog
|
|
|
- * @return
|
|
|
- */
|
|
|
- public List<HadDataLogVO> getHadDateList(HadDataLog hadDataLog,List<Integer> idList,Date startTime,Date endTime){
|
|
|
- List<HadDataLogVO> hadDataLogVos = new ArrayList<>();
|
|
|
- List<Integer> siteIdList = JsonUtils.fromJson(hadDataLog.getSiteIdList(), new TypeReference<List<Integer>>(){});
|
|
|
- List<Integer> origin = new ArrayList<>(idList);
|
|
|
- origin.retainAll(siteIdList);
|
|
|
- // 有交集
|
|
|
- if(CollectionUtils.isNotEmpty(origin)){
|
|
|
- hadDataLogVos = JsonUtils.fromJson(hadDataLog.getHadData(), new TypeReference<List<HadDataLogVO>>(){});
|
|
|
- hadDataLogVos = hadDataLogVos.stream()
|
|
|
- .filter(hadDataLogVO -> idList.contains(hadDataLogVO.getSiteId()))
|
|
|
- .filter(hadDataLogVO -> Optional.ofNullable(startTime).map(sTime -> hadDataLogVO.getDataTime().after(sTime)).orElse(true))
|
|
|
- .filter(hadDataLogVO -> Optional.ofNullable(endTime).map(eTime -> hadDataLogVO.getDataTime().before(eTime)).orElse(true))
|
|
|
- .collect(Collectors.toList());
|
|
|
- }
|
|
|
- return hadDataLogVos;
|
|
|
- }
|
|
|
+ Calendar begin = Calendar.getInstance();
|
|
|
+ begin.setTime(startTime);
|
|
|
|
|
|
- /**
|
|
|
- * 便利寻找最大值/最小值
|
|
|
- * @param collect
|
|
|
- * @param siteMaxVOList
|
|
|
- */
|
|
|
- public void checkData(Map<Integer, DoubleSummaryStatistics> collect,List<HadCrVO> siteMaxVOList){
|
|
|
- for (Integer siteId:collect.keySet()) {
|
|
|
- if (CollectionUtils.isEmpty(siteMaxVOList)){
|
|
|
- HadCrVO hadCrVO = new HadCrVO();
|
|
|
- hadCrVO.setSiteId(siteId);
|
|
|
- hadCrVO.setHadMax(collect.get(siteId).getMax());
|
|
|
- hadCrVO.setHadMin(collect.get(siteId).getMin());
|
|
|
- siteMaxVOList.add(hadCrVO);
|
|
|
- }else {
|
|
|
- siteMaxVOList.stream()
|
|
|
- .filter(siteMaxVO -> siteMaxVO.getSiteId().equals(siteId))
|
|
|
- .findFirst()
|
|
|
- .map(siteMaxVO -> {
|
|
|
- if (siteMaxVO.getHadMax() < collect.get(siteId).getMax()){
|
|
|
- siteMaxVO.setHadMax(collect.get(siteId).getMax());
|
|
|
- }
|
|
|
- if (siteMaxVO.getHadMin() < collect.get(siteId).getMin()){
|
|
|
- siteMaxVO.setHadMin(collect.get(siteId).getMin());
|
|
|
- }
|
|
|
- return Optional.empty();
|
|
|
- }).orElseGet(() -> {
|
|
|
- HadCrVO hadCrVO = new HadCrVO();
|
|
|
- hadCrVO.setSiteId(siteId);
|
|
|
- hadCrVO.setHadMax(collect.get(siteId).getMax());
|
|
|
- hadCrVO.setHadMin(collect.get(siteId).getMin());
|
|
|
- siteMaxVOList.add(hadCrVO);
|
|
|
- return Optional.empty();
|
|
|
- });
|
|
|
- }
|
|
|
+ Calendar end = Calendar.getInstance();
|
|
|
+ end.setTime(endTime);
|
|
|
+
|
|
|
+ if (date.after(begin) && date.before(end)) {
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-
|