|
|
|
|
@@ -9,9 +9,14 @@
|
|
|
|
|
<result property="staffName" column="staff_name"/>
|
|
|
|
|
<result property="deptName" column="dept_name"/>
|
|
|
|
|
<result property="totalIncome" column="total_income"/>
|
|
|
|
|
<result property="selfIncome" column="self_income"/>
|
|
|
|
|
<result property="spouseIncome" column="spouse_income"/>
|
|
|
|
|
<result property="employmentYears" column="employment_years"/>
|
|
|
|
|
<result property="totalAsset" column="total_asset"/>
|
|
|
|
|
<result property="totalDebt" column="total_debt"/>
|
|
|
|
|
<result property="comparisonAmount" column="comparison_amount"/>
|
|
|
|
|
<result property="explainableIncome" column="explainable_income"/>
|
|
|
|
|
<result property="assetIncomeRatio" column="asset_income_ratio"/>
|
|
|
|
|
<result property="riskLevelCode" column="risk_level_code"/>
|
|
|
|
|
<result property="riskLevelName" column="risk_level_name"/>
|
|
|
|
|
</resultMap>
|
|
|
|
|
@@ -95,7 +100,9 @@
|
|
|
|
|
javaType="com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyIncomeDetailVO">
|
|
|
|
|
<result property="selfIncome" column="income_self_income"/>
|
|
|
|
|
<result property="spouseIncome" column="income_spouse_income"/>
|
|
|
|
|
<result property="employmentYears" column="income_employment_years"/>
|
|
|
|
|
<result property="totalIncome" column="income_total_income"/>
|
|
|
|
|
<result property="explainableIncome" column="income_explainable_income"/>
|
|
|
|
|
</association>
|
|
|
|
|
<association property="assetDetail"
|
|
|
|
|
javaType="com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyAssetDetailVO">
|
|
|
|
|
@@ -126,9 +133,14 @@
|
|
|
|
|
<result property="staffName" column="summary_staff_name"/>
|
|
|
|
|
<result property="deptName" column="summary_dept_name"/>
|
|
|
|
|
<result property="totalIncome" column="summary_total_income"/>
|
|
|
|
|
<result property="selfIncome" column="summary_self_income"/>
|
|
|
|
|
<result property="spouseIncome" column="summary_spouse_income"/>
|
|
|
|
|
<result property="employmentYears" column="summary_employment_years"/>
|
|
|
|
|
<result property="totalAsset" column="summary_total_asset"/>
|
|
|
|
|
<result property="totalDebt" column="summary_total_debt"/>
|
|
|
|
|
<result property="comparisonAmount" column="summary_comparison_amount"/>
|
|
|
|
|
<result property="explainableIncome" column="summary_explainable_income"/>
|
|
|
|
|
<result property="assetIncomeRatio" column="summary_asset_income_ratio"/>
|
|
|
|
|
<result property="riskLevelCode" column="summary_risk_level_code"/>
|
|
|
|
|
<result property="riskLevelName" column="summary_risk_level_name"/>
|
|
|
|
|
</association>
|
|
|
|
|
@@ -194,44 +206,58 @@
|
|
|
|
|
aggregated.staff_name,
|
|
|
|
|
aggregated.dept_name,
|
|
|
|
|
aggregated.total_income,
|
|
|
|
|
aggregated.self_income,
|
|
|
|
|
aggregated.spouse_income,
|
|
|
|
|
aggregated.employment_years,
|
|
|
|
|
aggregated.total_asset,
|
|
|
|
|
aggregated.total_debt,
|
|
|
|
|
aggregated.comparison_amount,
|
|
|
|
|
aggregated.explainable_income,
|
|
|
|
|
aggregated.asset_income_ratio,
|
|
|
|
|
case
|
|
|
|
|
when aggregated.missing_asset_info = 1 or aggregated.missing_debt_info = 1 then 'MISSING_INFO'
|
|
|
|
|
when comparison_amount <= total_asset * 1.5 then 'NORMAL'
|
|
|
|
|
when comparison_amount > total_asset * 1.5 and comparison_amount <= total_asset * 3 then 'RISK'
|
|
|
|
|
when comparison_amount > total_asset * 3 then 'HIGH'
|
|
|
|
|
when aggregated.missing_info = 1 then 'MISSING_INFO'
|
|
|
|
|
when aggregated.asset_income_ratio <= 1.5 then 'NORMAL'
|
|
|
|
|
when aggregated.asset_income_ratio > 1.5 and aggregated.asset_income_ratio <= 3 then 'RISK'
|
|
|
|
|
when aggregated.asset_income_ratio > 3 then 'HIGH'
|
|
|
|
|
else 'HIGH'
|
|
|
|
|
end as risk_level_code,
|
|
|
|
|
case
|
|
|
|
|
when aggregated.missing_asset_info = 1 or aggregated.missing_debt_info = 1 then '缺少信息'
|
|
|
|
|
when comparison_amount <= total_asset * 1.5 then '正常'
|
|
|
|
|
when comparison_amount > total_asset * 1.5 and comparison_amount <= total_asset * 3 then '存在风险'
|
|
|
|
|
when comparison_amount > total_asset * 3 then '高风险'
|
|
|
|
|
else '高风险'
|
|
|
|
|
when aggregated.missing_info = 1 then '缺少信息'
|
|
|
|
|
when aggregated.asset_income_ratio <= 1.5 then '正常'
|
|
|
|
|
when aggregated.asset_income_ratio > 1.5 and aggregated.asset_income_ratio <= 3 then '关注'
|
|
|
|
|
when aggregated.asset_income_ratio > 3 then '高关注'
|
|
|
|
|
else '高关注'
|
|
|
|
|
end as risk_level_name
|
|
|
|
|
from (
|
|
|
|
|
select
|
|
|
|
|
source.*,
|
|
|
|
|
case
|
|
|
|
|
when source.self_asset_record_count = 0
|
|
|
|
|
or source.spouse_staff_asset_record_count = 0 then 1
|
|
|
|
|
when source.self_income <= 0
|
|
|
|
|
or source.employment_years is null
|
|
|
|
|
or source.total_asset <= 0 then 1
|
|
|
|
|
else 0
|
|
|
|
|
end as missing_asset_info,
|
|
|
|
|
end as missing_info,
|
|
|
|
|
source.self_income * source.employment_years
|
|
|
|
|
+ source.spouse_income
|
|
|
|
|
+ source.total_debt as explainable_income,
|
|
|
|
|
source.self_income * source.employment_years
|
|
|
|
|
+ source.spouse_income
|
|
|
|
|
+ source.total_debt as comparison_amount,
|
|
|
|
|
case
|
|
|
|
|
when source.self_debt_record_count = 0
|
|
|
|
|
or source.spouse_staff_debt_record_count = 0 then 1
|
|
|
|
|
else 0
|
|
|
|
|
end as missing_debt_info,
|
|
|
|
|
when source.self_income <= 0
|
|
|
|
|
or source.employment_years is null
|
|
|
|
|
or source.total_asset <= 0
|
|
|
|
|
or (source.self_income * source.employment_years + source.spouse_income + source.total_debt) <= 0 then null
|
|
|
|
|
else source.total_asset / (source.self_income * source.employment_years + source.spouse_income + source.total_debt)
|
|
|
|
|
end as asset_income_ratio,
|
|
|
|
|
case
|
|
|
|
|
when source.self_asset_record_count = 0
|
|
|
|
|
or source.spouse_staff_asset_record_count = 0
|
|
|
|
|
or source.self_debt_record_count = 0
|
|
|
|
|
or source.spouse_staff_debt_record_count = 0 then 4
|
|
|
|
|
when source.comparison_amount <= source.total_asset * 1.5 then 1
|
|
|
|
|
when source.comparison_amount <= source.total_asset * 3 then 2
|
|
|
|
|
when source.comparison_amount > source.total_asset * 3 then 3
|
|
|
|
|
when source.self_income <= 0
|
|
|
|
|
or source.employment_years is null
|
|
|
|
|
or source.total_asset <= 0
|
|
|
|
|
or (source.self_income * source.employment_years + source.spouse_income + source.total_debt) <= 0 then 0
|
|
|
|
|
when source.total_asset / (source.self_income * source.employment_years + source.spouse_income + source.total_debt) <= 1.5 then 1
|
|
|
|
|
when source.total_asset / (source.self_income * source.employment_years + source.spouse_income + source.total_debt) <= 3 then 2
|
|
|
|
|
when source.total_asset / (source.self_income * source.employment_years + source.spouse_income + source.total_debt) > 3 then 3
|
|
|
|
|
else 3
|
|
|
|
|
end as risk_level_sort
|
|
|
|
|
from (
|
|
|
|
|
@@ -240,6 +266,12 @@
|
|
|
|
|
scope.staff_code,
|
|
|
|
|
scope.staff_name,
|
|
|
|
|
scope.dept_name,
|
|
|
|
|
coalesce(base_staff.annual_income, 0) as self_income,
|
|
|
|
|
coalesce(spouse.spouse_income, 0) as spouse_income,
|
|
|
|
|
case
|
|
|
|
|
when base_staff.hire_date is null then null
|
|
|
|
|
else greatest(1, ceiling(datediff(curdate(), base_staff.hire_date) / 365))
|
|
|
|
|
end as employment_years,
|
|
|
|
|
coalesce(base_staff.annual_income, 0) + coalesce(spouse.spouse_income, 0) as total_income,
|
|
|
|
|
coalesce((
|
|
|
|
|
select count(1)
|
|
|
|
|
@@ -294,15 +326,7 @@
|
|
|
|
|
from ccdi_debts_info debt
|
|
|
|
|
where debt.person_id = scope.staff_id_card
|
|
|
|
|
or (spouse.spouse_id_card is not null and debt.person_id = spouse.spouse_id_card)
|
|
|
|
|
), 0) as total_debt,
|
|
|
|
|
coalesce(base_staff.annual_income, 0)
|
|
|
|
|
+ coalesce(spouse.spouse_income, 0)
|
|
|
|
|
+ coalesce((
|
|
|
|
|
select sum(coalesce(debt.principal_balance, 0))
|
|
|
|
|
from ccdi_debts_info debt
|
|
|
|
|
where debt.person_id = scope.staff_id_card
|
|
|
|
|
or (spouse.spouse_id_card is not null and debt.person_id = spouse.spouse_id_card)
|
|
|
|
|
), 0) as comparison_amount
|
|
|
|
|
), 0) as total_debt
|
|
|
|
|
from (
|
|
|
|
|
<include refid="projectEmployeeScopeSql"/>
|
|
|
|
|
) scope
|
|
|
|
|
@@ -328,7 +352,9 @@
|
|
|
|
|
aggregated.dept_name,
|
|
|
|
|
aggregated.self_income as income_self_income,
|
|
|
|
|
aggregated.spouse_income as income_spouse_income,
|
|
|
|
|
aggregated.employment_years as income_employment_years,
|
|
|
|
|
aggregated.total_income as income_total_income,
|
|
|
|
|
aggregated.explainable_income as income_explainable_income,
|
|
|
|
|
aggregated.missing_self_asset_info as asset_missing_self_asset_info,
|
|
|
|
|
aggregated.self_total_asset as asset_self_total_asset,
|
|
|
|
|
aggregated.spouse_total_asset as asset_spouse_total_asset,
|
|
|
|
|
@@ -342,36 +368,61 @@
|
|
|
|
|
aggregated.staff_name as summary_staff_name,
|
|
|
|
|
aggregated.dept_name as summary_dept_name,
|
|
|
|
|
aggregated.total_income as summary_total_income,
|
|
|
|
|
aggregated.self_income as summary_self_income,
|
|
|
|
|
aggregated.spouse_income as summary_spouse_income,
|
|
|
|
|
aggregated.employment_years as summary_employment_years,
|
|
|
|
|
aggregated.total_asset as summary_total_asset,
|
|
|
|
|
aggregated.total_debt as summary_total_debt,
|
|
|
|
|
aggregated.comparison_amount as summary_comparison_amount,
|
|
|
|
|
aggregated.explainable_income as summary_explainable_income,
|
|
|
|
|
aggregated.asset_income_ratio as summary_asset_income_ratio,
|
|
|
|
|
case
|
|
|
|
|
when aggregated.missing_self_asset_info = 1 or aggregated.missing_self_debt_info = 1 then 'MISSING_INFO'
|
|
|
|
|
when comparison_amount <= total_asset * 1.5 then 'NORMAL'
|
|
|
|
|
when comparison_amount > total_asset * 1.5 and comparison_amount <= total_asset * 3 then 'RISK'
|
|
|
|
|
when comparison_amount > total_asset * 3 then 'HIGH'
|
|
|
|
|
when aggregated.missing_info = 1 then 'MISSING_INFO'
|
|
|
|
|
when aggregated.asset_income_ratio <= 1.5 then 'NORMAL'
|
|
|
|
|
when aggregated.asset_income_ratio > 1.5 and aggregated.asset_income_ratio <= 3 then 'RISK'
|
|
|
|
|
when aggregated.asset_income_ratio > 3 then 'HIGH'
|
|
|
|
|
else 'HIGH'
|
|
|
|
|
end as summary_risk_level_code,
|
|
|
|
|
case
|
|
|
|
|
when aggregated.missing_self_asset_info = 1 or aggregated.missing_self_debt_info = 1 then '缺少信息'
|
|
|
|
|
when comparison_amount <= total_asset * 1.5 then '正常'
|
|
|
|
|
when comparison_amount > total_asset * 1.5 and comparison_amount <= total_asset * 3 then '存在风险'
|
|
|
|
|
when comparison_amount > total_asset * 3 then '高风险'
|
|
|
|
|
else '高风险'
|
|
|
|
|
when aggregated.missing_info = 1 then '缺少信息'
|
|
|
|
|
when aggregated.asset_income_ratio <= 1.5 then '正常'
|
|
|
|
|
when aggregated.asset_income_ratio > 1.5 and aggregated.asset_income_ratio <= 3 then '关注'
|
|
|
|
|
when aggregated.asset_income_ratio > 3 then '高关注'
|
|
|
|
|
else '高关注'
|
|
|
|
|
end as summary_risk_level_name
|
|
|
|
|
from (
|
|
|
|
|
select
|
|
|
|
|
source.*,
|
|
|
|
|
case
|
|
|
|
|
when source.self_asset_record_count = 0
|
|
|
|
|
or source.spouse_staff_asset_record_count = 0 then 1
|
|
|
|
|
when source.self_income <= 0
|
|
|
|
|
or source.employment_years is null
|
|
|
|
|
or source.total_asset <= 0 then 1
|
|
|
|
|
else 0
|
|
|
|
|
end as missing_self_asset_info,
|
|
|
|
|
case
|
|
|
|
|
when source.self_debt_record_count = 0
|
|
|
|
|
or source.spouse_staff_debt_record_count = 0 then 1
|
|
|
|
|
else 0
|
|
|
|
|
end as missing_self_debt_info
|
|
|
|
|
end as missing_self_debt_info,
|
|
|
|
|
case
|
|
|
|
|
when source.self_income <= 0
|
|
|
|
|
or source.employment_years is null
|
|
|
|
|
or source.total_asset <= 0 then 1
|
|
|
|
|
else 0
|
|
|
|
|
end as missing_info,
|
|
|
|
|
source.self_income * source.employment_years
|
|
|
|
|
+ source.spouse_income
|
|
|
|
|
+ source.total_debt as explainable_income,
|
|
|
|
|
source.self_income * source.employment_years
|
|
|
|
|
+ source.spouse_income
|
|
|
|
|
+ source.total_debt as comparison_amount,
|
|
|
|
|
case
|
|
|
|
|
when source.self_income <= 0
|
|
|
|
|
or source.employment_years is null
|
|
|
|
|
or source.total_asset <= 0
|
|
|
|
|
or (source.self_income * source.employment_years + source.spouse_income + source.total_debt) <= 0 then null
|
|
|
|
|
else source.total_asset / (source.self_income * source.employment_years + source.spouse_income + source.total_debt)
|
|
|
|
|
end as asset_income_ratio
|
|
|
|
|
from (
|
|
|
|
|
select
|
|
|
|
|
#{projectId} as project_id,
|
|
|
|
|
@@ -383,6 +434,10 @@
|
|
|
|
|
spouse.spouse_is_staff,
|
|
|
|
|
coalesce(base_staff.annual_income, 0) as self_income,
|
|
|
|
|
coalesce(spouse.spouse_income, 0) as spouse_income,
|
|
|
|
|
case
|
|
|
|
|
when base_staff.hire_date is null then null
|
|
|
|
|
else greatest(1, ceiling(datediff(curdate(), base_staff.hire_date) / 365))
|
|
|
|
|
end as employment_years,
|
|
|
|
|
coalesce(base_staff.annual_income, 0) + coalesce(spouse.spouse_income, 0) as total_income,
|
|
|
|
|
coalesce((
|
|
|
|
|
select count(1)
|
|
|
|
|
@@ -471,15 +526,7 @@
|
|
|
|
|
from ccdi_debts_info debt
|
|
|
|
|
where debt.person_id = scope.staff_id_card
|
|
|
|
|
or (spouse.spouse_id_card is not null and debt.person_id = spouse.spouse_id_card)
|
|
|
|
|
), 0) as total_debt,
|
|
|
|
|
coalesce(base_staff.annual_income, 0)
|
|
|
|
|
+ coalesce(spouse.spouse_income, 0)
|
|
|
|
|
+ coalesce((
|
|
|
|
|
select sum(coalesce(debt.principal_balance, 0))
|
|
|
|
|
from ccdi_debts_info debt
|
|
|
|
|
where debt.person_id = scope.staff_id_card
|
|
|
|
|
or (spouse.spouse_id_card is not null and debt.person_id = spouse.spouse_id_card)
|
|
|
|
|
), 0) as comparison_amount
|
|
|
|
|
), 0) as total_debt
|
|
|
|
|
from (
|
|
|
|
|
<include refid="projectEmployeeScopeSql"/>
|
|
|
|
|
) scope
|
|
|
|
|
|