zss
4 小时以前 9c685df2670f9536d1adf9dfb1c0e95a7d5f9c53
关于能耗的统计调整
已修改5个文件
212 ■■■■■ 文件已修改
src/main/java/com/ruoyi/energy/dto/EnergyCollectDto.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/energy/mapper/EnergyConsumptionDetailMapper.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/energy/service/impl/EnergyConsumptionDetailServiceImpl.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/energy/vo/EnergyStatisticsVo.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/energy/EnergyConsumptionDetailMapper.xml 148 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/energy/dto/EnergyCollectDto.java
@@ -15,5 +15,7 @@
    @ApiModelProperty("能耗类型占比")
    private List<EnergyConsumptionTypeDto> energyConsumptionTypeProportion;
    @ApiModelProperty("能耗单耗趋势")
    private List<EnergyCostDto> energyCostDtos;
}
src/main/java/com/ruoyi/energy/mapper/EnergyConsumptionDetailMapper.java
@@ -32,7 +32,17 @@
    List<EnergyConsumptionTypeDto> energyConsumptionTypeProportion(@Param("c") EnergyStatisticsVo energyStatisticsVo);
    List<EnergyCostDto> energyCostDtos(@Param("c") EnergyStatisticsVo energyStatisticsVo);
    //日能耗明细
    List<EnergyCostDto> energyCostDtos1(@Param("c") EnergyStatisticsVo energyStatisticsVo);
    //月能耗明细
    List<EnergyCostDto> energyCostDtos2(@Param("c") EnergyStatisticsVo energyStatisticsVo);
    //年能耗明细
    List<EnergyCostDto> energyCostDtos3(@Param("c") EnergyStatisticsVo energyStatisticsVo);
    List<EnergyConsumptionDetailDto> energyConsumptionDetailDtos(@Param("c") EnergyStatisticsVo energyStatisticsVo);
    //日能耗类型明细
    List<EnergyConsumptionDetailDto> energyConsumptionDetailDtos1(@Param("c") EnergyStatisticsVo energyStatisticsVo);
    //月能耗类型明细
    List<EnergyConsumptionDetailDto> energyConsumptionDetailDtos2(@Param("c") EnergyStatisticsVo energyStatisticsVo);
    //年能耗类型明细
    List<EnergyConsumptionDetailDto> energyConsumptionDetailDtos3(@Param("c") EnergyStatisticsVo energyStatisticsVo);
}
src/main/java/com/ruoyi/energy/service/impl/EnergyConsumptionDetailServiceImpl.java
@@ -24,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;
@@ -123,7 +124,19 @@
        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;
    }
@@ -147,7 +160,19 @@
        List<EnergyConsumptionTypeDto> energyConsumptionTypeDtos=energyConsumptionDetailMapper.energyConsumptionTypeProportion(energyStatisticsVo);
        energyAccountDto.setEnergyConsumptionTypeProportion(energyConsumptionTypeDtos);
        //能耗类型明细
        List<EnergyConsumptionDetailDto> energyConsumptionDetailDtoList=energyConsumptionDetailMapper.energyConsumptionDetailDtos(energyStatisticsVo);
        List<EnergyConsumptionDetailDto> energyConsumptionDetailDtoList = new ArrayList<>();
        //判断日/月/年
        switch (energyStatisticsVo.getState()){
            case "日":
                energyConsumptionDetailDtoList=energyConsumptionDetailMapper.energyConsumptionDetailDtos1(energyStatisticsVo);
                break;
            case "月":
                energyConsumptionDetailDtoList=energyConsumptionDetailMapper.energyConsumptionDetailDtos2(energyStatisticsVo);
                break;
            case "年":
                energyConsumptionDetailDtoList=energyConsumptionDetailMapper.energyConsumptionDetailDtos3(energyStatisticsVo);
                break;
        }
        energyAccountDto.setEnergyConsumptionDetailDtoList(energyConsumptionDetailDtoList);
        return energyAccountDto;
    }
@@ -158,7 +183,21 @@
        //能耗单耗数据
        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;
    }
}
src/main/java/com/ruoyi/energy/vo/EnergyStatisticsVo.java
@@ -29,4 +29,7 @@
    //能耗类型(水/电/气)
    private String energyName;
    //日/月/年
    private String state;
}
src/main/resources/mapper/energy/EnergyConsumptionDetailMapper.xml
@@ -66,8 +66,8 @@
            </if>
            group by e.energy_tyep
    </select>
    <select id="energyCostDtos" resultType="com.ruoyi.energy.dto.EnergyCostDto">
   select  z.meter_reading_date,
    <select id="energyCostDtos1" resultType="com.ruoyi.energy.dto.EnergyCostDto">
    select  z.meter_reading_date,
           COALESCE(A.waterConsumption, 0) waterConsumption,
           COALESCE(A.waterCost, 0) waterCost,
           COALESCE(B.electricityConsumption, 0) electricityConsumption,
