From a6c42f7838229c890df3215362875220afdd7ff4 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期三, 18 三月 2026 16:19:02 +0800
Subject: [PATCH] 能耗成本核算---按日月汇总统计

---
 src/main/java/com/ruoyi/energy/service/impl/EnergyConsumptionDetailServiceImpl.java |   39 +++++++++++++++++++++++++++++++++------
 1 files changed, 33 insertions(+), 6 deletions(-)

diff --git a/src/main/java/com/ruoyi/energy/service/impl/EnergyConsumptionDetailServiceImpl.java b/src/main/java/com/ruoyi/energy/service/impl/EnergyConsumptionDetailServiceImpl.java
index d7dd4a2..60bbcd3 100644
--- a/src/main/java/com/ruoyi/energy/service/impl/EnergyConsumptionDetailServiceImpl.java
+++ b/src/main/java/com/ruoyi/energy/service/impl/EnergyConsumptionDetailServiceImpl.java
@@ -6,10 +6,7 @@
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.energy.dto.EnergyConsumptionDetailDto;
-import com.ruoyi.energy.dto.EnergyConsumptionTypeDto;
-import com.ruoyi.energy.dto.EnergyCostDto;
-import com.ruoyi.energy.dto.EnergyStatisticsDto;
+import com.ruoyi.energy.dto.*;
 import com.ruoyi.energy.mapper.EnergyMapper;
 import com.ruoyi.energy.pojo.Energy;
 import com.ruoyi.energy.pojo.EnergyConsumptionDetail;
@@ -102,7 +99,6 @@
         EnergyStatisticsDto energyStatisticsDto = new EnergyStatisticsDto();
         //璁$畻鎬昏�楃敤閲�+鎬昏兘鑰楄垂鐢�
         Map<String, BigDecimal> map=energyConsumptionDetailMapper.calculateEnergy(energyStatisticsVo);
-
         energyStatisticsDto.setTotalEnergyConsumption(map.get("totalEnergyConsumption"));
         energyStatisticsDto.setTotalEnergyCost(map.get("totalEnergyCost"));
         //骞冲潎鐢ㄩ噺
@@ -116,7 +112,11 @@
         oldenergyStatisticsVo.setEndDate(masDays);
         Map<String, BigDecimal> oldmap=energyConsumptionDetailMapper.calculateEnergy(oldenergyStatisticsVo);
         if (ObjectUtils.isNotEmpty(oldmap)) {
-            BigDecimal changeVite = (map.get("totalEnergyConsumption").subtract(oldmap.get("totalEnergyConsumption"))).divide(oldmap.get("totalEnergyConsumption"), 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100));
+            BigDecimal subtract = map.get("totalEnergyConsumption").subtract(oldmap.get("totalEnergyConsumption"));
+            BigDecimal changeVite=BigDecimal.ZERO;
+            if (oldmap.get("totalEnergyConsumption").compareTo(BigDecimal.ZERO)>0){
+                changeVite = (subtract).divide(oldmap.get("totalEnergyConsumption"), 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100));
+            }
             energyStatisticsDto.setChangeVite(changeVite);
         }
         //鑳借�楃被鍨嬪崰姣�
@@ -127,4 +127,31 @@
         energyStatisticsDto.setEnergyCostDtos(energyCostDtos);
         return energyStatisticsDto;
     }
+
+    @Override
+    public EnergyAccountDto account(EnergyStatisticsVo energyStatisticsVo) {
+        EnergyAccountDto energyAccountDto = new EnergyAccountDto();
+        //璁$畻鎬昏兘鑰楁垚鏈�+鐢熶骇鑳借�楁垚鏈�+鍔炲叕鑳借�楁垚鏈�
+        Map<String, BigDecimal> map=energyConsumptionDetailMapper.calculateEnergy(energyStatisticsVo);
+        energyAccountDto.setTotalEnergyCost(map.get("totalEnergyCost"));//鎬昏兘鑰楁垚鏈�
+        energyStatisticsVo.setType("鐢熶骇");
+        Map<String, BigDecimal> map1=energyConsumptionDetailMapper.calculateEnergy(energyStatisticsVo);
+        energyAccountDto.setProductEnergyCost(map1.get("totalEnergyCost"));//鐢熶骇鑳借�楁垚鏈�
+        energyStatisticsVo.setType("鍔炲叕");
+        Map<String, BigDecimal> map2=energyConsumptionDetailMapper.calculateEnergy(energyStatisticsVo);
+        energyAccountDto.setOfficeEnergyCost(map2.get("totalEnergyCost"));//鍔炲叕鑳借�楁垚鏈�
+        energyStatisticsVo.setType(null);//鎭㈠鏌ヨ鍏ㄩ儴
+        //骞冲潎鎴愭湰
+        energyAccountDto.setAverageEnergyCost(energyAccountDto.getTotalEnergyCost().divide(new BigDecimal(energyStatisticsVo.getDays()),2, RoundingMode.HALF_UP));
+        //鑳借�楁垚鏈秼鍔�
+        List<EnergyAccountTypeDto> energyAccountTypeDtos=energyConsumptionDetailMapper.energyAccountTypeDtos(energyStatisticsVo);
+        energyAccountDto.setEnergyAccountTypeDtos(energyAccountTypeDtos);
+        //鑳借�楃被鍨嬫垚鏈崰姣�
+        List<EnergyConsumptionTypeDto> energyConsumptionTypeDtos=energyConsumptionDetailMapper.energyConsumptionTypeProportion(energyStatisticsVo);
+        energyAccountDto.setEnergyConsumptionTypeProportion(energyConsumptionTypeDtos);
+        //鑳借�楃被鍨嬫槑缁�
+        List<EnergyConsumptionDetailDto> energyConsumptionDetailDtoList=energyConsumptionDetailMapper.energyConsumptionDetailDtos(energyStatisticsVo);
+        energyAccountDto.setEnergyConsumptionDetailDtoList(energyConsumptionDetailDtoList);
+        return energyAccountDto;
+    }
 }

--
Gitblit v1.9.3