Commit 8c7d5131 by jianan

新单跟进v2

parent 232b09ed
......@@ -35,9 +35,11 @@ import com.yd.csf.service.vo.PolicyFollowVO;
import com.yd.feign.config.FeignTokenInterceptor;
import com.yd.insurance.base.feign.client.insurancereconciliationcompany.ApiInsuranceReconciliationCompanyFeignClient;
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.tags.Tag;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -87,6 +89,8 @@ public class ApiPolicyFollowController {
private ApiInsuranceReconciliationCompanyFeignClient apiInsuranceReconciliationCompanyFeignClient;
@Resource
private ApiExpectedFortuneService apiExpectedFortuneService;
@Resource
private CommissionExpectedService commissionExpectedService;
@PostMapping("/upload/excel")
......@@ -535,8 +539,30 @@ public class ApiPolicyFollowController {
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);
// 修改为生效时需要同步预计发佣
if (PolicyFollowStatusEnum.EFFECTIVE.equals(currentStatusEnum)) {
// 获取Token
String token = request.getHeader("Authorization");
// 异步:根据保单生成预计出账记录
......@@ -560,6 +586,7 @@ public class ApiPolicyFollowController {
policyFollow.getPolicyNo(), e.getMessage(), e);
}
});
}
return Result.success(true);
}
......
......@@ -12,10 +12,9 @@ import com.yd.csf.service.model.Policy;
import com.yd.csf.service.vo.CommissionExpectedStatisticsVO;
import com.yd.csf.service.vo.CommissionExpectedVO;
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.Map;
/**
* @author Zhang Jianan
......@@ -62,6 +61,16 @@ public interface CommissionExpectedService extends IService<CommissionExpected>
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 分页参数
......
......@@ -8,7 +8,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yd.common.constant.CommonConstant;
import com.yd.common.constant.RedisConstants;
import com.yd.common.enums.DictTypeEnum;
import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
......@@ -25,6 +24,7 @@ import com.yd.csf.service.dao.CommissionExpectedMapper;
import com.yd.csf.service.vo.CommissionExpectedStatisticsVO;
import com.yd.csf.service.vo.CommissionExpectedVO;
import com.yd.csf.service.vo.ReceivableReportVO;
import com.yd.product.feign.client.announcementcommissionratio.ApiAnnouncementCommissionRatioFeignClient;
import com.yd.product.feign.client.expectedspecies.ApiExpectedSpeciesFeignClient;
import com.yd.product.feign.request.expectedspecies.ApiExpectedSpeciesListRequest;
import com.yd.product.feign.response.expectedspecies.ApiExpectedSpeciesListResponse;
......@@ -67,6 +67,8 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
@Resource
private ApiExpectedSpeciesFeignClient apiExpectedSpeciesFeignClient;
@Resource
private ApiAnnouncementCommissionRatioFeignClient apiAnnouncementCommissionRatioFeignClient;
@Resource
private RedisUtil redisUtil;
......@@ -486,11 +488,7 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
List<GetDictItemListByDictTypeResponse> dictTypeResponses = redisUtil.getCacheObject(RedisConstants.DICT_LIST);
if (StringUtils.isNotBlank(productLaunchBizId)) {
ApiExpectedSpeciesListRequest apiExpectedSpeciesListRequest = new ApiExpectedSpeciesListRequest();
apiExpectedSpeciesListRequest.setProductLaunchBizId(productLaunchBizId);
Result<List<ApiExpectedSpeciesListResponse>> result = apiExpectedSpeciesFeignClient.list(apiExpectedSpeciesListRequest);
if (result.getData() != null) {
List<ApiExpectedSpeciesListResponse> expectedSpeciesList = result.getData();
List<ApiExpectedSpeciesListResponse> expectedSpeciesList = queryExpectedSpeciesByFeign(productLaunchBizId);
List<CommissionExpected> commissionExpectedList = new ArrayList<>();
if (CollUtil.isNotEmpty(expectedSpeciesList)) {
// 计算佣金总期数 list 中 endPeriod最大值
......@@ -546,6 +544,25 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
}
}
}
@Override
public List<ApiExpectedSpeciesListResponse> queryExpectedSpeciesByFeign(String productLaunchBizId) {
ApiExpectedSpeciesListRequest apiExpectedSpeciesListRequest = new ApiExpectedSpeciesListRequest();
apiExpectedSpeciesListRequest.setProductLaunchBizId(productLaunchBizId);
Result<List<ApiExpectedSpeciesListResponse>> result = apiExpectedSpeciesFeignClient.list(apiExpectedSpeciesListRequest);
if (ObjectUtils.isEmpty(result.getData())) {
return result.getData();
}
return Collections.emptyList();
}
@Override
public Boolean checkProductExpectedFortune(String productLaunchBizId) {
Result<Boolean> result = apiAnnouncementCommissionRatioFeignClient.isData(productLaunchBizId);
if (result != null && result.getData() != null) {
return result.getData();
}
return false;
}
private BigDecimal calculateExpectedAmount(BigDecimal premium, BigDecimal commissionRatio, String commissionBizType,
......
......@@ -22,6 +22,7 @@ import com.yd.csf.service.enums.FnaStatusEnum;
import com.yd.csf.service.model.Customer;
import com.yd.csf.service.model.Fna;
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.FnaFormService;
import com.yd.csf.service.service.FnaService;
......@@ -50,7 +51,6 @@ public class FnaServiceImpl extends ServiceImpl<FnaMapper, Fna> implements FnaSe
@Autowired
private FnaFormService fnaFormService;
@Resource
private CustomerService customerService;
......@@ -207,10 +207,15 @@ public class FnaServiceImpl extends ServiceImpl<FnaMapper, Fna> implements FnaSe
List<FnaVO> fnaVOList = fnaList.stream().map(FnaVO::objToVo).collect(Collectors.toList());
// region 可选
// 1. 关联查询用户信息
// Set<Long> userIdSet = fnaList.stream().map(Fna::getUserId).collect(Collectors.toSet());
// Map<Long, List<User>> userIdUserListMap = userService.listByIds(userIdSet).stream()
// .collect(Collectors.groupingBy(User::getId));
// 1. 关联查询客户信息
Set<String> userIdSet = fnaList.stream().map(Fna::getCustomerBizId).collect(Collectors.toSet());
List<Customer> customerList = customerService.lambdaQuery()
.in(Customer::getCustomerBizId)
.select(Customer::getCustomerBizId, Customer::getNameCn)
.list();
// 客户映射
Map<String, Customer> customerMap = customerList.stream().collect(Collectors.toMap(Customer::getCustomerBizId, f -> f));
// 2. 已登录,获取用户点赞、收藏状态
Map<Long, Boolean> fnaIdHasThumbMap = new HashMap<>();
......@@ -219,16 +224,14 @@ public class FnaServiceImpl extends ServiceImpl<FnaMapper, Fna> implements FnaSe
// 填充信息
// fnaVOList.forEach(fnaVO -> {
// Long userId = fnaVO.getUserId();
// User user = null;
// if (userIdUserListMap.containsKey(userId)) {
// user = userIdUserListMap.get(userId).get(0);
// }
// fnaVO.setUser(userService.getUserVO(user));
// fnaVO.setHasThumb(fnaIdHasThumbMap.getOrDefault(fnaVO.getId(), false));
// fnaVO.setHasFavour(fnaIdHasFavourMap.getOrDefault(fnaVO.getId(), false));
// });
fnaVOList.forEach(fnaVO -> {
String customerBizId = fnaVO.getCustomerBizId();
Customer customer = customerMap.get(customerBizId);
if (customer != null) {
fnaVO.setCustomerNameCn(customer.getNameCn());
}
});
// endregion
fnaVOPage.setRecords(fnaVOList);
......
......@@ -11,7 +11,6 @@ import java.util.List;
/**
* fna视图
*
*/
@Data
public class FnaVO implements Serializable {
......@@ -47,6 +46,12 @@ public class FnaVO implements Serializable {
private String customerName;
/**
* 客户姓名中文
*/
@Schema(description = "客户姓名中文")
private String customerNameCn;
/**
* 客户唯一业务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