Browse Source

促销方案套餐活动功能(待测试)

hu 1 year ago
parent
commit
8de5916d1f

+ 5 - 0
src/custom/restcontroller/R.java

@@ -5558,6 +5558,11 @@ public class R {
         public static class v1 {
         }
     }
+
+    public static class ID2024062715055803 {
+        public static class v1 {
+        }
+    }
 }
 
 

+ 5 - 0
src/custom/restcontroller/sale/promotion/promotion.java

@@ -136,6 +136,11 @@ public class promotion extends Controller {
                 where.append("or t2.spec like'%").append(whereObject.getString("condition")).append("%' ");
                 where.append(")");
             }
+            if (whereObject.containsKey("packagetypemx") && !"".equals(whereObject.getString("packagetypemx"))) {
+                where.append(" and(");
+                where.append("t1.packagetypemx ='").append(whereObject.getString("packagetypemx")).append("' ");
+                where.append(")");
+            }
         }
         Long sa_promotionid = content.getLong("sa_promotionid");
 //        Long sa_promotion_itemgroupid = content.getLong("sa_promotion_itemgroupid");

+ 19 - 0
src/custom/restcontroller/webmanage/sale/order/OrderItems.java

@@ -412,6 +412,10 @@ public class OrderItems extends Controller {
 
 
         JSONArray sa_orderitemsids = content.getJSONArray("sa_orderitemsids");
+        String packagetypemxsql ="select t1.sa_orderitemsid from sa_orderitems t1 inner join sa_promotion_items t2 on t1.sa_promotion_itemsid=t2.sa_promotion_itemsid and t1.siteid=t2.siteid where t1.siteid='"+siteid+"' and  t1.sa_orderid in(select sa_orderid from sa_orderitems where sa_orderitemsid in"+sa_orderitemsids.toJSONString()+") and t2.packagetypemx in(select distinct t2.packagetypemx from sa_orderitems t1 inner join sa_promotion_items t2 on t1.sa_promotion_itemsid=t2.sa_promotion_itemsid and t1.siteid=t2.siteid where t1.siteid='"+siteid+"' and t1.sa_orderitemsid in"+sa_orderitemsids.toJSONString()+" and ifnull(t2.packagetypemx,'')!='')";
+        packagetypemxsql = packagetypemxsql.replace("[", "(").replace("]", ")");
+        Rows packagetypemxrows = dbConnect.runSqlQuery(packagetypemxsql);
+        sa_orderitemsids.addAll(packagetypemxrows.toJsonArray("sa_orderitemsid"));
         SQLFactory sqlFactory = new SQLFactory(this, "订单商品明细_删除");
         sqlFactory.addParameter("siteid", siteid);
         sqlFactory.addParameter("sa_orderid", sa_orderid);
@@ -1245,6 +1249,21 @@ public class OrderItems extends Controller {
         return getSucReturnObject().setData(rows).toString();
     }
 
+    @API(title = "判断订单中是否存在某个套餐", apiversion = R.ID2024062715055803.v1.class)
+    @CACHEING
+    public String jundgePackagetypemx() throws YosException {
+        String packagetypemx =content.getString("packagetypemx");
+        long sa_orderid=content.getLong("sa_orderid");
+        Rows rows =dbConnect.runSqlQuery("select t1.sa_orderitemsid from sa_orderitems t1 inner join sa_promotion_items t2 on t1.sa_promotion_itemsid=t2.sa_promotion_itemsid and t1.siteid=t2.siteid where t1.siteid='"+siteid+"' and t1.sa_orderid="+sa_orderid+" and t2.packagetypemx="+packagetypemx);
+        if(rows.isNotEmpty()){
+            return getSucReturnObject().setData(true).toString();
+        }else {
+            return getSucReturnObject().setData(false).toString();
+        }
+
+    }
+
+
     //获取非工具数据
     public String getOrderItemsList(Long sa_orderid, String tradefield, Long sys_enterpriseid, Long sa_brandid) throws YosException {
         StringBuffer where = new StringBuffer(" 1=1 ");

+ 1 - 0
src/custom/restcontroller/webmanage/sale/promotion/SQL/促销方案列表查询.sql

@@ -4,6 +4,7 @@ SELECT
 	t1.promname,
 	t1.remarks,
 	t1.type,
+    t1.packagetype,
 	t1.sa_accountclassid,
 	t1.sa_brandid,
 	t1.tradefield,

+ 2 - 2
src/custom/restcontroller/webmanage/sale/promotion/SQL/促销方案商品新增.sql

@@ -1,2 +1,2 @@
-insert into sa_promotion_items (siteid, sa_promotion_itemsid,sa_promotionid,sa_promotion_itemgroupid,groupqty,itemid, orderaddqty,orderminqty,islimit,signaturecode,itemno)
-values ($siteid$, $sa_promotion_itemsid$,$sa_promotionid$,$sa_promotion_itemgroupid$, $groupqty$, $itemid$, $orderaddqty$, $orderminqty$, $islimit$,$signaturecode$,$itemno$);
+insert into sa_promotion_items (siteid, sa_promotion_itemsid,sa_promotionid,sa_promotion_itemgroupid,groupqty,itemid, orderaddqty,orderminqty,islimit,signaturecode,itemno,packagetypemx)
+values ($siteid$, $sa_promotion_itemsid$,$sa_promotionid$,$sa_promotion_itemgroupid$, $groupqty$, $itemid$, $orderaddqty$, $orderminqty$, $islimit$,$signaturecode$,$itemno$,$packagetypemx$);

+ 2 - 1
src/custom/restcontroller/webmanage/sale/promotion/SQL/促销方案商品更新.sql

@@ -5,5 +5,6 @@ SET
     orderaddqty= $orderaddqty$,
     orderminqty= $orderminqty$,
     islimit= $islimit$,
-    signaturecode=$signaturecode$
+    signaturecode=$signaturecode$,
+    packagetypemx=$packagetypemx$
 WHERE sa_promotion_itemsid = $sa_promotion_itemsid$ and siteid=$siteid$

+ 1 - 0
src/custom/restcontroller/webmanage/sale/promotion/SQL/促销方案商品查询.sql

@@ -9,6 +9,7 @@ SELECT t1.sa_promotion_itemsid,
        t1.islimit,
        t1.isonsale,
        t1.itemid,
+       t1.packagetypemx,
        t2.itemno,
        t2.itemname,
        t2.spec,

+ 2 - 2
src/custom/restcontroller/webmanage/sale/promotion/SQL/促销方案新增.sql

@@ -1,8 +1,8 @@
 insert into sa_promotion (siteid, sa_promotionid, createuserid, createby, createdate, promnum, changeuserid, changeby,
                           changedate, promname, remarks, type, sa_accountclassid,
                           sa_brandid, tradefield, status, orderminqty, orderaddqty, orderminamount, begdate, enddate,
-                          sa_openpromotionid, openamount, isrelevancepromotion, authmethod,associationaccountclassid,associationamount,rebateratio)
+                          sa_openpromotionid, openamount, isrelevancepromotion, authmethod,associationaccountclassid,associationamount,rebateratio,packagetype)
 values ($siteid$, $sa_promotionid$, $userid$, $username$, CURRENT_TIME, $promnum$, $userid$, $username$, CURRENT_TIME,
         $promname$, $remarks$, $type$, $sa_accountclassid$,
         $sa_brandid$, $tradefield$, '新建', $orderminqty$, $orderaddqty$, $orderminamount$, $begdate$, $enddate$,
-        $sa_openpromotionid$, $openamount$, $isrelevancepromotion$, $authmethod$,$associationaccountclassid$,$associationamount$,$rebateratio$);
+        $sa_openpromotionid$, $openamount$, $isrelevancepromotion$, $authmethod$,$associationaccountclassid$,$associationamount$,$rebateratio$,$packagetype$);

