代码拉取完成,页面将自动刷新
希望Cnd 能添加 join 查询 类似hibernate 酱紫
Join<ContractDetail, ContractBase> contractBaseJoin = root.join("contractBase", JoinType.LEFT);
predicates.add(criteriaBuilder.equal(contractBaseJoin.get("dataTransferFlag"), DataTransferFlagEnum.FLAG_COMPLETED.getCode()));
如果可以的话 希望 Cnd order by 也能join 排序
@Override
public Map<String, Object> queryAll(ContractSearch search, Pageable pageable) {
Page<ContractDetail> page = ContractDetailRepository.findAll((Specification<ContractDetail>) (root, criteriaQuery, criteriaBuilder) -> {
List<Predicate> predicates = new LinkedList<>();
//合同物数据物权转移 完成的查询
Join<ContractDetail, ContractBase> contractBaseJoin = root.join("contractBase", JoinType.LEFT);
predicates.add(criteriaBuilder.equal(contractBaseJoin.get("dataTransferFlag"), DataTransferFlagEnum.FLAG_COMPLETED.getCode()));
Optional<ContractSearch> optional = Optional.ofNullable(search);
// 根据 ContractDetail contractNo 查询
optional.map(ContractSearch::getContractNo).ifPresent(id -> {
predicates.add(criteriaBuilder.equal(root.get("contractNo"), id));
});
// 根据 ContractDetail brandCode 查询
optional.map(ContractSearch::getBrandCode).ifPresent(brandCode -> {
predicates.add(criteriaBuilder.equal(root.get("brandCode"), brandCode));
});
// 根据 ContractDetail contractDate 查询
if (optional.map(ContractSearch::getContractDate).isPresent()) {
predicates.add(criteriaBuilder.between(
contractBaseJoin.get("contractDate"),
search.getContractDate().get(0),
search.getContractDate().get(1))
);
}
Predicate[] array = new Predicate[predicates.size()];
return criteriaBuilder.and(predicates.toArray(array));
}, pageable);
page.get().forEach(cd -> {
ContractDetailDto contractDetailDto = contractBrandCodeAvailable(cd.getContractNo(),cd.getBrandCode());
cd.setDetailSumNum(contractDetailDto.getDetailSumNum());
cd.setOrderSumNum(contractDetailDto.getOrderSumNum());
cd.setAvai(contractDetailDto.getAvai());
});
return PageUtil.toPage(page.map(ContractDetailMapper::toDto));
}