diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/JDOrderListController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/JDOrderListController.java index ba2c82e..398d194 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/JDOrderListController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/JDOrderListController.java @@ -58,6 +58,12 @@ public class JDOrderListController extends BaseController query.getParams().put("endTime", endTimeStr); } + // 处理完成日期筛选参数 + String hasFinishTime = request.getParameter("hasFinishTime"); + if (hasFinishTime != null && "true".equalsIgnoreCase(hasFinishTime)) { + query.getParams().put("hasFinishTime", true); + } + java.util.List list; if (orderBy != null && !orderBy.isEmpty()) { // 设置排序参数 @@ -70,13 +76,34 @@ public class JDOrderListController extends BaseController TableDataInfo dataTable = getDataTable(list); List rows = (List) dataTable.getRows(); - for (JDOrder jdOrder : rows) { - OrderRows orderRows = orderRowsService.selectOrderRowsByOrderId(jdOrder.getOrderId()); - if (orderRows != null) { - jdOrder.setProPriceAmount(orderRows.getProPriceAmount()); - jdOrder.setFinishTime(orderRows.getFinishTime()); - } else { - jdOrder.setProPriceAmount(0.0); + + // 如果需要筛选完成日期不为空,先过滤后再关联查询 + if (hasFinishTime != null && "true".equalsIgnoreCase(hasFinishTime)) { + // 先关联查询所有订单的完成时间 + for (JDOrder jdOrder : rows) { + OrderRows orderRows = orderRowsService.selectOrderRowsByOrderId(jdOrder.getOrderId()); + if (orderRows != null) { + jdOrder.setProPriceAmount(orderRows.getProPriceAmount()); + jdOrder.setFinishTime(orderRows.getFinishTime()); + } else { + jdOrder.setProPriceAmount(0.0); + jdOrder.setFinishTime(null); + } + } + // 过滤掉完成时间为空的订单 + rows.removeIf(jdOrder -> jdOrder.getFinishTime() == null); + // 更新总数 + dataTable.setTotal(rows.size()); + } else { + // 正常关联查询 + for (JDOrder jdOrder : rows) { + OrderRows orderRows = orderRowsService.selectOrderRowsByOrderId(jdOrder.getOrderId()); + if (orderRows != null) { + jdOrder.setProPriceAmount(orderRows.getProPriceAmount()); + jdOrder.setFinishTime(orderRows.getFinishTime()); + } else { + jdOrder.setProPriceAmount(0.0); + } } }