Commit 640359f7 by jianan

新单跟进62

parent faeb9bdc
...@@ -10,9 +10,7 @@ import com.yd.csf.service.dto.CustomerUpdateRequest; ...@@ -10,9 +10,7 @@ import com.yd.csf.service.dto.CustomerUpdateRequest;
import com.yd.csf.service.model.Customer; import com.yd.csf.service.model.Customer;
import com.yd.csf.service.service.CustomerService; import com.yd.csf.service.service.CustomerService;
import com.yd.csf.service.vo.CustomerVO; import com.yd.csf.service.vo.CustomerVO;
import com.yd.user.feign.client.sysuser.ApiSysUserFeignClient;
import com.yd.csf.service.service.CustomerExpandService;
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;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
......
...@@ -16,6 +16,8 @@ import com.yd.csf.api.dto.CommissionExcelDTO; ...@@ -16,6 +16,8 @@ import com.yd.csf.api.dto.CommissionExcelDTO;
import com.yd.csf.api.dto.PolicyExcelDTO; import com.yd.csf.api.dto.PolicyExcelDTO;
import com.yd.csf.api.dto.PolicyFollowDTO; import com.yd.csf.api.dto.PolicyFollowDTO;
import com.yd.csf.api.listener.PolicyDataListener; import com.yd.csf.api.listener.PolicyDataListener;
import com.yd.csf.api.service.ApiExpectedFortuneService;
import com.yd.csf.feign.request.expectedfortune.ApiGenerateExpectedFortuneRequest;
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;
...@@ -31,6 +33,7 @@ import org.apache.commons.lang3.StringUtils; ...@@ -31,6 +33,7 @@ import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
...@@ -40,6 +43,7 @@ import javax.servlet.http.HttpServletRequest; ...@@ -40,6 +43,7 @@ import javax.servlet.http.HttpServletRequest;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.text.ParseException; import java.text.ParseException;
import java.util.*; import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -75,6 +79,8 @@ public class ApiPolicyFollowController { ...@@ -75,6 +79,8 @@ public class ApiPolicyFollowController {
private PolicyFollowRecordService policyFollowRecordService; private PolicyFollowRecordService policyFollowRecordService;
@Resource @Resource
private PolicyFollowFileService policyFollowFileService; private PolicyFollowFileService policyFollowFileService;
@Autowired
private ApiExpectedFortuneService apiExpectedFortuneService;
@PostMapping("/upload/excel") @PostMapping("/upload/excel")
...@@ -514,7 +520,22 @@ public class ApiPolicyFollowController { ...@@ -514,7 +520,22 @@ public class ApiPolicyFollowController {
if (changePolicyFollowStatusRequest == null || StringUtils.isBlank(changePolicyFollowStatusRequest.getPolicyBizId())) { if (changePolicyFollowStatusRequest == null || StringUtils.isBlank(changePolicyFollowStatusRequest.getPolicyBizId())) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), "policyBizId不能为空"); return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), "policyBizId不能为空");
} }
return Result.success(policyFollowService.changePolicyFollowStatus(changePolicyFollowStatusRequest)); String policyBizId = changePolicyFollowStatusRequest.getPolicyBizId();
PolicyFollow policyFollow = policyFollowService.getByPolicyBizId(policyBizId);
if (policyFollow == null) {
return Result.fail(ErrorCode.NOT_FOUND_ERROR.getCode(), ErrorCode.NOT_FOUND_ERROR.getMessage());
}
Boolean result = policyFollowService.changePolicyFollowStatus(changePolicyFollowStatusRequest, policyFollow);
// 如果是已完成状态,计算预计发佣
PolicyFollowStatusEnum policyFollowStatusEnum = PolicyFollowStatusEnum.getEnumByValue(changePolicyFollowStatusRequest.getStatus());
if (PolicyFollowStatusEnum.FINISHED.equals(policyFollowStatusEnum)) {
ApiGenerateExpectedFortuneRequest apiGenerateExpectedFortuneRequest = new ApiGenerateExpectedFortuneRequest();
apiGenerateExpectedFortuneRequest.setPolicyNo(policyFollow.getPolicyNo());
CompletableFuture.runAsync(() -> apiExpectedFortuneService.generate(apiGenerateExpectedFortuneRequest));
}
return Result.success(result);
} }
/** /**
......
...@@ -8,6 +8,8 @@ import com.yd.csf.service.model.ExpectedFortune; ...@@ -8,6 +8,8 @@ import com.yd.csf.service.model.ExpectedFortune;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* <p> * <p>
* 预计发佣表 Mapper 接口 * 预计发佣表 Mapper 接口
...@@ -20,4 +22,6 @@ public interface ExpectedFortuneMapper extends BaseMapper<ExpectedFortune> { ...@@ -20,4 +22,6 @@ public interface ExpectedFortuneMapper extends BaseMapper<ExpectedFortune> {
IPage<ApiExpectedFortunePageResponse> page(@Param("page") Page<ApiExpectedFortunePageResponse> page, IPage<ApiExpectedFortunePageResponse> page(@Param("page") Page<ApiExpectedFortunePageResponse> page,
@Param("request") ApiExpectedFortunePageRequest request); @Param("request") ApiExpectedFortunePageRequest request);
List<ExpectedFortune> listByPolicyBizId(@Param("policyBizId") String policyBizId);
} }
...@@ -35,6 +35,12 @@ public class PolicyFollowAggregateDto implements Serializable { ...@@ -35,6 +35,12 @@ public class PolicyFollowAggregateDto implements Serializable {
@Schema(description = "问卷业务ID 新单跟进问卷中,objectBizId为policyBizId") @Schema(description = "问卷业务ID 新单跟进问卷中,objectBizId为policyBizId")
private String questionnaireBizId; private String questionnaireBizId;
/**
* 预计发佣列表
*/
@Schema(description = "预计发佣列表")
private List<ExpectedFortune> expectedFortuneList;
/** /**
* 保单产品计划(保单) * 保单产品计划(保单)
*/ */
...@@ -76,11 +82,16 @@ public class PolicyFollowAggregateDto implements Serializable { ...@@ -76,11 +82,16 @@ public class PolicyFollowAggregateDto implements Serializable {
PolicyPolicyholder policyPolicyholder, PolicyPolicyholder policyPolicyholder,
PolicyInsurant policyInsurant, PolicyInsurant policyInsurant,
List<PolicyBeneficiary> beneficiaryList, List<PolicyBeneficiary> beneficiaryList,
PolicySecondHolder policySecondHolder) { PolicySecondHolder policySecondHolder,
String customerBizId,
List<ExpectedFortune> expectedFortuneList) {
PolicyFollowAggregateDto dto = new PolicyFollowAggregateDto(); PolicyFollowAggregateDto dto = new PolicyFollowAggregateDto();
if (ObjectUtils.isEmpty(policy)) { if (ObjectUtils.isEmpty(policy)) {
return dto; return dto;
} }
dto.setPolicyBizId(policy.getPolicyBizId());
dto.setCustomerBizId(customerBizId);
dto.setExpectedFortuneList(expectedFortuneList);
// 设置保单产品计划(保单) // 设置保单产品计划(保单)
if (ObjectUtils.isNotEmpty(policy)) { if (ObjectUtils.isNotEmpty(policy)) {
......
...@@ -154,6 +154,12 @@ public class PolicyFollowUpdateDto implements Serializable { ...@@ -154,6 +154,12 @@ public class PolicyFollowUpdateDto implements Serializable {
@Schema(description = "首期保费(不含徽费,预缴保费)") @Schema(description = "首期保费(不含徽费,预缴保费)")
private Object initialPremium; private Object initialPremium;
/**
* 保单征费
*/
@Schema(description = "保单征费")
private String policyLevy;
/** /**
* 备注 * 备注
*/ */
......
...@@ -192,6 +192,11 @@ public class Policy implements Serializable { ...@@ -192,6 +192,11 @@ public class Policy implements Serializable {
*/ */
private String policyTransfer; private String policyTransfer;
/**
* 保单征费
*/
private String policyLevy;
/** /**
* 通用备注 * 通用备注
*/ */
......
...@@ -192,6 +192,11 @@ public class PolicyFollow implements Serializable { ...@@ -192,6 +192,11 @@ public class PolicyFollow implements Serializable {
*/ */
private Object initialPremium; private Object initialPremium;
/**
* 保单征费
*/
private String policyLevy;
/** /**
* 寄送方式 1-自提, 2-快递 * 寄送方式 1-自提, 2-快递
*/ */
......
...@@ -7,6 +7,8 @@ import com.yd.csf.feign.response.expectedfortune.ApiExpectedFortunePageResponse; ...@@ -7,6 +7,8 @@ import com.yd.csf.feign.response.expectedfortune.ApiExpectedFortunePageResponse;
import com.yd.csf.service.model.ExpectedFortune; import com.yd.csf.service.model.ExpectedFortune;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/** /**
* <p> * <p>
* 预计发佣表 服务类 * 预计发佣表 服务类
...@@ -19,4 +21,6 @@ public interface IExpectedFortuneService extends IService<ExpectedFortune> { ...@@ -19,4 +21,6 @@ public interface IExpectedFortuneService extends IService<ExpectedFortune> {
IPage<ApiExpectedFortunePageResponse> page(Page<ApiExpectedFortunePageResponse> page, IPage<ApiExpectedFortunePageResponse> page(Page<ApiExpectedFortunePageResponse> page,
ApiExpectedFortunePageRequest request); ApiExpectedFortunePageRequest request);
List<ExpectedFortune> listByPolicyBizId(String policyBizId);
} }
...@@ -33,7 +33,7 @@ public interface PolicyFollowService extends IService<PolicyFollow> { ...@@ -33,7 +33,7 @@ public interface PolicyFollowService extends IService<PolicyFollow> {
Boolean addToPolicy(List<String> policyNoList); Boolean addToPolicy(List<String> policyNoList);
Boolean changePolicyFollowStatus(ChangePolicyFollowStatusRequest changePolicyFollowStatusRequest); Boolean changePolicyFollowStatus(ChangePolicyFollowStatusRequest changePolicyFollowStatusRequest, PolicyFollow policyFollow);
Boolean uploadAttachment(AttachmentUploadRequest attachmentUploadRequest); Boolean uploadAttachment(AttachmentUploadRequest attachmentUploadRequest);
......
...@@ -8,8 +8,12 @@ import com.yd.csf.service.model.ExpectedFortune; ...@@ -8,8 +8,12 @@ import com.yd.csf.service.model.ExpectedFortune;
import com.yd.csf.service.dao.ExpectedFortuneMapper; import com.yd.csf.service.dao.ExpectedFortuneMapper;
import com.yd.csf.service.service.IExpectedFortuneService; import com.yd.csf.service.service.IExpectedFortuneService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
/** /**
* <p> * <p>
* 预计发佣表 服务实现类 * 预计发佣表 服务实现类
...@@ -26,4 +30,9 @@ public class ExpectedFortuneServiceImpl extends ServiceImpl<ExpectedFortuneMappe ...@@ -26,4 +30,9 @@ public class ExpectedFortuneServiceImpl extends ServiceImpl<ExpectedFortuneMappe
ApiExpectedFortunePageRequest request) { ApiExpectedFortunePageRequest request) {
return baseMapper.page(page,request); return baseMapper.page(page,request);
} }
@Override
public List<ExpectedFortune> listByPolicyBizId(String policyBizId) {
return baseMapper.listByPolicyBizId(policyBizId);
}
} }
...@@ -189,12 +189,12 @@ public class FnaFormServiceImpl extends ServiceImpl<FnaFormMapper, FnaForm> impl ...@@ -189,12 +189,12 @@ public class FnaFormServiceImpl extends ServiceImpl<FnaFormMapper, FnaForm> impl
throw new BusinessException(ResultCode.PARAM_CHECK_ERROR.getCode(), "个人资料不能全不为空"); throw new BusinessException(ResultCode.PARAM_CHECK_ERROR.getCode(), "个人资料不能全不为空");
} }
if ("save".equals(saveType)) { if ("save".equals(saveType)) {
if (StringUtils.isBlank(personalData.getAccountName())) { // if (StringUtils.isBlank(personalData.getAccountName())) {
throw new BusinessException(ResultCode.PARAM_CHECK_ERROR.getCode(), "陪同顾问姓名不能为空"); // throw new BusinessException(ResultCode.PARAM_CHECK_ERROR.getCode(), "陪同顾问姓名不能为空");
} // }
if (StringUtils.isBlank(personalData.getRegistrationNumber())) { // if (StringUtils.isBlank(personalData.getRegistrationNumber())) {
throw new BusinessException(ResultCode.PARAM_CHECK_ERROR.getCode(), "理财顾问注册编号不能为空"); // throw new BusinessException(ResultCode.PARAM_CHECK_ERROR.getCode(), "理财顾问注册编号不能为空");
} // }
if (StringUtils.isBlank(personalData.getCustomerName())) { if (StringUtils.isBlank(personalData.getCustomerName())) {
throw new BusinessException(ResultCode.PARAM_CHECK_ERROR.getCode(), "客户姓名不能为空"); throw new BusinessException(ResultCode.PARAM_CHECK_ERROR.getCode(), "客户姓名不能为空");
} }
......
...@@ -66,6 +66,8 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol ...@@ -66,6 +66,8 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
private PolicySecondHolderService policySecondHolderService; private PolicySecondHolderService policySecondHolderService;
@Resource @Resource
private PolicyAdditionalService policyAdditionalService; private PolicyAdditionalService policyAdditionalService;
@Resource
private IExpectedFortuneService expectedFortuneService;
@Override @Override
...@@ -292,12 +294,10 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol ...@@ -292,12 +294,10 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Boolean changePolicyFollowStatus(ChangePolicyFollowStatusRequest changePolicyFollowStatusRequest) { public Boolean changePolicyFollowStatus(ChangePolicyFollowStatusRequest changePolicyFollowStatusRequest, PolicyFollow policyFollow) {
if (changePolicyFollowStatusRequest == null || StringUtils.isBlank(changePolicyFollowStatusRequest.getPolicyBizId())) { if (changePolicyFollowStatusRequest == null || StringUtils.isBlank(changePolicyFollowStatusRequest.getPolicyBizId())) {
throw new BusinessException(ErrorCode.PARAMS_ERROR.getCode(), "policyBizId不能为空"); throw new BusinessException(ErrorCode.PARAMS_ERROR.getCode(), "policyBizId不能为空");
} }
String policyBizId = changePolicyFollowStatusRequest.getPolicyBizId();
PolicyFollow policyFollow = getByPolicyBizId(policyBizId);
if (policyFollow == null) { if (policyFollow == null) {
throw new BusinessException(ErrorCode.NOT_FOUND_ERROR.getCode(), ErrorCode.NOT_FOUND_ERROR.getMessage()); throw new BusinessException(ErrorCode.NOT_FOUND_ERROR.getCode(), ErrorCode.NOT_FOUND_ERROR.getMessage());
} }
...@@ -318,6 +318,8 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol ...@@ -318,6 +318,8 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
// 校验状态 // 校验状态
validPolicyFollowStatus(currentStatusEnum, policyFollowStatusEnum); validPolicyFollowStatus(currentStatusEnum, policyFollowStatusEnum);
String policyBizId = changePolicyFollowStatusRequest.getPolicyBizId();
// 保单号和转接人都有的情况下,才能修改为已完成状态 // 保单号和转接人都有的情况下,才能修改为已完成状态
if (PolicyFollowStatusEnum.FINISHED.equals(policyFollowStatusEnum)) { if (PolicyFollowStatusEnum.FINISHED.equals(policyFollowStatusEnum)) {
if (StringUtils.isBlank(policyFollow.getPolicyNo())) { if (StringUtils.isBlank(policyFollow.getPolicyNo())) {
...@@ -444,9 +446,22 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol ...@@ -444,9 +446,22 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
}, },
"查询客户业务ID" "查询客户业务ID"
); );
// 1.7 异步查询预计发佣
CompletableFuture<List<ExpectedFortune>> expectedFortuneFuture = asyncQueryUtil.asyncQuery(
() -> expectedFortuneService.listByPolicyBizId(policyBizId),
"查询预计发佣"
);
// 2. 等待所有异步任务完成(设置超时时间) // 2. 等待所有异步任务完成(设置超时时间)
CompletableFuture.allOf(policyFuture, additionalListFuture, policyholderFuture, insurantListFuture, beneficiaryListFuture, policySecondHolderFuture) CompletableFuture.allOf(
policyFuture,
additionalListFuture,
policyholderFuture,
insurantListFuture,
beneficiaryListFuture,
policySecondHolderFuture,
customerBizIdFuture,
expectedFortuneFuture)
.get(5, TimeUnit.SECONDS); // 5秒超时 .get(5, TimeUnit.SECONDS); // 5秒超时
// 3. 构建聚合结果 // 3. 构建聚合结果
...@@ -456,10 +471,10 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol ...@@ -456,10 +471,10 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
policyholderFuture.get(), policyholderFuture.get(),
insurantListFuture.get(), insurantListFuture.get(),
beneficiaryListFuture.get(), beneficiaryListFuture.get(),
policySecondHolderFuture.get() policySecondHolderFuture.get(),
customerBizIdFuture.get(),
expectedFortuneFuture.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);
......
...@@ -14,4 +14,10 @@ ...@@ -14,4 +14,10 @@
</if> </if>
</where> </where>
</select> </select>
<select id="listByPolicyBizId" resultType="com.yd.csf.service.model.ExpectedFortune">
select *
from expected_fortune ef
where ef.policy_no = (select policy_no from policy where policy_biz_id = #{policyBizId})
</select>
</mapper> </mapper>
...@@ -40,6 +40,7 @@ ...@@ -40,6 +40,7 @@
<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="policyLevy" column="policy_levy" />
<result property="mailingMethod" column="mailing_method" /> <result property="mailingMethod" column="mailing_method" />
<result property="deliveryNo" column="delivery_no" /> <result property="deliveryNo" column="delivery_no" />
<result property="brokerSignDate" column="broker_sign_date" /> <result property="brokerSignDate" column="broker_sign_date" />
...@@ -61,7 +62,7 @@ ...@@ -61,7 +62,7 @@
is_prepaid,prepaid_term,prepaid_amount,prepaid_amount_after_discount,policy_expiration_date, is_prepaid,prepaid_term,prepaid_amount,prepaid_amount_after_discount,policy_expiration_date,
payment_number,product_biz_id,product_name,product_cate,insurer, payment_number,product_biz_id,product_name,product_cate,insurer,
insurer_biz_id,reconciliation_company,reconciliation_company_biz_id,status,next_status_list, insurer_biz_id,reconciliation_company,reconciliation_company_biz_id,status,next_status_list,
policy_holder,insured,currency,initial_premium,mailing_method, policy_holder,insured,currency,initial_premium,policy_levy,mailing_method,
delivery_no,broker_sign_date,insurer_mailing_date,customer_sign_date,attachments, delivery_no,broker_sign_date,insurer_mailing_date,customer_sign_date,attachments,
remark,is_deleted,creator_id,updater_id,create_time, remark,is_deleted,creator_id,updater_id,create_time,
update_time update_time
......
...@@ -40,6 +40,7 @@ ...@@ -40,6 +40,7 @@
<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="policyTransfer" column="policy_transfer" /> <result property="policyTransfer" column="policy_transfer" />
<result property="policyLevy" column="policy_levy" />
<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" />
...@@ -55,7 +56,7 @@ ...@@ -55,7 +56,7 @@
status,currency,initial_premium,sign_date,issue_date, status,currency,initial_premium,sign_date,issue_date,
effective_date,renewal_date,is_prepaid,deductibles,prepaid_term, effective_date,renewal_date,is_prepaid,deductibles,prepaid_term,
initial_payment_method,renewal_payment_method,dividend_distribution_method,is_backtrack,is_join, initial_payment_method,renewal_payment_method,dividend_distribution_method,is_backtrack,is_join,
reconciliation_company,reconciliation_company_biz_id,policy_transfer,remark,is_deleted,creator_id, reconciliation_company,reconciliation_company_biz_id,policy_transfer,policy_levy,remark,is_deleted,creator_id,
updater_id,create_time,update_time updater_id,create_time,update_time
</sql> </sql>
......
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