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
3617eaf1
Commit
3617eaf1
authored
Jun 09, 2026
by
zhangxingmin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
push
parent
0bb7ac53
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
106 additions
and
19 deletions
+106
-19
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/CommissionExpectedServiceImpl.java
+106
-19
No files found.
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/CommissionExpectedServiceImpl.java
View file @
3617eaf1
...
...
@@ -969,34 +969,118 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
return
commissionStatistics
;
}
// @Override
// public CommissionExpectedStatisticsVO getExpectedStatisticsNew(List<CommissionExpected> allExpectedList) {
// // 空集合直接返回空统计
// if (CollectionUtils.isEmpty(allExpectedList)) {
// return emptyStatistics();
// }
//
// // 查询所有记录(包含失效状态)
//// List<CommissionExpected> allExpectedList = this.listByIds(expectedIds);
//// if (CollectionUtils.isEmpty(allExpectedList)) {
//// return emptyStatistics();
//// }
//
// // 过滤掉已失效的记录(status = "3")
// List<CommissionExpected> validList = allExpectedList.stream()
// .filter(e -> !"3".equals(e.getStatus()))
// .collect(Collectors.toList());
//
// if (validList.isEmpty()) {
// return emptyStatistics();
// }
//
// // 手动聚合计算
// BigDecimal totalAmount = BigDecimal.ZERO;
// BigDecimal totalPaidAmount = BigDecimal.ZERO;
// //累计已入账来佣比例(同保单多个入账项目累计的实佣率)
// BigDecimal totalPaidRatio = BigDecimal.ZERO;
// //累计来佣比例(同保单多个入账项目累计的产品来佣率)
// BigDecimal totalCommissionRatio = BigDecimal.ZERO;
// Set<String> policyNoSet = new HashSet<>();
//
// for (CommissionExpected expected : validList) {
// totalAmount = totalAmount.add(ObjectUtils.defaultIfNull(expected.getExpectedAmount(), BigDecimal.ZERO));
// totalPaidAmount = totalPaidAmount.add(ObjectUtils.defaultIfNull(expected.getPaidAmount(), BigDecimal.ZERO));
// totalPaidRatio = totalPaidRatio.add(ObjectUtils.defaultIfNull(expected.getPaidRatio(), BigDecimal.ZERO));
// totalCommissionRatio = totalCommissionRatio.add(ObjectUtils.defaultIfNull(expected.getCommissionRatio(), BigDecimal.ZERO));
// if (StringUtils.isNotBlank(expected.getPolicyNo())) {
// policyNoSet.add(expected.getPolicyNo());
// }
// }
//
// // 计算总保费(HKD)
// BigDecimal totalPremium = BigDecimal.ZERO;
// BigDecimal fromTotalPremium = BigDecimal.ZERO;
// if (CollectionUtils.isNotEmpty(policyNoSet)) {
// List<Policy> policyList = policyService.lambdaQuery()
// .select(Policy::getPolicyNo,
// Policy::getTotalPaymentPremium,
// Policy::getCurrency)
// .in(Policy::getPolicyNo, policyNoSet)
// .list();
// if (CollectionUtils.isNotEmpty(policyList)) {
// for (Policy policy : policyList) {
// // 获取保单币种到港币的汇率
// BigDecimal rate = queryExchangeRateByFeign(policy.getCurrency(), "HKD");
// if (rate == null) rate = BigDecimal.ONE;
// totalPremium = totalPremium.add(policy.getTotalPaymentPremium().multiply(rate));
// fromTotalPremium = fromTotalPremium.add(policy.getTotalPaymentPremium());
// }
// }
// }
//
// // 组装返回对象
// CommissionExpectedStatisticsVO vo = new CommissionExpectedStatisticsVO();
// vo.setTotalAmount(totalAmount);
// vo.setTotalPaidAmount(totalPaidAmount);
// vo.setPendingPaidAmountS(totalAmount.subtract(totalPaidAmount));
//
// if (totalAmount.compareTo(BigDecimal.ZERO) > 0) {
// BigDecimal ratio = totalPaidAmount.divide(totalAmount, 4, RoundingMode.HALF_UP)
// .multiply(BigDecimal.valueOf(100));
// vo.setPaidAmountRatio(ratio);
// } else {
// vo.setPaidAmountRatio(BigDecimal.ZERO);
// }
//
// // 待入账金额归零 = 已入账来佣比例(累计实佣率)>= 累计产品来佣率
//// if (totalPaidRatio.compareTo(totalCommissionRatio) >= 0){
//// vo.setPendingPaidAmount(BigDecimal.ZERO);
//// }
// vo.setPendingPaidAmount(totalAmount);
// vo.setTotalPolicyCount(policyNoSet.size());
// vo.setTotalPremium(totalPremium);
// vo.setFromTotalPremium(fromTotalPremium);
// vo.setPolicyNos(null); // 原字段可能用于其他逻辑,此处置空
// return vo;
// }
@Override
public
CommissionExpectedStatisticsVO
getExpectedStatisticsNew
(
List
<
CommissionExpected
>
allExpectedList
)
{
// 空集合直接返回空统计
long
t0
=
System
.
currentTimeMillis
();
log
.
info
(
"getExpectedStatisticsNew 开始, 输入大小: {}"
,
allExpectedList
==
null
?
0
:
allExpectedList
.
size
());
if
(
CollectionUtils
.
isEmpty
(
allExpectedList
))
{
return
emptyStatistics
();
}
// 查询所有记录(包含失效状态)
// List<CommissionExpected> allExpectedList = this.listByIds(expectedIds);
// if (CollectionUtils.isEmpty(allExpectedList)) {
// return emptyStatistics();
// }
// 过滤掉已失效的记录(status = "3")
long
t1
=
System
.
currentTimeMillis
();
List
<
CommissionExpected
>
validList
=
allExpectedList
.
stream
()
.
filter
(
e
->
!
"3"
.
equals
(
e
.
getStatus
()))
.
collect
(
Collectors
.
toList
());
log
.
info
(
"过滤 status=3 耗时: {} ms, 有效数量: {}"
,
System
.
currentTimeMillis
()
-
t1
,
validList
.
size
());
if
(
validList
.
isEmpty
())
{
return
emptyStatistics
();
}
long
t2
=
System
.
currentTimeMillis
();
// 手动聚合计算
BigDecimal
totalAmount
=
BigDecimal
.
ZERO
;
BigDecimal
totalPaidAmount
=
BigDecimal
.
ZERO
;
//累计已入账来佣比例(同保单多个入账项目累计的实佣率)
BigDecimal
totalPaidRatio
=
BigDecimal
.
ZERO
;
//累计来佣比例(同保单多个入账项目累计的产品来佣率)
BigDecimal
totalCommissionRatio
=
BigDecimal
.
ZERO
;
Set
<
String
>
policyNoSet
=
new
HashSet
<>();
...
...
@@ -1009,8 +1093,10 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
policyNoSet
.
add
(
expected
.
getPolicyNo
());
}
}
log
.
info
(
"内存聚合耗时: {} ms, 保单数: {}"
,
System
.
currentTimeMillis
()
-
t2
,
policyNoSet
.
size
());
// 计算总保费(HKD)
long
t3
=
System
.
currentTimeMillis
();
// 计算总保费
BigDecimal
totalPremium
=
BigDecimal
.
ZERO
;
BigDecimal
fromTotalPremium
=
BigDecimal
.
ZERO
;
if
(
CollectionUtils
.
isNotEmpty
(
policyNoSet
))
{
...
...
@@ -1020,15 +1106,16 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
Policy:
:
getCurrency
)
.
in
(
Policy:
:
getPolicyNo
,
policyNoSet
)
.
list
();
if
(
CollectionUtils
.
isNotEmpty
(
policyList
))
{
for
(
Policy
policy
:
policyList
)
{
// 获取保单币种到港币的汇率
BigDecimal
rate
=
queryExchangeRateByFeign
(
policy
.
getCurrency
(),
"HKD"
);
if
(
rate
==
null
)
rate
=
BigDecimal
.
ONE
;
totalPremium
=
totalPremium
.
add
(
policy
.
getTotalPaymentPremium
().
multiply
(
rate
))
;
fromTotalPremium
=
fromTotalPremium
.
add
(
policy
.
getTotalPaymentPremium
(
));
}
log
.
info
(
"查询保单信息耗时: {} ms, 结果数量: {}"
,
System
.
currentTimeMillis
()
-
t3
,
policyList
.
size
());
long
t4
=
System
.
currentTimeMillis
();
for
(
Policy
policy
:
policyList
)
{
BigDecimal
rate
=
queryExchangeRateByFeign
(
policy
.
getCurrency
(),
"HKD"
)
;
if
(
rate
==
null
)
rate
=
BigDecimal
.
ONE
;
totalPremium
=
totalPremium
.
add
(
policy
.
getTotalPaymentPremium
().
multiply
(
rate
));
fromTotalPremium
=
fromTotalPremium
.
add
(
policy
.
getTotalPaymentPremium
());
}
log
.
info
(
"汇率计算及保费累加耗时: {} ms"
,
System
.
currentTimeMillis
()
-
t4
);
}
// 组装返回对象
...
...
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