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
005ceb1a
Commit
005ceb1a
authored
Nov 20, 2025
by
zhangxingmin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
异步处理-> 遍历保单转介人列表信息 -> 调用基本法算出预计发佣列表
parent
8c51446d
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
61 additions
and
5 deletions
+61
-5
yd-csf-api/src/main/java/com/yd/csf/api/async/ApiExpectedFortuneAsyncService.java
+11
-0
yd-csf-api/src/main/java/com/yd/csf/api/service/ApiExpectedFortuneService.java
+9
-0
yd-csf-api/src/main/java/com/yd/csf/api/service/impl/ApiExpectedFortuneServiceImpl.java
+41
-5
No files found.
yd-csf-api/src/main/java/com/yd/csf/api/async/ApiExpectedFortuneAsyncService.java
0 → 100644
View file @
005ceb1a
package
com
.
yd
.
csf
.
api
.
async
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Component
;
@Slf4j
@Component
public
class
ApiExpectedFortuneAsyncService
{
}
yd-csf-api/src/main/java/com/yd/csf/api/service/ApiExpectedFortuneService.java
View file @
005ceb1a
...
@@ -6,10 +6,19 @@ import com.yd.csf.feign.request.expectedfortune.ApiExpectedFortunePageRequest;
...
@@ -6,10 +6,19 @@ import com.yd.csf.feign.request.expectedfortune.ApiExpectedFortunePageRequest;
import
com.yd.csf.feign.request.expectedfortune.ApiGenerateExpectedFortuneRequest
;
import
com.yd.csf.feign.request.expectedfortune.ApiGenerateExpectedFortuneRequest
;
import
com.yd.csf.feign.response.expectedfortune.ApiExpectedFortunePageResponse
;
import
com.yd.csf.feign.response.expectedfortune.ApiExpectedFortunePageResponse
;
import
com.yd.csf.feign.response.expectedfortune.ApiGenerateExpectedFortuneResponse
;
import
com.yd.csf.feign.response.expectedfortune.ApiGenerateExpectedFortuneResponse
;
import
com.yd.csf.service.dto.QueryPolicyAndBrokerDto
;
import
com.yd.csf.service.model.CommissionRuleBinding
;
import
org.springframework.scheduling.annotation.Async
;
import
java.util.List
;
public
interface
ApiExpectedFortuneService
{
public
interface
ApiExpectedFortuneService
{
Result
<
ApiGenerateExpectedFortuneResponse
>
generate
(
ApiGenerateExpectedFortuneRequest
request
);
Result
<
ApiGenerateExpectedFortuneResponse
>
generate
(
ApiGenerateExpectedFortuneRequest
request
);
@Async
(
"asyncQueryExecutor"
)
Result
execute
(
List
<
QueryPolicyAndBrokerDto
>
queryPolicyAndBrokerDtoList
,
List
<
CommissionRuleBinding
>
commissionRuleBindingList
);
Result
<
IPage
<
ApiExpectedFortunePageResponse
>>
page
(
ApiExpectedFortunePageRequest
request
);
Result
<
IPage
<
ApiExpectedFortunePageResponse
>>
page
(
ApiExpectedFortunePageRequest
request
);
Result
<
Boolean
>
isGenerate
(
String
policyNo
);
Result
<
Boolean
>
isGenerate
(
String
policyNo
);
...
...
yd-csf-api/src/main/java/com/yd/csf/api/service/impl/ApiExpectedFortuneServiceImpl.java
View file @
005ceb1a
...
@@ -26,8 +26,12 @@ import com.yd.csf.service.service.PolicyService;
...
@@ -26,8 +26,12 @@ import com.yd.csf.service.service.PolicyService;
import
com.yd.user.feign.client.clientuser.ApiClientUserFeignClient
;
import
com.yd.user.feign.client.clientuser.ApiClientUserFeignClient
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.PlatformTransactionManager
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.support.TransactionTemplate
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.CollectionUtils
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
...
@@ -54,6 +58,16 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
...
@@ -54,6 +58,16 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
@Autowired
@Autowired
private
IExpectedFortuneService
iExpectedFortuneService
;
private
IExpectedFortuneService
iExpectedFortuneService
;
@Autowired
private
ApplicationContext
applicationContext
;
private
ApiExpectedFortuneService
getSelf
()
{
return
applicationContext
.
getBean
(
ApiExpectedFortuneService
.
class
);
}
@Autowired
private
TransactionTemplate
transactionTemplate
;
/**
/**
* 生成预计发佣
* 生成预计发佣
* @param request
* @param request
...
@@ -81,24 +95,40 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
...
@@ -81,24 +95,40 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
}
}
//遍历保单转介人列表信息 -> 调用基本法算出预计发佣列表
//遍历保单转介人列表信息 -> 调用基本法算出预计发佣列表
// 通过代理对象调用
getSelf
().
execute
(
queryPolicyAndBrokerDtoList
,
commissionRuleBindingList
);
return
Result
.
success
(
null
,
"生成预计发佣正在处理....,稍后查看预计发佣列表"
);
}
/**
* 异步处理-> 遍历保单转介人列表信息 -> 调用基本法算出预计发佣列表
* @param queryPolicyAndBrokerDtoList
* @param commissionRuleBindingList
* @return
*/
@Override
@Async
(
"commonAsyncExecutor"
)
public
Result
execute
(
List
<
QueryPolicyAndBrokerDto
>
queryPolicyAndBrokerDtoList
,
List
<
CommissionRuleBinding
>
commissionRuleBindingList
)
{
// 使用编程式事务,确保异步方法内的事务一致性
return
transactionTemplate
.
execute
(
status
->
{
try
{
for
(
QueryPolicyAndBrokerDto
brokerDto
:
queryPolicyAndBrokerDtoList
)
{
for
(
QueryPolicyAndBrokerDto
brokerDto
:
queryPolicyAndBrokerDtoList
)
{
Integer
paymentTerm
=
brokerDto
.
getPaymentTerm
();
Integer
paymentTerm
=
brokerDto
.
getPaymentTerm
();
//获取保单的供款年期,遍历每个年期算出对应每个年期的佣金列表
if
(
Objects
.
isNull
(
paymentTerm
))
{
if
(
Objects
.
isNull
(
paymentTerm
))
{
throw
new
BusinessException
(
"保单的供款年期不存在"
);
throw
new
BusinessException
(
"保单的供款年期不存在"
);
}
}
//遍历供款年期
for
(
int
i
=
1
;
i
<=
paymentTerm
;
i
++)
{
for
(
int
i
=
1
;
i
<=
paymentTerm
;
i
++)
{
//执行 - 销售佣金 - 出账 (销售佣金基本法)
executeBilling
(
ExecuteBillingDto
.
builder
()
executeBilling
(
ExecuteBillingDto
.
builder
()
.
name
(
brokerDto
.
getBrokerName
())
.
name
(
brokerDto
.
getBrokerName
())
.
policyAndBrokerDto
(
brokerDto
)
.
policyAndBrokerDto
(
brokerDto
)
.
issueNumber
(
i
)
.
issueNumber
(
i
)
.
build
());
.
build
());
//非销售佣金积基本法 - 遍历所有绑定基本法的用户(客户端用户表用户), 计算用户绑定的所有基本法对应的计算值, 新增积分明细和发佣记录 (和保单绑定的转介人在执行基本法项目的SQL时候进行关系对比)
for
(
CommissionRuleBinding
binding
:
commissionRuleBindingList
)
{
for
(
CommissionRuleBinding
binding
:
commissionRuleBindingList
)
{
//执行 - 奖励 (非销售佣金积基本法)
executeReward
(
ExecuteBillingDto
.
builder
()
executeReward
(
ExecuteBillingDto
.
builder
()
.
clientUserBizId
(
binding
.
getTargetId
())
.
clientUserBizId
(
binding
.
getTargetId
())
.
name
(
binding
.
getTargetName
())
.
name
(
binding
.
getTargetName
())
...
@@ -109,6 +139,12 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
...
@@ -109,6 +139,12 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
}
}
}
}
return
Result
.
success
();
return
Result
.
success
();
}
catch
(
Exception
e
)
{
status
.
setRollbackOnly
();
// 标记回滚
log
.
error
(
"异步执行预计发佣失败,已回滚所有操作"
,
e
);
throw
new
BusinessException
(
"异步处理失败: "
+
e
.
getMessage
());
}
});
}
}
/**
/**
...
...
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