新增结果总览一键导出报告

This commit is contained in:
wjj
2026-04-30 16:01:13 +08:00
parent 6f2ea5994a
commit 369c682564
19 changed files with 1256 additions and 0 deletions

View File

@@ -57,6 +57,40 @@
<result property="status" column="status"/>
</resultMap>
<resultMap id="ReportUploadSubjectResultMap"
type="com.ruoyi.ccdi.project.domain.vo.CcdiProjectOverviewReportUploadSubjectVO">
<result property="subjectName" column="subjectName"/>
<result property="accountNos" column="accountNos"/>
<result property="minTrxDate" column="minTrxDate"/>
<result property="maxTrxDate" column="maxTrxDate"/>
<result property="fileCount" column="fileCount"/>
</resultMap>
<resultMap id="ReportModelSummaryResultMap"
type="com.ruoyi.ccdi.project.domain.vo.CcdiProjectOverviewReportModelSummaryVO">
<result property="modelCode" column="modelCode"/>
<result property="modelName" column="modelName"/>
<result property="warningCount" column="warningCount"/>
<result property="peopleCount" column="peopleCount"/>
<result property="peopleNames" column="peopleNames"/>
</resultMap>
<resultMap id="ReportSuspiciousTransactionResultMap"
type="com.ruoyi.ccdi.project.domain.vo.CcdiProjectOverviewReportSuspiciousTransactionVO">
<id property="bankStatementId" column="bankStatementId"/>
<result property="trxDate" column="trxDate"/>
<result property="leAccountNo" column="leAccountNo"/>
<result property="leAccountName" column="leAccountName"/>
<result property="customerAccountName" column="customerAccountName"/>
<result property="customerAccountNo" column="customerAccountNo"/>
<result property="relatedStaffName" column="relatedStaffName"/>
<result property="relatedStaffCode" column="relatedStaffCode"/>
<result property="userMemo" column="userMemo"/>
<result property="cashType" column="cashType"/>
<result property="hitTags" column="hitTags"/>
<result property="displayAmount" column="displayAmount"/>
</resultMap>
<sql id="digitTableSql">
select 0 as digit
union all select 1
@@ -338,6 +372,87 @@
order by warning_count desc, model_code asc
</select>
<select id="selectReportUploadSubjects" resultMap="ReportUploadSubjectResultMap">
select
trim(bs.LE_ACCOUNT_NAME) as subjectName,
group_concat(distinct trim(bs.LE_ACCOUNT_NO) order by trim(bs.LE_ACCOUNT_NO) separator '、') as accountNos,
date_format(min(
case
when bs.TRX_DATE is null or trim(bs.TRX_DATE) = '' then null
when length(trim(bs.TRX_DATE)) = 10 then str_to_date(concat(trim(bs.TRX_DATE), ' 00:00:00'), '%Y-%m-%d %H:%i:%s')
else str_to_date(trim(bs.TRX_DATE), '%Y-%m-%d %H:%i:%s')
end
), '%Y-%m-%d') as minTrxDate,
date_format(max(
case
when bs.TRX_DATE is null or trim(bs.TRX_DATE) = '' then null
when length(trim(bs.TRX_DATE)) = 10 then str_to_date(concat(trim(bs.TRX_DATE), ' 00:00:00'), '%Y-%m-%d %H:%i:%s')
else str_to_date(trim(bs.TRX_DATE), '%Y-%m-%d %H:%i:%s')
end
), '%Y-%m-%d') as maxTrxDate,
case
when count(distinct fur.id) > 0 then count(distinct fur.id)
else count(distinct bs.batch_id)
end as fileCount
from ccdi_bank_statement bs
left join ccdi_file_upload_record fur
on fur.project_id = bs.project_id
and fur.log_id = bs.batch_id
where bs.project_id = #{projectId}
and bs.LE_ACCOUNT_NAME is not null
and trim(bs.LE_ACCOUNT_NAME) != ''
group by trim(bs.LE_ACCOUNT_NAME)
order by trim(bs.LE_ACCOUNT_NAME) asc
</select>
<select id="selectReportRiskModelSummaries" resultMap="ReportModelSummaryResultMap">
select
model_scope.modelCode,
max(model_scope.modelName) as modelName,
sum(model_scope.warningCount) as warningCount,
count(distinct model_scope.staffIdCard) as peopleCount,
group_concat(distinct model_scope.staffName order by model_scope.staffName separator '、') as peopleNames
from (
select
result.staff_id_card as staffIdCard,
result.staff_name as staffName,
json_unquote(json_extract(result.model_hit_summary_json, concat('$[', idx.idx, '].modelCode'))) as modelCode,
json_unquote(json_extract(result.model_hit_summary_json, concat('$[', idx.idx, '].modelName'))) as modelName,
cast(json_unquote(json_extract(
result.model_hit_summary_json,
concat('$[', idx.idx, '].warningCount')
)) as unsigned) as warningCount
from ccdi_project_overview_employee_result result
join (
<include refid="jsonArrayIndexSql"/>
) idx on idx.idx &lt; json_length(result.model_hit_summary_json)
where result.project_id = #{projectId}
) model_scope
where model_scope.modelCode is not null
group by model_scope.modelCode
order by warningCount desc, model_scope.modelCode asc
</select>
<select id="selectReportRiskPeople" resultMap="RiskModelPeopleItemResultMap">
select
result.project_id,
result.staff_id_card,
result.staff_name,
result.staff_code,
result.dept_name as department,
null as selected_model_codes
from ccdi_project_overview_employee_result result
where result.project_id = #{projectId}
order by case result.risk_level_code
when 'HIGH' then 1
when 'MEDIUM' then 2
else 3
end,
result.model_count desc,
result.rule_count desc,
result.staff_id_card asc
</select>
<select id="selectRiskModelPeoplePage" resultMap="RiskModelPeopleItemResultMap">
<bind name="projectId" value="query.projectId"/>
select
@@ -615,6 +730,38 @@
order by final_result.trxDate desc, final_result.bankStatementId desc
</select>
<select id="selectReportSuspiciousTransactionList" resultMap="ReportSuspiciousTransactionResultMap">
select
final_result.bankStatementId,
final_result.trxDate,
bs.LE_ACCOUNT_NO as leAccountNo,
bs.LE_ACCOUNT_NAME as leAccountName,
bs.CUSTOMER_ACCOUNT_NAME as customerAccountName,
bs.CUSTOMER_ACCOUNT_NO as customerAccountNo,
final_result.relatedStaffName,
final_result.relatedStaffCode,
final_result.userMemo,
final_result.cashType,
tag_result.hitTags,
final_result.displayAmount
from (
<include refid="suspiciousTransactionAggregatedSql"/>
) final_result
inner join ccdi_bank_statement bs
on bs.bank_statement_id = final_result.bankStatementId
left join (
select
tr.bank_statement_id,
group_concat(distinct tr.rule_name order by tr.id separator '、') as hitTags
from ccdi_bank_statement_tag_result tr
where tr.project_id = #{query.projectId}
and tr.bank_statement_id is not null
group by tr.bank_statement_id
) tag_result on tag_result.bank_statement_id = final_result.bankStatementId
<include refid="suspiciousTransactionFilterSql"/>
order by final_result.trxDate desc, final_result.bankStatementId desc
</select>
<select id="selectEmployeeCreditNegativePage"
resultType="com.ruoyi.ccdi.project.domain.vo.CcdiProjectEmployeeCreditNegativeItemVO">
select