From 75f9894ebac12b13c7ead27c3e16db833ee9251a Mon Sep 17 00:00:00 2001 From: z1415143022 <z1415143022@163.com> Date: 星期二, 25 三月 2025 20:02:45 +0800 Subject: [PATCH] Merge branch 'develop1.0' into zhangjw_from_develop1.0 --- zhitan-system/src/main/java/com/zhitan/home/service/HomePageServiceImpl.java | 179 ++++++++++++++++++----------------------------------------- 1 files changed, 56 insertions(+), 123 deletions(-) diff --git a/zhitan-system/src/main/java/com/zhitan/home/service/HomePageServiceImpl.java b/zhitan-system/src/main/java/com/zhitan/home/service/HomePageServiceImpl.java index d7ac636..a785a08 100644 --- a/zhitan-system/src/main/java/com/zhitan/home/service/HomePageServiceImpl.java +++ b/zhitan-system/src/main/java/com/zhitan/home/service/HomePageServiceImpl.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zhitan.basicdata.domain.SysEnergy; import com.zhitan.basicdata.mapper.SysEnergyMapper; -import com.zhitan.common.constant.CommonConst; import com.zhitan.common.core.domain.entity.SysDictData; import com.zhitan.common.enums.TimeType; import com.zhitan.consumptionanalysis.domain.vo.RankingEnergyData; @@ -16,7 +15,7 @@ import com.zhitan.home.service.impl.IHomePageService; import com.zhitan.model.domain.EnergyIndex; import com.zhitan.model.domain.ModelNode; -import com.zhitan.model.domain.vo.ModelNodeIndexInfor; +import com.zhitan.model.domain.vo.ModelNodeIndexInfo; import com.zhitan.model.mapper.ModelNodeMapper; import com.zhitan.model.service.IEnergyIndexService; import com.zhitan.model.service.IModelNodeService; @@ -30,9 +29,7 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; -import javax.annotation.Resource; import java.math.BigDecimal; -import java.math.RoundingMode; import java.text.DecimalFormat; import java.util.*; import java.util.stream.Collectors; @@ -48,18 +45,11 @@ public class HomePageServiceImpl implements IHomePageService { private final SysEnergyMapper sysEnergyMapper; - private final IModelNodeService modelNodeService; - private final IDataItemService dataItemService; - private final IEnergyIndexService energyIndexService; - private final ISysDictDataService sysDictDataService; - - @Resource private ModelNodeMapper modelNodeMapper; - @Resource private PeakValleyMapper electricityDataItemMapper; @@ -69,7 +59,7 @@ DateTime tongbiTime = DateUtil.offsetMonth(currentTime, -12); DateTime huanbiTime = DateUtil.offsetMonth(currentTime, -1); - if(TimeType.DAY.name().equals( timeType)){ + if (TimeType.DAY.name().equals(timeType)) { huanbiTime = DateUtil.offsetDay(currentTime, -1); } @@ -80,22 +70,22 @@ final Map<String, List<HomeEnergyStatisticsVO>> tongbiMap = tongbi.stream().collect(Collectors.groupingBy(HomeEnergyStatisticsVO::getEnergyNo)); final Map<String, List<HomeEnergyStatisticsVO>> huanbiMap = huanbi.stream().collect(Collectors.groupingBy(HomeEnergyStatisticsVO::getEnergyNo)); - current.stream().forEach(vo->{ + current.stream().forEach(vo -> { final String energyNo = vo.getEnergyNo(); final Double count = vo.getCount(); final Double tongbiCount = tongbiMap.get(energyNo).stream().map(HomeEnergyStatisticsVO::getCount).mapToDouble(Double::doubleValue).sum(); final Double huanbiCount = huanbiMap.get(energyNo).stream().map(HomeEnergyStatisticsVO::getCount).mapToDouble(Double::doubleValue).sum(); - vo.setTonCount(format2Double( vo.getCount() * Double.valueOf(vo.getCoefficient()))); + vo.setTonCount(format2Double(vo.getCount() * Double.valueOf(vo.getCoefficient()))); if (tongbiCount != 0) { - vo.setTongbi(format2Double( (count - tongbiCount) / tongbiCount * 100)); - }else { + vo.setTongbi(format2Double((count - tongbiCount) / tongbiCount * 100)); + } else { vo.setTongbi(0D); } if (huanbiCount != 0) { - vo.setHuanbi (format2Double((count - huanbiCount) / huanbiCount * 100)); - }else { + vo.setHuanbi(format2Double((count - huanbiCount) / huanbiCount * 100)); + } else { vo.setHuanbi(0D); } }); @@ -141,8 +131,8 @@ if (ObjectUtils.isEmpty(modelNode)) { return voList; } - List<ModelNodeIndexInfor> inforList = modelNodeService.getModelNodeIndexIdRelationInforByNodeId(modelNode.getNodeId()); - List<String> indexIds = inforList.stream().map(ModelNodeIndexInfor::getIndexId).collect(Collectors.toList()); + List<ModelNodeIndexInfo> inforList = modelNodeService.getModelNodeIndexIdRelationInforByNodeId(modelNode.getNodeId()); + List<String> indexIds = inforList.stream().map(ModelNodeIndexInfo::getIndexId).collect(Collectors.toList()); // 閫氳繃indexIds鎵綿ata_Item鏁版嵁 List<DataItem> itemList = dataItemService.getDataItemTimeRangeInforByIndexIds(beginTime, endTime, shixuTimeType, indexIds); // 鏌ヨ鐐逛綅璇︾粏淇℃伅 @@ -157,7 +147,7 @@ List<String> indexs = energyTypeMap.get(ratioVO.getEnergyNo()); if (CollectionUtils.isEmpty(indexs)) { ratioVO.setCount(0D); - }else { + } else { // 鎵惧埌鍚堣鍊� double doubleCount = itemList.stream().filter(li -> indexs.contains(li.getIndexId())).mapToDouble(DataItem::getValue).sum(); ratioVO.setCount(format2Double(doubleCount)); @@ -180,7 +170,7 @@ List<HomePeakValleyVO> voList = new ArrayList<>(); // 鏌ヨ鍣ㄥ叿绫诲瀷 final List<SysDictData> electricityPrice = sysDictDataService.selectDictDataByType("electricity_price"); - electricityPrice.stream().forEach(v->{ + electricityPrice.stream().forEach(v -> { HomePeakValleyVO vo = new HomePeakValleyVO(); vo.setTimeName(v.getDictLabel()); vo.setTimeType(v.getDictValue()); @@ -214,17 +204,17 @@ Map<String, List<ElectricityDataItem>> electricityDataMap; // 鏌ヨ鐐逛綅淇℃伅 final ModelNode firstModeNodeInfo = modelNodeMapper.getFirstModeNodeInfo(modelcode); - if(null == firstModeNodeInfo){ + if (null == firstModeNodeInfo) { return voList; } double totalElectric; // 鏌ヨ鐐逛綅淇℃伅 - List<ModelNodeIndexInfor> nodeIndexInfoList = modelNodeMapper.selectIndexByModelCodeAndNodeId(modelcode, firstModeNodeInfo.getNodeId()); + List<ModelNodeIndexInfo> nodeIndexInfoList = modelNodeMapper.selectIndexByModelCodeAndNodeId(modelcode, firstModeNodeInfo.getNodeId()); if (CollectionUtils.isNotEmpty(nodeIndexInfoList)) { - Set<String> indexSet = nodeIndexInfoList.stream().map(ModelNodeIndexInfor::getIndexId).collect(Collectors.toSet()); + Set<String> indexSet = nodeIndexInfoList.stream().map(ModelNodeIndexInfo::getIndexId).collect(Collectors.toSet()); List<ElectricityDataItem> dataItemList = electricityDataItemMapper.getDataStatistics(indexSet, beginTime, endTime, shixuTimeType); - if(null != dataItemList){ + if (null != dataItemList) { totalElectric = dataItemList.stream().map(ElectricityDataItem::getElectricity).mapToDouble(BigDecimal::doubleValue).sum(); } else { totalElectric = 0; @@ -235,13 +225,13 @@ totalElectric = 0; electricityDataMap = null; } - if(null != electricityDataMap) { + if (null != electricityDataMap) { voList.stream().forEach(vo -> { final List<ElectricityDataItem> electricityDataItems = electricityDataMap.get(vo.getTimeType()); - if(null != electricityDataItems) { + if (null != electricityDataItems) { final double sum = electricityDataItems.stream().map(ElectricityDataItem::getElectricity).mapToDouble(BigDecimal::doubleValue).sum(); vo.setCount(format2Double(sum)); - if(totalElectric != 0) { + if (totalElectric != 0) { vo.setPercentage(format2Double(sum / totalElectric * 100)); } } @@ -292,8 +282,8 @@ if (ObjectUtils.isEmpty(modelNode)) { return vo; } - List<ModelNodeIndexInfor> inforList = modelNodeService.getModelNodeIndexIdRelationInforByNodeId(modelNode.getNodeId()); - List<String> indexIds = inforList.stream().map(ModelNodeIndexInfor::getIndexId).collect(Collectors.toList()); + List<ModelNodeIndexInfo> inforList = modelNodeService.getModelNodeIndexIdRelationInforByNodeId(modelNode.getNodeId()); + List<String> indexIds = inforList.stream().map(ModelNodeIndexInfo::getIndexId).collect(Collectors.toList()); // 閫氳繃indexIds鎵綿ata_Item鏁版嵁 List<DataItem> itemList = dataItemService.getDataItemTimeRangeInforByIndexIds(beginTime, endTime, shixuTimeType, indexIds); final Map<String, List<DataItem>> dataItemMap = itemList.stream().collect(Collectors.groupingBy(li -> DateUtil.format(li.getDataTime(), timeFormat))); @@ -309,11 +299,11 @@ xdataList.add(currentTime); final List<DataItem> dataItems = dataItemMap.get(currentTime); List<Double> energyCount = new ArrayList<>(); - energyTypeMap.forEach((energyType,IndexIdList)->{ + energyTypeMap.forEach((energyType, IndexIdList) -> { double sum; - if(null == dataItems){ + if (null == dataItems) { sum = 0; - }else { + } else { sum = dataItems.stream().filter(li -> IndexIdList.contains(li.getIndexId())).mapToDouble(DataItem::getValue).sum(); } final BigDecimal coefficient = (BigDecimal) energyCollectMap.get(energyType); @@ -335,14 +325,14 @@ vo.setXdata(xdataList.toArray(new String[0])); Double[][] array = new Double[sysEnergies.size()][xdataList.size()]; List<String> lengList = new ArrayList<>(); - energyCollectMap.keySet().forEach(key->{ + energyCollectMap.keySet().forEach(key -> { final String name = energyNameMap.get(key); lengList.add(name); }); - for(int i = 0; i < ydataList.size(); i++){ + for (int i = 0; i < ydataList.size(); i++) { final List<Double> doubleList = ydataList.get(i); - for(int n = 0; n < doubleList.size(); n++){ + for (int n = 0; n < doubleList.size(); n++) { array[n][i] = format2Double(doubleList.get(n)); } } @@ -352,108 +342,51 @@ } @Override - public List<RankingEnergyData> energyConsumptionRanking(String modelcode, String timeType) { + public List<RankingEnergyData> energyConsumptionRanking(String modelCode, String timeType) { + List<RankingEnergyData> energyDataList = new ArrayList<>(); - String nodeCategory = "2"; - LambdaQueryWrapper<ModelNode> modelNodeLambdaQueryWrapper = new LambdaQueryWrapper<>(); - modelNodeLambdaQueryWrapper.eq(ModelNode::getModelCode,modelcode); - modelNodeLambdaQueryWrapper.eq(ModelNode::getNodeCategory,nodeCategory); - List<ModelNode> modelNodeList = modelNodeMapper.selectList(modelNodeLambdaQueryWrapper); - if(CollectionUtils.isEmpty(modelNodeList)){ - return energyDataList; - } - final List<String> nodeIds = modelNodeList.stream().map(ModelNode::getNodeId).collect(Collectors.toList()); - List<ModelNodeIndexInfor> nodeIndexInforList = modelNodeMapper.selectIndexByNodeIds(modelcode ,nodeIds); - - final Map<String, String> nodeNameMap = new HashMap<>(); - nodeIndexInforList.forEach(n->{ - final String id = n.getNodeId(); - final String name = n.getName(); - if(!nodeNameMap.containsKey(id)){ - nodeNameMap.put(id,name); - } - }); - - // 鎸夌収鐐逛綅杩涜鍒嗙粍 - Map<String, List<ModelNodeIndexInfor>> nodeIndexMap = nodeIndexInforList.stream().collect( - Collectors.groupingBy(ModelNodeIndexInfor::getNodeId)); - final List<String> eneryIdList = nodeIndexInforList.stream().map(ModelNodeIndexInfor::getEnergyId).distinct().collect(Collectors.toList()); - final LambdaQueryWrapper<SysEnergy> queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.in(CollectionUtils.isNotEmpty(eneryIdList),SysEnergy::getEnersno,eneryIdList); - final List<SysEnergy> sysEnergies = sysEnergyMapper.selectList(queryWrapper); - //鑳芥簮缂栧彿鍜岃兘婧愭姌鏍囩郴鏁� - final Map<String, Object> energyCoefficientMap = sysEnergies.stream().collect(Collectors.toMap(SysEnergy::getEnersno, SysEnergy::getCoefficient)); - //index鍜岃兘婧� - final Map<String, String> indexIdEnergyIdMap = new HashMap<>(); - nodeIndexInforList.forEach(n->{ - final String indexId = n.getIndexId(); - final String energyId = n.getEnergyId(); - if(!indexIdEnergyIdMap.containsKey(indexId)){ - indexIdEnergyIdMap.put(indexId,energyId); - } - }); - List<String> indexIds = nodeIndexInforList.stream().filter(l -> StringUtils.isNotEmpty(l.getIndexId())).map(ModelNodeIndexInfor::getIndexId).collect(Collectors.toList()); Date queryTime = new Date(); -// Date queryTime = DateUtil.parseDateTime("2023-03-28 00:00:00"); Date beginTime; Date endTime; - String shixuTimeType; if (TimeType.DAY.name().equals(timeType)) { beginTime = DateUtil.beginOfDay(queryTime); endTime = DateUtil.endOfDay(queryTime); - shixuTimeType = TimeType.HOUR.name(); + timeType = TimeType.HOUR.name(); // 鏈� } else if (TimeType.MONTH.name().equals(timeType)) { beginTime = DateUtil.beginOfMonth(queryTime); endTime = DateUtil.endOfMonth(queryTime); - shixuTimeType = TimeType.DAY.name(); + timeType = TimeType.DAY.name(); + // 骞� - } else { + } else if (TimeType.YEAR.name().equals(timeType)) { beginTime = DateUtil.beginOfYear(queryTime); endTime = DateUtil.endOfYear(queryTime); - shixuTimeType = TimeType.MONTH.name(); + timeType = TimeType.MONTH.name(); + + } else { + return energyDataList; } - // 鏍规嵁indexId鏌ヨdataItem - List<DataItem> dataItemList = new ArrayList<>(); - if(CollectionUtils.isNotEmpty(indexIds)) { - dataItemList = dataItemService.getDataItemTimeRangeInforByIndexIds(beginTime, endTime, shixuTimeType, indexIds); + + LambdaQueryWrapper<ModelNode> parentNodeLambdaQueryWrapper = new LambdaQueryWrapper<>(); + parentNodeLambdaQueryWrapper.eq(ModelNode::getModelCode, modelCode); + List<ModelNode> modelNodeList = modelNodeMapper.selectList(parentNodeLambdaQueryWrapper); + if (CollectionUtils.isEmpty(modelNodeList)) { + return energyDataList; } - Map<String, List<DataItem>> dataItemMap = dataItemList.stream().collect(Collectors.groupingBy(DataItem::getIndexId)); - - Map<String,BigDecimal> resultMap = new HashMap<>(); - nodeIndexMap.forEach((key, value) -> { - // 鎵惧嚭indexIds - List<String> indexIdList = value.stream().map(ModelNodeIndexInfor::getIndexId).collect(Collectors.toList()); - - indexIdList.forEach(indexId->{ - final List<DataItem> dataItems = dataItemMap.get(indexId); - final String energyId = indexIdEnergyIdMap.get(indexId); - final BigDecimal coefficient = (BigDecimal) energyCoefficientMap.get(energyId); - - if(CollectionUtils.isNotEmpty(dataItems) ){ - BigDecimal sum = BigDecimal.valueOf(dataItems.stream() - .mapToDouble(DataItem::getValue).sum()).setScale(CommonConst.DIGIT_2, RoundingMode.HALF_UP).multiply(coefficient); - - if (resultMap.containsKey(key)) { - resultMap.put(key, resultMap.get(key).add(sum)); - } else { - resultMap.put(key, sum); - } - } - }); + ModelNode parentNode = modelNodeList.stream().filter(x -> ObjectUtils.isEmpty(x.getParentId())).findFirst().orElse(null); + if (ObjectUtils.isEmpty(parentNode)) { + return energyDataList; + } + List<String> nodeIds = modelNodeList.stream().filter(x -> ObjectUtils.isNotEmpty(x.getParentId())) + .map(ModelNode::getNodeId).collect(Collectors.toList()); + if (ObjectUtils.isEmpty(nodeIds)) { + return energyDataList; + } + energyDataList = dataItemService.getHomePageConsumptionRanking(nodeIds, timeType, beginTime, endTime); + energyDataList.forEach(x -> { + x.energyConsumption = new BigDecimal(x.energyConsumption).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); }); - - resultMap.forEach((key,value)->{ - RankingEnergyData rankingEnergyData = new RankingEnergyData(); - rankingEnergyData.setNodeId(key); - rankingEnergyData.setNodeName(nodeNameMap.get(key)); - rankingEnergyData.setEnergyConsumption(value.doubleValue()); - energyDataList.add(rankingEnergyData); - }); - Collections.sort(energyDataList, Comparator.comparingDouble((RankingEnergyData item) -> item.getEnergyConsumption()).reversed()); - // 鑾峰彇鍓�5鏉¤褰� - List<RankingEnergyData> top5Items = energyDataList.subList(0, Math.min(5, energyDataList.size())); - - return top5Items; + return energyDataList; } } -- Gitblit v1.9.3