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
b4f00c2c
Commit
b4f00c2c
authored
Jan 21, 2026
by
jianan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新单跟进v2
parent
363d4114
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
82 additions
and
22 deletions
+82
-22
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiPolicyFollowController.java
+28
-1
yd-csf-api/src/main/java/com/yd/csf/api/service/ApiExpectedFortuneService.java
+8
-0
yd-csf-api/src/main/java/com/yd/csf/api/service/impl/ApiExpectedFortuneServiceImpl.java
+31
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/PolicyFollowServiceImpl.java
+15
-21
No files found.
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiPolicyFollowController.java
View file @
b4f00c2c
...
@@ -20,6 +20,9 @@ import com.yd.csf.api.dto.CommissionExcelDTO;
...
@@ -20,6 +20,9 @@ import com.yd.csf.api.dto.CommissionExcelDTO;
import
com.yd.csf.api.dto.PolicyExcelDTO
;
import
com.yd.csf.api.dto.PolicyExcelDTO
;
import
com.yd.csf.api.dto.PolicyFollowDTO
;
import
com.yd.csf.api.dto.PolicyFollowDTO
;
import
com.yd.csf.api.listener.PolicyDataListener
;
import
com.yd.csf.api.listener.PolicyDataListener
;
import
com.yd.csf.api.service.ApiExpectedFortuneService
;
import
com.yd.csf.feign.request.expectedfortune.ApiGenerateExpectedFortuneRequest
;
import
com.yd.csf.feign.response.expectedfortune.ApiGenerateExpectedFortuneResponse
;
import
com.yd.csf.service.common.ErrorCode
;
import
com.yd.csf.service.common.ErrorCode
;
import
com.yd.csf.service.component.PolicyReportPdfService
;
import
com.yd.csf.service.component.PolicyReportPdfService
;
import
com.yd.csf.service.dto.*
;
import
com.yd.csf.service.dto.*
;
...
@@ -49,6 +52,7 @@ import javax.servlet.http.HttpServletResponse;
...
@@ -49,6 +52,7 @@ import javax.servlet.http.HttpServletResponse;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.text.ParseException
;
import
java.text.ParseException
;
import
java.util.*
;
import
java.util.*
;
import
java.util.concurrent.CompletableFuture
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
/**
/**
...
@@ -80,6 +84,8 @@ public class ApiPolicyFollowController {
...
@@ -80,6 +84,8 @@ public class ApiPolicyFollowController {
private
PolicyReportPdfService
policyReportPdfService
;
private
PolicyReportPdfService
policyReportPdfService
;
@Resource
@Resource
private
ApiInsuranceReconciliationCompanyFeignClient
apiInsuranceReconciliationCompanyFeignClient
;
private
ApiInsuranceReconciliationCompanyFeignClient
apiInsuranceReconciliationCompanyFeignClient
;
@Resource
private
ApiExpectedFortuneService
apiExpectedFortuneService
;
@PostMapping
(
"/upload/excel"
)
@PostMapping
(
"/upload/excel"
)
...
@@ -527,7 +533,28 @@ public class ApiPolicyFollowController {
...
@@ -527,7 +533,28 @@ public class ApiPolicyFollowController {
if
(
policyFollow
==
null
)
{
if
(
policyFollow
==
null
)
{
return
Result
.
fail
(
ResultCode
.
NULL_ERROR
.
getCode
(),
ResultCode
.
NULL_ERROR
.
getMessage
());
return
Result
.
fail
(
ResultCode
.
NULL_ERROR
.
getCode
(),
ResultCode
.
NULL_ERROR
.
getMessage
());
}
}
return
Result
.
success
(
policyFollowService
.
changePolicyFollowStatus
(
changePolicyFollowStatusRequest
,
policyFollow
));
policyFollowService
.
changePolicyFollowStatus
(
changePolicyFollowStatusRequest
,
policyFollow
);
// 异步:根据保单生成预计出账记录
CompletableFuture
.
runAsync
(()
->
{
try
{
// 调用 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
);
}
});
return
Result
.
success
(
true
);
}
}
/**
/**
...
...
yd-csf-api/src/main/java/com/yd/csf/api/service/ApiExpectedFortuneService.java
View file @
b4f00c2c
...
@@ -24,6 +24,14 @@ import java.util.Map;
...
@@ -24,6 +24,14 @@ import java.util.Map;
public
interface
ApiExpectedFortuneService
{
public
interface
ApiExpectedFortuneService
{
Result
<
ApiGenerateExpectedFortuneResponse
>
generate
(
ApiGenerateExpectedFortuneRequest
request
);
Result
<
ApiGenerateExpectedFortuneResponse
>
generate
(
ApiGenerateExpectedFortuneRequest
request
);
/**
* 生成预计发佣(包含日志记录和Redis处理)
* 用于内部服务调用,会自动保存日志和异常时销毁Redis缓存
* @param request
* @return
*/
Result
<
ApiGenerateExpectedFortuneResponse
>
generateWithLogAndRedis
(
ApiGenerateExpectedFortuneRequest
request
);
@Async
(
"asyncQueryExecutor"
)
@Async
(
"asyncQueryExecutor"
)
Result
execute
(
List
<
QueryPolicyAndBrokerDto
>
queryPolicyAndBrokerDtoList
,
Result
execute
(
List
<
QueryPolicyAndBrokerDto
>
queryPolicyAndBrokerDtoList
,
List
<
CommissionRuleBinding
>
commissionRuleBindingList
,
List
<
CommissionRuleBinding
>
commissionRuleBindingList
,
...
...
yd-csf-api/src/main/java/com/yd/csf/api/service/impl/ApiExpectedFortuneServiceImpl.java
View file @
b4f00c2c
...
@@ -141,6 +141,37 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
...
@@ -141,6 +141,37 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
}
}
/**
/**
* 生成预计发佣(包含日志记录和Redis处理)
* 用于内部服务调用,会自动保存日志和异常时销毁Redis缓存
*
* @param request
* @return
*/
@Override
public
Result
<
ApiGenerateExpectedFortuneResponse
>
generateWithLogAndRedis
(
ApiGenerateExpectedFortuneRequest
request
)
{
try
{
Result
<
ApiGenerateExpectedFortuneResponse
>
result
=
generate
(
request
);
// 保存预计发佣日志记录(成功)
apiExpectedFortuneLogService
.
saveExpectedFortuneLog
(
ApiExpectedFortuneLogDto
.
builder
()
.
errorMsg
(
result
.
getMsg
())
.
policyNo
(
request
.
getPolicyNo
())
.
status
(
2
)
.
build
());
return
result
;
}
catch
(
Exception
e
)
{
// 抛出异常,销毁redis缓存
redisUtil
.
deleteObject
(
RedisConstants
.
EXPECTED_FORTUNE
+
request
.
getPolicyNo
());
// 保存预计发佣日志记录(失败)
apiExpectedFortuneLogService
.
saveExpectedFortuneLog
(
ApiExpectedFortuneLogDto
.
builder
()
.
errorMsg
(
e
.
getMessage
())
.
policyNo
(
request
.
getPolicyNo
())
.
status
(
1
)
.
build
());
return
Result
.
fail
(
e
.
getMessage
());
}
}
/**
* 异步处理-> 遍历保单转介人列表信息 -> 调用基本法算出预计发佣列表
* 异步处理-> 遍历保单转介人列表信息 -> 调用基本法算出预计发佣列表
*
*
* @param queryPolicyAndBrokerDtoList
* @param queryPolicyAndBrokerDtoList
...
...
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/PolicyFollowServiceImpl.java
View file @
b4f00c2c
...
@@ -6,7 +6,6 @@ import cn.hutool.core.date.DateField;
...
@@ -6,7 +6,6 @@ import cn.hutool.core.date.DateField;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.date.DateUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.yd.auth.core.dto.AuthUserDto
;
import
com.yd.auth.core.dto.AuthUserDto
;
...
@@ -16,8 +15,6 @@ import com.yd.common.enums.ResultCode;
...
@@ -16,8 +15,6 @@ import com.yd.common.enums.ResultCode;
import
com.yd.common.exception.BusinessException
;
import
com.yd.common.exception.BusinessException
;
import
com.yd.common.result.Result
;
import
com.yd.common.result.Result
;
import
com.yd.common.utils.RandomStringGenerator
;
import
com.yd.common.utils.RandomStringGenerator
;
import
com.yd.csf.feign.client.expectedfortune.ApiExpectedFortuneFeignClient
;
import
com.yd.csf.feign.request.expectedfortune.ApiGenerateExpectedFortuneRequest
;
import
com.yd.csf.service.common.ErrorCode
;
import
com.yd.csf.service.common.ErrorCode
;
import
com.yd.csf.service.dto.*
;
import
com.yd.csf.service.dto.*
;
import
com.yd.csf.service.enums.FnaStatusEnum
;
import
com.yd.csf.service.enums.FnaStatusEnum
;
...
@@ -32,19 +29,18 @@ import com.yd.csf.service.vo.PolicyFollowDetailVO;
...
@@ -32,19 +29,18 @@ import com.yd.csf.service.vo.PolicyFollowDetailVO;
import
com.yd.csf.service.vo.PolicyFollowVO
;
import
com.yd.csf.service.vo.PolicyFollowVO
;
import
com.yd.insurance.base.feign.client.insurancereconciliationcompany.ApiInsuranceReconciliationCompanyFeignClient
;
import
com.yd.insurance.base.feign.client.insurancereconciliationcompany.ApiInsuranceReconciliationCompanyFeignClient
;
import
com.yd.insurance.base.feign.request.insurancereconciliationcompany.ApiInsuranceReconciliationCompanyPageRequest
;
import
com.yd.insurance.base.feign.request.insurancereconciliationcompany.ApiInsuranceReconciliationCompanyPageRequest
;
import
com.yd.insurance.base.feign.response.insurancereconciliationcompany.ApiInsuranceReconciliationCompanyPageResponse
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.dao.DuplicateKeyException
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.util.*
;
import
java.util.*
;
import
java.util.concurrent.CompletableFuture
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
/**
/**
...
@@ -89,8 +85,7 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
...
@@ -89,8 +85,7 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
private
FnaService
fnaService
;
private
FnaService
fnaService
;
@Resource
@Resource
private
ApiInsuranceReconciliationCompanyFeignClient
apiInsuranceReconciliationCompanyFeignClient
;
private
ApiInsuranceReconciliationCompanyFeignClient
apiInsuranceReconciliationCompanyFeignClient
;
@Resource
private
ApiExpectedFortuneFeignClient
apiExpectedFortuneFeignClient
;
@Override
@Override
public
PolicyFollow
getByPolicyBizId
(
String
policyBizId
)
{
public
PolicyFollow
getByPolicyBizId
(
String
policyBizId
)
{
...
@@ -408,7 +403,12 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
...
@@ -408,7 +403,12 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
policy
.
setUpdaterId
(
loginUserId
);
policy
.
setUpdaterId
(
loginUserId
);
policy
.
setUpdateTime
(
new
Date
());
policy
.
setUpdateTime
(
new
Date
());
policyService
.
save
(
policy
);
try
{
policyService
.
save
(
policy
);
}
catch
(
DuplicateKeyException
e
)
{
// 保单号已存在
throw
new
BusinessException
(
"保单号 "
+
policyFollow
.
getPolicyNo
()
+
" 已存在,请勿重复添加"
);
}
}
}
}
}
return
true
;
return
true
;
...
@@ -466,6 +466,7 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
...
@@ -466,6 +466,7 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
if
(
PolicyFollowStatusEnum
.
EFFECTIVE
.
equals
(
policyFollowStatusEnum
))
{
if
(
PolicyFollowStatusEnum
.
EFFECTIVE
.
equals
(
policyFollowStatusEnum
))
{
Policy
policy
=
new
Policy
();
Policy
policy
=
new
Policy
();
BeanUtils
.
copyProperties
(
policyFollow
,
policy
,
"id"
);
BeanUtils
.
copyProperties
(
policyFollow
,
policy
,
"id"
);
policy
.
setPaymentPremium
(
policyFollow
.
getInitialPremium
());
if
(
ObjectUtils
.
isEmpty
(
policy
.
getInsuranceCompany
())
||
ObjectUtils
.
isEmpty
(
policy
.
getReconciliationCompanyBizId
()))
{
if
(
ObjectUtils
.
isEmpty
(
policy
.
getInsuranceCompany
())
||
ObjectUtils
.
isEmpty
(
policy
.
getReconciliationCompanyBizId
()))
{
// 获取保单产品信息,填充对账公司相关字段
// 获取保单产品信息,填充对账公司相关字段
...
@@ -520,22 +521,15 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
...
@@ -520,22 +521,15 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
}
}
}
}
// 保存保单
// 保存保单
policyService
.
save
(
policy
);
try
{
policyService
.
save
(
policy
);
}
catch
(
DuplicateKeyException
e
)
{
// 保单号已存在
throw
new
BusinessException
(
"保单号 "
+
policy
.
getPolicyNo
()
+
" 已存在,请勿重复添加"
);
}
// 根据保单生成预计入账记录
// 根据保单生成预计入账记录
generateExpectedCommission
(
policyFollow
,
policy
);
generateExpectedCommission
(
policyFollow
,
policy
);
// 异步:根据保单生成预计出账记录
CompletableFuture
.
runAsync
(()
->
{
try
{
ApiGenerateExpectedFortuneRequest
getExpectedFortuneRequest
=
new
ApiGenerateExpectedFortuneRequest
();
getExpectedFortuneRequest
.
setPolicyNo
(
policyFollow
.
getPolicyNo
());
apiExpectedFortuneFeignClient
.
generate
(
getExpectedFortuneRequest
);
}
catch
(
Exception
e
)
{
log
.
error
(
"新单跟进-异步生成预计出账记录失败: {}"
,
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