Commit 598bad49 by zhangxingmin

push

parent abd5965d
......@@ -222,24 +222,27 @@ public class ApiCommissionExpectedController {
*/
@PostMapping("/queryCommissionExpectedByPage/new")
@Operation(summary = "应收款管理列表查询(新)")
public Result<QueryCommissionExpectedByPageNewResponse> queryCommissionExpectedByPageNew(@RequestBody CommissionExpectedQueryRequest commissionExpectedQueryRequest) {
long current = commissionExpectedQueryRequest.getPageNo();
long size = commissionExpectedQueryRequest.getPageSize();
public Result<QueryCommissionExpectedByPageNewResponse> queryCommissionExpectedByPageNew(
@RequestBody CommissionExpectedQueryRequest commissionExpectedQueryRequest) {
// 统计信息仍基于所有符合条件的主记录
QueryWrapper<CommissionExpected> queryWrapper = commissionExpectedService
.getQueryWrapper(commissionExpectedQueryRequest);
List<CommissionExpected> allExpectedList = commissionExpectedService.list(queryWrapper);
List<Long> expectedIds = allExpectedList.stream()
.map(CommissionExpected::getId)
.collect(Collectors.toList());
CommissionExpectedStatisticsNewVO statisticsNewVO = commissionExpectedService
.getExpectedStatisticsNew(expectedIds);
// 查询列表数据
QueryWrapper<CommissionExpected> queryWrapper = commissionExpectedService.getQueryWrapper(commissionExpectedQueryRequest);
Page<CommissionExpected> commissionExpectedPage = commissionExpectedService.page(new Page<>(current, size),
queryWrapper);
// 获取混合分页结果
Page<CommissionExpectedNewVO> mixedPage = commissionExpectedService
.getCommissionExpectedVONewPage(commissionExpectedQueryRequest,allExpectedList);
// 查询统计数据
List<CommissionExpected> commissionExpectedList = commissionExpectedService.list(queryWrapper);
// 计算统计数据
List<Long> expectedIds = commissionExpectedList.stream().map(CommissionExpected::getId).collect(Collectors.toList());
CommissionExpectedStatisticsNewVO statisticsNewVO = commissionExpectedService.getExpectedStatisticsNew(expectedIds);
// 组装返回值
// 组装返回
QueryCommissionExpectedByPageNewResponse response = new QueryCommissionExpectedByPageNewResponse();
response.setExpectedStatisticsVO(statisticsNewVO);
response.setPage(commissionExpectedService.getCommissionExpectedVONewPage(commissionExpectedPage));
response.setPage(mixedPage);
return Result.success(response);
}
......
......@@ -25,7 +25,7 @@ public interface CommissionExpectedService extends IService<CommissionExpected>
Page<CommissionExpectedVO> getCommissionExpectedVOPage(Page<CommissionExpected> commissionExpectedPage);
Page<CommissionExpectedNewVO> getCommissionExpectedVONewPage(Page<CommissionExpected> commissionExpectedPage);
Page<CommissionExpectedNewVO> getCommissionExpectedVONewPage(CommissionExpectedQueryRequest request,List<CommissionExpected> allExpectedList);
/**
* 校验数据
......
......@@ -149,23 +149,19 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
/**
* 应收款管理列表查询
* @param commissionExpectedPage
* @param request
* @param allExpectedList
* @return
*/
@Override
public Page<CommissionExpectedNewVO> getCommissionExpectedVONewPage(Page<CommissionExpected> commissionExpectedPage) {
List<CommissionExpected> commissionExpectedList = commissionExpectedPage.getRecords();
Page<CommissionExpectedNewVO> resultPage = new Page<>(
commissionExpectedPage.getCurrent(),
commissionExpectedPage.getSize(),
commissionExpectedPage.getTotal()
);
if (CollUtil.isEmpty(commissionExpectedList)) {
return resultPage;
}
// 批量查询实际来佣记录(按预计来佣业务ID分组)
List<String> expectedBizIdList = commissionExpectedList.stream()
public Page<CommissionExpectedNewVO> getCommissionExpectedVONewPage(CommissionExpectedQueryRequest request,
List<CommissionExpected> allExpectedList) {
if (CollUtil.isEmpty(allExpectedList)) {
return new Page<>(request.getPageNo(), request.getPageSize(), 0);
}
// 批量查询实际佣金记录(按预计来佣业务ID分组)
List<String> expectedBizIdList = allExpectedList.stream()
.map(CommissionExpected::getCommissionExpectedBizId)
.collect(Collectors.toList());
List<Commission> allCommissions = commissionService.lambdaQuery()
......@@ -176,8 +172,9 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
.collect(Collectors.groupingBy(Commission::getCommissionExpectedBizId));
// 批量查询保单信息(Policy 和 PolicyFollow)
Set<String> policyNoSet = new HashSet<>();
commissionExpectedList.forEach(e -> policyNoSet.add(e.getPolicyNo()));
Set<String> policyNoSet = allExpectedList.stream()
.map(CommissionExpected::getPolicyNo)
.collect(Collectors.toSet());
allCommissions.forEach(c -> policyNoSet.add(c.getPolicyNo()));
policyNoSet.remove(null);
......@@ -197,27 +194,43 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
.collect(Collectors.toMap(PolicyFollow::getPolicyNo, Function.identity(), (v1, v2) -> v1));
}
// 构建混合结果列表
List<CommissionExpectedNewVO> mixedRecords = new ArrayList<>();
for (CommissionExpected expected : commissionExpectedList) {
// 主记录(预计来佣)
// 构建完整混合列表(保持主记录顺序,子记录紧跟其后)
List<CommissionExpectedNewVO> allMixedRecords = new ArrayList<>();
for (CommissionExpected expected : allExpectedList) {
// 主记录
CommissionExpectedNewVO mainVo = buildMainVo(expected, policyMap, policyFollowMap);
mixedRecords.add(mainVo);
allMixedRecords.add(mainVo);
// 从记录(实际来佣)
List<Commission> commissions = commissionMap.getOrDefault(expected.getCommissionExpectedBizId(), Collections.emptyList());
// 子记录
List<Commission> commissions = commissionMap.getOrDefault(
expected.getCommissionExpectedBizId(), Collections.emptyList());
int subIndex = 1;
for (Commission commission : commissions) {
CommissionExpectedNewVO subVo = buildSubVo(commission, policyMap, policyFollowMap, mainVo);
subVo.setNo(mainVo.getNo() + "-" + subIndex);
subVo.setType(2);
mixedRecords.add(subVo);
allMixedRecords.add(subVo);
subIndex++;
}
}
resultPage.setRecords(mixedRecords);
resultPage.setTotal(mixedRecords.size());
// 手动分页
int pageNo = (int) request.getPageNo();
int pageSize = (int) request.getPageSize();
int total = allMixedRecords.size();
int fromIndex = (pageNo - 1) * pageSize;
int toIndex = Math.min(fromIndex + pageSize, total);
List<CommissionExpectedNewVO> pageRecords;
if (fromIndex >= total) {
pageRecords = Collections.emptyList();
} else {
pageRecords = allMixedRecords.subList(fromIndex, toIndex);
}
Page<CommissionExpectedNewVO> resultPage = new Page<>(pageNo, pageSize, total);
resultPage.setRecords(pageRecords);
// 回填对账公司名称
enrichCommissionExpectedNewVOWithCompanyName(resultPage);
return resultPage;
......
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