| | |
| | | ORDER BY customer_name, bill_due_date |
| | | </select> |
| | | |
| | | <!-- 批量更新应收账单账龄分析数据 --> |
| | | <update id="batchUpdateAgingAnalysisData"> |
| | | UPDATE receivable_bill_management |
| | | SET |
| | | -- 只更新当前时段的数据,其他时段保留原值 |
| | | due_in_30_days = CASE |
| | | WHEN pending_amount > 0 AND bill_due_date IS NOT NULL |
| | | AND bill_due_date > CURDATE() |
| | | AND DATEDIFF(bill_due_date, CURDATE()) <= 30 |
| | | THEN pending_amount |
| | | ELSE due_in_30_days -- 保留历史数据 |
| | | END, |
| | | overdue_amount = CASE |
| | | WHEN pending_amount > 0 AND bill_due_date IS NOT NULL |
| | | AND bill_due_date <= CURDATE() |
| | | THEN pending_amount |
| | | ELSE overdue_amount -- 保留历史数据 |
| | | END, |
| | | -- 只更新当前逾期时段的金额,其他时段保留历史数据 |
| | | overdue_1_to_30_days = CASE |
| | | WHEN pending_amount > 0 AND bill_due_date IS NOT NULL |
| | | AND bill_due_date <= CURDATE() |
| | | AND DATEDIFF(CURDATE(), bill_due_date) BETWEEN 1 AND 30 |
| | | THEN pending_amount |
| | | ELSE overdue_1_to_30_days -- 保留历史数据 |
| | | END, |
| | | overdue_31_to_60_days = CASE |
| | | WHEN pending_amount > 0 AND bill_due_date IS NOT NULL |
| | | AND bill_due_date <= CURDATE() |
| | | AND DATEDIFF(CURDATE(), bill_due_date) BETWEEN 31 AND 60 |
| | | THEN pending_amount |
| | | ELSE overdue_31_to_60_days -- 保留历史数据 |
| | | END, |
| | | overdue_61_to_90_days = CASE |
| | | WHEN pending_amount > 0 AND bill_due_date IS NOT NULL |
| | | AND bill_due_date <= CURDATE() |
| | | AND DATEDIFF(CURDATE(), bill_due_date) BETWEEN 61 AND 90 |
| | | THEN pending_amount |
| | | ELSE overdue_61_to_90_days -- 保留历史数据 |
| | | END, |
| | | overdue_91_to_180_days = CASE |
| | | WHEN pending_amount > 0 AND bill_due_date IS NOT NULL |
| | | AND bill_due_date <= CURDATE() |
| | | AND DATEDIFF(CURDATE(), bill_due_date) BETWEEN 91 AND 180 |
| | | THEN pending_amount |
| | | ELSE overdue_91_to_180_days -- 保留历史数据 |
| | | END, |
| | | overdue_181_to_365_days = CASE |
| | | WHEN pending_amount > 0 AND bill_due_date IS NOT NULL |
| | | AND bill_due_date <= CURDATE() |
| | | AND DATEDIFF(CURDATE(), bill_due_date) BETWEEN 181 AND 365 |
| | | THEN pending_amount |
| | | ELSE overdue_181_to_365_days -- 保留历史数据 |
| | | END, |
| | | overdue_over_1_year = CASE |
| | | WHEN pending_amount > 0 AND bill_due_date IS NOT NULL |
| | | AND bill_due_date <= CURDATE() |
| | | AND DATEDIFF(CURDATE(), bill_due_date) > 365 |
| | | THEN pending_amount |
| | | ELSE overdue_over_1_year -- 保留历史数据 |
| | | END, |
| | | overdue_days = CASE |
| | | WHEN pending_amount > 0 AND bill_due_date IS NOT NULL |
| | | AND bill_due_date <= CURDATE() |
| | | THEN DATEDIFF(CURDATE(), bill_due_date) |
| | | ELSE overdue_days -- 保留历史数据 |
| | | END, |
| | | update_time = NOW() |
| | | WHERE pending_amount > 0 |
| | | </update> |
| | | |
| | | </mapper> |