gongchunyi
3 天以前 423ac2a5e7e451248d8cdfc2cda3f32dba0ec8f8
src/main/resources/mapper/energy/EnergyConsumptionDetailMapper.xml
@@ -26,16 +26,92 @@
                       left join energy e on ecd.energy_id = e.id
                       left join sys_user su on ecd.create_user = su.user_id) A
         <where>
            <if test="c.energyTyep != null and c.energyTyep != ''">
             <if test="c.type != null and c.type != ''">
                and type =#{c.type}
             </if>
             <if test="c.energyTyep != null and c.energyTyep != ''">
                and energy_tyep like concat('%',#{c.energyTyep},'%')
            </if>
             </if>
             <if test="c.energyName != null and c.energyName != ''">
                and energy_name like concat('%',#{c.energyName},'%')
            </if>
             </if>
             <if test="c.meterReadingDate != null and c.meterReadingDate != ''">
                 and meter_reading_date =#{c.meterReadingDate}
             </if>
         </where>
    </select>
    <select id="calculateEnergy" resultType="java.util.Map">
        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
            where ecd.meter_reading_date between #{c.startDate} and #{c.endDate}
            <if test="c.type != null and c.type != ''">
                and ecd.type =#{c.type}
            </if>
        </where>
    </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
            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}
            <if test="c.type != null and c.type != ''">
                and ecd.type =#{c.type}
            </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 ecd.meter_reading_date,
               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 ecd.meter_reading_date)A
    join
    (select ecd.meter_reading_date,
               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 ecd.meter_reading_date)B
        on A.meter_reading_date=B.meter_reading_date
    join
    (select ecd.meter_reading_date,
               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 ecd.meter_reading_date)C
        on A.meter_reading_date=C.meter_reading_date
    </select>
</mapper>