Commit 371ba432 by zhangxingmin

push

parent bf0bffd0
...@@ -16,12 +16,11 @@ import com.yd.csf.service.common.ErrorCode; ...@@ -16,12 +16,11 @@ import com.yd.csf.service.common.ErrorCode;
import com.yd.csf.service.dto.*; import com.yd.csf.service.dto.*;
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.model.PolicyFollow;
import com.yd.csf.service.service.CommissionExpectedService; import com.yd.csf.service.service.CommissionExpectedService;
import com.yd.csf.service.service.PolicyFollowService;
import com.yd.csf.service.service.PolicyService; import com.yd.csf.service.service.PolicyService;
import com.yd.csf.service.vo.CommissionExpectedExportDTO; import com.yd.csf.service.vo.*;
import com.yd.csf.service.vo.CommissionExpectedStatisticsVO;
import com.yd.csf.service.vo.CommissionExpectedVO;
import com.yd.csf.service.vo.ReceivableReportVO;
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.insurance.base.feign.response.insurancereconciliationcompany.ApiInsuranceReconciliationCompanyPageResponse; import com.yd.insurance.base.feign.response.insurancereconciliationcompany.ApiInsuranceReconciliationCompanyPageResponse;
...@@ -41,6 +40,7 @@ import java.util.ArrayList; ...@@ -41,6 +40,7 @@ import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -60,6 +60,8 @@ public class ApiCommissionExpectedController { ...@@ -60,6 +60,8 @@ public class ApiCommissionExpectedController {
@Resource @Resource
private PolicyService policyService; private PolicyService policyService;
@Resource @Resource
private PolicyFollowService policyFollowService;
@Resource
private ApiInsuranceReconciliationCompanyFeignClient companyFeignClient; private ApiInsuranceReconciliationCompanyFeignClient companyFeignClient;
/** /**
...@@ -281,9 +283,8 @@ public class ApiCommissionExpectedController { ...@@ -281,9 +283,8 @@ public class ApiCommissionExpectedController {
if (!CollectionUtils.isEmpty(allExpectedIdList)) { if (!CollectionUtils.isEmpty(allExpectedIdList)) {
receivableReportPage = commissionExpectedService.receivableReportPage(reportPage, allExpectedIdList); receivableReportPage = commissionExpectedService.receivableReportPage(reportPage, allExpectedIdList);
} }
log.info("receivableReportPage>>>>前{}", JSON.toJSONString(receivableReportPage));
enrichReceivableReportWithCompanyName(receivableReportPage); enrichReceivableReportWithCompanyName(receivableReportPage);
log.info("receivableReportPage>>>>后{}", JSON.toJSONString(receivableReportPage)); receivableReportPage = convertProductName(receivableReportPage);
// 组装返回结果 // 组装返回结果
ReceivableReportResponse response = new ReceivableReportResponse(); ReceivableReportResponse response = new ReceivableReportResponse();
response.setStatisticsVO(statisticsVO); response.setStatisticsVO(statisticsVO);
...@@ -291,6 +292,30 @@ public class ApiCommissionExpectedController { ...@@ -291,6 +292,30 @@ public class ApiCommissionExpectedController {
return Result.success(response); return Result.success(response);
} }
public IPage<ReceivableReportVO> convertProductName(IPage<ReceivableReportVO> receivableReportPage) {
if (!org.springframework.util.CollectionUtils.isEmpty(receivableReportPage.getRecords())) {
List<String> policyNoList = receivableReportPage.getRecords().stream().map(ReceivableReportVO::getPolicyNo).collect(Collectors.toList());
List<PolicyFollow> policyFollowList = new ArrayList<>();
if (!org.springframework.util.CollectionUtils.isEmpty(policyNoList)) {
policyFollowList = policyFollowService.lambdaQuery()
.in(PolicyFollow::getPolicyNo, policyNoList)
.list();
}
Map<String, PolicyFollow> policyFollowMap = policyFollowList.stream()
.collect(Collectors.toMap(PolicyFollow::getPolicyNo, Function.identity()));
List<ReceivableReportVO> voList = receivableReportPage.getRecords().stream().map(vo -> {
PolicyFollow policyFollow= policyFollowMap.get(vo.getPolicyNo());
if (policyFollow != null) {
vo.setProductName(policyFollow.getProductName());
vo.setProductLaunchBizId(policyFollow.getProductLaunchBizId());
}
return vo;
}).collect(Collectors.toList());
receivableReportPage.setRecords(voList);
}
return receivableReportPage;
}
private void enrichReceivableReportWithCompanyName(IPage<ReceivableReportVO> page) { private void enrichReceivableReportWithCompanyName(IPage<ReceivableReportVO> page) {
if (page == null || CollectionUtils.isEmpty(page.getRecords())) { if (page == null || CollectionUtils.isEmpty(page.getRecords())) {
return; return;
...@@ -302,7 +327,6 @@ public class ApiCommissionExpectedController { ...@@ -302,7 +327,6 @@ public class ApiCommissionExpectedController {
.filter(StringUtils::isNotBlank) .filter(StringUtils::isNotBlank)
.distinct() .distinct()
.collect(Collectors.toList()); .collect(Collectors.toList());
log.info("bizIdList>>>>{}", JSON.toJSONString(bizIdList));
if (bizIdList.isEmpty()) { if (bizIdList.isEmpty()) {
return; return;
} }
...@@ -315,7 +339,6 @@ public class ApiCommissionExpectedController { ...@@ -315,7 +339,6 @@ public class ApiCommissionExpectedController {
Result result = companyFeignClient.page(request); Result result = companyFeignClient.page(request);
List<ApiInsuranceReconciliationCompanyPageResponse> companyList = extractCompanyListFromResult(result); List<ApiInsuranceReconciliationCompanyPageResponse> companyList = extractCompanyListFromResult(result);
log.info("companyList>>>>{}", JSON.toJSONString(companyList));
if (companyList.isEmpty()) { if (companyList.isEmpty()) {
return; return;
} }
...@@ -328,7 +351,6 @@ public class ApiCommissionExpectedController { ...@@ -328,7 +351,6 @@ public class ApiCommissionExpectedController {
ApiInsuranceReconciliationCompanyPageResponse::getName, ApiInsuranceReconciliationCompanyPageResponse::getName,
(v1, v2) -> v1 // 重复时保留第一个 (v1, v2) -> v1 // 重复时保留第一个
)); ));
log.info("nameMap>>>>{}", JSON.toJSONString(nameMap));
// 回填名称 // 回填名称
page.getRecords().forEach(vo -> { page.getRecords().forEach(vo -> {
if (StringUtils.isNotBlank(vo.getReconciliationCompanyBizId())) { if (StringUtils.isNotBlank(vo.getReconciliationCompanyBizId())) {
...@@ -344,7 +366,6 @@ public class ApiCommissionExpectedController { ...@@ -344,7 +366,6 @@ public class ApiCommissionExpectedController {
if (result == null || result.getCode() != 200 || result.getData() == null) { if (result == null || result.getCode() != 200 || result.getData() == null) {
return Collections.emptyList(); return Collections.emptyList();
} }
log.info("Feign返回结果: {}", JSON.toJSONString(result));
Object data = result.getData(); Object data = result.getData();
try { try {
// 将 data 转为 JSON 字符串再解析为 Map,以便提取 records // 将 data 转为 JSON 字符串再解析为 Map,以便提取 records
......
...@@ -2,6 +2,7 @@ package com.yd.csf.service.service.impl; ...@@ -2,6 +2,7 @@ package com.yd.csf.service.service.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
...@@ -22,11 +23,15 @@ import com.yd.csf.service.enums.CommissionExpectedStatusEnum; ...@@ -22,11 +23,15 @@ import com.yd.csf.service.enums.CommissionExpectedStatusEnum;
import com.yd.csf.service.model.Commission; import com.yd.csf.service.model.Commission;
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.model.PolicyFollow;
import com.yd.csf.service.service.*; import com.yd.csf.service.service.*;
import com.yd.csf.service.dao.CommissionExpectedMapper; import com.yd.csf.service.dao.CommissionExpectedMapper;
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.insurance.base.feign.client.insurancereconciliationcompany.ApiInsuranceReconciliationCompanyFeignClient;
import com.yd.insurance.base.feign.request.insurancereconciliationcompany.ApiInsuranceReconciliationCompanyPageRequest;
import com.yd.insurance.base.feign.response.insurancereconciliationcompany.ApiInsuranceReconciliationCompanyPageResponse;
import com.yd.product.feign.client.announcementcommissionratio.ApiAnnouncementCommissionRatioFeignClient; import com.yd.product.feign.client.announcementcommissionratio.ApiAnnouncementCommissionRatioFeignClient;
import com.yd.product.feign.client.expectedspecies.ApiExpectedSpeciesFeignClient; import com.yd.product.feign.client.expectedspecies.ApiExpectedSpeciesFeignClient;
import com.yd.product.feign.request.expectedspecies.ApiExpectedSpeciesListRequest; import com.yd.product.feign.request.expectedspecies.ApiExpectedSpeciesListRequest;
...@@ -81,6 +86,8 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -81,6 +86,8 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
private RedisUtil redisUtil; private RedisUtil redisUtil;
@Resource @Resource
private ApiExchangeRateFeignClient apiExchangeRateFeignClient; private ApiExchangeRateFeignClient apiExchangeRateFeignClient;
@Resource
private ApiInsuranceReconciliationCompanyFeignClient companyFeignClient;
// 用于对象转换的ObjectMapper // 用于对象转换的ObjectMapper
private static final ObjectMapper objectMapper = new ObjectMapper(); private static final ObjectMapper objectMapper = new ObjectMapper();
...@@ -94,6 +101,7 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -94,6 +101,7 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
return CommissionExpectedVOPage; return CommissionExpectedVOPage;
} }
// 关联查询保单信息 // 关联查询保单信息
Set<String> policyNoSet = CommissionExpectedList.stream().map(CommissionExpected::getPolicyNo).collect(Collectors.toSet()); Set<String> policyNoSet = CommissionExpectedList.stream().map(CommissionExpected::getPolicyNo).collect(Collectors.toSet());
QueryWrapper<Policy> queryWrapper = new QueryWrapper<Policy>(); QueryWrapper<Policy> queryWrapper = new QueryWrapper<Policy>();
...@@ -102,6 +110,15 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -102,6 +110,15 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
List<Policy> policyList = policyService.list(queryWrapper); List<Policy> policyList = policyService.list(queryWrapper);
Map<String, Policy> policyMap = policyList.stream().collect(Collectors.toMap(Policy::getPolicyNo, a -> a, (oldValue, newValue) -> newValue)); Map<String, Policy> policyMap = policyList.stream().collect(Collectors.toMap(Policy::getPolicyNo, a -> a, (oldValue, newValue) -> newValue));
List<String> policyNoList = policyList.stream().map(Policy::getPolicyNo).collect(Collectors.toList());
List<PolicyFollow> policyFollowList = new ArrayList<>();
if (!org.springframework.util.CollectionUtils.isEmpty(policyNoList)) {
policyFollowList = policyFollowService.lambdaQuery()
.in(PolicyFollow::getPolicyNo, policyNoList)
.list();
}
Map<String, PolicyFollow> policyFollowMap = policyFollowList.stream()
.collect(Collectors.toMap(PolicyFollow::getPolicyNo, Function.identity()));
// 填充信息 // 填充信息
List<CommissionExpectedVO> CommissionExpectedVOList = CommissionExpectedList.stream().map(commissionExpected -> { List<CommissionExpectedVO> CommissionExpectedVOList = CommissionExpectedList.stream().map(commissionExpected -> {
CommissionExpectedVO commissionExpectedVO = CommissionExpectedVO.objToVo(commissionExpected); CommissionExpectedVO commissionExpectedVO = CommissionExpectedVO.objToVo(commissionExpected);
...@@ -114,12 +131,93 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -114,12 +131,93 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
commissionExpectedVO.setReconciliationCompany(policy.getReconciliationCompany()); commissionExpectedVO.setReconciliationCompany(policy.getReconciliationCompany());
commissionExpectedVO.setPolicyCurrency(policy.getCurrency()); commissionExpectedVO.setPolicyCurrency(policy.getCurrency());
} }
PolicyFollow policyFollow= policyFollowMap.get(commissionExpected.getPolicyNo());
if (policyFollow != null) {
commissionExpectedVO.setProductName(policyFollow.getProductName());
commissionExpectedVO.setProductLaunchBizId(policyFollow.getProductLaunchBizId());
}
return commissionExpectedVO; return commissionExpectedVO;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
CommissionExpectedVOPage.setRecords(CommissionExpectedVOList); CommissionExpectedVOPage.setRecords(CommissionExpectedVOList);
enrichReceivableReportWithCompanyName(CommissionExpectedVOPage);
return CommissionExpectedVOPage; return CommissionExpectedVOPage;
} }
private void enrichReceivableReportWithCompanyName(IPage<CommissionExpectedVO> page) {
if (page == null || CollectionUtils.isEmpty(page.getRecords())) {
return;
}
// 收集所有非空的对账公司 bizId(去重)
List<String> bizIdList = page.getRecords().stream()
.map(CommissionExpectedVO::getReconciliationCompanyBizId)
.filter(StringUtils::isNotBlank)
.distinct()
.collect(Collectors.toList());
if (bizIdList.isEmpty()) {
return;
}
// 调用 Feign 批量查询对账公司信息
ApiInsuranceReconciliationCompanyPageRequest request = new ApiInsuranceReconciliationCompanyPageRequest();
request.setReconciliationCompanyBizIdList(bizIdList);
request.setPageNo(1);
request.setPageSize(bizIdList.size());
Result result = companyFeignClient.page(request);
List<ApiInsuranceReconciliationCompanyPageResponse> companyList = extractCompanyListFromResult(result);
if (companyList.isEmpty()) {
return;
}
// 构建 bizId -> name 映射
Map<String, String> nameMap = companyList.stream()
.filter(c -> StringUtils.isNotBlank(c.getReconciliationCompanyBizId()))
.collect(Collectors.toMap(
ApiInsuranceReconciliationCompanyPageResponse::getReconciliationCompanyBizId,
ApiInsuranceReconciliationCompanyPageResponse::getName,
(v1, v2) -> v1 // 重复时保留第一个
));
// 回填名称
page.getRecords().forEach(vo -> {
if (StringUtils.isNotBlank(vo.getReconciliationCompanyBizId())) {
String name = nameMap.get(vo.getReconciliationCompanyBizId());
if (StringUtils.isNotBlank(name) && !"CSF".equals(name)) {
vo.setReconciliationCompany(name);
}
}
});
}
private List<ApiInsuranceReconciliationCompanyPageResponse> extractCompanyListFromResult(Result result) {
if (result == null || result.getCode() != 200 || result.getData() == null) {
return Collections.emptyList();
}
Object data = result.getData();
try {
// 将 data 转为 JSON 字符串再解析为 Map,以便提取 records
Map<String, Object> dataMap = JSON.parseObject(JSON.toJSONString(data), new com.alibaba.fastjson.TypeReference<Map<String, Object>>() {});
Object recordsObj = dataMap.get("records");
if (recordsObj instanceof List) {
List<?> recordsList = (List<?>) recordsObj;
List<ApiInsuranceReconciliationCompanyPageResponse> companyList = new ArrayList<>();
for (Object item : recordsList) {
// 将每个元素转换为目标类型
ApiInsuranceReconciliationCompanyPageResponse company = JSON.parseObject(
JSON.toJSONString(item),
ApiInsuranceReconciliationCompanyPageResponse.class
);
companyList.add(company);
}
return companyList;
}
} catch (Exception e) {
log.error("解析公司列表失败", e);
}
return Collections.emptyList();
}
/** /**
* 校验数据 * 校验数据
* *
......
...@@ -37,6 +37,12 @@ public class ReceivableReportVO { ...@@ -37,6 +37,12 @@ public class ReceivableReportVO {
private String reconciliationCompanyBizId; private String reconciliationCompanyBizId;
/** /**
* 产品上架信息表唯一业务ID
*/
@Schema(description = "产品上架信息表唯一业务ID")
private String productLaunchBizId;
/**
* 入账期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年) * 入账期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
*/ */
@Schema(description = "入账期数") @Schema(description = "入账期数")
......
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