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
e9c901a4
Commit
e9c901a4
authored
Jan 04, 2026
by
jianan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
前端对接问题修复42
parent
90570caa
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
161 additions
and
41 deletions
+161
-41
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiCommissionController.java
+52
-31
yd-csf-api/src/main/java/com/yd/csf/api/dto/CommissionExcelDTO.java
+47
-2
yd-csf-service/src/main/java/com/yd/csf/service/model/Fortune.java
+6
-1
yd-csf-service/src/main/java/com/yd/csf/service/service/CommissionService.java
+2
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/CommissionServiceImpl.java
+47
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/FortuneServiceImpl.java
+5
-6
yd-csf-service/src/main/resources/mappers/FortuneMapper.xml
+2
-1
No files found.
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiCommissionController.java
View file @
e9c901a4
...
...
@@ -14,10 +14,7 @@ import com.yd.csf.service.common.ErrorCode;
import
com.yd.csf.service.component.CommissionAsyncService
;
import
com.yd.csf.service.dto.*
;
import
com.yd.csf.service.enums.CommissionStatusEnum
;
import
com.yd.csf.service.model.Commission
;
import
com.yd.csf.service.model.CommissionCompareRecord
;
import
com.yd.csf.service.model.CommissionEditRecord
;
import
com.yd.csf.service.model.PolicyFollow
;
import
com.yd.csf.service.model.*
;
import
com.yd.csf.service.service.*
;
import
com.yd.csf.service.vo.CommissionStatisticsVO
;
import
com.yd.csf.service.vo.CommissionVO
;
...
...
@@ -44,6 +41,7 @@ import java.math.BigDecimal;
import
java.time.LocalDate
;
import
java.util.*
;
import
java.util.concurrent.TimeUnit
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
/**
...
...
@@ -73,24 +71,26 @@ public class ApiCommissionController {
private
CommissionAsyncService
commissionAsyncService
;
@Resource
private
PolicyFollowService
policyFollowService
;
@Resource
private
PolicyService
policyService
;
@PostMapping
(
"/upload/excel"
)
@Operation
(
summary
=
"上传入账Excel文件"
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Result
<
Boolean
>
uploadExcel
(
@RequestParam
(
"file"
)
MultipartFile
file
,
public
Result
<
List
<
CommissionVO
>
>
uploadExcel
(
@RequestParam
(
"file"
)
MultipartFile
file
,
@RequestParam
(
"reconciliationYearMonth"
)
String
reconciliationYearMonth
)
throws
IOException
{
// 校验来佣检核年月是否为空
if
(
Objects
.
isNull
(
reconciliationYearMonth
))
{
throw
new
BusinessException
(
ResultCode
.
PARAMS_ERROR
.
getCode
(),
"
来佣
检核年月不能为空"
);
throw
new
BusinessException
(
ResultCode
.
PARAMS_ERROR
.
getCode
(),
"
入账
检核年月不能为空"
);
}
List
<
CommissionExcelDTO
>
dataList
=
new
ArrayList
<>();
try
{
dataList
=
EasyExcel
.
read
(
file
.
getInputStream
())
.
head
(
CommissionExcelDTO
.
class
)
.
sheet
(
"
来佣
"
)
.
sheet
(
"
template
"
)
.
doReadSync
();
}
catch
(
IOException
e
)
{
...
...
@@ -107,19 +107,23 @@ public class ApiCommissionController {
throw
new
BusinessException
(
ResultCode
.
PARAMS_ERROR
.
getCode
(),
"当前来佣检核年月所有记录都已检核成功,不允许上传新记录,若需更新请手动操作"
);
}
}
// 校验数据是否为空
if
(
CollectionUtils
.
isEmpty
(
dataList
))
{
throw
new
BusinessException
(
ResultCode
.
PARAMS_ERROR
.
getCode
(),
"导入数据不能为空"
);
}
// 数据完整性校验
validateCommissionUpload
(
dataList
);
//
validateCommissionUpload(dataList);
// 校验保单是否存在
Set
<
String
>
policyNos
=
dataList
.
stream
()
.
map
(
CommissionExcelDTO:
:
getPolicyNo
)
.
map
(
CommissionExcelDTO:
:
getPolicyNo
2
)
.
filter
(
StringUtils:
:
isNotBlank
)
.
collect
(
Collectors
.
toSet
());
List
<
Policy
Follow
>
policyFollows
=
policyFollowService
.
list
(
new
LambdaQueryWrapper
<
PolicyFollow
>
()
.
in
(
Policy
Follow
:
:
getPolicyNo
,
policyNos
)
.
select
(
PolicyFollow:
:
getPolicyNo
)
);
Set
<
String
>
existingPolicyNos
=
polic
yFollows
.
stream
().
map
(
PolicyFollow
:
:
getPolicyNo
).
collect
(
Collectors
.
toSet
());
List
<
Policy
>
policies
=
policyService
.
lambdaQuery
()
.
in
(
Policy:
:
getPolicyNo
,
policyNos
)
.
list
(
);
Set
<
String
>
existingPolicyNos
=
polic
ies
.
stream
().
map
(
Policy
:
:
getPolicyNo
).
collect
(
Collectors
.
toSet
());
StringBuilder
errorMsg
=
new
StringBuilder
();
for
(
CommissionExcelDTO
excelDTO
:
dataList
)
{
...
...
@@ -145,23 +149,26 @@ public class ApiCommissionController {
// 数据处理
List
<
Commission
>
entities
=
processData
(
dataList
,
loginUserId
);
// 转换为 VO
List
<
CommissionVO
>
commissionVOList
=
commissionService
.
getCommissionList
(
entities
);
// 批量比对
TransactionSynchronizationManager
.
registerSynchronization
(
new
TransactionSynchronization
()
{
@Override
public
void
afterCommit
()
{
try
{
// 重新查询最新的数据,获取已提交的数据
commissionAsyncService
.
commissionCompareBatch
(
entities
);
}
catch
(
Exception
e
)
{
// 比对失败不影响主事务,记录日志即可
log
.
error
(
"批量导入, 比对操作执行失败, error: {}"
,
e
.
getMessage
());
}
}
}
);
//
TransactionSynchronizationManager.registerSynchronization(
//
new TransactionSynchronization() {
//
@Override
//
public void afterCommit() {
//
try {
//
// 重新查询最新的数据,获取已提交的数据
//
commissionAsyncService.commissionCompareBatch(entities);
//
} catch (Exception e) {
//
// 比对失败不影响主事务,记录日志即可
//
log.error("批量导入, 比对操作执行失败, error: {}", e.getMessage());
//
}
//
}
//
}
//
);
return
Result
.
success
(
true
);
return
Result
.
success
(
commissionVOList
);
}
/**
...
...
@@ -198,18 +205,18 @@ public class ApiCommissionController {
}
/**
* 1.处理导入的数据
2.比对预计来佣 3.保存到数据库
* 1.处理导入的数据
*/
private
List
<
Commission
>
processData
(
List
<
CommissionExcelDTO
>
dataList
,
String
loginUserId
)
{
List
<
Commission
>
entities
=
new
ArrayList
<>();
for
(
CommissionExcelDTO
data
:
dataList
)
{
// 数据验证
Commission
entity
=
CommissionExcelDTO
.
convertToEntity
(
data
,
loginUserId
);
Commission
entity
=
CommissionExcelDTO
.
convertToEntity
New
(
data
,
loginUserId
);
entities
.
add
(
entity
);
}
// 保存来佣数据
commissionService
.
saveBatch
(
entities
);
//
commissionService.saveBatch(entities);
return
entities
;
}
...
...
@@ -247,6 +254,20 @@ public class ApiCommissionController {
return
Result
.
success
(
commissionService
.
addCommissionBatch
(
customerAddRequestList
));
}
// commissionAsyncService.commissionCompareBatch(commissionList);
@GetMapping
(
"/test"
)
public
Result
<
List
<
Commission
>>
testCompareBatch
(
@RequestParam
(
"customerBizId"
)
String
policyNo
)
{
if
(
StringUtils
.
isBlank
(
policyNo
))
{
return
Result
.
fail
(
ResultCode
.
PARAMS_ERROR
.
getCode
(),
"保单号不能为空"
);
}
List
<
Commission
>
commissionList
=
commissionService
.
list
(
new
QueryWrapper
<
Commission
>().
eq
(
"policy_no"
,
policyNo
));
if
(
CollectionUtils
.
isEmpty
(
commissionList
))
{
return
Result
.
fail
(
ResultCode
.
PARAMS_ERROR
.
getCode
(),
"未查询到来佣数据"
);
}
commissionAsyncService
.
commissionCompareBatch
(
commissionList
);
return
Result
.
success
(
commissionList
);
}
/**
* 同步到预计来佣
*
...
...
yd-csf-api/src/main/java/com/yd/csf/api/dto/CommissionExcelDTO.java
View file @
e9c901a4
...
...
@@ -3,11 +3,9 @@ package com.yd.csf.api.dto;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
com.yd.common.enums.CommonEnum
;
import
com.yd.common.utils.RandomStringGenerator
;
import
com.yd.csf.service.enums.CommissionStatusEnum
;
import
com.yd.csf.service.model.Commission
;
import
com.yd.csf.service.model.CommissionExpected
;
import
lombok.Data
;
import
org.springframework.beans.BeanUtils
;
import
java.math.BigDecimal
;
import
java.util.Date
;
...
...
@@ -50,6 +48,53 @@ public class CommissionExcelDTO {
@ExcelProperty
(
"备注"
)
private
String
remark
;
@ExcelProperty
(
"应收单类型"
)
private
String
commissionBizType
;
@ExcelProperty
(
"关联保单号"
)
private
String
policyNo2
;
@ExcelProperty
(
"佣金期数"
)
private
Integer
commissionPeriod2
;
@ExcelProperty
(
"入账日(实)"
)
private
Date
commissionDate2
;
@ExcelProperty
(
"入账金额"
)
private
BigDecimal
amount2
;
@ExcelProperty
(
"入账币种"
)
private
String
currency2
;
@ExcelProperty
(
"入账项目"
)
private
String
commissionName2
;
@ExcelProperty
(
"结算汇率(实)"
)
private
String
exchangeRate2
;
/**
* 数据转换
*/
public
static
Commission
convertToEntityNew
(
CommissionExcelDTO
data
,
String
loginUserId
)
{
Commission
entity
=
new
Commission
();
// 字段映射
entity
.
setPolicyNo
(
data
.
getPolicyNo2
());
entity
.
setCommissionPeriod
(
data
.
getCommissionPeriod2
());
entity
.
setCommissionName
(
data
.
getCommissionName2
());
entity
.
setAmount
(
data
.
getAmount2
());
entity
.
setCurrency
(
data
.
getCurrency2
());
entity
.
setExchangeRate
(
data
.
getExchangeRate2
());
entity
.
setCommissionDate
(
data
.
getCommissionDate2
());
entity
.
setRemark
(
data
.
getRemark
());
entity
.
setStatus
(
null
);
entity
.
setCreatorId
(
loginUserId
);
entity
.
setUpdaterId
(
loginUserId
);
entity
.
setCreateTime
(
new
Date
());
entity
.
setUpdateTime
(
new
Date
());
return
entity
;
}
/**
* 数据转换
*/
...
...
yd-csf-service/src/main/java/com/yd/csf/service/model/Fortune.java
View file @
e9c901a4
...
...
@@ -134,11 +134,16 @@ public class Fortune implements Serializable {
private
String
status
;
/**
* 出账日期
*
预计
出账日期
*/
private
LocalDate
payoutDate
;
/**
* 实际出账日期
*/
private
LocalDate
actualPayoutDate
;
/**
* 出账数据业务ID
*/
private
String
fortuneAccountBizId
;
...
...
yd-csf-service/src/main/java/com/yd/csf/service/service/CommissionService.java
View file @
e9c901a4
...
...
@@ -24,6 +24,8 @@ public interface CommissionService extends IService<Commission> {
Page
<
CommissionVO
>
getCommissionVOPage
(
Page
<
Commission
>
commissionPage
);
List
<
CommissionVO
>
getCommissionList
(
List
<
Commission
>
commissionList
);
Boolean
updateCommission
(
CommissionUpdateRequest
commissionUpdateRequest
);
Boolean
generateFortune
(
GenerateFortuneRequest
generateFortuneRequest
);
...
...
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/CommissionServiceImpl.java
View file @
e9c901a4
...
...
@@ -158,6 +158,53 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
}
@Override
public
List
<
CommissionVO
>
getCommissionList
(
List
<
Commission
>
commissionList
)
{
if
(
CollUtil
.
isEmpty
(
commissionList
))
{
return
Collections
.
emptyList
();
}
// 1.关联查询保单信息
Set
<
String
>
policyNoSet
=
commissionList
.
stream
().
map
(
Commission:
:
getPolicyNo
).
collect
(
Collectors
.
toSet
());
QueryWrapper
<
Policy
>
queryWrapper
=
new
QueryWrapper
<
Policy
>();
queryWrapper
.
in
(
"policy_no"
,
policyNoSet
);
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
);
Policy
policy
=
policyMap
.
get
(
commission
.
getPolicyNo
());
if
(
policy
!=
null
)
{
// 填充保费、产品名称、保险公司、对账公司
commissionVO
.
setPremium
(
policy
.
getPaymentPremium
());
commissionVO
.
setProductName
(
policy
.
getProductName
());
commissionVO
.
setProductLaunchBizId
(
policy
.
getProductLaunchBizId
());
commissionVO
.
setInsuranceCompanyBizId
(
policy
.
getInsuranceCompanyBizId
());
commissionVO
.
setInsuranceCompany
(
policy
.
getInsuranceCompany
());
commissionVO
.
setReconciliationCompany
(
policy
.
getReconciliationCompany
());
commissionVO
.
setReconciliationCompanyBizId
(
policy
.
getReconciliationCompanyBizId
());
}
CommissionExpected
commissionExpected
=
commissionExpectedMap
.
get
(
commission
.
getCommissionExpectedBizId
());
if
(
commissionExpected
!=
null
)
{
// 填充应收账款编号
commissionVO
.
setReceivableNo
(
commissionExpected
.
getReceivableNo
());
commissionVO
.
setCommissionExpectedStatus
(
commissionExpected
.
getStatus
());
}
return
commissionVO
;
}).
collect
(
Collectors
.
toList
());
return
commissionVOList
;
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Boolean
updateCommission
(
CommissionUpdateRequest
commissionUpdateRequest
)
{
String
commissionBizId
=
commissionUpdateRequest
.
getCommissionBizId
();
...
...
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/FortuneServiceImpl.java
View file @
e9c901a4
...
...
@@ -183,8 +183,8 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
newFortune
.
setFortuneBizId
(
RandomStringGenerator
.
generateBizId16
(
CommonEnum
.
UID_TYPE_FORTUNE
.
getCode
()));
newFortune
.
setExpectedFortuneBizId
(
expectedFortune
.
getExpectedFortuneBizId
());
newFortune
.
setIsPart
(
1
);
//
出账年月
为次月
newFortune
.
set
ReconciliationYearMonth
(
calculateReconciliationYearMonth
(
fortune
));
//
设置预计出账日期
为次月
newFortune
.
set
PayoutDate
(
calculateReconciliationYearMonth
(
fortune
));
this
.
save
(
newFortune
);
}
...
...
@@ -205,10 +205,9 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
return
this
.
updateById
(
fortune
);
}
private
String
calculateReconciliationYearMonth
(
Fortune
fortune
)
{
// 出账年月为次月
LocalDate
reconciliationDate
=
LocalDate
.
now
().
plusMonths
(
1
);
return
reconciliationDate
.
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM"
));
private
LocalDate
calculateReconciliationYearMonth
(
Fortune
fortune
)
{
// 设置预计出账日期为次月
return
LocalDate
.
now
().
plusMonths
(
1
);
}
@Override
...
...
yd-csf-service/src/main/resources/mappers/FortuneMapper.xml
View file @
e9c901a4
...
...
@@ -27,6 +27,7 @@
<result
property=
"currentPaymentAmount"
column=
"current_payment_amount"
/>
<result
property=
"status"
column=
"status"
/>
<result
property=
"payoutDate"
column=
"payout_date"
/>
<result
property=
"actualPayoutDate"
column=
"actual_payout_date"
/>
<result
property=
"isTax"
column=
"is_tax"
/>
<result
property=
"taxAmount"
column=
"tax_amount"
/>
<result
property=
"netAmount"
column=
"net_amount"
/>
...
...
@@ -46,7 +47,7 @@
id,fortune_biz_id,expected_fortune_biz_id,reconciliation_year_month,fortune_biz_type,batch_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,is_part,
amount,currency,current_payment_amount,status,payout_date,is_tax,
amount,currency,current_payment_amount,status,payout_date,
actual_payout_date,
is_tax,
tax_amount,net_amount,salary_biz_id,base_rule_biz_id,settlement_biz_id,
calculation_formula,remark,is_deleted,creator_id,updater_id,
create_time,update_time
...
...
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