Join<MainGood, Channel> channelJoin = root.join(MainGood_.channel, JoinType.LEFT); predicateList.add(cb.or( channelJoin.isNull() , cb.isFalse(channelJoin.get(Channel_.extra)) ));
if (channel == null) { predicateList.add(cb.or( channelJoin.isNull() , cb.isFalse(channelJoin.get(Channel_.extra)) ));
@Override public Specification<StockShiftUnit> specification() { return (root, query, cb) -> { final Join<StockShiftUnit, Depot> stockShiftUnitDepotJoin = StockShiftUnit.destinationJoin(root); Predicate predicate = cb.and( stockShiftUnitDepotJoin.isNotNull(), StockShiftUnit.originJoin(root).isNull() ); if (!StringUtils.isEmpty(mobile)) predicate = cb.and(predicate, cb.like(Depot.mobile(stockShiftUnitDepotJoin) , "%" + mobile + "%")); if (depotId != null) predicate = cb.and(predicate, cb.equal(stockShiftUnitDepotJoin.get("id"), depotId)); // productCode 包含这个商品 if (!StringUtils.isEmpty(productCode)) { MapJoin<StockShiftUnit, Product, ProductBatch> amountJoin = root.joinMap("amounts"); predicate = cb.and(predicate, cb.equal(amountJoin.key().get("code"), productCode)); } if (orderDate != null) { predicate = cb.and( predicate , JpaFunctionUtils.dateEqual(cb, StockShiftUnit.createDate(root), orderDate)); } return predicate; }; } };
@Override public Specification<SalesAchievement> specification() { return (root, query, cb) -> { Predicate predicate = cb.isTrue(root.get(SalesAchievement_.picked)); if (date != null) { predicate = cb.and(predicate, JpaFunctionUtils.dateEqual(cb , root.get(SalesAchievement_.targetTime), date)); } if (remark != null) { final Path<String> remarkPath = root.get(SalesAchievement_.remark); predicate = cb.and(predicate, !remark ? remarkPath.isNull() : remarkPath.isNotNull()); } if (deal != null) { Join<?, MainOrder> orderPath = root.join(SalesAchievement_.mainOrder, JoinType.LEFT); Predicate next; if (deal) next = cb.and(orderPath.isNotNull(), MainOrder.getOrderPaySuccess(orderPath, cb)); else next = cb.or(orderPath.isNull(), MainOrder.getOrderPaySuccess(orderPath, cb).not()); predicate = cb.and(predicate, next); } return predicate; }; } };
.addBiSelect((salesAchievementRoot, criteriaBuilder) -> { orderPath = salesAchievementRoot.join(SalesAchievement_.mainOrder, JoinType.LEFT); final Predicate result = criteriaBuilder.or(orderPath.isNull(), MainOrder.getOrderPaySuccess(orderPath, criteriaBuilder).not()); return criteriaBuilder.selectCase(result) .when(true, 0)
); return criteriaBuilder.toBigDecimal( criteriaBuilder.<Boolean, Number>selectCase(channel.isNull()) .when(true , simpleSum)