Просмотр исходного кода

订单商品添加列表查询优化

shenjingwei 6 месяцев назад
Родитель
Сommit
ed0d6d0b8f
1 измененных файлов с 24 добавлено и 64 удалено
  1. 24 64
      src/custom/restcontroller/webmanage/sale/order/OrderItems.java

+ 24 - 64
src/custom/restcontroller/webmanage/sale/order/OrderItems.java

@@ -648,19 +648,14 @@ public class OrderItems extends Controller {
         QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_orderitems", "*");
         querySQL.setTableAlias("t1");
         querySQL.addJoinTable(JOINTYPE.left, "st_invbal_sale", "t2", "t2.siteid = t1.siteid AND t2.itemid = t1.itemid", "cansaleqty", "candispatchqty");
-        querySQL.addJoinTable(JOINTYPE.left, "plm_item", "t3", "t3.itemid = t1.itemid and t3.siteid = t1.siteid",
-                "orderminqty_auxunit", "orderaddqty_auxunit", "spec", "iscustomsize", "widthschemeid", "lengthschemeid", "standards", "k3outcode");
+        querySQL.addJoinTable(JOINTYPE.left, "plm_item", "t3", "t3.itemid = t1.itemid and t3.siteid = t1.siteid", "orderminqty_auxunit", "orderaddqty_auxunit", "spec", "iscustomsize", "widthschemeid", "lengthschemeid", "standards", "k3outcode");
         if (sa_promotionid > 0) {
-            querySQL.addJoinTable(JOINTYPE.left, "sa_promotion_items", "t4",
-                    "t4.sa_promotion_itemsid = t1.sa_promotion_itemsid and t4.siteid = t1.siteid and t4.sa_promotionid=" + sa_promotionid, "packagetypemx", "saledqty", "groupqty");
+            querySQL.addJoinTable(JOINTYPE.left, "sa_promotion_items", "t4", "t4.sa_promotion_itemsid = t1.sa_promotion_itemsid and t4.siteid = t1.siteid and t4.sa_promotionid=" + sa_promotionid, "packagetypemx", "saledqty", "groupqty");
         }
         if (type.equals("配件订单")) {
-            querySQL.addJoinTable(JOINTYPE.left, "sa_workorder", "t5",
-                    "t1.sa_workorderid=t5.sa_workorderid and t1.siteid=t5.siteid");
-            querySQL.addJoinTable(JOINTYPE.left, "sa_warrantycard", "t6",
-                    "t6.cardno=t1.cardno and t6.siteid=t1.siteid", "sku");
-            querySQL.addJoinTable(JOINTYPE.left, "plm_item", "t7",
-                    "t7.itemid=t6.itemid and t7.siteid=t6.siteid");
+            querySQL.addJoinTable(JOINTYPE.left, "sa_workorder", "t5", "t1.sa_workorderid=t5.sa_workorderid and t1.siteid=t5.siteid");
+            querySQL.addJoinTable(JOINTYPE.left, "sa_warrantycard", "t6", "t6.cardno=t1.cardno and t6.siteid=t1.siteid", "sku");
+            querySQL.addJoinTable(JOINTYPE.left, "plm_item", "t7", "t7.itemid=t6.itemid and t7.siteid=t6.siteid");
         }
         querySQL.addQueryFields("candispatchqty", "ifnull(t2.candispatchqty, 0)");
         querySQL.addQueryFields("cansaleqty", "ifnull(t2.cansaleqty, 0)");
@@ -873,8 +868,7 @@ public class OrderItems extends Controller {
                 } else if (convenient.equals("已发货")) {
                     where.append(" and exists(select 1 from st_stockbill_items s1 inner join st_stockbill s2 on s1.st_stockbillid=s2.st_stockbillid and s1.siteid=s2.siteid where s2.status='审核' and s2.rb=1 and s1.sa_orderitemsid=t1.sa_orderitemsid)");
                 } else if (convenient.equals("已取消")) {
-                    where.append(" and t5.status ='手工关闭' and  exists(select 1 from (\n" +
-                            "select  s1.sa_orderitemsid,s1.siteid,sum(s1.qty) qty from st_stockbill_items s1 inner join st_stockbill s2 on s1.st_stockbillid=s2.st_stockbillid and s1.siteid=s2.siteid where s2.status='审核' and s2.rb=1 group by s1.sa_orderitemsid,s1.siteid) s right join sa_orderitems s1  on s.sa_orderitemsid=s1.sa_orderitemsid and s.siteid=s1.siteid where s1.qty>ifnull(s.qty,0) and s1.sa_orderitemsid=t1.sa_orderitemsid)");
+                    where.append(" and t5.status ='手工关闭' and  exists(select 1 from (\n" + "select  s1.sa_orderitemsid,s1.siteid,sum(s1.qty) qty from st_stockbill_items s1 inner join st_stockbill s2 on s1.st_stockbillid=s2.st_stockbillid and s1.siteid=s2.siteid where s2.status='审核' and s2.rb=1 group by s1.sa_orderitemsid,s1.siteid) s right join sa_orderitems s1  on s.sa_orderitemsid=s1.sa_orderitemsid and s.siteid=s1.siteid where s1.qty>ifnull(s.qty,0) and s1.sa_orderitemsid=t1.sa_orderitemsid)");
                 }
             }
         }
