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
6344a0e3
Commit
6344a0e3
authored
Sep 17, 2025
by
jianan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新单跟进
parent
0241c168
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
429 additions
and
0 deletions
+429
-0
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiPolicyFollowController.java
+195
-0
yd-csf-api/src/main/java/com/yd/csf/api/dto/Broker.java
+22
-0
yd-csf-api/src/main/java/com/yd/csf/api/dto/PolicyExcelDTO.java
+66
-0
yd-csf-api/src/main/java/com/yd/csf/api/dto/Product.java
+25
-0
yd-csf-api/src/main/java/com/yd/csf/api/dto/Team.java
+20
-0
yd-csf-api/src/main/java/com/yd/csf/api/listener/PolicyDataListener.java
+32
-0
yd-csf-service/pom.xml
+6
-0
yd-csf-service/src/main/java/com/yd/csf/service/dto/PolicyFollowQueryRequest.java
+63
-0
No files found.
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiPolicyFollowController.java
0 → 100644
View file @
6344a0e3
package
com
.
yd
.
csf
.
api
.
controller
;
import
com.alibaba.excel.EasyExcel
;
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.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.model.PolicyFollow
;
import
com.yd.csf.service.service.CustomerExpandService
;
import
com.yd.csf.service.service.PolicyFollowService
;
import
com.yd.user.feign.client.sysuser.ApiSysUserFeignClient
;
import
io.swagger.v3.oas.annotations.Operation
;
import
io.swagger.v3.oas.annotations.tags.Tag
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.multipart.MultipartFile
;
import
javax.annotation.Resource
;
import
javax.servlet.http.HttpServletRequest
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* customer接口
*
* @author jianan
* @since 2025-07-31
*/
@RestController
@RequestMapping
(
"/policy_follow"
)
@Tag
(
name
=
"新单跟进接口"
)
public
class
ApiPolicyFollowController
{
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
ApiPolicyFollowController
.
class
);
@Resource
private
PolicyFollowService
policyFollowService
;
@Resource
private
PolicyDataListener
policyDataListener
;
@PostMapping
(
"/upload/excel"
)
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
);
for
(
PolicyFollow
policyFollow
:
list
)
{
log
.
info
(
"policyFollow = "
+
policyFollow
);
}
return
Result
.
success
(
policyFollowService
.
uploadExcel
(
list
));
}
private
List
<
PolicyFollow
>
convertToObj
(
List
<
PolicyExcelDTO
>
list
)
{
List
<
PolicyFollow
>
policyFollows
=
new
ArrayList
<>();
for
(
PolicyExcelDTO
policyExcelDTO
:
list
)
{
PolicyFollow
policyFollow
=
new
PolicyFollow
();
BeanUtils
.
copyProperties
(
policyExcelDTO
,
policyFollow
);
policyFollow
.
setPolicyBizId
(
RandomStringGenerator
.
generateBizId16
(
"policy"
));
}
return
policyFollows
;
}
/**
* 创建新单跟进
*
* @param customerAddRequest
* @param request
* @return
*/
// @Operation(summary = "创建新单跟进")
// @PostMapping("/add")
// @Transactional(rollbackFor = Exception.class)
// public Result<Map<String, Object>> addCustomer(@RequestBody CustomerAddRequest customerAddRequest, HttpServletRequest request) {
// if (customerAddRequest == null) {
// return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage());
// }
// return Result.success(policyFollowService.addCustomer(customerAddRequest));
// }
/**
* 删除fna
*
* @param deleteRequest
* @param request
* @return
*/
// @PostMapping("/delete")
// public Result<Boolean> deleteFna(@RequestBody DeleteRequest deleteRequest, HttpServletRequest request) {
// if (deleteRequest == null || deleteRequest.getId() <= 0) {
// throw new BusinessException(ErrorCode.PARAMS_ERROR);
// }
// User user = userService.getLoginUser(request);
// long id = deleteRequest.getId();
// // 判断是否存在
// Customer oldFna = policyFollowService.getById(id);
// ThrowUtils.throwIf(oldFna == null, ErrorCode.NOT_FOUND_ERROR);
// // 仅本人或管理员可删除
// if (!oldFna.getUserId().equals(user.getId()) && !userService.isAdmin(request)) {
// throw new BusinessException(ErrorCode.NO_AUTH_ERROR);
// }
// // 操作数据库
// boolean result = policyFollowService.removeById(id);
// ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR);
// return Result.success(true);
// }
/**
* 更新新单跟进
*
* @param customerUpdateRequest
* @return
*/
// @PostMapping("/update")
// @Operation(summary = "更新新单跟进信息")
// public Result<Boolean> updateCustomer(@RequestBody CustomerUpdateRequest customerUpdateRequest) {
// if (customerUpdateRequest == null || customerUpdateRequest.getCustomerBizId() == null) {
// throw new BusinessException(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage());
// }
// return Result.success(policyFollowService.updateCustomer(customerUpdateRequest));
// }
/**
* 根据 customerBizId 获取新单跟进(封装类)
*
* @param policyBizId
* @return
*/
@GetMapping
(
"/get/vo"
)
@Operation
(
summary
=
"根据 policyBizId 获取新单跟进详情"
)
public
Result
<
PolicyFollow
>
getPolicyFollowByPolicyBizId
(
@RequestParam
(
"policyBizId"
)
String
policyBizId
,
HttpServletRequest
request
)
{
if
(
policyBizId
==
null
)
{
return
Result
.
fail
(
ErrorCode
.
PARAMS_ERROR
.
getCode
(),
ErrorCode
.
PARAMS_ERROR
.
getMessage
());
}
// 查询数据库
PolicyFollow
policyFollow
=
policyFollowService
.
getByPolicyBizId
(
policyBizId
);
if
(
policyFollow
==
null
)
{
return
Result
.
fail
(
ErrorCode
.
NOT_FOUND_ERROR
.
getCode
(),
ErrorCode
.
NOT_FOUND_ERROR
.
getMessage
());
}
// 获取封装类
return
Result
.
success
(
policyFollow
);
}
/**
* 分页获取新单跟进列表(仅管理员可用)
*
* @param fnaQueryRequest
* @return
*/
// @PostMapping("/list/page")
// public Result<Page<Customer>> listFnaByPage(@RequestBody FnaQueryRequest fnaQueryRequest) {
// long current = fnaQueryRequest.getPageNo();
// long size = fnaQueryRequest.getPageSize();
// // 查询数据库
// Page<Customer> fnaPage = policyFollowService.page(new Page<>(current, size),
// policyFollowService.getQueryWrapper(fnaQueryRequest));
// return Result.success(fnaPage);
// }
/**
* 分页获取新单跟进列表(VO)
*
* @param policyFollowQueryRequest
* @param request
* @return
*/
@PostMapping
(
"/list/page/vo"
)
@Operation
(
summary
=
"分页获取新单跟进列表"
)
public
Result
<
Page
<
PolicyFollow
>>
listPolicyFollowByPage
(
@RequestBody
PolicyFollowQueryRequest
policyFollowQueryRequest
,
HttpServletRequest
request
)
{
long
current
=
policyFollowQueryRequest
.
getPageNo
();
long
size
=
policyFollowQueryRequest
.
getPageSize
();
// 查询数据库
Page
<
PolicyFollow
>
policyFollowPage
=
policyFollowService
.
page
(
new
Page
<>(
current
,
size
),
policyFollowService
.
getQueryWrapper
(
policyFollowQueryRequest
));
// 获取封装类
// return Result.success(policyFollowService.getPolicyFollowVOPage(policyFollowPage));
return
Result
.
success
(
policyFollowPage
);
}
}
yd-csf-api/src/main/java/com/yd/csf/api/dto/Broker.java
0 → 100644
View file @
6344a0e3
package
com
.
yd
.
csf
.
api
.
dto
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
lombok.Data
;
@Data
public
class
Broker
{
@ExcelProperty
(
"简称"
)
private
String
shortName
;
@ExcelProperty
(
"英文名称"
)
private
String
englishName
;
@ExcelProperty
(
"中文名称"
)
private
String
chineseName
;
@ExcelProperty
(
"牌照號碼"
)
private
String
licenseNo
;
@ExcelProperty
(
"联系人"
)
private
String
contact
;
}
yd-csf-api/src/main/java/com/yd/csf/api/dto/PolicyExcelDTO.java
0 → 100644
View file @
6344a0e3
package
com
.
yd
.
csf
.
api
.
dto
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
lombok.Data
;
import
java.math.BigDecimal
;
@Data
public
class
PolicyExcelDTO
{
@ExcelProperty
(
"序号"
)
private
Integer
id
;
@ExcelProperty
(
"状态"
)
private
String
status
;
@ExcelProperty
(
"保单号"
)
private
String
policyNo
;
@ExcelProperty
(
"签单日期"
)
private
String
signDate
;
@ExcelProperty
(
"生效日期"
)
private
String
effectiveDate
;
@ExcelProperty
(
"续保日期"
)
private
String
renewalDate
;
@ExcelProperty
(
"供款年期"
)
private
Integer
paymentTerm
;
@ExcelProperty
(
"是否预缴"
)
private
String
isPrepaid
;
@ExcelProperty
(
"预缴年期"
)
private
Integer
prepaidTerm
;
@ExcelProperty
(
"产品名称"
)
private
String
productName
;
@ExcelProperty
(
"产品类别"
)
private
String
productType
;
@ExcelProperty
(
"保险公司"
)
private
String
insurer
;
@ExcelProperty
(
"经纪公司"
)
private
String
broker
;
@ExcelProperty
(
"保單持有人"
)
private
String
policyHolder
;
@ExcelProperty
(
"受保人"
)
private
String
insured
;
@ExcelProperty
(
"转介人"
)
private
String
referrer
;
@ExcelProperty
(
"所属团队"
)
private
String
team
;
@ExcelProperty
(
"币种"
)
private
String
currency
;
@ExcelProperty
(
"首期保费(不含徽费,预缴保费)"
)
private
BigDecimal
initialPremium
;
}
yd-csf-api/src/main/java/com/yd/csf/api/dto/Product.java
0 → 100644
View file @
6344a0e3
package
com
.
yd
.
csf
.
api
.
dto
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
lombok.Data
;
@Data
public
class
Product
{
@ExcelProperty
(
"保险公司"
)
private
String
insurer
;
@ExcelProperty
(
"产品类别"
)
private
String
productType
;
@ExcelProperty
(
"产品名称"
)
private
String
productName
;
@ExcelProperty
(
"供款年期"
)
private
Integer
paymentTerm
;
@ExcelProperty
(
"币种"
)
private
String
currency
;
@ExcelProperty
(
"状态"
)
private
String
status
;
}
yd-csf-api/src/main/java/com/yd/csf/api/dto/Team.java
0 → 100644
View file @
6344a0e3
package
com
.
yd
.
csf
.
api
.
dto
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
lombok.Data
;
@Data
public
class
Team
{
@ExcelProperty
(
"团队名称"
)
private
String
teamName
;
@ExcelProperty
(
"团队长"
)
private
String
leader
;
@ExcelProperty
(
"团队成员"
)
private
String
member
;
@ExcelProperty
(
""
)
// 空列
private
String
extra
;
}
\ No newline at end of file
yd-csf-api/src/main/java/com/yd/csf/api/listener/PolicyDataListener.java
0 → 100644
View file @
6344a0e3
package
com
.
yd
.
csf
.
api
.
listener
;
import
com.alibaba.excel.context.AnalysisContext
;
import
com.alibaba.excel.event.AnalysisEventListener
;
import
com.yd.csf.api.dto.PolicyExcelDTO
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Component
;
import
java.util.ArrayList
;
import
java.util.List
;
@Component
@Slf4j
public
class
PolicyDataListener
extends
AnalysisEventListener
<
PolicyExcelDTO
>
{
private
List
<
PolicyExcelDTO
>
list
=
new
ArrayList
<>();
@Override
public
void
invoke
(
PolicyExcelDTO
policy
,
AnalysisContext
context
)
{
list
.
add
(
policy
);
}
@Override
public
void
doAfterAllAnalysed
(
AnalysisContext
context
)
{
log
.
info
(
"读取到 {} 条保单数据"
,
list
.
size
());
// 这里可以调用Service进行数据保存
}
public
List
<
PolicyExcelDTO
>
getList
()
{
return
list
;
}
}
yd-csf-service/pom.xml
View file @
6344a0e3
...
...
@@ -12,6 +12,12 @@
<artifactId>
yd-csf-service
</artifactId>
<dependencies>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
easyexcel
</artifactId>
<version>
3.3.2
</version>
</dependency>
<!-- gson -->
<dependency>
<groupId>
com.google.code.gson
</groupId>
...
...
yd-csf-service/src/main/java/com/yd/csf/service/dto/PolicyFollowQueryRequest.java
0 → 100644
View file @
6344a0e3
package
com
.
yd
.
csf
.
service
.
dto
;
import
com.yd.common.dto.PageDto
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
java.io.Serializable
;
/**
* 查询customer请求
*
*/
@EqualsAndHashCode
(
callSuper
=
true
)
@Data
public
class
PolicyFollowQueryRequest
extends
PageDto
implements
Serializable
{
/**
* 新单状态
*/
@Schema
(
description
=
"新单状态 'CHECKING'-'审核中','UNDERWRITING'-'承保中','FINISHED'-'已完成','DECLINED'-'已拒绝','CANCELLED'-'已取消', 字典值: policy_follow_status"
)
private
String
status
;
/**
* 新单编号
*/
@Schema
(
description
=
"新单编号"
)
private
String
policyBizId
;
/**
* 保单号
*/
@Schema
(
description
=
"保单号"
)
private
String
policyNo
;
/**
* 客户名称
*/
@Schema
(
description
=
"客户名称"
)
private
String
name
;
/**
* 客户编号
*/
@Schema
(
description
=
"客户编号"
)
private
String
customerBizId
;
/**
* 保险公司
*/
@Schema
(
description
=
"保险公司"
)
private
String
insurance
;
/**
* 产品代码
*/
@Schema
(
description
=
"产品代码"
)
private
String
productCode
;
private
static
final
long
serialVersionUID
=
1L
;
}
\ No newline at end of file
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