Commit b23d2dfb by jianan

新单跟进14

parent 5275117a
...@@ -2,10 +2,12 @@ package com.yd.csf.api.controller; ...@@ -2,10 +2,12 @@ package com.yd.csf.api.controller;
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.yd.common.enums.ResultCode;
import com.yd.common.result.Result; import com.yd.common.result.Result;
import com.yd.csf.service.dto.CommissionExpectedQueryRequest; import com.yd.csf.service.dto.CommissionExpectedQueryRequest;
import com.yd.csf.service.dto.PolicyQueryRequest; import com.yd.csf.service.dto.PolicyQueryRequest;
import com.yd.csf.service.dto.PolicyUpdateRequest;
import com.yd.csf.service.model.CommissionExpected; import com.yd.csf.service.model.CommissionExpected;
import com.yd.csf.service.model.Policy; import com.yd.csf.service.model.Policy;
import com.yd.csf.service.service.CommissionExpectedService; import com.yd.csf.service.service.CommissionExpectedService;
...@@ -81,19 +83,19 @@ public class ApiPolicyController { ...@@ -81,19 +83,19 @@ public class ApiPolicyController {
// } // }
/** /**
* 更新保单 * 更新保单(产品计划)
* *
* @param PolicyUpdateRequest * @param policyUpdateRequest
* @return * @return
*/ */
// @PostMapping("/update") @PostMapping("/update")
// @Operation(summary = "更新保单信息") @Operation(summary = "更新保单信息")
// public Result<Boolean> updatePolicy(@RequestBody PolicyUpdateRequest PolicyUpdateRequest) { public Result<Boolean> updatePolicy(@RequestBody PolicyUpdateRequest policyUpdateRequest) {
// if (PolicyUpdateRequest == null || PolicyUpdateRequest.getPolicyBizId() == null) { if (policyUpdateRequest == null || policyUpdateRequest.getPolicyBizId() == null) {
// return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage()); return Result.fail(ResultCode.PARAMS_ERROR.getCode(), ResultCode.PARAMS_ERROR.getMessage());
// } }
// return Result.success(PolicyService.updatePolicy(PolicyUpdateRequest)); return Result.success(policyService.updatePolicy(policyUpdateRequest));
// } }
/** /**
* 根据 policyBizId 获取保单(封装类) * 根据 policyBizId 获取保单(封装类)
......
package com.yd.csf.service.dao;
import com.yd.csf.service.model.PolicyAdditional;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author Zhang Jianan
* @description 针对表【policy_additional(保单附加险信息表)】的数据库操作Mapper
* @createDate 2025-11-03 11:05:09
* @Entity generator.domain.PolicyAdditional
*/
public interface PolicyAdditionalMapper extends BaseMapper<PolicyAdditional> {
}
package com.yd.csf.service.dto; package com.yd.csf.service.dto;
import com.yd.csf.feign.dto.appointment.*;
import com.yd.csf.service.model.*; import com.yd.csf.service.model.*;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.BeanUtils;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects;
/** /**
* 新单跟进聚合查询结果DTO * 新单跟进聚合查询结果DTO
...@@ -19,34 +25,40 @@ public class PolicyFollowAggregateDto implements Serializable { ...@@ -19,34 +25,40 @@ public class PolicyFollowAggregateDto implements Serializable {
private String policyBizId; private String policyBizId;
/** /**
* 客户业务ID
*/
@Schema(description = "客户业务ID")
private String customerBizId;
/**
* 保单产品计划(保单) * 保单产品计划(保单)
*/ */
@Schema(description = "保单产品计划(保单)") @Schema(description = "保单产品计划(保单)")
private Policy policy; private ApiProductPlanInfoDto apiProductPlanInfoDto;
/** /**
* 保单投保人 * 保单投保人
*/ */
@Schema(description = "保单投保人") @Schema(description = "保单投保人")
private List<PolicyPolicyholder> policyPolicyholderList; private ApiPolicyholderInfoDto apiPolicyholderInfoDto;
/** /**
* 保单受保人 * 保单受保人
*/ */
@Schema(description = "保单受保人") @Schema(description = "保单受保人")
private List<PolicyInsurant> policyInsurantList; private ApiInsurantInfoDto apiInsurantInfoDto;
/** /**
* 保单受益人 * 保单受益人
*/ */
@Schema(description = "保单受益人") @Schema(description = "保单受益人")
private List<PolicyBeneficiary> policyBeneficiaryList; private List<ApiBeneficiaryInfoDto> apiBeneficiaryInfoDtoList;
/** /**
* 保单第二持有人 * 保单第二持有人
*/ */
@Schema(description = "保单第二持有人") @Schema(description = "保单第二持有人")
private List<PolicySecondHolder> policySecondHolderList; private ApiSecondHolderInfoDto apiSecondHolderInfoDto;
// todo 健康问卷 // todo 健康问卷
// private Object policyholderInfo; // private Object policyholderInfo;
...@@ -55,4 +67,67 @@ public class PolicyFollowAggregateDto implements Serializable { ...@@ -55,4 +67,67 @@ public class PolicyFollowAggregateDto implements Serializable {
private String errorMessage; private String errorMessage;
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public static PolicyFollowAggregateDto convertToDto(Policy policy,
List<PolicyAdditional> policyAdditionals,
PolicyPolicyholder policyPolicyholder,
PolicyInsurant policyInsurant,
List<PolicyBeneficiary> beneficiaryList,
PolicySecondHolder policySecondHolder) {
PolicyFollowAggregateDto dto = new PolicyFollowAggregateDto();
if (ObjectUtils.isEmpty(policy)) {
return dto;
}
// 设置保单产品计划(保单)
if (ObjectUtils.isNotEmpty(policy)) {
ApiProductPlanInfoDto apiProductPlanInfoDto = new ApiProductPlanInfoDto();
// 产品计划主信息
ApiProductPlanMainInfoDto apiProductPlanMainInfoDto = new ApiProductPlanMainInfoDto();
BeanUtils.copyProperties(policy, apiProductPlanMainInfoDto);
apiProductPlanInfoDto.setApiProductPlanMainInfoDto(apiProductPlanMainInfoDto);
// 附加险列表
List<ApiProductPlanAdditionalInfoDto> apiProductPlanAdditionalInfoDtoList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(policyAdditionals)) {
policyAdditionals.forEach(policyAdditional -> {
ApiProductPlanAdditionalInfoDto apiProductPlanAdditionalInfoDto = new ApiProductPlanAdditionalInfoDto();
BeanUtils.copyProperties(policyAdditional, apiProductPlanAdditionalInfoDto);
apiProductPlanAdditionalInfoDtoList.add(apiProductPlanAdditionalInfoDto);
});
}
apiProductPlanInfoDto.setApiProductPlanAdditionalInfoDtoList(apiProductPlanAdditionalInfoDtoList);
}
// 设置保单投保人
if (ObjectUtils.isNotEmpty(policyPolicyholder)) {
ApiPolicyholderInfoDto apiPolicyholderInfoDto = new ApiPolicyholderInfoDto();
BeanUtils.copyProperties(policyPolicyholder, apiPolicyholderInfoDto);
dto.setApiPolicyholderInfoDto(apiPolicyholderInfoDto);
}
// 设置保单受保人
if (ObjectUtils.isNotEmpty(policyInsurant)) {
ApiInsurantInfoDto apiInsurantInfoDto = new ApiInsurantInfoDto();
BeanUtils.copyProperties(policyInsurant, apiInsurantInfoDto);
dto.setApiInsurantInfoDto(apiInsurantInfoDto);
}
// 设置保单受益人
if (CollectionUtils.isNotEmpty(beneficiaryList)) {
List<ApiBeneficiaryInfoDto> apiBeneficiaryInfoDtoList = new ArrayList<>();
beneficiaryList.forEach(beneficiary -> {
ApiBeneficiaryInfoDto apiBeneficiaryInfoDto = new ApiBeneficiaryInfoDto();
BeanUtils.copyProperties(beneficiary, apiBeneficiaryInfoDto);
apiBeneficiaryInfoDtoList.add(apiBeneficiaryInfoDto);
});
dto.setApiBeneficiaryInfoDtoList(apiBeneficiaryInfoDtoList);
}
// 设置保单第二持有人
if (ObjectUtils.isNotEmpty(policySecondHolder)) {
ApiSecondHolderInfoDto apiSecondHolderInfoDto = new ApiSecondHolderInfoDto();
BeanUtils.copyProperties(policySecondHolder, apiSecondHolderInfoDto);
dto.setApiSecondHolderInfoDto(apiSecondHolderInfoDto);
}
return dto;
}
} }
\ No newline at end of file
package com.yd.csf.service.dto;
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 PolicyUpdateRequest implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 新单跟进唯一业务ID
*/
@Schema(description = "新单跟进唯一业务ID", requiredMode = Schema.RequiredMode.REQUIRED)
private String policyBizId;
/**
* 保单号
*/
@Schema(description = "保单号")
private String policyNo;
/**
* 产品业务id
*/
@Schema(description = "产品业务id")
private String planBizId;
/**
* 产品代码
*/
@Schema(description = "产品代码")
private String productCode;
/**
* 产品名称
*/
@Schema(description = "产品名称")
private String productName;
/**
* 产品险种
*/
@Schema(description = "产品险种")
private String productCate;
/**
* 保险公司
*/
@Schema(description = "保险公司")
private String insurer;
/**
* 保险公司业务id
*/
@Schema(description = "保险公司业务id")
private String insurerBizId;
/**
* 地区
*/
@Schema(description = "地区")
private String region;
/**
* 保單投保人业务id
*/
@Schema(description = "保單投保人业务id")
private String policyPolicyholderBizId;
/**
* 保單持有人名称
*/
@Schema(description = "保單持有人名称")
private String policyHolder;
/**
* 保单受保人业务id
*/
@Schema(description = "保单受保人业务id")
private String policyInsurantBizId;
/**
* 保单受保人名称
*/
@Schema(description = "保单受保人名称")
private String insured;
/**
* 供款年期(字典)
*/
@Schema(description = "供款年期(字典)")
private Integer paymentTerm;
/**
* 付款频率(字典)
*/
@Schema(description = "付款频率(字典)")
private String paymentFrequency;
/**
* 期交保费
*/
@Schema(description = "期交保费")
private BigDecimal paymentPremium;
/**
* 保单状态
*/
@Schema(description = "保单状态 字典值:csf_policy_status")
private String status;
/**
* 币种
*/
@Schema(description = "币种")
private String currency;
/**
* 首期保费(不含徽费,预缴保费)
*/
@Schema(description = "首期保费(不含徽费,预缴保费)")
private Integer initialPremium;
/**
* 签单日期
*/
@Schema(description = "签单日期 格式:yyyy-MM-dd")
private Date signDate;
/**
* 缮发日期
*/
@Schema(description = "缮发日期 格式:yyyy-MM-dd")
private Date issueDate;
/**
* 生效日期
*/
@Schema(description = "生效日期 格式:yyyy-MM-dd")
private Date effectiveDate;
/**
* 续保日期
*/
@Schema(description = "续保日期 格式:yyyy-MM-dd")
private Date renewalDate;
/**
* 是否预缴: 0-否, 1-是
*/
@Schema(description = "是否预缴: 0-否, 1-是")
private Integer isPrepaid;
/**
* 预付额
*/
@Schema(description = "预付额")
private String deductibles;
/**
* 预缴年期
*/
@Schema(description = "预缴年期")
private Integer prepaidTerm;
/**
* 首期付款方式(字典)
*/
@Schema(description = "首期付款方式(字典)")
private String initialPaymentMethod;
/**
* 续期付款方式(字典)
*/
@Schema(description = "续期付款方式(字典)")
private String renewalPaymentMethod;
/**
* 红利分配方式(字典)
*/
@Schema(description = "红利分配方式(字典)")
private String dividendDistributionMethod;
/**
* 保单日期回溯: 0-否, 1-是(字典)
*/
@Schema(description = "保单日期回溯: 0-否, 1-是(字典)")
private Integer isBacktrack;
/**
* 是否参加递增保障权益: 0-否, 1-是(字典)
*/
@Schema(description = "是否参加递增保障权益: 0-否, 1-是(字典)")
private Integer isJoin;
/**
* 对账公司
*/
@Schema(description = "对账公司")
private String reconciliationCompany;
/**
* 对账公司业务id
*/
@Schema(description = "对账公司业务id")
private String reconciliationCompanyBizId;
/**
* 备注
*/
@Schema(description = "备注")
private String remark;
}
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_additional
*/
@TableName(value ="policy_additional")
@Data
public class PolicyAdditional implements Serializable {
/**
*
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 保单附加险信息表唯一业务ID
*/
private String policyAdditionalBizId;
/**
* 新单跟进业务ID
*/
private String policyBizId;
/**
* 保单号
*/
private String policyNo;
/**
* 产品计划信息表唯一业务ID
*/
private String planBizId;
/**
* 保险附加产品唯一业务ID(中台保险附加产品业务id,冗余)
*/
private String additionalProductBizId;
/**
* 保险附加产品名称(中台保险附加产品名称,冗余)
*/
private String addProductName;
/**
* 货币(字典)
*/
private String currency;
/**
* 保费
*/
private BigDecimal premium;
/**
* 保额
*/
private BigDecimal sumInsured;
/**
* 保障地区(字典)
*/
private String guaranteeRegion;
/**
* 等级(字典)
*/
private String level;
/**
* 自付额(字典)
*/
private String deductibles;
/**
* 附加保障(json串)
*/
private String additionalSafeguards;
/**
* 通用备注
*/
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
...@@ -193,11 +193,16 @@ public class PolicyFollow implements Serializable { ...@@ -193,11 +193,16 @@ public class PolicyFollow implements Serializable {
private Object initialPremium; private Object initialPremium;
/** /**
* 寄送方式 * 寄送方式 1-自提, 2-快递
*/ */
private String mailingMethod; private String mailingMethod;
/** /**
* 快递单号
*/
private String deliveryNo;
/**
* 经纪公司签收日期 * 经纪公司签收日期
*/ */
private String brokerSignDate; private String brokerSignDate;
......
package com.yd.csf.service.service;
import com.yd.csf.service.model.PolicyAdditional;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @author Zhang Jianan
* @description 针对表【policy_additional(保单附加险信息表)】的数据库操作Service
* @createDate 2025-11-03 11:05:09
*/
public interface PolicyAdditionalService extends IService<PolicyAdditional> {
}
...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper; ...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
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.yd.csf.service.dto.PolicyQueryRequest; import com.yd.csf.service.dto.PolicyQueryRequest;
import com.yd.csf.service.dto.PolicyUpdateRequest;
import com.yd.csf.service.model.Policy; import com.yd.csf.service.model.Policy;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.yd.csf.service.vo.PolicyVO; import com.yd.csf.service.vo.PolicyVO;
...@@ -18,4 +19,6 @@ public interface PolicyService extends IService<Policy> { ...@@ -18,4 +19,6 @@ public interface PolicyService extends IService<Policy> {
QueryWrapper<Policy> getQueryWrapper(PolicyQueryRequest policyQueryRequest); QueryWrapper<Policy> getQueryWrapper(PolicyQueryRequest policyQueryRequest);
Page<PolicyVO> getPolicyVOPage(Page<Policy> policyPage); Page<PolicyVO> getPolicyVOPage(Page<Policy> policyPage);
Boolean updatePolicy(PolicyUpdateRequest policyUpdateRequest);
} }
package com.yd.csf.service.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yd.csf.service.model.PolicyAdditional;
import com.yd.csf.service.service.PolicyAdditionalService;
import com.yd.csf.service.dao.PolicyAdditionalMapper;
import org.springframework.stereotype.Service;
/**
* @author Zhang Jianan
* @description 针对表【policy_additional(保单附加险信息表)】的数据库操作Service实现
* @createDate 2025-11-03 11:05:09
*/
@Service
public class PolicyAdditionalServiceImpl extends ServiceImpl<PolicyAdditionalMapper, PolicyAdditional>
implements PolicyAdditionalService{
}
...@@ -10,6 +10,9 @@ import com.yd.common.enums.CommonEnum; ...@@ -10,6 +10,9 @@ 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.utils.RandomStringGenerator; import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.feign.dto.appointment.ApiProductPlanAdditionalInfoDto;
import com.yd.csf.feign.dto.appointment.ApiProductPlanInfoDto;
import com.yd.csf.feign.dto.appointment.ApiProductPlanMainInfoDto;
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.enums.PolicyFollowStatusEnum;
...@@ -19,6 +22,7 @@ import com.yd.csf.service.dao.PolicyFollowMapper; ...@@ -19,6 +22,7 @@ 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.vo.PolicyFollowVO; import com.yd.csf.service.vo.PolicyFollowVO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
...@@ -61,6 +65,8 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol ...@@ -61,6 +65,8 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
private PolicyBeneficiaryService policyBeneficiaryService; private PolicyBeneficiaryService policyBeneficiaryService;
@Resource @Resource
private PolicySecondHolderService policySecondHolderService; private PolicySecondHolderService policySecondHolderService;
@Resource
private PolicyAdditionalService policyAdditionalService;
@Override @Override
...@@ -360,27 +366,33 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol ...@@ -360,27 +366,33 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
"查询保单信息" "查询保单信息"
); );
// 2. 异步查询保单投保人 // 1.1 异步查询附加险列表
CompletableFuture<List<PolicyPolicyholder>> policyholderListFuture = asyncQueryUtil.asyncQuery( 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<PolicyPolicyholder> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("policy_biz_id", policyBizId); queryWrapper.eq("policy_biz_id", policyBizId);
return policyPolicyholderService.list(queryWrapper); return policyPolicyholderService.getOne(queryWrapper);
}, },
"查询保单投保人" "查询保单投保人"
); );
// 3. 异步查询保单受保人 // 1.3 异步查询保单受保人
CompletableFuture<List<PolicyInsurant>> insurantListFuture = asyncQueryUtil.asyncQuery( CompletableFuture<PolicyInsurant> insurantListFuture = asyncQueryUtil.asyncQuery(
() -> { () -> {
QueryWrapper<PolicyInsurant> queryWrapper = new QueryWrapper<>(); QueryWrapper<PolicyInsurant> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("policy_biz_id", policyBizId); queryWrapper.eq("policy_biz_id", policyBizId);
return policyInsurantService.list(queryWrapper); return policyInsurantService.getOne(queryWrapper);
}, },
"查询保单受保人" "查询保单受保人"
); );
// 4. 异步查询保单受益人 // 1.4 异步查询保单受益人
CompletableFuture<List<PolicyBeneficiary>> beneficiaryListFuture = asyncQueryUtil.asyncQuery( CompletableFuture<List<PolicyBeneficiary>> beneficiaryListFuture = asyncQueryUtil.asyncQuery(
() -> { () -> {
QueryWrapper<PolicyBeneficiary> queryWrapper = new QueryWrapper<>(); QueryWrapper<PolicyBeneficiary> queryWrapper = new QueryWrapper<>();
...@@ -390,27 +402,41 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol ...@@ -390,27 +402,41 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
"查询保单受益人" "查询保单受益人"
); );
// 5. 异步查询保单第二持有人 // 1.5 异步查询保单第二持有人
CompletableFuture<List<PolicySecondHolder>> secondPolicyholderListFuture = asyncQueryUtil.asyncQuery( CompletableFuture<PolicySecondHolder> policySecondHolderFuture = asyncQueryUtil.asyncQuery(
() -> { () -> {
QueryWrapper<PolicySecondHolder> queryWrapper = new QueryWrapper<>(); QueryWrapper<PolicySecondHolder> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("policy_biz_id", policyBizId); queryWrapper.eq("policy_biz_id", policyBizId);
return policySecondHolderService.list(queryWrapper); 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"
);
// 5. 等待所有异步任务完成(设置超时时间) // 2. 等待所有异步任务完成(设置超时时间)
CompletableFuture.allOf(policyFuture, policyholderListFuture, insurantListFuture, beneficiaryListFuture, secondPolicyholderListFuture) CompletableFuture.allOf(policyFuture, additionalListFuture, policyholderFuture, insurantListFuture, beneficiaryListFuture, policySecondHolderFuture)
.get(5, TimeUnit.SECONDS); // 5秒超时 .get(5, TimeUnit.SECONDS); // 5秒超时
// 6. 构建聚合结果 // 3. 构建聚合结果
PolicyFollowAggregateDto aggregateDto = new PolicyFollowAggregateDto(); PolicyFollowAggregateDto aggregateDto = PolicyFollowAggregateDto.convertToDto(
aggregateDto.setPolicy(policyFuture.get()); policyFuture.get(),
aggregateDto.setPolicyPolicyholderList(policyholderListFuture.get()); additionalListFuture.get(),
aggregateDto.setPolicyInsurantList(insurantListFuture.get()); policyholderFuture.get(),
aggregateDto.setPolicyBeneficiaryList(beneficiaryListFuture.get()); insurantListFuture.get(),
aggregateDto.setPolicySecondHolderList(secondPolicyholderListFuture.get()); beneficiaryListFuture.get(),
policySecondHolderFuture.get()
);
aggregateDto.setPolicyBizId(policyBizId);
aggregateDto.setCustomerBizId(customerBizIdFuture.get());
long costTime = System.currentTimeMillis() - startTime; long costTime = System.currentTimeMillis() - startTime;
log.info("新单跟进聚合查询完成, policyBizId: {}, 总耗时: {}ms", policyBizId, costTime); log.info("新单跟进聚合查询完成, policyBizId: {}, 总耗时: {}ms", policyBizId, costTime);
......
...@@ -4,12 +4,16 @@ import cn.hutool.core.collection.CollUtil; ...@@ -4,12 +4,16 @@ import cn.hutool.core.collection.CollUtil;
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.common.enums.ResultCode;
import com.yd.common.exception.BusinessException;
import com.yd.csf.service.dto.PolicyQueryRequest; import com.yd.csf.service.dto.PolicyQueryRequest;
import com.yd.csf.service.dto.PolicyUpdateRequest;
import com.yd.csf.service.model.Policy; import com.yd.csf.service.model.Policy;
import com.yd.csf.service.service.PolicyService; import com.yd.csf.service.service.PolicyService;
import com.yd.csf.service.dao.PolicyMapper; import com.yd.csf.service.dao.PolicyMapper;
import com.yd.csf.service.vo.PolicyVO; import com.yd.csf.service.vo.PolicyVO;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.HashMap; import java.util.HashMap;
...@@ -73,6 +77,20 @@ public class PolicyServiceImpl extends ServiceImpl<PolicyMapper, Policy> ...@@ -73,6 +77,20 @@ public class PolicyServiceImpl extends ServiceImpl<PolicyMapper, Policy>
policyVOPage.setRecords(policyVOList); policyVOPage.setRecords(policyVOList);
return policyVOPage; return policyVOPage;
} }
@Override
public Boolean updatePolicy(PolicyUpdateRequest policyUpdateRequest) {
String policyBizId = policyUpdateRequest.getPolicyBizId();
if (StringUtils.isBlank(policyBizId)) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "policyBizId不能为空");
}
Policy policy = this.getOne(new QueryWrapper<Policy>().eq("policy_biz_id", policyBizId));
if (policy == null) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "保单不存在");
}
BeanUtils.copyProperties(policyUpdateRequest, policy, "policyBizId", "id");
return this.updateById(policy);
}
} }
......
<?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.PolicyAdditionalMapper">
<resultMap id="BaseResultMap" type="com.yd.csf.service.model.PolicyAdditional">
<id property="id" column="id" />
<result property="policyAdditionalBizId" column="policy_additional_biz_id" />
<result property="policyBizId" column="policy_biz_id" />
<result property="policyNo" column="policy_no" />
<result property="planBizId" column="plan_biz_id" />
<result property="additionalProductBizId" column="additional_product_biz_id" />
<result property="addProductName" column="add_product_name" />
<result property="currency" column="currency" />
<result property="premium" column="premium" />
<result property="sumInsured" column="sum_insured" />
<result property="guaranteeRegion" column="guarantee_region" />
<result property="level" column="level" />
<result property="deductibles" column="deductibles" />
<result property="additionalSafeguards" column="additional_safeguards" />
<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_additional_biz_id,policy_biz_id,policy_no,plan_biz_id,additional_product_biz_id,
add_product_name,currency,premium,sum_insured,guarantee_region,
level,deductibles,additional_safeguards,remark,is_deleted,
creator_id,updater_id,create_time,update_time
</sql>
</mapper>
...@@ -8,17 +8,26 @@ ...@@ -8,17 +8,26 @@
<id property="id" column="id" /> <id property="id" column="id" />
<result property="policyBizId" column="policy_biz_id" /> <result property="policyBizId" column="policy_biz_id" />
<result property="policyNo" column="policy_no" /> <result property="policyNo" column="policy_no" />
<result property="appointmentBizId" column="appointment_biz_id" />
<result property="appointmentNo" column="appointment_no" />
<result property="userBizId" column="user_biz_id" /> <result property="userBizId" column="user_biz_id" />
<result property="customerBizId" column="customer_biz_id" /> <result property="customerBizId" column="customer_biz_id" />
<result property="submitDate" column="submit_date" />
<result property="customerName" column="customer_name" /> <result property="customerName" column="customer_name" />
<result property="signDate" column="sign_date" /> <result property="signDate" column="sign_date" />
<result property="signer" column="signer" /> <result property="signer" column="signer" />
<result property="issueDate" column="issue_date" />
<result property="effectiveDate" column="effective_date" /> <result property="effectiveDate" column="effective_date" />
<result property="renewalDate" column="renewal_date" /> <result property="renewalDate" column="renewal_date" />
<result property="paymentTerm" column="payment_term" /> <result property="paymentTerm" column="payment_term" />
<result property="paymentPremium" column="payment_premium" /> <result property="paymentPremium" column="payment_premium" />
<result property="isPrepaid" column="is_prepaid" /> <result property="isPrepaid" column="is_prepaid" />
<result property="prepaidTerm" column="prepaid_term" /> <result property="prepaidTerm" column="prepaid_term" />
<result property="prepaidAmount" column="prepaid_amount" />
<result property="prepaidAmountAfterDiscount" column="prepaid_amount_after_discount" />
<result property="policyExpirationDate" column="policy_expiration_date" />
<result property="paymentNumber" column="payment_number" />
<result property="productBizId" column="product_biz_id" />
<result property="productName" column="product_name" /> <result property="productName" column="product_name" />
<result property="productCate" column="product_cate" /> <result property="productCate" column="product_cate" />
<result property="insurer" column="insurer" /> <result property="insurer" column="insurer" />
...@@ -26,10 +35,17 @@ ...@@ -26,10 +35,17 @@
<result property="reconciliationCompany" column="reconciliation_company" /> <result property="reconciliationCompany" column="reconciliation_company" />
<result property="reconciliationCompanyBizId" column="reconciliation_company_biz_id" /> <result property="reconciliationCompanyBizId" column="reconciliation_company_biz_id" />
<result property="status" column="status" /> <result property="status" column="status" />
<result property="nextStatusList" column="next_status_list" />
<result property="policyHolder" column="policy_holder" /> <result property="policyHolder" column="policy_holder" />
<result property="insured" column="insured" /> <result property="insured" column="insured" />
<result property="currency" column="currency" /> <result property="currency" column="currency" />
<result property="initialPremium" column="initial_premium" /> <result property="initialPremium" column="initial_premium" />
<result property="mailingMethod" column="mailing_method" />
<result property="deliveryNo" column="delivery_no" />
<result property="brokerSignDate" column="broker_sign_date" />
<result property="insurerMailingDate" column="insurer_mailing_date" />
<result property="customerSignDate" column="customer_sign_date" />
<result property="attachments" column="attachments" />
<result property="remark" column="remark" /> <result property="remark" column="remark" />
<result property="isDeleted" column="is_deleted" /> <result property="isDeleted" column="is_deleted" />
<result property="creatorId" column="creator_id" /> <result property="creatorId" column="creator_id" />
...@@ -39,10 +55,15 @@ ...@@ -39,10 +55,15 @@
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id,policy_biz_id,policy_no,user_biz_id,customer_biz_id,customer_name,sign_date,signer, id,policy_biz_id,policy_no,appointment_biz_id,appointment_no,user_biz_id,
effective_date,renewal_date,payment_term,payment_premium,is_prepaid,prepaid_term,product_name,product_cate, customer_biz_id,submit_date,customer_name,sign_date,signer,
insurer,insurer_biz_id,reconciliation_company,reconciliation_company_biz_id,status, issue_date,effective_date,renewal_date,payment_term,payment_premium,
policy_holder,insured,currency,initial_premium,remark, is_prepaid,prepaid_term,prepaid_amount,prepaid_amount_after_discount,policy_expiration_date,
is_deleted,creator_id,updater_id,create_time,update_time payment_number,product_biz_id,product_name,product_cate,insurer,
insurer_biz_id,reconciliation_company,reconciliation_company_biz_id,status,next_status_list,
policy_holder,insured,currency,initial_premium,mailing_method,
delivery_no,broker_sign_date,insurer_mailing_date,customer_sign_date,attachments,
remark,is_deleted,creator_id,updater_id,create_time,
update_time
</sql> </sql>
</mapper> </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