@ -16,67 +16,26 @@
a1.bankName,
a1.bankContractNo,
a1.dueMoney AS bankMonthRep,
a1.dueDate AS firstBeDate,
MIN( a1.dueDate) AS firstBeDate, -- 改为取最早逾期日期
COUNT(a1.sid) AS beOverduePeriod,
(
SUM(a1.yq_total) + IFNULL(
(SELECT
SUM(lbpv.bankBeInter)
FROM
loan_be_padsincere_veh lbpv
WHERE lbpv.saleVehSid = a1.busVinSid),
0
) + IFNULL(
(SELECT
SUM(fund)
FROM
loan_fund_day
WHERE busSid IN
(SELECT
lrpd.sid
FROM
loan_repayment_plan_details lrpd
WHERE DATE_FORMAT(lrpd.dueDate, '%Y-%m-%d') < CURDATE()
AND lrpd.busVinSid = a1.busVinSid)),
0
)
) AS beOverdueMoney,
SUM(a1.yq_total) +
COALESCE(lbpv_sum.bankBeInter_sum, 0) +
COALESCE(lfd_sum.fund_sum, 0) AS beOverdueMoney,
ROUND(
(
SUM(a1.yq_total) + IFNULL(
(SELECT
SUM(lbpv.bankBeInter)
FROM
loan_be_padsincere_veh lbpv
WHERE lbpv.saleVehSid = a1.busVinSid),
0
) + IFNULL(
(SELECT
SUM(fund)
FROM
loan_fund_day
WHERE busSid IN
(SELECT
lrpd.sid
FROM
loan_repayment_plan_details lrpd
WHERE DATE_FORMAT(lrpd.dueDate, '%Y-%m-%d') < CURDATE()
AND lrpd.busVinSid = a1.busVinSid)),
0
)
) / a1.qjyh,
(SUM(a1.yq_total) + COALESCE(lbpv_sum.bankBeInter_sum, 0) + COALESCE(lfd_sum.fund_sum, 0)) /
MAX(a1.qjyh), -- 保证聚合正确性
1
) AS beOverdueMoneyAndPeriod,
SUM(a1.yd_dkje) AS advMoney,
SUM(a1.yd_zjzyf) AS fundPossCostMoney,
a1.riskStaffUserSid,
a1.riskStaffUserName,
a1.reaRepaymentName AS repaymentName,
a1.createTime,
MAX(a1.riskStaffUserSid) AS riskStaffUserSid, -- 保证聚合正确性
MAX(a1.riskStaffUserName) AS riskStaffUserName,
MAX(a1.reaRepaymentName) AS repaymentName,
MAX(a1.createTime) AS createTime,
a1.orgSidPath,
a1.lockCarState
FROM
( SELECT
MAX(a1.lockCarState) AS lockCarState -- 保证聚合正确性
FROM (
SELECT
lrpd.sid,
lrpd.busVinSid,
lrpd.useOrgName,
@ -89,63 +48,67 @@
lrpd.bankContractNo,
lrpd.dueMoney,
lrpd.dueDate,
(
IFNULL(lrs.mainMidRepay, 0) + IFNULL(lrs.otherMidRepay, 0)
) AS qjyh,
(
lrpd.dueMoney - SUM(IFNULL(lrh.actualMoney, 0))
) AS yq_total,
(
lrpd.dueMoney - SUM(IFNULL(lrh.actualMoney, 0))
) / lrpd.dueMoney AS yq_hsqs,
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,
lrpd.createBySid,
bv.riskStaffUserSid,
bv.riskStaffUserName,
bv.reaRepaymentName,
lr.createTime,
(SELECT
CASE
lbcv.lockCarState
WHEN 0
THEN '未控制'
WHEN 1
THEN '控制成功'
WHEN 2
THEN '控制失败'
WHEN 3
THEN '已解控'
lbcr.createTime,
CASE lbcv.lockCarState
WHEN 0 THEN '未控制'
WHEN 1 THEN '控制成功'
WHEN 2 THEN '控制失败'
WHEN 3 THEN '已解控'
END AS lockCarState
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 = '已办结'
AND lbcv.saleVehSid = lrpd.busVinSid
ORDER BY lbca.createTime DESC
LIMIT 1) AS lockCarState
FROM
loan_repayment_plan_details lrpd
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 loan_repayment_schedule lrs
ON lrpd.scheduleSid = lrs.sid
LEFT JOIN
(SELECT
LEFT JOIN (
SELECT
saleVehSid,
createTime
FROM
loan_be_collection_record
ORDER BY createTime DESC) lr
ON lrpd.busVinSid = lr.saleVehSid
WHERE DATE_FORMAT(lrpd.dueDate, '%Y-%m-%d') < CURDATE()
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 < CURDATE() -- 移除DATE_FORMAT函数
GROUP BY lrpd.sid
HAVING (yq_total > 0)) a1
HAVING (lrpd.dueMoney - COALESCE(SUM(lrh.actualMoney), 0)) > 0
) 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
lrpd.busVinSid,
SUM(lfd.fund) AS fund_sum
FROM loan_fund_day lfd
JOIN loan_repayment_plan_details lrpd
ON lrpd.sid = lfd.busSid
WHERE lrpd.dueDate < CURDATE()
GROUP BY lrpd.busVinSid
) lfd_sum ON lfd_sum.busVinSid = a1.busVinSid
<where >
${ew.sqlSegment}
</where>
@ -162,65 +125,26 @@
<select id= "initVehListByBorrSid"
resultType="com.yxt.anrui.riskcenter.api.loanbecollectionrecord.LoanBeCollectionRecordVehInit">
SELECT
RIGHT (a1.vinNo, 8) AS vinNo,
a1.customer AS custName,
a1.mobile AS custPhone,
RIGHT(a1.vinNo, 8) AS vinNo,
MAX(a1.customer) AS custName, -- 使用聚合函数确保分组正确
MAX(a1.mobile) AS custPhone,
a1.loanContractNo,
a1. bankContractNo,
a1. bankName,
a1.borrowerName AS loanName,
a1.vehMark AS carNum,
a1.dueDate AS firstBeDate,
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,
(
SUM(a1.yq_total) + IFNULL(
(SELECT
SUM(lbpv.bankBeInter)
FROM
loan_be_padsincere_veh lbpv
WHERE lbpv.saleVehSid = a1.busVinSid),
0
) + IFNULL(
(SELECT
SUM(fund)
FROM
loan_fund_day
WHERE busSid IN
(SELECT
lrpd.sid
FROM
loan_repayment_plan_details lrpd
WHERE DATE_FORMAT(lrpd.dueDate, '%Y-%m-%d') < CURDATE())),
0
)
) AS beOverdueMoney,
ROUND((
SUM(a1.yq_total) + IFNULL(
(SELECT
SUM(lbpv.bankBeInter)
FROM
loan_be_padsincere_veh lbpv
WHERE lbpv.saleVehSid = a1.busVinSid),
0
) + IFNULL(
(SELECT
SUM(fund)
FROM
loan_fund_day
WHERE busSid IN
(SELECT
lrpd.sid
FROM
loan_repayment_plan_details lrpd
WHERE DATE_FORMAT(lrpd.dueDate, '%Y-%m-%d') < CURDATE())),
0
)
) / a1.qjyh, 1) AS beOverdueMoneyAndPeriod,
CAST(SUM(a1.yq_total) AS DECIMAL(10,2)) + CAST(IFNULL(MAX(a1.bankBeInter_sum), 0) AS DECIMAL(10,2)) + CAST(IFNULL(MAX(a1.fund_sum), 0) AS DECIMAL(10,2)) AS beOverdueMoney,
ROUND(
(SUM(a1.yq_total) + IFNULL(MAX(a1.bankBeInter_sum), 0) + IFNULL(MAX(a1.fund_sum), 0)) / MAX(a1.qjyh),
1
) AS beOverdueMoneyAndPeriod,
a1.busVinSid AS saleVehSid,
a1. salesOrderSid,
a1. lockCarState
FROM
( SELECT
MAX(a1.salesOrderSid) AS salesOrderSid,
MAX(a1.lockCarState) AS lockCarState
FROM (
SELECT
lrpd.sid,
lrpd.busVinSid,
lrpd.loanContractNo,
@ -231,63 +155,81 @@
lrpd.dueDate,
lrpd.vehMark,
lrpd.dueMoney,
(IFNULL(lrs.mainMidRepay,0) + IFNULL(lrs.otherMidRepay,0)) AS qjyh,
(
lrpd.dueMoney - SUM(IFNULL(lrh.actualMoney, 0))
) AS yq_total,
(
lrpd.dueMoney - SUM(IFNULL(lrh.actualMoney, 0))
) / lrpd.dueMoney AS yq_hsqs,
(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,
lr.createTime,
lrpd.borrowerSid,
lrpd.salesOrderSid,
(SELECT
CASE
lbcv.lockCarState
WHEN 0
THEN '未控制'
WHEN 1
THEN '控制成功'
WHEN 2
THEN '控制失败'
WHEN 3
THEN '已解控'
END AS lockCarState
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 = '已办结'
AND lbcv.saleVehSid = lrpd.busVinSid
ORDER BY lbca.createTime DESC
LIMIT 1) AS lockCarState
lbcv_agg.lockCarState
FROM
loan_repayment_plan_details lrpd
LEFT JOIN loan_repayment_history lrh
ON lrh.planDetailSid = lrpd.sid
LEFT JOIN anrui_buscenter.bus_sales_order_vehicle bv
ON lrpd.busVinSid = bv.sid
LEFT JOIN loan_repayment_schedule lrs
ON lrpd.scheduleSid = lrs.sid
LEFT JOIN
(SELECT
saleVehSid,
createTime
FROM
loan_be_collection_record
ORDER BY createTime DESC
LIMIT 1) lr
ON lrpd.busVinSid = lr.saleVehSid
LEFT JOIN anrui_crm.crm_customer_temp ct
ON lrpd.customerSid = ct.sid
WHERE DATE_FORMAT(lrpd.dueDate, '%Y-%m-%d') < CURDATE()
GROUP BY lrpd.sid
HAVING (yq_total > 0)) a1
WHERE a1.borrowerSid = #{borrowerSid}
GROUP BY a1.loanContractNo,
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
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
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
HAVING
(lrpd.dueMoney - SUM(IFNULL(lrh.actualMoney, 0))) > 0
) a1
WHERE
a1.borrowerSid = #{borrowerSid}
GROUP BY
a1.loanContractNo,
a1.vinNo,
a1.busVinSid
</select>
@ -319,65 +261,26 @@
a1.bankName,
a1.bankContractNo,
a1.dueMoney AS bankMonthRep,
a1.dueDate AS firstBeDate,
MIN( a1.dueDate) AS firstBeDate, -- 改为取最早逾期日期
COUNT(a1.sid) AS beOverduePeriod,
(
SUM(a1.yq_total) + IFNULL(
(SELECT
SUM(lbpv.bankBeInter)
FROM
loan_be_padsincere_veh lbpv
WHERE lbpv.saleVehSid = a1.busVinSid),
0
) + IFNULL(
(SELECT
SUM(fund)
FROM
loan_fund_day
WHERE busSid IN
(SELECT
lrpd.sid
FROM
loan_repayment_plan_details lrpd
WHERE DATE_FORMAT(lrpd.dueDate, '%Y-%m-%d') < CURDATE())),
0
)
) AS beOverdueMoney,
SUM(a1.yq_total) +
COALESCE(lbpv_sum.bankBeInter_sum, 0) +
COALESCE(lfd_sum.fund_sum, 0) AS beOverdueMoney,
ROUND(
(
SUM(a1.yq_total) + IFNULL(
(SELECT
SUM(lbpv.bankBeInter)
FROM
loan_be_padsincere_veh lbpv
WHERE lbpv.saleVehSid = a1.busVinSid),
0
) + IFNULL(
(SELECT
SUM(fund)
FROM
loan_fund_day
WHERE busSid IN
(SELECT
lrpd.sid
FROM
loan_repayment_plan_details lrpd
WHERE DATE_FORMAT(lrpd.dueDate, '%Y-%m-%d') < CURDATE())),
0
)
) / a1.qjyh,
(SUM(a1.yq_total) + COALESCE(lbpv_sum.bankBeInter_sum, 0) + COALESCE(lfd_sum.fund_sum, 0)) /
MAX(a1.qjyh), -- 保证聚合正确性
1
) AS beOverdueMoneyAndPeriod,
SUM(a1.yd_dkje) AS advMoney,
SUM(a1.yd_zjzyf) AS fundPossCostMoney,
a1.riskStaffUserSid,
a1.riskStaffUserName,
a1.reaRepaymentName AS repaymentName,
a1.createTime,
MAX(a1.riskStaffUserSid) AS riskStaffUserSid, -- 保证聚合正确性
MAX(a1.riskStaffUserName) AS riskStaffUserName,
MAX(a1.reaRepaymentName) AS repaymentName,
MAX(a1.createTime) AS createTime,
a1.orgSidPath,
a1.lockCarState
FROM
( SELECT
MAX(a1.lockCarState) AS lockCarState -- 保证聚合正确性
FROM (
SELECT
lrpd.sid,
lrpd.busVinSid,
lrpd.useOrgName,
@ -390,63 +293,67 @@
lrpd.bankContractNo,
lrpd.dueMoney,
lrpd.dueDate,
(
IFNULL(lrs.mainMidRepay, 0) + IFNULL(lrs.otherMidRepay, 0)
) AS qjyh,
(
lrpd.dueMoney - SUM(IFNULL(lrh.actualMoney, 0))
) AS yq_total,
(
lrpd.dueMoney - SUM(IFNULL(lrh.actualMoney, 0))
) / lrpd.dueMoney AS yq_hsqs,
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,
lrpd.createBySid,
bv.riskStaffUserSid,
bv.riskStaffUserName,
bv.reaRepaymentName,
lr.createTime,
(SELECT
CASE
lbcv.lockCarState
WHEN 0
THEN '未控制'
WHEN 1
THEN '控制成功'
WHEN 2
THEN '控制失败'
WHEN 3
THEN '已解控'
lbcr.createTime,
CASE lbcv.lockCarState
WHEN 0 THEN '未控制'
WHEN 1 THEN '控制成功'
WHEN 2 THEN '控制失败'
WHEN 3 THEN '已解控'
END AS lockCarState
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 = '已办结'
AND lbcv.saleVehSid = lrpd.busVinSid
ORDER BY lbca.createTime DESC
LIMIT 1) AS lockCarState
FROM
loan_repayment_plan_details lrpd
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 loan_repayment_schedule lrs
ON lrpd.scheduleSid = lrs.sid
LEFT JOIN
(SELECT
LEFT JOIN (
SELECT
saleVehSid,
createTime
FROM
loan_be_collection_record
ORDER BY createTime DESC) lr
ON lrpd.busVinSid = lr.saleVehSid
WHERE DATE_FORMAT(lrpd.dueDate, '%Y-%m-%d') < CURDATE()
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 < CURDATE() -- 移除DATE_FORMAT函数
GROUP BY lrpd.sid
HAVING (yq_total > 0)) a1,(
HAVING (lrpd.dueMoney - COALESCE(SUM(lrh.actualMoney), 0)) > 0
) 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
lrpd.busVinSid,
SUM(lfd.fund) AS fund_sum
FROM loan_fund_day lfd
JOIN loan_repayment_plan_details lrpd
ON lrpd.sid = lfd.busSid
WHERE lrpd.dueDate < CURDATE()
GROUP BY lrpd.busVinSid
) lfd_sum ON lfd_sum.busVinSid = a1.busVinSid,(
SELECT
@row_number := 0
) AS t