| | |
| | | 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(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} |
| | | <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 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 |
| | | 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 |
| | | 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 |
| | | 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 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 |
| | | 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 z.meter_reading_date=C.meter_reading_date |
| | | order by z.meter_reading_date |
| | | </select> |
| | | |
| | | </mapper> |