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
95a072fa
Commit
95a072fa
authored
Jan 08, 2026
by
jianan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
前端对接问题修复92
parent
94b4b63b
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
75 additions
and
19 deletions
+75
-19
yd-csf-service/src/main/java/com/yd/csf/service/model/Commission.java
+8
-6
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/CommissionServiceImpl.java
+67
-13
No files found.
yd-csf-service/src/main/java/com/yd/csf/service/model/Commission.java
View file @
95a072fa
...
...
@@ -177,10 +177,11 @@ public class Commission implements Serializable {
@TableField
(
exist
=
false
)
private
static
final
long
serialVersionUID
=
1L
;
public
BigDecimal
calculateCurrentPaidRatio
()
{
// 当前来佣比例=当前入账金额/结算汇率/保费 * 100
return
amount
.
divide
(
new
BigDecimal
(
premium
),
4
,
RoundingMode
.
HALF_UP
)
.
divide
(
exchangeRate
,
4
,
RoundingMode
.
HALF_UP
)
.
multiply
(
new
BigDecimal
(
100
));
}
// public BigDecimal calculateCurrentPaidRatio() {
// // 当前来佣比例=当前入账金额/结算汇率/保费 * 100
// return amount.divide(new BigDecimal(premium), 4, RoundingMode.HALF_UP)
// .divide(exchangeRate, 4, RoundingMode.HALF_UP)
// .multiply(new BigDecimal(100));
// }
}
\ No newline at end of file
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/CommissionServiceImpl.java
View file @
95a072fa
...
...
@@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import
com.yd.common.enums.CommonEnum
;
import
com.yd.common.enums.ResultCode
;
import
com.yd.common.exception.BusinessException
;
import
com.yd.common.result.Result
;
import
com.yd.common.utils.RandomStringGenerator
;
import
com.yd.csf.service.component.CommissionAsyncService
;
import
com.yd.csf.service.component.ReceivableService
;
...
...
@@ -24,12 +25,15 @@ import com.yd.csf.service.service.*;
import
com.yd.csf.service.dao.CommissionMapper
;
import
com.yd.csf.service.vo.CommissionStatisticsVO
;
import
com.yd.csf.service.vo.CommissionVO
;
import
com.yd.user.feign.client.sysdict.ApiSysDictFeignClient
;
import
com.yd.user.feign.response.sysdict.GetDictItemListByDictTypeResponse
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.MapUtils
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.support.TransactionSynchronization
;
...
...
@@ -75,6 +79,8 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
private
TransactionTemplate
transactionTemplate
;
@Resource
private
ReceivableService
receivableService
;
@Autowired
private
ApiSysDictFeignClient
apiSysDictFeignClient
;
@Override
...
...
@@ -253,7 +259,6 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
commission
.
setReconciliationCompany
(
policy
.
getReconciliationCompany
());
commission
.
setReconciliationCompanyCode
(
policy
.
getReconciliationCompanyCode
());
commission
.
setReconciliationCompanyBizId
(
policy
.
getReconciliationCompanyBizId
());
commission
.
setCurrentCommissionRatio
(
commission
.
calculateCurrentPaidRatio
());
}
// 匹配预计来佣记录
CommissionExpected
expected
=
findExpectedFromList
(
commission
,
commissionExpectedList
);
...
...
@@ -261,6 +266,9 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
commission
.
setCommissionExpectedBizId
(
expected
.
getCommissionExpectedBizId
());
commission
.
setReceivableNo
(
expected
.
getReceivableNo
());
commission
.
setTotalPeriod
(
expected
.
getTotalPeriod
());
// 本次入账比例
commission
.
setCurrentCommissionRatio
(
calculateCurrentCommissionRatio
(
commission
.
getPremium
(),
commission
.
getAmount
(),
commission
.
getCurrency
(),
commission
.
getExchangeRate
(),
expected
));
}
else
{
commission
.
setRemark
(
"未查询到预计来佣记录"
);
commission
.
setStatus
(
CommissionStatusEnum
.
MATCH_FAILED
.
getItemValue
());
...
...
@@ -315,18 +323,20 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
}
BigDecimal
requestAmount
=
commissionUpdateRequest
.
getAmount
();
// 重新关联预计来佣记录
CommissionExpected
commissionExpected
=
getCommissionExpectedBizId
(
commission
);
if
(
commissionExpected
!=
null
)
{
if
(
"R"
.
equals
(
commissionUpdateRequest
.
getCommissionBizType
()))
{
// 关联应收单,计算当前来佣比例
BigDecimal
currentCommissionRatio
=
this
.
calculateCurrentCommissionRatio
(
commission
.
getPremium
(),
requestAmount
,
commissionUpdateRequest
.
getExchangeRate
());
commissionUpdateRequest
.
getCurrency
(),
commissionUpdateRequest
.
getExchangeRate
(),
commissionExpected
);
commission
.
setCurrentCommissionRatio
(
currentCommissionRatio
);
}
else
{
commission
.
setPolicyNo
(
null
);
}
// 重新关联预计来佣记录
getCommissionExpectedBizId
(
commission
);
}
// 计算来佣金额(港币)
commission
.
setHkdAmount
(
calculateHKDAmount
(
requestAmount
,
...
...
@@ -342,6 +352,9 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
// 更新属性
BeanUtils
.
copyProperties
(
commissionUpdateRequest
,
commission
,
"commissionBizId"
);
if
(
"U"
.
equals
(
commissionUpdateRequest
.
getCommissionBizType
()))
{
commission
.
setPolicyNo
(
null
);
}
commission
.
setUpdaterId
(
loginUserId
);
commission
.
setUpdateTime
(
new
Date
());
// 执行更新操作(这个方法将在当前事务中执行)
...
...
@@ -373,7 +386,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
return
requestAmount
.
multiply
(
exchangeRate
);
}
private
voi
d
getCommissionExpectedBizId
(
Commission
commission
)
{
private
CommissionExpecte
d
getCommissionExpectedBizId
(
Commission
commission
)
{
CommissionExpected
commissionExpected
=
null
;
if
(
"R"
.
equals
(
commission
.
getCommissionBizType
()))
{
commissionExpected
=
commissionExpectedService
.
lambdaQuery
()
...
...
@@ -397,6 +410,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
}
else
{
commission
.
setStatus
(
CommissionStatusEnum
.
MATCH_FAILED
.
getItemValue
());
}
return
commissionExpected
;
}
@Override
...
...
@@ -414,6 +428,9 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
if
(
ObjectUtils
.
isEmpty
(
commissionUpdateRequest
.
getAmount
()))
{
throw
new
BusinessException
(
ResultCode
.
NULL_ERROR
.
getCode
(),
"入账金额不能为空"
);
}
if
(
ObjectUtils
.
isEmpty
(
commissionUpdateRequest
.
getCurrency
()))
{
throw
new
BusinessException
(
ResultCode
.
NULL_ERROR
.
getCode
(),
"入账币种不能为空"
);
}
if
(
ObjectUtils
.
isEmpty
(
commissionUpdateRequest
.
getExchangeRate
()))
{
throw
new
BusinessException
(
ResultCode
.
NULL_ERROR
.
getCode
(),
"结算汇率不能为空"
);
}
...
...
@@ -689,7 +706,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
return
this
.
getOne
(
new
QueryWrapper
<
Commission
>().
eq
(
"commission_biz_id"
,
commissionBizId
));
}
public
BigDecimal
calculateCurrentCommissionRatio
(
String
premium
,
BigDecimal
amount
,
BigDecimal
exchangeRate
)
{
public
BigDecimal
calculateCurrentCommissionRatio
(
String
premium
,
BigDecimal
amount
,
String
currentCurrency
,
BigDecimal
exchangeRate
,
CommissionExpected
commissionExpected
)
{
if
(
ObjectUtils
.
isEmpty
(
premium
))
{
throw
new
BusinessException
(
ResultCode
.
NULL_ERROR
.
getCode
(),
"保单保费不能为空"
);
}
...
...
@@ -699,10 +716,43 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
if
(
ObjectUtils
.
isEmpty
(
exchangeRate
))
{
throw
new
BusinessException
(
ResultCode
.
NULL_ERROR
.
getCode
(),
"当前结算汇率不能为空"
);
}
// 当前来佣比例=当前入账金额/结算汇率/保费 * 100
// 获取保单币种
String
currency
=
commissionExpected
.
getCurrency
();
// 如果当前入账币种等于保单币种,直接计算来佣比例
if
(
StringUtils
.
equals
(
currentCurrency
,
currency
))
{
return
amount
.
divide
(
new
BigDecimal
(
premium
),
4
,
RoundingMode
.
HALF_UP
)
.
multiply
(
new
BigDecimal
(
100
));
}
// 如果币种不同,首先把当前入账金额转换为对应币种金额
if
(!
StringUtils
.
equals
(
currentCurrency
,
"HKD"
))
{
Result
<
List
<
GetDictItemListByDictTypeResponse
>>
result
=
apiSysDictFeignClient
.
getDictItemListByDictType
(
"csf_exchange_rate_hkd"
);
log
.
info
(
"--------------当前入账金额: {} {}"
,
amount
,
currentCurrency
);
log
.
info
(
"--------------当前入账币种: {}"
,
currentCurrency
);
BigDecimal
defaultExchangeRate
=
null
;
if
(
CollectionUtils
.
isNotEmpty
(
result
.
getData
()))
{
for
(
GetDictItemListByDictTypeResponse
dictItem
:
result
.
getData
())
{
if
(
StringUtils
.
equalsIgnoreCase
(
dictItem
.
getItemLabel
(),
currentCurrency
))
{
defaultExchangeRate
=
new
BigDecimal
(
dictItem
.
getItemValue
());
}
}
}
if
(
ObjectUtils
.
isEmpty
(
defaultExchangeRate
))
{
throw
new
BusinessException
(
ResultCode
.
NULL_ERROR
.
getCode
(),
"未找到当前入账币种对应的结算汇率"
);
}
amount
=
amount
.
divide
(
defaultExchangeRate
,
4
,
RoundingMode
.
HALF_UP
);
log
.
info
(
"--------------当前入账港币: {}"
,
amount
);
}
// 当前来佣比例=当前入账金额/结算汇率/保费 * 100
BigDecimal
currentCommissionRatio
=
amount
.
divide
(
new
BigDecimal
(
premium
),
4
,
RoundingMode
.
HALF_UP
)
.
divide
(
exchangeRate
,
4
,
RoundingMode
.
HALF_UP
)
.
multiply
(
new
BigDecimal
(
100
));
log
.
info
(
"--------------当前结算汇率: {}"
,
exchangeRate
);
log
.
info
(
"--------------当前来佣比例: {}"
,
currentCommissionRatio
);
return
currentCommissionRatio
;
}
@Override
...
...
@@ -779,8 +829,6 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
commission
.
setProductLaunchBizId
(
policy
.
getProductLaunchBizId
());
commission
.
setInsuranceCompanyBizId
(
policy
.
getInsuranceCompanyBizId
());
commission
.
setPremium
(
Convert
.
toStr
(
policy
.
getPaymentPremium
()));
// 本次入账比例
commission
.
setCurrentCommissionRatio
(
commission
.
calculateCurrentPaidRatio
());
}
else
{
throw
new
BusinessException
(
ResultCode
.
PARAMS_ERROR
.
getCode
(),
"保单不存在, policyNo: "
+
request
.
getPolicyNo
());
}
...
...
@@ -789,7 +837,12 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
commission
.
setPolicyNo
(
null
);
}
// 关联预计来佣信息
getCommissionExpectedBizIdBatch
(
request
,
policyNoSet
,
commission
);
CommissionExpected
expected
=
getCommissionExpectedBizIdBatch
(
request
,
policyNoSet
,
commission
);
if
(
expected
!=
null
)
{
// 本次入账比例
commission
.
setCurrentCommissionRatio
(
calculateCurrentCommissionRatio
(
commission
.
getPremium
(),
commission
.
getAmount
(),
commission
.
getCurrency
(),
commission
.
getExchangeRate
(),
expected
));
}
commissionList
.
add
(
commission
);
}
...
...
@@ -814,7 +867,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
return
commissionList
;
}
private
voi
d
getCommissionExpectedBizIdBatch
(
CommissionAddRequest
request
,
Set
<
String
>
policyNoSet
,
Commission
commission
)
{
private
CommissionExpecte
d
getCommissionExpectedBizIdBatch
(
CommissionAddRequest
request
,
Set
<
String
>
policyNoSet
,
Commission
commission
)
{
CommissionExpected
expected
=
null
;
if
(
"R"
.
equals
(
request
.
getCommissionBizType
()))
{
// 查询预计入账信息
...
...
@@ -857,6 +910,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
commission
.
setRemark
(
"未查询到预计来佣记录"
);
commission
.
setStatus
(
CommissionStatusEnum
.
MATCH_FAILED
.
getItemValue
());
}
return
expected
;
}
private
void
validateAddCommissionBatch
(
List
<
CommissionAddRequest
>
customerAddRequestList
)
{
...
...
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