@@ -887,8 +881,7 @@ public class OrderItems extends Controller {
 
         ArrayList<Long> sa_orderitemsid = rows.toArrayList("sa_orderitemsid", new ArrayList<>());
 
-        QuerySQL t11 = SQLFactory.createQuerySQL(this, "sa_dispatch_items",
-                "sa_orderitemsid", "siteid");
+        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);
@@ -914,8 +907,7 @@ public class OrderItems extends Controller {
                 JSONObject jsonObject = (JSONObject) object;
                 if (rowsMap.containsKey(jsonObject.getString("fitemno"))) {
                     if (rowsMap.get(jsonObject.getString("fitemno")).isNotEmpty()) {
-                        for (Row row : rowsMap.get(jsonObject.getString("fitemno"))
-                        ) {
+                        for (Row row : rowsMap.get(jsonObject.getString("fitemno"))) {
                             row.put("invbalqty", jsonObject.getBigDecimal("fqty"));
                         }
                     }
@@ -947,25 +939,15 @@ public class OrderItems extends Controller {
     //查询订单列表(管理端)
     public QuerySQL queryAllListManage(String where) throws YosException {
 
-        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_orderitems",
-                "sa_orderitemsid", "itemid", "rowno", "itemno", "itemname", "unit", "qty", "undeliqty", "saleprice", "defaultprice", "price", "amount", "remarks", "customproperties", "batchcontrol", "model",
-                "conversionrate", "marketprice", "defaultprice", "defaultamount", "auxqty", "needdate", "deliedqty", "rebateamount", "invoiceamount", "writeoffamount", "auxunit", "sa_orderid",
-                "deliverydate", "returnqty", "stockno", "position", "batchno", "isfreeze", "decorationrebateflag");
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_orderitems", "sa_orderitemsid", "itemid", "rowno", "itemno", "itemname", "unit", "qty", "undeliqty", "saleprice", "defaultprice", "price", "amount", "remarks", "customproperties", "batchcontrol", "model", "conversionrate", "marketprice", "defaultprice", "defaultamount", "auxqty", "needdate", "deliedqty", "rebateamount", "invoiceamount", "writeoffamount", "auxunit", "sa_orderid", "deliverydate", "returnqty", "stockno", "position", "batchno", "isfreeze", "decorationrebateflag");
         querySQL.setTableAlias("t1");
-        querySQL.addJoinTable(JOINTYPE.left, "plm_item", "t3", "t3.itemid = t1.itemid and t3.siteid = t1.siteid",
-                "orderminqty_auxunit", "orderminqty", "orderaddqty_auxunit", "orderaddqty", "spec", "standards", "packageqty", "delivery", "k3outcode");
-        querySQL.addJoinTable(JOINTYPE.left, "sa_order", "t5", "t5.sa_orderid = t1.sa_orderid and t5.siteid = t1.siteid",
-                "sonum", "type", "typemx", "status", "billdate", "submitdate", "checkdate", "tradefield", "closedate");
-        querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t6", "t6.sys_enterpriseid = t5.sys_enterpriseid and t6.siteid = t5.siteid",
-                "agentnum");
-        querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t7", "t7.sys_enterpriseid = t5.sys_enterpriseid and t7.siteid = t5.siteid",
-                "enterprisename", "abbreviation");
-        querySQL.addJoinTable(JOINTYPE.left, "plm_itemclass", "t8", "t8.itemclassid = t3.marketingcategory and t8.siteid = t3.siteid",
-                "itemclassname");
-        querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise_tradefield", "t9", "t9.sys_enterpriseid = t5.sys_enterpriseid and t9.tradefield=t5.tradefield and t9.siteid = t5.siteid",
-                "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, "plm_item", "t3", "t3.itemid = t1.itemid and t3.siteid = t1.siteid", "orderminqty_auxunit", "orderminqty", "orderaddqty_auxunit", "orderaddqty", "spec", "standards", "packageqty", "delivery", "k3outcode");
+        querySQL.addJoinTable(JOINTYPE.left, "sa_order", "t5", "t5.sa_orderid = t1.sa_orderid and t5.siteid = t1.siteid", "sonum", "type", "typemx", "status", "billdate", "submitdate", "checkdate", "tradefield", "closedate");
+        querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t6", "t6.sys_enterpriseid = t5.sys_enterpriseid and t6.siteid = t5.siteid", "agentnum");
+        querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t7", "t7.sys_enterpriseid = t5.sys_enterpriseid and t7.siteid = t5.siteid", "enterprisename", "abbreviation");
+        querySQL.addJoinTable(JOINTYPE.left, "plm_itemclass", "t8", "t8.itemclassid = t3.marketingcategory and t8.siteid = t3.siteid", "itemclassname");
+        querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise_tradefield", "t9", "t9.sys_enterpriseid = t5.sys_enterpriseid and t9.tradefield=t5.tradefield and t9.siteid = t5.siteid", "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, "sa_accountclass", "t12", "t12.sa_accountclassid=t5.sa_accountclassid and t12.siteid=t5.siteid");
         querySQL.addJoinTable(JOINTYPE.left, "sa_promotion", "t13", "t13.sa_promotionid=t5.sa_promotionid and t13.siteid=t5.siteid", "promnum", "promname");
@@ -1062,29 +1044,7 @@ public class OrderItems extends Controller {
             }
         }
 
