eganwu hai 1 ano
pai
achega
91e2a2d401

+ 45 - 25
src/custom/restcontroller/webmanage/saletool/custorder/CustOrder.java

@@ -1,15 +1,16 @@
 package restcontroller.webmanage.saletool.custorder;
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import common.Controller;
 import common.YosException;
 import common.annotation.API;
-import common.data.InsertSQL;
-import common.data.Row;
-import common.data.Rows;
-import common.data.SQLFactory;
+import common.data.*;
 import restcontroller.R;
 
+import java.math.BigDecimal;
+import java.util.ArrayList;
+
 
 /**
  * C端订单
@@ -29,36 +30,55 @@ public class CustOrder extends Controller {
     public String insertOrUpdate() throws YosException {
 
         Long sa_custorderid = content.getLongValue("sa_custorderid");
-        Long sa_fadid = content.getLongValue("sa_fadid");
+        JSONArray items = content.getJSONArray("items");
 
-        Rows fadRows = dbConnect.runSqlQuery("SELECT * from sa_fad WHERE sa_fadid=" + sa_fadid + " and siteid='" + siteid + "'");
-        if (fadRows.isEmpty()) {
-            return getErrReturnObject().setErrMsg("商品不存在").toString();
-        }
-        Row fadRow = fadRows.get(0);
+        ArrayList<String> sqlList = new ArrayList<>();
 
         if (sa_custorderid <= 0) {
             sa_custorderid = createTableID("sa_custorder");
-            InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sa_custorder");
-            insertSQL.setUniqueid(sa_custorderid);
-            insertSQL.setSiteid(siteid);
-            insertSQL.setValue("", "");
-            insertSQL.insert();
+            InsertSQL insertSQL = CustOrderHelper.getOrderInsertSQL(this, sa_custorderid);
+            sqlList.add(insertSQL.getSQL());
+            content.put("sa_custorderid", sa_custorderid);
+        }
 
+        ArrayList<Long> sa_fadids = new ArrayList<>();
+
+        for (Object object : items) {
+            JSONObject jsonObject = (JSONObject) object;
+            Long sa_fadid = jsonObject.getLongValue("sa_fadid");
+            sa_fadids.add(sa_fadid);
+            Rows rows = dbConnect.runSqlQuery("SELECT * from sa_custorderitems WHERE sa_custorderid=" + sa_custorderid + " and sa_fadid=" + sa_fadid + " and siteid='" + siteid + "'");
+            if (rows.isNotEmpty()) {
+                UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_custorderitems");
+                updateSQL.setSiteid(siteid);
+                updateSQL.setUniqueid(rows.get(0).getLong("sa_custorderitemsid"));
+                updateSQL.setValue("qty", jsonObject.getBigDecimalValue("qty"));
+                updateSQL.setValue("amount", jsonObject.getBigDecimalValue("qty").multiply(rows.get(0).getBigDecimal("price")));
+                sqlList.add(updateSQL.getSQL());
+            } else {
+                InsertSQL itemsInsertSQL = CustOrderHelper.getOrderItemsInsertSQL(this, sa_custorderid, jsonObject);
+                sqlList.add(itemsInsertSQL.getSQL());
+            }
+        }
 
-            insertSQL = SQLFactory.createInsertSQL(this, "sa_custorderitems");
-            insertSQL.setUniqueid(createTableID("sa_custorderitems"));
-            insertSQL.setSiteid(siteid);
-            insertSQL.setValue("sa_custorderid", sa_custorderid);
-            insertSQL.setValue("sa_fadid", content.getLongValue("sa_fadid"));
-            insertSQL.setValue("pricetype", content.getLongValue("sa_fadid"));
-            insertSQL.insert();
+        DeleteSQL deleteSQL = SQLFactory.createDeleteSQL(this, "sa_custorderitems");
+        deleteSQL.setSiteid(siteid);
+        deleteSQL.setWhere("sa_custorderid", sa_custorderid);
+        deleteSQL.setWhere("sa_fadid not in" + sa_fadids.toString().replace("[", "(").replace("]", ")") + "");
+        deleteSQL.delete();
 
-            content.put("sa_custorderid", sa_custorderid);
-        } else {
+        dbConnect.runSqlUpdate(sqlList);
+
+        Rows amountRows = dbConnect.runSqlQuery("SELECT sum(amount) amount from sa_custorderitems WHERE sa_custorderid=" + sa_custorderid + "  and siteid='" + siteid + "'");
 
-        }
 
+        UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_custorder");
+        updateSQL.setSiteid(siteid);
+        updateSQL.setUniqueid(sa_custorderid);
+        updateSQL.setValue("remarks", content.getStringValue("remarks"));
+        updateSQL.setValue("rec_contactsid", content.getLongValue("rec_contactsid"));
+        updateSQL.setValue("amount", amountRows.get(0).getBigDecimal("amount"));
+        updateSQL.update();
 
         return getSucReturnObject().toString();
     }

+ 73 - 0
src/custom/restcontroller/webmanage/saletool/custorder/CustOrderHelper.java

@@ -0,0 +1,73 @@
+package restcontroller.webmanage.saletool.custorder;
+
+import com.alibaba.fastjson.JSONObject;
+import common.BaseClass;
+import common.Controller;
+import common.YosException;
+import common.data.InsertSQL;
+import common.data.Row;
+import common.data.Rows;
+import common.data.SQLFactory;
+
+import java.math.BigDecimal;
+
+public class CustOrderHelper extends BaseClass {
+
+    public static Row getFadRow(Controller controller, Long sa_fadid) throws YosException {
+
+        Rows fadRows = controller.dbConnect.runSqlQuery("SELECT * from sa_fad WHERE sa_fadid=" + sa_fadid + " and siteid='" + controller.siteid + "'");
+        if (fadRows.isEmpty()) {
+            throw new YosException(false, "商品不存在");
+        }
+        return fadRows.get(0);
+
+    }
+
+    public static InsertSQL getOrderItemsInsertSQL(Controller controller, Long sa_custorderid, JSONObject jsonObject) throws YosException {
+        Long sa_fadid = jsonObject.getLongValue("sa_fadid");
+        BigDecimal qty = jsonObject.getBigDecimal("qty");
+        Row fadRow = CustOrderHelper.getFadRow(controller, sa_fadid);
+        BigDecimal price = BigDecimal.ZERO;
+        if (fadRow.getString("pricetype").equals("一口价")) {
+            price = fadRow.getBigDecimal("price");
+        } else {
+            price = fadRow.getBigDecimal("price_deposit");
+
+        }
+        InsertSQL insertSQL = SQLFactory.createInsertSQL(controller, "sa_custorderitems");
+        insertSQL.setUniqueid(controller.createTableID("sa_custorderitems"));
+        insertSQL.setSiteid(controller.siteid);
+        insertSQL.setValue("sa_custorderid", sa_custorderid);
+        insertSQL.setValue("sa_fadid", fadRow.getLong("sa_fadid"));
+        insertSQL.setValue("itemno", fadRow.getString("itemno"));
+        insertSQL.setValue("unitname", fadRow.getString("unitname"));
+        insertSQL.setValue("model", fadRow.getString("model"));
+        insertSQL.setValue("spec", fadRow.getString("spec"));
+        insertSQL.setValue("pricetype", fadRow.getString("pricetype"));
+        insertSQL.setValue("name", fadRow.getString("name"));
+        insertSQL.setValue("price", price);
+        insertSQL.setValue("qty", qty);
+        insertSQL.setValue("amount", price.multiply(qty));
+        return insertSQL;
+    }
+
+
+    public static InsertSQL getOrderInsertSQL(Controller controller, Long sa_custorderid) throws YosException {
+
+        InsertSQL insertSQL = SQLFactory.createInsertSQL(controller, "sa_custorder");
+        insertSQL.setUniqueid(sa_custorderid);
+        insertSQL.setSiteid(controller.siteid);
+        insertSQL.setValue("rec_contactsid", controller.content.getLongValue("rec_contactsid"));
+        insertSQL.setValue("paymode", "微信支付");
+        insertSQL.setValue("sonum", controller.createBillCode("corderbill"));
+        insertSQL.setValue("remarks", controller.content.getStringValue("remarks"));
+        insertSQL.setValue("sys_enterpriseid", controller.content.getLongValue("sys_enterpriseid"));
+        insertSQL.setValue("status", "待付款");
+        insertSQL.setValue("name", controller.username);
+        insertSQL.setValue("phonenumber", controller.getUser(controller.userid).getString("phonenumber"));
+        insertSQL.setValue("ispaid", "0");
+        return insertSQL;
+    }
+
+
+}