Browse Source

商品组查询优化

shenjingwei 8 months ago
parent
commit
7d07661a7a
1 changed files with 8 additions and 37 deletions
  1. 8 37
      src/custom/restcontroller/sale/itemgroup/itemgroup.java

+ 8 - 37
src/custom/restcontroller/sale/itemgroup/itemgroup.java

@@ -3,7 +3,6 @@ package restcontroller.sale.itemgroup;
 import beans.Item.Item;
 import beans.datatag.DataTag;
 import beans.enterprise.Enterprise;
-import beans.itemclass.ItemClass;
 import beans.itemgroup.Itemgroup;
 import beans.itemprice.ItemPrice;
 import beans.parameter.Parameter;
@@ -59,20 +58,14 @@ public class itemgroup extends Controller {
         double pricegrade = 1;
         try {
             pricegrade = Parameter.getInteger(siteid, "defaultlevelprice");//价格等级
-        } catch (Exception e) {
-            pricegrade = 1;
+        } catch (Exception ignored) {
         }
         boolean saleclassauth = false;//是否需要经营授权
         if (sys_enterpriseid > 0) {
             Row enterpriseRow = Enterprise.getEnterprise(this, sys_enterpriseid);
-            if (!enterpriseRow.isEmpty()) {
-                saleclassauth = enterpriseRow.getBoolean("saleclassauth");
-            }
-
+            saleclassauth = enterpriseRow.isEmpty() ? saleclassauth : enterpriseRow.getBoolean("saleclassauth");
             Enterprise.EnterpriseGrade enterpriseGrade = Enterprise.getEnterpriseGrade(this, sys_enterpriseid);
-            if (enterpriseGrade != null) {
-                pricegrade = enterpriseGrade.getPricegrade();
-            }
+            pricegrade = enterpriseGrade == null ? pricegrade : enterpriseGrade.getPricegrade();
         }
         pricegrade = pricegrade <= 0 ? 1 : pricegrade;
 
@@ -110,39 +103,17 @@ public class itemgroup extends Controller {
         itemGroupQuery.addJoinTable(JOINTYPE.left, "plm_item", "t2", "t1.itemno = t2.itemno AND t1.siteid = t2.siteid", "itemid");
         itemGroupQuery.addJoinTable(JOINTYPE.left, "sa_brand", "t3", "t3.sa_brandid = t1.sa_brandid AND t3.siteid = t1.siteid", "brandname");
         itemGroupQuery.addJoinTable(JOINTYPE.left, "plm_unit", "t6", "t6.unitid = t2.unitid AND t6.siteid = t2.siteid", "unitname");
+        if (saleclassauth) {
+            //如果企业有营销授权,则查询授权商品组
+            itemGroupQuery.addJoinTable(JOINTYPE.inner, "sys_enterprise_itemgroupauth_view", "t7", "t7.sa_itemgroupid = t1.sa_itemgroupid and t7.sys_enterpriseid=" + sys_enterpriseid);
+        }
+
         itemGroupQuery.setSiteid(siteid);
         itemGroupQuery.setCondition("t2.groupname", "t1.groupnum", "t2.model");
         itemGroupQuery.setWhere("t1.isonsale=1");
         itemGroupQuery.setWhere("t2.ismodule", content.getLongValue("ismodule"));
         itemGroupQuery.setWhere("t1.sa_brandid", brandids.toArray());
         itemGroupQuery.setWhere(where);
-        if (saleclassauth) {
-
-            ArrayList<Long> itemclassList = new ArrayList<Long>();//授权的商品类别,包含下级商品类别,如果不需要授权则为空
-            ArrayList<Long> itemList = new ArrayList<Long>();//授权的商品
-
-            Rows saleclassRows = dbConnect.runSqlQuery("SELECT itemclassid,itemid from sys_enterprise_saleclass WHERE sys_enterpriseid = " + sys_enterpriseid + " and siteid='" + siteid + "'");
-            ArrayList<Long> auth_itemclassList = saleclassRows.toArrayList("itemclassid", new ArrayList<>());
-
-            itemclassList.addAll(auth_itemclassList);
-            itemclassList.addAll(ItemClass.getSubItemClassIds(this, auth_itemclassList));
-
-            itemList.addAll(saleclassRows.toArrayList("itemid", new ArrayList<>()));
-
-            if (!content_where.getStringValue("itemclassid").isEmpty()) {
-                long itemclassid = content_where.getLong("itemclassid");
-                ArrayList<Long> list = ItemClass.getSubItemClassIds(this, itemclassid);
-                list.add(itemclassid);
-                itemclassList.removeIf(id -> !list.contains(id));
-            }
-
-            String sql = "select distinct t1.sa_itemgroupid from sa_itemgroup t1 inner join  sa_itemgroupmx t2 on t1.sa_itemgroupid=t2.sa_itemgroupid and t1.siteid=t2.siteid" +
-                    "  LEFT JOIN sa_itemsaleclass t4 ON t2.itemid = t4.itemid AND t2.siteid = t4.siteid and t4.classtype='营销'" +
-                    "  where t1.siteid='" + siteid + "' and (t2.itemid in " + itemList + " or t4.itemclassid in " + itemclassList + ")";
-            sql = sql.replace("[", "(").replace("]", ")");
-
-            itemGroupQuery.setWhere("sa_itemgroupid", dbConnect.runSqlQuery(sql).toArrayList("sa_itemgroupid"));
-        }
         itemGroupQuery.setPage(pageSize, pageNumber);
         Rows itemGroupRows = itemGroupQuery.query();