From 8546dfc55df24663d18137c83bf490c15b8d46da Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期三, 11 三月 2026 13:03:03 +0800
Subject: [PATCH] 能耗管理的统计
---
src/main/resources/mapper/energy/EnergyConsumptionDetailMapper.xml | 84 ++++++++++++++++++++++++++++++++++++++++--
1 files changed, 80 insertions(+), 4 deletions(-)
diff --git a/src/main/resources/mapper/energy/EnergyConsumptionDetailMapper.xml b/src/main/resources/mapper/energy/EnergyConsumptionDetailMapper.xml
index 2fe5f17..b2cf830 100644
--- a/src/main/resources/mapper/energy/EnergyConsumptionDetailMapper.xml
+++ b/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>
--
Gitblit v1.9.3