Commit d4f97d4d by zhangxingmin

push

parent e7243cf5
package com.yd.csf.api.service.impl; package com.yd.csf.api.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
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;
import com.yd.base.feign.client.bank.ApiBankFeignClient; import com.yd.base.feign.client.bank.ApiBankFeignClient;
...@@ -42,7 +44,11 @@ import com.yd.csf.service.service.CommissionExpectedService; ...@@ -42,7 +44,11 @@ import com.yd.csf.service.service.CommissionExpectedService;
import com.yd.csf.service.service.IPremiumReconciliationService; import com.yd.csf.service.service.IPremiumReconciliationService;
import com.yd.csf.service.service.PolicyFollowService; 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.ReceivableReportVO;
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.request.insurancereconciliationcompany.ApiInsuranceReconciliationCompanyPageRequest;
import com.yd.insurance.base.feign.response.insurancereconciliationcompany.ApiInsuranceReconciliationCompanyPageResponse;
import com.yd.product.feign.response.expectedspecies.ApiExpectedSpeciesListResponse; import com.yd.product.feign.response.expectedspecies.ApiExpectedSpeciesListResponse;
import com.yd.user.feign.client.sysdict.ApiSysDictFeignClient; import com.yd.user.feign.client.sysdict.ApiSysDictFeignClient;
import com.yd.user.feign.request.sysdict.GetDictTypeListRequest; import com.yd.user.feign.request.sysdict.GetDictTypeListRequest;
...@@ -102,6 +108,9 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia ...@@ -102,6 +108,9 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia
@Resource @Resource
private ApiExpectedFortuneService apiExpectedFortuneService; private ApiExpectedFortuneService apiExpectedFortuneService;
@Resource
private ApiInsuranceReconciliationCompanyFeignClient companyFeignClient;
@Autowired @Autowired
private ApplicationContext applicationContext; private ApplicationContext applicationContext;
...@@ -503,9 +512,87 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia ...@@ -503,9 +512,87 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia
log.info("共更新了 {} 条记录的付款金额", updatedCount); log.info("共更新了 {} 条记录的付款金额", updatedCount);
} }
//转换对账公司名称
enrichReceivableReportWithCompanyName(iPage);
return Result.success(iPage); return Result.success(iPage);
} }
private void enrichReceivableReportWithCompanyName(IPage<ApiPremiumReconciliationPageResponse> page) {
if (page == null || org.apache.commons.collections4.CollectionUtils.isEmpty(page.getRecords())) {
return;
}
// 收集所有非空的对账公司 bizId(去重)
List<String> bizIdList = page.getRecords().stream()
.map(ApiPremiumReconciliationPageResponse::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 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();
}
// 辅助类 // 辅助类
private static class ConvertInfo { private static class ConvertInfo {
String reconciliationBizId; String reconciliationBizId;
......
...@@ -110,7 +110,12 @@ public class ApiPremiumReconciliationPageResponse { ...@@ -110,7 +110,12 @@ public class ApiPremiumReconciliationPageResponse {
private LocalDateTime updateTime; private LocalDateTime updateTime;
/** /**
* 对账公司(保单表) * 对账公司ID(保单跟进表)
*/
private String reconciliationCompanyBizId;
/**
* 对账公司名称
*/ */
private String reconciliationCompany; private String reconciliationCompany;
......
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
pb.broker_name AS brokerName, pb.broker_name AS brokerName,
pr.create_time, pr.create_time,
pr.update_time, pr.update_time,
p.reconciliation_company pf.reconciliation_company_biz_id
FROM premium_reconciliation pr FROM premium_reconciliation pr
LEFT JOIN policy p ON p.policy_no = pr.policy_no AND p.is_deleted = 0 LEFT JOIN policy p ON p.policy_no = pr.policy_no AND p.is_deleted = 0
LEFT JOIN policy_follow pf ON pf.policy_no = pr.policy_no AND pf.is_deleted = 0 LEFT JOIN policy_follow pf ON pf.policy_no = pr.policy_no AND pf.is_deleted = 0
......
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