Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yd-csf
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xingmin
yd-csf
Commits
d6998bcf
Commit
d6998bcf
authored
Jun 08, 2026
by
zhangxingmin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
push
parent
69d67a28
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
100 additions
and
21 deletions
+100
-21
yd-csf-service/src/main/resources/mappers/CommissionExpectedMapper.xml
+100
-21
No files found.
yd-csf-service/src/main/resources/mappers/CommissionExpectedMapper.xml
View file @
d6998bcf
...
...
@@ -68,13 +68,45 @@
</where>
</select>
<select
id=
"receivableReportPage"
resultType=
"com.yd.csf.service.vo.ReceivableReportVO"
>
<!-- 预先获取每个 policy_biz_id 对应的第一条保单持有人和受保人信息 -->
<!-- 使用子查询 + MIN(id) 方式,兼容 MySQL 5.7 -->
SELECT
tmp.*
FROM (
-- 关联保单应收单部分
<!-- 完全对齐 getQueryWrapper 的条件 -->
<choose>
<!-- 如果 commissionBizType 有值且不为空,只查对应类型 -->
<when
test=
"query.commissionBizType != null and query.commissionBizType != ''"
>
<if
test=
"query.commissionBizType == 'R'"
>
SELECT * FROM (
<include
refid=
"receivableReportRSql"
/>
WHERE ce.commission_biz_type = 'R'
<include
refid=
"receivableReportWhereCommon"
/>
) tmp
</if>
<if
test=
"query.commissionBizType == 'U'"
>
SELECT * FROM (
<include
refid=
"receivableReportUSql"
/>
WHERE ce.commission_biz_type = 'U'
<include
refid=
"receivableReportWhereCommon"
/>
) tmp
</if>
</when>
<!-- 否则 UNION ALL 两种类型 -->
<otherwise>
SELECT * FROM (
<include
refid=
"receivableReportRSql"
/>
WHERE ce.commission_biz_type = 'R'
<include
refid=
"receivableReportWhereCommon"
/>
UNION ALL
<include
refid=
"receivableReportUSql"
/>
WHERE ce.commission_biz_type = 'U'
<include
refid=
"receivableReportWhereCommon"
/>
) tmp
</otherwise>
</choose>
<include
refid=
"receivableReportOrderBy"
/>
</select>
<!-- R 类型主查询(不含 WHERE 条件) -->
<sql
id=
"receivableReportRSql"
>
SELECT
NULL AS receivableNo,
ce.policy_no AS policyNo,
...
...
@@ -120,14 +152,11 @@
FROM policy_insurant
WHERE id IN (SELECT MIN(id) FROM policy_insurant GROUP BY policy_biz_id)
) ins ON ins.policy_biz_id = p.policy_biz_id
WHERE ce.commission_biz_type = 'R'
AND ce.is_deleted = 0
<include
refid=
"receivableReportWhere"
/>
GROUP BY ce.policy_no, ce.commission_period
</sql>
UNION ALL
-- 非关联保单应收单部分
<!-- U 类型主查询(不含 WHERE 条件) -->
<sql
id=
"receivableReportUSql"
>
SELECT
ce.receivable_no AS receivableNo,
ce.policy_no AS policyNo,
...
...
@@ -173,52 +202,102 @@
FROM policy_insurant
WHERE id IN (SELECT MIN(id) FROM policy_insurant GROUP BY policy_biz_id)
) ins ON ins.policy_biz_id = p.policy_biz_id
WHERE ce.commission_biz_type = 'U'
AND ce.is_deleted = 0
<include
refid=
"receivableReportWhere"
/>
) tmp
ORDER BY tmp.commissionDate DESC, tmp.policyNo, tmp.commissionPeriod
</select>
-- 注意 U 类型没有 GROUP BY,每笔单独显示
</sql>
<!-- 公共 WHERE 条件片段 -->
<sql
id=
"receivableReportWhere"
>
<!-- 公共 WHERE 条件(完全对应 getQueryWrapper) -->
<sql
id=
"receivableReportWhereCommon"
>
AND ce.is_deleted = 0
<!-- 1. 空结果处理:queryFlag=true 且 policyNoList 为空 -> 1=0 -->
<if
test=
"query.queryFlag != null and query.queryFlag and (query.policyNoList == null or query.policyNoList.size == 0)"
>
AND 1=0
</if>
<!-- 2. receivableNo -->
<if
test=
"query.receivableNo != null and query.receivableNo != ''"
>
AND ce.receivable_no = #{query.receivableNo}
</if>
<!-- 3. policyNo (精确) -->
<if
test=
"query.policyNo != null and query.policyNo != ''"
>
AND ce.policy_no = #{query.policyNo}
</if>
<!-- 4. policyNoList (IN) -->
<if
test=
"query.policyNoList != null and query.policyNoList.size > 0"
>
AND ce.policy_no IN
<foreach
collection=
"query.policyNoList"
item=
"no"
open=
"("
close=
")"
separator=
","
>
#{no}
</foreach>
</if>
<!-- 5. statusList (IN) -->
<if
test=
"query.statusList != null and query.statusList.size > 0"
>
AND ce.status IN
<foreach
collection=
"query.statusList"
item=
"status"
open=
"("
close=
")"
separator=
","
>
#{status}
</foreach>
</if>
<!-- 6. commissionDateStart -->
<if
test=
"query.commissionDateStart != null"
>
AND ce.commission_date >= #{query.commissionDateStart}
</if>
<!-- 7. commissionDateEnd -->
<if
test=
"query.commissionDateEnd != null"
>
AND ce.commission_date
<
= #{query.commissionDateEnd}
</if>
<!-- 8. commissionPeriod -->
<if
test=
"query.commissionPeriod != null"
>
AND ce.commission_period = #{query.commissionPeriod}
</if>
<!-- 9. commissionType -->
<if
test=
"query.commissionType != null and query.commissionType != ''"
>
AND ce.commission_type = #{query.commissionType}
</if>
<!-- 10. reconciliationCompanyBizIdList -->
<if
test=
"query.reconciliationCompanyBizIdList != null and query.reconciliationCompanyBizIdList.size > 0"
>
AND ce.reconciliation_company_biz_id IN
<foreach
collection=
"query.reconciliationCompanyBizIdList"
item=
"id"
open=
"("
close=
")"
separator=
","
>
#{id}
</foreach>
</if>
<!-- 11. insurerCompanyBizIdList -->
<if
test=
"query.insurerCompanyBizIdList != null and query.insurerCompanyBizIdList.size > 0"
>
AND ce.insurance_company_biz_id IN
<foreach
collection=
"query.insurerCompanyBizIdList"
item=
"id"
open=
"("
close=
")"
separator=
","
>
#{id}
</foreach>
</if>
<!-- 12. productLaunchBizId -->
<if
test=
"query.productLaunchBizId != null and query.productLaunchBizId != ''"
>
AND ce.product_launch_biz_id = #{query.productLaunchBizId}
</if>
<!-- 可根据需要添加更多条件,如 statusList 等 -->
<!-- 13. teamBizId (使用 EXISTS 子查询,与 getQueryWrapper 完全一致) -->
<if
test=
"query.teamBizId != null and query.teamBizId != ''"
>
AND EXISTS (
SELECT 1 FROM policy_broker pb
WHERE pb.policy_no = ce.policy_no
AND pb.team_biz_id = #{query.teamBizId}
)
</if>
</sql>
<!-- 排序(默认按 commission_date DESC,支持传入 sortField 和 sortOrder) -->
<sql
id=
"receivableReportOrderBy"
>
ORDER BY
<choose>
<when
test=
"query.sortField != null and query.sortField != '' and query.sortOrder != null"
>
<if
test=
"query.sortField == 'reconciliation_company'"
>
reconciliationCompany
</if>
<if
test=
"query.sortField == 'commission_name'"
>
commissionName
</if>
<if
test=
"query.sortField == 'commission_period'"
>
commissionPeriod
</if>
<if
test=
"query.sortField == 'amount'"
>
amount
</if>
<if
test=
"query.sortField != 'reconciliation_company' and query.sortField != 'commission_name' and query.sortField != 'commission_period' and query.sortField != 'amount'"
>
commissionDate
</if>
<if
test=
"query.sortOrder == 'asc'"
>
ASC
</if>
<if
test=
"query.sortOrder != 'asc'"
>
DESC
</if>
</when>
<otherwise>
commissionDate DESC
</otherwise>
</choose>
, policyNo, commissionPeriod
</sql>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment