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
3e802284
Commit
3e802284
authored
Jan 07, 2026
by
jianan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
前端对接问题修复77
parent
74dda06b
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
76 additions
and
43 deletions
+76
-43
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiFortuneController.java
+1
-1
yd-csf-service/src/main/java/com/yd/csf/service/component/CommissionAsyncService.java
+4
-3
yd-csf-service/src/main/java/com/yd/csf/service/dto/CommissionUpdateRequest.java
+1
-1
yd-csf-service/src/main/java/com/yd/csf/service/model/Commission.java
+5
-0
yd-csf-service/src/main/java/com/yd/csf/service/model/Fortune.java
+5
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/CommissionExpectedServiceImpl.java
+12
-1
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/CommissionServiceImpl.java
+29
-31
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/FortuneServiceImpl.java
+4
-2
yd-csf-service/src/main/java/com/yd/csf/service/vo/CommissionExpectedVO.java
+5
-2
yd-csf-service/src/main/java/com/yd/csf/service/vo/FortuneVO.java
+6
-0
yd-csf-service/src/main/resources/mappers/CommissionMapper.xml
+2
-1
yd-csf-service/src/main/resources/mappers/FortuneMapper.xml
+2
-1
No files found.
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiFortuneController.java
View file @
3e802284
...
...
@@ -408,7 +408,7 @@ public class ApiFortuneController {
@Operation
(
summary
=
"更新保单发佣信息(检核操作)"
)
public
Result
<
Boolean
>
updateFortune
(
@RequestBody
FortuneUpdateRequest
fortuneUpdateRequest
)
{
if
(
fortuneUpdateRequest
==
null
||
fortuneUpdateRequest
.
getFortuneBizId
()
==
null
)
{
return
Result
.
fail
(
ErrorCode
.
PARAMS_ERROR
.
getCode
(),
ErrorCode
.
PARAMS_ERROR
.
getMessage
()
);
return
Result
.
fail
(
ErrorCode
.
PARAMS_ERROR
.
getCode
(),
"fortuneBizId不能为空"
);
}
return
Result
.
success
(
fortuneService
.
updateFortune
(
fortuneUpdateRequest
));
}
...
...
yd-csf-service/src/main/java/com/yd/csf/service/component/CommissionAsyncService.java
View file @
3e802284
...
...
@@ -15,6 +15,7 @@ import com.yd.csf.service.service.CommissionExpectedService;
import
com.yd.csf.service.service.CommissionService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
...
...
@@ -199,7 +200,7 @@ public class CommissionAsyncService {
}
else
{
paidRatio
=
paidRatio
.
add
(
item
.
getCurrentCommissionRatio
());
}
paidAmount
=
paidAmount
.
add
(
item
.
getAmount
());
paidAmount
=
paidAmount
.
add
(
item
.
get
Hkd
Amount
());
}
// 更新预计来佣已入账金额、已入账比例
...
...
@@ -295,7 +296,7 @@ public class CommissionAsyncService {
String
loginUserId
=
currentLoginUser
.
getId
().
toString
();
// 计算比对状态
if
(
commission
.
getAmount
().
compareTo
(
commissionExpected
.
getAmount
())
==
0
)
{
if
(
commission
.
getAmount
().
compareTo
(
commissionExpected
.
getAmount
())
==
0
&&
ObjectUtils
.
equals
(
commission
.
getCurrency
(),
commissionExpected
.
getCurrency
())
)
{
// 等于预计金额时,来佣设置为比对成功
commissionService
.
lambdaUpdate
()
.
set
(
Commission:
:
getStatus
,
CommissionStatusEnum
.
COMPARE_SUCCESS
.
getItemValue
())
...
...
@@ -369,7 +370,7 @@ public class CommissionAsyncService {
BigDecimal
paidAmount
=
BigDecimal
.
ZERO
;
for
(
Commission
item
:
existingCommissions
)
{
paidRatio
=
paidRatio
.
add
(
item
.
getCurrentCommissionRatio
());
paidAmount
=
paidAmount
.
add
(
item
.
getAmount
());
paidAmount
=
paidAmount
.
add
(
item
.
get
Hkd
Amount
());
}
// 更新预计来佣已入账金额、已入账比例
...
...
yd-csf-service/src/main/java/com/yd/csf/service/dto/CommissionUpdateRequest.java
View file @
3e802284
...
...
@@ -89,7 +89,7 @@ public class CommissionUpdateRequest implements Serializable {
* 结算汇率
*/
@Schema
(
description
=
"结算汇率"
)
private
String
exchangeRate
;
private
BigDecimal
exchangeRate
;
/**
* 入账日期
...
...
yd-csf-service/src/main/java/com/yd/csf/service/model/Commission.java
View file @
3e802284
...
...
@@ -114,6 +114,11 @@ public class Commission implements Serializable {
private
String
exchangeRate
;
/**
* 来佣金额(港币)
*/
private
BigDecimal
hkdAmount
;
/**
* 当前来佣比例
*/
private
BigDecimal
currentCommissionRatio
;
...
...
yd-csf-service/src/main/java/com/yd/csf/service/model/Fortune.java
View file @
3e802284
...
...
@@ -134,6 +134,11 @@ public class Fortune implements Serializable {
private
BigDecimal
currentPaymentAmount
;
/**
* 本期出账比例
*/
private
BigDecimal
currentPaymentRatio
;
/**
* 佣金发放状态 0=待出账 1=可出账 2=已出账
*/
private
String
status
;
...
...
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/CommissionExpectedServiceImpl.java
View file @
3e802284
...
...
@@ -261,6 +261,9 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
for
(
CommissionExpectedAddDto
addDto
:
addDtoList
)
{
CommissionExpected
commissionExpected
=
new
CommissionExpected
();
BeanUtils
.
copyProperties
(
addDto
,
commissionExpected
);
// 默认已入账金额为 0
commissionExpected
.
setPaidAmount
(
BigDecimal
.
ZERO
);
commissionExpected
.
setPaidRatio
(
BigDecimal
.
ZERO
);
// 校验参数
validCommissionExpected
(
commissionExpected
,
true
);
// 结算汇率初始值为 1
...
...
@@ -285,7 +288,10 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
commissionExpected
.
setInsuranceCompanyBizId
(
policy
.
getInsuranceCompanyBizId
());
commissionExpected
.
setProductLaunchBizId
(
policy
.
getProductLaunchBizId
());
}
else
{
commissionExpected
.
setExpectedAmount
(
addDto
.
getAmount
());
BigDecimal
expectedAmount
=
addDto
.
getAmount
()
.
multiply
(
commissionExpected
.
getDefaultExchangeRate
())
.
divide
(
BigDecimal
.
valueOf
(
100
),
4
,
RoundingMode
.
HALF_UP
);
commissionExpected
.
setExpectedAmount
(
expectedAmount
);
}
if
(
StringUtils
.
isBlank
(
addDto
.
getCommissionExpectedBizId
()))
{
...
...
@@ -334,6 +340,11 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
if
(
StringUtils
.
isBlank
(
request
.
getCommissionName
()))
{
throw
new
BusinessException
(
ResultCode
.
PARAMS_ERROR
.
getCode
(),
"入账项目名称不能为空"
);
}
if
(
"R"
.
equals
(
request
.
getCommissionBizType
()))
{
if
(
request
.
getCommissionRatio
()
==
null
)
{
throw
new
BusinessException
(
ResultCode
.
PARAMS_ERROR
.
getCode
(),
"关联保单应收单,佣金比例不能为空"
);
}
}
}
}
...
...
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/CommissionServiceImpl.java
View file @
3e802284
...
...
@@ -298,11 +298,8 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
}
}
BigDecimal
amount
;
BigDecimal
requestAmount
=
commissionUpdateRequest
.
getAmount
();
if
(
"R"
.
equals
(
commissionUpdateRequest
.
getCommissionBizType
()))
{
amount
=
commission
.
getAmount
();
// 关联应收单,计算当前来佣比例
BigDecimal
currentCommissionRatio
=
this
.
calculateCurrentCommissionRatio
(
commission
.
getPremium
(),
...
...
@@ -320,8 +317,12 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
if
(
commissionExpected
==
null
)
{
throw
new
BusinessException
(
ResultCode
.
NULL_ERROR
.
getCode
(),
"未找到预计来佣记录"
);
}
amount
=
commissionExpected
.
getAmount
();
}
// 计算来佣金额(港币)
BigDecimal
hkdAmount
=
requestAmount
.
multiply
(
commissionUpdateRequest
.
getExchangeRate
())
.
divide
(
BigDecimal
.
valueOf
(
100
),
4
,
RoundingMode
.
HALF_UP
);
commission
.
setHkdAmount
(
hkdAmount
);
// 获取当前登录用户
AuthUserDto
currentLoginUser
=
SecurityUtil
.
getCurrentLoginUser
();
...
...
@@ -337,25 +338,22 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
// 执行更新操作(这个方法将在当前事务中执行)
this
.
updateById
(
commission
);
// 没改金额,则不比对
if
(
amount
!=
null
&&
amount
.
compareTo
(
requestAmount
)
!=
0
)
{
// 2. 注册事务同步器,在主事务提交后执行比对
TransactionSynchronizationManager
.
registerSynchronization
(
new
TransactionSynchronization
()
{
@Override
public
void
afterCommit
()
{
try
{
// 重新查询最新的数据,获取已提交的数据
commissionAsyncService
.
commissionCompare
(
commission
);
}
catch
(
Exception
e
)
{
// 比对失败不影响主事务,记录日志即可
log
.
error
(
"主事务提交后,比对操作执行失败,commissionBizId: {}"
,
commissionUpdateRequest
.
getCommissionBizId
(),
e
);
}
// 2. 新事务,比对
TransactionSynchronizationManager
.
registerSynchronization
(
new
TransactionSynchronization
()
{
@Override
public
void
afterCommit
()
{
try
{
// 重新查询最新的数据,获取已提交的数据
commissionAsyncService
.
commissionCompare
(
commission
);
}
catch
(
Exception
e
)
{
// 比对失败不影响主事务,记录日志即可
log
.
error
(
"主事务提交后,比对操作执行失败,commissionBizId: {}"
,
commissionUpdateRequest
.
getCommissionBizId
(),
e
);
}
}
);
}
}
);
return
true
;
}
...
...
@@ -366,14 +364,14 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
log
.
error
(
"来佣业务id不能为空:{}"
,
commissionUpdateRequest
.
getCommissionBizId
());
throw
new
BusinessException
(
ResultCode
.
NULL_ERROR
.
getCode
(),
"来佣业务id不能为空"
);
}
//
if (ObjectUtils.isEmpty(commissionUpdateRequest.getAmount())) {
//
log.error("当前入账金额不能为空,来佣业务id:{}", commissionUpdateRequest.getCommissionBizId());
// throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "当前
入账金额不能为空");
//
}
//
if (ObjectUtils.isEmpty(commissionUpdateRequest.getExchangeRate())) {
//
log.error("当前结算汇率不能为空,来佣业务id:{}", commissionUpdateRequest.getCommissionBizId());
// throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "当前
结算汇率不能为空");
//
}
if
(
ObjectUtils
.
isEmpty
(
commissionUpdateRequest
.
getAmount
()))
{
log
.
error
(
"当前入账金额不能为空,来佣业务id:{}"
,
commissionUpdateRequest
.
getCommissionBizId
());
throw
new
BusinessException
(
ResultCode
.
NULL_ERROR
.
getCode
(),
"
入账金额不能为空"
);
}
if
(
ObjectUtils
.
isEmpty
(
commissionUpdateRequest
.
getExchangeRate
()))
{
log
.
error
(
"当前结算汇率不能为空,来佣业务id:{}"
,
commissionUpdateRequest
.
getCommissionBizId
());
throw
new
BusinessException
(
ResultCode
.
NULL_ERROR
.
getCode
(),
"
结算汇率不能为空"
);
}
}
...
...
@@ -670,7 +668,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
,
String
exchangeRate
)
{
public
BigDecimal
calculateCurrentCommissionRatio
(
String
premium
,
BigDecimal
amount
,
BigDecimal
exchangeRate
)
{
if
(
ObjectUtils
.
isEmpty
(
premium
))
{
throw
new
BusinessException
(
ResultCode
.
NULL_ERROR
.
getCode
(),
"保单保费不能为空"
);
}
...
...
@@ -682,7 +680,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
}
// 当前来佣比例=当前入账金额/结算汇率/保费 * 100
return
amount
.
divide
(
new
BigDecimal
(
premium
),
4
,
RoundingMode
.
HALF_UP
)
.
divide
(
new
BigDecimal
(
exchangeRate
)
,
4
,
RoundingMode
.
HALF_UP
)
.
divide
(
exchangeRate
,
4
,
RoundingMode
.
HALF_UP
)
.
multiply
(
new
BigDecimal
(
100
));
}
...
...
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/FortuneServiceImpl.java
View file @
3e802284
...
...
@@ -215,7 +215,7 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
// 如果传入了金额
if
(
currentPaymentAmount
!=
null
)
{
splitFortune
(
fortune
,
currentPaymentAmount
,
loginUserId
,
fortuneUpdateRequest
);
splitFortune
(
fortune
,
currentPaymentAmount
,
expectedFortune
,
loginUserId
,
fortuneUpdateRequest
);
}
else
{
// 如果未传入金额,仅更新预计出账状态为已出帐
expectedFortuneService
.
lambdaUpdate
()
...
...
@@ -239,7 +239,7 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
* 拆分发放(按本次发放金额拆)
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
splitFortune
(
Fortune
main
,
BigDecimal
currentPaymentAmount
,
String
loginUserId
,
FortuneUpdateRequest
fortuneUpdateRequest
)
{
public
void
splitFortune
(
Fortune
main
,
BigDecimal
currentPaymentAmount
,
ExpectedFortune
expectedFortune
,
String
loginUserId
,
FortuneUpdateRequest
fortuneUpdateRequest
)
{
if
(
currentPaymentAmount
==
null
||
currentPaymentAmount
.
compareTo
(
BigDecimal
.
ZERO
)
<=
0
)
throw
new
BusinessException
(
"本次发放金额必须大于0"
);
...
...
@@ -252,6 +252,7 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
// 1. 更新主行 = 本次发放金额
main
.
setCurrentPaymentAmount
(
currentPaymentAmount
);
main
.
setCurrentPaymentRatio
(
currentPaymentAmount
.
divide
(
expectedFortune
.
getAmount
(),
4
,
RoundingMode
.
HALF_UP
));
main
.
setStatus
(
FortuneStatusEnum
.
CHECKED
.
getItemValue
());
main
.
setUpdaterId
(
loginUserId
);
main
.
setUpdateTime
(
new
Date
());
...
...
@@ -268,6 +269,7 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
BeanUtils
.
copyProperties
(
main
,
part
,
"id"
,
"fortuneBizId"
,
"currentPaymentAmount"
,
"status"
,
"isPart"
,
"payoutDate"
);
part
.
setFortuneBizId
(
RandomStringGenerator
.
generateBizId16
(
CommonEnum
.
UID_TYPE_FORTUNE
.
getCode
()));
part
.
setCurrentPaymentAmount
(
leftAmount
);
part
.
setCurrentPaymentRatio
(
leftAmount
.
divide
(
expectedFortune
.
getAmount
(),
4
,
RoundingMode
.
HALF_UP
));
part
.
setStatus
(
FortuneStatusEnum
.
WAIT
.
getItemValue
());
part
.
setIsPart
(
1
);
part
.
setPayoutDate
(
LocalDate
.
now
().
plusMonths
(
1
));
// 次月
...
...
yd-csf-service/src/main/java/com/yd/csf/service/vo/CommissionExpectedVO.java
View file @
3e802284
...
...
@@ -250,11 +250,14 @@ public class CommissionExpectedVO implements Serializable {
commissionVO
.
setPaidAmount
(
paidAmount1
);
commissionVO
.
setPendingAmount
(
commissionExpected
.
getExpectedAmount
().
subtract
(
paidAmount1
));
}
}
else
if
(
commissionExpected
.
getAmount
()
!=
null
)
{
return
commissionVO
;
}
if
(
commissionExpected
.
getAmount
()
!=
null
)
{
commissionVO
.
setPaidAmount
(
paidAmount1
);
commissionVO
.
setPendingAmount
(
commissionExpected
.
getAmount
().
subtract
(
paidAmount1
));
}
return
commissionVO
;
}
return
commissionVO
;
}
}
yd-csf-service/src/main/java/com/yd/csf/service/vo/FortuneVO.java
View file @
3e802284
...
...
@@ -173,6 +173,12 @@ public class FortuneVO implements Serializable {
private
BigDecimal
currentPaymentAmount
;
/**
* 本期出账比例
*/
@Schema
(
description
=
"本期出账比例"
)
private
BigDecimal
currentPaymentRatio
;
/**
* 剩余出账比例 剩余出账金额/应出账金额
*/
@Schema
(
description
=
"剩余出账比例 剩余出账金额/应出账金额"
)
...
...
yd-csf-service/src/main/resources/mappers/CommissionMapper.xml
View file @
3e802284
...
...
@@ -25,6 +25,7 @@
<result
property=
"amount"
column=
"amount"
/>
<result
property=
"currency"
column=
"currency"
/>
<result
property=
"commissionDate"
column=
"commission_date"
/>
<result
property=
"hkdAmount"
column=
"hkd_amount"
/>
<result
property=
"currentCommissionRatio"
column=
"current_commission_ratio"
/>
<result
property=
"commissionExpectedBizId"
column=
"commission_expected_biz_id"
/>
<result
property=
"status"
column=
"status"
/>
...
...
@@ -42,7 +43,7 @@
insurance_company_biz_id,product_launch_biz_id,
reconciliation_company,reconciliation_company_code,reconciliation_company_biz_id,commission_period,
total_period,commission_name,commission_type,exchange_rate,amount,currency,
commission_date,current_commission_ratio,commission_expected_biz_id,
commission_date,
hkd_amount,
current_commission_ratio,commission_expected_biz_id,
status,status_desc,remark,is_deleted,creator_id,
updater_id,create_time,update_time
</sql>
...
...
yd-csf-service/src/main/resources/mappers/FortuneMapper.xml
View file @
3e802284
...
...
@@ -26,6 +26,7 @@
<result
property=
"amount"
column=
"amount"
/>
<result
property=
"currency"
column=
"currency"
/>
<result
property=
"currentPaymentAmount"
column=
"current_payment_amount"
/>
<result
property=
"currentPaymentRatio"
column=
"current_payment_ratio"
/>
<result
property=
"status"
column=
"status"
/>
<result
property=
"payoutDate"
column=
"payout_date"
/>
<result
property=
"actualPayoutDate"
column=
"actual_payout_date"
/>
...
...
@@ -48,7 +49,7 @@
id,fortune_biz_id,expected_fortune_biz_id,reconciliation_year_month,fortune_biz_type,batch_biz_id,
commission_biz_id,commission_expected_biz_id,policy_no,fortune_period,fortune_total_period,broker_biz_id,
team_biz_id,grade_commission_rate,share_rate,fortune_name,fortune_type,is_part,
amount,currency,current_payment_amount,status,payout_date,actual_payout_date,is_tax,
amount,currency,current_payment_amount,
current_payment_ratio,
status,payout_date,actual_payout_date,is_tax,
tax_amount,net_amount,salary_biz_id,base_rule_biz_id,settlement_biz_id,
calculation_formula,remark,is_deleted,creator_id,updater_id,
create_time,update_time
...
...
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