@@ -118,8 +118,111 @@
        on z.meter_reading_date=C.meter_reading_date
    order by z.meter_reading_date
    </select>
    <select id="energyConsumptionDetailDtos"
            resultType="com.ruoyi.energy.dto.EnergyConsumptionDetailDto">
    <select id="energyCostDtos2" resultType="com.ruoyi.energy.dto.EnergyCostDto">
    select DATE_FORMAT(z.meter_reading_date, '%Y-%m') AS meterReadingDate ,
           COALESCE(A.waterConsumption, 0) waterConsumption,
           COALESCE(A.waterCost, 0) waterCost,
           COALESCE(B.electricityConsumption, 0) electricityConsumption,
           COALESCE(B.electricityCost, 0) electricityCost,
           COALESCE(C.gasConsumption, 0) gasConsumption,
           COALESCE(C.gasCost, 0) gasCost,
           COALESCE(A.waterConsumption, 0)+ COALESCE(B.electricityConsumption, 0)+ COALESCE(C.gasConsumption, 0) totalConsumption,
           COALESCE(A.waterCost, 0)+ COALESCE(B.electricityCost, 0)+ COALESCE(C.gasCost, 0) totalCost
    from   energy_consumption_detail z
    left join
    (select    DATE_FORMAT(ecd.meter_reading_date, '%Y-%m') AS meterReadingDate ,
               sum(ecd.dosage) waterConsumption,
               sum(ecd.dosage * e1.unit_price) waterCost
            from energy_consumption_detail ecd
            left join  energy e1 on ecd.energy_id = e1.id
            where ecd.meter_reading_date between #{c.startDate} and #{c.endDate}
            and e1.energy_tyep='水'
            <if test="c.type != null and c.type != ''">
                and ecd.type =#{c.type}
            </if>
            group by DATE_FORMAT(ecd.meter_reading_date, '%Y-%m'))A
        on DATE_FORMAT(z.meter_reading_date, '%Y-%m')=A.meterReadingDate
    left join
    (select    DATE_FORMAT(ecd.meter_reading_date, '%Y-%m') AS meterReadingDate,
               sum(ecd.dosage) electricityConsumption,
               sum(ecd.dosage * e2.unit_price) electricityCost
            from energy_consumption_detail ecd
            left join  energy e2 on ecd.energy_id = e2.id
            where ecd.meter_reading_date between #{c.startDate} and #{c.endDate}
            and e2.energy_tyep='电'
            <if test="c.type != null and c.type != ''">
                and ecd.type =#{c.type}
            </if>
            group by DATE_FORMAT(ecd.meter_reading_date, '%Y-%m'))B
        on DATE_FORMAT(z.meter_reading_date, '%Y-%m')=B.meterReadingDate
    left join
    (select    DATE_FORMAT(ecd.meter_reading_date, '%Y-%m') AS meterReadingDate,
               sum(ecd.dosage) gasConsumption,
               sum(ecd.dosage * e3.unit_price) gasCost
            from energy_consumption_detail ecd
            left join  energy e3 on ecd.energy_id = e3.id
            where ecd.meter_reading_date between #{c.startDate} and #{c.endDate}
            and e3.energy_tyep='气'
            <if test="c.type != null and c.type != ''">
                and ecd.type =#{c.type}
            </if>
            group by DATE_FORMAT(ecd.meter_reading_date, '%Y-%m'))C
        on DATE_FORMAT(z.meter_reading_date, '%Y-%m')=C.meterReadingDate
    order by DATE_FORMAT(z.meter_reading_date, '%Y-%m')
    </select>
    <select id="energyCostDtos3" resultType="com.ruoyi.energy.dto.EnergyCostDto">
    select  DATE_FORMAT(z.meter_reading_date, '%Y') AS  meterReadingDate,
           COALESCE(A.waterConsumption, 0) waterConsumption,
           COALESCE(A.waterCost, 0) waterCost,
           COALESCE(B.electricityConsumption, 0) electricityConsumption,
           COALESCE(B.electricityCost, 0) electricityCost,
           COALESCE(C.gasConsumption, 0) gasConsumption,
           COALESCE(C.gasCost, 0) gasCost,
           COALESCE(A.waterConsumption, 0)+ COALESCE(B.electricityConsumption, 0)+ COALESCE(C.gasConsumption, 0) totalConsumption,
           COALESCE(A.waterCost, 0)+ COALESCE(B.electricityCost, 0)+ COALESCE(C.gasCost, 0) totalCost
    from   energy_consumption_detail z
    left join
    (select   DATE_FORMAT(ecd.meter_reading_date, '%Y') AS meterReadingDate,
               sum(ecd.dosage) waterConsumption,
               sum(ecd.dosage * e1.unit_price) waterCost
            from energy_consumption_detail ecd
            left join  energy e1 on ecd.energy_id = e1.id
            where ecd.meter_reading_date between #{c.startDate} and #{c.endDate}
            and e1.energy_tyep='水'
            <if test="c.type != null and c.type != ''">
                and ecd.type =#{c.type}
            </if>
            group by DATE_FORMAT(ecd.meter_reading_date, '%Y'))A
        on DATE_FORMAT(z.meter_reading_date, '%Y')=A.meterReadingDate
    left join
    (select DATE_FORMAT(ecd.meter_reading_date, '%Y') AS meterReadingDate,
               sum(ecd.dosage) electricityConsumption,
               sum(ecd.dosage * e2.unit_price) electricityCost
            from energy_consumption_detail ecd
            left join  energy e2 on ecd.energy_id = e2.id
            where ecd.meter_reading_date between #{c.startDate} and #{c.endDate}
            and e2.energy_tyep='电'
            <if test="c.type != null and c.type != ''">
                and ecd.type =#{c.type}
            </if>
            group by DATE_FORMAT(ecd.meter_reading_date, '%Y'))B
        on DATE_FORMAT(z.meter_reading_date, '%Y')=B.meterReadingDate
    left join
    (select DATE_FORMAT(ecd.meter_reading_date, '%Y') AS meterReadingDate,
               sum(ecd.dosage) gasConsumption,
               sum(ecd.dosage * e3.unit_price) gasCost
            from energy_consumption_detail ecd
            left join  energy e3 on ecd.energy_id = e3.id
            where ecd.meter_reading_date between #{c.startDate} and #{c.endDate}
            and e3.energy_tyep='气'
            <if test="c.type != null and c.type != ''">
                and ecd.type =#{c.type}
            </if>
            group by DATE_FORMAT(ecd.meter_reading_date, '%Y'))C
        on DATE_FORMAT(z.meter_reading_date, '%Y')=C.meterReadingDate
    order by DATE_FORMAT(z.meter_reading_date, '%Y')
    </select>
    <select id="energyConsumptionDetailDtos1" resultType="com.ruoyi.energy.dto.EnergyConsumptionDetailDto">
        select ecd.meter_reading_date,
               e.energy_tyep,
               ecd.type,
