yq 4 rokov pred
rodič
commit
215ba76f17

+ 3 - 3
fiveep-controller/src/main/java/com/bizmatics/controller/web/HadDataLogController.java → fiveep-controller/src/main/java/com/bizmatics/controller/web/HadAllStaticController.java

@@ -11,11 +11,11 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author ya
- * @since 2021-07-18
+ * @since 2021-07-20
  */
 @Controller
-@RequestMapping("/hadDataLog")
-public class HadDataLogController {
+@RequestMapping("/hadAllStatic")
+public class HadAllStaticController {
 
 }
 

+ 4 - 4
fiveep-controller/src/main/java/com/bizmatics/controller/web/HtAnalogDataController.java

@@ -54,7 +54,7 @@ public class HtAnalogDataController {
      * @return
      */
     @GetMapping("eptrendIcoMonth")
-    public ApiResult<CommonIcoVO> getTrendByMonth(){
+    public ApiResult<List<CommonIcoVO>> getTrendByMonth(){
         return ApiResult.success(htAnalogDataService.selectTrendByMonth());
     }
 
@@ -73,12 +73,12 @@ public class HtAnalogDataController {
     /**
      * 分时电量
      * @param siteId 站点id
-     * @param date 时间
+     * @param type 时间
      * @return
      */
     @GetMapping("timeShare")
-    public ApiResult<TimeShareVO> getTimeShare(@RequestParam Integer siteId,@RequestParam Date date){
-        return ApiResult.success(htAnalogDataService.getTimeShare(siteId,date));
+    public ApiResult<TimeShareVO> getTimeShare(@RequestParam Integer siteId,@RequestParam Integer type){
+        return ApiResult.success(htAnalogDataService.getTimeShare(siteId,type));
     }
 
     /**

+ 4 - 0
fiveep-model/src/main/java/com/bizmatics/model/HadSiteStatic.java

@@ -10,6 +10,8 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
+import javax.xml.soap.Text;
+
 /**
  * <p>
  * 
@@ -48,5 +50,7 @@ public class HadSiteStatic implements Serializable {
 
     private Double avgDemand;
 
+    private String timeShare;
+
 
 }

+ 7 - 0
fiveep-persistence/src/main/java/com/bizmatics/persistence/mapper/HadSiteStaticMapper.java

@@ -2,8 +2,11 @@ package com.bizmatics.persistence.mapper;
 
 import com.bizmatics.model.HadSiteStatic;
 import com.bizmatics.common.mvc.base.CrudMapper;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
+import java.util.Date;
+
 /**
  * <p>
  *  Mapper 接口
@@ -15,4 +18,8 @@ import org.springframework.stereotype.Repository;
 @Repository
 public interface HadSiteStaticMapper extends CrudMapper<HadSiteStatic> {
 
+
+    Double selectCount(@Param("userId") Integer userId,
+                        @Param("startTime") Date startTime,
+                        @Param("endTime") Date endTime);
 }

+ 7 - 1
fiveep-persistence/src/main/java/com/bizmatics/persistence/mapper/HtAnalogDataMapper.java

@@ -41,6 +41,11 @@ public interface HtAnalogDataMapper extends CrudMapper<HtAnalogData> {
                                              @Param("endTime") Date endTime);
 
 
+    Double selectCount(@Param("siteId") Integer siteId,
+                                             @Param("startTime") Date startTime,
+                                             @Param("endTime") Date endTime);
+
+
     List<HtAnalogData> list(@Param("startTime") Date startTime,
                             @Param("endTime") Date endTime,
                             @Param("deviceCode") String deviceCode);
@@ -52,5 +57,6 @@ public interface HtAnalogDataMapper extends CrudMapper<HtAnalogData> {
                           @Param("endTime") Date endTime);
 
 
-    List<Date> getDateList();
+    List<Map<String,Object>> getDateList(@Param("startTime") Date startTime,
+                                         @Param("endTime") Date endTime);
 }

+ 3 - 2
fiveep-persistence/src/main/java/com/bizmatics/persistence/mapper/SiteMapper.java

@@ -1,5 +1,6 @@
 package com.bizmatics.persistence.mapper;
 
+import com.bizmatics.model.Device;
 import com.bizmatics.model.Site;
 import com.bizmatics.common.mvc.base.CrudMapper;
 import org.apache.ibatis.annotations.Param;
@@ -28,8 +29,8 @@ public interface SiteMapper extends CrudMapper<Site> {
                     @Param("name") String name);
 
 
-    List<Integer> idList(@Param("userId") Integer userId,
-                    @Param("name") String name);
+    List<Device> idList(@Param("userId") Integer userId,
+                        @Param("name") String name);
 
 
 

+ 22 - 0
fiveep-persistence/src/main/resources/mapper/mysql/HadSiteStaticMapper.xml

@@ -13,5 +13,27 @@
         <result column="his_ico" property="hisIco" />
         <result column="had_time" property="hadTime" />
     </resultMap>
+    <select id="selectCount" resultType="java.lang.Double">
+        select
+        IFNULL(sum(siteSum),0)
+        FROM (
+            SELECT
+            (max(max_epp)-min(min_epp)) as siteSum
+            FROM
+            had_site_static as hs
+            INNER JOIN user_site as us
+            on hs.site_id = us.site_id
+            <where>
+                <if test="userId != null and userId != 0">
+                    and us.user_id = #{userId}
+                </if>
+                <if test="startTime != null and endTime != null">
+                    and hs.had_time between #{startTime} and #{endTime}
+                </if>
+        </where>
+            GROUP BY hs.site_id
+
+        )as t
+    </select>
 
 </mapper>

+ 28 - 4
fiveep-persistence/src/main/resources/mapper/mysql/HtAnalogDataMapper.xml

@@ -90,10 +90,34 @@
         order by had.id asc
         limit #{current},#{size}
     </select>
-    <select id="getDateList" resultType="java.util.Date">
-        SELECT DISTINCT dataTime FROM
-        ht_analog_data
-        GROUP BY dataTime
+    <select id="getDateList" resultType="java.util.Map">
+        select d.site_id as siteId,date(had.dataTime) as dat
+        FROM
+        ht_analog_data as had
+        INNER JOIN device as d
+        on had.deviceName = d.device_code
+        <where>
+            <if test="endTime != null and startTime != null">
+                and had.dataTime BETWEEN #{startTime} and #{endTime}
+            </if>
+        </where>
+        GROUP BY d.site_id,dat
+    </select>
+    <select id="selectCount" resultType="java.lang.Double">
+        select
+        IFNULL(sum(had.epp),0)
+        from device as d
+        inner join  ht_analog_data as had
+        on d.device_code = had.deviceName
+        <where>
+            <if test="siteId != null and siteId != 0">
+                and d.site_id = #{siteId}
+            </if>
+            <if test="endTime != null and startTime != null">
+                and dataTime BETWEEN #{startTime} and #{endTime}
+            </if>
+        </where>
     </select>
 
+
 </mapper>

+ 12 - 0
fiveep-service/src/main/java/com/bizmatics/service/HadSiteStaticService.java

@@ -3,6 +3,9 @@ package com.bizmatics.service;
 import com.bizmatics.model.HadSiteStatic;
 import com.bizmatics.common.mvc.base.CrudService;
 
+import java.util.Date;
+import java.util.List;
+
 /**
  * <p>
  *  服务类
@@ -13,4 +16,13 @@ import com.bizmatics.common.mvc.base.CrudService;
  */
 public interface HadSiteStaticService extends CrudService<HadSiteStatic> {
 
+
+
+     HadSiteStatic oneBySite(Integer siteId, Date startTime,Date endTime);
+
+     List<HadSiteStatic> list(Integer siteId, Date startTime, Date endTime);
+
+
+
+     Double getCount(Integer userId, Date startTime, Date endTime);
 }

+ 3 - 3
fiveep-service/src/main/java/com/bizmatics/service/HtAnalogDataService.java

@@ -38,7 +38,7 @@ public interface HtAnalogDataService extends CrudService<HtAnalogData> {
      * 用电趋势图
      * @return
      */
-    CommonIcoVO selectTrendByMonth();
+    List<CommonIcoVO> selectTrendByMonth();
 
 
 
@@ -52,10 +52,10 @@ public interface HtAnalogDataService extends CrudService<HtAnalogData> {
     /**
      * 分时电量
      * @param siteId
-     * @param date
+     * @param type
      * @return
      */
-    TimeShareVO getTimeShare(Integer siteId, Date date);
+    TimeShareVO getTimeShare(Integer siteId, Integer type);
 
     /**
      * 需量趋势图

+ 29 - 0
fiveep-service/src/main/java/com/bizmatics/service/impl/HadSiteStaticServiceImpl.java

@@ -1,11 +1,16 @@
 package com.bizmatics.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.bizmatics.model.HadSiteStatic;
 import com.bizmatics.persistence.mapper.HadSiteStaticMapper;
 import com.bizmatics.service.HadSiteStaticService;
 import com.bizmatics.common.mvc.base.AbstractCrudService;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
+import java.util.List;
+
 /**
  * <p>
  *  服务实现类
@@ -17,4 +22,28 @@ import org.springframework.stereotype.Service;
 @Service
 public class HadSiteStaticServiceImpl extends AbstractCrudService<HadSiteStaticMapper, HadSiteStatic> implements HadSiteStaticService {
 
+
+
+    @Override
+    public HadSiteStatic oneBySite(Integer siteId, Date startTime, Date endTime) {
+        LambdaQueryWrapper<HadSiteStatic> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper
+                .eq(HadSiteStatic::getSiteId,siteId)
+                .between(HadSiteStatic::getHadTime,startTime,endTime);
+        return this.getOne(queryWrapper);
+    }
+
+    @Override
+    public List<HadSiteStatic> list(Integer siteId, Date startTime, Date endTime) {
+        LambdaQueryWrapper<HadSiteStatic> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper
+                .eq(HadSiteStatic::getSiteId,siteId)
+                .between(HadSiteStatic::getHadTime,startTime,endTime);
+        return this.list(queryWrapper);
+    }
+
+    @Override
+    public Double getCount(Integer userId, Date startTime, Date endTime) {
+        return baseMapper.selectCount(userId,startTime,endTime);
+    }
 }

+ 154 - 276
fiveep-service/src/main/java/com/bizmatics/service/impl/HtAnalogDataServiceImpl.java

@@ -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;
         }
     }
 }
-
-

+ 100 - 99
fiveep-service/src/main/java/com/bizmatics/service/job/RatAnalogTask.java

@@ -10,11 +10,13 @@ import com.bizmatics.common.spring.util.JsonUtils;
 import com.bizmatics.model.*;
 import com.bizmatics.model.es.RtAnalog;
 import com.bizmatics.persistence.mapper.*;
-import com.bizmatics.service.HadDataLogService;
+import com.bizmatics.service.SiteService;
 import com.bizmatics.service.es.RtAnalogService;
+import com.bizmatics.service.util.Arith;
 import com.bizmatics.service.util.SessionLocal;
 import com.bizmatics.service.vo.CommonIcoVO;
 import com.bizmatics.service.vo.HadDataLogVO;
+import com.bizmatics.service.vo.TimeShareVO;
 import com.google.common.collect.Lists;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.CollectionUtils;
@@ -38,155 +40,154 @@ public class RatAnalogTask {
 
     @Autowired
     private HtAnalogDataMapper htAnalogDataMapper;
-
-    @Autowired
-    private HadDataLogMapper hadDataLogMapper;
-
     @Autowired
-    private DeviceMapper deviceMapper;
+    private SiteService siteService;
 
     @Autowired
     private HadSiteStaticMapper hadSiteStaticMapper;
 
     public void addAll(){
-        List<Device> list = deviceMapper.list(null, null, null, null, null, null);
-        List<Date> dateList = htAnalogDataMapper.getDateList();
-        List<Date> newList = new ArrayList<>();
-        for (Date date:dateList) {
-            newList.add(DateUtils.getDayStartTime(date));
-        }
-        List<Date> collect = newList.stream().distinct().collect(Collectors.toList());
-        for (Device device:list) {
+        List<Map<String, Object>> dateList = htAnalogDataMapper.getDateList(null,null);
+        for (Map<String,Object> map:dateList) {
             long currentTimeMillis = System.currentTimeMillis();
-            for (Date date:collect) {
-                Date dayStartTime = DateUtils.getDayStartTime(date);
-                Date dayEndTime = DateUtils.getDayEndTime(date);
-                LambdaQueryWrapper<HtAnalogData> objectLambdaQueryWrapper = Wrappers.lambdaQuery();
-                objectLambdaQueryWrapper.eq(HtAnalogData::getDeviceName,device.getDeviceCode())
-                        .between(HtAnalogData::getDataTime,dayStartTime,dayEndTime);
-                Integer count = htAnalogDataMapper.selectCount(objectLambdaQueryWrapper);
-                if (count > 0){
-                    Map<String, Double> map = htAnalogDataMapper.selectMaxAndMinAndAvg(device.getSiteId(), dayStartTime, dayEndTime);
-                    if (null != map){
-                        HadSiteStatic hadSiteStatic = new HadSiteStatic();
-                        hadSiteStatic.setSiteId(device.getSiteId());
-                        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"));
-                        List<Object> objects = new ArrayList<>();
-                        objects.add(0.0);
-                        List<Object> hisList = new ArrayList<>();
-                        hisList.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(dayStartTime, i);
-                            Map<String, Double> loadIco = htAnalogDataMapper.selectMaxAndMinAndAvg(device.getSiteId(), dayStartTime, hours);
-                            if (null == loadIco){
-                                objects.add(0.00);
-                            }else {
-                                objects.add(loadIco.get("eppMax")-loadIco.get("eppMin"));
-                            }
-                            HtAnalogData htAnalogData = htAnalogDataMapper.selectByEndTime(dayStartTime, hours, device.getSiteId(), null);
-                            hisList.add(JsonUtils.toJson(htAnalogData));
-                            dayStartTime = hours;
-                            dates.add(DateUtils.getTime(hours));
-                        }
-                        CommonIcoVO build = CommonIcoVO.builder().name("").list(objects).listDate(dates).build();
-                        CommonIcoVO build1 = CommonIcoVO.builder().name("").list(hisList).listDate(dates).build();
-                        hadSiteStatic.setLoadIco(JsonUtils.toJson(build));
-                        hadSiteStatic.setHisIco(JsonUtils.toJson(build1));
-                        hadSiteStaticMapper.insert(hadSiteStatic);
-                }
-                }
-            }
-            long e = System.currentTimeMillis();
-            log.info("处理时间"+(e-currentTimeMillis)+"毫秒");
-            log.info("一个设备处理完毕");
+            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("处理一条数据需要的时间"+(currentTimeMillis1-currentTimeMillis));
         }
+        log.info("定时任务处理完成");
+
     }
 
 
+
     @Scheduled(cron = "0 0 0 */1 * ?")
     public void addHadJob(){
-        Date date = new Date();
-        List<Device> list = deviceMapper.list(null, null, null, null, null, null);
-        for (Device device:list) {
-            HadSiteStatic hadSiteStatic = hadSiteStaticMax(device, date);
-            Optional.ofNullable(hadSiteStatic).ifPresent(hads ->{
-                getSiteIco(device,date,hadSiteStatic);
-                hadSiteStaticMapper.insert(hadSiteStatic);
-            });
+        Date newDate = new Date();
+        Date dayStartTime = DateUtils.getDayStartTime(newDate);
+        Date dayEndTime = DateUtils.getDayEndTime(newDate);
+        List<Map<String, Object>> dateList = htAnalogDataMapper.getDateList(dayStartTime,dayEndTime);
+        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("处理一条数据需要的时间"+(currentTimeMillis1-currentTimeMillis));
         }
+        log.info("定时任务处理完成");
     }
 
     /**
      * 添加最大值最小值平均值
-     * @param device
+     * @param siteId
      * @param date
      * @return
      */
-    public HadSiteStatic hadSiteStaticMax(Device device,Date date){
+    public HadSiteStatic hadSiteStaticMax(Integer siteId,Date date){
         Date dayStartTime = DateUtils.getDayStartTime(date);
         Date dayEndTime = DateUtils.getDayEndTime(date);
-        LambdaQueryWrapper<HtAnalogData> objectLambdaQueryWrapper = Wrappers.lambdaQuery();
-        objectLambdaQueryWrapper.eq(HtAnalogData::getDeviceName,device.getDeviceCode())
-                .between(HtAnalogData::getDataTime,dayStartTime,dayEndTime);
-        Integer count = htAnalogDataMapper.selectCount(objectLambdaQueryWrapper);
         HadSiteStatic hadSiteStatic = null;
-        if (count > 0){
-            Map<String, Double> map = htAnalogDataMapper.selectMaxAndMinAndAvg(device.getSiteId(), dayStartTime, dayEndTime);
-            if (null != map){
-                hadSiteStatic = new HadSiteStatic();
-                hadSiteStatic.setSiteId(device.getSiteId());
-                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"));
-            }
+        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 device
+     * @param siteId
      * @param dayStartTime
      * @param hadSiteStatic
      */
-    public void getSiteIco(Device device,Date dayStartTime,HadSiteStatic hadSiteStatic){
+    public void getSiteIco(Integer siteId,Date dayStartTime,HadSiteStatic hadSiteStatic){
         List<Object> objects = new ArrayList<>();
         objects.add(0.0);
         List<Object> hisList = new ArrayList<>();
-        hisList.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(dayStartTime, i);
-            Map<String, Double> loadIco = htAnalogDataMapper.selectMaxAndMinAndAvg(device.getSiteId(), dayStartTime, hours);
+            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, device.getSiteId(), null);
-            hisList.add(JsonUtils.toJson(htAnalogData));
+            HtAnalogData htAnalogData = htAnalogDataMapper.selectByEndTime(dayStartTime, hours, siteId, null);
+            if (null == htAnalogData){
+                HtAnalogData htAnalogData1 = new HtAnalogData();
+                htAnalogData1.setIa(0.00);
+                htAnalogData1.setIb(0.00);
+                htAnalogData1.setIc(0.00);
+                htAnalogData1.setUa(0.00);
+                htAnalogData1.setUb(0.00);
+                htAnalogData1.setUc(0.00);
+                htAnalogData = htAnalogData1;
+            }
+            hisList.add(htAnalogData);
             dayStartTime = hours;
             dates.add(DateUtils.getTime(hours));
         }
         CommonIcoVO build = CommonIcoVO.builder().name("").list(objects).listDate(dates).build();
-        CommonIcoVO build1 = CommonIcoVO.builder().name("").list(hisList).listDate(dates).build();
         hadSiteStatic.setLoadIco(JsonUtils.toJson(build));
-        hadSiteStatic.setHisIco(JsonUtils.toJson(build1));
+        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(date, 7);
+        //平谷
+        Date oneTwo = DateUtils.setHours(date, 12);
+        Date oneSeven = DateUtils.setHours(date, 17);
+        //尖
+        Double nToe = htAnalogDataMapper.selectCount(siteId, nine, eleven);
+        Double nTot = htAnalogDataMapper.selectCount(siteId, nineTeen, twoOne);
+        timeShareVO.setNeed(Arith.sub(nToe,nTot));
+        //高峰
+        Double eTot = htAnalogDataMapper.selectCount(siteId,eight, ten);
+        Double hnTot = htAnalogDataMapper.selectCount(siteId, oneEight, oneNine);
+        Double tTot = htAnalogDataMapper.selectCount(siteId, twoOne, twoThree);
+        timeShareVO.setPeak(Arith.sub(Arith.sub(eTot,hnTot),tTot));
+        //低谷
+        Double tTos = htAnalogDataMapper.selectCount(siteId, twoThree, seven);
+        timeShareVO.setGrain(tTos);
+        //平谷
+        Double oToo = htAnalogDataMapper.selectCount(siteId, oneTwo, oneSeven);
+        timeShareVO.setFlat(oToo);
 
+        hadSiteStatic.setTimeShare(JsonUtils.toJson(timeShareVO));
     }
 }

+ 4 - 4
fiveep-service/src/main/java/com/bizmatics/service/vo/TimeShareVO.java

@@ -12,17 +12,17 @@ public class TimeShareVO {
     /**
      * 尖
      */
-    private Double need;
+    private Double need = 0.00;
     /**
      * 峰
      */
-    private Double peak;
+    private Double peak = 0.00;
     /**
      * 谷
      */
-    private Double grain;
+    private Double grain = 0.00;
     /**
      * 平
      */
-    private Double flat;
+    private Double flat = 0.00;
 }