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
4e64db6c
Commit
4e64db6c
authored
Apr 22, 2026
by
zhangxingmin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
push
parent
ea8b5c39
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
212 additions
and
30 deletions
+212
-30
yd-csf-api/src/main/java/com/yd/csf/api/async/ApiExpectedFortuneAsyncService.java
+73
-11
yd-csf-api/src/main/java/com/yd/csf/api/handler/CalmSendJobHandler.java
+18
-5
yd-csf-api/src/main/java/com/yd/csf/api/service/impl/ApiExpectedFortuneServiceImpl.java
+8
-3
yd-csf-service/src/main/java/com/yd/csf/service/enums/RuleItemEnum.java
+30
-0
yd-csf-service/src/main/java/com/yd/csf/service/model/AgentAccumulatedFyc.java
+13
-1
yd-csf-service/src/main/java/com/yd/csf/service/model/AgentAccumulatedFycLog.java
+13
-1
yd-csf-service/src/main/java/com/yd/csf/service/model/AgentDetailFyc.java
+38
-8
yd-csf-service/src/main/java/com/yd/csf/service/model/CalmTask.java
+19
-1
No files found.
yd-csf-api/src/main/java/com/yd/csf/api/async/ApiExpectedFortuneAsyncService.java
View file @
4e64db6c
...
...
@@ -12,6 +12,7 @@ import com.yd.csf.feign.enums.FycSourceTypeEnum;
import
com.yd.csf.feign.enums.OprSourceEnum
;
import
com.yd.csf.feign.request.expectedfortune.ApiGenerateExpectedFortuneRequest
;
import
com.yd.csf.feign.response.expectedfortune.ApiGenerateExpectedFortuneResponse
;
import
com.yd.csf.service.enums.RuleItemEnum
;
import
com.yd.csf.service.model.*
;
import
com.yd.csf.service.service.*
;
import
com.yd.feign.config.FeignTokenInterceptor
;
...
...
@@ -84,7 +85,7 @@ public class ApiExpectedFortuneAsyncService {
}
@Async
(
"commonAsyncExecutor"
)
public
void
buildCalmDateTask
(
List
<
AlgorithmCollectResDto
>
collectResDtos
,
String
policyNo
)
{
public
void
buildCalmDateTask
(
List
<
AlgorithmCollectResDto
>
collectResDtos
,
String
policyNo
,
BigDecimal
exchangeRate
)
{
if
(
CollectionUtils
.
isEmpty
(
collectResDtos
))
{
log
.
info
(
"构建冷静期定时任务,collectResDtos 为空,policyNo: {}"
,
policyNo
);
return
;
...
...
@@ -164,7 +165,7 @@ public class ApiExpectedFortuneAsyncService {
String
detailFycBizId
=
RandomStringGenerator
.
generateBizId16
(
CommonEnum
.
UID_TYPE_AGENT_DETAIL_FYC
.
getCode
());
//新增积分明细
//status 定时任务0-冻结。非定时任务1-生效
addAgentDetailFyc
(
resDto
,
policyNo
,
algorithmResDto
,
detailFycBizId
,
agentAccumulatedFyc
,
1
);
addAgentDetailFyc
(
resDto
,
policyNo
,
algorithmResDto
,
detailFycBizId
,
agentAccumulatedFyc
,
1
,
exchangeRate
);
}
else
if
(
thawingTime
!=
null
&&
thawingTime
.
compareTo
(
LocalDateTime
.
now
())
>
0
){
//判断积分解冻时间(年月日 + 00:00:00)(冷静期时间 + 期数)是否大于当前时间(年月日时分秒)
...
...
@@ -191,18 +192,24 @@ public class ApiExpectedFortuneAsyncService {
calmTask
.
setCommissionName
(
algorithmResDto
.
getItemName
());
//发佣期数
calmTask
.
setFortunePeriod
(
resDto
.
getFortunePeriod
());
//佣金值(积分值)
//
汇率转换前
佣金值(积分值)
calmTask
.
setFyc
(
algorithmResDto
.
getCalculatedValue
());
//汇率(保单币种->港币的汇率)
calmTask
.
setExchangeRate
(
exchangeRate
);
//汇率转换后佣金值(积分值)
calmTask
.
setAfterFyc
(
calmTask
.
getFyc
().
multiply
(
calmTask
.
getExchangeRate
()));
//冷静期结束日期
calmTask
.
setCoolingOffEndDate
(
policyFollow
.
getCoolingOffEndDate
());
//业务员积分明细表唯一业务ID
String
detailFycBizId
=
RandomStringGenerator
.
generateBizId16
(
CommonEnum
.
UID_TYPE_AGENT_DETAIL_FYC
.
getCode
());
calmTask
.
setDetailFycBizId
(
detailFycBizId
);
//积分来源基本法项目配置表唯一业务ID
calmTask
.
setRuleItemBizId
(
algorithmResDto
.
getRuleItemBizId
());
iCalmTaskService
.
saveOrUpdate
(
calmTask
);
//新增积分明细
//status 定时任务0-冻结。非定时任务1-生效
addAgentDetailFyc
(
resDto
,
policyNo
,
algorithmResDto
,
detailFycBizId
,
agentAccumulatedFyc
,
0
);
addAgentDetailFyc
(
resDto
,
policyNo
,
algorithmResDto
,
detailFycBizId
,
agentAccumulatedFyc
,
0
,
exchangeRate
);
//创建XXL-Job定时任务
xxlJobService
.
addScheduleJob
(
calmTask
.
getCalmTaskBizId
(),
"冷静期定时发送任务-"
,
"calmSendJobHandler"
,
Date
.
from
(
resDto
.
getThawingTime
().
atZone
(
ZoneId
.
systemDefault
()).
toInstant
()));
...
...
@@ -211,7 +218,7 @@ public class ApiExpectedFortuneAsyncService {
}
//更新积分总表的值
updateAgentAccumulatedFyc
(
accumulatedFycList
,
filteredCollectResDtos
);
updateAgentAccumulatedFyc
(
accumulatedFycList
,
filteredCollectResDtos
,
exchangeRate
);
}
...
...
@@ -229,15 +236,24 @@ public class ApiExpectedFortuneAsyncService {
AlgorithmResDto
algorithmResDto
,
String
detailFycBizId
,
AgentAccumulatedFyc
agentAccumulatedFyc
,
Integer
status
)
{
Integer
status
,
BigDecimal
exchangeRate
)
{
//新增积分明细
AgentDetailFyc
agentDetailFyc
=
new
AgentDetailFyc
();
//积分来源类型
agentDetailFyc
.
setSourceType
(
FycSourceTypeEnum
.
CALM_TASK
.
getItemValue
());
//积分来源名称
agentDetailFyc
.
setSourceName
(
FycSourceTypeEnum
.
CALM_TASK
.
getItemLabel
());
//佣金项目类型 TODO
// agentDetailFyc.setCommissionType();
//佣金项目名称
agentDetailFyc
.
setCommissionName
(
algorithmResDto
.
getItemName
());
//业务员ID
agentDetailFyc
.
setAgentId
(
resDto
.
getClientUserBizId
());
//积分提供的保单号
agentDetailFyc
.
setPolicyNo
(
policyNo
);
//发佣期数
agentDetailFyc
.
setFortunePeriod
(
resDto
.
getFortunePeriod
());
//积分来源基本法项目配置表唯一业务ID
agentDetailFyc
.
setRuleItemBizId
(
algorithmResDto
.
getRuleItemBizId
());
//业务员积分明细表唯一业务ID
...
...
@@ -249,10 +265,14 @@ public class ApiExpectedFortuneAsyncService {
agentDetailFyc
.
setThawingTime
(
resDto
.
getThawingTime
());
//变化前的业务员总FYC积分(已生效+未生效)
agentDetailFyc
.
setBeforeFyc
(
agentAccumulatedFyc
!=
null
?
agentAccumulatedFyc
.
getTotalFyc
()
:
BigDecimal
.
ZERO
);
//
变化值(-代表减少)
agentDetailFyc
.
setChangeFyc
(
algorithmResDto
.
getCalculatedValue
()
.
toString
()
);
//
汇率转化前积分值(变化值(-代表减少))
agentDetailFyc
.
setChangeFyc
(
algorithmResDto
.
getCalculatedValue
());
//变化后的业务员总FYC积分
agentDetailFyc
.
setAfterFyc
(
agentDetailFyc
.
getBeforeFyc
().
add
(
algorithmResDto
.
getCalculatedValue
()));
//汇率(保单币种->港币的汇率)
agentDetailFyc
.
setExchangeRate
(
exchangeRate
);
//汇率转化后积分值(变化值(-代表减少)) = 汇率转化前积分值 * 汇率
agentDetailFyc
.
setChangeAfterFyc
(
agentDetailFyc
.
getChangeFyc
().
multiply
(
agentDetailFyc
.
getExchangeRate
()));
iAgentDetailFycService
.
saveOrUpdate
(
agentDetailFyc
);
}
...
...
@@ -263,7 +283,8 @@ public class ApiExpectedFortuneAsyncService {
* @param filteredCollectResDtos
*/
public
void
updateAgentAccumulatedFyc
(
List
<
AgentAccumulatedFyc
>
accumulatedFycList
,
List
<
AlgorithmCollectResDto
>
filteredCollectResDtos
)
{
List
<
AlgorithmCollectResDto
>
filteredCollectResDtos
,
BigDecimal
exchangeRate
)
{
log
.
info
(
"更新积分总表的值=>accumulatedFycList入参:{}"
,
JSON
.
toJSONString
(
accumulatedFycList
));
log
.
info
(
"更新积分总表的值=>filteredCollectResDtos入参:{}"
,
JSON
.
toJSONString
(
filteredCollectResDtos
));
//更新积分总表的值,更新这个accumulatedFycList的每个对象里面的:未生效累计积分(不限业务场景)、累计积分 = 未生效累计积分 + 已生效累计积分、未生效累计首期佣金积分值(佣金场景)、未生效累计非首期佣金积分值(佣金场景)
...
...
@@ -283,6 +304,8 @@ public class ApiExpectedFortuneAsyncService {
Map
<
String
,
BigDecimal
>
noFirstCommissionDeltaMap
=
new
HashMap
<>();
// 未生效非首期佣金增量(定时(冻结))
Map
<
String
,
BigDecimal
>
noRycDeltaMap
=
new
HashMap
<>();
// 未生效累计首期销售佣金积分值(销售佣金场景(佣金场景的其中一个))增量(定时(冻结))
Map
<
String
,
BigDecimal
>
noFirstSalesCommissionDeltaMap
=
new
HashMap
<>();
// 已生效个人累计积分增量(非定时(生效))
Map
<
String
,
BigDecimal
>
deltaMap
=
new
HashMap
<>();
...
...
@@ -290,6 +313,8 @@ public class ApiExpectedFortuneAsyncService {
Map
<
String
,
BigDecimal
>
firstCommissionDeltaMap
=
new
HashMap
<>();
// 已生效非首期佣金增量(非定时(生效))
Map
<
String
,
BigDecimal
>
rycDeltaMap
=
new
HashMap
<>();
// 已生效累计首期销售佣金积分值(销售佣金场景(佣金场景的其中一个))增量(非定时(生效))
Map
<
String
,
BigDecimal
>
firstSalesCommissionDeltaMap
=
new
HashMap
<>();
//收集去重的转介人业务ID
HashSet
<
String
>
hashSet
=
new
HashSet
<>();
...
...
@@ -305,6 +330,8 @@ public class ApiExpectedFortuneAsyncService {
for
(
AlgorithmResDto
algorithmResDto
:
resDto
.
getAlgorithmResDtoList
())
{
BigDecimal
val
=
algorithmResDto
.
getCalculatedValue
();
if
(
val
==
null
)
continue
;
//val汇率转换后的值
val
=
val
.
multiply
(
exchangeRate
);
if
(
thawingTime
!=
null
&&
thawingTime
.
compareTo
(
LocalDateTime
.
now
())
<=
0
)
{
//判断积分解冻时间(年月日 + 00:00:00)(冷静期时间 + 期数)是否小于等于当前时间(年月日时分秒)
...
...
@@ -315,6 +342,12 @@ public class ApiExpectedFortuneAsyncService {
if
(
fortunePeriod
!=
null
&&
fortunePeriod
==
1
)
{
//已生效首期佣金增量(非定时(生效))
firstCommissionDeltaMap
.
merge
(
agentId
,
val
,
BigDecimal:
:
add
);
if
(
RuleItemEnum
.
SALES
.
getRuleItemBizId
().
equals
(
algorithmResDto
.
getRuleItemBizId
()))
{
//销售佣金项目
//已生效累计首期销售佣金积分值(销售佣金场景(佣金场景的其中一个))增量(非定时(生效))
firstSalesCommissionDeltaMap
.
merge
(
agentId
,
val
,
BigDecimal:
:
add
);
}
}
else
{
//已生效非首期佣金增量(非定时(生效))
rycDeltaMap
.
merge
(
agentId
,
val
,
BigDecimal:
:
add
);
...
...
@@ -329,6 +362,12 @@ public class ApiExpectedFortuneAsyncService {
if
(
fortunePeriod
!=
null
&&
fortunePeriod
==
1
)
{
//未生效首期佣金增量(定时(冻结))
noFirstCommissionDeltaMap
.
merge
(
agentId
,
val
,
BigDecimal:
:
add
);
if
(
RuleItemEnum
.
SALES
.
getRuleItemBizId
().
equals
(
algorithmResDto
.
getRuleItemBizId
()))
{
//销售佣金项目
//未生效累计首期销售佣金积分值(销售佣金场景(佣金场景的其中一个))增量(定时(冻结))
noFirstSalesCommissionDeltaMap
.
merge
(
agentId
,
val
,
BigDecimal:
:
add
);
}
}
else
{
//未生效非首期佣金增量(定时(冻结))
noRycDeltaMap
.
merge
(
agentId
,
val
,
BigDecimal:
:
add
);
...
...
@@ -344,6 +383,8 @@ public class ApiExpectedFortuneAsyncService {
log
.
info
(
"已生效个人累计积分增量(非定时(生效))=>deltaMap:{}"
,
JSON
.
toJSONString
(
deltaMap
));
log
.
info
(
"已生效首期佣金增量(非定时(生效))=>firstCommissionDeltaMap:{}"
,
JSON
.
toJSONString
(
firstCommissionDeltaMap
));
log
.
info
(
"已生效非首期佣金增量(非定时(生效))=>rycDeltaMap:{}"
,
JSON
.
toJSONString
(
rycDeltaMap
));
log
.
info
(
"已生效累计首期销售佣金积分值(销售佣金场景(佣金场景的其中一个))增量(非定时(生效))=>firstSalesCommissionDeltaMap:{}"
,
JSON
.
toJSONString
(
firstSalesCommissionDeltaMap
));
log
.
info
(
"未生效累计首期销售佣金积分值(销售佣金场景(佣金场景的其中一个))增量(定时(冻结))=>noFirstSalesCommissionDeltaMap:{}"
,
JSON
.
toJSONString
(
noFirstSalesCommissionDeltaMap
));
// 更新或新建累计积分记录
List
<
AgentAccumulatedFyc
>
toUpdateList
=
new
ArrayList
<>();
...
...
@@ -363,6 +404,11 @@ public class ApiExpectedFortuneAsyncService {
//已生效非首期佣金增量(非定时(生效))
BigDecimal
rycDelta
=
rycDeltaMap
.
getOrDefault
(
agentId
,
BigDecimal
.
ZERO
);
//已生效累计首期销售佣金积分值(销售佣金场景(佣金场景的其中一个))增量(非定时(生效))
BigDecimal
firstSalesDelta
=
firstSalesCommissionDeltaMap
.
getOrDefault
(
agentId
,
BigDecimal
.
ZERO
);
//未生效累计首期销售佣金积分值(销售佣金场景(佣金场景的其中一个))增量(定时(冻结))
BigDecimal
noFirstSalesDelta
=
noFirstSalesCommissionDeltaMap
.
getOrDefault
(
agentId
,
BigDecimal
.
ZERO
);
AgentAccumulatedFyc
fyc
=
fycMap
.
get
(
agentId
);
if
(
fyc
==
null
)
{
continue
;
...
...
@@ -375,6 +421,8 @@ public class ApiExpectedFortuneAsyncService {
BigDecimal
safeNoRycDelta
=
noRycDelta
==
null
?
BigDecimal
.
ZERO
:
noRycDelta
;
BigDecimal
safeFirstDelta
=
firstDelta
==
null
?
BigDecimal
.
ZERO
:
firstDelta
;
BigDecimal
safeRycDelta
=
rycDelta
==
null
?
BigDecimal
.
ZERO
:
rycDelta
;
BigDecimal
safeFirstSalesDelta
=
firstSalesDelta
==
null
?
BigDecimal
.
ZERO
:
firstSalesDelta
;
BigDecimal
safeNoFirstSalesDelta
=
noFirstSalesDelta
==
null
?
BigDecimal
.
ZERO
:
noFirstSalesDelta
;
// 原有字段安全处理:fyc 中的字段可能为 null,转为 ZERO 再进行 add
BigDecimal
effectOld
=
fyc
.
getEffect
()
==
null
?
BigDecimal
.
ZERO
:
fyc
.
getEffect
();
...
...
@@ -383,27 +431,41 @@ public class ApiExpectedFortuneAsyncService {
BigDecimal
noRycOld
=
fyc
.
getNoRyc
()
==
null
?
BigDecimal
.
ZERO
:
fyc
.
getNoRyc
();
BigDecimal
firstCommissionOld
=
fyc
.
getFirstCommission
()
==
null
?
BigDecimal
.
ZERO
:
fyc
.
getFirstCommission
();
BigDecimal
rycOld
=
fyc
.
getRyc
()
==
null
?
BigDecimal
.
ZERO
:
fyc
.
getRyc
();
BigDecimal
firstSalesCommissionOld
=
fyc
.
getFirstSalesCommission
()
==
null
?
BigDecimal
.
ZERO
:
fyc
.
getFirstSalesCommission
();
BigDecimal
noFirstSalesCommissionOld
=
fyc
.
getNoFirstSalesCommission
()
==
null
?
BigDecimal
.
ZERO
:
fyc
.
getNoFirstSalesCommission
();
// 应用增量
//未生效累计积分(不限业务场景)
fyc
.
setNoEffect
(
noEffectOld
.
add
(
safeNoDelta
));
//未生效累计首期佣金积分值(佣金场景)
fyc
.
setNoFirstCommission
(
noFirstCommissionOld
.
add
(
safeNoFirstDelta
));
//未生效累计非首期佣金积分值(佣金场景)
fyc
.
setNoRyc
(
noRycOld
.
add
(
safeNoRycDelta
));
//已生效累计积分(不限业务场景)
fyc
.
setEffect
(
effectOld
.
add
(
safeDelta
));
//已生效累计首期佣金积分值(佣金场景)
fyc
.
setFirstCommission
(
firstCommissionOld
.
add
(
safeFirstDelta
));
//已生效累计非首期佣金积分值(佣金场景)
fyc
.
setRyc
(
rycOld
.
add
(
safeRycDelta
));
//累计积分 = 未生效累计积分 + 已生效累计积分
fyc
.
setTotalFyc
(
fyc
.
getNoEffect
().
add
(
fyc
.
getEffect
()));
//晋升职级累计积分 = 已生效累计积分 - 已生效累计非首期佣金积分值
BigDecimal
promotion
=
fyc
.
getEffect
().
subtract
(
fyc
.
getRyc
());
//已生效累计首期销售佣金积分值(销售佣金场景(佣金场景的其中一个))增量(非定时(生效))
fyc
.
setFirstSalesCommission
(
firstSalesCommissionOld
.
add
(
safeFirstSalesDelta
));
//未生效累计首期销售佣金积分值(销售佣金场景(佣金场景的其中一个))增量(定时(冻结))
fyc
.
setNoFirstSalesCommission
(
noFirstSalesCommissionOld
.
add
(
safeNoFirstSalesDelta
));
//晋升职级累计积分 = 初始化已生效积分(不限业务场景) + 已生效累计首期销售佣金积分值(销售佣金场景(佣金场景的其中一个))
BigDecimal
promotion
=
fyc
.
getInitEffect
().
add
(
fyc
.
getFirstSalesCommission
());
fyc
.
setPromotion
(
promotion
.
compareTo
(
BigDecimal
.
ZERO
)
<=
0
?
BigDecimal
.
ZERO
:
promotion
);
//最后计算日期,记录最后一次计算累计FYC的日期
fyc
.
setLastCalcDate
(
LocalDateTime
.
now
());
toUpdateList
.
add
(
fyc
);
...
...
yd-csf-api/src/main/java/com/yd/csf/api/handler/CalmSendJobHandler.java
View file @
4e64db6c
...
...
@@ -8,6 +8,7 @@ import com.yd.common.utils.RandomStringGenerator;
import
com.yd.csf.api.service.ApiAgentDetailFycService
;
import
com.yd.csf.feign.enums.FycSourceTypeEnum
;
import
com.yd.csf.feign.enums.OprSourceEnum
;
import
com.yd.csf.service.enums.RuleItemEnum
;
import
com.yd.csf.service.model.*
;
import
com.yd.csf.service.service.*
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -81,7 +82,7 @@ public class CalmSendJobHandler {
AgentAccumulatedFyc
agentAccumulatedFyc
=
iAgentAccumulatedFycService
.
queryOne
(
calmTask
.
getBrokerBizId
());
if
(
agentAccumulatedFyc
!=
null
)
{
// 安全获取任务佣金增量值,若为 null 则用 0 代替
BigDecimal
fycValue
=
calmTask
.
get
Fyc
()
==
null
?
BigDecimal
.
ZERO
:
calmTask
.
get
Fyc
();
BigDecimal
fycValue
=
calmTask
.
get
AfterFyc
()
==
null
?
BigDecimal
.
ZERO
:
calmTask
.
getAfter
Fyc
();
// 安全获取原有字段值,若为 null 则视为 0
BigDecimal
noEffectOld
=
agentAccumulatedFyc
.
getNoEffect
()
==
null
?
BigDecimal
.
ZERO
:
agentAccumulatedFyc
.
getNoEffect
();
...
...
@@ -90,10 +91,12 @@ public class CalmSendJobHandler {
BigDecimal
noFirstCommissionOld
=
agentAccumulatedFyc
.
getNoFirstCommission
()
==
null
?
BigDecimal
.
ZERO
:
agentAccumulatedFyc
.
getNoFirstCommission
();
BigDecimal
rycOld
=
agentAccumulatedFyc
.
getRyc
()
==
null
?
BigDecimal
.
ZERO
:
agentAccumulatedFyc
.
getRyc
();
BigDecimal
noRycOld
=
agentAccumulatedFyc
.
getNoRyc
()
==
null
?
BigDecimal
.
ZERO
:
agentAccumulatedFyc
.
getNoRyc
();
BigDecimal
firstSalesCommissionOld
=
agentAccumulatedFyc
.
getFirstSalesCommission
()
==
null
?
BigDecimal
.
ZERO
:
agentAccumulatedFyc
.
getFirstSalesCommission
();
BigDecimal
noFirstSalesCommissionOld
=
agentAccumulatedFyc
.
getNoFirstSalesCommission
()
==
null
?
BigDecimal
.
ZERO
:
agentAccumulatedFyc
.
getNoFirstSalesCommission
();
//未生效累计积分(不限业务场景)= 未生效累计积分(不限业务场景) - 增量积分
BigDecimal
noEffect
=
noEffectOld
.
subtract
(
fycValue
);
agentAccumulatedFyc
.
setNoEffect
(
noEffect
.
compareTo
(
BigDecimal
.
ZERO
)
<
0
?
BigDecimal
.
ZERO
:
noEffect
);
agentAccumulatedFyc
.
setNoEffect
(
noEffect
.
compareTo
(
BigDecimal
.
ZERO
)
<
=
0
?
BigDecimal
.
ZERO
:
noEffect
);
//已生效累计积分(不限业务场景) = 已生效累计积分(不限业务场景) + 增量积分
BigDecimal
effect
=
effectOld
.
add
(
fycValue
);
agentAccumulatedFyc
.
setEffect
(
effect
);
...
...
@@ -107,7 +110,17 @@ public class CalmSendJobHandler {
agentAccumulatedFyc
.
setFirstCommission
(
firstCommission
);
//未生效累计首期佣金积分值(佣金场景)= 未生效累计首期佣金积分值(佣金场景)- 增量积分
BigDecimal
noFirstCommission
=
noFirstCommissionOld
.
subtract
(
fycValue
);
agentAccumulatedFyc
.
setNoFirstCommission
(
noFirstCommission
.
compareTo
(
BigDecimal
.
ZERO
)
<
0
?
BigDecimal
.
ZERO
:
noFirstCommission
);
agentAccumulatedFyc
.
setNoFirstCommission
(
noFirstCommission
.
compareTo
(
BigDecimal
.
ZERO
)
<=
0
?
BigDecimal
.
ZERO
:
noFirstCommission
);
if
(
RuleItemEnum
.
SALES
.
getRuleItemBizId
().
equals
(
calmTask
.
getRuleItemBizId
()))
{
//销售佣金项目
//已生效累计首期销售佣金积分值(销售佣金场景(佣金场景的其中一个)) = 已生效累计首期销售佣金积分值(销售佣金场景(佣金场景的其中一个)) + 增量积分
BigDecimal
firstSalesCommission
=
firstSalesCommissionOld
.
add
(
fycValue
);
agentAccumulatedFyc
.
setFirstSalesCommission
(
firstSalesCommission
);
//未生效累计首期销售佣金积分值(销售佣金场景(佣金场景的其中一个))= 未生效累计首期销售佣金积分值(销售佣金场景(佣金场景的其中一个))- 增量积分
BigDecimal
noFirstSalesCommission
=
noFirstSalesCommissionOld
.
subtract
(
fycValue
);
agentAccumulatedFyc
.
setNoFirstSalesCommission
(
noFirstSalesCommission
.
compareTo
(
BigDecimal
.
ZERO
)
<=
0
?
BigDecimal
.
ZERO
:
noFirstSalesCommission
);
}
}
else
{
//非首期
//已生效累计非首期佣金积分值(佣金场景) = 已生效累计非首期佣金积分值(佣金场景) + 增量积分
...
...
@@ -115,14 +128,14 @@ public class CalmSendJobHandler {
agentAccumulatedFyc
.
setRyc
(
ryc
);
//未生效累计非首期佣金积分值(佣金场景)= 未生效累计非首期佣金积分值(佣金场景)- 增量积分
BigDecimal
noRyc
=
noRycOld
.
subtract
(
fycValue
);
agentAccumulatedFyc
.
setNoRyc
(
noRyc
.
compareTo
(
BigDecimal
.
ZERO
)
<
0
?
BigDecimal
.
ZERO
:
noRyc
);
agentAccumulatedFyc
.
setNoRyc
(
noRyc
.
compareTo
(
BigDecimal
.
ZERO
)
<
=
0
?
BigDecimal
.
ZERO
:
noRyc
);
}
//晋升职级累计积分 = 已生效累计积分 - 已生效累计非首期佣金积分值
// 注意:此处 effect 和 ryc 已更新,使用更新后的值,但仍需判空保护
BigDecimal
effectAfter
=
agentAccumulatedFyc
.
getEffect
()
==
null
?
BigDecimal
.
ZERO
:
agentAccumulatedFyc
.
getEffect
();
BigDecimal
rycAfter
=
agentAccumulatedFyc
.
getRyc
()
==
null
?
BigDecimal
.
ZERO
:
agentAccumulatedFyc
.
getRyc
();
BigDecimal
promotion
=
effectAfter
.
subtract
(
rycAfter
);
agentAccumulatedFyc
.
setPromotion
(
promotion
.
compareTo
(
BigDecimal
.
ZERO
)
<
0
?
BigDecimal
.
ZERO
:
promotion
);
agentAccumulatedFyc
.
setPromotion
(
promotion
.
compareTo
(
BigDecimal
.
ZERO
)
<
=
0
?
BigDecimal
.
ZERO
:
promotion
);
//最后计算日期,记录最后一次计算累计FYC的日期
agentAccumulatedFyc
.
setLastCalcDate
(
LocalDateTime
.
now
());
iAgentAccumulatedFycService
.
saveOrUpdate
(
agentAccumulatedFyc
);
...
...
yd-csf-api/src/main/java/com/yd/csf/api/service/impl/ApiExpectedFortuneServiceImpl.java
View file @
4e64db6c
...
...
@@ -529,6 +529,13 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
String
token2
=
request2
.
getHeader
(
"Authorization"
);
log
.
info
(
"使用编程式事务,确保方法内的事务一致性 token==============,{}"
,
token2
);
//保单币种->港币的汇率
BigDecimal
exchangeRate
=
BigDecimal
.
ZERO
;
if
(!
CollectionUtils
.
isEmpty
(
queryPolicyAndBrokerDtoList
))
{
QueryPolicyAndBrokerDto
queryPolicyAndBrokerDto
=
queryPolicyAndBrokerDtoList
.
get
(
0
);
exchangeRate
=
queryExchangeRateByFeign
(
queryPolicyAndBrokerDto
.
getCurrency
(),
"HKD"
);
}
//基本法计算值收集列表
List
<
AlgorithmCollectResDto
>
collectResDtos
=
new
ArrayList
<>();
for
(
QueryPolicyAndBrokerDto
brokerDto
:
queryPolicyAndBrokerDtoList
)
{
...
...
@@ -609,7 +616,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
//异步处理-构建冷静期定时任务
log
.
info
(
"异步处理-构建冷静期定时任务=>请求前入参:{}"
,
JSON
.
toJSONString
(
collectResDtos
));
apiExpectedFortuneAsyncService
.
buildCalmDateTask
(
collectResDtos
,
policyNo
);
apiExpectedFortuneAsyncService
.
buildCalmDateTask
(
collectResDtos
,
policyNo
,
exchangeRate
);
return
Result
.
success
();
}
catch
(
Exception
e
)
{
...
...
@@ -628,8 +635,6 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
});
}
/**
* 查询和当前转介人相关关系(推荐,一级管理,二级管理,辅导)的客户端用户ID列表数据
* @param brokerDto
...
...
yd-csf-service/src/main/java/com/yd/csf/service/enums/RuleItemEnum.java
0 → 100644
View file @
4e64db6c
package
com
.
yd
.
csf
.
service
.
enums
;
/**
* 基本法项目枚举
*/
public
enum
RuleItemEnum
{
SALES
(
"rule_item_config_FePX0vpJQ9bU1vEo"
,
"销售佣金"
),
;
//基本法项目配置表唯一业务ID
private
String
ruleItemBizId
;
//基本法项目名称
private
String
itemName
;
//构造函数
RuleItemEnum
(
String
ruleItemBizId
,
String
itemName
)
{
this
.
ruleItemBizId
=
ruleItemBizId
;
this
.
itemName
=
itemName
;
}
public
String
getRuleItemBizId
()
{
return
ruleItemBizId
;
}
public
String
getItemName
()
{
return
itemName
;
}
}
yd-csf-service/src/main/java/com/yd/csf/service/model/AgentAccumulatedFyc.java
View file @
4e64db6c
...
...
@@ -105,7 +105,19 @@ public class AgentAccumulatedFyc implements Serializable {
private
BigDecimal
noRyc
;
/**
* 晋升职级累计积分 = 已生效累计积分 - 已生效累计非首期佣金积分值
* 已生效累计首期销售佣金积分值(销售佣金场景(佣金场景的其中一个))
*/
@TableField
(
"first_sales_commission"
)
private
BigDecimal
firstSalesCommission
;
/**
* 未生效累计首期销售佣金积分值(销售佣金场景(佣金场景的其中一个))
*/
@TableField
(
"no_first_sales_commission"
)
private
BigDecimal
noFirstSalesCommission
;
/**
* 晋升职级累计积分 = 初始化已生效积分(不限业务场景) + 已生效累计首期销售佣金积分值(销售佣金场景(佣金场景的其中一个))
*/
@TableField
(
"promotion"
)
private
BigDecimal
promotion
;
...
...
yd-csf-service/src/main/java/com/yd/csf/service/model/AgentAccumulatedFycLog.java
View file @
4e64db6c
...
...
@@ -116,7 +116,19 @@ public class AgentAccumulatedFycLog implements Serializable {
private
BigDecimal
noRyc
;
/**
* 晋升职级累计积分 = 已生效累计积分 - 已生效累计非首期佣金积分值
* 已生效累计首期销售佣金积分值(销售佣金场景(佣金场景的其中一个))
*/
@TableField
(
"first_sales_commission"
)
private
BigDecimal
firstSalesCommission
;
/**
* 未生效累计首期销售佣金积分值(销售佣金场景(佣金场景的其中一个))
*/
@TableField
(
"no_first_sales_commission"
)
private
BigDecimal
noFirstSalesCommission
;
/**
* 晋升职级累计积分 = 初始化已生效积分(不限业务场景) + 已生效累计首期销售佣金积分值(销售佣金场景(佣金场景的其中一个))
*/
@TableField
(
"promotion"
)
private
BigDecimal
promotion
;
...
...
yd-csf-service/src/main/java/com/yd/csf/service/model/AgentDetailFyc.java
View file @
4e64db6c
...
...
@@ -48,17 +48,29 @@ public class AgentDetailFyc implements Serializable {
private
String
sourceType
;
/**
* 积分来源名称
*/
@TableField
(
"source_name"
)
private
String
sourceName
;
/**
* 佣金项目类型
*/
@TableField
(
"commission_type"
)
private
Integer
commissionType
;
/**
* 佣金项目名称
*/
@TableField
(
"commission_name"
)
private
String
commissionName
;
/**
* 积分来源基本法项目配置表唯一业务ID
*/
@TableField
(
"rule_item_biz_id"
)
private
String
ruleItemBizId
;
// /**
// * 保单发佣批次ID
// */
// @TableField("batch_bizId")
// private String batchBizId;
/**
* 积分提供的保单号
*/
...
...
@@ -66,6 +78,12 @@ public class AgentDetailFyc implements Serializable {
private
String
policyNo
;
/**
* 发佣期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
*/
@TableField
(
"fortune_period"
)
private
Integer
fortunePeriod
;
/**
* 积分提供者(客户端用户表唯一业务ID)
*/
@TableField
(
"provide_id"
)
...
...
@@ -84,10 +102,22 @@ public class AgentDetailFyc implements Serializable {
private
BigDecimal
afterFyc
;
/**
*
变化值(-代表减少)
*
汇率转化前积分值(变化值(-代表减少))
*/
@TableField
(
"change_fyc"
)
private
String
changeFyc
;
private
BigDecimal
changeFyc
;
/**
* 汇率(保单币种->港币的汇率)
*/
@TableField
(
"exchange_rate"
)
private
BigDecimal
exchangeRate
;
/**
* 汇率转化后积分值(变化值(-代表减少))
*/
@TableField
(
"change_after_fyc"
)
private
BigDecimal
changeAfterFyc
;
/**
* 积分解冻时间
...
...
yd-csf-service/src/main/java/com/yd/csf/service/model/CalmTask.java
View file @
4e64db6c
...
...
@@ -58,6 +58,12 @@ public class CalmTask implements Serializable {
private
String
policyNo
;
/**
* 积分来源基本法项目配置表唯一业务ID
*/
@TableField
(
"rule_item_biz_id"
)
private
String
ruleItemBizId
;
/**
* 佣金项目
*/
@TableField
(
"commission_name"
)
...
...
@@ -82,12 +88,24 @@ public class CalmTask implements Serializable {
private
String
brokerName
;
/**
* 佣金值(积分值)
*
汇率转换前
佣金值(积分值)
*/
@TableField
(
"fyc"
)
private
BigDecimal
fyc
;
/**
* 汇率(保单币种->港币的汇率)
*/
@TableField
(
"exchange_rate"
)
private
BigDecimal
exchangeRate
;
/**
* 汇率转换后佣金值(积分值)
*/
@TableField
(
"after_fyc"
)
private
BigDecimal
afterFyc
;
/**
* 冷静期结束日期
*/
@TableField
(
"cooling_off_end_date"
)
...
...
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