|
|
|
@ -103,5 +103,62 @@ public class OrderServiceImpl implements OrderService { |
|
|
|
return orderDao.findByOrderId(orderId); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public Page<Order> findAllByCondition(Order order, SearchVo searchVo, Pageable pageable) { |
|
|
|
return orderDao.findAll(new Specification<Order>() { |
|
|
|
@Nullable |
|
|
|
@Override |
|
|
|
public Predicate toPredicate(Root<Order> root, CriteriaQuery<?> cq, CriteriaBuilder cb) { |
|
|
|
Path<String> OrderIdField = root.get("orderId"); |
|
|
|
Path<String> norderLogisticsField = root.get("orderLogistics"); |
|
|
|
Path<String> kdOrderIdField = root.get("kdOrderId"); |
|
|
|
Path<String> timeoutField = root.get("timeout"); |
|
|
|
Path<Integer> orderStatusdField = root.get("orderStatus"); |
|
|
|
Path<String> orderByWorkerField = root.get("orderByWorker"); |
|
|
|
//抢单时间
|
|
|
|
Path<Date> createTimeField = root.get("orderByWorkertime"); |
|
|
|
|
|
|
|
List<Predicate> list = new ArrayList<>(); |
|
|
|
|
|
|
|
if (StrUtil.isNotBlank(order.getOrderId())) { |
|
|
|
list.add(cb.equal(OrderIdField, order.getOrderId())); |
|
|
|
} |
|
|
|
|
|
|
|
// 精确搜索
|
|
|
|
if (StrUtil.isNotBlank(order.getOrderLogistics())) { |
|
|
|
list.add(cb.equal(norderLogisticsField, order.getOrderLogistics())); |
|
|
|
} |
|
|
|
if (StrUtil.isNotBlank(order.getKdOrderId())) { |
|
|
|
list.add(cb.like(kdOrderIdField, order.getKdOrderId())); |
|
|
|
} |
|
|
|
|
|
|
|
if (StrUtil.isNotBlank(order.getTimeout())) { |
|
|
|
list.add(cb.equal(timeoutField, order.getTimeout())); |
|
|
|
} |
|
|
|
|
|
|
|
// 状态
|
|
|
|
if (order.getOrderStatus() != null) { |
|
|
|
list.add(cb.equal(orderStatusdField, order.getOrderStatus())); |
|
|
|
} |
|
|
|
|
|
|
|
if (StrUtil.isNotBlank(order.getOrderByWorker())) { |
|
|
|
list.add(cb.equal(orderByWorkerField, order.getOrderByWorker())); |
|
|
|
} |
|
|
|
// 创建时间
|
|
|
|
if (StrUtil.isNotBlank(searchVo.getStartDate()) && StrUtil.isNotBlank(searchVo.getEndDate())) { |
|
|
|
Date start = DateUtil.parse(searchVo.getStartDate()); |
|
|
|
Date end = DateUtil.parse(searchVo.getEndDate()); |
|
|
|
list.add(cb.between(createTimeField, start, DateUtil.endOfDay(end))); |
|
|
|
} |
|
|
|
|
|
|
|
// 数据权限
|
|
|
|
|
|
|
|
Predicate[] arr = new Predicate[list.size()]; |
|
|
|
cq.where(list.toArray(arr)); |
|
|
|
return null; |
|
|
|
} |
|
|
|
}, pageable); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|