zss
10 小时以前 bb6aeccaad6a7bdf842828d6fb11f3fb61be76eb
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;
@@ -27,6 +24,7 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -115,15 +113,91 @@
        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);
        }
        //能耗类型占比
        List<EnergyConsumptionTypeDto> energyConsumptionTypeDtos=energyConsumptionDetailMapper.energyConsumptionTypeProportion(energyStatisticsVo);
        energyStatisticsDto.setEnergyConsumptionTypeProportion(energyConsumptionTypeDtos);
        //能耗明细
        List<EnergyCostDto> energyCostDtos=energyConsumptionDetailMapper.energyCostDtos(energyStatisticsVo);
        List<EnergyCostDto> energyCostDtos=new ArrayList<>();
        //判断日/月/年
        switch (energyStatisticsVo.getState()){
            case "日":
                energyCostDtos=energyConsumptionDetailMapper.energyCostDtos1(energyStatisticsVo);
                break;
            case "月":
                energyCostDtos=energyConsumptionDetailMapper.energyCostDtos2(energyStatisticsVo);
                break;
            case "年":
                energyCostDtos=energyConsumptionDetailMapper.energyCostDtos3(energyStatisticsVo);
                break;
        }
        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<EnergyConsumptionTypeDto> energyConsumptionTypeDtos=energyConsumptionDetailMapper.energyConsumptionTypeProportion(energyStatisticsVo);
        energyAccountDto.setEnergyConsumptionTypeProportion(energyConsumptionTypeDtos);
        //能耗类型明细
        List<EnergyDetailDto> energyDetailDtos = new ArrayList<>();
        //判断日/月/年
        switch (energyStatisticsVo.getState()){
            case "日":
                energyDetailDtos=energyConsumptionDetailMapper.energyConsumptionDetailDtos1(energyStatisticsVo);
                break;
            case "月":
                energyDetailDtos=energyConsumptionDetailMapper.energyConsumptionDetailDtos2(energyStatisticsVo);
                break;
            case "年":
                energyDetailDtos=energyConsumptionDetailMapper.energyConsumptionDetailDtos3(energyStatisticsVo);
                break;
        }
        energyAccountDto.setEnergyConsumptionDetailDtoList(energyDetailDtos);
        return energyAccountDto;
    }
    @Override
    public EnergyCollectDto collectEnergy(EnergyStatisticsVo energyStatisticsVo) {
        EnergyCollectDto energyCollectDto = new EnergyCollectDto();
        //能耗单耗数据
        List<EnergyConsumptionTypeDto> energyConsumptionTypeDtos=energyConsumptionDetailMapper.energyConsumptionTypeProportion(energyStatisticsVo);
        energyCollectDto.setEnergyConsumptionTypeProportion(energyConsumptionTypeDtos);
        //能耗单耗趋势
        List<EnergyCostDto> energyCostDtos=new ArrayList<>();
        //判断日/月/年
        switch (energyStatisticsVo.getState()){
            case "日":
                energyCostDtos=energyConsumptionDetailMapper.energyCostDtos1(energyStatisticsVo);
                break;
            case "月":
                energyCostDtos=energyConsumptionDetailMapper.energyCostDtos2(energyStatisticsVo);
                break;
            case "年":
                energyCostDtos=energyConsumptionDetailMapper.energyCostDtos3(energyStatisticsVo);
                break;
        }
        energyCollectDto.setEnergyCostDtos(energyCostDtos);
        return energyCollectDto;
    }
}