Commit 640359f7 by jianan

新单跟进62

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