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
e350da83
Commit
e350da83
authored
Dec 02, 2025
by
jianan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新单跟进135
parent
4a99383b
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
180 additions
and
49 deletions
+180
-49
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiCommissionController.java
+23
-15
yd-csf-service/src/main/java/com/yd/csf/service/service/CommissionAsyncService.java
+65
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/CommissionServiceImpl.java
+92
-34
No files found.
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiCommissionController.java
View file @
e350da83
...
...
@@ -28,6 +28,7 @@ import org.apache.commons.collections4.CollectionUtils;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.multipart.MultipartFile
;
...
...
@@ -137,6 +138,28 @@ public class ApiCommissionController {
entities
.
add
(
entity
);
}
// 保存来佣数据
commissionService
.
saveBatch
(
entities
);
// todo 6. 异步触发比对任务(事务提交后执行)
// TransactionSynchronizationManager.registerSynchronization(
// new TransactionSynchronization() {
// @Override
// public void afterCommit() {
// // 主事务提交后再执行异步任务
// commissionComareBatch(entities);
// }
// }
// );
}
/**
* 异步执行来佣对比(有独立事务)
*/
@Async
(
"commonAsyncExecutor"
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
commissionComareBatch
(
List
<
Commission
>
entities
)
{
// 根据导入的来佣获取保单号集合
List
<
String
>
policyNoList
=
entities
.
stream
()
.
map
(
Commission:
:
getPolicyNo
)
...
...
@@ -146,12 +169,7 @@ public class ApiCommissionController {
.
in
(
CommissionExpected:
:
getPolicyNo
,
policyNoList
)
.
list
();
// 校验导入的来佣是否与预计来佣一致
for
(
Commission
commission
:
entities
)
{
String
policyNo
=
commission
.
getPolicyNo
();
Integer
commissionPeriod
=
commission
.
getCommissionPeriod
();
String
commissionName
=
commission
.
getCommissionName
();
// 查询预计来佣
CommissionExpected
commissionExpected
;
try
{
...
...
@@ -165,22 +183,12 @@ public class ApiCommissionController {
commission
.
setRemark
(
e
.
getMessage
());
}
}
// 保存来佣数据
commissionService
.
saveBatch
(
entities
);
// 更新预计来佣状态
commissionExpectedService
.
updateBatchById
(
expectedList
);
}
private
static
CommissionExpected
getCommissionExpected
(
List
<
CommissionExpected
>
expectedList
,
String
policyNo
,
Integer
commissionPeriod
,
String
commissionName
)
{
return
expectedList
.
stream
()
.
filter
(
item
->
item
.
getPolicyNo
().
equals
(
policyNo
)
&&
commissionPeriod
.
equals
(
item
.
getCommissionPeriod
())
&&
commissionName
.
equals
(
item
.
getCommissionName
()))
.
findFirst
()
.
orElse
(
null
);
}
/**
* 生成可出账(发佣)记录,支持手动复选框选择
*
...
...
yd-csf-service/src/main/java/com/yd/csf/service/service/CommissionAsyncService.java
0 → 100644
View file @
e350da83
package
com
.
yd
.
csf
.
service
.
service
;
import
com.yd.csf.service.enums.CommissionStatusEnum
;
import
com.yd.csf.service.model.Commission
;
import
com.yd.csf.service.model.CommissionExpected
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.annotation.Resource
;
import
java.util.List
;
import
java.util.stream.Collectors
;
@Service
@Slf4j
public
class
CommissionAsyncService
{
@Resource
private
CommissionExpectedService
commissionExpectedService
;
@Resource
private
CommissionService
commissionService
;
@Async
(
"commonAsyncExecutor"
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
commissionCompareBatch
(
List
<
Commission
>
entities
)
{
// 比对逻辑...
log
.
info
(
"开始异步比对,数据量:{}"
,
entities
.
size
());
List
<
String
>
policyNoList
=
entities
.
stream
()
.
map
(
Commission:
:
getPolicyNo
)
.
collect
(
Collectors
.
toList
());
List
<
CommissionExpected
>
expectedList
=
commissionExpectedService
.
lambdaQuery
()
.
in
(
CommissionExpected:
:
getPolicyNo
,
policyNoList
)
.
list
();
// 执行比对...
}
public
void
commissionCompare
(
Commission
commission
)
{
log
.
info
(
"开始执行比对事务,来佣ID: {}, 保单号: {}"
,
commission
.
getId
(),
commission
.
getPolicyNo
());
CommissionExpected
commissionExpected
;
try
{
commissionExpected
=
commissionService
.
queryByCommission
(
commission
);
// 对比预计来佣
commissionService
.
compareWithExpected
(
commission
.
getPremium
(),
commission
,
commissionExpected
);
commissionExpectedService
.
updateById
(
commissionExpected
);
// 比对成功,更新状态
commission
.
setStatus
(
CommissionStatusEnum
.
COMPARE_SUCCESS
.
getItemValue
());
}
catch
(
Exception
e
)
{
// 预计来佣不存在或比对失败
commission
.
setStatus
(
CommissionStatusEnum
.
COMPARE_FAIL
.
getItemValue
());
commission
.
setRemark
(
e
.
getMessage
());
log
.
warn
(
"来佣比对失败,保单号: {},原因: {}"
,
commission
.
getPolicyNo
(),
e
.
getMessage
());
}
// 更新来佣的比对状态(在比对事务中)
commissionService
.
updateById
(
commission
);
}
}
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/CommissionServiceImpl.java
View file @
e350da83
This diff is collapsed.
Click to expand it.
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