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
6fbf4835
Commit
6fbf4835
authored
Jan 04, 2026
by
jianan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
前端对接问题修复34
parent
7c48d5dc
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
48 additions
and
182 deletions
+48
-182
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiCommissionController.java
+0
-16
yd-csf-service/src/main/java/com/yd/csf/service/service/CommissionService.java
+0
-6
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/CommissionServiceImpl.java
+48
-160
No files found.
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiCommissionController.java
View file @
6fbf4835
...
...
@@ -232,22 +232,6 @@ public class ApiCommissionController {
}
/**
* 新增入账
*
* @param customerAddRequest
* @param request
* @return
*/
@Operation
(
summary
=
"新增入账"
)
@PostMapping
(
"/add"
)
public
Result
<
Boolean
>
addCommission
(
@RequestBody
CommissionAddRequest
customerAddRequest
,
HttpServletRequest
request
)
{
if
(
customerAddRequest
==
null
||
StringUtils
.
isBlank
(
customerAddRequest
.
getPolicyNo
()))
{
return
Result
.
fail
(
ResultCode
.
PARAMS_ERROR
.
getCode
(),
"保单号不能为空"
);
}
return
Result
.
success
(
commissionService
.
addCommission
(
customerAddRequest
));
}
/**
* 批量新增入账
*
* @param customerAddRequestList
...
...
yd-csf-service/src/main/java/com/yd/csf/service/service/CommissionService.java
View file @
6fbf4835
...
...
@@ -28,12 +28,8 @@ public interface CommissionService extends IService<Commission> {
Boolean
generateFortune
(
GenerateFortuneRequest
generateFortuneRequest
);
Boolean
addCommission
(
CommissionAddRequest
commissionAddRequest
);
Commission
getByCommissionBizId
(
String
commissionBizId
);
void
compareWithExpected
(
String
premium
,
Commission
commission
,
CommissionExpected
expected
);
List
<
Commission
>
queryList
(
CommissionDto
dto
);
List
<
CommissionBindPolicyBrokerDto
>
queryCommissionBindPolicyBrokerList
(
CommissionDto
dto
);
...
...
@@ -42,8 +38,6 @@ public interface CommissionService extends IService<Commission> {
CommissionExpected
queryByCommission
(
String
policyNo
,
String
commissionName
,
Integer
commissionPeriod
,
String
currency
,
String
premium
);
void
calculatePaidAmountByCommissionList
(
Commission
commission
,
CommissionExpected
one
);
void
validateCommissionUpdateRequest
(
CommissionUpdateRequest
commissionUpdateRequest
);
void
saveUpdateCommissionRecord
(
Commission
commission
,
CommissionUpdateRequest
commissionUpdateRequest
,
AuthUserDto
currentLoginUser
);
...
...
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/CommissionServiceImpl.java
View file @
6fbf4835
...
...
@@ -15,13 +15,10 @@ import com.yd.common.exception.BusinessException;
import
com.yd.common.utils.RandomStringGenerator
;
import
com.yd.csf.service.component.CommissionAsyncService
;
import
com.yd.csf.service.dto.*
;
import
com.yd.csf.service.enums.CommissionExpectedStatusEnum
;
import
com.yd.csf.service.enums.CommissionStatusEnum
;
import
com.yd.csf.service.enums.FortuneStatusEnum
;
import
com.yd.csf.service.model.*
;
import
com.yd.csf.service.service.*
;
import
com.yd.csf.service.dao.CommissionMapper
;
import
com.yd.csf.service.vo.CommissionExpectedVO
;
import
com.yd.csf.service.vo.CommissionStatisticsVO
;
import
com.yd.csf.service.vo.CommissionVO
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -39,8 +36,6 @@ import org.springframework.transaction.support.TransactionTemplate;
import
javax.annotation.Resource
;
import
java.math.BigDecimal
;
import
java.math.RoundingMode
;
import
java.time.LocalDate
;
import
java.time.format.DateTimeFormatter
;
import
java.util.*
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
...
...
@@ -122,7 +117,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
return
commissionVOPage
;
}
// 关联查询保单信息
//
1.
关联查询保单信息
Set
<
String
>
policyNoSet
=
commissionList
.
stream
().
map
(
Commission:
:
getPolicyNo
).
collect
(
Collectors
.
toSet
());
QueryWrapper
<
Policy
>
queryWrapper
=
new
QueryWrapper
<
Policy
>();
queryWrapper
.
select
(
"policy_no"
,
"payment_premium"
,
"product_name"
,
"insurance_company"
,
"reconciliation_company"
);
...
...
@@ -130,6 +125,14 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
List
<
Policy
>
policyList
=
policyService
.
list
(
queryWrapper
);
Map
<
String
,
Policy
>
policyMap
=
policyList
.
stream
().
collect
(
Collectors
.
toMap
(
Policy:
:
getPolicyNo
,
a
->
a
,
(
oldValue
,
newValue
)
->
newValue
));
// 2.关联查询预计入账信息
Set
<
String
>
commissionExpectedBizIdSet
=
commissionList
.
stream
().
map
(
Commission:
:
getCommissionExpectedBizId
).
collect
(
Collectors
.
toSet
());
List
<
CommissionExpected
>
commissionExpectedList
=
commissionExpectedService
.
lambdaQuery
()
.
select
(
CommissionExpected:
:
getCommissionExpectedBizId
,
CommissionExpected:
:
getReceivableNo
)
.
in
(
CommissionExpected:
:
getCommissionExpectedBizId
,
commissionExpectedBizIdSet
)
.
list
();
Map
<
String
,
CommissionExpected
>
commissionExpectedMap
=
commissionExpectedList
.
stream
().
collect
(
Collectors
.
toMap
(
CommissionExpected:
:
getCommissionExpectedBizId
,
a
->
a
,
(
oldValue
,
newValue
)
->
newValue
));
// 填充信息
List
<
CommissionVO
>
commissionVOList
=
commissionList
.
stream
().
map
(
commission
->
{
CommissionVO
commissionVO
=
CommissionVO
.
objToVo
(
commission
);
...
...
@@ -141,6 +144,11 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
commissionVO
.
setInsuranceCompany
(
policy
.
getInsuranceCompany
());
commissionVO
.
setReconciliationCompany
(
policy
.
getReconciliationCompany
());
}
CommissionExpected
commissionExpected
=
commissionExpectedMap
.
get
(
commission
.
getCommissionExpectedBizId
());
if
(
commissionExpected
!=
null
)
{
// 填充应收账款编号
commissionVO
.
setReceivableNo
(
commissionExpected
.
getReceivableNo
());
}
return
commissionVO
;
}).
collect
(
Collectors
.
toList
());
...
...
@@ -322,34 +330,6 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
return
one
;
}
/**
* 根据对应的所有来佣记录,统计已入账金额、已入账比例
*
* @param commission
* @param one
*/
@Override
public
void
calculatePaidAmountByCommissionList
(
Commission
commission
,
CommissionExpected
one
)
{
// 查询当前来佣对应的所有来佣记录
QueryWrapper
<
Commission
>
queryWrapperCommission
=
new
QueryWrapper
<>();
queryWrapperCommission
.
eq
(
"policy_no"
,
commission
.
getPolicyNo
());
queryWrapperCommission
.
eq
(
"commission_name"
,
commission
.
getCommissionName
());
queryWrapperCommission
.
eq
(
"commission_period"
,
commission
.
getCommissionPeriod
());
queryWrapperCommission
.
eq
(
"currency"
,
commission
.
getCurrency
());
List
<
Commission
>
commissionList
=
this
.
list
(
queryWrapperCommission
);
// 统计已入账金额、已入账比例
BigDecimal
paidRatio
=
BigDecimal
.
ZERO
;
BigDecimal
paidAmount
=
BigDecimal
.
ZERO
;
for
(
Commission
commission1
:
commissionList
)
{
if
(
commission1
.
getStatus
().
equals
(
CommissionStatusEnum
.
COMPARE_SUCCESS
.
getItemValue
()))
{
paidRatio
=
paidRatio
.
add
(
commission1
.
getCurrentCommissionRatio
());
paidAmount
=
paidAmount
.
add
(
commission1
.
getAmount
());
one
.
setPaidAmount
(
paidAmount
);
one
.
setPaidRatio
(
paidRatio
);
}
}
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Boolean
generateFortune
(
GenerateFortuneRequest
generateFortuneRequest
)
{
...
...
@@ -532,122 +512,10 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Boolean
addCommission
(
CommissionAddRequest
commissionAddRequest
)
{
// 校验来佣所属保单是否存在
String
policyNo
=
commissionAddRequest
.
getPolicyNo
();
// 校验来佣所属保单跟进是否存在
PolicyFollow
policyFollow
=
policyFollowService
.
getOne
(
new
QueryWrapper
<
PolicyFollow
>().
eq
(
"policy_no"
,
policyNo
));
if
(
policyFollow
==
null
)
{
throw
new
BusinessException
(
ResultCode
.
NULL_ERROR
.
getCode
(),
"新单跟进中不存在该保单号,请先创建新单跟进"
);
}
// 获取当前登录用户
AuthUserDto
currentLoginUser
=
SecurityUtil
.
getCurrentLoginUser
();
String
loginUserId
=
currentLoginUser
.
getId
().
toString
();
Commission
commission
=
new
Commission
();
BeanUtils
.
copyProperties
(
commissionAddRequest
,
commission
);
// 生成新单编号
String
commissionBizId
=
RandomStringGenerator
.
generateBizId16
(
CommonEnum
.
UID_TYPE_COMMISSION
.
getCode
());
commission
.
setCommissionBizId
(
commissionBizId
);
// 计算当前来佣比例=当前入账金额/结算汇率/保费
BigDecimal
currentCommissionRatio
=
commissionAddRequest
.
getAmount
()
.
divide
(
policyFollow
.
getPaymentPremium
(),
4
,
RoundingMode
.
HALF_UP
)
.
divide
(
new
BigDecimal
(
commissionAddRequest
.
getExchangeRate
()),
4
,
RoundingMode
.
HALF_UP
)
.
multiply
(
new
BigDecimal
(
100
));
commission
.
setCurrentCommissionRatio
(
currentCommissionRatio
);
// 关联业务id
commission
.
setReconciliationCompany
(
policyFollow
.
getReconciliationCompany
());
commission
.
setReconciliationCompanyBizId
(
policyFollow
.
getReconciliationCompanyBizId
());
commission
.
setProductLaunchBizId
(
policyFollow
.
getProductLaunchBizId
());
commission
.
setInsuranceCompanyBizId
(
policyFollow
.
getInsuranceCompanyBizId
());
commission
.
setPremium
(
Convert
.
toStr
(
policyFollow
.
getPaymentPremium
()));
commission
.
setCreatorId
(
loginUserId
);
commission
.
setCreateTime
(
new
Date
());
commission
.
setUpdaterId
(
loginUserId
);
commission
.
setUpdateTime
(
new
Date
());
// 保存来佣
this
.
save
(
commission
);
// 注册事务同步器,在主事务提交后执行比对
TransactionSynchronizationManager
.
registerSynchronization
(
new
TransactionSynchronization
()
{
@Override
public
void
afterCommit
()
{
try
{
// 重新查询最新的数据,获取已提交的数据
commissionAsyncService
.
commissionCompare
(
commission
);
}
catch
(
Exception
e
)
{
// 比对失败不影响主事务,记录日志即可
log
.
error
(
"主事务提交后,比对操作执行失败,commissionBizId: {}"
,
commissionBizId
,
e
);
}
}
}
);
return
true
;
}
@Override
public
Commission
getByCommissionBizId
(
String
commissionBizId
)
{
return
this
.
getOne
(
new
QueryWrapper
<
Commission
>().
eq
(
"commission_biz_id"
,
commissionBizId
));
}
/**
* 比对时,当前来佣比例=当前入账金额/结算汇率/保费 和预计来佣的来佣比例对比
*
* @param commission
* @param expected
*/
@Override
public
void
compareWithExpected
(
String
premium
,
Commission
commission
,
CommissionExpected
expected
)
{
if
(
expected
!=
null
)
{
if
(
ObjectUtils
.
isEmpty
(
expected
.
getCommissionRatio
()))
{
log
.
error
(
"预计来佣的来佣比例不能为空,预计来佣业务id:{}"
,
expected
.
getCommissionExpectedBizId
());
throw
new
BusinessException
(
ResultCode
.
NULL_ERROR
.
getCode
(),
"预计来佣的来佣比例不能为空"
);
}
// 当前来佣比例=当前入账金额/结算汇率/保费 * 100
BigDecimal
currentCommissionRatio
=
commission
.
getAmount
()
.
divide
(
new
BigDecimal
(
premium
),
4
,
RoundingMode
.
HALF_UP
)
.
divide
(
new
BigDecimal
(
commission
.
getExchangeRate
()),
4
,
RoundingMode
.
HALF_UP
)
.
multiply
(
new
BigDecimal
(
100
))
;
// 预计来佣比例
BigDecimal
expectedCommissionRatio
=
expected
.
getCommissionRatio
();
if
(
currentCommissionRatio
.
compareTo
(
expectedCommissionRatio
)
==
0
)
{
// 一致,来佣状态设置为 比对成功
commission
.
setStatus
(
CommissionStatusEnum
.
COMPARE_SUCCESS
.
getItemValue
());
// 预计来佣的状态设置为 已来佣
expected
.
setStatus
(
CommissionExpectedStatusEnum
.
COMPARED
.
getItemValue
());
}
else
{
// 不一致,来佣状态设置为 比对失败
commission
.
setStatus
(
CommissionStatusEnum
.
COMPARE_FAIL
.
getItemValue
());
expected
.
setStatus
(
CommissionExpectedStatusEnum
.
PARTIAL
.
getItemValue
());
}
// 设置来佣相关字段
commission
.
setCommissionExpectedBizId
(
expected
.
getCommissionExpectedBizId
());
// commission.setExpectedAmount(expectedAmount.setScale(2, RoundingMode.HALF_UP));
// commission.setPaidAmount(paidAmount.setScale(2, RoundingMode.HALF_UP));
// // 待入账金额 = 预计来佣总金额 - 已入账金额
// commission.setPendingAmount(expectedAmount.subtract(paidAmount).setScale(2, RoundingMode.HALF_UP));
// 当前来佣比例
commission
.
setCurrentCommissionRatio
(
currentCommissionRatio
);
// 当期已入账来佣比例 = 当前来佣比例 + 已入账来佣比例
// commission.setPeriodPaidRatio(currentCommissionRatio.add(ObjectUtils.defaultIfNull(expected.getPaidRatio(), BigDecimal.ZERO)).setScale(2, RoundingMode.HALF_UP));
// // 当期剩余来佣比例 = 预计来佣来佣比例 - 当期已入账来佣比例
// commission.setPeriodPendingRatio(expectedCommissionRatio.subtract(commission.getPeriodPaidRatio()).setScale(2, RoundingMode.HALF_UP));
// 保存比对记录
// saveCompareRecord(commission, expected);
}
}
public
BigDecimal
calculateCurrentCommissionRatio
(
BigDecimal
amount
,
String
premium
,
String
exchangeRate
)
{
if
(
ObjectUtils
.
isEmpty
(
premium
))
{
throw
new
BusinessException
(
ResultCode
.
NULL_ERROR
.
getCode
(),
"保费不能为空"
);
...
...
@@ -706,12 +574,21 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
}
Set
<
String
>
policyNoSet
=
customerAddRequestList
.
stream
().
map
(
CommissionAddRequest:
:
getPolicyNo
).
collect
(
Collectors
.
toSet
());
Map
<
String
,
PolicyFollow
>
policyFollowMap
=
null
;
if
(!
CollectionUtils
.
isEmpty
(
policyNoSet
))
{
// 查询来佣所属保单跟进
List
<
PolicyFollow
>
policyFollowList
=
policyFollowService
.
list
(
new
QueryWrapper
<
PolicyFollow
>().
in
(
"policy_no"
,
policyNoSet
));
// policyFollowList 映射
policyFollowMap
=
policyFollowList
.
stream
().
collect
(
Collectors
.
toMap
(
PolicyFollow:
:
getPolicyNo
,
Function
.
identity
()));
// 关联查询保单信息、预计入账信息
Map
<
String
,
Policy
>
policyMap
=
new
HashMap
<>();
Map
<
String
,
CommissionExpected
>
commissionExpectedMap
=
new
HashMap
<>();
if
(
CollUtil
.
isNotEmpty
(
policyNoSet
))
{
// 查询保单信息
List
<
Policy
>
policyList
=
policyService
.
lambdaQuery
().
in
(
Policy:
:
getPolicyNo
,
policyNoSet
).
list
();
// 保单映射
policyMap
=
policyList
.
stream
().
collect
(
Collectors
.
toMap
(
Policy:
:
getPolicyNo
,
Function
.
identity
()));
// 查询预计入账信息
List
<
CommissionExpected
>
commissionExpectedList
=
commissionExpectedService
.
lambdaQuery
().
in
(
CommissionExpected:
:
getPolicyNo
,
policyNoSet
).
list
();
// 预计入账映射, 根据保单号、期数、入账名称、币种映射
commissionExpectedMap
=
commissionExpectedList
.
stream
()
.
collect
(
Collectors
.
toMap
(
key
->
key
.
getPolicyNo
()
+
"_"
+
key
.
getCommissionPeriod
()
+
"_"
+
key
.
getCommissionName
()
+
"_"
+
key
.
getCurrency
(),
Function
.
identity
()));
}
List
<
Commission
>
commissionList
=
new
ArrayList
<>();
...
...
@@ -721,14 +598,25 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
// 入账业务id
commission
.
setCommissionBizId
(
RandomStringGenerator
.
generateBizId16
(
CommonEnum
.
UID_TYPE_COMMISSION
.
getCode
()));
// 关联业务id
if
(
MapUtils
.
isNotEmpty
(
policyFollowMap
))
{
PolicyFollow
policyFollow
=
policyFollowMap
.
get
(
request
.
getPolicyNo
());
if
(
policyFollow
!=
null
)
{
commission
.
setReconciliationCompany
(
policyFollow
.
getReconciliationCompany
());
commission
.
setReconciliationCompanyBizId
(
policyFollow
.
getReconciliationCompanyBizId
());
commission
.
setProductLaunchBizId
(
policyFollow
.
getProductLaunchBizId
());
commission
.
setInsuranceCompanyBizId
(
policyFollow
.
getInsuranceCompanyBizId
());
commission
.
setPremium
(
Convert
.
toStr
(
policyFollow
.
getPaymentPremium
()));
if
(
MapUtils
.
isNotEmpty
(
policyMap
))
{
Policy
policy
=
policyMap
.
get
(
request
.
getPolicyNo
());
if
(
policy
!=
null
)
{
commission
.
setReconciliationCompany
(
policy
.
getReconciliationCompany
());
commission
.
setReconciliationCompanyBizId
(
policy
.
getReconciliationCompanyBizId
());
commission
.
setProductLaunchBizId
(
policy
.
getProductLaunchBizId
());
commission
.
setInsuranceCompanyBizId
(
policy
.
getInsuranceCompanyBizId
());
commission
.
setPremium
(
Convert
.
toStr
(
policy
.
getPaymentPremium
()));
}
}
// 关联预计来佣信息
if
(
MapUtils
.
isNotEmpty
(
commissionExpectedMap
))
{
CommissionExpected
expected
=
commissionExpectedMap
.
get
(
request
.
getPolicyNo
()
+
"_"
+
request
.
getCommissionPeriod
()
+
"_"
+
request
.
getCommissionName
()
+
"_"
+
request
.
getCurrency
());
if
(
expected
!=
null
)
{
commission
.
setCommissionExpectedBizId
(
expected
.
getCommissionExpectedBizId
());
}
else
{
log
.
warn
(
"新增入账:未查询到预计来佣记录, policyNo: {}, commissionPeriod: {}, commissionName: {}, currency: {}"
,
request
.
getPolicyNo
(),
request
.
getCommissionPeriod
(),
request
.
getCommissionName
(),
request
.
getCurrency
());
commission
.
setRemark
(
"未查询到预计来佣记录"
);
}
}
commissionList
.
add
(
commission
);
...
...
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