From 27123ba0b671913bfbb1f5702e63e5389096eb98 Mon Sep 17 00:00:00 2001 From: "lisai17@sina.com" Date: Tue, 25 Aug 2020 17:19:03 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E9=9B=86=E5=9B=A2=E8=AE=A2?= =?UTF-8?q?=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ordercluster/OrderclusterService.java | 71 ++++++++++++++----- 1 file changed, 53 insertions(+), 18 deletions(-) diff --git a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/order/ordercluster/OrderclusterService.java b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/order/ordercluster/OrderclusterService.java index 5bdaa70..f463211 100644 --- a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/order/ordercluster/OrderclusterService.java +++ b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/order/ordercluster/OrderclusterService.java @@ -7,6 +7,7 @@ import com.cowr.common.enums.UserTypeEnum; import com.cowr.common.view.PageParam; import com.cowr.common.view.Result; import com.cowr.model.Ordercluster; +import com.cowr.model.OrderclusterTruck; import com.cowr.model.Sysuser; import com.jfinal.kit.StrKit; import com.jfinal.plugin.activerecord.Db; @@ -53,13 +54,9 @@ public class OrderclusterService extends BaseService { Integer state, Integer product_id ) { - String selectsql = "select t.*, s.name supermarket_name, a.truck_num "; + String selectsql = "select t.*, s.name supermarket_name "; String fromsql = "from ordercluster t \n" + " left join supermarket s on s.id = t.supermarket_id \n" + - " left join ( \n" + - " select t.ordercluster_id, count(*) truck_num from ordercluster_truck t \n" + - " group by t.ordercluster_id \n" + - " ) a on ordercluster_id = t.id \n" + " where t.customer_id is null \n "; List paraList = new ArrayList<>(); @@ -113,27 +110,24 @@ public class OrderclusterService extends BaseService { List list = page.getList(); setOverWeight(list); + setTruckNum(list); return page; } public Page findCluster(PageParam pp, - Integer supermarket_id, - Integer trans_co_id, - Integer customer_id, - String customer_name, - String stm, - String etm, - Integer state, - Integer product_id + Integer supermarket_id, + Integer trans_co_id, + Integer customer_id, + String customer_name, + String stm, + String etm, + Integer state, + Integer product_id ) { - String selectsql = "select t.*, s.name supermarket_name, a.truck_num "; + String selectsql = "select t.*, s.name supermarket_name "; String fromsql = "from ordercluster t \n" + " left join supermarket s on s.id = t.supermarket_id \n " + - " left join ( \n" + - " select t.ordercluster_id, count(*) truck_num from ordercluster_truck t \n" + - " group by t.ordercluster_id \n" + - " ) a on ordercluster_id = t.id \n" + " where t.customer_id is not null \n "; List paraList = new ArrayList<>(); @@ -197,6 +191,7 @@ public class OrderclusterService extends BaseService { List list = page.getList(); setOverWeight(list); + setTruckNum(list); return page; } @@ -343,6 +338,46 @@ public class OrderclusterService extends BaseService { return list; } + public void setTruckNum(List list) { + if (list == null || list.isEmpty()) { + return; + } + + StringBuilder ids = new StringBuilder(); + Map> map = new HashMap<>(); + for (Record record : list) { + if (ids.length() > 0) { + ids.append(", "); + } + + ids.append(record.getStr("id")); + } + + List trucks = OrderclusterTruck.dao.find("select * from ordercluster_truck t where t.ordercluster_id in(" + ids.toString() + ")"); + + for (OrderclusterTruck oct : trucks) { + int ordercluster_id = oct.getOrderclusterId(); + + if (!map.containsKey(ordercluster_id)) { + map.put(ordercluster_id, new ArrayList<>()); + } + + map.get(ordercluster_id).add(oct); + } + + for (Record record : list) { + int ordercluster_id = record.getInt("id"); + + if (map.containsKey(ordercluster_id)) { + record.set("truck_num", map.get(ordercluster_id).size()); + record.set("trucks", map.get(ordercluster_id)); + } else { + record.set("truck_num", 0); + record.set("trucks", new ArrayList<>()); + } + } + } + public void setOverWeight(List list) { // 使用已完成的订单动态计算剩余量 if (list == null || list.isEmpty()) {