|
|
@ -13,27 +13,137 @@ |
|
|
|
a1.borrowerName, |
|
|
|
RIGHT(a1.vinNo, 8) AS vinNo, |
|
|
|
a1.vehMark AS carNum, |
|
|
|
a1.bankName, |
|
|
|
a1.bankContractNo, |
|
|
|
a1.dueMoney AS bankMonthRep, |
|
|
|
MIN(a1.dueDate) AS firstBeDate, -- 改为取最早逾期日期 |
|
|
|
COUNT(a1.nowOverdue) AS beOverduePeriod, |
|
|
|
SUM(CASE WHEN (a1.yq_total + |
|
|
|
COALESCE(lbpv_sum.bankBeInter_sum, 0) + |
|
|
|
COALESCE(lfd_sum.fund_sum, 0)) > 0 THEN 1 ELSE 0 END) AS beOverduePeriod, |
|
|
|
ROUND(SUM(a1.yq_total) + |
|
|
|
COALESCE(lbpv_sum.bankBeInter_sum, 0) + |
|
|
|
CAST(COALESCE(lfd_sum.fund_sum, 0) AS DECIMAL(10,2)),2) AS beOverdueMoney, |
|
|
|
ROUND( |
|
|
|
(SUM(a1.yq_total) + COALESCE(lbpv_sum.bankBeInter_sum, 0) + COALESCE(lfd_sum.fund_sum, 0)) / |
|
|
|
MAX(a1.qjyh), -- 保证聚合正确性 |
|
|
|
MAX(a1.qjyh), -- 保证聚合正确性 |
|
|
|
2 |
|
|
|
) AS beOverdueMoneyAndPeriod, |
|
|
|
SUM(a1.yd_dkje) AS advMoney, |
|
|
|
SUM(a1.yd_zjzyf) AS fundPossCostMoney, |
|
|
|
MAX(a1.riskStaffUserSid) AS riskStaffUserSid, -- 保证聚合正确性 |
|
|
|
MAX(a1.riskStaffUserName) AS riskStaffUserName, |
|
|
|
MAX(a1.reaRepaymentName) AS repaymentName, |
|
|
|
MAX(a1.createTime) AS createTime, |
|
|
|
a1.orgSidPath, |
|
|
|
MAX(a1.lockCarState) AS lockCarState, -- 保证聚合正确性 |
|
|
|
MAX(a1.lockCarState) AS lockCarState, -- 保证聚合正确性 |
|
|
|
a1.nowOverdue |
|
|
|
FROM ( |
|
|
|
SELECT |
|
|
|
lrpd.sid, |
|
|
|
lrpd.busVinSid, |
|
|
|
lrpd.useOrgName, |
|
|
|
lrpd.dept, |
|
|
|
lrpd.loanContractNo, |
|
|
|
lrpd.borrowerName, |
|
|
|
lrpd.vinNo, |
|
|
|
lrpd.vehMark, |
|
|
|
COALESCE(lrs.mainMidRepay, 0) + COALESCE(lrs.otherMidRepay, 0) AS qjyh, |
|
|
|
lrpd.dueMoney - COALESCE(SUM(lrh.actualMoney), 0) AS yq_total, |
|
|
|
lrpd.orgSidPath, |
|
|
|
bv.riskStaffUserName, |
|
|
|
bv.reaRepaymentName, |
|
|
|
lbcr.createTime, |
|
|
|
CASE lbcv.lockCarState |
|
|
|
WHEN 0 THEN '未控制' |
|
|
|
WHEN 1 THEN '控制成功' |
|
|
|
WHEN 2 THEN '控制失败' |
|
|
|
WHEN 3 THEN '已解控' |
|
|
|
END AS lockCarState, |
|
|
|
if(lrpd.dueDate <= lrpd.updateTime,0,1) as nowOverdue |
|
|
|
FROM loan_repayment_plan_details lrpd |
|
|
|
LEFT JOIN loan_repayment_history lrh |
|
|
|
ON lrh.planDetailSid = lrpd.sid |
|
|
|
INNER JOIN loan_repayment_schedule lrs |
|
|
|
ON lrpd.scheduleSid = lrs.sid |
|
|
|
LEFT JOIN anrui_buscenter.bus_sales_order_vehicle bv |
|
|
|
ON lrpd.busVinSid = bv.sid |
|
|
|
LEFT JOIN ( |
|
|
|
SELECT |
|
|
|
saleVehSid, |
|
|
|
MAX(createTime) AS createTime -- 取最新记录 |
|
|
|
FROM loan_be_collection_record |
|
|
|
GROUP BY saleVehSid |
|
|
|
) lbcr ON lrpd.busVinSid = lbcr.saleVehSid |
|
|
|
LEFT JOIN ( |
|
|
|
SELECT |
|
|
|
lbcv.saleVehSid, |
|
|
|
lbcv.lockCarState, |
|
|
|
ROW_NUMBER() OVER (PARTITION BY lbcv.saleVehSid ORDER BY lbca.createTime DESC) AS rn |
|
|
|
FROM loan_be_collection_veh lbcv |
|
|
|
JOIN loan_be_collection_apply lbca |
|
|
|
ON lbca.sid = lbcv.mainSid |
|
|
|
WHERE lbca.collMeasure LIKE '%远程控制%' |
|
|
|
AND lbca.nodeState = '已办结' |
|
|
|
) lbcv ON lbcv.saleVehSid = lrpd.busVinSid AND lbcv.rn = 1 |
|
|
|
WHERE lrpd.dueDate <= lrpd.updateTime -- 移除DATE_FORMAT函数 |
|
|
|
GROUP BY lrpd.sid |
|
|
|
) a1 |
|
|
|
LEFT JOIN ( |
|
|
|
SELECT |
|
|
|
saleVehSid, |
|
|
|
SUM(bankBeInter) AS bankBeInter_sum |
|
|
|
FROM loan_be_padsincere_veh |
|
|
|
GROUP BY saleVehSid |
|
|
|
) lbpv_sum ON lbpv_sum.saleVehSid = a1.busVinSid |
|
|
|
LEFT JOIN ( |
|
|
|
SELECT |
|
|
|
lp.busVinSid, |
|
|
|
SUM(fjj.reveivableMoney - fjj.m) AS fund_sum |
|
|
|
FROM ( |
|
|
|
SELECT |
|
|
|
IFNULL(( |
|
|
|
SELECT SUM(subscriptionMoney) |
|
|
|
FROM anrui_fin.fin_selected_receivables_detailed s |
|
|
|
WHERE s.auditState = '3' |
|
|
|
AND s.receivablesSid = fj.sid |
|
|
|
), 0) AS m, |
|
|
|
fj.* |
|
|
|
FROM ( |
|
|
|
SELECT j.busSid, j.sid, j.reveivableMoney |
|
|
|
FROM anrui_fin.fin_uncollected_receivables_detailed_jr j |
|
|
|
WHERE j.payCostTitleKey = '006' |
|
|
|
) fj |
|
|
|
) fjj |
|
|
|
LEFT JOIN loan_repayment_plan_details lp |
|
|
|
ON lp.sid = fjj.busSid |
|
|
|
WHERE lp.dueDate <= lp.updateTime |
|
|
|
AND lp.busVinSid IS NOT NULL |
|
|
|
GROUP BY lp.busVinSid |
|
|
|
) lfd_sum ON lfd_sum.busVinSid = a1.busVinSid |
|
|
|
<where> |
|
|
|
${ew.sqlSegment} |
|
|
|
</where> |
|
|
|
</select> |
|
|
|
|
|
|
|
<select id="riskListPage" resultType="com.yxt.anrui.riskcenter.api.loanbeoverdueveh.LoanBeOverdueVehVo"> |
|
|
|
SELECT |
|
|
|
a1.busVinSid AS saleVehSid, |
|
|
|
a1.useOrgName, |
|
|
|
a1.dept, |
|
|
|
a1.loanContractNo, |
|
|
|
a1.borrowerName, |
|
|
|
RIGHT(a1.vinNo, 8) AS vinNo, |
|
|
|
a1.vehMark AS carNum, |
|
|
|
SUM(CASE WHEN (a1.yq_total + |
|
|
|
COALESCE(lbpv_sum.bankBeInter_sum, 0) + |
|
|
|
COALESCE(lfd_sum.fund_sum, 0)) > 0 THEN 1 ELSE 0 END) AS beOverduePeriod, |
|
|
|
ROUND(SUM(a1.yq_total) + |
|
|
|
COALESCE(lbpv_sum.bankBeInter_sum, 0) + |
|
|
|
CAST(COALESCE(lfd_sum.fund_sum, 0) AS DECIMAL(10,2)),2) AS beOverdueMoney, |
|
|
|
ROUND( |
|
|
|
(SUM(a1.yq_total) + COALESCE(lbpv_sum.bankBeInter_sum, 0) + COALESCE(lfd_sum.fund_sum, 0)) / |
|
|
|
MAX(a1.qjyh), -- 保证聚合正确性 |
|
|
|
2 |
|
|
|
) AS beOverdueMoneyAndPeriod, |
|
|
|
MAX(a1.riskStaffUserSid) AS riskStaffUserSid, |
|
|
|
MAX(a1.riskStaffUserName) AS riskStaffUserName, |
|
|
|
MAX(a1.reaRepaymentName) AS repaymentName, |
|
|
|
MAX(a1.createTime) AS createTime, |
|
|
|
a1.orgSidPath, |
|
|
|
MAX(a1.lockCarState) AS lockCarState, -- 保证聚合正确性 |
|
|
|
a1.nowOverdue |
|
|
|
FROM ( |
|
|
|
SELECT |
|
|
@ -45,14 +155,8 @@ |
|
|
|
lrpd.borrowerName, |
|
|
|
lrpd.vinNo, |
|
|
|
lrpd.vehMark, |
|
|
|
lrpd.bankName, |
|
|
|
lrpd.bankContractNo, |
|
|
|
lrpd.dueMoney, |
|
|
|
lrpd.dueDate, |
|
|
|
COALESCE(lrs.mainMidRepay, 0) + COALESCE(lrs.otherMidRepay, 0) AS qjyh, |
|
|
|
lrpd.dueMoney - COALESCE(SUM(lrh.actualMoney), 0) AS yq_total, |
|
|
|
lrpd.paymentMoney AS yd_dkje, |
|
|
|
lrpd.fund AS yd_zjzyf, |
|
|
|
lrpd.orgSidPath, |
|
|
|
bv.riskStaffUserSid, |
|
|
|
bv.riskStaffUserName, |
|
|
@ -75,7 +179,7 @@ |
|
|
|
LEFT JOIN ( |
|
|
|
SELECT |
|
|
|
saleVehSid, |
|
|
|
MAX(createTime) AS createTime -- 取最新记录 |
|
|
|
MAX(createTime) AS createTime -- 取最新记录 |
|
|
|
FROM loan_be_collection_record |
|
|
|
GROUP BY saleVehSid |
|
|
|
) lbcr ON lrpd.busVinSid = lbcr.saleVehSid |
|
|
@ -132,7 +236,7 @@ |
|
|
|
|
|
|
|
<update id="allocationRiskStaff"> |
|
|
|
UPDATE |
|
|
|
anrui_buscenter.bus_sales_order_vehicle |
|
|
|
anrui_buscenter.bus_sales_order_vehicle |
|
|
|
SET riskStaffUserSid = #{userSid}, |
|
|
|
riskStaffUserName = #{userName} |
|
|
|
WHERE sid = #{saleVehSid} |
|
|
@ -142,26 +246,30 @@ |
|
|
|
resultType="com.yxt.anrui.riskcenter.api.loanbecollectionrecord.LoanBeCollectionRecordVehInit"> |
|
|
|
SELECT |
|
|
|
RIGHT(a1.vinNo, 8) AS vinNo, |
|
|
|
MAX(a1.customer) AS custName, -- 使用聚合函数确保分组正确 |
|
|
|
MAX(a1.customer) AS custName, |
|
|
|
MAX(a1.mobile) AS custPhone, |
|
|
|
a1.loanContractNo, |
|
|
|
MAX(a1.bankContractNo) AS bankContractNo, |
|
|
|
MAX(a1.bankName) AS bankName, |
|
|
|
MAX(a1.borrowerName) AS loanName, |
|
|
|
MAX(a1.vehMark) AS carNum, |
|
|
|
MIN(a1.dueDate) AS firstBeDate, -- 根据业务需求确定合适的聚合函数 |
|
|
|
COUNT(a1.sid) AS beOverduePeriod, |
|
|
|
MIN(CASE WHEN (a1.yq_total + |
|
|
|
COALESCE(lbpv_agg.bankBeInter_sum, 0) + |
|
|
|
COALESCE(lfd_agg.fund_sum, 0)) > 0 |
|
|
|
THEN a1.dueDate ELSE NULL END) AS firstBeDate, |
|
|
|
SUM(CASE WHEN (a1.yq_total + |
|
|
|
COALESCE(lbpv_agg.bankBeInter_sum, 0) + |
|
|
|
COALESCE(lfd_agg.fund_sum, 0)) > 0 THEN 1 ELSE 0 END) AS beOverduePeriod, |
|
|
|
ROUND( |
|
|
|
SUM(a1.yq_total) + IFNULL(MAX(a1.bankBeInter_sum), 0) + IFNULL(MAX(a1.fund_sum), 0), |
|
|
|
SUM(a1.yq_total) + IFNULL(MAX(lbpv_agg.bankBeInter_sum), 0) + IFNULL(MAX(lfd_agg.fund_sum), 0), |
|
|
|
2 |
|
|
|
) AS beOverdueMoney, |
|
|
|
ROUND( |
|
|
|
(SUM(a1.yq_total) + IFNULL(MAX(a1.bankBeInter_sum), 0) + IFNULL(MAX(a1.fund_sum), 0)) / MAX(a1.qjyh), |
|
|
|
(SUM(a1.yq_total) + IFNULL(MAX(lbpv_agg.bankBeInter_sum), 0) + IFNULL(MAX(lfd_agg.fund_sum), 0)) / MAX(a1.qjyh), |
|
|
|
2 |
|
|
|
) AS beOverdueMoneyAndPeriod, |
|
|
|
a1.busVinSid AS saleVehSid, |
|
|
|
MAX(a1.salesOrderSid) AS salesOrderSid, |
|
|
|
MAX(a1.lockCarState) AS lockCarState, |
|
|
|
a1.nowOverdue |
|
|
|
FROM ( |
|
|
|
SELECT |
|
|
@ -177,14 +285,11 @@ |
|
|
|
lrpd.dueMoney, |
|
|
|
(IFNULL(lrs.mainMidRepay, 0) + IFNULL(lrs.otherMidRepay, 0)) AS qjyh, |
|
|
|
(lrpd.dueMoney - SUM(IFNULL(lrh.actualMoney, 0))) AS yq_total, |
|
|
|
lbpv_agg.bankBeInter_sum, |
|
|
|
lfd_agg.fund_sum, |
|
|
|
lrpd.customer, |
|
|
|
ct.mobile, |
|
|
|
lrpd.borrowerSid, |
|
|
|
lrpd.salesOrderSid, |
|
|
|
lbcv_agg.lockCarState, |
|
|
|
if(lrpd.dueDate <= lrpd.updateTime,0,1) as nowOverdue |
|
|
|
IF(lrpd.dueDate <= lrpd.updateTime,0,1) AS nowOverdue |
|
|
|
FROM |
|
|
|
loan_repayment_plan_details lrpd |
|
|
|
LEFT JOIN loan_repayment_history lrh |
|
|
@ -193,58 +298,43 @@ |
|
|
|
ON lrpd.scheduleSid = lrs.sid |
|
|
|
LEFT JOIN anrui_crm.crm_customer_temp ct |
|
|
|
ON lrpd.customerSid = ct.sid |
|
|
|
LEFT JOIN ( |
|
|
|
SELECT |
|
|
|
saleVehSid, |
|
|
|
CASE lockCarState |
|
|
|
WHEN 0 THEN '未控制' |
|
|
|
WHEN 1 THEN '控制成功' |
|
|
|
WHEN 2 THEN '控制失败' |
|
|
|
WHEN 3 THEN '已解控' |
|
|
|
END AS lockCarState |
|
|
|
FROM ( |
|
|
|
SELECT |
|
|
|
lbcv.saleVehSid, |
|
|
|
lbcv.lockCarState, |
|
|
|
ROW_NUMBER() OVER ( |
|
|
|
PARTITION BY lbcv.saleVehSid |
|
|
|
ORDER BY lbca.createTime DESC |
|
|
|
) AS rn |
|
|
|
FROM loan_be_collection_veh lbcv |
|
|
|
LEFT JOIN loan_be_collection_apply lbca |
|
|
|
ON lbca.sid = lbcv.mainSid |
|
|
|
WHERE |
|
|
|
lbca.collMeasure LIKE '%远程控制%' |
|
|
|
AND lbca.nodeState = '已办结' |
|
|
|
) t WHERE rn = 1 |
|
|
|
) lbcv_agg |
|
|
|
ON lbcv_agg.saleVehSid = lrpd.busVinSid |
|
|
|
lrpd.dueDate < CURDATE() |
|
|
|
GROUP BY |
|
|
|
lrpd.sid |
|
|
|
) a1 |
|
|
|
LEFT JOIN ( |
|
|
|
SELECT |
|
|
|
saleVehSid, |
|
|
|
SUM(bankBeInter) AS bankBeInter_sum |
|
|
|
FROM loan_be_padsincere_veh |
|
|
|
GROUP BY saleVehSid |
|
|
|
) lbpv_agg |
|
|
|
ON lbpv_agg.saleVehSid = lrpd.busVinSid |
|
|
|
) lbpv_agg ON lbpv_agg.saleVehSid = a1.busVinSid |
|
|
|
LEFT JOIN ( |
|
|
|
SELECT |
|
|
|
lrpd_sub.busVinSid, |
|
|
|
SUM(lfd.fund) AS fund_sum |
|
|
|
FROM loan_fund_day lfd |
|
|
|
JOIN loan_repayment_plan_details lrpd_sub |
|
|
|
ON lfd.busSid = lrpd_sub.sid |
|
|
|
WHERE |
|
|
|
lrpd_sub.dueDate < CURDATE() |
|
|
|
GROUP BY |
|
|
|
lrpd_sub.busVinSid |
|
|
|
) lfd_agg |
|
|
|
ON lfd_agg.busVinSid = lrpd.busVinSid |
|
|
|
WHERE |
|
|
|
lrpd.dueDate < CURDATE() |
|
|
|
GROUP BY |
|
|
|
lrpd.sid |
|
|
|
) a1 |
|
|
|
lp.busVinSid, |
|
|
|
SUM(fjj.reveivableMoney - fjj.m) AS fund_sum |
|
|
|
FROM ( |
|
|
|
SELECT |
|
|
|
IFNULL(( |
|
|
|
SELECT SUM(subscriptionMoney) |
|
|
|
FROM anrui_fin.fin_selected_receivables_detailed s |
|
|
|
WHERE s.auditState = '3' |
|
|
|
AND s.receivablesSid = fj.sid |
|
|
|
), 0) AS m, |
|
|
|
fj.* |
|
|
|
FROM ( |
|
|
|
SELECT j.busSid, j.sid, j.reveivableMoney |
|
|
|
FROM anrui_fin.fin_uncollected_receivables_detailed_jr j |
|
|
|
WHERE j.payCostTitleKey = '006' |
|
|
|
) fj |
|
|
|
) fjj |
|
|
|
LEFT JOIN loan_repayment_plan_details lp |
|
|
|
ON lp.sid = fjj.busSid |
|
|
|
WHERE lp.dueDate <= lp.updateTime |
|
|
|
AND lp.busVinSid IS NOT NULL |
|
|
|
GROUP BY lp.busVinSid |
|
|
|
) lfd_agg ON lfd_agg.busVinSid = a1.busVinSid |
|
|
|
WHERE |
|
|
|
a1.borrowerSid = #{borrowerSid} |
|
|
|
AND a1.nowOverdue = 0 |
|
|
@ -262,10 +352,10 @@ |
|
|
|
ld.borrowerName AS borrerName, |
|
|
|
bv.reaRepaymentName, |
|
|
|
bv.reaRepaymentPhone, |
|
|
|
ld.busVinSid AS saleVehSid |
|
|
|
ld.busVinSid AS saleVehSid |
|
|
|
FROM loan_repayment_plan_details ld |
|
|
|
LEFT JOIN anrui_buscenter.bus_sales_order_vehicle bv |
|
|
|
ON ld.busVinSid = bv.sid |
|
|
|
LEFT JOIN anrui_buscenter.bus_sales_order_vehicle bv |
|
|
|
ON ld.busVinSid = bv.sid |
|
|
|
WHERE ld.busVinSid = #{saleVehSid} |
|
|
|
</select> |
|
|
|
|
|
|
@ -282,24 +372,26 @@ |
|
|
|
a1.bankName, |
|
|
|
a1.bankContractNo, |
|
|
|
a1.dueMoney AS bankMonthRep, |
|
|
|
MIN(a1.dueDate) AS firstBeDate, -- 改为取最早逾期日期 |
|
|
|
COUNT(a1.sid) AS beOverduePeriod, |
|
|
|
MIN(a1.dueDate) AS firstBeDate, -- 改为取最早逾期日期 |
|
|
|
SUM(CASE WHEN (a1.yq_total + |
|
|
|
COALESCE(lbpv_sum.bankBeInter_sum, 0) + |
|
|
|
COALESCE(lfd_sum.fund_sum, 0)) > 0 THEN 1 ELSE 0 END) AS beOverduePeriod, |
|
|
|
ROUND(SUM(a1.yq_total) + |
|
|
|
COALESCE(lbpv_sum.bankBeInter_sum, 0) + |
|
|
|
CAST(COALESCE(lfd_sum.fund_sum, 0) AS DECIMAL(10,2)),2) AS beOverdueMoney, |
|
|
|
ROUND( |
|
|
|
(SUM(a1.yq_total) + COALESCE(lbpv_sum.bankBeInter_sum, 0) + COALESCE(lfd_sum.fund_sum, 0)) / |
|
|
|
MAX(a1.qjyh), -- 保证聚合正确性 |
|
|
|
MAX(a1.qjyh), -- 保证聚合正确性 |
|
|
|
2 |
|
|
|
) AS beOverdueMoneyAndPeriod, |
|
|
|
SUM(a1.yd_dkje) AS advMoney, |
|
|
|
SUM(a1.yd_zjzyf) AS fundPossCostMoney, |
|
|
|
MAX(a1.riskStaffUserSid) AS riskStaffUserSid, -- 保证聚合正确性 |
|
|
|
MAX(a1.riskStaffUserSid) AS riskStaffUserSid, -- 保证聚合正确性 |
|
|
|
MAX(a1.riskStaffUserName) AS riskStaffUserName, |
|
|
|
MAX(a1.reaRepaymentName) AS repaymentName, |
|
|
|
MAX(a1.createTime) AS createTime, |
|
|
|
a1.orgSidPath, |
|
|
|
MAX(a1.lockCarState) AS lockCarState, -- 保证聚合正确性 |
|
|
|
MAX(a1.lockCarState) AS lockCarState, -- 保证聚合正确性 |
|
|
|
a1.nowOverdue |
|
|
|
FROM ( |
|
|
|
SELECT |
|
|
@ -341,7 +433,7 @@ |
|
|
|
LEFT JOIN ( |
|
|
|
SELECT |
|
|
|
saleVehSid, |
|
|
|
MAX(createTime) AS createTime -- 取最新记录 |
|
|
|
MAX(createTime) AS createTime -- 取最新记录 |
|
|
|
FROM loan_be_collection_record |
|
|
|
GROUP BY saleVehSid |
|
|
|
) lbcr ON lrpd.busVinSid = lbcr.saleVehSid |
|
|
@ -356,7 +448,7 @@ |
|
|
|
WHERE lbca.collMeasure LIKE '%远程控制%' |
|
|
|
AND lbca.nodeState = '已办结' |
|
|
|
) lbcv ON lbcv.saleVehSid = lrpd.busVinSid AND lbcv.rn = 1 |
|
|
|
WHERE lrpd.dueDate < CURDATE() -- 移除DATE_FORMAT函数 |
|
|
|
WHERE lrpd.dueDate < CURDATE() -- 移除DATE_FORMAT函数 |
|
|
|
GROUP BY lrpd.sid |
|
|
|
) a1 |
|
|
|
LEFT JOIN ( |
|
|
|