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