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
371ba432
Commit
371ba432
authored
Mar 04, 2026
by
zhangxingmin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
push
parent
bf0bffd0
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
135 additions
and
10 deletions
+135
-10
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiCommissionExpectedController.java
+31
-10
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/CommissionExpectedServiceImpl.java
+98
-0
yd-csf-service/src/main/java/com/yd/csf/service/vo/ReceivableReportVO.java
+6
-0
No files found.
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiCommissionExpectedController.java
View file @
371ba432
...
...
@@ -16,12 +16,11 @@ import com.yd.csf.service.common.ErrorCode;
import
com.yd.csf.service.dto.*
;
import
com.yd.csf.service.model.CommissionExpected
;
import
com.yd.csf.service.model.Policy
;
import
com.yd.csf.service.model.PolicyFollow
;
import
com.yd.csf.service.service.CommissionExpectedService
;
import
com.yd.csf.service.service.PolicyFollowService
;
import
com.yd.csf.service.service.PolicyService
;
import
com.yd.csf.service.vo.CommissionExpectedExportDTO
;
import
com.yd.csf.service.vo.CommissionExpectedStatisticsVO
;
import
com.yd.csf.service.vo.CommissionExpectedVO
;
import
com.yd.csf.service.vo.ReceivableReportVO
;
import
com.yd.csf.service.vo.*
;
import
com.yd.insurance.base.feign.client.insurancereconciliationcompany.ApiInsuranceReconciliationCompanyFeignClient
;
import
com.yd.insurance.base.feign.request.insurancereconciliationcompany.ApiInsuranceReconciliationCompanyPageRequest
;
import
com.yd.insurance.base.feign.response.insurancereconciliationcompany.ApiInsuranceReconciliationCompanyPageResponse
;
...
...
@@ -41,6 +40,7 @@ import java.util.ArrayList;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
/**
...
...
@@ -60,6 +60,8 @@ public class ApiCommissionExpectedController {
@Resource
private
PolicyService
policyService
;
@Resource
private
PolicyFollowService
policyFollowService
;
@Resource
private
ApiInsuranceReconciliationCompanyFeignClient
companyFeignClient
;
/**
...
...
@@ -281,9 +283,8 @@ public class ApiCommissionExpectedController {
if
(!
CollectionUtils
.
isEmpty
(
allExpectedIdList
))
{
receivableReportPage
=
commissionExpectedService
.
receivableReportPage
(
reportPage
,
allExpectedIdList
);
}
log
.
info
(
"receivableReportPage>>>>前{}"
,
JSON
.
toJSONString
(
receivableReportPage
));
enrichReceivableReportWithCompanyName
(
receivableReportPage
);
log
.
info
(
"receivableReportPage>>>>后{}"
,
JSON
.
toJSONString
(
receivableReportPage
)
);
receivableReportPage
=
convertProductName
(
receivableReportPage
);
// 组装返回结果
ReceivableReportResponse
response
=
new
ReceivableReportResponse
();
response
.
setStatisticsVO
(
statisticsVO
);
...
...
@@ -291,6 +292,30 @@ public class ApiCommissionExpectedController {
return
Result
.
success
(
response
);
}
public
IPage
<
ReceivableReportVO
>
convertProductName
(
IPage
<
ReceivableReportVO
>
receivableReportPage
)
{
if
(!
org
.
springframework
.
util
.
CollectionUtils
.
isEmpty
(
receivableReportPage
.
getRecords
()))
{
List
<
String
>
policyNoList
=
receivableReportPage
.
getRecords
().
stream
().
map
(
ReceivableReportVO:
:
getPolicyNo
).
collect
(
Collectors
.
toList
());
List
<
PolicyFollow
>
policyFollowList
=
new
ArrayList
<>();
if
(!
org
.
springframework
.
util
.
CollectionUtils
.
isEmpty
(
policyNoList
))
{
policyFollowList
=
policyFollowService
.
lambdaQuery
()
.
in
(
PolicyFollow:
:
getPolicyNo
,
policyNoList
)
.
list
();
}
Map
<
String
,
PolicyFollow
>
policyFollowMap
=
policyFollowList
.
stream
()
.
collect
(
Collectors
.
toMap
(
PolicyFollow:
:
getPolicyNo
,
Function
.
identity
()));
List
<
ReceivableReportVO
>
voList
=
receivableReportPage
.
getRecords
().
stream
().
map
(
vo
->
{
PolicyFollow
policyFollow
=
policyFollowMap
.
get
(
vo
.
getPolicyNo
());
if
(
policyFollow
!=
null
)
{
vo
.
setProductName
(
policyFollow
.
getProductName
());
vo
.
setProductLaunchBizId
(
policyFollow
.
getProductLaunchBizId
());
}
return
vo
;
}).
collect
(
Collectors
.
toList
());
receivableReportPage
.
setRecords
(
voList
);
}
return
receivableReportPage
;
}
private
void
enrichReceivableReportWithCompanyName
(
IPage
<
ReceivableReportVO
>
page
)
{
if
(
page
==
null
||
CollectionUtils
.
isEmpty
(
page
.
getRecords
()))
{
return
;
...
...
@@ -302,7 +327,6 @@ public class ApiCommissionExpectedController {
.
filter
(
StringUtils:
:
isNotBlank
)
.
distinct
()
.
collect
(
Collectors
.
toList
());
log
.
info
(
"bizIdList>>>>{}"
,
JSON
.
toJSONString
(
bizIdList
));
if
(
bizIdList
.
isEmpty
())
{
return
;
}
...
...
@@ -315,7 +339,6 @@ public class ApiCommissionExpectedController {
Result
result
=
companyFeignClient
.
page
(
request
);
List
<
ApiInsuranceReconciliationCompanyPageResponse
>
companyList
=
extractCompanyListFromResult
(
result
);
log
.
info
(
"companyList>>>>{}"
,
JSON
.
toJSONString
(
companyList
));
if
(
companyList
.
isEmpty
())
{
return
;
}
...
...
@@ -328,7 +351,6 @@ public class ApiCommissionExpectedController {
ApiInsuranceReconciliationCompanyPageResponse:
:
getName
,
(
v1
,
v2
)
->
v1
// 重复时保留第一个
));
log
.
info
(
"nameMap>>>>{}"
,
JSON
.
toJSONString
(
nameMap
));
// 回填名称
page
.
getRecords
().
forEach
(
vo
->
{
if
(
StringUtils
.
isNotBlank
(
vo
.
getReconciliationCompanyBizId
()))
{
...
...
@@ -344,7 +366,6 @@ public class ApiCommissionExpectedController {
if
(
result
==
null
||
result
.
getCode
()
!=
200
||
result
.
getData
()
==
null
)
{
return
Collections
.
emptyList
();
}
log
.
info
(
"Feign返回结果: {}"
,
JSON
.
toJSONString
(
result
));
Object
data
=
result
.
getData
();
try
{
// 将 data 转为 JSON 字符串再解析为 Map,以便提取 records
...
...
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/CommissionExpectedServiceImpl.java
View file @
371ba432
...
...
@@ -2,6 +2,7 @@ package com.yd.csf.service.service.impl;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.convert.Convert
;
import
com.alibaba.fastjson.JSON
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
...
...
@@ -22,11 +23,15 @@ import com.yd.csf.service.enums.CommissionExpectedStatusEnum;
import
com.yd.csf.service.model.Commission
;
import
com.yd.csf.service.model.CommissionExpected
;
import
com.yd.csf.service.model.Policy
;
import
com.yd.csf.service.model.PolicyFollow
;
import
com.yd.csf.service.service.*
;
import
com.yd.csf.service.dao.CommissionExpectedMapper
;
import
com.yd.csf.service.vo.CommissionExpectedStatisticsVO
;
import
com.yd.csf.service.vo.CommissionExpectedVO
;
import
com.yd.csf.service.vo.ReceivableReportVO
;
import
com.yd.insurance.base.feign.client.insurancereconciliationcompany.ApiInsuranceReconciliationCompanyFeignClient
;
import
com.yd.insurance.base.feign.request.insurancereconciliationcompany.ApiInsuranceReconciliationCompanyPageRequest
;
import
com.yd.insurance.base.feign.response.insurancereconciliationcompany.ApiInsuranceReconciliationCompanyPageResponse
;
import
com.yd.product.feign.client.announcementcommissionratio.ApiAnnouncementCommissionRatioFeignClient
;
import
com.yd.product.feign.client.expectedspecies.ApiExpectedSpeciesFeignClient
;
import
com.yd.product.feign.request.expectedspecies.ApiExpectedSpeciesListRequest
;
...
...
@@ -81,6 +86,8 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
private
RedisUtil
redisUtil
;
@Resource
private
ApiExchangeRateFeignClient
apiExchangeRateFeignClient
;
@Resource
private
ApiInsuranceReconciliationCompanyFeignClient
companyFeignClient
;
// 用于对象转换的ObjectMapper
private
static
final
ObjectMapper
objectMapper
=
new
ObjectMapper
();
...
...
@@ -94,6 +101,7 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
return
CommissionExpectedVOPage
;
}
// 关联查询保单信息
Set
<
String
>
policyNoSet
=
CommissionExpectedList
.
stream
().
map
(
CommissionExpected:
:
getPolicyNo
).
collect
(
Collectors
.
toSet
());
QueryWrapper
<
Policy
>
queryWrapper
=
new
QueryWrapper
<
Policy
>();
...
...
@@ -102,6 +110,15 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
List
<
Policy
>
policyList
=
policyService
.
list
(
queryWrapper
);
Map
<
String
,
Policy
>
policyMap
=
policyList
.
stream
().
collect
(
Collectors
.
toMap
(
Policy:
:
getPolicyNo
,
a
->
a
,
(
oldValue
,
newValue
)
->
newValue
));
List
<
String
>
policyNoList
=
policyList
.
stream
().
map
(
Policy:
:
getPolicyNo
).
collect
(
Collectors
.
toList
());
List
<
PolicyFollow
>
policyFollowList
=
new
ArrayList
<>();
if
(!
org
.
springframework
.
util
.
CollectionUtils
.
isEmpty
(
policyNoList
))
{
policyFollowList
=
policyFollowService
.
lambdaQuery
()
.
in
(
PolicyFollow:
:
getPolicyNo
,
policyNoList
)
.
list
();
}
Map
<
String
,
PolicyFollow
>
policyFollowMap
=
policyFollowList
.
stream
()
.
collect
(
Collectors
.
toMap
(
PolicyFollow:
:
getPolicyNo
,
Function
.
identity
()));
// 填充信息
List
<
CommissionExpectedVO
>
CommissionExpectedVOList
=
CommissionExpectedList
.
stream
().
map
(
commissionExpected
->
{
CommissionExpectedVO
commissionExpectedVO
=
CommissionExpectedVO
.
objToVo
(
commissionExpected
);
...
...
@@ -114,12 +131,93 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
commissionExpectedVO
.
setReconciliationCompany
(
policy
.
getReconciliationCompany
());
commissionExpectedVO
.
setPolicyCurrency
(
policy
.
getCurrency
());
}
PolicyFollow
policyFollow
=
policyFollowMap
.
get
(
commissionExpected
.
getPolicyNo
());
if
(
policyFollow
!=
null
)
{
commissionExpectedVO
.
setProductName
(
policyFollow
.
getProductName
());
commissionExpectedVO
.
setProductLaunchBizId
(
policyFollow
.
getProductLaunchBizId
());
}
return
commissionExpectedVO
;
}).
collect
(
Collectors
.
toList
());
CommissionExpectedVOPage
.
setRecords
(
CommissionExpectedVOList
);
enrichReceivableReportWithCompanyName
(
CommissionExpectedVOPage
);
return
CommissionExpectedVOPage
;
}
private
void
enrichReceivableReportWithCompanyName
(
IPage
<
CommissionExpectedVO
>
page
)
{
if
(
page
==
null
||
CollectionUtils
.
isEmpty
(
page
.
getRecords
()))
{
return
;
}
// 收集所有非空的对账公司 bizId(去重)
List
<
String
>
bizIdList
=
page
.
getRecords
().
stream
()
.
map
(
CommissionExpectedVO:
:
getReconciliationCompanyBizId
)
.
filter
(
StringUtils:
:
isNotBlank
)
.
distinct
()
.
collect
(
Collectors
.
toList
());
if
(
bizIdList
.
isEmpty
())
{
return
;
}
// 调用 Feign 批量查询对账公司信息
ApiInsuranceReconciliationCompanyPageRequest
request
=
new
ApiInsuranceReconciliationCompanyPageRequest
();
request
.
setReconciliationCompanyBizIdList
(
bizIdList
);
request
.
setPageNo
(
1
);
request
.
setPageSize
(
bizIdList
.
size
());
Result
result
=
companyFeignClient
.
page
(
request
);
List
<
ApiInsuranceReconciliationCompanyPageResponse
>
companyList
=
extractCompanyListFromResult
(
result
);
if
(
companyList
.
isEmpty
())
{
return
;
}
// 构建 bizId -> name 映射
Map
<
String
,
String
>
nameMap
=
companyList
.
stream
()
.
filter
(
c
->
StringUtils
.
isNotBlank
(
c
.
getReconciliationCompanyBizId
()))
.
collect
(
Collectors
.
toMap
(
ApiInsuranceReconciliationCompanyPageResponse:
:
getReconciliationCompanyBizId
,
ApiInsuranceReconciliationCompanyPageResponse:
:
getName
,
(
v1
,
v2
)
->
v1
// 重复时保留第一个
));
// 回填名称
page
.
getRecords
().
forEach
(
vo
->
{
if
(
StringUtils
.
isNotBlank
(
vo
.
getReconciliationCompanyBizId
()))
{
String
name
=
nameMap
.
get
(
vo
.
getReconciliationCompanyBizId
());
if
(
StringUtils
.
isNotBlank
(
name
)
&&
!
"CSF"
.
equals
(
name
))
{
vo
.
setReconciliationCompany
(
name
);
}
}
});
}
private
List
<
ApiInsuranceReconciliationCompanyPageResponse
>
extractCompanyListFromResult
(
Result
result
)
{
if
(
result
==
null
||
result
.
getCode
()
!=
200
||
result
.
getData
()
==
null
)
{
return
Collections
.
emptyList
();
}
Object
data
=
result
.
getData
();
try
{
// 将 data 转为 JSON 字符串再解析为 Map,以便提取 records
Map
<
String
,
Object
>
dataMap
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
data
),
new
com
.
alibaba
.
fastjson
.
TypeReference
<
Map
<
String
,
Object
>>()
{});
Object
recordsObj
=
dataMap
.
get
(
"records"
);
if
(
recordsObj
instanceof
List
)
{
List
<?>
recordsList
=
(
List
<?>)
recordsObj
;
List
<
ApiInsuranceReconciliationCompanyPageResponse
>
companyList
=
new
ArrayList
<>();
for
(
Object
item
:
recordsList
)
{
// 将每个元素转换为目标类型
ApiInsuranceReconciliationCompanyPageResponse
company
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
item
),
ApiInsuranceReconciliationCompanyPageResponse
.
class
);
companyList
.
add
(
company
);
}
return
companyList
;
}
}
catch
(
Exception
e
)
{
log
.
error
(
"解析公司列表失败"
,
e
);
}
return
Collections
.
emptyList
();
}
/**
* 校验数据
*
...
...
yd-csf-service/src/main/java/com/yd/csf/service/vo/ReceivableReportVO.java
View file @
371ba432
...
...
@@ -37,6 +37,12 @@ public class ReceivableReportVO {
private
String
reconciliationCompanyBizId
;
/**
* 产品上架信息表唯一业务ID
*/
@Schema
(
description
=
"产品上架信息表唯一业务ID"
)
private
String
productLaunchBizId
;
/**
* 入账期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
*/
@Schema
(
description
=
"入账期数"
)
...
...
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