Commit 8c7d5131 by jianan

新单跟进v2

parent 232b09ed
...@@ -35,9 +35,11 @@ import com.yd.csf.service.vo.PolicyFollowVO; ...@@ -35,9 +35,11 @@ import com.yd.csf.service.vo.PolicyFollowVO;
import com.yd.feign.config.FeignTokenInterceptor; import com.yd.feign.config.FeignTokenInterceptor;
import com.yd.insurance.base.feign.client.insurancereconciliationcompany.ApiInsuranceReconciliationCompanyFeignClient; import com.yd.insurance.base.feign.client.insurancereconciliationcompany.ApiInsuranceReconciliationCompanyFeignClient;
import com.yd.insurance.base.feign.request.insurancereconciliationcompany.ApiInsuranceReconciliationCompanyPageRequest; import com.yd.insurance.base.feign.request.insurancereconciliationcompany.ApiInsuranceReconciliationCompanyPageRequest;
import com.yd.product.feign.response.expectedspecies.ApiExpectedSpeciesListResponse;
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.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -87,6 +89,8 @@ public class ApiPolicyFollowController { ...@@ -87,6 +89,8 @@ public class ApiPolicyFollowController {
private ApiInsuranceReconciliationCompanyFeignClient apiInsuranceReconciliationCompanyFeignClient; private ApiInsuranceReconciliationCompanyFeignClient apiInsuranceReconciliationCompanyFeignClient;
@Resource @Resource
private ApiExpectedFortuneService apiExpectedFortuneService; private ApiExpectedFortuneService apiExpectedFortuneService;
@Resource
private CommissionExpectedService commissionExpectedService;
@PostMapping("/upload/excel") @PostMapping("/upload/excel")
...@@ -535,31 +539,54 @@ public class ApiPolicyFollowController { ...@@ -535,31 +539,54 @@ public class ApiPolicyFollowController {
return Result.fail(ResultCode.NULL_ERROR.getCode(), ResultCode.NULL_ERROR.getMessage()); return Result.fail(ResultCode.NULL_ERROR.getCode(), ResultCode.NULL_ERROR.getMessage());
} }
PolicyFollowStatusEnum currentStatusEnum = PolicyFollowStatusEnum.getEnumByValue(changePolicyFollowStatusRequest.getStatus());
// 修改为生效时需要校验、同步预计发佣
if (PolicyFollowStatusEnum.EFFECTIVE.equals(currentStatusEnum)) {
String productLaunchBizId = policyFollow.getProductLaunchBizId();
// 校验产品是否维护预计来佣数据
if (ObjectUtils.isEmpty(productLaunchBizId)) {
return Result.fail(ResultCode.NULL_ERROR.getCode(), "新单跟进记录中,productLaunchBizId不能为空");
}
List<ApiExpectedSpeciesListResponse> expectedSpeciesList = commissionExpectedService.queryExpectedSpeciesByFeign(productLaunchBizId);
if (ObjectUtils.isEmpty(expectedSpeciesList)) {
return Result.fail(ResultCode.NULL_ERROR.getCode(), "产品未维护预计来佣数据");
}
// 校验产品是否维护发佣信息
Boolean hasCommissionInfo = commissionExpectedService.checkProductExpectedFortune(productLaunchBizId);
if (!hasCommissionInfo) {
return Result.fail(ResultCode.NULL_ERROR.getCode(), "产品未维护发佣信息");
}
}
// 修改逻辑
policyFollowService.changePolicyFollowStatus(changePolicyFollowStatusRequest, policyFollow); policyFollowService.changePolicyFollowStatus(changePolicyFollowStatusRequest, policyFollow);
// 获取Token // 修改为生效时需要同步预计发佣
String token = request.getHeader("Authorization"); if (PolicyFollowStatusEnum.EFFECTIVE.equals(currentStatusEnum)) {
// 异步:根据保单生成预计出账记录 // 获取Token
CompletableFuture.runAsync(() -> { String token = request.getHeader("Authorization");
try { // 异步:根据保单生成预计出账记录
// 设置ThreadLocal Token CompletableFuture.runAsync(() -> {
FeignTokenInterceptor.setThreadLocalToken(token); try {
// 设置ThreadLocal Token
// 调用 ApiExpectedFortuneService 的 generateWithLogAndRedis(包含日志和Redis处理) FeignTokenInterceptor.setThreadLocalToken(token);
ApiGenerateExpectedFortuneRequest generateExpectedFortuneRequest = new ApiGenerateExpectedFortuneRequest();
generateExpectedFortuneRequest.setPolicyNo(policyFollow.getPolicyNo()); // 调用 ApiExpectedFortuneService 的 generateWithLogAndRedis(包含日志和Redis处理)
Result<ApiGenerateExpectedFortuneResponse> result = apiExpectedFortuneService.generateWithLogAndRedis(generateExpectedFortuneRequest); ApiGenerateExpectedFortuneRequest generateExpectedFortuneRequest = new ApiGenerateExpectedFortuneRequest();
if (result == null || result.getCode() != 200) { generateExpectedFortuneRequest.setPolicyNo(policyFollow.getPolicyNo());
log.error("新单跟进-异步生成预计出账记录失败:保单号={}, 响应结果={}", Result<ApiGenerateExpectedFortuneResponse> result = apiExpectedFortuneService.generateWithLogAndRedis(generateExpectedFortuneRequest);
policyFollow.getPolicyNo(), result); if (result == null || result.getCode() != 200) {
} else { log.error("新单跟进-异步生成预计出账记录失败:保单号={}, 响应结果={}",
log.info("新单跟进-异步生成预计出账记录成功:保单号={}", policyFollow.getPolicyNo()); policyFollow.getPolicyNo(), result);
} else {
log.info("新单跟进-异步生成预计出账记录成功:保单号={}", policyFollow.getPolicyNo());
}
} catch (Exception e) {
log.error("新单跟进-异步生成预计出账记录失败:保单号={}, 错误信息={}",
policyFollow.getPolicyNo(), e.getMessage(), e);
} }
} catch (Exception e) { });
log.error("新单跟进-异步生成预计出账记录失败:保单号={}, 错误信息={}", }
policyFollow.getPolicyNo(), e.getMessage(), e);
}
});
return Result.success(true); return Result.success(true);
} }
......
...@@ -12,10 +12,9 @@ import com.yd.csf.service.model.Policy; ...@@ -12,10 +12,9 @@ import com.yd.csf.service.model.Policy;
import com.yd.csf.service.vo.CommissionExpectedStatisticsVO; import com.yd.csf.service.vo.CommissionExpectedStatisticsVO;
import com.yd.csf.service.vo.CommissionExpectedVO; import com.yd.csf.service.vo.CommissionExpectedVO;
import com.yd.csf.service.vo.ReceivableReportVO; import com.yd.csf.service.vo.ReceivableReportVO;
import com.yd.product.feign.response.expectedspecies.ApiExpectedSpeciesListResponse;
import javax.servlet.http.HttpServletRequest;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @author Zhang Jianan * @author Zhang Jianan
...@@ -62,6 +61,16 @@ public interface CommissionExpectedService extends IService<CommissionExpected> ...@@ -62,6 +61,16 @@ public interface CommissionExpectedService extends IService<CommissionExpected>
void getExpectedCommissionByProductlaunchId(Policy policy, String productLaunchBizId, String insuranceCompanyBizId, String reconciliationCompany, String reconciliationCompanyCode, String reconciliationCompanyBizId); void getExpectedCommissionByProductlaunchId(Policy policy, String productLaunchBizId, String insuranceCompanyBizId, String reconciliationCompany, String reconciliationCompanyCode, String reconciliationCompanyBizId);
List<ApiExpectedSpeciesListResponse> queryExpectedSpeciesByFeign(String productLaunchBizId);
/**
* 检查产品是否维护发佣信息
*
* @param productLaunchBizId 产品计划业务ID
* @return true-已维护发佣信息,false-未维护发佣信息
*/
Boolean checkProductExpectedFortune(String productLaunchBizId);
/** /**
* 应收款报表 - 按保单号和期数维度统计(分页) * 应收款报表 - 按保单号和期数维度统计(分页)
* @param page 分页参数 * @param page 分页参数
......
...@@ -22,6 +22,7 @@ import com.yd.csf.service.enums.FnaStatusEnum; ...@@ -22,6 +22,7 @@ import com.yd.csf.service.enums.FnaStatusEnum;
import com.yd.csf.service.model.Customer; import com.yd.csf.service.model.Customer;
import com.yd.csf.service.model.Fna; import com.yd.csf.service.model.Fna;
import com.yd.csf.service.model.FnaForm; import com.yd.csf.service.model.FnaForm;
import com.yd.csf.service.model.Fortune;
import com.yd.csf.service.service.CustomerService; import com.yd.csf.service.service.CustomerService;
import com.yd.csf.service.service.FnaFormService; import com.yd.csf.service.service.FnaFormService;
import com.yd.csf.service.service.FnaService; import com.yd.csf.service.service.FnaService;
...@@ -50,7 +51,6 @@ public class FnaServiceImpl extends ServiceImpl<FnaMapper, Fna> implements FnaSe ...@@ -50,7 +51,6 @@ public class FnaServiceImpl extends ServiceImpl<FnaMapper, Fna> implements FnaSe
@Autowired @Autowired
private FnaFormService fnaFormService; private FnaFormService fnaFormService;
@Resource @Resource
private CustomerService customerService; private CustomerService customerService;
...@@ -207,10 +207,15 @@ public class FnaServiceImpl extends ServiceImpl<FnaMapper, Fna> implements FnaSe ...@@ -207,10 +207,15 @@ public class FnaServiceImpl extends ServiceImpl<FnaMapper, Fna> implements FnaSe
List<FnaVO> fnaVOList = fnaList.stream().map(FnaVO::objToVo).collect(Collectors.toList()); List<FnaVO> fnaVOList = fnaList.stream().map(FnaVO::objToVo).collect(Collectors.toList());
// region 可选 // region 可选
// 1. 关联查询用户信息 // 1. 关联查询客户信息
// Set<Long> userIdSet = fnaList.stream().map(Fna::getUserId).collect(Collectors.toSet()); Set<String> userIdSet = fnaList.stream().map(Fna::getCustomerBizId).collect(Collectors.toSet());
// Map<Long, List<User>> userIdUserListMap = userService.listByIds(userIdSet).stream() List<Customer> customerList = customerService.lambdaQuery()
// .collect(Collectors.groupingBy(User::getId)); .in(Customer::getCustomerBizId)
.select(Customer::getCustomerBizId, Customer::getNameCn)
.list();
// 客户映射
Map<String, Customer> customerMap = customerList.stream().collect(Collectors.toMap(Customer::getCustomerBizId, f -> f));
// 2. 已登录,获取用户点赞、收藏状态 // 2. 已登录,获取用户点赞、收藏状态
Map<Long, Boolean> fnaIdHasThumbMap = new HashMap<>(); Map<Long, Boolean> fnaIdHasThumbMap = new HashMap<>();
...@@ -219,16 +224,14 @@ public class FnaServiceImpl extends ServiceImpl<FnaMapper, Fna> implements FnaSe ...@@ -219,16 +224,14 @@ public class FnaServiceImpl extends ServiceImpl<FnaMapper, Fna> implements FnaSe
// 填充信息 // 填充信息
// fnaVOList.forEach(fnaVO -> { fnaVOList.forEach(fnaVO -> {
// Long userId = fnaVO.getUserId(); String customerBizId = fnaVO.getCustomerBizId();
// User user = null; Customer customer = customerMap.get(customerBizId);
// if (userIdUserListMap.containsKey(userId)) {
// user = userIdUserListMap.get(userId).get(0); if (customer != null) {
// } fnaVO.setCustomerNameCn(customer.getNameCn());
// fnaVO.setUser(userService.getUserVO(user)); }
// fnaVO.setHasThumb(fnaIdHasThumbMap.getOrDefault(fnaVO.getId(), false)); });
// fnaVO.setHasFavour(fnaIdHasFavourMap.getOrDefault(fnaVO.getId(), false));
// });
// endregion // endregion
fnaVOPage.setRecords(fnaVOList); fnaVOPage.setRecords(fnaVOList);
......
...@@ -11,7 +11,6 @@ import java.util.List; ...@@ -11,7 +11,6 @@ import java.util.List;
/** /**
* fna视图 * fna视图
*
*/ */
@Data @Data
public class FnaVO implements Serializable { public class FnaVO implements Serializable {
...@@ -47,6 +46,12 @@ public class FnaVO implements Serializable { ...@@ -47,6 +46,12 @@ public class FnaVO implements Serializable {
private String customerName; private String customerName;
/** /**
* 客户姓名中文
*/
@Schema(description = "客户姓名中文")
private String customerNameCn;
/**
* 客户唯一业务ID * 客户唯一业务ID
*/ */
@Schema(description = "客户唯一业务ID") @Schema(description = "客户唯一业务ID")
......
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