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
8c7d5131
Commit
8c7d5131
authored
Jan 21, 2026
by
jianan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新单跟进v2
parent
232b09ed
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
84 additions
and
40 deletions
+84
-40
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiPolicyFollowController.java
+49
-22
yd-csf-service/src/main/java/com/yd/csf/service/service/CommissionExpectedService.java
+11
-2
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/CommissionExpectedServiceImpl.java
+0
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/FnaServiceImpl.java
+18
-15
yd-csf-service/src/main/java/com/yd/csf/service/vo/FnaVO.java
+6
-1
No files found.
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiPolicyFollowController.java
View file @
8c7d5131
...
...
@@ -35,9 +35,11 @@ import com.yd.csf.service.vo.PolicyFollowVO;
import
com.yd.feign.config.FeignTokenInterceptor
;
import
com.yd.insurance.base.feign.client.insurancereconciliationcompany.ApiInsuranceReconciliationCompanyFeignClient
;
import
com.yd.insurance.base.feign.request.insurancereconciliationcompany.ApiInsuranceReconciliationCompanyPageRequest
;
import
com.yd.product.feign.response.expectedspecies.ApiExpectedSpeciesListResponse
;
import
io.swagger.v3.oas.annotations.Operation
;
import
io.swagger.v3.oas.annotations.tags.Tag
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -87,6 +89,8 @@ public class ApiPolicyFollowController {
private
ApiInsuranceReconciliationCompanyFeignClient
apiInsuranceReconciliationCompanyFeignClient
;
@Resource
private
ApiExpectedFortuneService
apiExpectedFortuneService
;
@Resource
private
CommissionExpectedService
commissionExpectedService
;
@PostMapping
(
"/upload/excel"
)
...
...
@@ -535,31 +539,54 @@ public class ApiPolicyFollowController {
return
Result
.
fail
(
ResultCode
.
NULL_ERROR
.
getCode
(),
ResultCode
.
NULL_ERROR
.
getMessage
());
}
PolicyFollowStatusEnum
currentStatusEnum
=
PolicyFollowStatusEnum
.
getEnumByValue
(
changePolicyFollowStatusRequest
.
getStatus
());
// 修改为生效时需要校验、同步预计发佣
if
(
PolicyFollowStatusEnum
.
EFFECTIVE
.
equals
(
currentStatusEnum
))
{
String
productLaunchBizId
=
policyFollow
.
getProductLaunchBizId
();
// 校验产品是否维护预计来佣数据
if
(
ObjectUtils
.
isEmpty
(
productLaunchBizId
))
{
return
Result
.
fail
(
ResultCode
.
NULL_ERROR
.
getCode
(),
"新单跟进记录中,productLaunchBizId不能为空"
);
}
List
<
ApiExpectedSpeciesListResponse
>
expectedSpeciesList
=
commissionExpectedService
.
queryExpectedSpeciesByFeign
(
productLaunchBizId
);
if
(
ObjectUtils
.
isEmpty
(
expectedSpeciesList
))
{
return
Result
.
fail
(
ResultCode
.
NULL_ERROR
.
getCode
(),
"产品未维护预计来佣数据"
);
}
// 校验产品是否维护发佣信息
Boolean
hasCommissionInfo
=
commissionExpectedService
.
checkProductExpectedFortune
(
productLaunchBizId
);
if
(!
hasCommissionInfo
)
{
return
Result
.
fail
(
ResultCode
.
NULL_ERROR
.
getCode
(),
"产品未维护发佣信息"
);
}
}
// 修改逻辑
policyFollowService
.
changePolicyFollowStatus
(
changePolicyFollowStatusRequest
,
policyFollow
);
// 获取Token
String
token
=
request
.
getHeader
(
"Authorization"
);
// 异步:根据保单生成预计出账记录
CompletableFuture
.
runAsync
(()
->
{
try
{
// 设置ThreadLocal Token
FeignTokenInterceptor
.
setThreadLocalToken
(
token
);
// 调用 ApiExpectedFortuneService 的 generateWithLogAndRedis(包含日志和Redis处理)
ApiGenerateExpectedFortuneRequest
generateExpectedFortuneRequest
=
new
ApiGenerateExpectedFortuneRequest
();
generateExpectedFortuneRequest
.
setPolicyNo
(
policyFollow
.
getPolicyNo
());
Result
<
ApiGenerateExpectedFortuneResponse
>
result
=
apiExpectedFortuneService
.
generateWithLogAndRedis
(
generateExpectedFortuneRequest
);
if
(
result
==
null
||
result
.
getCode
()
!=
200
)
{
log
.
error
(
"新单跟进-异步生成预计出账记录失败:保单号={}, 响应结果={}"
,
policyFollow
.
getPolicyNo
(),
result
);
}
else
{
log
.
info
(
"新单跟进-异步生成预计出账记录成功:保单号={}"
,
policyFollow
.
getPolicyNo
());
// 修改为生效时需要同步预计发佣
if
(
PolicyFollowStatusEnum
.
EFFECTIVE
.
equals
(
currentStatusEnum
))
{
// 获取Token
String
token
=
request
.
getHeader
(
"Authorization"
);
// 异步:根据保单生成预计出账记录
CompletableFuture
.
runAsync
(()
->
{
try
{
// 设置ThreadLocal Token
FeignTokenInterceptor
.
setThreadLocalToken
(
token
);
// 调用 ApiExpectedFortuneService 的 generateWithLogAndRedis(包含日志和Redis处理)
ApiGenerateExpectedFortuneRequest
generateExpectedFortuneRequest
=
new
ApiGenerateExpectedFortuneRequest
();
generateExpectedFortuneRequest
.
setPolicyNo
(
policyFollow
.
getPolicyNo
());
Result
<
ApiGenerateExpectedFortuneResponse
>
result
=
apiExpectedFortuneService
.
generateWithLogAndRedis
(
generateExpectedFortuneRequest
);
if
(
result
==
null
||
result
.
getCode
()
!=
200
)
{
log
.
error
(
"新单跟进-异步生成预计出账记录失败:保单号={}, 响应结果={}"
,
policyFollow
.
getPolicyNo
(),
result
);
}
else
{
log
.
info
(
"新单跟进-异步生成预计出账记录成功:保单号={}"
,
policyFollow
.
getPolicyNo
());
}
}
catch
(
Exception
e
)
{
log
.
error
(
"新单跟进-异步生成预计出账记录失败:保单号={}, 错误信息={}"
,
policyFollow
.
getPolicyNo
(),
e
.
getMessage
(),
e
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
"新单跟进-异步生成预计出账记录失败:保单号={}, 错误信息={}"
,
policyFollow
.
getPolicyNo
(),
e
.
getMessage
(),
e
);
}
});
});
}
return
Result
.
success
(
true
);
}
...
...
yd-csf-service/src/main/java/com/yd/csf/service/service/CommissionExpectedService.java
View file @
8c7d5131
...
...
@@ -12,10 +12,9 @@ import com.yd.csf.service.model.Policy;
import
com.yd.csf.service.vo.CommissionExpectedStatisticsVO
;
import
com.yd.csf.service.vo.CommissionExpectedVO
;
import
com.yd.csf.service.vo.ReceivableReportVO
;
import
com.yd.product.feign.response.expectedspecies.ApiExpectedSpeciesListResponse
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.List
;
import
java.util.Map
;
/**
* @author Zhang Jianan
...
...
@@ -62,6 +61,16 @@ public interface CommissionExpectedService extends IService<CommissionExpected>
void
getExpectedCommissionByProductlaunchId
(
Policy
policy
,
String
productLaunchBizId
,
String
insuranceCompanyBizId
,
String
reconciliationCompany
,
String
reconciliationCompanyCode
,
String
reconciliationCompanyBizId
);
List
<
ApiExpectedSpeciesListResponse
>
queryExpectedSpeciesByFeign
(
String
productLaunchBizId
);
/**
* 检查产品是否维护发佣信息
*
* @param productLaunchBizId 产品计划业务ID
* @return true-已维护发佣信息,false-未维护发佣信息
*/
Boolean
checkProductExpectedFortune
(
String
productLaunchBizId
);
/**
* 应收款报表 - 按保单号和期数维度统计(分页)
* @param page 分页参数
...
...
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/CommissionExpectedServiceImpl.java
View file @
8c7d5131
This diff is collapsed.
Click to expand it.
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/FnaServiceImpl.java
View file @
8c7d5131
...
...
@@ -22,6 +22,7 @@ import com.yd.csf.service.enums.FnaStatusEnum;
import
com.yd.csf.service.model.Customer
;
import
com.yd.csf.service.model.Fna
;
import
com.yd.csf.service.model.FnaForm
;
import
com.yd.csf.service.model.Fortune
;
import
com.yd.csf.service.service.CustomerService
;
import
com.yd.csf.service.service.FnaFormService
;
import
com.yd.csf.service.service.FnaService
;
...
...
@@ -50,7 +51,6 @@ public class FnaServiceImpl extends ServiceImpl<FnaMapper, Fna> implements FnaSe
@Autowired
private
FnaFormService
fnaFormService
;
@Resource
private
CustomerService
customerService
;
...
...
@@ -207,10 +207,15 @@ public class FnaServiceImpl extends ServiceImpl<FnaMapper, Fna> implements FnaSe
List
<
FnaVO
>
fnaVOList
=
fnaList
.
stream
().
map
(
FnaVO:
:
objToVo
).
collect
(
Collectors
.
toList
());
// region 可选
// 1. 关联查询用户信息
// Set<Long> userIdSet = fnaList.stream().map(Fna::getUserId).collect(Collectors.toSet());
// Map<Long, List<User>> userIdUserListMap = userService.listByIds(userIdSet).stream()
// .collect(Collectors.groupingBy(User::getId));
// 1. 关联查询客户信息
Set
<
String
>
userIdSet
=
fnaList
.
stream
().
map
(
Fna:
:
getCustomerBizId
).
collect
(
Collectors
.
toSet
());
List
<
Customer
>
customerList
=
customerService
.
lambdaQuery
()
.
in
(
Customer:
:
getCustomerBizId
)
.
select
(
Customer:
:
getCustomerBizId
,
Customer:
:
getNameCn
)
.
list
();
// 客户映射
Map
<
String
,
Customer
>
customerMap
=
customerList
.
stream
().
collect
(
Collectors
.
toMap
(
Customer:
:
getCustomerBizId
,
f
->
f
));
// 2. 已登录,获取用户点赞、收藏状态
Map
<
Long
,
Boolean
>
fnaIdHasThumbMap
=
new
HashMap
<>();
...
...
@@ -219,16 +224,14 @@ public class FnaServiceImpl extends ServiceImpl<FnaMapper, Fna> implements FnaSe
// 填充信息
// fnaVOList.forEach(fnaVO -> {
// Long userId = fnaVO.getUserId();
// User user = null;
// if (userIdUserListMap.containsKey(userId)) {
// user = userIdUserListMap.get(userId).get(0);
// }
// fnaVO.setUser(userService.getUserVO(user));
// fnaVO.setHasThumb(fnaIdHasThumbMap.getOrDefault(fnaVO.getId(), false));
// fnaVO.setHasFavour(fnaIdHasFavourMap.getOrDefault(fnaVO.getId(), false));
// });
fnaVOList
.
forEach
(
fnaVO
->
{
String
customerBizId
=
fnaVO
.
getCustomerBizId
();
Customer
customer
=
customerMap
.
get
(
customerBizId
);
if
(
customer
!=
null
)
{
fnaVO
.
setCustomerNameCn
(
customer
.
getNameCn
());
}
});
// endregion
fnaVOPage
.
setRecords
(
fnaVOList
);
...
...
yd-csf-service/src/main/java/com/yd/csf/service/vo/FnaVO.java
View file @
8c7d5131
...
...
@@ -11,7 +11,6 @@ import java.util.List;
/**
* fna视图
*
*/
@Data
public
class
FnaVO
implements
Serializable
{
...
...
@@ -47,6 +46,12 @@ public class FnaVO implements Serializable {
private
String
customerName
;
/**
* 客户姓名中文
*/
@Schema
(
description
=
"客户姓名中文"
)
private
String
customerNameCn
;
/**
* 客户唯一业务ID
*/
@Schema
(
description
=
"客户唯一业务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