<?xml version="1.0" encoding="UTF-8"?>
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
<mapper namespace="com.ruoyi.energy.mapper.EnergyConsumptionDetailMapper">
|
|
<!-- 通用查询映射结果 -->
|
<resultMap id="BaseResultMap" type="com.ruoyi.energy.pojo.EnergyConsumptionDetail">
|
<id column="id" property="id"/>
|
<result column="energy_id" property="energyId"/>
|
<result column="type" property="type"/>
|
<result column="meter_reading_location" property="meterReadingLocation"/>
|
<result column="meter_reading_date" property="meterReadingDate"/>
|
<result column="start_code" property="startCode"/>
|
<result column="stop_code" property="stopCode"/>
|
<result column="dosage" property="dosage"/>
|
<result column="remark" property="remark"/>
|
<result column="create_time" property="createTime"/>
|
<result column="update_time" property="updateTime"/>
|
<result column="create_user" property="createUser"/>
|
<result column="update_user" property="updateUser"/>
|
</resultMap>
|
<select id="pageEnergyConsumptionDetail"
|
resultType="com.ruoyi.energy.dto.EnergyConsumptionDetailDto">
|
select *
|
from (select ecd.*, e.energy_tyep, e.energy_name, e.unit, su.nick_name createUserName
|
from energy_consumption_detail ecd
|
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.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 test="c.energyName != null and c.energyName != ''">
|
and energy_name like concat('%',#{c.energyName},'%')
|
</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>
|
</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>
|