|
@@ -1,6 +1,7 @@
|
|
|
package com.persagy.apm.energy.report.monthly.detail.hotel.project.service.impl;
|
|
|
|
|
|
import com.google.common.collect.Maps;
|
|
|
+import com.persagy.apm.energy.report.monthly.config.type.constant.enums.BuildingTypeEnum;
|
|
|
import com.persagy.apm.energy.report.monthly.detail.common.model.vo.HotelPowerPublicConsumptionItem;
|
|
|
import com.persagy.apm.energy.report.monthly.detail.common.model.vo.PowerItemVO;
|
|
|
import com.persagy.apm.energy.report.monthly.detail.common.model.vo.PowerVO;
|
|
@@ -8,6 +9,7 @@ import com.persagy.apm.energy.report.monthly.detail.common.service.impl.ReportPo
|
|
|
import com.persagy.apm.energy.report.monthly.detail.hotel.project.model.ConvertReportHotelProjectDetailTool;
|
|
|
import com.persagy.apm.energy.report.monthly.detail.hotel.project.model.vo.HotelProjectPublicPowerConsumption;
|
|
|
import com.persagy.apm.energy.report.monthly.detail.hotel.project.service.IHotelProjectReportPublicPowerInfoService;
|
|
|
+import com.persagy.apm.energy.report.saasweb.model.vo.PoemsProjectVO;
|
|
|
import com.persagy.apm.energy.report.saasweb.model.vo.SimpleProjectVO;
|
|
|
import com.persagy.apm.energy.report.saasweb.service.ISaasWebService;
|
|
|
import org.assertj.core.util.Lists;
|
|
@@ -15,6 +17,8 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Comparator;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.concurrent.ConcurrentMap;
|
|
@@ -40,10 +44,11 @@ public class HotelProjectReportPublicPowerInfoServiceImpl extends ReportPowerInf
|
|
|
@Override
|
|
|
public HotelProjectPublicPowerConsumption getPublicConsumption(
|
|
|
String projectId, Date reportMonth, List<String> functionIdList) {
|
|
|
+ HotelProjectPublicPowerConsumption hotelProjectPublicPowerConsumption = new HotelProjectPublicPowerConsumption();
|
|
|
+
|
|
|
// 获取用电量信息
|
|
|
PowerVO powerInfo = getPowerInfoByProjectIds(
|
|
|
null, functionIdList, reportMonth, Lists.newArrayList(projectId));
|
|
|
- HotelProjectPublicPowerConsumption hotelProjectPublicPowerConsumption = new HotelProjectPublicPowerConsumption();
|
|
|
|
|
|
PowerItemVO summary = powerInfo.getSummary();
|
|
|
if (summary != null) {
|
|
@@ -59,6 +64,27 @@ public class HotelProjectReportPublicPowerInfoServiceImpl extends ReportPowerInf
|
|
|
hotelProjectPublicPowerConsumption.setConsumptionYearRange(summary.getSameRange());
|
|
|
// 国标引导值
|
|
|
hotelProjectPublicPowerConsumption.setGuideValue(getGuideValue(projectId));
|
|
|
+
|
|
|
+ // 获取同气候区项目
|
|
|
+ List<PoemsProjectVO> projectsInSameClimate = saasWebService.getProjectsByClimateAndBuildingType(
|
|
|
+ saasWebService.getProjectClimateZone(projectId), BuildingTypeEnum.HOTEL.getType());
|
|
|
+ if (!CollectionUtils.isEmpty(projectsInSameClimate)) {
|
|
|
+ // 同气候区项目数量
|
|
|
+ hotelProjectPublicPowerConsumption.setProjectNumWithinClimateZone(projectsInSameClimate.size());
|
|
|
+ List<String> projectIdsInSameClimate = projectsInSameClimate.stream().map(
|
|
|
+ PoemsProjectVO::getProjectId).collect(Collectors.toList());
|
|
|
+ // 获取同气候区项目本年累计单方用电量
|
|
|
+ List<Double> consumptionPerSqmCurrentYear = getConsumptionPerSqmCurrentYear(
|
|
|
+ projectIdsInSameClimate, functionIdList, reportMonth);
|
|
|
+ // 获取当前气候区排名
|
|
|
+ if (!CollectionUtils.isEmpty(consumptionPerSqmCurrentYear) && summary.getYearPerCount() != null) {
|
|
|
+ consumptionPerSqmCurrentYear = consumptionPerSqmCurrentYear.stream().
|
|
|
+ sorted(Comparator.reverseOrder()).collect(Collectors.toList());
|
|
|
+
|
|
|
+ hotelProjectPublicPowerConsumption.setRankWithinClimateZone(
|
|
|
+ consumptionPerSqmCurrentYear.indexOf(summary.getYearPerCount()) + 1);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 设置条目信息
|
|
@@ -74,6 +100,35 @@ public class HotelProjectReportPublicPowerInfoServiceImpl extends ReportPowerInf
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 获取一组项目本年累计单方用电量
|
|
|
+ *
|
|
|
+ * @param projectIds 项目id列表
|
|
|
+ * @param functionIdList 用电量分项列表
|
|
|
+ * @param reportMonth 报告月份
|
|
|
+ * @return 这组项目本年累计单方用电量
|
|
|
+ * @author lixing
|
|
|
+ * @version V1.0 2021/6/16 10:36 上午
|
|
|
+ */
|
|
|
+ private List<Double> getConsumptionPerSqmCurrentYear(
|
|
|
+ List<String> projectIds, List<String> functionIdList, Date reportMonth) {
|
|
|
+ if (CollectionUtils.isEmpty(projectIds) || CollectionUtils.isEmpty(functionIdList)) {
|
|
|
+ return Lists.newArrayList();
|
|
|
+ }
|
|
|
+
|
|
|
+ List<Double> resultList = new ArrayList<>();
|
|
|
+ for (String projectId : projectIds) {
|
|
|
+ // 获取用电量信息
|
|
|
+ PowerVO powerInfo = getPowerInfoByProjectIds(
|
|
|
+ null, functionIdList, reportMonth, Lists.newArrayList(projectId));
|
|
|
+ PowerItemVO summary = powerInfo.getSummary();
|
|
|
+ if (summary.getYearPerCount() != null) {
|
|
|
+ resultList.add(summary.getYearPerCount());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return resultList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 获取项目公区能耗国标引导值
|
|
|
*
|
|
|
* @param projectId 项目id
|