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
0707d9ed
Commit
0707d9ed
authored
Nov 21, 2025
by
jianan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新单跟进79
parent
632f1907
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
65 additions
and
37 deletions
+65
-37
yd-csf-service/src/main/java/com/yd/csf/service/enums/FortuneStatusEnum.java
+1
-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/CommissionServiceImpl.java
+57
-36
yd-csf-service/src/main/resources/mappers/FortuneMapper.xml
+2
-1
No files found.
yd-csf-service/src/main/java/com/yd/csf/service/enums/FortuneStatusEnum.java
View file @
0707d9ed
...
@@ -9,6 +9,7 @@ public enum FortuneStatusEnum {
...
@@ -9,6 +9,7 @@ public enum FortuneStatusEnum {
WAIT
(
"待出账"
,
"0"
),
WAIT
(
"待出账"
,
"0"
),
CAN_SEND
(
"可出账"
,
"1"
),
CAN_SEND
(
"可出账"
,
"1"
),
SENT
(
"已出账"
,
"2"
),
SENT
(
"已出账"
,
"2"
),
MATCH_FAIL
(
"未找到当前预计发佣对应的来佣"
,
"3"
),
;
;
//字典项标签(名称)
//字典项标签(名称)
...
...
yd-csf-service/src/main/java/com/yd/csf/service/model/Fortune.java
View file @
0707d9ed
...
@@ -31,6 +31,11 @@ public class Fortune implements Serializable {
...
@@ -31,6 +31,11 @@ public class Fortune implements Serializable {
private
String
fortuneBizId
;
private
String
fortuneBizId
;
/**
/**
* 来佣保单业务id
*/
private
String
commissionBizId
;
/**
* 保单号
* 保单号
*/
*/
private
String
policyNo
;
private
String
policyNo
;
...
...
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/CommissionServiceImpl.java
View file @
0707d9ed
...
@@ -52,6 +52,8 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
...
@@ -52,6 +52,8 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
private
PolicyService
policyService
;
private
PolicyService
policyService
;
@Resource
@Resource
private
CommissionExpectedService
commissionExpectedService
;
private
CommissionExpectedService
commissionExpectedService
;
@Resource
private
IExpectedFortuneService
iExpectedFortuneService
;
@Override
@Override
...
@@ -141,66 +143,65 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
...
@@ -141,66 +143,65 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Boolean
generateFortune
(
GenerateFortuneRequest
generateFortuneRequest
)
{
public
Boolean
generateFortune
(
GenerateFortuneRequest
generateFortuneRequest
)
{
List
<
String
>
commissionBizIdList
=
generateFortuneRequest
.
getCommissionBizIdList
();
List
<
String
>
commissionBizIdList
=
generateFortuneRequest
.
getCommissionBizIdList
();
// 1. 查询选中来佣记录
List
<
Commission
>
commissionList
=
this
.
list
(
new
QueryWrapper
<
Commission
>().
in
(
"commission_biz_id"
,
commissionBizIdList
));
List
<
Commission
>
commissionList
=
this
.
list
(
new
QueryWrapper
<
Commission
>().
in
(
"commission_biz_id"
,
commissionBizIdList
));
// 校验来佣记录状态
for
(
Commission
commission
:
commissionList
)
{
if
(
StringUtils
.
equals
(
commission
.
getStatus
(),
CommissionStatusEnum
.
WAIT
.
getItemValue
()))
{
throw
new
BusinessException
(
ResultCode
.
FAIL
.
getCode
(),
"来佣记录为未比对,不能生成出帐"
);
}
}
// 获取所有保单号
// 获取所有保单号
Set
<
String
>
policyNoSet
=
commissionList
.
stream
().
map
(
Commission:
:
getPolicyNo
).
collect
(
Collectors
.
toSet
());
Set
<
String
>
policyNoSet
=
commissionList
.
stream
().
map
(
Commission:
:
getPolicyNo
).
collect
(
Collectors
.
toSet
());
// 根据保单号查询所有发佣记录
// 2. 查询对应的预计发佣记录
QueryWrapper
<
ExpectedFortune
>
expectedFortuneQueryWrapper
=
new
QueryWrapper
<
ExpectedFortune
>().
in
(
"policy_no"
,
policyNoSet
);
List
<
ExpectedFortune
>
expectedFortuneList
=
iExpectedFortuneService
.
list
(
expectedFortuneQueryWrapper
);
if
(
CollectionUtils
.
isEmpty
(
expectedFortuneList
))
{
throw
new
BusinessException
(
ResultCode
.
NULL_ERROR
.
getCode
(),
"未找到该保单对应的预计发佣记录"
);
}
else
{
Set
<
String
>
expectedPolicyNoSet
=
expectedFortuneList
.
stream
().
map
(
ExpectedFortune:
:
getPolicyNo
).
collect
(
Collectors
.
toSet
());
// 获取没有预计发佣的保单号
Set
<
String
>
notExpectedPolicyNoSet
=
policyNoSet
.
stream
().
filter
(
policyNo
->
!
expectedPolicyNoSet
.
contains
(
policyNo
)).
collect
(
Collectors
.
toSet
());
if
(!
CollectionUtils
.
isEmpty
(
notExpectedPolicyNoSet
))
{
throw
new
BusinessException
(
ResultCode
.
FAIL
.
getCode
(),
"未找到以下保单对应的预计发佣记录:"
+
String
.
join
(
","
,
notExpectedPolicyNoSet
));
}
}
// 3. 根据保单号查询所有发佣记录
List
<
Fortune
>
fortuneList
=
fortuneService
.
list
(
new
QueryWrapper
<
Fortune
>().
in
(
"policy_no"
,
policyNoSet
));
List
<
Fortune
>
fortuneList
=
fortuneService
.
list
(
new
QueryWrapper
<
Fortune
>().
in
(
"policy_no"
,
policyNoSet
));
// 校验,如果有"可发放或已发并关账"的发佣记录,不能重复生成
//
4.
校验,如果有"可发放或已发并关账"的发佣记录,不能重复生成
for
(
Fortune
item
:
fortuneList
)
{
for
(
Fortune
item
:
fortuneList
)
{
if
(
StringUtils
.
equals
(
item
.
getStatus
(),
FortuneStatusEnum
.
CAN_SEND
.
getItemValue
())
||
if
(
StringUtils
.
equals
(
item
.
getStatus
(),
FortuneStatusEnum
.
CAN_SEND
.
getItemValue
())
||
StringUtils
.
equals
(
item
.
getStatus
(),
FortuneStatusEnum
.
SENT
.
getItemValue
()))
{
StringUtils
.
equals
(
item
.
getStatus
(),
FortuneStatusEnum
.
SENT
.
getItemValue
()))
{
throw
new
BusinessException
(
ResultCode
.
FAIL
.
getCode
(),
"该来佣记录已有出帐,不能
重复
生成"
);
throw
new
BusinessException
(
ResultCode
.
FAIL
.
getCode
(),
"该来佣记录已有出帐,不能生成"
);
}
}
}
}
// 1.查询所有保单号对应的保单跟进记录
// 5. 筛出来佣对应的预计发佣记录
List
<
PolicyFollow
>
policyFollowListList
=
policyFollowService
.
list
(
new
QueryWrapper
<
PolicyFollow
>().
in
(
"policy_no"
,
policyNoSet
));
List
<
ExpectedFortune
>
filteredExpectedFortuneList
=
expectedFortuneList
.
stream
()
.
filter
(
expectedFortune
->
commissionList
.
stream
()
// 2.根据保单号查询所有转介人
.
anyMatch
(
commission
->
StringUtils
.
equals
(
commission
.
getPolicyNo
(),
expectedFortune
.
getPolicyNo
())
List
<
PolicyBroker
>
brokerList
=
policyBrokerService
.
list
(
new
QueryWrapper
<
PolicyBroker
>().
in
(
"policy_no"
,
policyNoSet
));
&&
commission
.
getCommissionPeriod
().
equals
(
expectedFortune
.
getFortunePeriod
())))
if
(
CollUtil
.
isEmpty
(
brokerList
))
{
.
collect
(
Collectors
.
toList
());
throw
new
BusinessException
(
ResultCode
.
NULL_ERROR
.
getCode
(),
"该保单不存在转介人,请先配置转介人"
);
}
// 构建保单号到转介人的映射
Map
<
String
,
List
<
PolicyBroker
>>
brokerMap
=
brokerList
.
stream
().
collect
(
Collectors
.
groupingBy
(
PolicyBroker:
:
getPolicyNo
));
//
3
.删除旧的发佣记录
//
6
.删除旧的发佣记录
fortuneService
.
remove
(
new
QueryWrapper
<
Fortune
>().
in
(
"policy_no"
,
policyNoSet
));
fortuneService
.
remove
(
new
QueryWrapper
<
Fortune
>().
in
(
"policy_no"
,
policyNoSet
));
//
4. 构建
发佣记录
//
7. 构建实际的初始
发佣记录
List
<
Fortune
>
newFortuneList
=
new
ArrayList
<>();
List
<
Fortune
>
newFortuneList
=
new
ArrayList
<>();
for
(
PolicyFollow
policyFollow
:
policyFollowListList
)
{
for
(
ExpectedFortune
expectedFortune
:
filteredExpectedFortuneList
)
{
String
policyNo
=
policyFollow
.
getPolicyNo
();
List
<
PolicyBroker
>
policyBrokers
=
brokerMap
.
get
(
policyNo
);
if
(
CollectionUtils
.
isNotEmpty
(
policyBrokers
))
{
for
(
PolicyBroker
policyBroker
:
policyBrokers
)
{
for
(
Commission
commission
:
commissionList
)
{
Fortune
fortune
=
new
Fortune
();
Fortune
fortune
=
new
Fortune
();
BeanUtils
.
copyProperties
(
expectedFortune
,
fortune
);
fortune
.
setFortuneBizId
(
RandomStringGenerator
.
generateBizId16
(
CommonEnum
.
UID_TYPE_FORTUNE
.
getCode
()));
fortune
.
setFortuneBizId
(
RandomStringGenerator
.
generateBizId16
(
CommonEnum
.
UID_TYPE_FORTUNE
.
getCode
()));
fortune
.
setPolicyNo
(
policyNo
);
fortune
.
setBroker
(
policyBroker
.
getBrokerName
());
fortune
.
setStatus
(
FortuneStatusEnum
.
WAIT
.
getItemValue
());
fortune
.
setStatus
(
FortuneStatusEnum
.
WAIT
.
getItemValue
());
// 关联来佣业务ID
matchCommission
(
fortune
,
commissionList
);
fortune
.
setCreateTime
(
new
Date
());
fortune
.
setCreateTime
(
new
Date
());
fortune
.
setUpdateTime
(
new
Date
());
fortune
.
setUpdateTime
(
new
Date
());
newFortuneList
.
add
(
fortune
);
newFortuneList
.
add
(
fortune
);
}
}
}
// 8. 保存发佣记录
}
}
// 5. 保存发佣记录
if
(
CollUtil
.
isNotEmpty
(
newFortuneList
))
{
if
(
CollUtil
.
isNotEmpty
(
newFortuneList
))
{
boolean
saveSuccess
=
fortuneService
.
saveBatch
(
newFortuneList
);
boolean
saveSuccess
=
fortuneService
.
saveBatch
(
newFortuneList
);
if
(!
saveSuccess
)
{
if
(!
saveSuccess
)
{
...
@@ -210,6 +211,20 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
...
@@ -210,6 +211,20 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
return
true
;
return
true
;
}
}
private
void
matchCommission
(
Fortune
fortune
,
List
<
Commission
>
commissionList
)
{
for
(
Commission
commission
:
commissionList
)
{
if
(
StringUtils
.
equals
(
commission
.
getPolicyNo
(),
fortune
.
getPolicyNo
())
&&
commission
.
getCommissionPeriod
().
equals
(
fortune
.
getFortunePeriod
())
&&
commission
.
getCommissionName
().
equals
(
fortune
.
getFortuneName
())
)
{
fortune
.
setCommissionBizId
(
commission
.
getCommissionBizId
());
}
else
{
fortune
.
setStatus
(
FortuneStatusEnum
.
MATCH_FAIL
.
getItemValue
());
fortune
.
setRemark
(
"未找到当前预计发佣对应的来佣"
);
}
}
}
@Override
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Boolean
addCommission
(
CommissionAddRequest
commissionAddRequest
)
{
public
Boolean
addCommission
(
CommissionAddRequest
commissionAddRequest
)
{
...
@@ -301,10 +316,16 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
...
@@ -301,10 +316,16 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
public
CommissionStatisticsVO
getCommissionStatistics
(
List
<
Long
>
commissionIds
)
{
public
CommissionStatisticsVO
getCommissionStatistics
(
List
<
Long
>
commissionIds
)
{
// 自定义统计数据
// 自定义统计数据
CommissionStatisticsVO
commissionStatistics
=
baseMapper
.
getCommissionStatistics
(
commissionIds
);
CommissionStatisticsVO
commissionStatistics
=
baseMapper
.
getCommissionStatistics
(
commissionIds
);
BigDecimal
totalAmount
=
commissionStatistics
.
getTotalAmount
();
BigDecimal
totalPaidAmount
=
commissionStatistics
.
getTotalPaidAmount
();
// 计算待入账金额
// 计算待入账金额
commissionStatistics
.
setPendingPaidAmount
(
commissionStatistics
.
getTotalAmount
().
subtract
(
commissionStatistics
.
getTotalPaidAmount
()
));
commissionStatistics
.
setPendingPaidAmount
(
totalAmount
.
subtract
(
totalPaidAmount
));
// 计算已入账比例
// 计算已入账比例
BigDecimal
divided
=
commissionStatistics
.
getTotalPaidAmount
().
divide
(
commissionStatistics
.
getTotalAmount
(),
4
,
RoundingMode
.
HALF_UP
);
BigDecimal
divided
=
BigDecimal
.
ZERO
;
if
(
totalAmount
.
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
divided
=
totalPaidAmount
.
divide
(
totalAmount
,
4
,
RoundingMode
.
HALF_UP
);
}
// 格式化 %
// 格式化 %
commissionStatistics
.
setPaidAmountRatio
(
String
.
format
(
"%.2f%%"
,
divided
.
doubleValue
()
*
100
));
commissionStatistics
.
setPaidAmountRatio
(
String
.
format
(
"%.2f%%"
,
divided
.
doubleValue
()
*
100
));
...
...
yd-csf-service/src/main/resources/mappers/FortuneMapper.xml
View file @
0707d9ed
...
@@ -7,6 +7,7 @@
...
@@ -7,6 +7,7 @@
<resultMap
id=
"BaseResultMap"
type=
"com.yd.csf.service.model.Fortune"
>
<resultMap
id=
"BaseResultMap"
type=
"com.yd.csf.service.model.Fortune"
>
<id
property=
"id"
column=
"id"
/>
<id
property=
"id"
column=
"id"
/>
<result
property=
"fortuneBizId"
column=
"fortune_biz_id"
/>
<result
property=
"fortuneBizId"
column=
"fortune_biz_id"
/>
<result
property=
"commissionBizId"
column=
"commission_biz_id"
/>
<result
property=
"policyNo"
column=
"policy_no"
/>
<result
property=
"policyNo"
column=
"policy_no"
/>
<result
property=
"fortunePeriod"
column=
"fortune_period"
/>
<result
property=
"fortunePeriod"
column=
"fortune_period"
/>
<result
property=
"fortuneTotalPeriod"
column=
"fortune_total_period"
/>
<result
property=
"fortuneTotalPeriod"
column=
"fortune_total_period"
/>
...
@@ -36,7 +37,7 @@
...
@@ -36,7 +37,7 @@
</resultMap>
</resultMap>
<sql
id=
"Base_Column_List"
>
<sql
id=
"Base_Column_List"
>
id,fortune_biz_id,policy_no,fortune_period,fortune_total_period,broker_biz_id,
id,fortune_biz_id,
commission_biz_id,
policy_no,fortune_period,fortune_total_period,broker_biz_id,
team_biz_id,grade_commission_rate,share_rate,fortune_name,fortune_type,
team_biz_id,grade_commission_rate,share_rate,fortune_name,fortune_type,
amount,currency,status,payout_date,is_tax,
amount,currency,status,payout_date,is_tax,
tax_amount,net_amount,salary_biz_id,base_rule_biz_id,settlement_biz_id,
tax_amount,net_amount,salary_biz_id,base_rule_biz_id,settlement_biz_id,
...
...
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