| | |
| | | <mapper namespace="reportFeeServiceDaoImpl"> |
| | | <select id="repostInFee" resultType="java.util.Map"> |
| | | SELECT |
| | | pfd.community_id as communityId, |
| | | td.name AS feeTypeName, |
| | | pf.fee_type_cd AS feeTypeCode, |
| | | <foreach collection="yearList" item="year" separator=","> |
| | | SUM( |
| | | CASE |
| | | WHEN pfd.start_time < #{year}+1 AND pfd.end_time >= #{year} |
| | | THEN pfd.received_amount * |
| | | DATEDIFF( |
| | | LEAST(pfd.end_time, #{year}-12-31), |
| | | GREATEST(pfd.start_time, #{year}-01-01) |
| | | ) / DATEDIFF(pfd.end_time, pfd.start_time) |
| | | ELSE 0 |
| | | END |
| | | ) AS 'amount${year}' |
| | | </foreach> |
| | | SUM(pfd.received_amount) AS totalAmount |
| | | pfd.community_id, |
| | | td.name AS '费用类型名称', |
| | | YEAR(pfd.create_time), |
| | | pf.fee_type_cd AS '费用类型编码', |
| | | -- 计算各年份的收费金额(按天数比例分配) |
| | | SUM( |
| | | CASE |
| | | WHEN pfd.start_time < '2021-01-01' AND pfd.end_time >= '2020-01-01' |
| | | THEN pfd.received_amount * |
| | | DATEDIFF( |
| | | LEAST(pfd.end_time, '2020-12-31'), |
| | | GREATEST(pfd.start_time, '2020-01-01') |
| | | ) / DATEDIFF(pfd.end_time, pfd.start_time) |
| | | ELSE 0 |
| | | END |
| | | ) AS '2020年收费金额(元)', |
| | | SUM( |
| | | CASE |
| | | WHEN pfd.start_time < '2022-01-01' AND pfd.end_time >= '2021-01-01' |
| | | THEN pfd.received_amount * |
| | | DATEDIFF( |
| | | LEAST(pfd.end_time, '2021-12-31'), |
| | | GREATEST(pfd.start_time, '2021-01-01') |
| | | ) / DATEDIFF(pfd.end_time, pfd.start_time) |
| | | ELSE 0 |
| | | END |
| | | ) AS '2021年收费金额(元)', |
| | | SUM( |
| | | CASE |
| | | WHEN pfd.start_time < '2023-01-01' AND pfd.end_time >= '2022-01-01' |
| | | THEN pfd.received_amount * |
| | | DATEDIFF( |
| | | LEAST(pfd.end_time, '2022-12-31'), |
| | | GREATEST(pfd.start_time, '2022-01-01') |
| | | ) / DATEDIFF(pfd.end_time, pfd.start_time) |
| | | ELSE 0 |
| | | END |
| | | ) AS '2022年收费金额(元)', |
| | | SUM( |
| | | CASE |
| | | WHEN pfd.start_time < '2024-01-01' AND pfd.end_time >= '2023-01-01' |
| | | THEN pfd.received_amount * |
| | | DATEDIFF( |
| | | LEAST(pfd.end_time, '2023-12-31'), |
| | | GREATEST(pfd.start_time, '2023-01-01') |
| | | ) / DATEDIFF(pfd.end_time, pfd.start_time) |
| | | ELSE 0 |
| | | END |
| | | ) AS '2023年收费金额(元)', |
| | | SUM( |
| | | CASE |
| | | WHEN pfd.start_time < '2025-01-01' AND pfd.end_time >= '2024-01-01' |
| | | THEN pfd.received_amount * |
| | | DATEDIFF( |
| | | LEAST(pfd.end_time, '2024-12-31'), |
| | | GREATEST(pfd.start_time, '2024-01-01') |
| | | ) / DATEDIFF(pfd.end_time, pfd.start_time) |
| | | ELSE 0 |
| | | END |
| | | ) AS '2024年收费金额(元)', |
| | | SUM( |
| | | CASE |
| | | WHEN pfd.start_time < '2026-01-01' AND pfd.end_time >= '2025-01-01' |
| | | THEN pfd.received_amount * |
| | | DATEDIFF( |
| | | LEAST(pfd.end_time, '2025-12-31'), |
| | | GREATEST(pfd.start_time, '2025-01-01') |
| | | ) / DATEDIFF(pfd.end_time, pfd.start_time) |
| | | ELSE 0 |
| | | END |
| | | ) AS '2025年收费金额(元)', |
| | | SUM(pfd.received_amount) AS '总收费金额(元)' |
| | | FROM |
| | | pay_fee_detail pfd |
| | | LEFT JOIN pay_fee pf ON pf.fee_id = pfd.fee_id |
| | |
| | | AND td.status_cd = pf.fee_type_cd |
| | | WHERE |
| | | pfd.status_cd = '0' AND |
| | | pfd.community_id = #{params.communityId} |
| | | AND ( |
| | | <foreach collection="yearList" item="year" separator="OR"> |
| | | (pfd.start_time < #{year}+1 AND pfd.end_time >= #{year}) |
| | | </foreach> |
| | | ) |
| | | pfd.community_id = '2025081537770016' |
| | | GROUP BY |
| | | td.name, pf.fee_type_cd, pfd.community_id |
| | | td.name, pf.fee_type_cd, pfd.community_id,YEAR(pfd.create_time) |
| | | ORDER BY |
| | | td.name |
| | | td.name; |
| | | </select> |
| | | </mapper> |