//查询批次表
List<TClaimBatch> batches = batchService.list(Wrappers.<TClaimBatch>lambdaQuery()
.eq(query.getInsuranceCompanyId() != null, TClaimBatch::getInsuranceCompanyId, query.getInsuranceCompanyId())
.eq(query.getInsuranceApplicationId() != null, TClaimBatch::getInsuranceApplicationId, query.getInsuranceApplicationId())
.like(StringUtils.isNotBlank(query.getBatchNo()), TClaimBatch::getBatchNo, query.getBatchNo())
.eq(StringUtils.isNotBlank(query.getBatchStatus()), TClaimBatch::getStatus, query.getBatchStatus())
.eq(query.getClaimType() != null, TClaimBatch::getClaimType, query.getClaimType())
.eq(query.getExigency() != null, TClaimBatch::getExigency, query.getExigency())
.ge(query.getStartTime() != null, TClaimBatch::getCreateTime, query.getStartTime())
.le(query.getEndTime() != null, TClaimBatch::getEndTime, query.getEndTime())
);
List<TClaimCase> eqCases = new ArrayList<>(16);
//查询分案表
for (int i = 0; i < batches.size(); i++) {
List<TClaimCase> cases = tClaimCaseMapper.selectList(Wrappers.<TClaimCase>lambdaQuery()
.eq(StringUtils.isNotBlank(query.getStatus()), TClaimCase::getCaseStatus, query.getStatus())
.eq(TClaimCase::getBatchId, batches.get(i).getId())
);
eqCases.addAll(cases);
}
List<CaseVo> caseVos = new ArrayList<>(16);
for (int i = 0; i < eqCases.size(); i++) {
//查询被保人表
List<TClaimCaseInsured> caseInsureds = insuredService.list(Wrappers.<TClaimCaseInsured>lambdaQuery()
.eq(TClaimCaseInsured::getBatchId, eqCases.get(i).getBatchId())
.eq(TClaimCaseInsured::getCaseId, eqCases.get(i).getId())
);
CaseVo caseVo = new CaseVo();
BeanUtils.copyProperties(eqCases.get(i), caseVo);
Long batchId = eqCases.get(i).getBatchId();
String policyNo = batches.stream().filter(a -> a.getId().equals(batchId)).findFirst().get().getPolicyNo();
caseVo.setPolicyNo(policyNo);
Long companyId = batches.stream().filter(a -> a.getId().equals(batchId)).findFirst().get().getInsuranceCompanyId();
caseVo.setInsuranceCompanyId(companyId);
Long applicationId = batches.stream().filter(a -> a.getId().equals(batchId)).findFirst().get().getInsuranceApplicationId();
caseVo.setInsuranceApplicationId(applicationId);
int claimType = batches.stream().filter(a -> a.getId().equals(batchId)).findFirst().get().getClaimType();
caseVo.setClaimType(claimType);
int emergency = batches.stream().filter(a -> a.getId().equals(batchId)).findFirst().get().getExigency();
caseVo.setExigency(emergency);
if (caseInsureds != null && caseInsureds.size() > 0) {
caseVo.setCustomerNo(caseInsureds.get(0).getCustomerNo());
caseVo.setInsuredName(caseInsureds.get(0).getInsuredName());
caseVo.setIdCard(caseInsureds.get(0).getIdCard());
}
caseVos.add(caseVo);
}
IPage<CaseVo> casePage = new Page<>();
long pages = 0;
if (page.getSize() != 0) {
long total = caseVos.size();
long pageSize = page.getSize();
if ((total % pageSize) == 0 && (total / pageSize) >= 1) {
pages = (total / pageSize);
pages = (int) Math.ceil(pages);
} else {
// 将操作数转化为int型数据
pages = (total / pageSize) + 1;
}
}
casePage.setPages(pages);
casePage.setTotal(caseVos.size());
casePage.setRecords(page(caseVos, page.getSize(), page.getCurrent()));
return casePage;
}
/**
* 循环截取某页列表进行分页
*
* @param dataList 分页数据
* @param pageSize 页面大小
* @param currentPage 当前页面
*/
public List<CaseVo> page(List<CaseVo> dataList, Long pageSize, Long currentPage) {
List<CaseVo> currentPageList = new ArrayList<>();
if (dataList != null && dataList.size() > 0) {
long currIdx = (currentPage > 1 ? (currentPage - 1) * pageSize : 0);
for (int i = 0; i < pageSize && i < dataList.size() - currIdx; i++) {
CaseVo data = dataList.get((int) (currIdx + i));
currentPageList.add(data);
}
}
return currentPageList;
}