/** * 查询指定工艺工序的作业计划 * * @param conditionPageFilter 筛选条件 * @return 作业计划基本信息 */ public Page<ProcessMaterialInfoDo> pageQuery( ConditionPageFilter conditionPageFilter) { String steelNoName = null; LinkedHashSet<ConditionGroup> groups = conditionPageFilter.getGroups(); for (ConditionGroup group : groups) { for (Condition condition : group.getConditions()) { if ("steelNoName".equals(condition.getName())){ steelNoName = (String) condition.getValue(); group.getConditions().remove(condition); break; } } } final String newSteelNoName=steelNoName; // 获取分页查询参数:包括排序方式 PageRequest pageRequest = PageRequest.of(conditionPageFilter.getPage() - 1, conditionPageFilter.getLimit(), getSorts(conditionPageFilter.getSorts())); // 执行查询 Page<ProcessMaterialInfoDo> page = findAll((root, query, builder) -> { // 获取牌号的查询root Root<SteelNoDo> steelNoDoRoot = query.from(SteelNoDo.class); List<Predicate> predicates=new ArrayList<>(4); // 在制品和牌号联表 predicates.add(builder.equal(root.get("steelNo"), steelNoDoRoot.get("steelNoCode"))); // 状态等于3 支数大于0 predicates.add(builder.and( builder.equal(root.get("positionCode"), MaterialPosition.COMPLETE.getValue()), builder.gt(root.get("count"), 0) )); // 查询牌号 if (newSteelNoName!=null){ predicates.add(builder.equal( steelNoDoRoot.get("steelNoName"),newSteelNoName)); } // 构造查询筛选查询条件 Specification<ProcessMaterialInfoDo> simpleConditionQuery = new SimpleConditionQuery(conditionPageFilter.getGroups()); Predicate predicate = simpleConditionQuery.toPredicate(root, query, builder); if (predicate != null) { predicates.add(predicate); } // 执行查询操作 return query.where(predicates.toArray(new Predicate[]{})).distinct(true).orderBy(builder.asc(root.get("created"))).getRestriction(); }, pageRequest); return page; } /** * 通过ConditionPageFilter中的sort参数获取JPA使用的sort对象 * * @param propertySorts * @return */ private Sort getSorts(Collection<PropertySort> propertySorts) { List<Sort.Order> orderList = Lists.newLinkedList(); if (!org.springframework.util.CollectionUtils.isEmpty(propertySorts)) { Iterator var3 = propertySorts.iterator(); while (var3.hasNext()) { PropertySort sort = (PropertySort) var3.next(); OrderEnum order = OrderEnum.order(sort.getOrder()); orderList.add(order.sortBy(sort.getName())); } } Sort sort = null; if (!org.springframework.util.CollectionUtils.isEmpty(orderList)) { sort = Sort.by(orderList); } return sort; }
学习记录01
最新推荐文章于 2024-07-15 22:27:18 发布