From ca39f9dd34b5a578c7a4ff170cb39d42cbc77234 Mon Sep 17 00:00:00 2001
From: 潘晓明 <hahagongzi2006@163.com>
Date: 星期四, 13 二月 2025 11:50:51 +0800
Subject: [PATCH] 成本趋势分析页面接口:不传能源类型时,取所有能源类型。
---
zhitan-system/src/main/java/com/zhitan/dataitem/mapper/DataItemMapper.java | 12 +++
zhitan-admin/src/main/java/com/zhitan/web/controller/statisticalAnalysis/EnergyConsumeDataController.java | 4
zhitan-system/src/main/resources/mapper/dataitem/DataItemMapper.xml | 18 ++++
zhitan-system/src/main/java/com/zhitan/statisticalAnalysis/service/impl/EnergyConsumeDataServiceImpl.java | 146 ++++++++++++++++++++----------------
zhitan-system/src/main/resources/mapper/peakvalley/ElectricityDataItemMapper.xml | 8 +-
zhitan-system/src/main/java/com/zhitan/statisticalAnalysis/domain/vo/EnergyConsumeTrendDetailItem.java | 15 +++
zhitan-system/src/main/java/com/zhitan/peakvalley/mapper/PeakValleyMapper.java | 6
7 files changed, 134 insertions(+), 75 deletions(-)
diff --git a/zhitan-admin/src/main/java/com/zhitan/web/controller/statisticalAnalysis/EnergyConsumeDataController.java b/zhitan-admin/src/main/java/com/zhitan/web/controller/statisticalAnalysis/EnergyConsumeDataController.java
index 051909e..e91dc45 100644
--- a/zhitan-admin/src/main/java/com/zhitan/web/controller/statisticalAnalysis/EnergyConsumeDataController.java
+++ b/zhitan-admin/src/main/java/com/zhitan/web/controller/statisticalAnalysis/EnergyConsumeDataController.java
@@ -41,7 +41,7 @@
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
@RequestParam(name = "timeCode") String timeCode,
@RequestParam(name = "timeType") String timeType,
- @RequestParam(name = "energyType") String energyType,
+ @RequestParam(name = "energyType",required = false) String energyType,
@RequestParam(name = "modelCode") String modelCode) {
return AjaxResult.success(energyConsumeDataService.listEnergyCostTrend(pageNo, pageSize, timeCode, timeType,energyType,
modelCode));
@@ -62,7 +62,7 @@
public AjaxResult listEnergyCostTrendDetail(@RequestParam(name = "timeCode") String timeCode,
@RequestParam(name = "timeType") String timeType,
@RequestParam(name = "modelCode") String modelCode,
- @RequestParam("energyType") String energyType) {
+ @RequestParam(name = "energyType",required = false) String energyType) {
return AjaxResult.success(energyConsumeDataService.listEnergyCostTrendDetail(timeCode, timeType, modelCode, energyType));
}
diff --git a/zhitan-system/src/main/java/com/zhitan/dataitem/mapper/DataItemMapper.java b/zhitan-system/src/main/java/com/zhitan/dataitem/mapper/DataItemMapper.java
index 94f00fe..99d5317 100644
--- a/zhitan-system/src/main/java/com/zhitan/dataitem/mapper/DataItemMapper.java
+++ b/zhitan-system/src/main/java/com/zhitan/dataitem/mapper/DataItemMapper.java
@@ -123,4 +123,16 @@
*/
List<DataItem> getDataItemHourInforByIndexIds(@Param("beginTime") Date beginTime, @Param("endTime") Date endTime,
@Param("timeType") String timeType, @Param("indexIds") List<String> indexIds);
+
+ /**
+ * 鏌ヨ鑳芥簮绫诲瀷闈炵數鐨勭敤閲�
+ * @param beginTime
+ * @param endTime
+ * @param timeType 鏃堕棿绫诲瀷
+ * @param nodeId 鑺傜偣Id
+ * @param energyType 鑳芥簮绫诲瀷
+ * @return
+ */
+ BigDecimal getDataItemTimeRangeValueByNodeId(@Param("beginTime") Date beginTime, @Param("endTime") Date endTime,
+ @Param("timeType") String timeType, @Param("nodeId") String nodeId, @Param("energyType") String energyType);
}
diff --git a/zhitan-system/src/main/java/com/zhitan/peakvalley/mapper/PeakValleyMapper.java b/zhitan-system/src/main/java/com/zhitan/peakvalley/mapper/PeakValleyMapper.java
index 8e74174..98b4e01 100644
--- a/zhitan-system/src/main/java/com/zhitan/peakvalley/mapper/PeakValleyMapper.java
+++ b/zhitan-system/src/main/java/com/zhitan/peakvalley/mapper/PeakValleyMapper.java
@@ -43,11 +43,11 @@
* @param beginTime
* @param endTime
* @param timeType 鏃堕棿绫诲瀷
- * @param indexId 鑺傜偣Id
- * @param emissionType 鑳芥簮绫诲瀷
+ * @param nodeId 鑺傜偣Id
+ * @param energyType 鑳芥簮绫诲瀷
* @return
*/
List<ElectricityDataItem> getCostTrends(@Param("beginTime") Date beginTime, @Param("endTime") Date endTime,
- @Param("timeType") String timeType, @Param("indexId") String indexId,@Param("emissionType") String emissionType);
+ @Param("timeType") String timeType, @Param("nodeId") String nodeId,@Param("energyType") String energyType);
}
diff --git a/zhitan-system/src/main/java/com/zhitan/statisticalAnalysis/domain/vo/EnergyConsumeTrendDetailItem.java b/zhitan-system/src/main/java/com/zhitan/statisticalAnalysis/domain/vo/EnergyConsumeTrendDetailItem.java
index 87b59a5..ccc4a25 100644
--- a/zhitan-system/src/main/java/com/zhitan/statisticalAnalysis/domain/vo/EnergyConsumeTrendDetailItem.java
+++ b/zhitan-system/src/main/java/com/zhitan/statisticalAnalysis/domain/vo/EnergyConsumeTrendDetailItem.java
@@ -1,5 +1,6 @@
package com.zhitan.statisticalAnalysis.domain.vo;
+import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -43,6 +44,20 @@
private String costLabel;
/**
+ * 绱Н閲�
+ */
+ @ApiModelProperty(value = "绱Н閲�")
+ @JsonFormat(shape = JsonFormat.Shape.STRING)
+ private BigDecimal accumulation;
+
+ /**
+ * 璐圭敤
+ */
+ @ApiModelProperty(value = "璐圭敤")
+ @JsonFormat(shape = JsonFormat.Shape.STRING)
+ private BigDecimal cost;
+
+ /**
* 绱Н閲弅ey闆嗗悎
*/
@ApiModelProperty(value = "绱Н閲弅ey闆嗗悎")
diff --git a/zhitan-system/src/main/java/com/zhitan/statisticalAnalysis/service/impl/EnergyConsumeDataServiceImpl.java b/zhitan-system/src/main/java/com/zhitan/statisticalAnalysis/service/impl/EnergyConsumeDataServiceImpl.java
index 6ecc35e..5819d02 100644
--- a/zhitan-system/src/main/java/com/zhitan/statisticalAnalysis/service/impl/EnergyConsumeDataServiceImpl.java
+++ b/zhitan-system/src/main/java/com/zhitan/statisticalAnalysis/service/impl/EnergyConsumeDataServiceImpl.java
@@ -7,6 +7,7 @@
import com.zhitan.carbonemission.domain.CarbonEmission;
import com.zhitan.common.constant.CommonConst;
import com.zhitan.common.constant.TimeTypeConst;
+import com.zhitan.common.utils.StringUtils;
import com.zhitan.dataitem.mapper.DataItemMapper;
import com.zhitan.model.domain.ModelNode;
import com.zhitan.model.domain.NodeIndex;
@@ -58,12 +59,13 @@
String modelCode) {
//鑳芥簮绫诲瀷淇℃伅
SysEnergy sysEnergy = new SysEnergy();
- sysEnergy.setEnersno(energyType);
+ if (StringUtils.isNotEmpty(energyType)) {
+ sysEnergy.setEnersno(energyType);
+ }
List<SysEnergy> sysEnergies = sysEnergyMapper.selectSysEnergyList(sysEnergy);
if (sysEnergies.isEmpty()) {
throw new RuntimeException("鏈煡璇㈠埌鑳芥簮淇℃伅");
}
- SysEnergy sysEnergyInfo = sysEnergies.stream().findFirst().get();
//鑺傜偣淇℃伅
List<ModelNode> modelNodes = modelNodeMapper.selectList(Wrappers.<ModelNode>lambdaQuery().eq(ModelNode::getModelCode, modelCode)
.isNull(ModelNode::getParentId));
@@ -78,22 +80,24 @@
throw new RuntimeException("鏈煡璇㈠埌鐐逛綅淇℃伅");
}
- // 閬嶅巻鐢ㄨ兘鍗曞厓鑾峰彇琛ㄦ牸涓殑鏁版嵁
- List<EnergyCostTrendItem> trendItemList = new ArrayList<>();
- EnergyCostTrendItem energyCostTrendItem = new EnergyCostTrendItem();
- energyCostTrendItem.setDateCode(timeCode);
// 鎬昏垂鐢�
BigDecimal totalCost = BigDecimal.ZERO;
// 閬嶅巻鑳芥簮绫诲瀷
List<CostTrendEnergyTypeItem> itemList = new ArrayList<>();
- CostTrendEnergyTypeItem item = new CostTrendEnergyTypeItem();
- item.setEnergyType(sysEnergyInfo.getEnersno());
- item.setEnergyName(sysEnergyInfo.getEnername());
- // 澶勭悊鏃堕棿
- Date bsTime = DateTimeUtil.getTime(timeType, timeCode);
- Date endTime = DateTimeUtil.getEndTimeByType(timeType, bsTime);
- totalCost = getEnergyUnitCostTrendAnalysisValueInfo(timeType, bsTime, endTime, totalCost, nodeIndices, sysEnergyInfo.getEnersno(), item);
- itemList.add(item);
+ for (SysEnergy sysEnergyInfo : sysEnergies) {
+ CostTrendEnergyTypeItem item = new CostTrendEnergyTypeItem();
+ item.setEnergyType(sysEnergyInfo.getEnersno());
+ item.setEnergyName(sysEnergyInfo.getEnername());
+ // 澶勭悊鏃堕棿
+ Date bsTime = DateTimeUtil.getTime(timeType, timeCode);
+ Date endTime = DateTimeUtil.getEndTimeByType(timeType, bsTime);
+ totalCost = getEnergyUnitCostTrendAnalysisValueInfo(timeType, bsTime, endTime, totalCost, nodeIndices, modelNodeInfo.getNodeId(), sysEnergyInfo, item);
+ itemList.add(item);
+ }
+ // 閬嶅巻鐢ㄨ兘鍗曞厓鑾峰彇琛ㄦ牸涓殑鏁版嵁
+ List<EnergyCostTrendItem> trendItemList = new ArrayList<>();
+ EnergyCostTrendItem energyCostTrendItem = new EnergyCostTrendItem();
+ energyCostTrendItem.setDateCode(timeCode);
energyCostTrendItem.setTotal(totalCost.setScale(CommonConst.DIGIT_2, RoundingMode.HALF_UP));
energyCostTrendItem.setItemList(itemList);
trendItemList.add(energyCostTrendItem);
@@ -107,28 +111,30 @@
/**
* 鑾峰彇鐢ㄨ兘鍗曞厓鎴愭湰瓒嬪娍鍒嗘瀽绱Н閲忋�佽垂鐢ㄤ俊鎭�
*
- * @param timeType 鏃堕棿绫诲瀷
- * @param bsTime 寮�濮嬫椂闂�
- * @param endTime 缁撴潫鏃堕棿
- * @param totalCost 鎬昏垂鐢�
- * @param nodeIndices 鑺傜偣id闆嗗悎
- * @param energyType 鑳芥簮绫诲瀷
- * @param item 杩斿洖瀵硅薄
+ * @param timeType 鏃堕棿绫诲瀷
+ * @param bsTime 寮�濮嬫椂闂�
+ * @param endTime 缁撴潫鏃堕棿
+ * @param totalCost 鎬昏垂鐢�
+ * @param nodeIndices 鑺傜偣鐐逛綅闆嗗悎
+ * @param nodeId 鑺傜偣id
+ * @param sysEnergyInfo 鑳芥簮绫诲瀷淇℃伅
+ * @param item 杩斿洖瀵硅薄
* @return
*/
private BigDecimal getEnergyUnitCostTrendAnalysisValueInfo(String timeType, Date bsTime, Date endTime, BigDecimal totalCost,
- List<NodeIndex> nodeIndices, String energyType,
- CostTrendEnergyTypeItem item) {
- BigDecimal costValue;
+ List<NodeIndex> nodeIndices, String nodeId, SysEnergy sysEnergyInfo,
+ CostTrendEnergyTypeItem item) {
+ BigDecimal costValue = BigDecimal.ZERO;
BigDecimal accumulationValue = BigDecimal.ZERO;
- switch (energyType) {
+ switch (sysEnergyInfo.getEnersno()) {
case "electric":
List<ElectricityDataItem> electricityDataItems = peakValleyMapper.getDataStatistics(nodeIndices.stream().map(NodeIndex::getIndexId).collect(Collectors.toSet()), bsTime, endTime, timeType);
costValue = electricityDataItems.stream().map(ElectricityDataItem::getCost).reduce(BigDecimal.ZERO, BigDecimal::add);
accumulationValue = electricityDataItems.stream().map(ElectricityDataItem::getElectricity).reduce(BigDecimal.ZERO, BigDecimal::add);
break;
default:
- costValue = dataItemMapper.getDataItemTimeRangeValueByIndexIds(bsTime, endTime, timeType, nodeIndices.stream().map(NodeIndex::getIndexId).collect(Collectors.toList()));
+ accumulationValue = dataItemMapper.getDataItemTimeRangeValueByNodeId(bsTime, endTime, timeType, nodeId, sysEnergyInfo.getEnersno());
+ costValue = accumulationValue.multiply(sysEnergyInfo.getPrice());
break;
}
costValue = costValue.setScale(CommonConst.DIGIT_2, RoundingMode.HALF_UP);
@@ -151,12 +157,13 @@
public List<EnergyConsumeTrendDetailItem> listEnergyCostTrendDetail(String timeCode, String timeType, String modelCode, String energyType) {
//鑳芥簮绫诲瀷淇℃伅
SysEnergy sysEnergy = new SysEnergy();
- sysEnergy.setEnersno(energyType);
+ if (StringUtils.isNotEmpty(energyType)) {
+ sysEnergy.setEnersno(energyType);
+ }
List<SysEnergy> sysEnergies = sysEnergyMapper.selectSysEnergyList(sysEnergy);
if (sysEnergies.isEmpty()) {
throw new RuntimeException("鏈煡璇㈠埌鑳芥簮淇℃伅");
}
- SysEnergy sysEnergyInfo = sysEnergies.stream().findFirst().get();
//鑺傜偣淇℃伅
List<ModelNode> modelNodes = modelNodeMapper.selectList(Wrappers.<ModelNode>lambdaQuery().eq(ModelNode::getModelCode, modelCode)
@@ -167,46 +174,53 @@
String nodeId = modelNodes.stream().findFirst().get().getNodeId();
// 鑳借�椾俊鎭�
+ List<EnergyConsumeTrendDetailItem> itemList = new ArrayList<>();
List<EnergyConsumeVO> energyConsumeVOList = new ArrayList<>();
Date startTime = DateTimeUtil.getTime(timeType, timeCode);
Date endTime = DateTimeUtil.getEndTimeByType(timeType, startTime);
- switch (sysEnergyInfo.getEnersno()) {
- case "electric":
- List<ElectricityDataItem> electricityDataItems = peakValleyMapper.getCostTrends(startTime, endTime, timeType, nodeId, energyType);
- if (!electricityDataItems.isEmpty()) {
- electricityDataItems.forEach(electricityDataItem -> {
- EnergyConsumeVO temp = new EnergyConsumeVO();
- temp.setDataTime(electricityDataItem.getDataTime());
- temp.setCostValue(electricityDataItem.getCost());
- temp.setAccumulationValue(electricityDataItem.getElectricity());
- energyConsumeVOList.add(temp);
- });
- }
- break;
- default:
- List<CarbonEmission> dataItems = dataItemMapper.getMiddleCarbonEmission(startTime, endTime, timeType, nodeId, energyType);
- if (!dataItems.isEmpty()) {
- dataItems.forEach(electricityDataItem -> {
- EnergyConsumeVO temp = new EnergyConsumeVO();
- temp.setDataTime(electricityDataItem.getDataTime());
- temp.setCostValue(new BigDecimal(electricityDataItem.getValue()));
- temp.setAccumulationValue(new BigDecimal(electricityDataItem.getValue()).multiply(sysEnergyInfo.getPrice()));
- energyConsumeVOList.add(temp);
- });
- }
- break;
+ for (SysEnergy sysEnergyInfo : sysEnergies) {
+ switch (sysEnergyInfo.getEnersno()) {
+ case "electric":
+ List<ElectricityDataItem> electricityDataItems = peakValleyMapper.getCostTrends(startTime, endTime, timeType, nodeId, sysEnergyInfo.getEnersno());
+ if (!electricityDataItems.isEmpty()) {
+ electricityDataItems.forEach(electricityDataItem -> {
+ EnergyConsumeVO temp = new EnergyConsumeVO();
+ temp.setDataTime(electricityDataItem.getDataTime());
+ temp.setCostValue(electricityDataItem.getCost());
+ temp.setAccumulationValue(electricityDataItem.getElectricity());
+ energyConsumeVOList.add(temp);
+ });
+ }
+ break;
+ default:
+ List<CarbonEmission> dataItems = dataItemMapper.getMiddleCarbonEmission(startTime, endTime, timeType, nodeId, sysEnergyInfo.getEnersno());
+ if (!dataItems.isEmpty()) {
+ dataItems.forEach(electricityDataItem -> {
+ EnergyConsumeVO temp = new EnergyConsumeVO();
+ temp.setDataTime(electricityDataItem.getDataTime());
+ temp.setCostValue(new BigDecimal(electricityDataItem.getValue()));
+ temp.setAccumulationValue(new BigDecimal(electricityDataItem.getValue()).multiply(sysEnergyInfo.getPrice()));
+ energyConsumeVOList.add(temp);
+ });
+ }
+ break;
+ }
+ BigDecimal cost = energyConsumeVOList.stream().map(EnergyConsumeVO::getCostValue)
+ .reduce(BigDecimal.ZERO, BigDecimal::add).setScale(CommonConst.DIGIT_2, RoundingMode.HALF_UP);
+ BigDecimal accumulation = energyConsumeVOList.stream().map(EnergyConsumeVO::getAccumulationValue)
+ .reduce(BigDecimal.ZERO, BigDecimal::add).setScale(CommonConst.DIGIT_2, RoundingMode.HALF_UP);
+ // 缁勮缁熻鍥句俊鎭�
+ EnergyConsumeTrendDetailItem item = new EnergyConsumeTrendDetailItem();
+ item.setEnergyType(sysEnergyInfo.getEnersno());
+ item.setEnergyUnit(sysEnergyInfo.getMuid());
+ item.setCostLabel(sysEnergyInfo.getEnername() + "璐�");
+ item.setAccumulationLabel(sysEnergyInfo.getEnername() + "鐢ㄩ噺");
+ item.setCost(cost);
+ item.setAccumulation(accumulation);
+ // 缁勮鍥捐〃淇℃伅
+ getTrendAnalysisCharInfoByEnergyType(startTime, timeType, energyConsumeVOList, item);
+ itemList.add(item);
}
-
- // 缁勮缁熻鍥句俊鎭�
- EnergyConsumeTrendDetailItem item = new EnergyConsumeTrendDetailItem();
- item.setEnergyType(energyType);
- item.setCostLabel(sysEnergyInfo.getEnername() + "璐�");
- item.setAccumulationLabel(sysEnergyInfo.getEnername() + "鐢ㄩ噺");
- // 缁勮鍥捐〃淇℃伅
- getTrendAnalysisCharInfoByEnergyType(startTime, timeType, energyConsumeVOList, item);
-
- List<EnergyConsumeTrendDetailItem> itemList = new ArrayList<>();
- itemList.add(item);
return itemList;
}
@@ -219,14 +233,14 @@
* @param item 杩斿洖瀵硅薄
*/
private void getTrendAnalysisCharInfoByEnergyType(Date bsTime, String timeType,
- List<EnergyConsumeVO> dataItems, EnergyConsumeTrendDetailItem item) {
+ List<EnergyConsumeVO> dataItems, EnergyConsumeTrendDetailItem item) {
List<String> costKeyList = new ArrayList<>();
List<String> accumulationKeyList = new ArrayList<>();
List<BigDecimal> costValueList = new ArrayList<>();
List<BigDecimal> accumulationValueList = new ArrayList<>();
Map<String, List<EnergyConsumeVO>> energyConsumeVOMap;
//鎸夋椂闂寸被鍨嬬粍缁囪繑鍥炴暟鎹�
- switch (timeType){
+ switch (timeType) {
case TimeTypeConst.TIME_TYPE_DAY:
energyConsumeVOMap = dataItems.stream().collect(Collectors.groupingBy(li -> DateUtil.formatDateTime(li.getDataTime())));
for (int i = 0; i < CommonConst.DIGIT_24; i++) {
diff --git a/zhitan-system/src/main/resources/mapper/dataitem/DataItemMapper.xml b/zhitan-system/src/main/resources/mapper/dataitem/DataItemMapper.xml
index 37b928f..e06ddbe 100644
--- a/zhitan-system/src/main/resources/mapper/dataitem/DataItemMapper.xml
+++ b/zhitan-system/src/main/resources/mapper/dataitem/DataItemMapper.xml
@@ -215,4 +215,22 @@
AND ( begin_time BETWEEN #{beginTime} AND #{endTime} )
AND time_type = #{timeType}
</select>
+
+ <select id="getDataItemTimeRangeValueByNodeId" resultType="java.math.BigDecimal">
+ SELECT
+ COALESCE (SUM ( "value" ), 0)
+ FROM
+ "data_item" di
+ JOIN energy_index ei ON di.index_id = ei.index_id
+ WHERE
+ di.index_id IN ( SELECT index_id FROM node_index WHERE node_id = #{nodeId})
+ <if test="energyType !='' and energyType !=null and energyType =='allType'">
+ AND ei.energy_id != ''
+ </if>
+ <if test="energyType !='' and energyType !=null and energyType !='allType'">
+ AND ei.energy_id = #{energyType}
+ </if>
+ AND (di.data_time BETWEEN #{beginTime} AND #{endTime})
+ AND di.time_type = #{timeType}
+ </select>
</mapper>
\ No newline at end of file
diff --git a/zhitan-system/src/main/resources/mapper/peakvalley/ElectricityDataItemMapper.xml b/zhitan-system/src/main/resources/mapper/peakvalley/ElectricityDataItemMapper.xml
index 449019b..d478107 100644
--- a/zhitan-system/src/main/resources/mapper/peakvalley/ElectricityDataItemMapper.xml
+++ b/zhitan-system/src/main/resources/mapper/peakvalley/ElectricityDataItemMapper.xml
@@ -65,12 +65,12 @@
"electricity_data_item" di
JOIN energy_index ei ON di.index_id = ei.index_id
WHERE
- di.index_id IN ( SELECT index_id FROM node_index WHERE node_id = #{indexId})
- <if test="emissionType !='' and emissionType !=null and emissionType =='allType'">
+ di.index_id IN ( SELECT index_id FROM node_index WHERE node_id = #{nodeId})
+ <if test="energyType !='' and energyType !=null and energyType =='allType'">
AND ei.energy_id != ''
</if>
- <if test="emissionType !='' and emissionType !=null and emissionType !='allType'">
- AND ei.energy_id = #{emissionType}
+ <if test="energyType !='' and energyType !=null and energyType !='allType'">
+ AND ei.energy_id = #{energyType}
</if>
AND (di.data_time BETWEEN #{beginTime} AND #{endTime})
AND di.time_type = #{timeType}
--
Gitblit v1.9.3