Преглед изворни кода

查询订单所有明细列表优化

eganwu пре 1 година
родитељ
комит
d98c5ba376
1 измењених фајлова са 18 додато и 7 уклоњено
  1. 18 7
      src/custom/restcontroller/webmanage/sale/order/OrderItems.java

+ 18 - 7
src/custom/restcontroller/webmanage/sale/order/OrderItems.java

@@ -909,6 +909,16 @@ public class OrderItems extends Controller {
         ArrayList<Long> ids = rows.toArrayList("itemid", new ArrayList<>());
         RowsMap rowsMap = rows.toRowsMap("itemno");
 
+        ArrayList<Long> sa_orderitemsid = rows.toArrayList("sa_orderitemsid", new ArrayList<>());
+
+        QuerySQL t11 = SQLFactory.createQuerySQL(this, "sa_dispatch_items",
+                "sa_orderitemsid", "siteid");
+        t11.addQueryFields("outwarehouseqty", "sum(outwarehouseqty)");
+        t11.setSiteid(siteid);
+        t11.setWhere("sa_orderitemsid",sa_orderitemsid);
+        t11.addGroupBy("sa_orderitemsid,siteid");
+        RowsMap outwarehouseqtyRowsMap=t11.query().toRowsMap("sa_orderitemsid");
+
         SQLFactory sqlFactory1 = new SQLFactory(this, "订单明细出库数量汇总");
         sqlFactory1.addParameter("siteid", siteid);
         sqlFactory1.addParameter_in("sa_orderitemsids", rows.toArrayList("sa_orderitemsid", new ArrayList<>()));
@@ -949,6 +959,11 @@ public class OrderItems extends Controller {
             }
             row.put("attinfos", attinfoRowsMap.getOrDefault(row.getString("itemid"), new Rows()));
             row.put("contractprice", 0);
+            if(outwarehouseqtyRowsMap.get(row.getString("sa_orderitemsid")).isNotEmpty()) {
+                row.put("outwarehouseqty", outwarehouseqtyRowsMap.get(row.getString("sa_orderitemsid")).get(0).getBigDecimal("outwarehouseqty"));
+            }else{
+                row.put("outwarehouseqty",0);
+            }
         }
 
 //        if (isExport) {
@@ -1015,11 +1030,7 @@ public class OrderItems extends Controller {
     //查询订单列表(管理端)
     public QuerySQL queryAllListManage(String where) throws YosException {
 
-        QuerySQL t11 = SQLFactory.createQuerySQL(this, "sa_dispatch_items",
-                "sa_orderitemsid", "siteid");
-        t11.addQueryFields("outwarehouseqty", "sum(outwarehouseqty)");
-        t11.setSiteid(siteid);
-        t11.addGroupBy("sa_orderitemsid,siteid");
+
 
 
         QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_orderitems",
@@ -1041,11 +1052,11 @@ public class OrderItems extends Controller {
                 "sys_enterprise_tradefieldid");
         querySQL.addJoinTable(JOINTYPE.left, "sa_salearea", "t10", "t10.sa_saleareaid = t9.sa_saleareaid and t10.siteid = t9.siteid",
                 "areaname");
-        querySQL.addJoinTable(JOINTYPE.left, t11, "t11", "t11.sa_orderitemsid = t1.sa_orderitemsid and t11.siteid = t1.siteid");
+//        querySQL.addJoinTable(JOINTYPE.left, t11, "t11", "t11.sa_orderitemsid = t1.sa_orderitemsid and t11.siteid = t1.siteid");
         querySQL.addJoinTable(JOINTYPE.left, "sa_accountclass", "t12", "t12.sa_accountclassid=t5.sa_accountclassid and t12.siteid=t5.siteid");
         querySQL.addQueryFields("accountnames", "if(ifnull(replace(replace(replace(JSON_EXTRACT (t5.sa_accountclassinfos, '$**.accountname' ),'[',''),']',''),'\\\"',''),'')='',t12.accountname,replace(replace(replace(JSON_EXTRACT (t5.sa_accountclassinfos, '$**.accountname' ),'[',''),']',''),'\\\"',''))");
         querySQL.addQueryFields("orderremarks", "t5.remarks");
-        querySQL.addQueryFields("outwarehouseqty", "ifnull(t11.outwarehouseqty,0)");
+//        querySQL.addQueryFields("outwarehouseqty", "ifnull(t11.outwarehouseqty,0)");
         //querySQL.addQueryFields("accountclassinfos", "REPLACE(SUBSTRING(JSON_EXTRACT(t5.sa_accountclassinfos, '$[*].accountname'), 2, CHAR_LENGTH(JSON_EXTRACT(t5.sa_accountclassinfos, '$[*].accountname'))-2),'\"','')");
         querySQL.setWhere("t1.siteid", siteid);
         querySQL.setWhere(where);