diff --git a/op-modules/op-energy/src/main/java/com/op/energy/report/controller/energyPreviewController.java b/op-modules/op-energy/src/main/java/com/op/energy/report/controller/energyPreviewController.java index bf617cfa3..81fa3105b 100644 --- a/op-modules/op-energy/src/main/java/com/op/energy/report/controller/energyPreviewController.java +++ b/op-modules/op-energy/src/main/java/com/op/energy/report/controller/energyPreviewController.java @@ -112,4 +112,16 @@ public class energyPreviewController extends BaseController { return AjaxResult.success(result); } + /** + * 业态能耗分析 + * @param paramMap + * @return + */ + @ResponseBody + @GetMapping("/businessEnergyConsumptionAnalysis") + public AjaxResult businessEnergyConsumptionAnalysis(@RequestParam(required = false) Map paramMap) { + Map result = energyPreviewService.businessEnergyConsumptionAnalysis(paramMap); + return AjaxResult.success(result); + } + } diff --git a/op-modules/op-energy/src/main/java/com/op/energy/report/mapper/ReportPointDnbMapper.java b/op-modules/op-energy/src/main/java/com/op/energy/report/mapper/ReportPointDnbMapper.java index 8c965c87d..7d7c9ddd6 100644 --- a/op-modules/op-energy/src/main/java/com/op/energy/report/mapper/ReportPointDnbMapper.java +++ b/op-modules/op-energy/src/main/java/com/op/energy/report/mapper/ReportPointDnbMapper.java @@ -86,4 +86,8 @@ public interface ReportPointDnbMapper { List linesConsumptionComparison(ReportOrderEnergyDTO energyDTO); List productConsumptionComparison(ReportOrderEnergyDTO energyDTO); + + List selectPointDnbGroupList(ReportPointDnb pointDnb); + + List> datePointDnbGroupList(ReportPointDnb lineDnb); } diff --git a/op-modules/op-energy/src/main/java/com/op/energy/report/service/IEnergyPreviewService.java b/op-modules/op-energy/src/main/java/com/op/energy/report/service/IEnergyPreviewService.java index 77b0f3667..27a9ed4e8 100644 --- a/op-modules/op-energy/src/main/java/com/op/energy/report/service/IEnergyPreviewService.java +++ b/op-modules/op-energy/src/main/java/com/op/energy/report/service/IEnergyPreviewService.java @@ -107,4 +107,11 @@ public interface IEnergyPreviewService { * @return */ Map productConsumptionComparison(ReportOrderEnergyDTO energyDTO); + + /** + * 业态能耗分析 + * @param paramMap + * @return + */ + Map businessEnergyConsumptionAnalysis(Map paramMap); } diff --git a/op-modules/op-energy/src/main/java/com/op/energy/report/service/impl/EnergyPreviewServiceImpl.java b/op-modules/op-energy/src/main/java/com/op/energy/report/service/impl/EnergyPreviewServiceImpl.java index 095b3620d..0365aa80d 100644 --- a/op-modules/op-energy/src/main/java/com/op/energy/report/service/impl/EnergyPreviewServiceImpl.java +++ b/op-modules/op-energy/src/main/java/com/op/energy/report/service/impl/EnergyPreviewServiceImpl.java @@ -3,9 +3,11 @@ package com.op.energy.report.service.impl; import com.baomidou.dynamic.datasource.annotation.DS; import com.op.energy.base.domain.BaseBuildInfo; +import com.op.energy.base.domain.BaseBusinessType; import com.op.energy.base.domain.BaseMonitorInfo; import com.op.energy.base.domain.BaseTypeRelation; import com.op.energy.base.mapper.BaseBuildInfoMapper; +import com.op.energy.base.mapper.BaseBusinessTypeMapper; import com.op.energy.base.mapper.BaseTypeRelationMapper; import com.op.energy.base.service.IBaseMonitorInfoService; import com.op.energy.base.utils.DateUtils; @@ -53,6 +55,9 @@ public class EnergyPreviewServiceImpl implements IEnergyPreviewService { @Autowired private BaseBuildInfoMapper baseBuildInfoMapper; + @Autowired + private BaseBusinessTypeMapper baseBusinessTypeMapper; + @Autowired private RecordDnbInstantMapper recordDnbInstantMapper; @@ -810,6 +815,7 @@ public class EnergyPreviewServiceImpl implements IEnergyPreviewService { /** * 产品单耗对比 + * * @param energyDTO * @return */ @@ -841,4 +847,93 @@ public class EnergyPreviewServiceImpl implements IEnergyPreviewService { result.put("data", dataMap); return result; } + + /** + * 业态能耗分析 + * + * @param paramMap + * @return + */ + @Override + @DS("#header.poolName") + public Map businessEnergyConsumptionAnalysis(Map paramMap) { + HashMap result = new HashMap<>(); + List> tableList = new ArrayList<>(); + List electricityList = new ArrayList<>(); + HashMap pieMap = new LinkedHashMap<>(); + + if (!paramMap.containsKey("type") || !paramMap.containsKey("energyType") || + String.valueOf(paramMap.get("startTime")).equals("") || String.valueOf(paramMap.get("endTime")).equals("")) { + return result; + } + String energyType = String.valueOf(paramMap.get("energyType")); + //小时 天 月 年 + String type = String.valueOf(paramMap.get("type")); + if (!paramMap.containsKey("businessId")) { + return result; + } + Long businessId = Long.valueOf(String.valueOf(paramMap.get("businessId"))); + + BaseBusinessType businessType = new BaseBusinessType(); + businessType.setParentId(businessId); + List businessTypeList = baseBusinessTypeMapper.selectBaseBusinessTypeList(businessType); +// BaseBusinessType baseBusinessType = baseBusinessTypeMapper.selectBaseBusinessTypeByObjid(businessId); + BigDecimal totalExpend = BigDecimal.ZERO; + for (BaseBusinessType business : businessTypeList) { + Long objId = business.getObjid(); + String businessName = business.getBusinessName(); + BaseTypeRelation relation = new BaseTypeRelation(); + relation.setType(1L); + relation.setRelationId(objId); + List baseTypeRelations = baseTypeRelationMapper.selectBaseTypeRelationList(relation); + List monitorIdList = baseTypeRelations.stream().map(BaseTypeRelation::getMonitorId).collect(Collectors.toList()); + electricityList.addAll(monitorIdList); + paramMap.put("monitorIdList", monitorIdList); + if (energyType.equals("2") && !monitorIdList.isEmpty()) { + ReportPointDnb pointDnb = new ReportPointDnb(); + pointDnb.setParams(paramMap); + List pointDnbList = reportPointDnbMapper.selectPointDnbGroupList(pointDnb); + for (ReportPointDnb reportPointDnb : pointDnbList) { + BigDecimal expend = reportPointDnb.getExpend(); + HashMap tableMap = new HashMap<>(); + tableMap.put("monitorId", reportPointDnb.getMonitorId()); + tableMap.put("monitorName", reportPointDnb.getMonitorName()); + tableMap.put("businessName", businessName); + tableMap.put("expend", expend.toPlainString()); + tableList.add(tableMap); + pieMap.put(businessName,pieMap.containsKey(businessName) ? expend.add(pieMap.get(businessName)) : expend); + // 累加到总和中 + totalExpend = totalExpend.add(expend); + } + } + } + ReportPointDnb lineDnb = new ReportPointDnb(); + HashMap params = new HashMap<>(); + if (type.equals("day")) { + params.put("timeSub", 10); + } else if (type.equals("month")) { + params.put("timeSub", 7); + } else if (type.equals("year")) { + params.put("timeSub", 4); + } + params.put("startTime", paramMap.get("startTime")); + params.put("endTime", paramMap.get("endTime")); + params.put("monitorIdList", electricityList); + lineDnb.setParams(params); + if (electricityList.size() > 0) { + List> lineDnbList = reportPointDnbMapper.datePointDnbGroupList(lineDnb); + result.put("lineDnbList", lineDnbList); + } else { + result.put("lineDnbList", new ArrayList<>()); + } + result.put("pieMap", pieMap); + HashMap tableMap = new HashMap<>(); + tableMap.put("businessName", "总用电量"); + tableMap.put("expend", totalExpend.toPlainString()); + tableList.add(tableMap); + result.put("tableList", tableList); + result.put("totalExpend", totalExpend.toPlainString()); + return result; + } + } diff --git a/op-modules/op-energy/src/main/resources/mapper/report/ReportPointDnbMapper.xml b/op-modules/op-energy/src/main/resources/mapper/report/ReportPointDnbMapper.xml index cc24ed710..c5dc66ae0 100644 --- a/op-modules/op-energy/src/main/resources/mapper/report/ReportPointDnbMapper.xml +++ b/op-modules/op-energy/src/main/resources/mapper/report/ReportPointDnbMapper.xml @@ -179,7 +179,7 @@ order by ert.monitor_id, ert.monitor_name, ert.pointTime - select ert.monitor_id, ert.monitor_name, CAST( CASE @@ -450,4 +450,48 @@ ORDER BY pow.product_name + + + +