123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- package com.bizmatics.service.job;
- import com.bizmatics.common.core.util.Arith;
- import com.bizmatics.common.core.util.DateUtils;
- import com.bizmatics.common.spring.util.JsonUtils;
- import com.bizmatics.model.HadSiteStatic;
- import com.bizmatics.model.HtAnalogData;
- import com.bizmatics.persistence.mapper.HadSiteStaticMapper;
- import com.bizmatics.persistence.mapper.HtAnalogDataMapper;
- import com.bizmatics.service.vo.CommonIcoVO;
- import com.bizmatics.service.vo.TimeShareVO;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.scheduling.annotation.Scheduled;
- import org.springframework.stereotype.Service;
- import java.util.*;
- /**
- * @author yq
- * @date 2021/7/17 19:41
- */
- @Slf4j
- @Service
- public class RatAnalogTask {
- @Autowired
- private HtAnalogDataMapper htAnalogDataMapper;
- @Autowired
- private HadSiteStaticMapper hadSiteStaticMapper;
- public void addAll(Date startTime,Date endTime){
- addHadJobByDate(startTime,endTime);
- }
- @Scheduled(cron = "0 0 0 */1 * ?")
- public void addHadJob(){
- Date newDate = new Date();
- newDate = DateUtils.addDays(newDate,-1);
- Date dayStartTime = DateUtils.getDayStartTime(newDate);
- Date dayEndTime = DateUtils.getDayEndTime(newDate);
- log.info("addHadJob---startTime"+DateUtils.format(dayStartTime));
- log.info("addHadJob---endTime"+DateUtils.format(dayEndTime));
- addHadJobByDate(dayStartTime,dayEndTime);
- }
- public void addHadJobByDate(Date startTime,Date endTime){
- List<Map<String, Object>> dateList = htAnalogDataMapper.getDateList(startTime,endTime);
- log.info("addHadJob---总记录"+dateList.size());
- for (Map<String,Object> map:dateList) {
- long currentTimeMillis = System.currentTimeMillis();
- int siteId = Integer.parseInt(map.get("siteId").toString());
- Date date = DateUtils.parseDate(map.get("dat").toString());
- HadSiteStatic hadSiteStatic = hadSiteStaticMax(siteId, date);
- getSiteIco(siteId,date,hadSiteStatic);
- addTime(date,siteId,hadSiteStatic);
- hadSiteStaticMapper.insert(hadSiteStatic);
- long currentTimeMillis1 = System.currentTimeMillis();
- log.info("addHadJob---处理一条数据需要的时间"+(currentTimeMillis1-currentTimeMillis));
- }
- log.info("addHadJob---定时任务处理完成");
- }
- /**
- * 添加最大值最小值平均值
- * @param siteId
- * @param date
- * @return
- */
- public HadSiteStatic hadSiteStaticMax(Integer siteId,Date date){
- Date dayStartTime = DateUtils.getDayStartTime(date);
- Date dayEndTime = DateUtils.getDayEndTime(date);
- HadSiteStatic hadSiteStatic = null;
- Map<String, Double> map = htAnalogDataMapper.selectMaxAndMinAndAvg(siteId, dayStartTime, dayEndTime);
- if (null != map){
- hadSiteStatic = new HadSiteStatic();
- hadSiteStatic.setSiteId(siteId);
- hadSiteStatic.setHadTime(dayStartTime);
- hadSiteStatic.setMaxEpp(map.get("eppMax"));
- hadSiteStatic.setMinEpp(map.get("eppMin"));
- hadSiteStatic.setAvgEpp(map.get("eppAvg"));
- hadSiteStatic.setMaxDemand(map.get("demandMax"));
- hadSiteStatic.setMinDemand(map.get("demandMin"));
- hadSiteStatic.setAvgDemand(map.get("demandAvg"));
- }
- return hadSiteStatic;
- }
- /**
- * 获取图标集合
- * @param siteId
- * @param dayStartTime
- * @param hadSiteStatic
- */
- public void getSiteIco(Integer siteId,Date dayStartTime,HadSiteStatic hadSiteStatic){
- List<Object> objects = new ArrayList<>();
- objects.add(0.0);
- List<Object> hisList = new ArrayList<>();
- List<Object> dates = new ArrayList<>();
- dates.add("00:00:00");
- for (int i = 2; i < 24 ; i+=2) {
- //结束时间
- Date hours = DateUtils.setHours(dayStartTime, i);
- Map<String, Double> loadIco = htAnalogDataMapper.selectMaxAndMinAndAvg(siteId, dayStartTime, hours);
- if (null == loadIco){
- objects.add(0.00);
- }else {
- objects.add(loadIco.get("eppMax")-loadIco.get("eppMin"));
- }
- HtAnalogData htAnalogData = htAnalogDataMapper.selectByEndTime(dayStartTime, hours, siteId, null);
- Optional.ofNullable(htAnalogData).ifPresent(hta -> {
- hta.setDataTime(hours);
- hisList.add(hta);
- });
- dayStartTime = hours;
- dates.add(DateUtils.getTime(hours));
- }
- CommonIcoVO build = CommonIcoVO.builder().name("").list(objects).listDate(dates).build();
- hadSiteStatic.setLoadIco(JsonUtils.toJson(build));
- hadSiteStatic.setHisIco(JsonUtils.toJson(hisList));
- }
- public void addTime(Date date,Integer siteId,HadSiteStatic hadSiteStatic){
- TimeShareVO timeShareVO = new TimeShareVO();
- //尖峰时间
- 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(DateUtils.addDays(date,1), 7);
- //平谷
- Date oneTwo = DateUtils.setHours(date, 12);
- Date oneSeven = DateUtils.setHours(date, 17);
- //尖
- Map<String, Double> nToe = htAnalogDataMapper.selectMaxAndMinAndAvg(siteId, nine, eleven);
- Map<String, Double> nTot = htAnalogDataMapper.selectMaxAndMinAndAvg(siteId, nineTeen, twoOne);
- timeShareVO.setNeed(Arith.add(timeSub(nToe),timeSub(nTot)));
- //高峰
- Map<String, Double> eTot = htAnalogDataMapper.selectMaxAndMinAndAvg(siteId, eight, ten);
- Map<String, Double> hnTot = htAnalogDataMapper.selectMaxAndMinAndAvg(siteId, oneEight, oneNine);
- Map<String, Double> tTot = htAnalogDataMapper.selectMaxAndMinAndAvg(siteId, twoOne, twoThree);
- timeShareVO.setPeak(Arith.add(Arith.add(timeSub(eTot), timeSub(hnTot)), timeSub(tTot)));
- //低谷
- Map<String, Double> tTos = htAnalogDataMapper.selectMaxAndMinAndAvg(siteId, twoThree, seven);
- timeShareVO.setGrain(timeSub(tTos));
- //平谷
- Map<String, Double> oToo = htAnalogDataMapper.selectMaxAndMinAndAvg(siteId, oneTwo, oneSeven);
- timeShareVO.setFlat(timeSub(oToo));
- hadSiteStatic.setTimeShare(JsonUtils.toJson(timeShareVO));
- }
- public Double timeSub(Map<String,Double> map){
- return Optional.ofNullable(map).map(hadTotal -> Arith.sub(map.get("eppMax"),map.get("eppMin"))).orElse(0.00);
- }
- }
|