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 | 70 ++++++++++++++++++++++++++++++++++-
1 files changed, 68 insertions(+), 2 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 305ad75..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,13 +6,14 @@
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.*;
import com.ruoyi.energy.mapper.EnergyMapper;
import com.ruoyi.energy.pojo.Energy;
import com.ruoyi.energy.pojo.EnergyConsumptionDetail;
import com.ruoyi.energy.mapper.EnergyConsumptionDetailMapper;
import com.ruoyi.energy.service.EnergyConsumptionDetailService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.energy.vo.EnergyStatisticsVo;
import com.ruoyi.framework.web.domain.R;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -20,7 +21,11 @@
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.time.LocalDate;
import java.util.List;
+import java.util.Map;
import java.util.stream.Collectors;
/**
@@ -81,11 +86,72 @@
@Override
public void export(HttpServletResponse response) {
- List<EnergyConsumptionDetailDto> list = energyConsumptionDetailMapper.pageEnergyConsumptionDetail(new Page<>(-1,-1),null).getRecords();
+ List<EnergyConsumptionDetailDto> list = energyConsumptionDetailMapper.pageEnergyConsumptionDetail(new Page<>(-1,-1),new EnergyConsumptionDetailDto()).getRecords();
if(CollectionUtils.isEmpty(list)){
throw new RuntimeException("鏃犲鍑烘暟鎹�");
}
ExcelUtil<EnergyConsumptionDetailDto> util = new ExcelUtil<>(EnergyConsumptionDetailDto.class);
util.exportExcel(response, list, "鑳借�楁妱琛�");
}
+
+ @Override
+ public EnergyStatisticsDto statistics(EnergyStatisticsVo energyStatisticsVo) {
+ EnergyStatisticsDto energyStatisticsDto = new EnergyStatisticsDto();
+ //璁$畻鎬昏�楃敤閲�+鎬昏兘鑰楄垂鐢�
+ Map<String, BigDecimal> map=energyConsumptionDetailMapper.calculateEnergy(energyStatisticsVo);
+ energyStatisticsDto.setTotalEnergyConsumption(map.get("totalEnergyConsumption"));
+ energyStatisticsDto.setTotalEnergyCost(map.get("totalEnergyCost"));
+ //骞冲潎鐢ㄩ噺
+ energyStatisticsDto.setAverageConsumption(energyStatisticsDto.getTotalEnergyConsumption().divide(new BigDecimal(energyStatisticsVo.getDays()),2, RoundingMode.HALF_UP));
+ //鐜瘮鍙樺寲=(鏈湡鍊� - 涓婃湡鍊�) / 涓婃湡鍊� * 100
+ LocalDate minDays = energyStatisticsVo.getStartDate().minusDays(energyStatisticsVo.getDays());
+ LocalDate masDays = energyStatisticsVo.getEndDate().minusDays(energyStatisticsVo.getDays());
+ EnergyStatisticsVo oldenergyStatisticsVo = new EnergyStatisticsVo();
+ BeanUtils.copyProperties(energyStatisticsVo,oldenergyStatisticsVo);
+ oldenergyStatisticsVo.setStartDate(minDays);
+ oldenergyStatisticsVo.setEndDate(masDays);
+ Map<String, BigDecimal> oldmap=energyConsumptionDetailMapper.calculateEnergy(oldenergyStatisticsVo);
+ if (ObjectUtils.isNotEmpty(oldmap)) {
+ 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);
+ }
+ //鑳借�楃被鍨嬪崰姣�
+ List<EnergyConsumptionTypeDto> energyConsumptionTypeDtos=energyConsumptionDetailMapper.energyConsumptionTypeProportion(energyStatisticsVo);
+ energyStatisticsDto.setEnergyConsumptionTypeProportion(energyConsumptionTypeDtos);
+ //鑳借�楁槑缁�
+ List<EnergyCostDto> energyCostDtos=energyConsumptionDetailMapper.energyCostDtos(energyStatisticsVo);
+ 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