Browse Source

接口完善测试

yq 4 years ago
parent
commit
5b80f3e312

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

@@ -3,6 +3,7 @@ package com.bizmatics.controller.web;
 
 import com.bizmatics.common.core.bean.ApiResult;
 import com.bizmatics.service.HtAnalogDataService;
+import com.bizmatics.service.impl.HtAnalogDataServiceImpl;
 import com.bizmatics.service.vo.CommonIcoVO;
 import com.bizmatics.service.vo.HadCountVO;
 import com.bizmatics.service.vo.TimeShareVO;
@@ -29,8 +30,6 @@ public class HtAnalogDataController {
     @Autowired
     private HtAnalogDataService htAnalogDataService;
 
-
-
     /**
      * 首页日/月/年用电量
      * @return
@@ -94,5 +93,11 @@ public class HtAnalogDataController {
     public ApiResult<List<CommonIcoVO>> getElectricIco(@RequestParam Integer siteId,@RequestParam Date date){
         return ApiResult.success(htAnalogDataService.getElectricIco(siteId,date));
     }
+
+
+    @GetMapping("test")
+    public void test(Date startTime,Date endTime){
+        htAnalogDataService.getCount(startTime,endTime);
+    }
 }
 

+ 1 - 1
fiveep-controller/src/main/resources/application-dev.properties

@@ -1,7 +1,7 @@
 debug=true
 spring.main.lazy-initialization=false
 spring.main.allow-bean-definition-overriding=true
-temp.basedir=D:/dc
+temp.basedir=C:/Users/pc/Desktop
 # application
 server.port=8010
 # mybatis-plus

+ 1 - 3
fiveep-model/src/main/java/com/bizmatics/model/HadDataLog.java

@@ -28,9 +28,7 @@ public class HadDataLog implements Serializable {
     @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
-    private Integer minId;
-
-    private Integer maxId;
+    private String siteIdList;
 
     private String hadData;
 

+ 4 - 0
fiveep-persistence/src/main/java/com/bizmatics/persistence/mapper/SiteMapper.java

@@ -28,5 +28,9 @@ public interface SiteMapper extends CrudMapper<Site> {
                     @Param("name") String name);
 
 
+    List<Integer> idList(@Param("userId") Integer userId,
+                    @Param("name") String name);
+
+
 
 }

+ 1 - 2
fiveep-persistence/src/main/resources/mapper/mysql/HadDataLogMapper.xml

@@ -5,8 +5,7 @@
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.bizmatics.model.HadDataLog">
         <id column="id" property="id" />
-        <result column="min_id" property="minId" />
-        <result column="max_id" property="maxId" />
+        <result column="site_id_list" property="siteIdList" />
         <result column="had_data" property="hadData" />
         <result column="data_time" property="dataTime" />
     </resultMap>

+ 14 - 0
fiveep-persistence/src/main/resources/mapper/mysql/SiteMapper.xml

@@ -51,6 +51,20 @@
             </if>
         </where>
     </select>
+    <select id="idList" resultType="java.lang.Integer">
+        select s.id
+        from user_site as us
+        inner join site as s
+        on us.site_id = s.id
+        <where>
+            <if test="userId != null and userId != 0">
+                and us.user_id = #{userId}
+            </if>
+            <if test="name != null and name != ''">
+                and s.site_name LIKE CONCAT(CONCAT('%', #{name}), '%')
+            </if>
+        </where>
+    </select>
 
 
 </mapper>

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

@@ -67,4 +67,7 @@ public interface HtAnalogDataService extends CrudService<HtAnalogData> {
     List<CommonIcoVO> getElectricIco(Integer siteId,Date date);
 
 
+    public void getCount(Date startTime,Date endTime);
+
+
 }

+ 77 - 19
fiveep-service/src/main/java/com/bizmatics/service/impl/HtAnalogDataServiceImpl.java

@@ -1,21 +1,33 @@
 package com.bizmatics.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.bizmatics.common.core.exception.BusinessException;
 import com.bizmatics.common.core.util.DateUtils;
+import com.bizmatics.common.spring.util.JsonUtils;
 import com.bizmatics.model.AlarmPower;
+import com.bizmatics.model.HadDataLog;
 import com.bizmatics.model.HtAnalogData;
+import com.bizmatics.model.Site;
+import com.bizmatics.persistence.mapper.HadDataLogMapper;
 import com.bizmatics.persistence.mapper.HtAnalogDataMapper;
+import com.bizmatics.persistence.mapper.SiteMapper;
+import com.bizmatics.persistence.mapper.UserSiteMapper;
+import com.bizmatics.service.HadDataLogService;
 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.CommonIcoVO;
-import com.bizmatics.service.vo.HadCountVO;
-import com.bizmatics.service.vo.TimeShareVO;
+import com.bizmatics.service.vo.*;
+import com.fasterxml.jackson.core.type.TypeReference;
+import org.apache.commons.math3.stat.descriptive.summary.Product;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.*;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * <p>
@@ -30,6 +42,11 @@ public class HtAnalogDataServiceImpl extends AbstractCrudService<HtAnalogDataMap
 
     @Autowired
     private HtAnalogDataMapper htAnalogDataMapper;
+    @Autowired
+    private SiteMapper siteMapper;
+
+    @Autowired
+    private HadDataLogService hadDataLogService;
 
     @Override
     public HadCountVO selectCount() {
@@ -198,22 +215,63 @@ public class HtAnalogDataServiceImpl extends AbstractCrudService<HtAnalogDataMap
     }
 
 
-
-    /**
-     * 汇总
-     * @param list
-     * @param handlingStatus
-     * @param startTime
-     * @param endTime
-     * @param digitalStatus
-     */
-    public Long getCount(List<AlarmPower> list, Integer handlingStatus, Date startTime, Date endTime, Integer digitalStatus, String measName){
-        return list.stream()
-                .filter(alarmPower -> alarmPower.getSendingTime().after(startTime) && alarmPower.getSendingTime().before(endTime))
-                .filter(alarmPower -> Optional.ofNullable(handlingStatus).map(hand -> hand.equals(alarmPower.getHandlingStatus())).orElse(true))
-                .filter(alarmPower -> Optional.ofNullable(digitalStatus).map(dig -> dig.equals(alarmPower.getDigitalValue())).orElse(true))
-                .filter(alarmPower -> Optional.ofNullable(measName).map(means -> means.equals(alarmPower.getMeasName())).orElse(true))
-                .count();
+    @Override
+    public void getCount(Date startTime,Date endTime){
+        Integer userId = SessionLocal.getUserId();
+        List<Integer> idList = siteMapper.idList(userId, null);
+        LambdaQueryWrapper<HadDataLog> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.between(HadDataLog::getDataTime,startTime,endTime);
+        long l = System.currentTimeMillis();
+        List<HadDataLog> list = hadDataLogService.list(queryWrapper);
+        long currentTimeMillis = System.currentTimeMillis();
+        System.out.println("耗时间"+(currentTimeMillis-l));
+        List<SiteMaxVO> siteMaxVOList = new ArrayList<>();
+        for (HadDataLog hadDataLog:list) {
+            List<Integer> siteIdList = JsonUtils.fromJson(hadDataLog.getSiteIdList(), new TypeReference<List<Integer>>(){});
+            List<Integer> origin = new ArrayList<>(idList);
+            origin.retainAll(siteIdList);
+            // 有交集
+            if(CollectionUtils.isNotEmpty(origin)){
+                List<HadDataLogVO> hadDataLogVos = JsonUtils.fromJson(hadDataLog.getHadData(), new TypeReference<List<HadDataLogVO>>(){});
+                //分组求每个站点的最大值和最小值
+                Map<Integer, DoubleSummaryStatistics> collect = hadDataLogVos.stream()
+                        .collect(Collectors.groupingBy(HadDataLogVO::getSiteId, Collectors.summarizingDouble(HadDataLogVO::getEpp)));
+                for (Integer siteId:collect.keySet()) {
+                    if (CollectionUtils.isEmpty(siteMaxVOList)){
+                        SiteMaxVO siteMaxVO = new SiteMaxVO();
+                        siteMaxVO.setSiteId(siteId);
+                        siteMaxVO.setMaxEpp(collect.get(siteId).getMax());
+                        siteMaxVO.setMinEpp(collect.get(siteId).getMin());
+                        siteMaxVOList.add(siteMaxVO);
+                    }else {
+                        siteMaxVOList.stream()
+                                .filter(siteMaxVO -> siteMaxVO.getSiteId().equals(siteId))
+                                .findFirst()
+                                .map(siteMaxVO -> {
+                                    if (siteMaxVO.getMaxEpp() < collect.get(siteId).getMax()){
+                                        siteMaxVO.setMaxEpp(collect.get(siteId).getMax());
+                                    }
+                                    if (siteMaxVO.getMinEpp() < collect.get(siteId).getMin()){
+                                        siteMaxVO.setMinEpp(collect.get(siteId).getMin());
+                                    }
+                                    return Optional.empty();
+                                }).orElseGet(() -> {
+                            SiteMaxVO siteMaxVO = new SiteMaxVO();
+                            siteMaxVO.setSiteId(siteId);
+                            siteMaxVO.setMaxEpp(collect.get(siteId).getMax());
+                            siteMaxVO.setMinEpp(collect.get(siteId).getMin());
+                            siteMaxVOList.add(siteMaxVO);
+                            return Optional.empty();
+                        });
+                    }
+                }
+            }
+        }
+        Double count = 0.00;
+        for (SiteMaxVO siteMaxVO:siteMaxVOList) {
+            count = siteMaxVO.getMaxEpp()-siteMaxVO.getMinEpp();
+        }
+        System.out.println(count);
     }
 
 }

+ 3 - 2
fiveep-service/src/main/java/com/bizmatics/service/job/RatAnalogTask.java

@@ -67,10 +67,11 @@ public class RatAnalogTask {
                         List<HadDataLogVO> collect = hadVoList.stream().sorted(Comparator.comparing(HadDataLogVO::getSiteId)).collect(Collectors.toList());
                         List<List<HadDataLogVO>> rsList = Lists.partition(collect, 2000);
                         for (List<HadDataLogVO> logVOS:rsList) {
+                            ArrayList<HadDataLogVO> distant = logVOS.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(HadDataLogVO::getSiteId))), ArrayList::new));
+                            List<Integer> siteList = distant.stream().map(HadDataLogVO::getSiteId).collect(Collectors.toList());
                             HadDataLog hadDataLog = new HadDataLog();
                             hadDataLog.setDataTime(startTime);
-                            hadDataLog.setMinId(logVOS.get(0).getSiteId());
-                            hadDataLog.setMaxId(logVOS.get(logVOS.size()-1).getSiteId());
+                            hadDataLog.setSiteIdList(JsonUtils.toJson(siteList));
                             hadDataLog.setHadData(JsonUtils.toJson(logVOS));
                             hadDataLogMapper.insert(hadDataLog);
                         }

+ 17 - 0
fiveep-service/src/main/java/com/bizmatics/service/vo/SiteMaxVO.java

@@ -0,0 +1,17 @@
+package com.bizmatics.service.vo;
+
+import lombok.Data;
+
+/**
+ * @author yq
+ * @date 2021/7/18 16:08
+ */
+@Data
+public class SiteMaxVO {
+
+    private Integer siteId;
+
+    private Double maxEpp;
+
+    private Double minEpp;
+}