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
f087e6d8
Commit
f087e6d8
authored
Jan 14, 2026
by
jianan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新单跟进v2
parent
ea3a0adc
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
403 additions
and
188 deletions
+403
-188
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiPolicyFollowController.java
+25
-12
yd-csf-service/src/main/java/com/yd/csf/service/dto/BrokerBatchSaveRequest.java
+51
-0
yd-csf-service/src/main/java/com/yd/csf/service/dto/InitialPaymentSaveRequest.java
+49
-0
yd-csf-service/src/main/java/com/yd/csf/service/dto/MailingInfoSaveRequest.java
+34
-0
yd-csf-service/src/main/java/com/yd/csf/service/dto/PolicyBrokerDto.java
+12
-0
yd-csf-service/src/main/java/com/yd/csf/service/dto/PolicyFollowDto.java
+16
-10
yd-csf-service/src/main/java/com/yd/csf/service/enums/PolicyFollowStatusEnum.java
+11
-11
yd-csf-service/src/main/java/com/yd/csf/service/model/PolicyBroker.java
+10
-0
yd-csf-service/src/main/java/com/yd/csf/service/model/PolicyFollow.java
+30
-12
yd-csf-service/src/main/java/com/yd/csf/service/service/PolicyFollowService.java
+15
-5
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/PolicyFollowServiceImpl.java
+121
-135
yd-csf-service/src/main/java/com/yd/csf/service/vo/PolicyFollowDetailVO.java
+20
-0
yd-csf-service/src/main/resources/mappers/PolicyBrokerMapper.xml
+4
-2
yd-csf-service/src/main/resources/mappers/PolicyFollowMapper.xml
+5
-1
No files found.
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiPolicyFollowController.java
View file @
f087e6d8
...
@@ -524,18 +524,6 @@ public class ApiPolicyFollowController {
...
@@ -524,18 +524,6 @@ public class ApiPolicyFollowController {
return
Result
.
success
(
policyFollowService
.
getPolicyFollowVO
(
policyFollow
));
return
Result
.
success
(
policyFollowService
.
getPolicyFollowVO
(
policyFollow
));
}
}
@GetMapping
(
"/detail/{policyBizId}"
)
@Operation
(
summary
=
"根据 policyBizId 获取新单跟进聚合详情"
)
public
Result
<
PolicyFollowAggregateDto
>
getPolicyFollowAggregate
(
@PathVariable
String
policyBizId
)
{
try
{
PolicyFollowAggregateDto
result
=
policyFollowService
.
getPolicyFollowAggregate
(
policyBizId
);
return
Result
.
success
(
result
);
}
catch
(
Exception
e
)
{
log
.
error
(
"获取新单跟进聚合详情失败, policyBizId: {}"
,
policyBizId
,
e
);
return
Result
.
fail
(
"查询失败: "
+
e
.
getMessage
());
}
}
/**
/**
* 分页获取新单跟进列表(仅管理员可用)
* 分页获取新单跟进列表(仅管理员可用)
*
*
...
@@ -679,4 +667,28 @@ public class ApiPolicyFollowController {
...
@@ -679,4 +667,28 @@ public class ApiPolicyFollowController {
}
}
}
}
@PostMapping
(
"/save_initial_payment"
)
@Operation
(
summary
=
"保存首期缴费信息"
)
public
Result
<
Boolean
>
saveInitialPayment
(
@RequestBody
InitialPaymentSaveRequest
initialPaymentSaveRequest
)
{
log
.
info
(
"保存首期缴费信息, policyBizId: {}"
,
initialPaymentSaveRequest
.
getPolicyBizId
());
Boolean
result
=
policyFollowService
.
saveInitialPayment
(
initialPaymentSaveRequest
);
return
Result
.
success
(
result
);
}
@PostMapping
(
"/save_mailing_info"
)
@Operation
(
summary
=
"保存邮寄信息"
)
public
Result
<
Boolean
>
saveMailingInfo
(
@RequestBody
MailingInfoSaveRequest
mailingInfoSaveRequest
)
{
log
.
info
(
"保存邮寄信息, policyBizId: {}"
,
mailingInfoSaveRequest
.
getPolicyBizId
());
Boolean
result
=
policyFollowService
.
saveMailingInfo
(
mailingInfoSaveRequest
);
return
Result
.
success
(
result
);
}
@PostMapping
(
"/batch_save_brokers"
)
@Operation
(
summary
=
"批量保存介绍人信息"
)
public
Result
<
Boolean
>
batchSaveBrokers
(
@RequestBody
BrokerBatchSaveRequest
brokerBatchSaveRequest
)
{
log
.
info
(
"批量保存介绍人信息, policyBizId: {}"
,
brokerBatchSaveRequest
.
getPolicyBizId
());
Boolean
result
=
policyFollowService
.
batchSaveBrokers
(
brokerBatchSaveRequest
);
return
Result
.
success
(
result
);
}
}
}
\ No newline at end of file
yd-csf-service/src/main/java/com/yd/csf/service/dto/BrokerBatchSaveRequest.java
0 → 100644
View file @
f087e6d8
package
com
.
yd
.
csf
.
service
.
dto
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.util.List
;
/**
* 介绍人批量保存请求
*/
@Data
public
class
BrokerBatchSaveRequest
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@Schema
(
description
=
"新单跟进唯一业务ID"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
)
private
String
policyBizId
;
@Schema
(
description
=
"介绍人列表"
)
private
List
<
BrokerInfo
>
brokerList
;
@Data
public
static
class
BrokerInfo
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@Schema
(
description
=
"介绍人姓名"
)
private
String
brokerName
;
@Schema
(
description
=
"介绍人业务id"
)
private
String
brokerBizId
;
@Schema
(
description
=
"性别"
)
private
String
gender
;
@Schema
(
description
=
"内部编号"
)
private
String
internalCode
;
@Schema
(
description
=
"所属团队"
)
private
String
team
;
@Schema
(
description
=
"团队业务id"
)
private
String
teamBizId
;
@Schema
(
description
=
"分配比例"
)
private
String
brokerRatio
;
@Schema
(
description
=
"备注"
)
private
String
remark
;
}
}
yd-csf-service/src/main/java/com/yd/csf/service/dto/InitialPaymentSaveRequest.java
0 → 100644
View file @
f087e6d8
package
com
.
yd
.
csf
.
service
.
dto
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
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
InitialPaymentSaveRequest
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@Schema
(
description
=
"新单跟进唯一业务ID"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
)
private
String
policyBizId
;
@Schema
(
description
=
"首期保费(不含徽费,预缴保费)"
)
private
BigDecimal
initialPremium
;
@Schema
(
description
=
"保单征费"
)
private
String
policyLevy
;
@Schema
(
description
=
"首期付款方式(字典)"
)
private
String
initialPaymentMethod
;
@Schema
(
description
=
"首期已缴保费"
)
private
BigDecimal
initialPremiumPaid
;
@Schema
(
description
=
"首期待缴保费"
)
private
BigDecimal
initialPremiumDue
;
@Schema
(
description
=
"首期缴费总额"
)
private
BigDecimal
initialPremiumTotal
;
@Schema
(
description
=
"缴费状态"
)
private
String
initialPaymentStatus
;
@Schema
(
description
=
"最晚缴费日期"
,
format
=
"yyyy-MM-dd"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
latestPaymentDate
;
@Schema
(
description
=
"首期保费优惠金额"
)
private
BigDecimal
initialPremiumDiscount
;
}
yd-csf-service/src/main/java/com/yd/csf/service/dto/MailingInfoSaveRequest.java
0 → 100644
View file @
f087e6d8
package
com
.
yd
.
csf
.
service
.
dto
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* 邮寄信息保存请求
*/
@Data
public
class
MailingInfoSaveRequest
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@Schema
(
description
=
"新单跟进唯一业务ID"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
)
private
String
policyBizId
;
@Schema
(
description
=
"寄送方式(字典值:1-自提 2-快递)"
)
private
String
mailingMethod
;
@Schema
(
description
=
"快递单号"
)
private
String
deliveryNo
;
@Schema
(
description
=
"经纪公司签收日期"
,
format
=
"yyyy-MM-dd"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
brokerSignDate
;
@Schema
(
description
=
"客户签收日期"
,
format
=
"yyyy-MM-dd"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
customerSignDate
;
}
yd-csf-service/src/main/java/com/yd/csf/service/dto/PolicyBrokerDto.java
View file @
f087e6d8
...
@@ -20,6 +20,18 @@ public class PolicyBrokerDto implements Serializable {
...
@@ -20,6 +20,18 @@ public class PolicyBrokerDto implements Serializable {
private
String
brokerBizId
;
private
String
brokerBizId
;
/**
/**
* 性别
*/
@Schema
(
description
=
"性别"
)
private
String
gender
;
/**
* 内部编号
*/
@Schema
(
description
=
"内部编号"
)
private
String
internalCode
;
/**
* 所属团队
* 所属团队
*/
*/
@Schema
(
description
=
"所属团队"
)
@Schema
(
description
=
"所属团队"
)
...
...
yd-csf-service/src/main/java/com/yd/csf/service/dto/PolicyFollowDto.java
View file @
f087e6d8
...
@@ -179,6 +179,22 @@ public class PolicyFollowDto implements Serializable {
...
@@ -179,6 +179,22 @@ public class PolicyFollowDto implements Serializable {
@Schema
(
description
=
"首期保费(不含徽费,预缴保费)"
)
@Schema
(
description
=
"首期保费(不含徽费,预缴保费)"
)
private
BigDecimal
initialPremium
;
private
BigDecimal
initialPremium
;
@Schema
(
description
=
"首期已缴保费"
)
private
BigDecimal
initialPremiumPaid
;
@Schema
(
description
=
"首期待缴保费"
)
private
BigDecimal
initialPremiumDue
;
@Schema
(
description
=
"首期缴费总额"
)
private
BigDecimal
initialPremiumTotal
;
@Schema
(
description
=
"最晚缴费日期"
,
format
=
"yyyy-MM-dd"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
latestPaymentDate
;
@Schema
(
description
=
"首期保费优惠金额"
)
private
BigDecimal
initialPremiumDiscount
;
@Schema
(
description
=
"寄送方式(字典): 1-自提 2-快递"
)
@Schema
(
description
=
"寄送方式(字典): 1-自提 2-快递"
)
private
String
mailingMethod
;
private
String
mailingMethod
;
...
@@ -194,16 +210,6 @@ public class PolicyFollowDto implements Serializable {
...
@@ -194,16 +210,6 @@ public class PolicyFollowDto implements Serializable {
@Schema
(
description
=
"保单征费"
)
@Schema
(
description
=
"保单征费"
)
private
String
policyLevy
;
private
String
policyLevy
;
@Schema
(
description
=
"首期保费已付"
)
private
String
initialPremiumPaid
;
@Schema
(
description
=
"首期保费应付"
)
private
String
initialPremiumDue
;
@Schema
(
description
=
"最近付款日期"
,
format
=
"yyyy-MM-dd"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
latestPaymentDate
;
@Schema
(
description
=
"经纪公司签收日期"
,
format
=
"yyyy-MM-dd"
)
@Schema
(
description
=
"经纪公司签收日期"
,
format
=
"yyyy-MM-dd"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
brokerSignDate
;
private
Date
brokerSignDate
;
...
...
yd-csf-service/src/main/java/com/yd/csf/service/enums/PolicyFollowStatusEnum.java
View file @
f087e6d8
...
@@ -6,17 +6,17 @@ import org.apache.commons.lang3.ObjectUtils;
...
@@ -6,17 +6,17 @@ import org.apache.commons.lang3.ObjectUtils;
* 新单跟进状态枚举
* 新单跟进状态枚举
*/
*/
public
enum
PolicyFollowStatusEnum
{
public
enum
PolicyFollowStatusEnum
{
PENDING_SIGN
(
"待签单"
,
"PENDING_SIGN"
),
PENDING_SIGN
(
"待签单"
,
"PENDING_SIGN
ATURE
"
),
SIGNED
(
"已签单"
,
"SIGNED"
),
SIGNED
(
"已签单"
,
"SIGNED
_ORDER
"
),
WAITING_PAYMENT
(
"等待汇款"
,
"WAITING_
PAYMENT
"
),
WAITING_PAYMENT
(
"等待汇款"
,
"WAITING_
REMITTANCE
"
),
PREMIUM_RECONCILING
(
"首期保费对账中"
,
"
PREMIUM_RECONCILING
"
),
PREMIUM_RECONCILING
(
"首期保费对账中"
,
"
IN_RECONCILIATION
"
),
PREMIUM_RECONCILED_UNDERWRITING
(
"保费对账成功,核保中"
,
"
PREMIUM_RECONCILED_UNDERWRITING
"
),
PREMIUM_RECONCILED_UNDERWRITING
(
"保费对账成功,核保中"
,
"
UNDERWRITING_PROGRESS
"
),
EFFECTIVE
(
"生效"
,
"
EFFECTIVE
"
),
EFFECTIVE
(
"生效"
,
"
TAKE_EFFECT
"
),
CANCELLED
(
"取消投保"
,
"CANCEL
LED
"
),
CANCELLED
(
"取消投保"
,
"CANCEL
_COVERAGE
"
),
DECLINED
(
"拒保"
,
"
DECLINED
"
),
DECLINED
(
"拒保"
,
"
REJECTION_INSURANCE
"
),
DELAYED_UNDERWRITING
(
"延缓承保"
,
"DELAY
ED
_UNDERWRITING"
),
DELAYED_UNDERWRITING
(
"延缓承保"
,
"DELAY_UNDERWRITING"
),
LAPSED
(
"失效"
,
"
LAPSED
"
),
LAPSED
(
"失效"
,
"
FAILURE
"
),
CLOSED
(
"关闭"
,
"CLOSE
D
"
),
CLOSED
(
"关闭"
,
"CLOSE"
),
;
;
//字典项标签(名称)
//字典项标签(名称)
...
...
yd-csf-service/src/main/java/com/yd/csf/service/model/PolicyBroker.java
View file @
f087e6d8
...
@@ -42,6 +42,16 @@ public class PolicyBroker implements Serializable {
...
@@ -42,6 +42,16 @@ public class PolicyBroker implements Serializable {
private
String
brokerBizId
;
private
String
brokerBizId
;
/**
/**
* 性别
*/
private
String
gender
;
/**
* 内部编号
*/
private
String
internalCode
;
/**
* 所属团队
* 所属团队
*/
*/
private
String
team
;
private
String
team
;
...
...
yd-csf-service/src/main/java/com/yd/csf/service/model/PolicyFollow.java
View file @
f087e6d8
...
@@ -4,16 +4,19 @@ import com.baomidou.mybatisplus.annotation.IdType;
...
@@ -4,16 +4,19 @@ import com.baomidou.mybatisplus.annotation.IdType;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.Date
;
import
lombok.Data
;
import
lombok.Data
;
/**
/**
* 新单跟进表
* 新单跟进表
*
* @TableName policy_follow
* @TableName policy_follow
*/
*/
@TableName
(
value
=
"policy_follow"
)
@TableName
(
value
=
"policy_follow"
)
@Data
@Data
public
class
PolicyFollow
implements
Serializable
{
public
class
PolicyFollow
implements
Serializable
{
/**
/**
...
@@ -278,6 +281,31 @@ public class PolicyFollow implements Serializable {
...
@@ -278,6 +281,31 @@ public class PolicyFollow implements Serializable {
private
BigDecimal
initialPremium
;
private
BigDecimal
initialPremium
;
/**
/**
* 首期已缴保费
*/
private
BigDecimal
initialPremiumPaid
;
/**
* 首期待缴保费
*/
private
BigDecimal
initialPremiumDue
;
/**
* 首期缴费总额
*/
private
BigDecimal
initialPremiumTotal
;
/**
* 首期缴费状态
*/
private
String
initialPaymentStatus
;
/**
* 首期保费优惠金额
*/
private
BigDecimal
initialPremiumDiscount
;
/**
* 寄送方式 字典值:1-自提 2-快递
* 寄送方式 字典值:1-自提 2-快递
*/
*/
private
String
mailingMethod
;
private
String
mailingMethod
;
...
@@ -303,17 +331,7 @@ public class PolicyFollow implements Serializable {
...
@@ -303,17 +331,7 @@ public class PolicyFollow implements Serializable {
private
String
policyLevy
;
private
String
policyLevy
;
/**
/**
*
* 最晚缴费日期
*/
private
String
initialPremiumPaid
;
/**
*
*/
private
String
initialPremiumDue
;
/**
*
*/
*/
private
Date
latestPaymentDate
;
private
Date
latestPaymentDate
;
...
...
yd-csf-service/src/main/java/com/yd/csf/service/service/PolicyFollowService.java
View file @
f087e6d8
...
@@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
...
@@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
import
com.yd.csf.service.dto.*
;
import
com.yd.csf.service.dto.*
;
import
com.yd.csf.service.enums.PolicyFollowStatusEnum
;
import
com.yd.csf.service.enums.PolicyFollowStatusEnum
;
import
com.yd.csf.service.model.PolicyFollow
;
import
com.yd.csf.service.model.PolicyFollow
;
import
com.yd.csf.service.vo.PolicyFollowDetailVO
;
import
com.yd.csf.service.vo.PolicyFollowVO
;
import
com.yd.csf.service.vo.PolicyFollowVO
;
import
java.util.List
;
import
java.util.List
;
...
@@ -49,13 +48,24 @@ public interface PolicyFollowService extends IService<PolicyFollow> {
...
@@ -49,13 +48,24 @@ public interface PolicyFollowService extends IService<PolicyFollow> {
String
getNextStatus
(
PolicyFollowStatusEnum
policyFollowStatusEnum
);
String
getNextStatus
(
PolicyFollowStatusEnum
policyFollowStatusEnum
);
PolicyFollowAggregateDto
getPolicyFollowAggregate
(
String
policyBizId
);
Page
<
PolicyFollowDetailVO
>
getPolicyFollowDetailVOList
(
Page
<
PolicyFollow
>
policyFollowPage
);
String
getCurrencyValue
(
String
currency
);
String
getCurrencyValue
(
String
currency
);
PolicyReportData
queryPolicyReportData
(
String
policyBizId
);
PolicyReportData
queryPolicyReportData
(
String
policyBizId
);
PolicyFollow
queryOneByPolicyNo
(
String
policyNo
);
PolicyFollow
queryOneByPolicyNo
(
String
policyNo
);
/**
* 保存首期缴费信息
*/
Boolean
saveInitialPayment
(
InitialPaymentSaveRequest
initialPaymentSaveRequest
);
/**
* 保存邮寄信息
*/
Boolean
saveMailingInfo
(
MailingInfoSaveRequest
mailingInfoSaveRequest
);
/**
* 批量保存介绍人信息
*/
Boolean
batchSaveBrokers
(
BrokerBatchSaveRequest
brokerBatchSaveRequest
);
}
}
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/PolicyFollowServiceImpl.java
View file @
f087e6d8
package
com
.
yd
.
csf
.
service
.
service
.
impl
;
package
com
.
yd
.
csf
.
service
.
service
.
impl
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.Date
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.convert.Convert
;
import
cn.hutool.core.date.DateField
;
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
;
...
@@ -15,25 +13,16 @@ import com.yd.auth.core.utils.SecurityUtil;
...
@@ -15,25 +13,16 @@ import com.yd.auth.core.utils.SecurityUtil;
import
com.yd.common.enums.CommonEnum
;
import
com.yd.common.enums.CommonEnum
;
import
com.yd.common.enums.ResultCode
;
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.utils.RandomStringGenerator
;
import
com.yd.common.utils.RandomStringGenerator
;
import
com.yd.csf.service.common.ErrorCode
;
import
com.yd.csf.service.common.ErrorCode
;
import
com.yd.csf.service.component.ReceivableService
;
import
com.yd.csf.service.dto.*
;
import
com.yd.csf.service.dto.*
;
import
com.yd.csf.service.enums.CommissionExpectedStatusEnum
;
import
com.yd.csf.service.enums.PolicyFollowStatusEnum
;
import
com.yd.csf.service.enums.PolicyFollowStatusEnum
;
import
com.yd.csf.service.model.*
;
import
com.yd.csf.service.model.*
;
import
com.yd.csf.service.service.*
;
import
com.yd.csf.service.service.*
;
import
com.yd.csf.service.dao.PolicyFollowMapper
;
import
com.yd.csf.service.dao.PolicyFollowMapper
;
import
com.yd.csf.service.utils.AsyncQueryUtil
;
import
com.yd.csf.service.utils.AsyncQueryUtil
;
import
com.yd.csf.service.utils.GSONUtil
;
import
com.yd.csf.service.utils.GSONUtil
;
import
com.yd.csf.service.vo.PolicyFollowDetailVO
;
import
com.yd.csf.service.vo.PolicyFollowVO
;
import
com.yd.csf.service.vo.PolicyFollowVO
;
import
com.yd.product.feign.client.expectedcommissionratio.ApiExpectedCommissionRatioFeignClient
;
import
com.yd.product.feign.client.expectedspecies.ApiExpectedSpeciesFeignClient
;
import
com.yd.product.feign.client.product.ApiProductFeignClient
;
import
com.yd.product.feign.request.expectedspecies.ApiExpectedSpeciesListRequest
;
import
com.yd.product.feign.response.expectedspecies.ApiExpectedSpeciesListResponse
;
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
;
...
@@ -44,11 +33,7 @@ import org.springframework.stereotype.Service;
...
@@ -44,11 +33,7 @@ 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.time.LocalDate
;
import
java.time.ZoneId
;
import
java.util.*
;
import
java.util.*
;
import
java.util.concurrent.CompletableFuture
;
import
java.util.concurrent.TimeUnit
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
/**
/**
...
@@ -459,126 +444,6 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
...
@@ -459,126 +444,6 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
}
}
}
}
/**
* 异步聚合查询新单跟进详情
*/
@Override
public
PolicyFollowAggregateDto
getPolicyFollowAggregate
(
String
policyBizId
)
{
long
startTime
=
System
.
currentTimeMillis
();
try
{
// 1. 异步查询保单信息
CompletableFuture
<
Policy
>
policyFuture
=
asyncQueryUtil
.
asyncQuery
(
()
->
policyService
.
getOne
(
new
QueryWrapper
<
Policy
>().
eq
(
"policy_biz_id"
,
policyBizId
)),
"查询保单信息"
);
// 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
.
getOne
(
queryWrapper
);
},
"查询保单投保人"
);
// 1.3 异步查询保单受保人
CompletableFuture
<
PolicyInsurant
>
insurantListFuture
=
asyncQueryUtil
.
asyncQuery
(
()
->
{
QueryWrapper
<
PolicyInsurant
>
queryWrapper
=
new
QueryWrapper
<>();
queryWrapper
.
eq
(
"policy_biz_id"
,
policyBizId
);
return
policyInsurantService
.
getOne
(
queryWrapper
);
},
"查询保单受保人"
);
// 1.4 异步查询保单受益人
CompletableFuture
<
List
<
PolicyBeneficiary
>>
beneficiaryListFuture
=
asyncQueryUtil
.
asyncQuery
(
()
->
{
QueryWrapper
<
PolicyBeneficiary
>
queryWrapper
=
new
QueryWrapper
<>();
queryWrapper
.
eq
(
"policy_biz_id"
,
policyBizId
);
return
policyBeneficiaryService
.
list
(
queryWrapper
);
},
"查询保单受益人"
);
// 1.5 异步查询保单第二持有人
CompletableFuture
<
PolicySecondHolder
>
policySecondHolderFuture
=
asyncQueryUtil
.
asyncQuery
(
()
->
{
QueryWrapper
<
PolicySecondHolder
>
queryWrapper
=
new
QueryWrapper
<>();
queryWrapper
.
eq
(
"policy_biz_id"
,
policyBizId
);
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"
);
// 2. 等待所有异步任务完成(设置超时时间)
CompletableFuture
.
allOf
(
policyFuture
,
additionalListFuture
,
policyholderFuture
,
insurantListFuture
,
beneficiaryListFuture
,
policySecondHolderFuture
,
customerBizIdFuture
)
.
get
(
5
,
TimeUnit
.
SECONDS
);
// 5秒超时
// 3. 构建聚合结果
PolicyFollowAggregateDto
aggregateDto
=
PolicyFollowAggregateDto
.
convertToDto
(
policyFuture
.
get
(),
additionalListFuture
.
get
(),
policyholderFuture
.
get
(),
insurantListFuture
.
get
(),
beneficiaryListFuture
.
get
(),
policySecondHolderFuture
.
get
(),
customerBizIdFuture
.
get
()
);
long
costTime
=
System
.
currentTimeMillis
()
-
startTime
;
log
.
info
(
"新单跟进聚合查询完成, policyBizId: {}, 总耗时: {}ms"
,
policyBizId
,
costTime
);
return
aggregateDto
;
}
catch
(
Exception
e
)
{
log
.
error
(
"新单跟进聚合查询失败, policyBizId: {}, 错误: {}"
,
policyBizId
,
e
.
getMessage
(),
e
);
PolicyFollowAggregateDto
errorDto
=
new
PolicyFollowAggregateDto
();
errorDto
.
setErrorMessage
(
"查询失败: "
+
e
.
getMessage
());
return
errorDto
;
}
}
@Override
public
Page
<
PolicyFollowDetailVO
>
getPolicyFollowDetailVOList
(
Page
<
PolicyFollow
>
policyFollowPage
)
{
List
<
PolicyFollow
>
policyFollowList
=
policyFollowPage
.
getRecords
();
Page
<
PolicyFollowDetailVO
>
policyFollowDetailVOPage
=
new
Page
<>(
policyFollowPage
.
getCurrent
(),
policyFollowPage
.
getSize
(),
policyFollowPage
.
getTotal
());
if
(
CollUtil
.
isEmpty
(
policyFollowList
))
{
return
policyFollowDetailVOPage
;
}
// 对象列表 => 封装对象列表
List
<
PolicyFollowDetailVO
>
policyFollowDetailVOList
=
policyFollowList
.
stream
().
map
(
PolicyFollowDetailVO:
:
objToVo
).
collect
(
Collectors
.
toList
());
policyFollowDetailVOPage
.
setRecords
(
policyFollowDetailVOList
);
return
policyFollowDetailVOPage
;
}
@Override
@Override
public
String
getCurrencyValue
(
String
currency
)
{
public
String
getCurrencyValue
(
String
currency
)
{
if
(
StringUtils
.
isBlank
(
currency
))
{
if
(
StringUtils
.
isBlank
(
currency
))
{
...
@@ -686,5 +551,126 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
...
@@ -686,5 +551,126 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
return
policyFollowFileService
.
save
(
policyFollowFile
);
return
policyFollowFileService
.
save
(
policyFollowFile
);
}
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Boolean
saveInitialPayment
(
InitialPaymentSaveRequest
initialPaymentSaveRequest
)
{
// 校验参数
if
(
StringUtils
.
isBlank
(
initialPaymentSaveRequest
.
getPolicyBizId
()))
{
throw
new
BusinessException
(
ResultCode
.
PARAMS_ERROR
.
getCode
(),
"policyBizId不能为空"
);
}
String
policyBizId
=
initialPaymentSaveRequest
.
getPolicyBizId
();
PolicyFollow
policyFollow
=
getByPolicyBizId
(
policyBizId
);
if
(
policyFollow
==
null
)
{
throw
new
BusinessException
(
ResultCode
.
NULL_ERROR
.
getCode
(),
"新单跟进记录不存在"
);
}
// 获取当前登录用户
AuthUserDto
currentLoginUser
=
SecurityUtil
.
getCurrentLoginUser
();
String
loginUserId
=
currentLoginUser
.
getId
().
toString
();
// 更新相关字段
boolean
result
=
this
.
lambdaUpdate
()
.
eq
(
PolicyFollow:
:
getPolicyBizId
,
policyBizId
)
.
set
(
initialPaymentSaveRequest
.
getInitialPremium
()
!=
null
,
PolicyFollow:
:
getInitialPremium
,
initialPaymentSaveRequest
.
getInitialPremium
())
.
set
(
initialPaymentSaveRequest
.
getPolicyLevy
()
!=
null
,
PolicyFollow:
:
getPolicyLevy
,
initialPaymentSaveRequest
.
getPolicyLevy
())
.
set
(
initialPaymentSaveRequest
.
getInitialPaymentMethod
()
!=
null
,
PolicyFollow:
:
getInitialPaymentMethod
,
initialPaymentSaveRequest
.
getInitialPaymentMethod
())
.
set
(
initialPaymentSaveRequest
.
getInitialPremiumPaid
()
!=
null
,
PolicyFollow:
:
getInitialPremiumPaid
,
initialPaymentSaveRequest
.
getInitialPremiumPaid
())
.
set
(
initialPaymentSaveRequest
.
getInitialPremiumDue
()
!=
null
,
PolicyFollow:
:
getInitialPremiumDue
,
initialPaymentSaveRequest
.
getInitialPremiumDue
())
.
set
(
initialPaymentSaveRequest
.
getInitialPremiumTotal
()
!=
null
,
PolicyFollow:
:
getInitialPremiumTotal
,
initialPaymentSaveRequest
.
getInitialPremiumTotal
())
.
set
(
initialPaymentSaveRequest
.
getLatestPaymentDate
()
!=
null
,
PolicyFollow:
:
getLatestPaymentDate
,
initialPaymentSaveRequest
.
getLatestPaymentDate
())
.
set
(
initialPaymentSaveRequest
.
getInitialPremiumDiscount
()
!=
null
,
PolicyFollow:
:
getInitialPremiumDiscount
,
initialPaymentSaveRequest
.
getInitialPremiumDiscount
())
.
set
(
initialPaymentSaveRequest
.
getInitialPaymentStatus
()
!=
null
,
PolicyFollow:
:
getInitialPaymentStatus
,
initialPaymentSaveRequest
.
getInitialPaymentStatus
())
.
set
(
PolicyFollow:
:
getUpdaterId
,
loginUserId
)
.
set
(
PolicyFollow:
:
getUpdateTime
,
new
Date
())
.
update
();
return
result
;
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Boolean
saveMailingInfo
(
MailingInfoSaveRequest
mailingInfoSaveRequest
)
{
// 校验参数
if
(
StringUtils
.
isBlank
(
mailingInfoSaveRequest
.
getPolicyBizId
()))
{
throw
new
BusinessException
(
ResultCode
.
PARAMS_ERROR
.
getCode
(),
"policyBizId不能为空"
);
}
String
policyBizId
=
mailingInfoSaveRequest
.
getPolicyBizId
();
PolicyFollow
policyFollow
=
getByPolicyBizId
(
policyBizId
);
if
(
policyFollow
==
null
)
{
throw
new
BusinessException
(
ResultCode
.
NULL_ERROR
.
getCode
(),
"新单跟进记录不存在"
);
}
// 获取当前登录用户
AuthUserDto
currentLoginUser
=
SecurityUtil
.
getCurrentLoginUser
();
String
loginUserId
=
currentLoginUser
.
getId
().
toString
();
// 更新邮寄信息相关字段
boolean
result
=
this
.
lambdaUpdate
()
.
eq
(
PolicyFollow:
:
getPolicyBizId
,
policyBizId
)
.
set
(
mailingInfoSaveRequest
.
getMailingMethod
()
!=
null
,
PolicyFollow:
:
getMailingMethod
,
mailingInfoSaveRequest
.
getMailingMethod
())
.
set
(
mailingInfoSaveRequest
.
getDeliveryNo
()
!=
null
,
PolicyFollow:
:
getDeliveryNo
,
mailingInfoSaveRequest
.
getDeliveryNo
())
.
set
(
mailingInfoSaveRequest
.
getBrokerSignDate
()
!=
null
,
PolicyFollow:
:
getBrokerSignDate
,
mailingInfoSaveRequest
.
getBrokerSignDate
())
.
set
(
mailingInfoSaveRequest
.
getCustomerSignDate
()
!=
null
,
PolicyFollow:
:
getCustomerSignDate
,
mailingInfoSaveRequest
.
getCustomerSignDate
())
.
set
(
PolicyFollow:
:
getUpdaterId
,
loginUserId
)
.
set
(
PolicyFollow:
:
getUpdateTime
,
new
Date
())
.
update
();
return
result
;
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Boolean
batchSaveBrokers
(
BrokerBatchSaveRequest
brokerBatchSaveRequest
)
{
// 校验参数
if
(
StringUtils
.
isBlank
(
brokerBatchSaveRequest
.
getPolicyBizId
()))
{
throw
new
BusinessException
(
ResultCode
.
PARAMS_ERROR
.
getCode
(),
"policyBizId不能为空"
);
}
String
policyBizId
=
brokerBatchSaveRequest
.
getPolicyBizId
();
PolicyFollow
policyFollow
=
getByPolicyBizId
(
policyBizId
);
if
(
policyFollow
==
null
)
{
throw
new
BusinessException
(
ResultCode
.
NULL_ERROR
.
getCode
(),
"新单跟进记录不存在"
);
}
if
(
org
.
apache
.
commons
.
collections4
.
CollectionUtils
.
isEmpty
(
brokerBatchSaveRequest
.
getBrokerList
()))
{
throw
new
BusinessException
(
ResultCode
.
PARAMS_ERROR
.
getCode
(),
"介绍人列表不能为空"
);
}
// 获取当前登录用户
AuthUserDto
currentLoginUser
=
SecurityUtil
.
getCurrentLoginUser
();
String
loginUserId
=
currentLoginUser
.
getId
().
toString
();
// 删除该 policyBizId 下的所有现有介绍人
policyBrokerService
.
lambdaUpdate
()
.
eq
(
PolicyBroker:
:
getPolicyBizId
,
policyBizId
)
.
remove
();
// 批量插入新的介绍人记录
List
<
PolicyBroker
>
brokerList
=
new
ArrayList
<>();
for
(
BrokerBatchSaveRequest
.
BrokerInfo
brokerInfo
:
brokerBatchSaveRequest
.
getBrokerList
())
{
PolicyBroker
policyBroker
=
new
PolicyBroker
();
policyBroker
.
setPolicyBizId
(
policyBizId
);
policyBroker
.
setPolicyNo
(
policyFollow
.
getPolicyNo
());
policyBroker
.
setBrokerName
(
brokerInfo
.
getBrokerName
());
policyBroker
.
setBrokerBizId
(
brokerInfo
.
getBrokerBizId
());
policyBroker
.
setGender
(
brokerInfo
.
getGender
());
policyBroker
.
setInternalCode
(
brokerInfo
.
getInternalCode
());
policyBroker
.
setTeam
(
brokerInfo
.
getTeam
());
policyBroker
.
setTeamBizId
(
brokerInfo
.
getTeamBizId
());
policyBroker
.
setBrokerRatio
(
brokerInfo
.
getBrokerRatio
());
policyBroker
.
setRemark
(
brokerInfo
.
getRemark
());
policyBroker
.
setIsDeleted
(
0
);
policyBroker
.
setCreatorId
(
loginUserId
);
policyBroker
.
setCreateTime
(
new
Date
());
policyBroker
.
setUpdaterId
(
loginUserId
);
policyBroker
.
setUpdateTime
(
new
Date
());
brokerList
.
add
(
policyBroker
);
}
return
policyBrokerService
.
saveBatch
(
brokerList
);
}
}
}
yd-csf-service/src/main/java/com/yd/csf/service/vo/PolicyFollowDetailVO.java
View file @
f087e6d8
...
@@ -193,6 +193,26 @@ public class PolicyFollowDetailVO implements Serializable {
...
@@ -193,6 +193,26 @@ public class PolicyFollowDetailVO implements Serializable {
private
Object
initialPremium
;
private
Object
initialPremium
;
/**
/**
* 首期已缴保费
*/
private
Object
initialPremiumPaid
;
/**
* 首期待缴保费
*/
private
Object
initialPremiumDue
;
/**
* 首期缴费总额
*/
private
Object
initialPremiumTotal
;
/**
* 首期保费优惠金额
*/
private
Object
initialPremiumDiscount
;
/**
* 寄送方式 1-自提, 2-快递
* 寄送方式 1-自提, 2-快递
*/
*/
private
String
mailingMethod
;
private
String
mailingMethod
;
...
...
yd-csf-service/src/main/resources/mappers/PolicyBrokerMapper.xml
View file @
f087e6d8
...
@@ -10,6 +10,8 @@
...
@@ -10,6 +10,8 @@
<result
property=
"policyNo"
column=
"policy_no"
/>
<result
property=
"policyNo"
column=
"policy_no"
/>
<result
property=
"brokerName"
column=
"broker_name"
/>
<result
property=
"brokerName"
column=
"broker_name"
/>
<result
property=
"brokerBizId"
column=
"broker_biz_id"
/>
<result
property=
"brokerBizId"
column=
"broker_biz_id"
/>
<result
property=
"gender"
column=
"gender"
/>
<result
property=
"internalCode"
column=
"internal_code"
/>
<result
property=
"team"
column=
"team"
/>
<result
property=
"team"
column=
"team"
/>
<result
property=
"teamBizId"
column=
"team_biz_id"
/>
<result
property=
"teamBizId"
column=
"team_biz_id"
/>
<result
property=
"brokerRatio"
column=
"broker_ratio"
/>
<result
property=
"brokerRatio"
column=
"broker_ratio"
/>
...
@@ -22,8 +24,8 @@
...
@@ -22,8 +24,8 @@
</resultMap>
</resultMap>
<sql
id=
"Base_Column_List"
>
<sql
id=
"Base_Column_List"
>
id,policy_biz_id,policy_no,broker_name,broker_biz_id,
team,broker_ratio
,
id,policy_biz_id,policy_no,broker_name,broker_biz_id,
gender,internal_code
,
team_biz_id,remark,is_deleted,creator_id,updater_id,
team
,broker_ratio,team
_biz_id,remark,is_deleted,creator_id,updater_id,
create_time,update_time
create_time,update_time
</sql>
</sql>
</mapper>
</mapper>
yd-csf-service/src/main/resources/mappers/PolicyFollowMapper.xml
View file @
f087e6d8
...
@@ -57,6 +57,9 @@
...
@@ -57,6 +57,9 @@
<result
property=
"policyCurrency"
column=
"policy_currency"
/>
<result
property=
"policyCurrency"
column=
"policy_currency"
/>
<result
property=
"initialPaymentMethod"
column=
"initial_payment_method"
/>
<result
property=
"initialPaymentMethod"
column=
"initial_payment_method"
/>
<result
property=
"initialPremium"
column=
"initial_premium"
/>
<result
property=
"initialPremium"
column=
"initial_premium"
/>
<result
property=
"initialPremiumTotal"
column=
"initial_premium_total"
/>
<result
property=
"initialPaymentStatus"
column=
"initial_payment_status"
/>
<result
property=
"initialPremiumDiscount"
column=
"initial_premium_discount"
/>
<result
property=
"mailingMethod"
column=
"mailing_method"
/>
<result
property=
"mailingMethod"
column=
"mailing_method"
/>
<result
property=
"renewalPaymentMethod"
column=
"renewal_payment_method"
/>
<result
property=
"renewalPaymentMethod"
column=
"renewal_payment_method"
/>
<result
property=
"dividendPaymentMethod"
column=
"dividend_payment_method"
/>
<result
property=
"dividendPaymentMethod"
column=
"dividend_payment_method"
/>
...
@@ -88,7 +91,8 @@
...
@@ -88,7 +91,8 @@
product_name,product_cate,insurance_company,insurance_company_biz_id,reconciliation_company,
product_name,product_cate,insurance_company,insurance_company_biz_id,reconciliation_company,
reconciliation_company_biz_id,status,next_status_list,policy_holder,insured,
reconciliation_company_biz_id,status,next_status_list,policy_holder,insured,
insured_age,grace_period,is_join,policy_currency,initial_payment_method,
insured_age,grace_period,is_join,policy_currency,initial_payment_method,
initial_premium,mailing_method,renewal_payment_method,dividend_payment_method,delivery_no,
initial_premium,initial_premium_total,initial_payment_status,initial_premium_discount,
mailing_method,renewal_payment_method,dividend_payment_method,delivery_no,
policy_levy,initial_premium_paid,initial_premium_due,latest_payment_date,broker_sign_date,
policy_levy,initial_premium_paid,initial_premium_due,latest_payment_date,broker_sign_date,
insurer_mailing_date,customer_sign_date,attachments,remark,is_deleted,
insurer_mailing_date,customer_sign_date,attachments,remark,is_deleted,
creator_id,updater_id,create_time,update_time
creator_id,updater_id,create_time,update_time
...
...
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