Browse Source

定制费用方案

eganwu 2 years ago
parent
commit
e35ce612ac

BIN
lib/yos.core-2.3.1-sources.jar


BIN
lib/yos.core-2.3.1.jar


+ 0 - 57
src/custom/beans/order/OrderCost.java

@@ -1,57 +0,0 @@
-package beans.order;
-
-import common.BaseClass;
-import common.Controller;
-import common.YosException;
-import common.data.*;
-
-import java.util.ArrayList;
-
-/**
- * 销售订单费用明细
- */
-public class OrderCost extends BaseClass {
-
-    //根据商品方案计算订单明细费用
-    //单位费用:数值(具体一个方案生成的一个单位费用)
-    //订单类型:类型(可多个,具体在哪些订单类型中适用)
-    //计算方式:是否订单内组合计算(若组合计算则在订单中自动汇总同方案商品一起计算)、是否累加计算(若累加计算则订单内满足时则生成费用)
-    //费用分摊:分摊方式(订货数量/订货金额,在组合计算方式下,在订单中同费用方案商品明细行中按比例分摊)
-    //计算规则:商品字段(订货数量、订货重量、订货金额)、满足条件(数值,大于等于某个值时产生费用)
-    //扣款方式:是否独立扣款(独立扣款则在生成订单收支凭证时费用,若生成独立的支出凭证则需再选择支出分类)
-    //退款规则:是否可退款
-    public static void calculateCostAmount(Controller controller, Long sa_orderid) throws YosException {
-        //查询商品是否存在方案
-        Rows rows = queryDataFunction(controller, sa_orderid, "OrderFeeCalculatePlan1");
-        if (rows.isEmpty()) {
-            return;
-        }
-
-        RowsMap dfRowsMap = rows.toRowsMap("sys_datafunctionid");
-
-
-        Row OrderRow = Order.getOrderRows(controller, sa_orderid).get(0);
-        //组合,不累加,分摊
-        //组合,累加,分摊
-        //不组合,不累加
-        //不组合,累加
-
-
-        return;
-    }
-
-    //查询订单的商品方案
-    public static Rows queryDataFunction(Controller controller, Long sa_orderid, String classname) throws YosException {
-        QuerySQL querySQL = SQLFactory.createQuerySQL(controller, "sa_orderitems",
-                "sa_orderid", "sa_orderitemsid", "itemid");
-        querySQL.addJoinTable(JOINTYPE.inner, "sys_datafunction_bind", "t2", "t2.ownerid=t1.itemid and  t2.ownertable='plm_item'",
-                "sys_datafunctionid");
-        querySQL.addJoinTable(JOINTYPE.inner, "sys_datafunction", "t3", "sys_datafunctionid=t2.sys_datafunctionid",
-                "functionname", "classname");
-        querySQL.setWhere("t1.sa_orderid", sa_orderid);
-        querySQL.setWhere("t3.classname", classname);
-        querySQL.setTableAlias("t1");
-        return querySQL.query();
-    }
-
-}

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

@@ -5398,6 +5398,14 @@ public class R {
         public static class v1 {
         }
     }
+    public static class ID20231212110202 {
+        public static class v1 {
+        }
+    }
+    public static class ID20231212111202 {
+        public static class v1 {
+        }
+    }
 }
 
 

+ 55 - 26
src/custom/restcontroller/webmanage/sale/order/OrderFeeCostPlan.java

@@ -8,12 +8,13 @@ import common.YosException;
 import common.annotation.API;
 import common.data.*;
 import io.swagger.annotations.Api;