-        QuerySQL itemquery = SQLFactory.createQuerySQL(this, "plm_item", "t1.itemid",
-                "t1.itemno",
-                "t1.itemname",
-                "t1.model",
-                "t1.batchcontrol",
-                "t1.orderminqty_auxunit",
-                "t1.orderminqty",
-                "t1.orderaddqty_auxunit",
-                "t1.orderaddqty",
-                "t1.spec",
-                "t1.standards",
-                "t1.delistingstatus",
-                "t1.marketprice",
-                "t1.packageqty",
-                "t1.iscustomsize",
-                "t1.widthschemeid",
-                "t1.lengthschemeid",
-                "t1.materialschemeid",
-                "t1.colorschemeid",
-                "t1.cheekschemeid",
-                "t1.sa_customschemeid",
-                "t1.custamount",
-                "t1.isonsale").setTableAlias("t1");
+        QuerySQL itemquery = SQLFactory.createQuerySQL(this, "plm_item", "itemid", "itemno", "itemname", "model", "batchcontrol", "orderminqty_auxunit", "orderminqty", "orderaddqty_auxunit", "orderaddqty", "spec", "standards", "delistingstatus", "marketprice", "packageqty", "iscustomsize", "widthschemeid", "lengthschemeid", "materialschemeid", "colorschemeid", "cheekschemeid", "sa_customschemeid", "custamount", "isonsale").setTableAlias("t1");
         itemquery.addJoinTable(JOINTYPE.left, "plm_unitgroup", "t2", "t1.unitgroupid=t2.unitgroupid ", "conversionrate");
         itemquery.addJoinTable(JOINTYPE.left, "plm_itemextend", "t3", "t1.itemid=t3.itemid ", "material", "erpitemno", "erpitemname", "specalnote", "prodline", "device");
         itemquery.addJoinTable(JOINTYPE.left, "plm_unit", "t4", "t1.unitid=t4.unitid ");
@@ -1112,19 +1072,19 @@ public class OrderItems extends Controller {
         Rows rows = itemquery.query();
 
         ArrayList<Long> ids = rows.toArrayList("itemid", new ArrayList<>());
-//        //查询附件
-//        RowsMap attinfoRowsMap = Attachment.get(this, "plm_item", ids);
+        //查询附件
+        RowsMap attinfoRowsMap = Attachment.get(this, "plm_item", ids);
         //商品领域
-        //   RowsMap tradefieldRowsMap = Item.getTradefieldRowsMap(this, ids);
+        RowsMap tradefieldRowsMap = Item.getTradefieldRowsMap(this, ids);
         //品牌
-        // RowsMap brandRowsMap = Brand.getBrandRowsMap(this, ids);
+        RowsMap brandRowsMap = Brand.getBrandRowsMap(this, ids);
         //价格
         HashMap<Long, ItemPrice> itemPriceRowsMap = ItemPrice.getItemPrice(this, order_sys_enterpriseid, ids);
 
         for (Row row : rows) {
-//            row.put("attinfos", attinfoRowsMap.getOrDefault(row.getString("itemid"), new Rows()));
-//            row.put("tradefield", tradefieldRowsMap.getOrDefault(row.getString("itemid"), new Rows()));
-//            row.put("brand", brandRowsMap.getOrDefault(row.getString("itemid"), new Rows()));
+            row.put("attinfos", attinfoRowsMap.getOrDefault(row.getString("itemid"), new Rows()));
+            row.put("tradefield", tradefieldRowsMap.getOrDefault(row.getString("itemid"), new Rows()));
+            row.put("brand", brandRowsMap.getOrDefault(row.getString("itemid"), new Rows()));
             if (itemPriceRowsMap.containsKey(row.getLong("itemid"))) {
                 row.put("price", itemPriceRowsMap.get(row.getLong("itemid")).getPrice());
             } else {