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
b23d2dfb
Commit
b23d2dfb
authored
Nov 03, 2025
by
jianan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新单跟进14
parent
5275117a
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
651 additions
and
71 deletions
+651
-71
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiPolicyController.java
+12
-10
yd-csf-service/src/main/java/com/yd/csf/service/dao/PolicyAdditionalMapper.java
+18
-0
yd-csf-service/src/main/java/com/yd/csf/service/dto/PolicyFollowAggregateDto.java
+81
-5
yd-csf-service/src/main/java/com/yd/csf/service/dto/PolicyUpdateRequest.java
+217
-0
yd-csf-service/src/main/java/com/yd/csf/service/model/PolicyAdditional.java
+123
-0
yd-csf-service/src/main/java/com/yd/csf/service/model/PolicyFollow.java
+6
-1
yd-csf-service/src/main/java/com/yd/csf/service/service/PolicyAdditionalService.java
+13
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/PolicyService.java
+3
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/PolicyAdditionalServiceImpl.java
+22
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/PolicyFollowServiceImpl.java
+45
-19
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/PolicyServiceImpl.java
+18
-0
yd-csf-service/src/main/resources/mappers/PolicyAdditionalMapper.xml
+36
-0
yd-csf-service/src/main/resources/mappers/PolicyFollowMapper.xml
+57
-36
No files found.
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiPolicyController.java
View file @
b23d2dfb
...
...
@@ -2,10 +2,12 @@ package com.yd.csf.api.controller;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.yd.common.enums.ResultCode
;
import
com.yd.common.result.Result
;
import
com.yd.csf.service.dto.CommissionExpectedQueryRequest
;
import
com.yd.csf.service.dto.PolicyQueryRequest
;
import
com.yd.csf.service.dto.PolicyUpdateRequest
;
import
com.yd.csf.service.model.CommissionExpected
;
import
com.yd.csf.service.model.Policy
;
import
com.yd.csf.service.service.CommissionExpectedService
;
...
...
@@ -81,19 +83,19 @@ public class ApiPolicyController {
// }
/**
* 更新保单
* 更新保单
(产品计划)
*
* @param
P
olicyUpdateRequest
* @param
p
olicyUpdateRequest
* @return
*/
//
@PostMapping("/update")
//
@Operation(summary = "更新保单信息")
// public Result<Boolean> updatePolicy(@RequestBody PolicyUpdateRequest P
olicyUpdateRequest) {
// if (PolicyUpdateRequest == null || P
olicyUpdateRequest.getPolicyBizId() == null) {
// return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), Error
Code.PARAMS_ERROR.getMessage());
//
}
// return Result.success(PolicyService.updatePolicy(P
olicyUpdateRequest));
//
}
@PostMapping
(
"/update"
)
@Operation
(
summary
=
"更新保单信息"
)
public
Result
<
Boolean
>
updatePolicy
(
@RequestBody
PolicyUpdateRequest
p
olicyUpdateRequest
)
{
if
(
policyUpdateRequest
==
null
||
p
olicyUpdateRequest
.
getPolicyBizId
()
==
null
)
{
return
Result
.
fail
(
ResultCode
.
PARAMS_ERROR
.
getCode
(),
Result
Code
.
PARAMS_ERROR
.
getMessage
());
}
return
Result
.
success
(
policyService
.
updatePolicy
(
p
olicyUpdateRequest
));
}
/**
* 根据 policyBizId 获取保单(封装类)
...
...
yd-csf-service/src/main/java/com/yd/csf/service/dao/PolicyAdditionalMapper.java
0 → 100644
View file @
b23d2dfb
package
com
.
yd
.
csf
.
service
.
dao
;
import
com.yd.csf.service.model.PolicyAdditional
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
/**
* @author Zhang Jianan
* @description 针对表【policy_additional(保单附加险信息表)】的数据库操作Mapper
* @createDate 2025-11-03 11:05:09
* @Entity generator.domain.PolicyAdditional
*/
public
interface
PolicyAdditionalMapper
extends
BaseMapper
<
PolicyAdditional
>
{
}
yd-csf-service/src/main/java/com/yd/csf/service/dto/PolicyFollowAggregateDto.java
View file @
b23d2dfb
package
com
.
yd
.
csf
.
service
.
dto
;
import
com.yd.csf.feign.dto.appointment.*
;
import
com.yd.csf.service.model.*
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
lombok.Data
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.springframework.beans.BeanUtils
;
import
java.io.Serializable
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Objects
;
/**
* 新单跟进聚合查询结果DTO
...
...
@@ -18,35 +24,41 @@ public class PolicyFollowAggregateDto implements Serializable {
@Schema
(
description
=
"新单跟进业务ID"
)
private
String
policyBizId
;
/**
* 客户业务ID
*/
@Schema
(
description
=
"客户业务ID"
)
private
String
customerBizId
;
/**
* 保单产品计划(保单)
*/
@Schema
(
description
=
"保单产品计划(保单)"
)
private
Policy
policy
;
private
ApiProductPlanInfoDto
apiProductPlanInfoDto
;
/**
* 保单投保人
*/
@Schema
(
description
=
"保单投保人"
)
private
List
<
PolicyPolicyholder
>
policyPolicyholderList
;
private
ApiPolicyholderInfoDto
apiPolicyholderInfoDto
;
/**
* 保单受保人
*/
@Schema
(
description
=
"保单受保人"
)
private
List
<
PolicyInsurant
>
policyInsurantList
;
private
ApiInsurantInfoDto
apiInsurantInfoDto
;
/**
* 保单受益人
*/
@Schema
(
description
=
"保单受益人"
)
private
List
<
PolicyBeneficiary
>
policyBeneficiary
List
;
private
List
<
ApiBeneficiaryInfoDto
>
apiBeneficiaryInfoDto
List
;
/**
* 保单第二持有人
*/
@Schema
(
description
=
"保单第二持有人"
)
private
List
<
PolicySecondHolder
>
policySecondHolderList
;
private
ApiSecondHolderInfoDto
apiSecondHolderInfoDto
;
// todo 健康问卷
// private Object policyholderInfo;
...
...
@@ -55,4 +67,67 @@ public class PolicyFollowAggregateDto implements Serializable {
private
String
errorMessage
;
private
static
final
long
serialVersionUID
=
1L
;
public
static
PolicyFollowAggregateDto
convertToDto
(
Policy
policy
,
List
<
PolicyAdditional
>
policyAdditionals
,
PolicyPolicyholder
policyPolicyholder
,
PolicyInsurant
policyInsurant
,
List
<
PolicyBeneficiary
>
beneficiaryList
,
PolicySecondHolder
policySecondHolder
)
{
PolicyFollowAggregateDto
dto
=
new
PolicyFollowAggregateDto
();
if
(
ObjectUtils
.
isEmpty
(
policy
))
{
return
dto
;
}
// 设置保单产品计划(保单)
if
(
ObjectUtils
.
isNotEmpty
(
policy
))
{
ApiProductPlanInfoDto
apiProductPlanInfoDto
=
new
ApiProductPlanInfoDto
();
// 产品计划主信息
ApiProductPlanMainInfoDto
apiProductPlanMainInfoDto
=
new
ApiProductPlanMainInfoDto
();
BeanUtils
.
copyProperties
(
policy
,
apiProductPlanMainInfoDto
);
apiProductPlanInfoDto
.
setApiProductPlanMainInfoDto
(
apiProductPlanMainInfoDto
);
// 附加险列表
List
<
ApiProductPlanAdditionalInfoDto
>
apiProductPlanAdditionalInfoDtoList
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isNotEmpty
(
policyAdditionals
))
{
policyAdditionals
.
forEach
(
policyAdditional
->
{
ApiProductPlanAdditionalInfoDto
apiProductPlanAdditionalInfoDto
=
new
ApiProductPlanAdditionalInfoDto
();
BeanUtils
.
copyProperties
(
policyAdditional
,
apiProductPlanAdditionalInfoDto
);
apiProductPlanAdditionalInfoDtoList
.
add
(
apiProductPlanAdditionalInfoDto
);
});
}
apiProductPlanInfoDto
.
setApiProductPlanAdditionalInfoDtoList
(
apiProductPlanAdditionalInfoDtoList
);
}
// 设置保单投保人
if
(
ObjectUtils
.
isNotEmpty
(
policyPolicyholder
))
{
ApiPolicyholderInfoDto
apiPolicyholderInfoDto
=
new
ApiPolicyholderInfoDto
();
BeanUtils
.
copyProperties
(
policyPolicyholder
,
apiPolicyholderInfoDto
);
dto
.
setApiPolicyholderInfoDto
(
apiPolicyholderInfoDto
);
}
// 设置保单受保人
if
(
ObjectUtils
.
isNotEmpty
(
policyInsurant
))
{
ApiInsurantInfoDto
apiInsurantInfoDto
=
new
ApiInsurantInfoDto
();
BeanUtils
.
copyProperties
(
policyInsurant
,
apiInsurantInfoDto
);
dto
.
setApiInsurantInfoDto
(
apiInsurantInfoDto
);
}
// 设置保单受益人
if
(
CollectionUtils
.
isNotEmpty
(
beneficiaryList
))
{
List
<
ApiBeneficiaryInfoDto
>
apiBeneficiaryInfoDtoList
=
new
ArrayList
<>();
beneficiaryList
.
forEach
(
beneficiary
->
{
ApiBeneficiaryInfoDto
apiBeneficiaryInfoDto
=
new
ApiBeneficiaryInfoDto
();
BeanUtils
.
copyProperties
(
beneficiary
,
apiBeneficiaryInfoDto
);
apiBeneficiaryInfoDtoList
.
add
(
apiBeneficiaryInfoDto
);
});
dto
.
setApiBeneficiaryInfoDtoList
(
apiBeneficiaryInfoDtoList
);
}
// 设置保单第二持有人
if
(
ObjectUtils
.
isNotEmpty
(
policySecondHolder
))
{
ApiSecondHolderInfoDto
apiSecondHolderInfoDto
=
new
ApiSecondHolderInfoDto
();
BeanUtils
.
copyProperties
(
policySecondHolder
,
apiSecondHolderInfoDto
);
dto
.
setApiSecondHolderInfoDto
(
apiSecondHolderInfoDto
);
}
return
dto
;
}
}
\ No newline at end of file
yd-csf-service/src/main/java/com/yd/csf/service/dto/PolicyUpdateRequest.java
0 → 100644
View file @
b23d2dfb
package
com
.
yd
.
csf
.
service
.
dto
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
@Data
public
class
PolicyUpdateRequest
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 新单跟进唯一业务ID
*/
@Schema
(
description
=
"新单跟进唯一业务ID"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
)
private
String
policyBizId
;
/**
* 保单号
*/
@Schema
(
description
=
"保单号"
)
private
String
policyNo
;
/**
* 产品业务id
*/
@Schema
(
description
=
"产品业务id"
)
private
String
planBizId
;
/**
* 产品代码
*/
@Schema
(
description
=
"产品代码"
)
private
String
productCode
;
/**
* 产品名称
*/
@Schema
(
description
=
"产品名称"
)
private
String
productName
;
/**
* 产品险种
*/
@Schema
(
description
=
"产品险种"
)
private
String
productCate
;
/**
* 保险公司
*/
@Schema
(
description
=
"保险公司"
)
private
String
insurer
;
/**
* 保险公司业务id
*/
@Schema
(
description
=
"保险公司业务id"
)
private
String
insurerBizId
;
/**
* 地区
*/
@Schema
(
description
=
"地区"
)
private
String
region
;
/**
* 保單投保人业务id
*/
@Schema
(
description
=
"保單投保人业务id"
)
private
String
policyPolicyholderBizId
;
/**
* 保單持有人名称
*/
@Schema
(
description
=
"保單持有人名称"
)
private
String
policyHolder
;
/**
* 保单受保人业务id
*/
@Schema
(
description
=
"保单受保人业务id"
)
private
String
policyInsurantBizId
;
/**
* 保单受保人名称
*/
@Schema
(
description
=
"保单受保人名称"
)
private
String
insured
;
/**
* 供款年期(字典)
*/
@Schema
(
description
=
"供款年期(字典)"
)
private
Integer
paymentTerm
;
/**
* 付款频率(字典)
*/
@Schema
(
description
=
"付款频率(字典)"
)
private
String
paymentFrequency
;
/**
* 期交保费
*/
@Schema
(
description
=
"期交保费"
)
private
BigDecimal
paymentPremium
;
/**
* 保单状态
*/
@Schema
(
description
=
"保单状态 字典值:csf_policy_status"
)
private
String
status
;
/**
* 币种
*/
@Schema
(
description
=
"币种"
)
private
String
currency
;
/**
* 首期保费(不含徽费,预缴保费)
*/
@Schema
(
description
=
"首期保费(不含徽费,预缴保费)"
)
private
Integer
initialPremium
;
/**
* 签单日期
*/
@Schema
(
description
=
"签单日期 格式:yyyy-MM-dd"
)
private
Date
signDate
;
/**
* 缮发日期
*/
@Schema
(
description
=
"缮发日期 格式:yyyy-MM-dd"
)
private
Date
issueDate
;
/**
* 生效日期
*/
@Schema
(
description
=
"生效日期 格式:yyyy-MM-dd"
)
private
Date
effectiveDate
;
/**
* 续保日期
*/
@Schema
(
description
=
"续保日期 格式:yyyy-MM-dd"
)
private
Date
renewalDate
;
/**
* 是否预缴: 0-否, 1-是
*/
@Schema
(
description
=
"是否预缴: 0-否, 1-是"
)
private
Integer
isPrepaid
;
/**
* 预付额
*/
@Schema
(
description
=
"预付额"
)
private
String
deductibles
;
/**
* 预缴年期
*/
@Schema
(
description
=
"预缴年期"
)
private
Integer
prepaidTerm
;
/**
* 首期付款方式(字典)
*/
@Schema
(
description
=
"首期付款方式(字典)"
)
private
String
initialPaymentMethod
;
/**
* 续期付款方式(字典)
*/
@Schema
(
description
=
"续期付款方式(字典)"
)
private
String
renewalPaymentMethod
;
/**
* 红利分配方式(字典)
*/
@Schema
(
description
=
"红利分配方式(字典)"
)
private
String
dividendDistributionMethod
;
/**
* 保单日期回溯: 0-否, 1-是(字典)
*/
@Schema
(
description
=
"保单日期回溯: 0-否, 1-是(字典)"
)
private
Integer
isBacktrack
;
/**
* 是否参加递增保障权益: 0-否, 1-是(字典)
*/
@Schema
(
description
=
"是否参加递增保障权益: 0-否, 1-是(字典)"
)
private
Integer
isJoin
;
/**
* 对账公司
*/
@Schema
(
description
=
"对账公司"
)
private
String
reconciliationCompany
;
/**
* 对账公司业务id
*/
@Schema
(
description
=
"对账公司业务id"
)
private
String
reconciliationCompanyBizId
;
/**
* 备注
*/
@Schema
(
description
=
"备注"
)
private
String
remark
;
}
yd-csf-service/src/main/java/com/yd/csf/service/model/PolicyAdditional.java
0 → 100644
View file @
b23d2dfb
package
com
.
yd
.
csf
.
service
.
model
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
lombok.Data
;
/**
* 保单附加险信息表
* @TableName policy_additional
*/
@TableName
(
value
=
"policy_additional"
)
@Data
public
class
PolicyAdditional
implements
Serializable
{
/**
*
*/
@TableId
(
type
=
IdType
.
AUTO
)
private
Long
id
;
/**
* 保单附加险信息表唯一业务ID
*/
private
String
policyAdditionalBizId
;
/**
* 新单跟进业务ID
*/
private
String
policyBizId
;
/**
* 保单号
*/
private
String
policyNo
;
/**
* 产品计划信息表唯一业务ID
*/
private
String
planBizId
;
/**
* 保险附加产品唯一业务ID(中台保险附加产品业务id,冗余)
*/
private
String
additionalProductBizId
;
/**
* 保险附加产品名称(中台保险附加产品名称,冗余)
*/
private
String
addProductName
;
/**
* 货币(字典)
*/
private
String
currency
;
/**
* 保费
*/
private
BigDecimal
premium
;
/**
* 保额
*/
private
BigDecimal
sumInsured
;
/**
* 保障地区(字典)
*/
private
String
guaranteeRegion
;
/**
* 等级(字典)
*/
private
String
level
;
/**
* 自付额(字典)
*/
private
String
deductibles
;
/**
* 附加保障(json串)
*/
private
String
additionalSafeguards
;
/**
* 通用备注
*/
private
String
remark
;
/**
* 删除标识: 0-正常, 1-删除
*/
private
Integer
isDeleted
;
/**
* 创建人ID
*/
private
String
creatorId
;
/**
* 更新人ID
*/
private
String
updaterId
;
/**
* 创建时间
*/
private
Date
createTime
;
/**
* 更新时间
*/
private
Date
updateTime
;
@TableField
(
exist
=
false
)
private
static
final
long
serialVersionUID
=
1L
;
}
\ No newline at end of file
yd-csf-service/src/main/java/com/yd/csf/service/model/PolicyFollow.java
View file @
b23d2dfb
...
...
@@ -193,11 +193,16 @@ public class PolicyFollow implements Serializable {
private
Object
initialPremium
;
/**
* 寄送方式
* 寄送方式
1-自提, 2-快递
*/
private
String
mailingMethod
;
/**
* 快递单号
*/
private
String
deliveryNo
;
/**
* 经纪公司签收日期
*/
private
String
brokerSignDate
;
...
...
yd-csf-service/src/main/java/com/yd/csf/service/service/PolicyAdditionalService.java
0 → 100644
View file @
b23d2dfb
package
com
.
yd
.
csf
.
service
.
service
;
import
com.yd.csf.service.model.PolicyAdditional
;
import
com.baomidou.mybatisplus.extension.service.IService
;
/**
* @author Zhang Jianan
* @description 针对表【policy_additional(保单附加险信息表)】的数据库操作Service
* @createDate 2025-11-03 11:05:09
*/
public
interface
PolicyAdditionalService
extends
IService
<
PolicyAdditional
>
{
}
yd-csf-service/src/main/java/com/yd/csf/service/service/PolicyService.java
View file @
b23d2dfb
...
...
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.yd.csf.service.dto.PolicyQueryRequest
;
import
com.yd.csf.service.dto.PolicyUpdateRequest
;
import
com.yd.csf.service.model.Policy
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.yd.csf.service.vo.PolicyVO
;
...
...
@@ -18,4 +19,6 @@ public interface PolicyService extends IService<Policy> {
QueryWrapper
<
Policy
>
getQueryWrapper
(
PolicyQueryRequest
policyQueryRequest
);
Page
<
PolicyVO
>
getPolicyVOPage
(
Page
<
Policy
>
policyPage
);
Boolean
updatePolicy
(
PolicyUpdateRequest
policyUpdateRequest
);
}
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/PolicyAdditionalServiceImpl.java
0 → 100644
View file @
b23d2dfb
package
com
.
yd
.
csf
.
service
.
service
.
impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.yd.csf.service.model.PolicyAdditional
;
import
com.yd.csf.service.service.PolicyAdditionalService
;
import
com.yd.csf.service.dao.PolicyAdditionalMapper
;
import
org.springframework.stereotype.Service
;
/**
* @author Zhang Jianan
* @description 针对表【policy_additional(保单附加险信息表)】的数据库操作Service实现
* @createDate 2025-11-03 11:05:09
*/
@Service
public
class
PolicyAdditionalServiceImpl
extends
ServiceImpl
<
PolicyAdditionalMapper
,
PolicyAdditional
>
implements
PolicyAdditionalService
{
}
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/PolicyFollowServiceImpl.java
View file @
b23d2dfb
...
...
@@ -10,6 +10,9 @@ import com.yd.common.enums.CommonEnum;
import
com.yd.common.enums.ResultCode
;
import
com.yd.common.exception.BusinessException
;
import
com.yd.common.utils.RandomStringGenerator
;
import
com.yd.csf.feign.dto.appointment.ApiProductPlanAdditionalInfoDto
;
import
com.yd.csf.feign.dto.appointment.ApiProductPlanInfoDto
;
import
com.yd.csf.feign.dto.appointment.ApiProductPlanMainInfoDto
;
import
com.yd.csf.service.common.ErrorCode
;
import
com.yd.csf.service.dto.*
;
import
com.yd.csf.service.enums.PolicyFollowStatusEnum
;
...
...
@@ -19,6 +22,7 @@ import com.yd.csf.service.dao.PolicyFollowMapper;
import
com.yd.csf.service.utils.AsyncQueryUtil
;
import
com.yd.csf.service.vo.PolicyFollowVO
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
...
...
@@ -61,6 +65,8 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
private
PolicyBeneficiaryService
policyBeneficiaryService
;
@Resource
private
PolicySecondHolderService
policySecondHolderService
;
@Resource
private
PolicyAdditionalService
policyAdditionalService
;
@Override
...
...
@@ -360,27 +366,33 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
"查询保单信息"
);
// 2. 异步查询保单投保人
CompletableFuture
<
List
<
PolicyPolicyholder
>>
policyholderListFuture
=
asyncQueryUtil
.
asyncQuery
(
// 1.1 异步查询附加险列表
CompletableFuture
<
List
<
PolicyAdditional
>>
additionalListFuture
=
asyncQueryUtil
.
asyncQuery
(
()
->
policyAdditionalService
.
list
(
new
QueryWrapper
<
PolicyAdditional
>().
eq
(
"policy_biz_id"
,
policyBizId
)),
"查询附加险列表"
);
// 1.2 异步查询保单投保人
CompletableFuture
<
PolicyPolicyholder
>
policyholderFuture
=
asyncQueryUtil
.
asyncQuery
(
()
->
{
QueryWrapper
<
PolicyPolicyholder
>
queryWrapper
=
new
QueryWrapper
<>();
queryWrapper
.
eq
(
"policy_biz_id"
,
policyBizId
);
return
policyPolicyholderService
.
list
(
queryWrapper
);
return
policyPolicyholderService
.
getOne
(
queryWrapper
);
},
"查询保单投保人"
);
//
3.
异步查询保单受保人
CompletableFuture
<
List
<
PolicyInsurant
>
>
insurantListFuture
=
asyncQueryUtil
.
asyncQuery
(
//
1.3
异步查询保单受保人
CompletableFuture
<
PolicyInsurant
>
insurantListFuture
=
asyncQueryUtil
.
asyncQuery
(
()
->
{
QueryWrapper
<
PolicyInsurant
>
queryWrapper
=
new
QueryWrapper
<>();
queryWrapper
.
eq
(
"policy_biz_id"
,
policyBizId
);
return
policyInsurantService
.
list
(
queryWrapper
);
return
policyInsurantService
.
getOne
(
queryWrapper
);
},
"查询保单受保人"
);
//
4.
异步查询保单受益人
//
1.4
异步查询保单受益人
CompletableFuture
<
List
<
PolicyBeneficiary
>>
beneficiaryListFuture
=
asyncQueryUtil
.
asyncQuery
(
()
->
{
QueryWrapper
<
PolicyBeneficiary
>
queryWrapper
=
new
QueryWrapper
<>();
...
...
@@ -390,27 +402,41 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
"查询保单受益人"
);
//
5.
异步查询保单第二持有人
CompletableFuture
<
List
<
PolicySecondHolder
>>
secondPolicyholderList
Future
=
asyncQueryUtil
.
asyncQuery
(
//
1.5
异步查询保单第二持有人
CompletableFuture
<
PolicySecondHolder
>
policySecondHolder
Future
=
asyncQueryUtil
.
asyncQuery
(
()
->
{
QueryWrapper
<
PolicySecondHolder
>
queryWrapper
=
new
QueryWrapper
<>();
queryWrapper
.
eq
(
"policy_biz_id"
,
policyBizId
);
return
policySecondHolderService
.
list
(
queryWrapper
);
return
policySecondHolderService
.
getOne
(
queryWrapper
);
},
"查询保单第二持有人"
);
// 1.6 异步查询客户业务ID
CompletableFuture
<
String
>
customerBizIdFuture
=
asyncQueryUtil
.
asyncQuery
(
()
->
{
QueryWrapper
<
PolicyFollow
>
queryWrapper
=
new
QueryWrapper
<>();
queryWrapper
.
eq
(
"policy_biz_id"
,
policyBizId
);
PolicyFollow
policyFollow
=
policyFollowService
.
getOne
(
queryWrapper
);
return
policyFollow
!=
null
?
policyFollow
.
getCustomerBizId
()
:
null
;
},
"查询客户业务ID"
);
//
5
. 等待所有异步任务完成(设置超时时间)
CompletableFuture
.
allOf
(
policyFuture
,
policyholderListFuture
,
insurantListFuture
,
beneficiaryListFuture
,
secondPolicyholderList
Future
)
//
2
. 等待所有异步任务完成(设置超时时间)
CompletableFuture
.
allOf
(
policyFuture
,
additionalListFuture
,
policyholderFuture
,
insurantListFuture
,
beneficiaryListFuture
,
policySecondHolder
Future
)
.
get
(
5
,
TimeUnit
.
SECONDS
);
// 5秒超时
// 6. 构建聚合结果
PolicyFollowAggregateDto
aggregateDto
=
new
PolicyFollowAggregateDto
();
aggregateDto
.
setPolicy
(
policyFuture
.
get
());
aggregateDto
.
setPolicyPolicyholderList
(
policyholderListFuture
.
get
());
aggregateDto
.
setPolicyInsurantList
(
insurantListFuture
.
get
());
aggregateDto
.
setPolicyBeneficiaryList
(
beneficiaryListFuture
.
get
());
aggregateDto
.
setPolicySecondHolderList
(
secondPolicyholderListFuture
.
get
());
// 3. 构建聚合结果
PolicyFollowAggregateDto
aggregateDto
=
PolicyFollowAggregateDto
.
convertToDto
(
policyFuture
.
get
(),
additionalListFuture
.
get
(),
policyholderFuture
.
get
(),
insurantListFuture
.
get
(),
beneficiaryListFuture
.
get
(),
policySecondHolderFuture
.
get
()
);
aggregateDto
.
setPolicyBizId
(
policyBizId
);
aggregateDto
.
setCustomerBizId
(
customerBizIdFuture
.
get
());
long
costTime
=
System
.
currentTimeMillis
()
-
startTime
;
log
.
info
(
"新单跟进聚合查询完成, policyBizId: {}, 总耗时: {}ms"
,
policyBizId
,
costTime
);
...
...
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/PolicyServiceImpl.java
View file @
b23d2dfb
...
...
@@ -4,12 +4,16 @@ import cn.hutool.core.collection.CollUtil;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.yd.common.enums.ResultCode
;
import
com.yd.common.exception.BusinessException
;
import
com.yd.csf.service.dto.PolicyQueryRequest
;
import
com.yd.csf.service.dto.PolicyUpdateRequest
;
import
com.yd.csf.service.model.Policy
;
import
com.yd.csf.service.service.PolicyService
;
import
com.yd.csf.service.dao.PolicyMapper
;
import
com.yd.csf.service.vo.PolicyVO
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.stereotype.Service
;
import
java.util.HashMap
;
...
...
@@ -73,6 +77,20 @@ public class PolicyServiceImpl extends ServiceImpl<PolicyMapper, Policy>
policyVOPage
.
setRecords
(
policyVOList
);
return
policyVOPage
;
}
@Override
public
Boolean
updatePolicy
(
PolicyUpdateRequest
policyUpdateRequest
)
{
String
policyBizId
=
policyUpdateRequest
.
getPolicyBizId
();
if
(
StringUtils
.
isBlank
(
policyBizId
))
{
throw
new
BusinessException
(
ResultCode
.
PARAMS_ERROR
.
getCode
(),
"policyBizId不能为空"
);
}
Policy
policy
=
this
.
getOne
(
new
QueryWrapper
<
Policy
>().
eq
(
"policy_biz_id"
,
policyBizId
));
if
(
policy
==
null
)
{
throw
new
BusinessException
(
ResultCode
.
NULL_ERROR
.
getCode
(),
"保单不存在"
);
}
BeanUtils
.
copyProperties
(
policyUpdateRequest
,
policy
,
"policyBizId"
,
"id"
);
return
this
.
updateById
(
policy
);
}
}
...
...
yd-csf-service/src/main/resources/mappers/PolicyAdditionalMapper.xml
0 → 100644
View file @
b23d2dfb
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.yd.csf.service.dao.PolicyAdditionalMapper"
>
<resultMap
id=
"BaseResultMap"
type=
"com.yd.csf.service.model.PolicyAdditional"
>
<id
property=
"id"
column=
"id"
/>
<result
property=
"policyAdditionalBizId"
column=
"policy_additional_biz_id"
/>
<result
property=
"policyBizId"
column=
"policy_biz_id"
/>
<result
property=
"policyNo"
column=
"policy_no"
/>
<result
property=
"planBizId"
column=
"plan_biz_id"
/>
<result
property=
"additionalProductBizId"
column=
"additional_product_biz_id"
/>
<result
property=
"addProductName"
column=
"add_product_name"
/>
<result
property=
"currency"
column=
"currency"
/>
<result
property=
"premium"
column=
"premium"
/>
<result
property=
"sumInsured"
column=
"sum_insured"
/>
<result
property=
"guaranteeRegion"
column=
"guarantee_region"
/>
<result
property=
"level"
column=
"level"
/>
<result
property=
"deductibles"
column=
"deductibles"
/>
<result
property=
"additionalSafeguards"
column=
"additional_safeguards"
/>
<result
property=
"remark"
column=
"remark"
/>
<result
property=
"isDeleted"
column=
"is_deleted"
/>
<result
property=
"creatorId"
column=
"creator_id"
/>
<result
property=
"updaterId"
column=
"updater_id"
/>
<result
property=
"createTime"
column=
"create_time"
/>
<result
property=
"updateTime"
column=
"update_time"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
id,policy_additional_biz_id,policy_biz_id,policy_no,plan_biz_id,additional_product_biz_id,
add_product_name,currency,premium,sum_insured,guarantee_region,
level,deductibles,additional_safeguards,remark,is_deleted,
creator_id,updater_id,create_time,update_time
</sql>
</mapper>
yd-csf-service/src/main/resources/mappers/PolicyFollowMapper.xml
View file @
b23d2dfb
...
...
@@ -5,44 +5,65 @@
<mapper
namespace=
"com.yd.csf.service.dao.PolicyFollowMapper"
>
<resultMap
id=
"BaseResultMap"
type=
"com.yd.csf.service.model.PolicyFollow"
>
<id
property=
"id"
column=
"id"
/>
<result
property=
"policyBizId"
column=
"policy_biz_id"
/>
<result
property=
"policyNo"
column=
"policy_no"
/>
<result
property=
"userBizId"
column=
"user_biz_id"
/>
<result
property=
"customerBizId"
column=
"customer_biz_id"
/>
<result
property=
"customerName"
column=
"customer_name"
/>
<result
property=
"signDate"
column=
"sign_date"
/>
<result
property=
"signer"
column=
"signer"
/>
<result
property=
"effectiveDate"
column=
"effective_date"
/>
<result
property=
"renewalDate"
column=
"renewal_date"
/>
<result
property=
"paymentTerm"
column=
"payment_term"
/>
<result
property=
"paymentPremium"
column=
"payment_premium"
/>
<result
property=
"isPrepaid"
column=
"is_prepaid"
/>
<result
property=
"prepaidTerm"
column=
"prepaid_term"
/>
<result
property=
"productName"
column=
"product_name"
/>
<result
property=
"productCate"
column=
"product_cate"
/>
<result
property=
"insurer"
column=
"insurer"
/>
<result
property=
"insurerBizId"
column=
"insurer_biz_id"
/>
<result
property=
"reconciliationCompany"
column=
"reconciliation_company"
/>
<result
property=
"reconciliationCompanyBizId"
column=
"reconciliation_company_biz_id"
/>
<result
property=
"status"
column=
"status"
/>
<result
property=
"policyHolder"
column=
"policy_holder"
/>
<result
property=
"insured"
column=
"insured"
/>
<result
property=
"currency"
column=
"currency"
/>
<result
property=
"initialPremium"
column=
"initial_premium"
/>
<result
property=
"remark"
column=
"remark"
/>
<result
property=
"isDeleted"
column=
"is_deleted"
/>
<result
property=
"creatorId"
column=
"creator_id"
/>
<result
property=
"updaterId"
column=
"updater_id"
/>
<result
property=
"createTime"
column=
"create_time"
/>
<result
property=
"updateTime"
column=
"update_time"
/>
<id
property=
"id"
column=
"id"
/>
<result
property=
"policyBizId"
column=
"policy_biz_id"
/>
<result
property=
"policyNo"
column=
"policy_no"
/>
<result
property=
"appointmentBizId"
column=
"appointment_biz_id"
/>
<result
property=
"appointmentNo"
column=
"appointment_no"
/>
<result
property=
"userBizId"
column=
"user_biz_id"
/>
<result
property=
"customerBizId"
column=
"customer_biz_id"
/>
<result
property=
"submitDate"
column=
"submit_date"
/>
<result
property=
"customerName"
column=
"customer_name"
/>
<result
property=
"signDate"
column=
"sign_date"
/>
<result
property=
"signer"
column=
"signer"
/>
<result
property=
"issueDate"
column=
"issue_date"
/>
<result
property=
"effectiveDate"
column=
"effective_date"
/>
<result
property=
"renewalDate"
column=
"renewal_date"
/>
<result
property=
"paymentTerm"
column=
"payment_term"
/>
<result
property=
"paymentPremium"
column=
"payment_premium"
/>
<result
property=
"isPrepaid"
column=
"is_prepaid"
/>
<result
property=
"prepaidTerm"
column=
"prepaid_term"
/>
<result
property=
"prepaidAmount"
column=
"prepaid_amount"
/>
<result
property=
"prepaidAmountAfterDiscount"
column=
"prepaid_amount_after_discount"
/>
<result
property=
"policyExpirationDate"
column=
"policy_expiration_date"
/>
<result
property=
"paymentNumber"
column=
"payment_number"
/>
<result
property=
"productBizId"
column=
"product_biz_id"
/>
<result
property=
"productName"
column=
"product_name"
/>
<result
property=
"productCate"
column=
"product_cate"
/>
<result
property=
"insurer"
column=
"insurer"
/>
<result
property=
"insurerBizId"
column=
"insurer_biz_id"
/>
<result
property=
"reconciliationCompany"
column=
"reconciliation_company"
/>
<result
property=
"reconciliationCompanyBizId"
column=
"reconciliation_company_biz_id"
/>
<result
property=
"status"
column=
"status"
/>
<result
property=
"nextStatusList"
column=
"next_status_list"
/>
<result
property=
"policyHolder"
column=
"policy_holder"
/>
<result
property=
"insured"
column=
"insured"
/>
<result
property=
"currency"
column=
"currency"
/>
<result
property=
"initialPremium"
column=
"initial_premium"
/>
<result
property=
"mailingMethod"
column=
"mailing_method"
/>
<result
property=
"deliveryNo"
column=
"delivery_no"
/>
<result
property=
"brokerSignDate"
column=
"broker_sign_date"
/>
<result
property=
"insurerMailingDate"
column=
"insurer_mailing_date"
/>
<result
property=
"customerSignDate"
column=
"customer_sign_date"
/>
<result
property=
"attachments"
column=
"attachments"
/>
<result
property=
"remark"
column=
"remark"
/>
<result
property=
"isDeleted"
column=
"is_deleted"
/>
<result
property=
"creatorId"
column=
"creator_id"
/>
<result
property=
"updaterId"
column=
"updater_id"
/>
<result
property=
"createTime"
column=
"create_time"
/>
<result
property=
"updateTime"
column=
"update_time"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
id,policy_biz_id,policy_no,user_biz_id,customer_biz_id,customer_name,sign_date,signer,
effective_date,renewal_date,payment_term,payment_premium,is_prepaid,prepaid_term,product_name,product_cate,
insurer,insurer_biz_id,reconciliation_company,reconciliation_company_biz_id,status,
policy_holder,insured,currency,initial_premium,remark,
is_deleted,creator_id,updater_id,create_time,update_time
id,policy_biz_id,policy_no,appointment_biz_id,appointment_no,user_biz_id,
customer_biz_id,submit_date,customer_name,sign_date,signer,
issue_date,effective_date,renewal_date,payment_term,payment_premium,
is_prepaid,prepaid_term,prepaid_amount,prepaid_amount_after_discount,policy_expiration_date,
payment_number,product_biz_id,product_name,product_cate,insurer,
insurer_biz_id,reconciliation_company,reconciliation_company_biz_id,status,next_status_list,
policy_holder,insured,currency,initial_premium,mailing_method,
delivery_no,broker_sign_date,insurer_mailing_date,customer_sign_date,attachments,
remark,is_deleted,creator_id,updater_id,create_time,
update_time
</sql>
</mapper>
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