Commit 0249e992 by zhangxingmin

push

parent f447d3aa
...@@ -20,6 +20,9 @@ import com.yd.csf.service.vo.CommissionExpectedExportDTO; ...@@ -20,6 +20,9 @@ import com.yd.csf.service.vo.CommissionExpectedExportDTO;
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 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;
...@@ -31,7 +34,9 @@ import javax.servlet.http.HttpServletRequest; ...@@ -31,7 +34,9 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -49,6 +54,8 @@ public class ApiCommissionExpectedController { ...@@ -49,6 +54,8 @@ public class ApiCommissionExpectedController {
private CommissionExpectedService commissionExpectedService; private CommissionExpectedService commissionExpectedService;
@Resource @Resource
private PolicyService policyService; private PolicyService policyService;
@Resource
private ApiInsuranceReconciliationCompanyFeignClient companyFeignClient;
/** /**
* 批量新增预计入账 * 批量新增预计入账
...@@ -270,10 +277,86 @@ public class ApiCommissionExpectedController { ...@@ -270,10 +277,86 @@ public class ApiCommissionExpectedController {
receivableReportPage = commissionExpectedService.receivableReportPage(reportPage, allExpectedIdList); receivableReportPage = commissionExpectedService.receivableReportPage(reportPage, allExpectedIdList);
} }
enrichReceivableReportWithCompanyName(receivableReportPage);
// 组装返回结果 // 组装返回结果
ReceivableReportResponse response = new ReceivableReportResponse(); ReceivableReportResponse response = new ReceivableReportResponse();
response.setStatisticsVO(statisticsVO); response.setStatisticsVO(statisticsVO);
response.setPage(receivableReportPage); response.setPage(receivableReportPage);
return Result.success(response); return Result.success(response);
} }
/**
* 处理receivableReportPage
* @return
*/
private void enrichReceivableReportWithCompanyName(IPage<ReceivableReportVO> page) {
if (page == null || CollectionUtils.isEmpty(page.getRecords())) {
return;
}
// 收集所有非空的对账公司 bizId(去重)
List<String> bizIdList = page.getRecords().stream()
.map(ReceivableReportVO::getReconciliationCompanyBizId)
.filter(StringUtils::isNotBlank)
.distinct()
.collect(Collectors.toList());
if (CollectionUtils.isEmpty(bizIdList)) {
return;
}
// 调用 Feign 批量查询对账公司信息
ApiInsuranceReconciliationCompanyPageRequest request = new ApiInsuranceReconciliationCompanyPageRequest();
request.setReconciliationCompanyBizIdList(bizIdList);
request.setPageNo(1);
request.setPageSize(bizIdList.size()); // 确保一次查全
Result result = companyFeignClient.page(request); // 返回原始 Result 类型
if (result == null || result.getCode() != 200 || result.getData() == null) {
return;
}
// 由于实际数据类型是 IPage<ApiInsuranceReconciliationCompanyPageResponse>,进行安全转换
Object data = result.getData();
if (!(data instanceof IPage<?>)) {
// 类型不符合预期,记录日志并返回
return;
}
IPage<?> rawPage = (IPage<?>) data;
if (CollectionUtils.isEmpty(rawPage.getRecords())) {
return;
}
// 提取 records,并安全转换为目标类型
List<ApiInsuranceReconciliationCompanyPageResponse> companyList = new ArrayList<>();
for (Object record : rawPage.getRecords()) {
if (record instanceof ApiInsuranceReconciliationCompanyPageResponse) {
companyList.add((ApiInsuranceReconciliationCompanyPageResponse) record);
}
}
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 // 重复时保留第一个
));
// 回填名称
for (ReceivableReportVO vo : page.getRecords()) {
if (StringUtils.isNotBlank(vo.getReconciliationCompanyBizId())) {
String name = nameMap.get(vo.getReconciliationCompanyBizId());
if (StringUtils.isNotBlank(name)) {
vo.setReconciliationCompany(name);
}
}
}
}
} }
...@@ -29,14 +29,8 @@ import com.yd.csf.service.dto.CommissionRuleBindingDto; ...@@ -29,14 +29,8 @@ import com.yd.csf.service.dto.CommissionRuleBindingDto;
import com.yd.csf.service.dto.QueryPolicyAndBrokerDto; import com.yd.csf.service.dto.QueryPolicyAndBrokerDto;
import com.yd.csf.service.dto.QueryPolicyBrokerDto; import com.yd.csf.service.dto.QueryPolicyBrokerDto;
import com.yd.csf.service.enums.FortuneStatusEnum; import com.yd.csf.service.enums.FortuneStatusEnum;
import com.yd.csf.service.model.CommissionRuleBinding; import com.yd.csf.service.model.*;
import com.yd.csf.service.model.ExpectedFortune; import com.yd.csf.service.service.*;
import com.yd.csf.service.model.Policy;
import com.yd.csf.service.model.PolicyBroker;
import com.yd.csf.service.service.ICommissionRuleBindingService;
import com.yd.csf.service.service.IExpectedFortuneService;
import com.yd.csf.service.service.PolicyBrokerService;
import com.yd.csf.service.service.PolicyService;
import com.yd.csf.service.vo.ExpectedFortuneExportDTO; import com.yd.csf.service.vo.ExpectedFortuneExportDTO;
import com.yd.csf.service.vo.ExpectedFortuneStatisticsVO; import com.yd.csf.service.vo.ExpectedFortuneStatisticsVO;
import com.yd.csf.service.vo.PayableReportVO; import com.yd.csf.service.vo.PayableReportVO;
...@@ -56,6 +50,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -56,6 +50,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionTemplate; import org.springframework.transaction.support.TransactionTemplate;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
...@@ -94,6 +89,8 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -94,6 +89,8 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
private PolicyBrokerService policyBrokerService; private PolicyBrokerService policyBrokerService;
@Autowired @Autowired
private ApiSysDictFeignClient apiSysDictFeignClient; private ApiSysDictFeignClient apiSysDictFeignClient;
@Resource
private PolicyFollowService policyFollowService;
/** /**
* 生成预计发佣 * 生成预计发佣
...@@ -861,6 +858,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -861,6 +858,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
payableReportPage = iExpectedFortuneService.payableReportPage(reportPage, allFortuneIdList); payableReportPage = iExpectedFortuneService.payableReportPage(reportPage, allFortuneIdList);
} }
payableReportPage = convertPayableReportVO(payableReportPage);
// 组装返回结果 // 组装返回结果
PayableReportResponse response = new PayableReportResponse(); PayableReportResponse response = new PayableReportResponse();
response.setStatisticsVO(statisticsVO); response.setStatisticsVO(statisticsVO);
...@@ -868,6 +866,40 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -868,6 +866,40 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
return Result.success(response); return Result.success(response);
} }
public IPage<PayableReportVO> convertPayableReportVO(IPage<PayableReportVO> payableReportPage) {
if (!CollectionUtils.isEmpty(payableReportPage.getRecords())) {
List<String> policyNoList = payableReportPage.getRecords().stream().map(PayableReportVO::getPolicyNo).collect(Collectors.toList());
List<Policy> policyList = new ArrayList<>();
List<PolicyFollow> policyFollowList = new ArrayList<>();
if (!CollectionUtils.isEmpty(policyNoList)) {
policyList = policyService.lambdaQuery()
.in(Policy::getPolicyNo, policyNoList)
.list();
policyFollowList = policyFollowService.lambdaQuery()
.in(PolicyFollow::getPolicyNo, policyNoList)
.list();
}
Map<String, Policy> policyMap = policyList.stream()
.collect(Collectors.toMap(Policy::getPolicyNo, Function.identity()));
Map<String, PolicyFollow> policyFollowMap = policyFollowList.stream()
.collect(Collectors.toMap(PolicyFollow::getPolicyNo, Function.identity()));
List<PayableReportVO> voList = payableReportPage.getRecords().stream().map(vo -> {
Policy policy = policyMap.get(vo.getPolicyNo());
PolicyFollow policyFollow= policyFollowMap.get(vo.getPolicyNo());
if (policy != null) {
vo.setPolicyCurrency(policy.getCurrency());
}
if (policyFollow != null) {
vo.setProductName(policyFollow.getProductName());
vo.setProductLaunchBizId(policyFollow.getProductLaunchBizId());
}
return vo;
}).collect(Collectors.toList());
payableReportPage.setRecords(voList);
}
return payableReportPage;
}
/** /**
* 创建应付款编号 应付款类型-CSF-年份后两位-6位数字(不重复) * 创建应付款编号 应付款类型-CSF-年份后两位-6位数字(不重复)
* *
......
...@@ -9,8 +9,10 @@ import com.yd.csf.feign.response.expectedfortune.ApiExpectedFortunePageResponse; ...@@ -9,8 +9,10 @@ import com.yd.csf.feign.response.expectedfortune.ApiExpectedFortunePageResponse;
import com.yd.csf.service.model.ExpectedFortune; import com.yd.csf.service.model.ExpectedFortune;
import com.yd.csf.service.dao.ExpectedFortuneMapper; import com.yd.csf.service.dao.ExpectedFortuneMapper;
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.IExpectedFortuneService; import com.yd.csf.service.service.IExpectedFortuneService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
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.ExpectedFortuneStatisticsVO; import com.yd.csf.service.vo.ExpectedFortuneStatisticsVO;
import com.yd.csf.service.vo.PayableReportVO; import com.yd.csf.service.vo.PayableReportVO;
...@@ -37,6 +39,9 @@ public class ExpectedFortuneServiceImpl extends ServiceImpl<ExpectedFortuneMappe ...@@ -37,6 +39,9 @@ public class ExpectedFortuneServiceImpl extends ServiceImpl<ExpectedFortuneMappe
@Resource @Resource
private PolicyService policyService; private PolicyService policyService;
@Resource
private PolicyFollowService policyFollowService;
@Override @Override
public IPage<ApiExpectedFortunePageResponse> page(Page<ApiExpectedFortunePageResponse> page, public IPage<ApiExpectedFortunePageResponse> page(Page<ApiExpectedFortunePageResponse> page,
ApiExpectedFortunePageRequest request) { ApiExpectedFortunePageRequest request) {
...@@ -87,19 +92,28 @@ public class ExpectedFortuneServiceImpl extends ServiceImpl<ExpectedFortuneMappe ...@@ -87,19 +92,28 @@ public class ExpectedFortuneServiceImpl extends ServiceImpl<ExpectedFortuneMappe
List<Policy> policyList = policyService.lambdaQuery() List<Policy> policyList = policyService.lambdaQuery()
.in(Policy::getPolicyNo, expectedFortuneList.stream().map(ExpectedFortune::getPolicyNo).collect(Collectors.toList())) .in(Policy::getPolicyNo, expectedFortuneList.stream().map(ExpectedFortune::getPolicyNo).collect(Collectors.toList()))
.list(); .list();
List<PolicyFollow> policyFollowList = policyFollowService.lambdaQuery()
.in(PolicyFollow::getPolicyNo, expectedFortuneList.stream().map(ExpectedFortune::getPolicyNo).collect(Collectors.toList()))
.list();
Map<String, Policy> policyMap = policyList.stream() Map<String, Policy> policyMap = policyList.stream()
.collect(Collectors.toMap(Policy::getPolicyNo, Function.identity())); .collect(Collectors.toMap(Policy::getPolicyNo, Function.identity()));
Map<String, PolicyFollow> policyFollowMap = policyFollowList.stream()
.collect(Collectors.toMap(PolicyFollow::getPolicyNo, Function.identity()));
List<ApiExpectedFortunePageResponse> expectedFortuneVOList = expectedFortuneList.stream().map(expectedFortune -> { List<ApiExpectedFortunePageResponse> expectedFortuneVOList = expectedFortuneList.stream().map(expectedFortune -> {
ApiExpectedFortunePageResponse expectedFortuneVO = new ApiExpectedFortunePageResponse(); ApiExpectedFortunePageResponse expectedFortuneVO = new ApiExpectedFortunePageResponse();
BeanUtils.copyProperties(expectedFortune, expectedFortuneVO); BeanUtils.copyProperties(expectedFortune, expectedFortuneVO);
Policy policy = policyMap.get(expectedFortune.getPolicyNo()); Policy policy = policyMap.get(expectedFortune.getPolicyNo());
PolicyFollow policyFollow= policyFollowMap.get(expectedFortune.getPolicyNo());
if (policy != null) { if (policy != null) {
expectedFortuneVO.setInsuranceCompany(policy.getInsuranceCompany()); expectedFortuneVO.setInsuranceCompany(policy.getInsuranceCompany());
expectedFortuneVO.setProductName(policy.getProductName());
expectedFortuneVO.setPremium(policy.getPaymentPremium()); expectedFortuneVO.setPremium(policy.getPaymentPremium());
} }
if (policyFollow != null) {
expectedFortuneVO.setProductName(policyFollow.getProductName());
expectedFortuneVO.setProductLaunchBizId(policyFollow.getProductLaunchBizId());
}
return expectedFortuneVO; return expectedFortuneVO;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
return expectedFortuneVOList; return expectedFortuneVOList;
......
...@@ -89,6 +89,12 @@ public class PayableReportVO { ...@@ -89,6 +89,12 @@ public class PayableReportVO {
private String currency; private String currency;
/** /**
* 保单币种
*/
@Schema(description = "保单币种")
private String policyCurrency;
/**
* 应出账金额(港币) * 应出账金额(港币)
*/ */
@Schema(description = "应出账金额(港币)") @Schema(description = "应出账金额(港币)")
......
...@@ -31,6 +31,12 @@ public class ReceivableReportVO { ...@@ -31,6 +31,12 @@ public class ReceivableReportVO {
private String reconciliationCompany; private String reconciliationCompany;
/** /**
* 对账公司Id
*/
@Schema(description = "对账公司Id")
private String reconciliationCompanyBizId;
/**
* 入账期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年) * 入账期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
*/ */
@Schema(description = "入账期数") @Schema(description = "入账期数")
......
...@@ -70,6 +70,7 @@ ...@@ -70,6 +70,7 @@
null as receivableNo, null as receivableNo,
ce.policy_no as policyNo, ce.policy_no as policyNo,
MAX(ce.reconciliation_company) as reconciliationCompany, MAX(ce.reconciliation_company) as reconciliationCompany,
MAX(ce.reconciliation_company_biz_id) as reconciliationCompanyBizId,
ce.commission_period as commissionPeriod, ce.commission_period as commissionPeriod,
MAX(ce.total_period) as totalPeriod, MAX(ce.total_period) as totalPeriod,
DATE_ADD(DATE_ADD(MAX(p.effective_date), INTERVAL 2 MONTH), INTERVAL (ce.commission_period - 1) YEAR) as commissionDate, DATE_ADD(DATE_ADD(MAX(p.effective_date), INTERVAL 2 MONTH), INTERVAL (ce.commission_period - 1) YEAR) as commissionDate,
...@@ -110,6 +111,7 @@ ...@@ -110,6 +111,7 @@
ce.receivable_no as receivableNo, ce.receivable_no as receivableNo,
ce.policy_no as policyNo, ce.policy_no as policyNo,
ce.reconciliation_company as reconciliationCompany, ce.reconciliation_company as reconciliationCompany,
ce.reconciliation_company_biz_id as reconciliationCompanyBizId,
ce.commission_period as commissionPeriod, ce.commission_period as commissionPeriod,
ce.total_period as totalPeriod, ce.total_period as totalPeriod,
ce.commission_date as commissionDate, ce.commission_date as commissionDate,
......
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