Commit f77c68b0 by jianan

新单跟进1

parent 79e3368c
...@@ -5,6 +5,7 @@ import com.alibaba.excel.ExcelReader; ...@@ -5,6 +5,7 @@ import com.alibaba.excel.ExcelReader;
import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener; import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.read.metadata.ReadSheet; import com.alibaba.excel.read.metadata.ReadSheet;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.auth.core.dto.AuthUserDto; import com.yd.auth.core.dto.AuthUserDto;
import com.yd.auth.core.utils.SecurityUtil; import com.yd.auth.core.utils.SecurityUtil;
...@@ -20,6 +21,7 @@ import com.yd.csf.service.dto.*; ...@@ -20,6 +21,7 @@ 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.*; import com.yd.csf.service.model.*;
import com.yd.csf.service.service.*; import com.yd.csf.service.service.*;
import com.yd.csf.service.vo.PolicyFollowRecordVO;
import com.yd.csf.service.vo.PolicyFollowVO; import com.yd.csf.service.vo.PolicyFollowVO;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
...@@ -68,6 +70,8 @@ public class ApiPolicyFollowController { ...@@ -68,6 +70,8 @@ public class ApiPolicyFollowController {
private CustomerService customerService; private CustomerService customerService;
@Resource @Resource
private ReconciliationCompanyService reconciliationCompanyService; private ReconciliationCompanyService reconciliationCompanyService;
@Resource
private PolicyFollowRecordService policyFollowRecordService;
@PostMapping("/upload/excel") @PostMapping("/upload/excel")
...@@ -372,6 +376,24 @@ public class ApiPolicyFollowController { ...@@ -372,6 +376,24 @@ public class ApiPolicyFollowController {
} }
/** /**
* 新单跟进上传附件
*
* @param attachmentUploadRequest
* @return
*/
@PostMapping("/attachment/upload")
@Operation(summary = "新单跟进上传附件")
public Result<Boolean> attachmentUpload(@RequestBody AttachmentUploadRequest attachmentUploadRequest) {
if (StringUtils.isBlank(attachmentUploadRequest.getPolicyBizId())) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), "policyBizId不能为空");
}
if (CollectionUtils.isEmpty(attachmentUploadRequest.getAttachmentList())) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), "附件地址列表不能为空");
}
return Result.success(policyFollowService.uploadAttachment(attachmentUploadRequest));
}
/**
* 根据 policyBizId 获取新单跟进(封装类) * 根据 policyBizId 获取新单跟进(封装类)
* *
* @param policyBizId * @param policyBizId
...@@ -380,8 +402,8 @@ public class ApiPolicyFollowController { ...@@ -380,8 +402,8 @@ public class ApiPolicyFollowController {
@GetMapping("/get/vo") @GetMapping("/get/vo")
@Operation(summary = "根据 policyBizId 获取新单跟进详情") @Operation(summary = "根据 policyBizId 获取新单跟进详情")
public Result<PolicyFollowVO> getPolicyFollowByPolicyBizId(@RequestParam("policyBizId") String policyBizId, HttpServletRequest request) { public Result<PolicyFollowVO> getPolicyFollowByPolicyBizId(@RequestParam("policyBizId") String policyBizId, HttpServletRequest request) {
if (policyBizId == null) { if (StringUtils.isBlank(policyBizId)) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage()); return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), "policyBizId不能为空");
} }
// 查询数据库 // 查询数据库
PolicyFollow policyFollow = policyFollowService.getByPolicyBizId(policyBizId); PolicyFollow policyFollow = policyFollowService.getByPolicyBizId(policyBizId);
...@@ -419,7 +441,7 @@ public class ApiPolicyFollowController { ...@@ -419,7 +441,7 @@ public class ApiPolicyFollowController {
@PostMapping("/list/page/vo") @PostMapping("/list/page/vo")
@Operation(summary = "分页获取新单跟进列表") @Operation(summary = "分页获取新单跟进列表")
public Result<Page<PolicyFollowVO>> listPolicyFollowByPage(@RequestBody PolicyFollowQueryRequest policyFollowQueryRequest, public Result<Page<PolicyFollowVO>> listPolicyFollowByPage(@RequestBody PolicyFollowQueryRequest policyFollowQueryRequest,
HttpServletRequest request) { HttpServletRequest request) {
long current = policyFollowQueryRequest.getPageNo(); long current = policyFollowQueryRequest.getPageNo();
long size = policyFollowQueryRequest.getPageSize(); long size = policyFollowQueryRequest.getPageSize();
...@@ -430,4 +452,39 @@ public class ApiPolicyFollowController { ...@@ -430,4 +452,39 @@ public class ApiPolicyFollowController {
return Result.success(policyFollowService.getPolicyFollowVOPage(policyFollowPage)); return Result.success(policyFollowService.getPolicyFollowVOPage(policyFollowPage));
} }
} /**
* 修改跟进状态
*
* @param changePolicyFollowStatusRequest
* @param request
* @return
*/
@PostMapping("/change_status")
@Operation(summary = "修改跟进状态")
public Result<Boolean> changePolicyFollowStatus(@RequestBody ChangePolicyFollowStatusRequest changePolicyFollowStatusRequest,
HttpServletRequest request) {
if (changePolicyFollowStatusRequest == null || StringUtils.isBlank(changePolicyFollowStatusRequest.getPolicyBizId())) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), "policyBizId不能为空");
}
return Result.success(policyFollowService.changePolicyFollowStatus(changePolicyFollowStatusRequest));
}
/**
* 新单跟进状态列表查询
*
* @param policyBizId
* @return
*/
@GetMapping("/status/list")
@Operation(summary = "新单跟进状态列表查询")
public Result<List<PolicyFollowRecordVO>> getPolicyFollowRecordList(@RequestParam("policyBizId") String policyBizId) {
if (policyBizId == null) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), "policyBizId不能为空");
}
QueryWrapper<PolicyFollowRecord> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("policy_biz_id", policyBizId);
queryWrapper.orderByDesc("id");
List<PolicyFollowRecord> policyFollowStatusList = policyFollowRecordService.list(queryWrapper);
return Result.success(policyFollowRecordService.getVOList(policyFollowStatusList));
}
}
\ No newline at end of file
package com.yd.csf.service.dao;
import com.yd.csf.service.model.PolicyFollowRecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author Zhang Jianan
* @description 针对表【policy_follow_record(新单跟进记录表)】的数据库操作Mapper
* @createDate 2025-10-28 17:29:50
* @Entity generator.domain.PolicyFollowRecord
*/
public interface PolicyFollowRecordMapper extends BaseMapper<PolicyFollowRecord> {
}
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 AttachmentUploadRequest implements Serializable {
/**
* 新单跟进bizId
*/
@Schema(description = "新单跟进bizId", requiredMode = Schema.RequiredMode.REQUIRED)
private String policyBizId;
/**
* 附件地址列表
*/
@Schema(description = "附件地址列表", requiredMode = Schema.RequiredMode.REQUIRED)
private List<String> attachmentList;
private static final long serialVersionUID = 1L;
}
package com.yd.csf.service.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
@Data
public class ChangePolicyFollowStatusRequest {
/**
* 新单编号
*/
@Schema(description = "新单编号", requiredMode = Schema.RequiredMode.REQUIRED)
private String policyBizId;
/**
* 新单状态
*/
@Schema(description = "新单状态 'CHECKING'-'文件检查中','UNDERWRITING'-'承保中','FINISHED'-'已完成','DECLINED'-'已拒绝','CANCELLED'-'已取消','FOLLOW_UP'-'待跟进', 字典值: policy_follow_status")
private String status;
/**
* 跟进信息
*/
@Schema(description = "跟进信息")
private String message;
/**
* 附件列表
*/
@Schema(description = "附件列表")
private List<String> attachments;
}
...@@ -24,6 +24,18 @@ public class PolicyFollowAddRequest implements Serializable { ...@@ -24,6 +24,18 @@ public class PolicyFollowAddRequest implements Serializable {
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd")
private Date signDate; private Date signDate;
/**
* 预约业务id
*/
@Schema(description = "预约业务id")
private String appointmentBizId;
/**
* 预约单号
*/
@Schema(description = "预约单号")
private String appointmentNo;
/** /**
* 签单人 * 签单人
*/ */
......
...@@ -19,12 +19,6 @@ public class PolicyFollowUpdateRequest { ...@@ -19,12 +19,6 @@ public class PolicyFollowUpdateRequest {
private String policyBizId; private String policyBizId;
/** /**
* 新单状态
*/
@Schema(description = "新单状态 'CHECKING'-'审核中','UNDERWRITING'-'承保中','FINISHED'-'已完成','DECLINED'-'已拒绝','CANCELLED'-'已取消', 字典值: policy_follow_status")
private String status;
/**
* 客户名称 * 客户名称
*/ */
@Schema(description = "客户名称") @Schema(description = "客户名称")
......
...@@ -7,7 +7,7 @@ import org.apache.commons.lang3.ObjectUtils; ...@@ -7,7 +7,7 @@ import org.apache.commons.lang3.ObjectUtils;
*/ */
public enum PolicyFollowStatusEnum { public enum PolicyFollowStatusEnum {
FOLLOW_UP("待跟进", "FOLLOW_UP"), FOLLOW_UP("待跟进", "FOLLOW_UP"),
CHECKING("审核中", "CHECKING"), CHECKING("文件检查中", "CHECKING"),
UNDERWRITING("承保中", "UNDERWRITING"), UNDERWRITING("承保中", "UNDERWRITING"),
FINISHED("已完成", "FINISHED"), FINISHED("已完成", "FINISHED"),
DECLINED("已拒绝", "DECLINED"), DECLINED("已拒绝", "DECLINED"),
...@@ -49,4 +49,23 @@ public enum PolicyFollowStatusEnum { ...@@ -49,4 +49,23 @@ public enum PolicyFollowStatusEnum {
public String getItemValue() { public String getItemValue() {
return itemValue; return itemValue;
} }
/**
* 根据 value 获取枚举
*
* @param value
* @return
*/
public static PolicyFollowStatusEnum getEnumByValue(String value) {
if (ObjectUtils.isEmpty(value)) {
return null;
}
for (PolicyFollowStatusEnum anEnum : PolicyFollowStatusEnum.values()) {
if (anEnum.getItemValue().equals(value)) {
return anEnum;
}
}
return null;
}
} }
...@@ -4,10 +4,8 @@ import com.baomidou.mybatisplus.annotation.*; ...@@ -4,10 +4,8 @@ import com.baomidou.mybatisplus.annotation.*;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date; import java.util.Date;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
/** /**
...@@ -48,8 +46,14 @@ public class PolicyFollow implements Serializable { ...@@ -48,8 +46,14 @@ public class PolicyFollow implements Serializable {
*/ */
private String userBizId; private String userBizId;
/**
* 客户业务id
*/
private String customerBizId; private String customerBizId;
/**
* 客户名称
*/
private String customerName; private String customerName;
/** /**
...@@ -63,6 +67,11 @@ public class PolicyFollow implements Serializable { ...@@ -63,6 +67,11 @@ public class PolicyFollow implements Serializable {
private String signer; private String signer;
/** /**
* 缮发日期
*/
private Date issueDate;
/**
* 生效日期 * 生效日期
*/ */
private Date effectiveDate; private Date effectiveDate;
...@@ -93,11 +102,31 @@ public class PolicyFollow implements Serializable { ...@@ -93,11 +102,31 @@ public class PolicyFollow implements Serializable {
private Integer prepaidTerm; private Integer prepaidTerm;
/** /**
* 预付额
*/
private String prepaidAmount;
/**
* 折扣后预付额
*/
private String prepaidAmountAfterDiscount;
/**
* 保单截止日期
*/
private Date policyExpirationDate;
/**
* 缴费编号
*/
private String paymentNumber;
/**
* 产品名称 * 产品名称
*/ */
private String productName; private String productName;
/** /**
* 产品类别 * 产品类别
*/ */
private String productCate; private String productCate;
...@@ -148,14 +177,19 @@ public class PolicyFollow implements Serializable { ...@@ -148,14 +177,19 @@ public class PolicyFollow implements Serializable {
private Object initialPremium; private Object initialPremium;
/** /**
* 通用备注 * 附件列表
*/
private String attachments;
/**
* 备注
*/ */
private String remark; private String remark;
/** /**
* 删除标识: 0-正常, 1-删除 * 删除标识: 0-正常, 1-删除
*/ */
@TableLogic @TableField()
private Integer isDeleted; private Integer isDeleted;
/** /**
......
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_follow_record
*/
@TableName(value ="policy_follow_record")
@Data
public class PolicyFollowRecord implements Serializable {
/**
* id
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 新单跟进唯一业务ID
*/
private String policyBizId;
/**
* 跟进状态
*/
private String title;
/**
* 跟进信息
*/
private String message;
/**
* 删除标识: 0-正常, 1-删除
*/
private Integer isDeleted;
/**
* 创建人ID
*/
private String creatorId;
/**
* 创建人名称
*/
private String creatorName;
/**
* 创建时间
*/
private Date createTime;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
package com.yd.csf.service.service;
import com.yd.csf.service.model.PolicyFollowRecord;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yd.csf.service.vo.PolicyFollowRecordVO;
import java.util.List;
/**
* @author Zhang Jianan
* @description 针对表【policy_follow_record(新单跟进记录表)】的数据库操作Service
* @createDate 2025-10-28 17:29:50
*/
public interface PolicyFollowRecordService extends IService<PolicyFollowRecord> {
List<PolicyFollowRecordVO> getVOList(List<PolicyFollowRecord> policyFollowStatusList);
}
...@@ -3,10 +3,7 @@ package com.yd.csf.service.service; ...@@ -3,10 +3,7 @@ package com.yd.csf.service.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.yd.csf.service.dto.AddToPolicyRequest; import com.yd.csf.service.dto.*;
import com.yd.csf.service.dto.PolicyFollowAddRequest;
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.model.PolicyFollow;
import com.yd.csf.service.vo.PolicyFollowVO; import com.yd.csf.service.vo.PolicyFollowVO;
...@@ -32,4 +29,8 @@ public interface PolicyFollowService extends IService<PolicyFollow> { ...@@ -32,4 +29,8 @@ public interface PolicyFollowService extends IService<PolicyFollow> {
Map<String, Object> addPolicyFollow(PolicyFollowAddRequest policyFollowAddRequest); Map<String, Object> addPolicyFollow(PolicyFollowAddRequest policyFollowAddRequest);
Boolean addToPolicy(AddToPolicyRequest addToPolicyRequest); Boolean addToPolicy(AddToPolicyRequest addToPolicyRequest);
Boolean changePolicyFollowStatus(ChangePolicyFollowStatusRequest changePolicyFollowStatusRequest);
Boolean uploadAttachment(AttachmentUploadRequest attachmentUploadRequest);
} }
package com.yd.csf.service.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yd.csf.service.model.PolicyFollowRecord;
import com.yd.csf.service.service.PolicyFollowRecordService;
import com.yd.csf.service.dao.PolicyFollowRecordMapper;
import com.yd.csf.service.vo.PolicyFollowRecordVO;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author Zhang Jianan
* @description 针对表【policy_follow_record(新单跟进记录表)】的数据库操作Service实现
* @createDate 2025-10-28 17:29:50
*/
@Service
public class PolicyFollowRecordServiceImpl extends ServiceImpl<PolicyFollowRecordMapper, PolicyFollowRecord>
implements PolicyFollowRecordService{
@Override
public List<PolicyFollowRecordVO> getVOList(List<PolicyFollowRecord> policyFollowStatusList) {
if (CollectionUtils.isEmpty(policyFollowStatusList)) {
return Collections.emptyList();
}
return policyFollowStatusList.stream()
.map(PolicyFollowRecordVO::objToVO)
.collect(Collectors.toList());
}
}
package com.yd.csf.service.service.impl; package com.yd.csf.service.service.impl;
import cn.hutool.core.collection.CollUtil; 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.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yd.auth.core.dto.AuthUserDto; import com.yd.auth.core.dto.AuthUserDto;
import com.yd.auth.core.utils.SecurityUtil; 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.exception.BusinessException; import com.yd.common.exception.BusinessException;
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.dto.*; import com.yd.csf.service.dto.*;
import com.yd.csf.service.enums.PolicyFollowStatusEnum;
import com.yd.csf.service.model.Policy; import com.yd.csf.service.model.Policy;
import com.yd.csf.service.model.PolicyBroker; import com.yd.csf.service.model.PolicyBroker;
import com.yd.csf.service.model.PolicyFollow; import com.yd.csf.service.model.PolicyFollow;
import com.yd.csf.service.model.PolicyFollowRecord;
import com.yd.csf.service.service.PolicyBrokerService; import com.yd.csf.service.service.PolicyBrokerService;
import com.yd.csf.service.service.PolicyFollowRecordService;
import com.yd.csf.service.service.PolicyFollowService; import com.yd.csf.service.service.PolicyFollowService;
import com.yd.csf.service.dao.PolicyFollowMapper; import com.yd.csf.service.dao.PolicyFollowMapper;
import com.yd.csf.service.service.PolicyService; import com.yd.csf.service.service.PolicyService;
...@@ -26,10 +29,7 @@ import org.springframework.stereotype.Service; ...@@ -26,10 +29,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.util.Collections; import java.util.*;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -45,6 +45,11 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol ...@@ -45,6 +45,11 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
private PolicyBrokerService policyBrokerService; private PolicyBrokerService policyBrokerService;
@Resource @Resource
private PolicyService policyService; private PolicyService policyService;
@Resource
private PolicyFollowService policyFollowService;
@Resource
private PolicyFollowRecordService policyFollowRecordService;
@Override @Override
public PolicyFollow getByPolicyBizId(String policyBizId) { public PolicyFollow getByPolicyBizId(String policyBizId) {
...@@ -228,6 +233,76 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol ...@@ -228,6 +233,76 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
return true; return true;
} }
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean changePolicyFollowStatus(ChangePolicyFollowStatusRequest changePolicyFollowStatusRequest) {
String policyBizId = changePolicyFollowStatusRequest.getPolicyBizId();
PolicyFollow policyFollow = getByPolicyBizId(policyBizId);
if (policyFollow == null) {
throw new BusinessException(ErrorCode.NOT_FOUND_ERROR.getCode(), ErrorCode.NOT_FOUND_ERROR.getMessage());
}
// 校验状态是否存在
PolicyFollowStatusEnum policyFollowStatusEnum = PolicyFollowStatusEnum.getEnumByValue(changePolicyFollowStatusRequest.getStatus());
if (policyFollowStatusEnum == null) {
throw new BusinessException(ResultCode.PARAM_CHECK_ERROR.getCode(), "跟进状态不存在");
}
// 获取当前跟进状态
PolicyFollowStatusEnum currentStatusEnum = PolicyFollowStatusEnum.getEnumByValue(policyFollow.getStatus());
// 校验状态
validPolicyFollowStatus(currentStatusEnum, policyFollowStatusEnum);
// 获取当前登录用户
AuthUserDto currentLoginUser = SecurityUtil.getCurrentLoginUser();
String loginUserId = currentLoginUser.getId().toString();
policyFollow.setStatus(changePolicyFollowStatusRequest.getStatus());
policyFollow.setUpdaterId(loginUserId);
policyFollowService.updateById(policyFollow);
// 新增新单状态记录
PolicyFollowRecord policyFollowRecord = new PolicyFollowRecord();
policyFollowRecord.setId(null);
policyFollowRecord.setPolicyBizId(policyBizId);
policyFollowRecord.setTitle(Objects.requireNonNull(policyFollowStatusEnum.getItemLabel()));
policyFollowRecord.setMessage(changePolicyFollowStatusRequest.getMessage());
policyFollowRecord.setCreatorId(loginUserId);
policyFollowRecord.setCreateTime(new Date());
policyFollowRecordService.save(policyFollowRecord);
return true;
}
@Override
public Boolean uploadAttachment(AttachmentUploadRequest attachmentUploadRequest) {
String policyBizId = attachmentUploadRequest.getPolicyBizId();
PolicyFollow policyFollow = getByPolicyBizId(policyBizId);
if (policyFollow == null) {
throw new BusinessException(ErrorCode.NOT_FOUND_ERROR.getCode(), ErrorCode.NOT_FOUND_ERROR.getMessage());
}
policyFollow.setAttachments(String.join(",", attachmentUploadRequest.getAttachmentList()));
PolicyFollow updateObj = new PolicyFollow();
updateObj.setId(policyFollow.getId());
updateObj.setAttachments(policyFollow.getAttachments());
return updateById(updateObj);
}
private static void validPolicyFollowStatus(PolicyFollowStatusEnum currentStatusEnum, PolicyFollowStatusEnum policyFollowStatusEnum) {
if (PolicyFollowStatusEnum.FOLLOW_UP.equals(currentStatusEnum) && !PolicyFollowStatusEnum.CHECKING.equals(policyFollowStatusEnum)) {
throw new BusinessException(ResultCode.PARAM_CHECK_ERROR.getCode(), "待跟进状态只能改为文件检查中");
}
if (PolicyFollowStatusEnum.CHECKING.equals(currentStatusEnum) && !PolicyFollowStatusEnum.UNDERWRITING.equals(policyFollowStatusEnum)) {
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(), "承保中状态只能改为已完成");
}
}
}
} }
......
package com.yd.csf.service.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yd.csf.service.model.PolicyFollowRecord;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.beans.BeanUtils;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
@Data
public class PolicyFollowRecordVO implements Serializable {
@Schema(description = "id")
private Long id;
/**
* 新单跟进唯一业务ID
*/
@Schema(description = "新单跟进唯一业务ID")
private String policyBizId;
/**
* 跟进状态
*/
@Schema(description = "跟进状态")
private String title;
/**
* 跟进信息
*/
@Schema(description = "跟进信息")
private String message;
/**
* 创建人ID
*/
@Schema(description = "创建人ID")
private String creatorId;
/**
* 创建人姓名
*/
@Schema(description = "创建人姓名")
private String creatorName;
/**
* 创建时间
*/
@Schema(description = "创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
private static final long serialVersionUID = 1L;
public static PolicyFollowRecordVO objToVO(PolicyFollowRecord policyFollowRecord) {
if (policyFollowRecord == null) {
return null;
}
PolicyFollowRecordVO policyFollowRecordVO = new PolicyFollowRecordVO();
BeanUtils.copyProperties(policyFollowRecord, policyFollowRecordVO);
return policyFollowRecordVO;
}
}
...@@ -26,6 +26,18 @@ public class PolicyFollowVO implements Serializable { ...@@ -26,6 +26,18 @@ public class PolicyFollowVO implements Serializable {
@Schema(description = "新单跟进唯一业务ID") @Schema(description = "新单跟进唯一业务ID")
private String policyBizId; private String policyBizId;
/**
* 预约业务id
*/
@Schema(description = "预约业务id")
private String appointmentBizId;
/**
* 预约单号
*/
@Schema(description = "预约单号")
private String appointmentNo;
/** /**
* 保单号 * 保单号
*/ */
...@@ -64,6 +76,21 @@ public class PolicyFollowVO implements Serializable { ...@@ -64,6 +76,21 @@ public class PolicyFollowVO implements Serializable {
private String signer; private String signer;
/** /**
* 缮发日期
*/
private Date issueDate;
/**
* 生效日期
*/
private Date effectiveDate;
/**
* 续保日期
*/
private Date renewalDate;
/**
* 供款年期 * 供款年期
*/ */
@Schema(description = "供款年期") @Schema(description = "供款年期")
...@@ -76,6 +103,36 @@ public class PolicyFollowVO implements Serializable { ...@@ -76,6 +103,36 @@ public class PolicyFollowVO implements Serializable {
private BigDecimal paymentPremium; private BigDecimal paymentPremium;
/** /**
* 是否预缴: 0-否, 1-是
*/
private Integer isPrepaid;
/**
* 预缴年期
*/
private Integer prepaidTerm;
/**
* 预付额
*/
private String prepaidAmount;
/**
* 折扣后预付额
*/
private String prepaidAmountAfterDiscount;
/**
* 保单截止日期
*/
private Date policyExpirationDate;
/**
* 缴费编号
*/
private String paymentNumber;
/**
* 产品名称 * 产品名称
*/ */
@Schema(description = "产品名称") @Schema(description = "产品名称")
...@@ -108,7 +165,7 @@ public class PolicyFollowVO implements Serializable { ...@@ -108,7 +165,7 @@ public class PolicyFollowVO implements Serializable {
/** /**
* 新单跟进状态 * 新单跟进状态
*/ */
@Schema(description = "新单跟进状态 'CHECKING'-'审核中','UNDERWRITING'-'承保中','FINISHED'-'已完成','DECLINED'-'已拒绝','CANCELLED'-'已取消', 字典值: policy_follow_status") @Schema(description = "新单跟进状态 字典值: policy_follow_status")
private String status; private String status;
/** /**
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yd.csf.service.dao.PolicyFollowRecordMapper">
<resultMap id="BaseResultMap" type="com.yd.csf.service.model.PolicyFollowRecord">
<id property="id" column="id" />
<result property="policyBizId" column="policy_biz_id" />
<result property="title" column="title" />
<result property="message" column="message" />
<result property="isDeleted" column="is_deleted" />
<result property="creatorId" column="creator_id" />
<result property="creatorName" column="creator_name" />
<result property="createTime" column="create_time" />
</resultMap>
<sql id="Base_Column_List">
id,policy_biz_id,title,message,is_deleted,creator_id,
creator_name,create_time
</sql>
</mapper>
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