|
|
@@ -193,28 +193,21 @@
|
|
|
WHERE eei.is_monthly_expense = 1
|
|
|
AND ee.elder_id = #{elderId}
|
|
|
AND (
|
|
|
- -- 情况1:有明确的开始和结束日期,且查询月份在这个区间内
|
|
|
- (DATE_FORMAT(eei.change_start_date, '%Y-%m') <= #{billingMonth}
|
|
|
- AND DATE_FORMAT(eei.change_end_date, '%Y-%m') >= #{billingMonth})
|
|
|
- -- 情况2:开始日期 <= 查询月份,且结束日期为NULL
|
|
|
- OR (DATE_FORMAT(eei.change_start_date, '%Y-%m') <= #{billingMonth}
|
|
|
+ (DATE_FORMAT(eei.change_start_date, '%Y-%m') <![CDATA[ <= ]]> #{billingMonth}
|
|
|
+ AND DATE_FORMAT(eei.change_end_date, '%Y-%m') <![CDATA[ >= ]]> #{billingMonth})
|
|
|
+ OR (DATE_FORMAT(eei.change_start_date, '%Y-%m') <![CDATA[ <= ]]> #{billingMonth}
|
|
|
AND eei.change_end_date IS NULL)
|
|
|
)
|
|
|
- -- 关键修复:排除在账单月开始的新费用(当存在同一老人、同一费用项的旧版本时)
|
|
|
AND NOT (
|
|
|
DATE_FORMAT(eei.change_start_date, '%Y-%m') = #{billingMonth}
|
|
|
- AND eei.change_start_date > STR_TO_DATE(CONCAT(#{billingMonth}, '-01'), '%Y-%m-%d')
|
|
|
+ AND eei.change_start_date > STR_TO_DATE(CONCAT(#{billingMonth}, '-01'), '%Y-%m-%d')
|
|
|
AND EXISTS (
|
|
|
SELECT 1
|
|
|
- FROM elderly_expense_item eei2
|
|
|
- INNER JOIN elderly_expense ee2 ON eei2.expense_id = ee2.id
|
|
|
- WHERE ee2.elder_id = ee.elder_id -- 同一老人
|
|
|
- AND eei2.item_id = eei.item_id -- 同一费用项
|
|
|
- AND eei2.id != eei.id -- 排除自身
|
|
|
- AND eei2.is_monthly_expense = 1 -- 同样只考虑月费用
|
|
|
- AND DATE_FORMAT(eei2.change_start_date, '%Y-%m') < #{billingMonth}
|
|
|
- AND (eei2.change_end_date IS NULL
|
|
|
- OR DATE_FORMAT(eei2.change_end_date, '%Y-%m') >= #{billingMonth})
|
|
|
+ FROM elderly_change_record ecr
|
|
|
+ WHERE ecr.elderly_id = ee.elder_id
|
|
|
+ AND ecr.expect_overhead_charge_id = eei.item_id
|
|
|
+ AND DATE_FORMAT(ecr.change_date, '%Y-%m') = #{billingMonth}
|
|
|
+ AND ecr.deleted = 0
|
|
|
)
|
|
|
)
|
|
|
) expense_data
|