由于需求变更,该部分代码需要从项目中删除,记录到博客中以便日后使用,仅供参考
创建VO类
public class AgriculturalMaterialInputSumVO {
private Long agriculturalMaterialId;
private Long batchId;
private BigDecimal assetQuantitySum;
private Long facilityId;
}
实现类
public Page<AgriculturalMaterialInputVO> queryDouble(PageParam<AgriculturalMaterialInputBO> param) {
//分页参数
Pageable pageable=PageRequest.of(param.getPage()-1, param.getSize());
//criteriaBuilder用于构建CriteriaQuery的构建器对象
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
//criteriaQuery包含查询语句的各个部分,如where、max、sum、groupBy、orderBy等
CriteriaQuery<AgriculturalMaterialInputSumVO> query = criteriaBuilder.createQuery(AgriculturalMaterialInputSumVO.class);
//获取查询实例的属性,select * from books
Root<AgriculturalMaterialInput> root = query.from(AgriculturalMaterialInput.class);
//分组求和
//相当于select type,max(price) maxPrice,sum(price) sumPrice from books中select 与 from之间的部分
query.multiselect(root.get("agriculturalMaterialId"),root.get("batchId"),criteriaBuilder.toBigDecimal(criteriaBuilder.sumAsLong(root.get("assetQuantity"))),root.get("facilityId"));
//条件查询相当于where...
List<Predicate> predicateList = new ArrayList<>();
if (Optional.ofNullable(param).map(PageParam::getEntity).isPresent()){
if (OrganizationList.printList().size() > 0) {
Expression<Long> exp = root.get("organizationId");
predicateList.add(exp.in(OrganizationList.printList()));
}
if(Optional.ofNullable(param.getEntity()<