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
2a96b3b7
Commit
2a96b3b7
authored
Jun 09, 2026
by
zhangxingmin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
push
parent
3617eaf1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
38 additions
and
2 deletions
+38
-2
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/CommissionExpectedServiceImpl.java
+38
-2
No files found.
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/CommissionExpectedServiceImpl.java
View file @
2a96b3b7
...
@@ -15,6 +15,9 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
...
@@ -15,6 +15,9 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.yd.base.feign.client.exchangerate.ApiExchangeRateFeignClient
;
import
com.yd.base.feign.client.exchangerate.ApiExchangeRateFeignClient
;
import
com.yd.base.feign.dto.ApiQueryBatchExchangeRateDTO
;
import
com.yd.base.feign.request.exchangerate.ApiQueryBatchExchangeRateRequest
;
import
com.yd.base.feign.response.exchangerate.ApiQueryBatchExchangeRateResponse
;
import
com.yd.common.constant.CommonConstant
;
import
com.yd.common.constant.CommonConstant
;
import
com.yd.common.constant.RedisConstants
;
import
com.yd.common.constant.RedisConstants
;
import
com.yd.common.enums.ResultCode
;
import
com.yd.common.enums.ResultCode
;
...
@@ -1108,16 +1111,49 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
...
@@ -1108,16 +1111,49 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
.
list
();
.
list
();
log
.
info
(
"查询保单信息耗时: {} ms, 结果数量: {}"
,
System
.
currentTimeMillis
()
-
t3
,
policyList
.
size
());
log
.
info
(
"查询保单信息耗时: {} ms, 结果数量: {}"
,
System
.
currentTimeMillis
()
-
t3
,
policyList
.
size
());
if
(
CollectionUtils
.
isNotEmpty
(
policyList
))
{
// 1. 收集所有需要查询的币种(去重)
Set
<
String
>
currencies
=
policyList
.
stream
()
.
map
(
Policy:
:
getCurrency
)
.
filter
(
StringUtils:
:
isNotBlank
)
.
collect
(
Collectors
.
toSet
());
// 2. 构建批量查询请求(币种 -> HKD)
ApiQueryBatchExchangeRateRequest
batchRequest
=
new
ApiQueryBatchExchangeRateRequest
();
List
<
ApiQueryBatchExchangeRateDTO
>
dtoList
=
new
ArrayList
<>();
for
(
String
currency
:
currencies
)
{
ApiQueryBatchExchangeRateDTO
dto
=
new
ApiQueryBatchExchangeRateDTO
();
dto
.
setBaseCurrency
(
currency
);
dto
.
setTargetCurrency
(
"HKD"
);
dtoList
.
add
(
dto
);
}
batchRequest
.
setRateDTOList
(
dtoList
);
// 3. 调用批量汇率接口
Result
<
ApiQueryBatchExchangeRateResponse
>
batchResult
=
apiExchangeRateFeignClient
.
queryBatchExchangeRate
(
batchRequest
);
Map
<
String
,
BigDecimal
>
rateMap
=
new
HashMap
<>();
if
(
batchResult
!=
null
&&
batchResult
.
getCode
()
==
200
&&
batchResult
.
getData
()
!=
null
)
{
List
<
ApiQueryBatchExchangeRateDTO
>
resultList
=
batchResult
.
getData
().
getRateDTOList
();
for
(
ApiQueryBatchExchangeRateDTO
result
:
resultList
)
{
if
(
result
.
getExchangeRate
()
!=
null
)
{
rateMap
.
put
(
result
.
getBaseCurrency
(),
result
.
getExchangeRate
());
}
}
}
// 4. 循环计算总保费,从 map 中取汇率
long
t4
=
System
.
currentTimeMillis
();
long
t4
=
System
.
currentTimeMillis
();
for
(
Policy
policy
:
policyList
)
{
for
(
Policy
policy
:
policyList
)
{
BigDecimal
rate
=
queryExchangeRateByFeign
(
policy
.
getCurrency
(),
"HKD"
);
BigDecimal
rate
=
rateMap
.
getOrDefault
(
policy
.
getCurrency
(),
BigDecimal
.
ONE
);
if
(
rate
==
null
)
rate
=
BigDecimal
.
ONE
;
totalPremium
=
totalPremium
.
add
(
policy
.
getTotalPaymentPremium
().
multiply
(
rate
));
totalPremium
=
totalPremium
.
add
(
policy
.
getTotalPaymentPremium
().
multiply
(
rate
));
fromTotalPremium
=
fromTotalPremium
.
add
(
policy
.
getTotalPaymentPremium
());
fromTotalPremium
=
fromTotalPremium
.
add
(
policy
.
getTotalPaymentPremium
());
}
}
log
.
info
(
"汇率计算及保费累加耗时: {} ms"
,
System
.
currentTimeMillis
()
-
t4
);
log
.
info
(
"汇率计算及保费累加耗时: {} ms"
,
System
.
currentTimeMillis
()
-
t4
);
}
}
}
// 组装返回对象
// 组装返回对象
CommissionExpectedStatisticsVO
vo
=
new
CommissionExpectedStatisticsVO
();
CommissionExpectedStatisticsVO
vo
=
new
CommissionExpectedStatisticsVO
();
vo
.
setTotalAmount
(
totalAmount
);
vo
.
setTotalAmount
(
totalAmount
);
...
...
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