@@ -137,5 +240,40 @@
                     e.unit_price
        order by ecd.meter_reading_date
    </select>
    <select id="energyConsumptionDetailDtos2" resultType="com.ruoyi.energy.dto.EnergyConsumptionDetailDto">
        select DATE_FORMAT(ecd.meter_reading_date, '%Y-%m') AS meterReadingDate ,
               e.energy_tyep,
               ecd.type,
               e.unit,
               e.unit_price,
               sum(ecd.dosage) dosage,
               sum(ecd.dosage * e.unit_price) cost
        from energy_consumption_detail ecd
                 left join  energy e on ecd.energy_id = e.id
        where ecd.meter_reading_date between #{c.startDate} and #{c.endDate}
        group by DATE_FORMAT(ecd.meter_reading_date, '%Y-%m'),
                 e.energy_tyep,
                 ecd.type,
                 e.unit,
                 e.unit_price
        order by DATE_FORMAT(ecd.meter_reading_date, '%Y-%m')
    </select>
    <select id="energyConsumptionDetailDtos3" resultType="com.ruoyi.energy.dto.EnergyConsumptionDetailDto">
        select DATE_FORMAT(ecd.meter_reading_date, '%Y') AS meterReadingDate,
               e.energy_tyep,
               ecd.type,
               e.unit,
               e.unit_price,
               sum(ecd.dosage) dosage,
               sum(ecd.dosage * e.unit_price) cost
        from energy_consumption_detail ecd
                 left join  energy e on ecd.energy_id = e.id
        where ecd.meter_reading_date between #{c.startDate} and #{c.endDate}
        group by DATE_FORMAT(ecd.meter_reading_date, '%Y'),
                 e.energy_tyep,
                 ecd.type,
                 e.unit,
                 e.unit_price
        order by DATE_FORMAT(ecd.meter_reading_date, '%Y')
    </select>
</mapper>