123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275 |
- package com.bizmatics.service.impl;
- 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.HadSiteStatic;
- import com.bizmatics.model.HtAnalogData;
- import com.bizmatics.persistence.mapper.HtAnalogDataMapper;
- import com.bizmatics.service.HadSiteStaticService;
- import com.bizmatics.service.HtAnalogDataService;
- import com.bizmatics.service.util.Arith;
- import com.bizmatics.service.util.SessionLocal;
- import com.bizmatics.service.vo.CommonIcoVO;
- import com.bizmatics.service.vo.HadCountVO;
- import com.bizmatics.service.vo.TimeShareVO;
- import com.fasterxml.jackson.core.type.TypeReference;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- import java.util.Optional;
- /**
- * @author yq
- * @date 2021/7/20 16:49
- */
- @Service
- public class HtAnalogDataServiceImpl extends AbstractCrudService<HtAnalogDataMapper, HtAnalogData> implements HtAnalogDataService {
- @Autowired
- private HadSiteStaticService hadSiteStaticService;
- @Override
- public HadCountVO selectCount() {
- HadCountVO hadCountVO = new HadCountVO();
- // Integer userId = UserUtil.getUserId();
- Integer userId = SessionLocal.getUserId();
- Date date = new Date();
- hadCountVO.setDayCount(hadSiteStaticService.getCount(userId,DateUtils.getDayStartTime(date),date,null));
- hadCountVO.setMonthCount(hadSiteStaticService.getCount(userId, DateUtils.getFirstDayOfMonth(date), date,null));
- hadCountVO.setYearCount(hadSiteStaticService.getCount(userId,DateUtils.getBeginDayOfYear(date),date,null));
- return hadCountVO;
- }
- @Override
- public List<CommonIcoVO> selectTrendByDate(Integer siteId) {
- // Integer userId = UserUtil.getUserId();
- 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("昨日", siteId, ysTime, yeTime));
- list.add(getTreedBySite("今日", siteId, sTime, eTime));
- }else {
- list.add(getTrendOne("昨日", userId, ysTime,yeTime));
- list.add(getTrendOne("今日", userId, sTime,eTime));
- }
- return list;
- }
- public CommonIcoVO getTrendOne(String name,Integer userId,Date startTime,Date endTime){
- List<HadSiteStatic> list = hadSiteStaticService.list(null, startTime, endTime, userId);
- 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);
- startTime = hours;
- dates.add(DateUtils.getTime(hours));
- Double hourCount = 0.00;
- for (HadSiteStatic hadSiteStatic:list) {
- CommonIcoVO commonIcoVO = JsonUtils.fromJson(hadSiteStatic.getLoadIco(), CommonIcoVO.class);
- List<Double> dataList = (List<Double>) commonIcoVO.getList();
- hourCount+=dataList.get(i/2);
- }
- objects.add(Arith.div(hourCount,1,2));
- }
- return CommonIcoVO.builder().name(name).list(objects).listDate(dates).build();
- }
- 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> selectTrendByMonth() {
- Date date = new Date();
- // Integer userId = UserUtil.getUserId();
- Integer userId = SessionLocal.getUserId();
- List<CommonIcoVO> list = new ArrayList<>();
- list.add(selectTreedMonthOne(DateUtils.getLastDayOfMonth(DateUtils.addMonths(date,-1)),userId,"上月趋势图"));
- list.add(selectTreedMonthOne(DateUtils.getLastDayOfMonth(date),userId,"当月趋势图"));
- return list;
- }
- public CommonIcoVO selectTreedMonthOne(Date date,Integer userId,String name){
- List<Object> objects = new ArrayList<>();
- List<Object> dateList = new ArrayList<>();
- 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(hadSiteStaticService.getCount(userId,dayStartTime,dayEndTime,null));
- dateList.add(DateUtils.getDay(setDays));
- }
- return CommonIcoVO.builder().name(name).list(objects).listDate(dateList).build();
- }
- @Override
- public HadCountVO getCountBySite(Integer siteId) {
- // Integer userId = UserUtil.getUserId();
- Integer userId = SessionLocal.getUserId();
- Date date = new Date();
- //当日开始时间
- Date firstDayOfDate = DateUtils.getDayStartTime(date);
- //当月开始时间
- Date firstDayOfMonth = DateUtils.getFirstDayOfMonth(date);
- //当年开始时间
- Date firstDayOfYear = DateUtils.getBeginDayOfYear(date);
- HadCountVO hadCountVO = new HadCountVO();
- hadCountVO.setDayCount(hadSiteStaticService.getCount(userId,DateUtils.getDayStartTime(date),date,siteId));
- hadCountVO.setMonthCount(hadSiteStaticService.getCount(userId, DateUtils.getFirstDayOfMonth(date), date,siteId));
- hadCountVO.setYearCount(hadSiteStaticService.getCount(userId,DateUtils.getBeginDayOfYear(date),date,siteId));
- hadCountVO.setLastDayCount(hadSiteStaticService.getCount(userId, DateUtils.addDays(firstDayOfDate, -1), DateUtils.addDays(date, -1),siteId));
- hadCountVO.setLastMonthCount(hadSiteStaticService.getCount(userId, DateUtils.addMonths(firstDayOfMonth, -1), DateUtils.addMonths(date, -1),siteId));
- hadCountVO.setLastYearCount(hadSiteStaticService.getCount(userId, DateUtils.addYears(firstDayOfYear, -1), DateUtils.addYears(date, -1),siteId));
- hadCountVO.setDayRadio(Optional.ofNullable(hadCountVO.getDayCount())
- .filter(dayCount -> 0.00 != dayCount)
- .map(dayCount -> Arith.div(hadCountVO.getLastDayCount(), dayCount))
- .orElse(0.00));
- hadCountVO.setMonthRadio(Optional.ofNullable(hadCountVO.getMonthCount())
- .filter(dayCount -> 0.00 != dayCount)
- .map(dayCount -> Arith.div(hadCountVO.getLastMonthCount(), dayCount))
- .orElse(0.00));
- hadCountVO.setYearRadio(Optional.ofNullable(hadCountVO.getYearCount())
- .filter(dayCount -> 0.00 != dayCount)
- .map(dayCount -> Arith.div(hadCountVO.getLastYearCount(), dayCount))
- .orElse(0.00));
- return hadCountVO;
- }
- @Override
- public TimeShareVO getTimeShare(Integer siteId, Integer type) {
- TimeShareVO timeShareVO = new TimeShareVO();
- 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.add(timeShareVO.getFlat(),ts.getFlat()));
- timeShareVO.setPeak(Arith.add(timeShareVO.getPeak(),ts.getPeak()));
- timeShareVO.setNeed(Arith.add(timeShareVO.getNeed(),ts.getNeed()));
- timeShareVO.setGrain(Arith.add(timeShareVO.getGrain(),ts.getGrain()));
- });
- }
- }
- return timeShareVO;
- }
- @Override
- public List<CommonIcoVO> getDemandIco(Integer siteId) {
- Date date = new 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(siteId, 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);
- maxList.add(hadSiteStatics.stream()
- .filter(hadSiteStatic -> DateUtils.isEffectiveDate(hadSiteStatic.getHadTime(),dayStartTime,dayEndTime)
- ).findFirst().map(HadSiteStatic::getMaxDemand).orElse(0.00));
- minList.add(hadSiteStatics.stream()
- .filter(hadSiteStatic -> DateUtils.isEffectiveDate(hadSiteStatic.getHadTime(),dayStartTime,dayEndTime)
- ).findFirst().map(HadSiteStatic::getMinDemand).orElse(0.00));
- avgList.add(hadSiteStatics.stream()
- .filter(hadSiteStatic -> DateUtils.isEffectiveDate(hadSiteStatic.getHadTime(),dayStartTime,dayEndTime)
- ).findFirst().map(HadSiteStatic::getAvgDemand).orElse(0.00));
- dateList.add(DateUtils.getDay(setDays));
- }
- List<CommonIcoVO> list = new ArrayList<>();
- list.add(CommonIcoVO.builder().name("最大值").list(maxList).listDate(dateList).build());
- list.add(CommonIcoVO.builder().name("最小值").list(minList).listDate(dateList).build());
- list.add(CommonIcoVO.builder().name("平均值").list(avgList).listDate(dateList).build());
- return list;
- }
- @Override
- public List<CommonIcoVO> getElectricIco(Integer siteId, Date date) {
- List<Object> iaList = new ArrayList<>();
- iaList.add(0.00);
- List<Object> ibList = new ArrayList<>();
- ibList.add(0.00);
- List<Object> icList = new ArrayList<>();
- icList.add(0.00);
- List<Object> uaList = new ArrayList<>();
- uaList.add(0.00);
- List<Object> ubList = new ArrayList<>();
- ubList.add(0.00);
- List<Object> ucList = new ArrayList<>();
- ucList.add(0.00);
- List<Object> dateList = new ArrayList<>();
- dateList.add("00:00:00");
- HadSiteStatic hadSiteStatic = hadSiteStaticService.oneBySite(siteId, date, date);
- List<HtAnalogData> htList = Optional.ofNullable(hadSiteStatic)
- .map(HadSiteStatic::getHisIco)
- .map(his -> JsonUtils.fromJson(hadSiteStatic.getHisIco(), new TypeReference<List<HtAnalogData>>(){}))
- .orElse(null);
- for (int i = 2; i < 24 ; i+=2) {
- Date hours = DateUtils.setHours(date, i);
- date = hours;
- Date finalDate = date;
- Optional<HtAnalogData> htAnalogData = Optional.ofNullable(htList).flatMap(hts -> hts.stream()
- .filter(hads -> DateUtils.isEffectiveDate(hads.getDataTime(), finalDate, hours))
- .findFirst());
- iaList.add(htAnalogData.map(HtAnalogData::getIa).orElse(0.00));
- ibList.add(htAnalogData.map(HtAnalogData::getIb).orElse(0.00));
- icList.add(htAnalogData.map(HtAnalogData::getIc).orElse(0.00));
- uaList.add(htAnalogData.map(HtAnalogData::getUa).orElse(0.00));
- ubList.add(htAnalogData.map(HtAnalogData::getUb).orElse(0.00));
- ucList.add(htAnalogData.map(HtAnalogData::getUc).orElse(0.00));
- dateList.add(htAnalogData.map(HtAnalogData::getDataTime).map(s -> DateUtils.getTime(hours)).orElse(DateUtils.getTime(hours)));
- }
- List<CommonIcoVO> list = new ArrayList<>();
- list.add(CommonIcoVO.builder().name("IA").list(iaList).listDate(dateList).build());
- list.add(CommonIcoVO.builder().name("IB").list(ibList).listDate(dateList).build());
- list.add(CommonIcoVO.builder().name("IC").list(icList).listDate(dateList).build());
- list.add(CommonIcoVO.builder().name("UA").list(uaList).listDate(dateList).build());
- list.add(CommonIcoVO.builder().name("UB").list(ubList).listDate(dateList).build());
- list.add(CommonIcoVO.builder().name("UC").list(ucList).listDate(dateList).build());
- return list;
- }
- }
|