zss
10 小时以前 9c685df2670f9536d1adf9dfb1c0e95a7d5f9c53
src/main/resources/mapper/energy/EnergyConsumptionDetailMapper.xml
@@ -41,7 +41,9 @@
         </where>
    </select>
    <select id="calculateEnergy" resultType="java.util.Map">
        select SUM(ecd.dosage) totalEnergyConsumption,
        select  COALESCE(t.totalEnergyConsumption, 0) AS totalEnergyConsumption,
                COALESCE(t.totalEnergyCost, 0) AS totalEnergyCost
        from (select SUM(ecd.dosage) totalEnergyConsumption,
               SUM(ecd.dosage * e.unit_price) totalEnergyCost
            from energy_consumption_detail ecd
            left join  energy e on ecd.energy_id = e.id
@@ -49,12 +51,13 @@
            <if test="c.type != null and c.type != ''">
                and ecd.type =#{c.type}
            </if>
        )t
    </select>
    <select id="energyConsumptionTypeProportion"
            resultType="com.ruoyi.energy.dto.EnergyConsumptionTypeDto">
         select e.energy_tyep,
                SUM(ecd.dosage) energyConsumption,
               SUM(ecd.dosage * e.unit_price) energyCost
                SUM(COALESCE(ecd.dosage, 0)) energyConsumption,
               SUM(COALESCE(ecd.dosage, 0) * e.unit_price) energyCost
            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}
@@ -63,17 +66,18 @@
            </if>
            group by e.energy_tyep
    </select>
    <select id="energyCostDtos" resultType="com.ruoyi.energy.dto.EnergyCostDto">
    select A.meter_reading_date,
           A.waterConsumption,
           A.waterCost,
           B.electricityConsumption,
           B.electricityCost,
           C.gasConsumption,
           C.gasCost,
           sum(A.waterConsumption+B.electricityConsumption+C.gasConsumption) totalConsumption,
           sum(A.waterCost+B.electricityCost+C.gasCost) totalCost
    from
    <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,
           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 ecd.meter_reading_date,
               sum(ecd.dosage) waterConsumption,
               sum(ecd.dosage * e1.unit_price) waterCost
@@ -85,7 +89,8 @@
                and ecd.type =#{c.type}
            </if>
            group by ecd.meter_reading_date)A
    join
        on z.meter_reading_date=A.meter_reading_date
    left join
    (select ecd.meter_reading_date,
               sum(ecd.dosage) electricityConsumption,
               sum(ecd.dosage * e2.unit_price) electricityCost
@@ -97,8 +102,8 @@
                and ecd.type =#{c.type}
            </if>
            group by ecd.meter_reading_date)B
        on A.meter_reading_date=B.meter_reading_date
    join
        on z.meter_reading_date=B.meter_reading_date
    left join
    (select ecd.meter_reading_date,
               sum(ecd.dosage) gasConsumption,
               sum(ecd.dosage * e3.unit_price) gasCost
@@ -110,8 +115,165 @@
                and ecd.type =#{c.type}
            </if>
            group by ecd.meter_reading_date)C
        on A.meter_reading_date=C.meter_reading_date
        on z.meter_reading_date=C.meter_reading_date
    order by z.meter_reading_date
    </select>
    <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,
               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 ecd.meter_reading_date,
                     e.energy_tyep,
                     ecd.type,
                     e.unit,
                     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>