Commit 2c719fe5 by jianan

新单跟进2

parent f77c68b0
......@@ -369,8 +369,8 @@ public class ApiPolicyFollowController {
@PostMapping("/update")
@Operation(summary = "更新新单跟进信息")
public Result<Boolean> updatePolicyFollow(@RequestBody PolicyFollowUpdateRequest policyFollowUpdateRequest) {
if (policyFollowUpdateRequest == null || policyFollowUpdateRequest.getPolicyBizId() == null) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage());
if (policyFollowUpdateRequest == null || StringUtils.isBlank(policyFollowUpdateRequest.getPolicyBizId())) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), "policyBizId不能为空");
}
return Result.success(policyFollowService.updatePolicyFollow(policyFollowUpdateRequest));
}
......
......@@ -415,6 +415,7 @@ public class ApiAppointmentServiceImpl implements ApiAppointmentService {
follow.setCustomerBizId(appointment.getCustomerBizId());
//待跟进
follow.setStatus(PolicyFollowStatusEnum.FOLLOW_UP.getItemValue());
follow.setNextStatusList(policyFollowService.getNextStatus(PolicyFollowStatusEnum.CHECKING));
//TODO 保险公司业务id
// follow.setInsurerBizId();
//TODO 期交保费
......
......@@ -15,9 +15,9 @@ public class ChangePolicyFollowStatusRequest {
private String policyBizId;
/**
* 新单状态
* 跟进状态
*/
@Schema(description = "新单状态 'CHECKING'-'文件检查中','UNDERWRITING'-'承保中','FINISHED'-'已完成','DECLINED'-'已拒绝','CANCELLED'-'已取消','FOLLOW_UP'-'待跟进', 字典值: policy_follow_status")
@Schema(description = "跟进状态 通过`PolicyFollowVO`中的nextStatusList下拉框选择")
private String status;
/**
......@@ -25,10 +25,4 @@ public class ChangePolicyFollowStatusRequest {
*/
@Schema(description = "跟进信息")
private String message;
/**
* 附件列表
*/
@Schema(description = "附件列表")
private List<String> attachments;
}
......@@ -154,6 +154,18 @@ public class PolicyFollowUpdateRequest {
private List<PolicyBrokerDto> brokerList;
/**
* 核保信息
*/
@Schema(description = "核保信息")
private VerifyPolicyInfo verifyPolicyInfo;
/**
* 保单邮寄
*/
@Schema(description = "保单邮寄")
private PolicyMailing policyMailing;
/**
* 备注
*/
@Schema(description = "备注")
......
package com.yd.csf.service.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
@Data
public class PolicyMailing implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 寄送方式
*/
@Schema(description = "寄送方式")
private String mailingMethod;
/**
* 经纪公司签收日期
*/
@Schema(description = "经纪公司签收日期")
private String brokerSignDate;
/**
* 保险公司寄出日期
*/
@Schema(description = "保险公司寄出日期")
private String insurerMailingDate;
/**
* 客户签收日期
*/
@Schema(description = "客户签收日期")
private String customerSignDate;
}
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 VerifyPolicyInfo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 保险种类
*/
@Schema(description = "保险种类")
private String productCate;
/**
* 递交日期
*/
@Schema(description = "递交日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date submitDate;
/**
* 签单日期
*/
@Schema(description = "签单日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date signDate;
/**
* 缮发日期
*/
@Schema(description = "缮发日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date issueDate;
/**
* 保单生效日
*/
@Schema(description = "保单生效日")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date effectiveDate;
/**
* 是否预缴: 0-否, 1-是
*/
@Schema(description = "是否预缴: 0-否, 1-是")
private Integer isPrepaid;
/**
* 预付额
*/
@Schema(description = "预付额")
private String prepaidAmount;
/**
* 折扣后预付额
*/
@Schema(description = "折扣后预付额")
private String prepaidAmountAfterDiscount;
/**
* 保单截止日期
*/
@Schema(description = "保单截止日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date policyExpirationDate;
/**
* 缴费编号
*/
@Schema(description = "缴费编号")
private String paymentNumber;
}
......@@ -6,6 +6,7 @@ import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
......@@ -57,6 +58,11 @@ public class PolicyFollow implements Serializable {
private String customerName;
/**
* 递交日期
*/
private Date submitDate;
/**
* 签单日期
*/
private Date signDate;
......@@ -157,6 +163,11 @@ public class PolicyFollow implements Serializable {
private String status;
/**
* 下一步跟进状态列表
*/
private String nextStatusList;
/**
* 保單持有人
*/
private String policyHolder;
......@@ -177,6 +188,26 @@ public class PolicyFollow implements Serializable {
private Object initialPremium;
/**
* 寄送方式
*/
private String mailingMethod;
/**
* 经纪公司签收日期
*/
private String brokerSignDate;
/**
* 保险公司寄出日期
*/
private String insurerMailingDate;
/**
* 客户签收日期
*/
private String customerSignDate;
/**
* 附件列表
*/
private String attachments;
......
......@@ -4,6 +4,7 @@ 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.*;
import com.yd.csf.service.enums.PolicyFollowStatusEnum;
import com.yd.csf.service.model.PolicyFollow;
import com.yd.csf.service.vo.PolicyFollowVO;
......@@ -33,4 +34,6 @@ public interface PolicyFollowService extends IService<PolicyFollow> {
Boolean changePolicyFollowStatus(ChangePolicyFollowStatusRequest changePolicyFollowStatusRequest);
Boolean uploadAttachment(AttachmentUploadRequest attachmentUploadRequest);
String getNextStatus(PolicyFollowStatusEnum policyFollowStatusEnum);
}
......@@ -116,15 +116,17 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
@Override
@Transactional(rollbackFor = Exception.class)
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, "id", "policyBizId");
// 设置核保信息
setValidPolicyInfo(policyFollow, policyFollowUpdateRequest.getVerifyPolicyInfo());
// 设置保单邮寄
setPolicyMailing(policyFollow, policyFollowUpdateRequest.getPolicyMailing());
// 获取当前登录用户
AuthUserDto currentLoginUser = SecurityUtil.getCurrentLoginUser();
......@@ -153,6 +155,30 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
return updateById(policyFollow);
}
private void setPolicyMailing(PolicyFollow policyFollow, PolicyMailing policyMailing) {
if (policyMailing == null) {
return;
}
policyFollow.setMailingMethod(policyMailing.getMailingMethod());
policyFollow.setBrokerSignDate(policyMailing.getBrokerSignDate());
policyFollow.setInsurerMailingDate(policyMailing.getInsurerMailingDate());
policyFollow.setCustomerSignDate(policyMailing.getCustomerSignDate());
}
private void setValidPolicyInfo(PolicyFollow policyFollow, VerifyPolicyInfo verifyPolicyInfo) {
if (verifyPolicyInfo == null) {
return;
}
policyFollow.setSubmitDate(verifyPolicyInfo.getSubmitDate());
policyFollow.setSignDate(verifyPolicyInfo.getSignDate());
policyFollow.setIssueDate(verifyPolicyInfo.getIssueDate());
policyFollow.setEffectiveDate(verifyPolicyInfo.getEffectiveDate());
policyFollow.setIsPrepaid(verifyPolicyInfo.getIsPrepaid());
policyFollow.setPrepaidAmount(verifyPolicyInfo.getPrepaidAmount());
policyFollow.setPrepaidAmountAfterDiscount(verifyPolicyInfo.getPrepaidAmountAfterDiscount());
policyFollow.setPolicyExpirationDate(verifyPolicyInfo.getPolicyExpirationDate());
}
@Override
public PolicyFollowVO getPolicyFollowVO(PolicyFollow policyFollow) {
if (policyFollow == null) {
......@@ -257,6 +283,7 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
String loginUserId = currentLoginUser.getId().toString();
policyFollow.setStatus(changePolicyFollowStatusRequest.getStatus());
policyFollow.setNextStatusList(getNextStatus(policyFollowStatusEnum));
policyFollow.setUpdaterId(loginUserId);
policyFollowService.updateById(policyFollow);
......@@ -274,6 +301,21 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
}
@Override
public String getNextStatus(PolicyFollowStatusEnum policyFollowStatusEnum) {
switch (policyFollowStatusEnum) {
case CHECKING:
return PolicyFollowStatusEnum.UNDERWRITING.getItemValue() + ","
+ PolicyFollowStatusEnum.CANCELLED.getItemValue();
case UNDERWRITING:
return PolicyFollowStatusEnum.FINISHED.getItemValue() + ","
+ PolicyFollowStatusEnum.DECLINED.getItemValue() + ","
+ PolicyFollowStatusEnum.CANCELLED.getItemValue();
default:
return null;
}
}
@Override
public Boolean uploadAttachment(AttachmentUploadRequest attachmentUploadRequest) {
String policyBizId = attachmentUploadRequest.getPolicyBizId();
PolicyFollow policyFollow = getByPolicyBizId(policyBizId);
......@@ -290,6 +332,11 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
}
private static void validPolicyFollowStatus(PolicyFollowStatusEnum currentStatusEnum, PolicyFollowStatusEnum policyFollowStatusEnum) {
// 如果是已取消,则不校验
if (PolicyFollowStatusEnum.CANCELLED.equals(policyFollowStatusEnum)) {
return;
}
if (PolicyFollowStatusEnum.FOLLOW_UP.equals(currentStatusEnum) && !PolicyFollowStatusEnum.CHECKING.equals(policyFollowStatusEnum)) {
throw new BusinessException(ResultCode.PARAM_CHECK_ERROR.getCode(), "待跟进状态只能改为文件检查中");
}
......@@ -297,8 +344,8 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
throw new BusinessException(ResultCode.PARAM_CHECK_ERROR.getCode(), "文件检查中状态只能改为承保中");
}
if (PolicyFollowStatusEnum.UNDERWRITING.equals(currentStatusEnum)) {
if (PolicyFollowStatusEnum.FINISHED.equals(policyFollowStatusEnum) || PolicyFollowStatusEnum.DECLINED.equals(policyFollowStatusEnum) || PolicyFollowStatusEnum.CANCELLED.equals(policyFollowStatusEnum)) {
throw new BusinessException(ResultCode.PARAM_CHECK_ERROR.getCode(), "承保中状态只能改为已完成");
if (PolicyFollowStatusEnum.FINISHED.equals(policyFollowStatusEnum) || PolicyFollowStatusEnum.DECLINED.equals(policyFollowStatusEnum)) {
throw new BusinessException(ResultCode.PARAM_CHECK_ERROR.getCode(), "承保中状态只能改为已完成或已拒绝");
}
}
}
......
package com.yd.csf.service.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yd.csf.service.dto.PolicyMailing;
import com.yd.csf.service.dto.VerifyPolicyInfo;
import com.yd.csf.service.model.Policy;
import com.yd.csf.service.model.PolicyBroker;
import com.yd.csf.service.model.PolicyFollow;
......@@ -10,6 +12,7 @@ import org.springframework.beans.BeanUtils;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
......@@ -169,6 +172,12 @@ public class PolicyFollowVO implements Serializable {
private String status;
/**
* 下一步跟进状态列表
*/
@Schema(description = "下一步跟进状态列表, 下拉框")
private List<String> nextStatusList;
/**
* 保單持有人
*/
@Schema(description = "保單持有人")
......@@ -199,6 +208,18 @@ public class PolicyFollowVO implements Serializable {
private List<PolicyBroker> brokerList;
/**
* 核保信息
*/
@Schema(description = "核保信息")
private VerifyPolicyInfo verifyPolicyInfo;
/**
* 保单邮寄
*/
@Schema(description = "保单邮寄")
private PolicyMailing policyMailing;
/**
* 保单信息
*/
// private Policy policy;
......@@ -216,6 +237,17 @@ public class PolicyFollowVO implements Serializable {
}
PolicyFollowVO policyFollowVO = new PolicyFollowVO();
BeanUtils.copyProperties(policyFollow, policyFollowVO);
if (policyFollow.getNextStatusList() != null) {
policyFollowVO.setNextStatusList(Arrays.asList(policyFollow.getNextStatusList().split(",")));
}
VerifyPolicyInfo verifyPolicyInfo = new VerifyPolicyInfo();
BeanUtils.copyProperties(policyFollow, verifyPolicyInfo);
policyFollowVO.setVerifyPolicyInfo(verifyPolicyInfo);
PolicyMailing policyMailing = new PolicyMailing();
BeanUtils.copyProperties(policyFollow, policyMailing);
policyFollowVO.setPolicyMailing(policyMailing);
return policyFollowVO;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment