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
5f14a972
Commit
5f14a972
authored
Sep 19, 2025
by
jianan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新单跟进2
parent
6344a0e3
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
1106 additions
and
42 deletions
+1106
-42
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiPolicyFollowController.java
+91
-27
yd-csf-api/src/main/java/com/yd/csf/api/dto/PolicyExcelDTO.java
+40
-13
yd-csf-api/src/main/java/com/yd/csf/api/dto/PolicyFollowDTO.java
+37
-0
yd-csf-service/src/main/java/com/yd/csf/service/dao/PolicyBrokerMapper.java
+18
-0
yd-csf-service/src/main/java/com/yd/csf/service/dao/PolicyFollowMapper.java
+18
-0
yd-csf-service/src/main/java/com/yd/csf/service/dao/PolicyMapper.java
+18
-0
yd-csf-service/src/main/java/com/yd/csf/service/dto/PolicyFollowQueryRequest.java
+1
-1
yd-csf-service/src/main/java/com/yd/csf/service/dto/PolicyFollowUpdateRequest.java
+33
-0
yd-csf-service/src/main/java/com/yd/csf/service/model/Policy.java
+173
-0
yd-csf-service/src/main/java/com/yd/csf/service/model/PolicyBroker.java
+82
-0
yd-csf-service/src/main/java/com/yd/csf/service/model/PolicyFollow.java
+157
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/PolicyBrokerService.java
+13
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/PolicyFollowService.java
+27
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/PolicyService.java
+13
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/PolicyBrokerServiceImpl.java
+22
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/PolicyFollowServiceImpl.java
+133
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/PolicyServiceImpl.java
+22
-0
yd-csf-service/src/main/java/com/yd/csf/service/vo/PolicyFollowVO.java
+162
-0
yd-csf-service/src/main/resources/mappers/FnaMapper.xml
+1
-1
yd-csf-service/src/main/resources/mappers/PolicyFollowMapper.xml
+45
-0
No files found.
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiPolicyFollowController.java
View file @
5f14a972
...
...
@@ -5,19 +5,25 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import
com.yd.common.result.Result
;
import
com.yd.common.utils.RandomStringGenerator
;
import
com.yd.csf.api.dto.PolicyExcelDTO
;
import
com.yd.csf.api.dto.PolicyFollowDTO
;
import
com.yd.csf.api.listener.PolicyDataListener
;
import
com.yd.csf.service.common.ErrorCode
;
import
com.yd.csf.service.dto.PolicyFollowQueryRequest
;
import
com.yd.csf.service.model.Customer
;
import
com.yd.csf.service.dto.PolicyFollowUpdateRequest
;
import
com.yd.csf.service.model.Policy
;
import
com.yd.csf.service.model.PolicyBroker
;
import
com.yd.csf.service.model.PolicyFollow
;
import
com.yd.csf.service.service.
CustomerExpand
Service
;
import
com.yd.csf.service.service.
PolicyBroker
Service
;
import
com.yd.csf.service.service.PolicyFollowService
;
import
com.yd.user.feign.client.sysuser.ApiSysUserFeignClient
;
import
com.yd.csf.service.service.PolicyService
;
import
com.yd.csf.service.vo.PolicyFollowVO
;
import
io.swagger.v3.oas.annotations.Operation
;
import
io.swagger.v3.oas.annotations.tags.Tag
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.multipart.MultipartFile
;
...
...
@@ -42,35 +48,94 @@ public class ApiPolicyFollowController {
@Resource
private
PolicyFollowService
policyFollowService
;
@Resource
private
PolicyService
policyService
;
@Resource
private
PolicyBrokerService
policyBrokerService
;
@Resource
private
PolicyDataListener
policyDataListener
;
@PostMapping
(
"/upload/excel"
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Result
<
Boolean
>
uploadExcel
(
@RequestParam
(
"file"
)
MultipartFile
file
)
throws
IOException
{
EasyExcel
.
read
(
file
.
getInputStream
(),
PolicyExcelDTO
.
class
,
policyDataListener
).
sheet
(
"保单"
).
doRead
();
List
<
PolicyExcelDTO
>
dtoList
=
policyDataListener
.
getList
();
log
.
info
(
"导入成功,共 "
+
dtoList
.
size
()
+
" 条数据"
);
List
<
PolicyFollow
>
list
=
convertToObj
(
dtoList
);
// 转换为PolicyFollow对象
List
<
PolicyFollowDTO
>
list
=
convertToObj
(
dtoList
);
for
(
PolicyFollow
policyFollow
:
list
)
{
log
.
info
(
"policyFollow = "
+
policyFollow
);
List
<
PolicyFollow
>
policyFollowList
=
new
ArrayList
<>();
List
<
Policy
>
policyList
=
new
ArrayList
<>();
List
<
PolicyBroker
>
policyBrokerList
=
new
ArrayList
<>();
for
(
PolicyFollowDTO
policyFollow
:
list
)
{
policyFollowList
.
add
(
policyFollow
.
getPolicyFollow
());
policyBrokerList
.
addAll
(
policyFollow
.
getBrokerList
());
policyList
.
add
(
policyFollow
.
getPolicy
());
}
return
Result
.
success
(
policyFollowService
.
uploadExcel
(
list
));
policyFollowService
.
saveBatch
(
policyFollowList
);
policyService
.
saveBatch
(
policyList
);
policyBrokerService
.
saveBatch
(
policyBrokerList
);
return
Result
.
success
(
true
);
}
private
List
<
PolicyFollow
>
convertToObj
(
List
<
PolicyExcelDTO
>
list
)
{
List
<
PolicyFollow
>
policyFollows
=
new
ArrayList
<>();
private
List
<
PolicyFollowDTO
>
convertToObj
(
List
<
PolicyExcelDTO
>
list
)
{
List
<
PolicyFollowDTO
>
policyFollowDTOList
=
new
ArrayList
<>();
for
(
PolicyExcelDTO
policyExcelDTO
:
list
)
{
String
policyNo
=
policyExcelDTO
.
getPolicyNo
();
// 生成新单编号
String
policyBizId
=
RandomStringGenerator
.
generateBizId16
(
"policy"
);
// 转换为PolicyFollow对象
PolicyFollow
policyFollow
=
new
PolicyFollow
();
BeanUtils
.
copyProperties
(
policyExcelDTO
,
policyFollow
);
policyFollow
.
setPolicyBizId
(
RandomStringGenerator
.
generateBizId16
(
"policy"
));
policyFollow
.
setPolicyBizId
(
policyBizId
);
// 转换为Policy对象
Policy
policy
=
new
Policy
();
BeanUtils
.
copyProperties
(
policyExcelDTO
,
policy
);
policy
.
setPolicyBizId
(
policyBizId
);
// 转换为PolicyBroker对象
List
<
PolicyBroker
>
policyBrokerList
=
new
ArrayList
<>();
if
(
StringUtils
.
isNotBlank
(
policyExcelDTO
.
getBrokerName1
()))
{
policyBrokerList
.
add
(
getPolicyBroker
(
policyExcelDTO
.
getBrokerName1
(),
policyExcelDTO
.
getTeam1
(),
policyBizId
,
policyNo
));
}
if
(
StringUtils
.
isNotBlank
(
policyExcelDTO
.
getBrokerName2
()))
{
policyBrokerList
.
add
(
getPolicyBroker
(
policyExcelDTO
.
getBrokerName2
(),
policyExcelDTO
.
getTeam2
(),
policyBizId
,
policyNo
));
}
if
(
StringUtils
.
isNotBlank
(
policyExcelDTO
.
getBrokerName3
()))
{
policyBrokerList
.
add
(
getPolicyBroker
(
policyExcelDTO
.
getBrokerName3
(),
policyExcelDTO
.
getTeam3
(),
policyBizId
,
policyNo
));
}
if
(
StringUtils
.
isNotBlank
(
policyExcelDTO
.
getBrokerName4
()))
{
policyBrokerList
.
add
(
getPolicyBroker
(
policyExcelDTO
.
getBrokerName4
(),
policyExcelDTO
.
getTeam4
(),
policyBizId
,
policyNo
));
}
if
(
StringUtils
.
isNotBlank
(
policyExcelDTO
.
getBrokerName5
()))
{
policyBrokerList
.
add
(
getPolicyBroker
(
policyExcelDTO
.
getBrokerName5
(),
policyExcelDTO
.
getTeam5
(),
policyBizId
,
policyNo
));
}
// 转换为PolicyFollowDTO对象
PolicyFollowDTO
policyFollowDTO
=
new
PolicyFollowDTO
();
policyFollowDTO
.
setPolicyFollow
(
policyFollow
);
policyFollowDTO
.
setPolicy
(
policy
);
policyFollowDTO
.
setBrokerList
(
policyBrokerList
);
policyFollowDTOList
.
add
(
policyFollowDTO
);
}
return
policyFollows
;
return
policyFollowDTOList
;
}
private
PolicyBroker
getPolicyBroker
(
String
brokerName
,
String
team
,
String
policyBizId
,
String
policyNo
)
{
PolicyBroker
policyBroker
=
new
PolicyBroker
();
policyBroker
.
setPolicyBizId
(
policyBizId
);
policyBroker
.
setPolicyNo
(
policyNo
);
policyBroker
.
setBrokerName
(
brokerName
);
policyBroker
.
setTeam
(
team
);
return
policyBroker
;
}
/**
...
...
@@ -120,27 +185,27 @@ public class ApiPolicyFollowController {
/**
* 更新新单跟进
*
* @param
customer
UpdateRequest
* @param
policyFollow
UpdateRequest
* @return
*/
//
@PostMapping("/update")
//
@Operation(summary = "更新新单跟进信息")
// public Result<Boolean> updateCustomer(@RequestBody CustomerUpdateRequest customer
UpdateRequest) {
// if (customerUpdateRequest == null || customerUpdateRequest.getCustomer
BizId() == null) {
// throw new BusinessException
(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage());
//
}
// return Result.success(policyFollowService.updateCustomer(customer
UpdateRequest));
//
}
@PostMapping
(
"/update"
)
@Operation
(
summary
=
"更新新单跟进信息"
)
public
Result
<
Boolean
>
updatePolicyFollow
(
@RequestBody
PolicyFollowUpdateRequest
policyFollow
UpdateRequest
)
{
if
(
policyFollowUpdateRequest
==
null
||
policyFollowUpdateRequest
.
getPolicy
BizId
()
==
null
)
{
return
Result
.
fail
(
ErrorCode
.
PARAMS_ERROR
.
getCode
(),
ErrorCode
.
PARAMS_ERROR
.
getMessage
());
}
return
Result
.
success
(
policyFollowService
.
updatePolicyFollow
(
policyFollow
UpdateRequest
));
}
/**
* 根据
customer
BizId 获取新单跟进(封装类)
* 根据
policy
BizId 获取新单跟进(封装类)
*
* @param policyBizId
* @return
*/
@GetMapping
(
"/get/vo"
)
@Operation
(
summary
=
"根据 policyBizId 获取新单跟进详情"
)
public
Result
<
PolicyFollow
>
getPolicyFollowByPolicyBizId
(
@RequestParam
(
"policyBizId"
)
String
policyBizId
,
HttpServletRequest
request
)
{
public
Result
<
PolicyFollow
VO
>
getPolicyFollowByPolicyBizId
(
@RequestParam
(
"policyBizId"
)
String
policyBizId
,
HttpServletRequest
request
)
{
if
(
policyBizId
==
null
)
{
return
Result
.
fail
(
ErrorCode
.
PARAMS_ERROR
.
getCode
(),
ErrorCode
.
PARAMS_ERROR
.
getMessage
());
}
...
...
@@ -151,7 +216,7 @@ public class ApiPolicyFollowController {
}
// 获取封装类
return
Result
.
success
(
policyFollow
);
return
Result
.
success
(
policyFollow
Service
.
getPolicyFollowVO
(
policyFollow
)
);
}
/**
...
...
@@ -179,7 +244,7 @@ public class ApiPolicyFollowController {
*/
@PostMapping
(
"/list/page/vo"
)
@Operation
(
summary
=
"分页获取新单跟进列表"
)
public
Result
<
Page
<
PolicyFollow
>>
listPolicyFollowByPage
(
@RequestBody
PolicyFollowQueryRequest
policyFollowQueryRequest
,
public
Result
<
Page
<
PolicyFollow
VO
>>
listPolicyFollowByPage
(
@RequestBody
PolicyFollowQueryRequest
policyFollowQueryRequest
,
HttpServletRequest
request
)
{
long
current
=
policyFollowQueryRequest
.
getPageNo
();
long
size
=
policyFollowQueryRequest
.
getPageSize
();
...
...
@@ -188,8 +253,7 @@ public class ApiPolicyFollowController {
Page
<
PolicyFollow
>
policyFollowPage
=
policyFollowService
.
page
(
new
Page
<>(
current
,
size
),
policyFollowService
.
getQueryWrapper
(
policyFollowQueryRequest
));
// 获取封装类
// return Result.success(policyFollowService.getPolicyFollowVOPage(policyFollowPage));
return
Result
.
success
(
policyFollowPage
);
return
Result
.
success
(
policyFollowService
.
getPolicyFollowVOPage
(
policyFollowPage
));
}
}
yd-csf-api/src/main/java/com/yd/csf/api/dto/PolicyExcelDTO.java
View file @
5f14a972
...
...
@@ -3,16 +3,16 @@ package com.yd.csf.api.dto;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
import
java.math.BigDecimal
;
@Data
public
class
PolicyExcelDTO
{
@ExcelProperty
(
"序号"
)
private
Integer
id
;
@ExcelProperty
(
"状态"
)
@ExcelProperty
(
"
保单
状态"
)
private
String
status
;
@NotBlank
(
message
=
"保单号不能为空"
)
@ExcelProperty
(
"保单号"
)
private
String
policyNo
;
...
...
@@ -38,13 +38,13 @@ public class PolicyExcelDTO {
private
String
productName
;
@ExcelProperty
(
"产品类别"
)
private
String
product
Typ
e
;
private
String
product
Cat
e
;
@ExcelProperty
(
"保险公司"
)
private
String
insurer
;
@ExcelProperty
(
"
经纪
公司"
)
private
String
broker
;
@ExcelProperty
(
"
对账
公司"
)
private
String
reconciliationCompany
;
@ExcelProperty
(
"保單持有人"
)
private
String
policyHolder
;
...
...
@@ -52,15 +52,42 @@ public class PolicyExcelDTO {
@ExcelProperty
(
"受保人"
)
private
String
insured
;
@ExcelProperty
(
"转介人"
)
private
String
referrer
;
@ExcelProperty
(
"所属团队"
)
private
String
team
;
@ExcelProperty
(
"币种"
)
@ExcelProperty
(
"保单币种"
)
private
String
currency
;
@ExcelProperty
(
"首期保费(不含徽费,预缴保费)"
)
private
BigDecimal
initialPremium
;
@ExcelProperty
(
"签单人"
)
private
BigDecimal
signer
;
@ExcelProperty
(
"转介人1"
)
private
String
brokerName1
;
@ExcelProperty
(
"所属团队1"
)
private
String
team1
;
@ExcelProperty
(
"转介人2"
)
private
String
brokerName2
;
@ExcelProperty
(
"所属团队2"
)
private
String
team2
;
@ExcelProperty
(
"转介人3"
)
private
String
brokerName3
;
@ExcelProperty
(
"所属团队3"
)
private
String
team3
;
@ExcelProperty
(
"转介人4"
)
private
String
brokerName4
;
@ExcelProperty
(
"所属团队4"
)
private
String
team4
;
@ExcelProperty
(
"转介人5"
)
private
String
brokerName5
;
@ExcelProperty
(
"所属团队5"
)
private
String
team5
;
}
yd-csf-api/src/main/java/com/yd/csf/api/dto/PolicyFollowDTO.java
0 → 100644
View file @
5f14a972
package
com
.
yd
.
csf
.
api
.
dto
;
import
com.yd.csf.service.model.Policy
;
import
com.yd.csf.service.model.PolicyBroker
;
import
com.yd.csf.service.model.PolicyFollow
;
import
lombok.Data
;
import
org.springframework.beans.BeanUtils
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
/**
* 新单跟进视图
*
*/
@Data
public
class
PolicyFollowDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 新单跟进对象
*/
private
PolicyFollow
policyFollow
;
/**
* 转介人
*/
private
List
<
PolicyBroker
>
brokerList
;
/**
* 保单信息
*/
private
Policy
policy
;
}
yd-csf-service/src/main/java/com/yd/csf/service/dao/PolicyBrokerMapper.java
0 → 100644
View file @
5f14a972
package
com
.
yd
.
csf
.
service
.
dao
;
import
com.yd.csf.service.model.PolicyBroker
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
/**
* @author Zhang Jianan
* @description 针对表【policy_broker(保单转介人表)】的数据库操作Mapper
* @createDate 2025-09-18 15:06:03
* @Entity generator.domain.PolicyBroker
*/
public
interface
PolicyBrokerMapper
extends
BaseMapper
<
PolicyBroker
>
{
}
yd-csf-service/src/main/java/com/yd/csf/service/dao/PolicyFollowMapper.java
0 → 100644
View file @
5f14a972
package
com
.
yd
.
csf
.
service
.
dao
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.yd.csf.service.model.PolicyFollow
;
/**
* @author Zhang Jianan
* @description 针对表【policy_follow(新单跟进表)】的数据库操作Mapper
* @createDate 2025-09-16 18:18:06
* @Entity generator.domain.PolicyFollow
*/
public
interface
PolicyFollowMapper
extends
BaseMapper
<
PolicyFollow
>
{
}
yd-csf-service/src/main/java/com/yd/csf/service/dao/PolicyMapper.java
0 → 100644
View file @
5f14a972
package
com
.
yd
.
csf
.
service
.
dao
;
import
com.yd.csf.service.model.Policy
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
/**
* @author Zhang Jianan
* @description 针对表【policy(保单表)】的数据库操作Mapper
* @createDate 2025-09-18 15:07:25
* @Entity generator.domain.Policy
*/
public
interface
PolicyMapper
extends
BaseMapper
<
Policy
>
{
}
yd-csf-service/src/main/java/com/yd/csf/service/dto/PolicyFollowQueryRequest.java
View file @
5f14a972
...
...
@@ -37,7 +37,7 @@ public class PolicyFollowQueryRequest extends PageDto implements Serializable {
* 客户名称
*/
@Schema
(
description
=
"客户名称"
)
private
String
n
ame
;
private
String
customerN
ame
;
/**
* 客户编号
...
...
yd-csf-service/src/main/java/com/yd/csf/service/dto/PolicyFollowUpdateRequest.java
0 → 100644
View file @
5f14a972
package
com
.
yd
.
csf
.
service
.
dto
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
lombok.Data
;
@Data
public
class
PolicyFollowUpdateRequest
{
/**
* 新单编号
*/
@Schema
(
description
=
"新单编号"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
)
private
String
policyBizId
;
/**
* 新单状态
*/
@Schema
(
description
=
"新单状态 'CHECKING'-'审核中','UNDERWRITING'-'承保中','FINISHED'-'已完成','DECLINED'-'已拒绝','CANCELLED'-'已取消', 字典值: policy_follow_status"
)
private
String
status
;
/**
* 客户名称
*/
@Schema
(
description
=
"客户名称"
)
private
String
customerName
;
/**
* 客户编号
*/
@Schema
(
description
=
"客户编号"
)
private
String
customerBizId
;
}
yd-csf-service/src/main/java/com/yd/csf/service/model/Policy.java
0 → 100644
View file @
5f14a972
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
*/
@TableName
(
value
=
"policy"
)
@Data
public
class
Policy
implements
Serializable
{
/**
* id
*/
@TableId
(
type
=
IdType
.
AUTO
)
private
Long
id
;
/**
* 新单跟进唯一业务ID
*/
private
String
policyBizId
;
/**
* 保单号
*/
private
String
policyNo
;
/**
* 用户业务id
*/
private
String
userBizId
;
/**
* 产品代码
*/
private
String
productCode
;
/**
* 产品名称
*/
private
String
productName
;
/**
* 产品险种
*/
private
String
productCate
;
/**
* 保险公司
*/
private
String
insurer
;
/**
* 保险公司业务id
*/
private
String
insurerBizId
;
/**
* 保單持有人
*/
private
String
policyHolder
;
/**
* 受保人
*/
private
String
insured
;
/**
* 供款年期
*/
private
Integer
paymentTerm
;
/**
* 期交保费
*/
private
BigDecimal
paymentPremium
;
/**
* 保单状态
*/
private
String
status
;
/**
* 币种
*/
private
String
currency
;
/**
* 首期保费(不含徽费,预缴保费)
*/
private
Integer
initialPremium
;
/**
* 签单日期
*/
private
Date
signDate
;
/**
* 缮发日期
*/
private
Date
issueDate
;
/**
* 生效日期
*/
private
Date
effectiveDate
;
/**
* 续保日期
*/
private
Date
renewalDate
;
/**
* 是否预缴: 0-否, 1-是
*/
private
Integer
isPrepaid
;
/**
* 预缴年期
*/
private
Integer
prepaidTerm
;
/**
* 对账公司
*/
private
String
reconciliationCompany
;
/**
* 对账公司业务id
*/
private
String
reconciliationCompanyBizId
;
/**
* 通用备注
*/
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/PolicyBroker.java
0 → 100644
View file @
5f14a972
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.util.Date
;
import
lombok.Data
;
/**
* 保单转介人表
* @TableName policy_broker
*/
@TableName
(
value
=
"policy_broker"
)
@Data
public
class
PolicyBroker
implements
Serializable
{
/**
* id
*/
@TableId
(
type
=
IdType
.
AUTO
)
private
Long
id
;
/**
* 新单跟进唯一业务ID
*/
private
String
policyBizId
;
/**
* 保单号
*/
private
String
policyNo
;
/**
* 转介人名称
*/
private
String
brokerName
;
/**
* 所属团队
*/
private
String
team
;
/**
* 所属团队业务id
*/
private
String
teamBizId
;
/**
* 通用备注
*/
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
0 → 100644
View file @
5f14a972
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_follow
*/
@TableName
(
value
=
"policy_follow"
)
@Data
public
class
PolicyFollow
implements
Serializable
{
/**
* id
*/
@TableId
(
type
=
IdType
.
AUTO
)
private
Long
id
;
/**
* 新单跟进唯一业务ID
*/
private
String
policyBizId
;
/**
* 保单号
*/
private
String
policyNo
;
/**
* 用户业务id
*/
private
String
userBizId
;
private
String
customerBizId
;
private
String
customerName
;
/**
* 签单日期
*/
private
Date
signDate
;
/**
* 签单人
*/
private
String
signer
;
/**
* 生效日期
*/
private
Date
effectiveDate
;
/**
* 续保日期
*/
private
Date
renewalDate
;
/**
* 供款年期
*/
private
Integer
paymentTerm
;
/**
* 期交保费
*/
private
BigDecimal
paymentPremium
;
/**
* 产品名称
*/
private
String
productName
;
/**
* 保险公司
*/
private
String
insurer
;
/**
* 保险公司业务id
*/
private
String
insurerBizId
;
/**
* 对账公司
*/
private
String
reconciliationCompany
;
/**
* 对账公司业务id
*/
private
String
reconciliationCompanyBizId
;
/**
* 新单跟进状态
*/
private
String
status
;
/**
* 保單持有人
*/
private
String
policyHolder
;
/**
* 受保人
*/
private
String
insured
;
/**
* 币种
*/
private
String
currency
;
/**
* 首期保费(不含徽费,预缴保费)
*/
private
Integer
initialPremium
;
/**
* 通用备注
*/
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/service/PolicyBrokerService.java
0 → 100644
View file @
5f14a972
package
com
.
yd
.
csf
.
service
.
service
;
import
com.yd.csf.service.model.PolicyBroker
;
import
com.baomidou.mybatisplus.extension.service.IService
;
/**
* @author Zhang Jianan
* @description 针对表【policy_broker(保单转介人表)】的数据库操作Service
* @createDate 2025-09-18 15:06:03
*/
public
interface
PolicyBrokerService
extends
IService
<
PolicyBroker
>
{
}
yd-csf-service/src/main/java/com/yd/csf/service/service/PolicyFollowService.java
0 → 100644
View file @
5f14a972
package
com
.
yd
.
csf
.
service
.
service
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.yd.csf.service.dto.PolicyFollowQueryRequest
;
import
com.yd.csf.service.dto.PolicyFollowUpdateRequest
;
import
com.yd.csf.service.model.PolicyFollow
;
import
com.yd.csf.service.vo.PolicyFollowVO
;
/**
* @author Zhang Jianan
* @description 针对表【policy_follow(新单跟进表)】的数据库操作Service
* @createDate 2025-09-16 18:18:06
*/
public
interface
PolicyFollowService
extends
IService
<
PolicyFollow
>
{
PolicyFollow
getByPolicyBizId
(
String
policyBizId
);
QueryWrapper
<
PolicyFollow
>
getQueryWrapper
(
PolicyFollowQueryRequest
policyFollowQueryRequest
);
Page
<
PolicyFollowVO
>
getPolicyFollowVOPage
(
Page
<
PolicyFollow
>
policyFollowPage
);
Boolean
updatePolicyFollow
(
PolicyFollowUpdateRequest
policyFollowUpdateRequest
);
PolicyFollowVO
getPolicyFollowVO
(
PolicyFollow
policyFollow
);
}
yd-csf-service/src/main/java/com/yd/csf/service/service/PolicyService.java
0 → 100644
View file @
5f14a972
package
com
.
yd
.
csf
.
service
.
service
;
import
com.yd.csf.service.model.Policy
;
import
com.baomidou.mybatisplus.extension.service.IService
;
/**
* @author Zhang Jianan
* @description 针对表【policy(保单表)】的数据库操作Service
* @createDate 2025-09-18 15:07:25
*/
public
interface
PolicyService
extends
IService
<
Policy
>
{
}
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/PolicyBrokerServiceImpl.java
0 → 100644
View file @
5f14a972
package
com
.
yd
.
csf
.
service
.
service
.
impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.yd.csf.service.model.PolicyBroker
;
import
com.yd.csf.service.service.PolicyBrokerService
;
import
com.yd.csf.service.dao.PolicyBrokerMapper
;
import
org.springframework.stereotype.Service
;
/**
* @author Zhang Jianan
* @description 针对表【policy_broker(保单转介人表)】的数据库操作Service实现
* @createDate 2025-09-18 15:06:03
*/
@Service
public
class
PolicyBrokerServiceImpl
extends
ServiceImpl
<
PolicyBrokerMapper
,
PolicyBroker
>
implements
PolicyBrokerService
{
}
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/PolicyFollowServiceImpl.java
0 → 100644
View file @
5f14a972
package
com
.
yd
.
csf
.
service
.
service
.
impl
;
import
cn.hutool.core.collection.CollUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
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.exception.BusinessException
;
import
com.yd.common.result.Result
;
import
com.yd.csf.service.common.ErrorCode
;
import
com.yd.csf.service.dto.PolicyFollowQueryRequest
;
import
com.yd.csf.service.dto.PolicyFollowUpdateRequest
;
import
com.yd.csf.service.model.PolicyBroker
;
import
com.yd.csf.service.model.PolicyFollow
;
import
com.yd.csf.service.service.PolicyBrokerService
;
import
com.yd.csf.service.service.PolicyFollowService
;
import
com.yd.csf.service.dao.PolicyFollowMapper
;
import
com.yd.csf.service.vo.PolicyFollowVO
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
* @author Zhang Jianan
* @description 针对表【policy_follow(新单跟进表)】的数据库操作Service实现
* @createDate 2025-09-16 18:18:06
*/
@Service
public
class
PolicyFollowServiceImpl
extends
ServiceImpl
<
PolicyFollowMapper
,
PolicyFollow
>
implements
PolicyFollowService
{
@Resource
private
PolicyBrokerService
policyBrokerService
;
@Override
public
PolicyFollow
getByPolicyBizId
(
String
policyBizId
)
{
return
baseMapper
.
selectOne
(
new
LambdaQueryWrapper
<
PolicyFollow
>().
eq
(
PolicyFollow:
:
getPolicyBizId
,
policyBizId
));
}
@Override
public
QueryWrapper
<
PolicyFollow
>
getQueryWrapper
(
PolicyFollowQueryRequest
policyFollowQueryRequest
)
{
QueryWrapper
<
PolicyFollow
>
queryWrapper
=
new
QueryWrapper
<>();
if
(
policyFollowQueryRequest
==
null
)
{
return
queryWrapper
;
}
String
policyNo
=
policyFollowQueryRequest
.
getPolicyNo
();
String
customerName
=
policyFollowQueryRequest
.
getCustomerName
();
String
customerBizId
=
policyFollowQueryRequest
.
getCustomerBizId
();
String
status
=
policyFollowQueryRequest
.
getStatus
();
String
insurance
=
policyFollowQueryRequest
.
getInsurance
();
String
productCode
=
policyFollowQueryRequest
.
getProductCode
();
queryWrapper
.
eq
(
ObjectUtils
.
isNotEmpty
(
policyNo
),
"policy_no"
,
policyNo
);
queryWrapper
.
eq
(
ObjectUtils
.
isNotEmpty
(
customerName
),
"customer_name"
,
customerName
);
queryWrapper
.
eq
(
ObjectUtils
.
isNotEmpty
(
customerBizId
),
"customer_biz_id"
,
customerBizId
);
queryWrapper
.
eq
(
ObjectUtils
.
isNotEmpty
(
status
),
"status"
,
status
);
queryWrapper
.
eq
(
ObjectUtils
.
isNotEmpty
(
insurance
),
"insurance"
,
insurance
);
queryWrapper
.
eq
(
ObjectUtils
.
isNotEmpty
(
productCode
),
"product_code"
,
productCode
);
// 排序
queryWrapper
.
orderByDesc
(
"id"
);
return
queryWrapper
;
}
@Override
public
Page
<
PolicyFollowVO
>
getPolicyFollowVOPage
(
Page
<
PolicyFollow
>
policyFollowPage
)
{
List
<
PolicyFollow
>
policyFollowList
=
policyFollowPage
.
getRecords
();
Page
<
PolicyFollowVO
>
policyFollowVOPage
=
new
Page
<>(
policyFollowPage
.
getCurrent
(),
policyFollowPage
.
getSize
(),
policyFollowPage
.
getTotal
());
if
(
CollUtil
.
isEmpty
(
policyFollowList
))
{
return
policyFollowVOPage
;
}
// 对象列表 => 封装对象列表
List
<
PolicyFollowVO
>
policyFollowVOList
=
policyFollowList
.
stream
().
map
(
PolicyFollowVO:
:
objToVo
).
collect
(
Collectors
.
toList
());
// 关联查询转介人
List
<
String
>
policyBizIdList
=
policyFollowVOList
.
stream
().
map
(
PolicyFollowVO:
:
getPolicyBizId
).
collect
(
Collectors
.
toList
());
if
(
CollUtil
.
isNotEmpty
(
policyBizIdList
))
{
// 转介人业务id列表 => 转介人列表
List
<
PolicyBroker
>
policyBrokerList
=
policyBrokerService
.
list
(
new
LambdaQueryWrapper
<
PolicyBroker
>().
in
(
PolicyBroker:
:
getPolicyBizId
,
policyBizIdList
));
// 转介人列表 => 转介人业务id列表
Map
<
String
,
List
<
PolicyBroker
>>
brokerMap
=
policyBrokerList
.
stream
().
collect
(
Collectors
.
groupingBy
(
PolicyBroker:
:
getPolicyBizId
));
// 转介人列表 => 封装转介人列表
policyFollowVOList
.
forEach
(
policyFollowVO
->
{
List
<
PolicyBroker
>
brokerList
=
brokerMap
.
get
(
policyFollowVO
.
getPolicyBizId
());
policyFollowVO
.
setBrokerList
(
brokerList
);
});
}
return
policyFollowVOPage
.
setRecords
(
policyFollowVOList
);
}
@Override
public
Boolean
updatePolicyFollow
(
PolicyFollowUpdateRequest
policyFollowUpdateRequest
)
{
if
(
policyFollowUpdateRequest
==
null
||
ObjectUtils
.
isEmpty
(
policyFollowUpdateRequest
.
getPolicyBizId
()))
{
throw
new
BusinessException
(
ErrorCode
.
PARAMS_ERROR
.
getCode
(),
ErrorCode
.
PARAMS_ERROR
.
getMessage
());
}
String
policyBizId
=
policyFollowUpdateRequest
.
getPolicyBizId
();
PolicyFollow
policyFollow
=
getByPolicyBizId
(
policyBizId
);
if
(
policyFollow
==
null
)
{
throw
new
BusinessException
(
ErrorCode
.
NOT_FOUND_ERROR
.
getCode
(),
ErrorCode
.
NOT_FOUND_ERROR
.
getMessage
());
}
BeanUtils
.
copyProperties
(
policyFollowUpdateRequest
,
policyFollow
,
"policyBizId"
);
return
updateById
(
policyFollow
);
}
@Override
public
PolicyFollowVO
getPolicyFollowVO
(
PolicyFollow
policyFollow
)
{
if
(
policyFollow
==
null
)
{
return
null
;
}
PolicyFollowVO
policyFollowVO
=
PolicyFollowVO
.
objToVo
(
policyFollow
);
// 关联查询转介人
QueryWrapper
<
PolicyBroker
>
queryWrapper
=
new
QueryWrapper
<>();
queryWrapper
.
eq
(
"policy_biz_id"
,
policyFollow
.
getPolicyBizId
());
List
<
PolicyBroker
>
policyBrokerList
=
policyBrokerService
.
list
(
queryWrapper
);
policyFollowVO
.
setBrokerList
(
policyBrokerList
);
return
policyFollowVO
;
}
}
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/PolicyServiceImpl.java
0 → 100644
View file @
5f14a972
package
com
.
yd
.
csf
.
service
.
service
.
impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.yd.csf.service.model.Policy
;
import
com.yd.csf.service.service.PolicyService
;
import
com.yd.csf.service.dao.PolicyMapper
;
import
org.springframework.stereotype.Service
;
/**
* @author Zhang Jianan
* @description 针对表【policy(保单表)】的数据库操作Service实现
* @createDate 2025-09-18 15:07:25
*/
@Service
public
class
PolicyServiceImpl
extends
ServiceImpl
<
PolicyMapper
,
Policy
>
implements
PolicyService
{
}
yd-csf-service/src/main/java/com/yd/csf/service/vo/PolicyFollowVO.java
0 → 100644
View file @
5f14a972
package
com
.
yd
.
csf
.
service
.
vo
;
import
com.yd.csf.service.model.Policy
;
import
com.yd.csf.service.model.PolicyBroker
;
import
com.yd.csf.service.model.PolicyFollow
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
lombok.Data
;
import
org.springframework.beans.BeanUtils
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
/**
* 新单跟进视图
*
*/
@Data
public
class
PolicyFollowVO
implements
Serializable
{
/**
* 新单跟进唯一业务ID
*/
@Schema
(
description
=
"新单跟进唯一业务ID"
)
private
String
policyBizId
;
/**
* 保单号
*/
@Schema
(
description
=
"保单号"
)
private
String
policyNo
;
/**
* 用户业务id
*/
@Schema
(
description
=
"用户业务id"
)
private
String
userBizId
;
/**
* 客户业务id
*/
@Schema
(
description
=
"客户业务id"
)
private
String
customerBizId
;
/**
* 客户名称
*/
@Schema
(
description
=
"客户名称"
)
private
String
customerName
;
/**
* 签单日期
*/
@Schema
(
description
=
"签单日期"
)
private
Date
signDate
;
/**
* 签单人
*/
@Schema
(
description
=
"签单人"
)
private
String
signer
;
/**
* 供款年期
*/
@Schema
(
description
=
"供款年期"
)
private
Integer
paymentTerm
;
/**
* 期交保费
*/
@Schema
(
description
=
"期交保费"
)
private
BigDecimal
paymentPremium
;
/**
* 产品名称
*/
@Schema
(
description
=
"产品名称"
)
private
String
productName
;
/**
* 保险公司
*/
@Schema
(
description
=
"保险公司"
)
private
String
insurer
;
/**
* 保险公司业务id
*/
@Schema
(
description
=
"保险公司业务id"
)
private
String
insurerBizId
;
/**
* 对账公司
*/
@Schema
(
description
=
"对账公司"
)
private
String
reconciliationCompany
;
/**
* 对账公司业务id
*/
@Schema
(
description
=
"对账公司业务id"
)
private
String
reconciliationCompanyBizId
;
/**
* 新单跟进状态
*/
@Schema
(
description
=
"新单跟进状态 'CHECKING'-'审核中','UNDERWRITING'-'承保中','FINISHED'-'已完成','DECLINED'-'已拒绝','CANCELLED'-'已取消', 字典值: policy_follow_status"
)
private
String
status
;
/**
* 保單持有人
*/
@Schema
(
description
=
"保單持有人"
)
private
String
policyHolder
;
/**
* 受保人
*/
@Schema
(
description
=
"受保人"
)
private
String
insured
;
/**
* 币种
*/
@Schema
(
description
=
"币种"
)
private
String
currency
;
/**
* 首期保费(不含徽费,预缴保费)
*/
@Schema
(
description
=
"首期保费(不含徽费,预缴保费)"
)
private
Integer
initialPremium
;
/**
* 转介人
*/
@Schema
(
description
=
"转介人"
)
private
List
<
PolicyBroker
>
brokerList
;
/**
* 保单信息
*/
// private Policy policy;
/**
* 对象转封装类
*
* @param policyFollow
* @return
*/
public
static
PolicyFollowVO
objToVo
(
PolicyFollow
policyFollow
)
{
if
(
policyFollow
==
null
)
{
return
null
;
}
PolicyFollowVO
policyFollowVO
=
new
PolicyFollowVO
();
BeanUtils
.
copyProperties
(
policyFollow
,
policyFollowVO
);
return
policyFollowVO
;
}
}
yd-csf-service/src/main/resources/mappers/FnaMapper.xml
View file @
5f14a972
...
...
@@ -14,7 +14,7 @@
<result
property=
"appointmentBizId"
column=
"appointment_biz_id"
/>
<result
property=
"bookingStatusTip"
column=
"booking_status_tip"
/>
<result
property=
"underwritingNo"
column=
"underwriting_no"
/>
<result
property=
"policyBizId"
column=
"policy_id"
/>
<result
property=
"policyBizId"
column=
"policy_
biz_
id"
/>
<result
property=
"policyNo"
column=
"policy_no"
/>
<result
property=
"status"
column=
"status"
/>
<result
property=
"productCode"
column=
"product_code"
/>
...
...
yd-csf-service/src/main/resources/mappers/PolicyFollowMapper.xml
0 → 100644
View file @
5f14a972
<?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=
"generator.mapper.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=
"productName"
column=
"product_name"
/>
<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"
/>
</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,product_name,
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
</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