+ 2 - 1
src/custom/restcontroller/webmanage/sale/promotion/SQL/促销方案更新.sql

@@ -20,6 +20,7 @@ SET changeuserid=$userid$,
     associationaccountclassid=$associationaccountclassid$,
     associationamount=$associationamount$,
     rebateratio=$rebateratio$,
-    isauth=$isauth$
+    isauth=$isauth$,
+    packagetype=$packagetype$
 WHERE sa_promotionid = $sa_promotionid$
   and siteid = $siteid$

+ 1 - 0
src/custom/restcontroller/webmanage/sale/promotion/SQL/促销方案详情查询.sql

@@ -3,6 +3,7 @@ SELECT t1.promnum,
        t1.promname,
        t1.remarks,
        t1.type,
+       t1.packagetype,
        t1.sa_accountclassid,
        t1.sa_brandid,
        t1.tradefield,

+ 26 - 0
src/custom/restcontroller/webmanage/sale/promotion/promotion.java

@@ -58,6 +58,7 @@ public class promotion extends Controller {
         BigDecimal associationamount = content.getBigDecimalValue("associationamount");
         Long associationaccountclassid = content.getLongValue("associationaccountclassid");
         BigDecimal rebateratio = content.getBigDecimalValue("rebateratio");
+        String packagetype = content.getStringValue("packagetype");
         SQLFactory sqlFactory = new SQLFactory(this, "促销方案新增");
 
         if (sa_promotionid <= 0 || dbConnect
@@ -100,6 +101,7 @@ public class promotion extends Controller {
         sqlFactory.addParameter("sa_accountclassid", sa_accountclassid);
         sqlFactory.addParameter("sa_brandid", sa_brandid);
         sqlFactory.addParameter("type", type);
+        sqlFactory.addParameter("packagetype", packagetype);
         sqlFactory.addParameter("tradefield", tradefield.toJSONString());
         sqlFactory.addParameter("orderminqty", orderminqty);
         sqlFactory.addParameter("orderaddqty", orderaddqty);
@@ -306,6 +308,7 @@ public class promotion extends Controller {
         sqlFactory.addParameter("associationamount", 0);
         sqlFactory.addParameter("associationaccountclassid", 0);
         sqlFactory.addParameter("rebateratio", 0);
+        sqlFactory.addParameter("packagetype", row.getString("packagetype"));
         // 备注说明
         sqlFactory.addParameter("remarks", row.getString("remarks"));
         sqlList.add(sqlFactory.getSQL());
@@ -329,6 +332,7 @@ public class promotion extends Controller {
             sqlFactory.addParameter("orderminqty", promotionitemsRow.getBigDecimal("orderminqty"));
             sqlFactory.addParameter("islimit", promotionitemsRow.getLong("islimit"));
             sqlFactory.addParameter("signaturecode", promotionitemsRow.getString("signaturecode"));
+            sqlFactory.addParameter("packagetypemx", promotionitemsRow.getString("packagetypemx"));
             sqlFactory.addParameter("itemno", promotionitemsRow.getString("itemno"));
             sqlList.add(sqlFactory.getSQL());
 
@@ -544,6 +548,23 @@ public class promotion extends Controller {
                     return getErrReturnObject().setErrMsg("返利促销授权的经销商必须都为限购").toString();
                 }
             }
+            if (rows.get(0).getString("type").equals("套餐活动")) {
+                if (StringUtils.isBlank(rows.get(0).getString("packagetype"))) {
+                    return getErrReturnObject().setErrMsg("套餐活动的方案必须选择套餐类型").toString();
+                }
+                Rows promotionItemsRows = dbConnect.runSqlQuery("select ifnull(t1.packagetypemx,'kong') packagetypemx,count(1) count,min(t2.itemno) itemno from sa_promotion_items t1 inner join plm_item t2 on t1.itemid=t2.itemid and t1.siteid=t2.siteid where t1.siteid='"+siteid+"' and t1.sa_promotionid="+sa_promotionid+" group by ifnull(t1.packagetypemx,'kong')");
+                for(Row row : promotionItemsRows){
+                    if(row.getString("packagetypemx").equals("kong")){
+                        return getErrReturnObject().setErrMsg("品号:"+row.getString("itemno")+"未设置套餐分类,无法审核").toString();
+                    }
+                }
+                for(Row row : promotionItemsRows){
+                    if(row.getLong("count")>100){
+                        return getErrReturnObject().setErrMsg("套餐名:"+row.getString("packagetypemx")+" 商品添加数量已超上限(同一套餐最多只能添加100个商品)").toString();
+                    }
+                }
+
+            }
             for (Row row:rowsdetails) {
                 if(row.getBigDecimal("orderminqty").compareTo(BigDecimal.ZERO)==0 || row.getBigDecimal("orderaddqty").compareTo(BigDecimal.ZERO)==0){
                     return getErrReturnObject().setErrMsg("该促销方案【"+row.getString("itemno")+"】商品起订量或增量为0,无法审核").toString();
@@ -620,6 +641,11 @@ public class promotion extends Controller {
                     return getErrReturnObject().setErrMsg("单号为:【" + row.getString("promnum") + "】的促销方案为非发布状态,无法反发布")
                             .toString();
                 }
+                Rows orderRows = dbConnect.runSqlQuery("select * from sa_order  where sa_promotionid="+sa_promotionid+" and siteid='"+siteid+"'");
+                if(orderRows.isNotEmpty()){
+                    return getErrReturnObject().setErrMsg("该方案已存在订单,无法取消发布")
+                            .toString();
+                }
             }
 
         }

+ 4 - 0
src/custom/restcontroller/webmanage/sale/promotion/promotionItems.java

@@ -160,6 +160,8 @@ public class promotionItems extends Controller {
                 }
                 saleFactory.addParameter("islimit", iteminfo.getLong("islimit"));
                 saleFactory.addParameter("signaturecode", iteminfo.getStringValue("signaturecode"));
+                saleFactory.addParameter("packagetypemx", iteminfo.getStringValue("packagetypemx"));
+
                 sqlList.add(saleFactory.getSQL());
                 Rows rows = itempricerowsMap.get(iteminfo.getLong("itemid"));
                 if (!rows.isEmpty()) {
@@ -190,6 +192,8 @@ public class promotionItems extends Controller {
                 saleFactory.addParameter("islimit", iteminfo.getLong("islimit"));
                 saleFactory.addParameter("isonsale", iteminfo.getBooleanValue("isonsale"));
                 saleFactory.addParameter("signaturecode", iteminfo.getStringValue("signaturecode"));
+                saleFactory.addParameter("packagetypemx", iteminfo.getStringValue("packagetypemx"));
+
                 sqlList.add(saleFactory.getSQL());
             }