+import org.apache.camel.json.simple.Jsonable;
 import restcontroller.R;
 
 import java.util.ArrayList;
 
 /**
- * 订单费用计算方案
+ * 定制费用方案
  */
 public class OrderFeeCostPlan extends Controller {
     /**
@@ -25,55 +26,83 @@ public class OrderFeeCostPlan extends Controller {
         super(content);
     }
 
-    @API(title = "查询可选定制方案列表", apiversion = R.ID20231208133902.v1.class)
+    @API(title = "定制费用方案-列表", apiversion = R.ID20231208133902.v1.class)
     public String customPlanList() throws YosException {
         QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sys_datafunction",
-                "sys_datafunctionid", "functionname", "remarks", "isused", "createdate");
+                "sys_datafunctionid", "functionname", "remarks", "createdate");
         //创建人写死admin
         querySQL.addQueryFields("createby", "\'admin\'");
         querySQL.setWhere("t1.functionclass", "ordercost");
+        querySQL.setWhere("t1.sys_datafunctionid in (SELECT sys_datafunctionid from sys_datafunction_params WHERE param='siteid' and value='" + siteid + "')");
         querySQL.setPage(pageSize, pageNumber).setOrderBy(pageSorting).setTableAlias("t1");
         Rows rows = querySQL.query();
-
         return getSucReturnObject().setData(rows).toString();
     }
 
-    @API(title = "绑定定制方案", apiversion = R.ID20231208134002.v1.class)
+    @API(title = "定制费用方案-绑定", apiversion = R.ID20231208134002.v1.class)
     public String insertOrUpdatePlan() throws YosException {
 
         Long sys_datafunctionid = content.getLongValue("sys_datafunctionid");
-        Long ownerid = content.getLongValue("ownerid");
-        String ownertable = content.getStringValue("ownertable");
-
-        Rows rows = dbConnect.runSqlQuery("SELECT * from sys_datafunction_bind WHERE ownerid=" + ownerid + " and ownertable='" + ownertable + "'");
-        if (rows.isEmpty()) {
-            InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sys_datafunction_bind");
-            insertSQL.setUniqueid(createTableID("sys_datafunction_bind"));
-            insertSQL.setValue("ownerid", ownerid);
-            insertSQL.setValue("ownertable", ownertable);
-            insertSQL.setValue("sys_datafunctionid", sys_datafunctionid);
-            insertSQL.insert();
-        } else {
-            UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sys_datafunction_bind");
-            updateSQL.setUniqueid(rows.get(0).getLong("sys_datafunction_bindid"));
-            updateSQL.setValue("sys_datafunctionid", sys_datafunctionid);
-            updateSQL.update();
+        JSONArray items = content.getJSONArray("items");
+        ArrayList<String> sqlList = new ArrayList<>();
+        for (Object obj : items) {
+            JSONObject item = (JSONObject) obj;
+            Long ownerid = item.getLongValue("ownerid");
+            String ownertable = item.getStringValue("ownertable");
+            Rows rows = dbConnect.runSqlQuery("SELECT * from sys_datafunction_bind WHERE ownerid=" + ownerid + " and ownertable='" + ownertable + "'");
+            if (rows.isEmpty()) {
+                InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sys_datafunction_bind");
+                insertSQL.setUniqueid(createTableID("sys_datafunction_bind"));
+                insertSQL.setValue("ownerid", ownerid);
+                insertSQL.setValue("ownertable", ownertable);
+                insertSQL.setValue("sys_datafunctionid", sys_datafunctionid);
+                sqlList.add(insertSQL.getSQL());
+            } else {
+                UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sys_datafunction_bind");
+                updateSQL.setUniqueid(rows.get(0).getLong("sys_datafunction_bindid"));
+                updateSQL.setValue("sys_datafunctionid", sys_datafunctionid);
+                sqlList.add(updateSQL.getSQL());
+            }
         }
+        dbConnect.runSqlUpdate(sqlList);
 
 
         return getSucReturnObject().toString();
     }
 
-    @API(title = "删除商品定制方案", apiversion = R.ID20231208134102.v1.class)
+    @API(title = "定制费用方案-商品列表", apiversion = R.ID20231212110202.v1.class)
+    public String bindItemList() throws YosException {
+        Long sys_datafunctionid = content.getLongValue("sys_datafunctionid");
+
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sys_datafunction_bind");
+        querySQL.addJoinTable(JOINTYPE.inner, "plm_item", "t2", "t1.ownerid=t2.itemid and t1.ownertable='plm_item'"
+                , "itemname");
+        //创建人写死admin
+        querySQL.setWhere("t1.sys_datafunctionid", sys_datafunctionid);
+        querySQL.setPage(pageSize, pageNumber).setOrderBy(pageSorting).setTableAlias("t1");
+        Rows rows = querySQL.query();
+        return getSucReturnObject().setData(rows).toString();
+    }
+
+    @API(title = "定制费用方案-参数列表", apiversion = R.ID20231212111202.v1.class)
+    public String queryParam() throws YosException {
+        Long sys_datafunctionid = content.getLongValue("sys_datafunctionid");
+        Rows paramRows = dbConnect.runSqlQuery("SELECT * from sys_datafunction_params WHERE param!='siteid' and sys_datafunctionid=" + sys_datafunctionid);
+        return getSucReturnObject().setData(paramRows).toString();
+    }
+
+
+    @API(title = "定制费用方案-删除绑定商品", apiversion = R.ID20231208134102.v1.class)
     public String delete() throws YosException {
-        Long sys_datafunction_bindid = content.getLongValue("sys_datafunction_bindid");
+        JSONArray sys_datafunction_bindids = content.getJSONArray("sys_datafunction_bindids");
+
         DeleteSQL deleteSQL = SQLFactory.createDeleteSQL(this, "sys_datafunction_bind");
-        deleteSQL.setUniqueid(sys_datafunction_bindid);
+        deleteSQL.setWhere("sys_datafunction_bindid", sys_datafunction_bindids.toArray());
         deleteSQL.delete();
         return getSucReturnObject().toString();
     }
 
-    @API(title = "商品定制方案列表", apiversion = R.ID20231208134202.v1.class)
+    @API(title = "商品定制费用方案详情", apiversion = R.ID20231208134202.v1.class)
     public String list() throws YosException {
         Long ownerid = content.getLongValue("ownerid");
         String ownertable = content.getStringValue("ownertable");
@@ -101,7 +130,7 @@ public class OrderFeeCostPlan extends Controller {
     }
 
 
-    @API(title = "修改参数值", apiversion = R.ID20231211141802.v1.class)
+    @API(title = "定制费用方案-调整参数值", apiversion = R.ID20231211141802.v1.class)
     public String modifyFunctionParams() throws YosException {
 
         JSONArray items = content.getJSONArray("items");

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

@@ -4,11 +4,8 @@ import beans.accountbalance.Accountbalance;
 import beans.accountbalance.CashbillEntity;
 import beans.brand.Brand;
 import beans.datacontrllog.DataContrlLog;
-import beans.dataextend.DataExtend;
-import beans.datateam.DataTeam;
 import beans.enterprise.Enterprise;
 import beans.itemprice.ItemPrice;
-import beans.order.OrderCost;
 import beans.parameter.Parameter;
 import beans.uploaderpdata.UploadDataToERP;
 import com.alibaba.fastjson.JSONArray;
@@ -20,25 +17,15 @@ import common.annotation.API;
 import common.annotation.CACHEING;
 import common.annotation.CACHEING_CLEAN;
 import common.data.*;
-import function.OrderFeeCalculatePlan1;
-import org.apache.poi.ss.usermodel.CellStyle;
-import org.apache.poi.ss.usermodel.DataFormat;
-import org.apache.poi.xssf.usermodel.XSSFCellStyle;
-import org.apache.poi.xssf.usermodel.XSSFSheet;
-import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import restcontroller.R;
 import restcontroller.webmanage.sale.aftersalesmag.twriteoffbill_orderchange;
 import restcontroller.webmanage.sale.rebate.Rebate;
-import restcontroller.webmanage.sale.toolbill.ToolBilItem;
 import restcontroller.webmanage.sale.toolbill.ToolBill;
 import utility.ERPDocking;
-import utility.tools.WebRequest;
 
 import java.io.IOException;
 import java.math.BigDecimal;
-import java.text.SimpleDateFormat;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.HashMap;
 
 import static beans.order.Order.*;
@@ -192,12 +179,16 @@ public class OrderItems extends Controller {
             return getSucReturnObject().setData(rows).toString();
         }
 
-//        //更新订单明细费用
-//        OrderCost.calculateCostAmount(this, sa_orderid);
-
-//        DataFunction df = DataFunction.get(this, "PLan1");
-//        df.addParameter("sa_orderid", sa_orderid);
-//        df.action();
+        //查询商品费用方案方法
+        SQLFactory sqlFactory = new SQLFactory(this, "查询商品费用方案方法");
+        sqlFactory.addParameter("siteid", siteid);
+        sqlFactory.addParameter("sa_orderid", sa_orderid);
+        Rows rows = dbConnect.runSqlQuery(sqlFactory);
+        for (Row row : rows) {
+            DataFunction df = DataFunction.get(this, row.getString("functionname"));
+            df.addParameter("sa_orderid", sa_orderid);
+            df.action();
+        }
 
 
         return getSucReturnObject().toString();

+ 6 - 0
src/custom/restcontroller/webmanage/sale/order/SQL/查询商品费用方案方法.sql

@@ -0,0 +1,6 @@
+SELECT DISTINCT t3.functionname
+from sa_orderitems t1
+         INNER JOIN sys_datafunction_bind t2 ON t2.ownerid = t1.itemid and t2.ownertable = 'plm_item'
+         INNER JOIN sys_datafunction t3 ON t3.sys_datafunctionid = t2.sys_datafunctionid
+WHERE t1.sa_orderid = $sa_orderid$
+  and t1.siteid = $siteid$