From 1c9e4e423657b00d2e4eac00745a27ae74c4f723 Mon Sep 17 00:00:00 2001 From: Houpn Date: Wed, 12 Jul 2023 16:06:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=89=A9=E6=B5=81=E7=AE=A1?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cc/hiver/core/entity/Worker.java | 4 +- .../cc/hiver/core/service/OrderService.java | 3 + .../core/serviceimpl/OrderServiceImpl.java | 57 +++++++++++++++++++ .../controller/manage/OrderController.java | 2 +- 4 files changed, 63 insertions(+), 3 deletions(-) diff --git a/hiver-core/src/main/java/cc/hiver/core/entity/Worker.java b/hiver-core/src/main/java/cc/hiver/core/entity/Worker.java index ef765275..445331fc 100644 --- a/hiver-core/src/main/java/cc/hiver/core/entity/Worker.java +++ b/hiver-core/src/main/java/cc/hiver/core/entity/Worker.java @@ -119,7 +119,7 @@ public class Worker implements Serializable { * * 多端中的列键值《外键》指向一端 一对多的单向关联,我们还是推荐使用一张中间表来建立关系。 */ - @OneToMany(targetEntity = Order.class,mappedBy = "orderByWorker",cascade = CascadeType.ALL,fetch = FetchType.EAGER) - private List order; + /*@OneToMany(targetEntity = Order.class,mappedBy = "orderByWorker",cascade = CascadeType.ALL,fetch = FetchType.EAGER) + private List order;*/ } diff --git a/hiver-core/src/main/java/cc/hiver/core/service/OrderService.java b/hiver-core/src/main/java/cc/hiver/core/service/OrderService.java index 55919e99..a7cdb396 100644 --- a/hiver-core/src/main/java/cc/hiver/core/service/OrderService.java +++ b/hiver-core/src/main/java/cc/hiver/core/service/OrderService.java @@ -29,4 +29,7 @@ public interface OrderService extends HiverBaseService { Order findByOrderId(String orderId); + Page findAllByCondition(Order order, SearchVo searchVo, Pageable pageable); + + } diff --git a/hiver-core/src/main/java/cc/hiver/core/serviceimpl/OrderServiceImpl.java b/hiver-core/src/main/java/cc/hiver/core/serviceimpl/OrderServiceImpl.java index 1688026d..e9badbe4 100644 --- a/hiver-core/src/main/java/cc/hiver/core/serviceimpl/OrderServiceImpl.java +++ b/hiver-core/src/main/java/cc/hiver/core/serviceimpl/OrderServiceImpl.java @@ -103,5 +103,62 @@ public class OrderServiceImpl implements OrderService { return orderDao.findByOrderId(orderId); } + @Override + public Page findAllByCondition(Order order, SearchVo searchVo, Pageable pageable) { + return orderDao.findAll(new Specification() { + @Nullable + @Override + public Predicate toPredicate(Root root, CriteriaQuery cq, CriteriaBuilder cb) { + Path OrderIdField = root.get("orderId"); + Path norderLogisticsField = root.get("orderLogistics"); + Path kdOrderIdField = root.get("kdOrderId"); + Path timeoutField = root.get("timeout"); + Path orderStatusdField = root.get("orderStatus"); + Path orderByWorkerField = root.get("orderByWorker"); + //抢单时间 + Path createTimeField = root.get("orderByWorkertime"); + + List 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); + } + } diff --git a/hiver-modules/hiver-base/src/main/java/cc/hiver/base/controller/manage/OrderController.java b/hiver-modules/hiver-base/src/main/java/cc/hiver/base/controller/manage/OrderController.java index e9f3a4b4..d6b0ef93 100644 --- a/hiver-modules/hiver-base/src/main/java/cc/hiver/base/controller/manage/OrderController.java +++ b/hiver-modules/hiver-base/src/main/java/cc/hiver/base/controller/manage/OrderController.java @@ -159,7 +159,7 @@ public class OrderController { public Result> getAllByCondition(Order order, SearchVo searchVo, PageVo pageVo) { - Page page = orderService.findByCondition(order, searchVo, PageUtil.initPage(pageVo)); + Page page = orderService.findAllByCondition(order, searchVo, PageUtil.initPage(pageVo)); return new ResultUtil>().setData(page); }