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

返退商品明细可重复添加商品

郭齐峰 2 лет назад
Родитель
Сommit
53f0d3bd03

+ 36 - 40
src/custom/restcontroller/webmanage/sale/aftersalesmag/aftersalesmagItems.java

@@ -77,7 +77,7 @@ public class aftersalesmagItems extends Controller {
         Long sa_aftersalesmagid = content.getLong("sa_aftersalesmagid");
         JSONArray iteminfos = content.getJSONArray("iteminfos");
         ArrayList<String> sqlList = new ArrayList<>();
-        Rows rowscount = dbConnect.runSqlQuery("select status from sa_aftersalesmag where sa_aftersalesmagid=" + sa_aftersalesmagid);
+        Rows rowscount = dbConnect.runSqlQuery("select sa_orderid,status from sa_aftersalesmag where sa_aftersalesmagid=" + sa_aftersalesmagid);
 
         if (!rowscount.isEmpty()) {
             if (!rowscount.get(0).getString("status").equals("新建")) {
@@ -86,52 +86,21 @@ public class aftersalesmagItems extends Controller {
         } else {
             return getErrReturnObject().setErrMsg("该返退单不存在").toString();
         }
-
+        RowsMap rowsMap = dbConnect.runSqlQuery("select sa_aftersalesmag_itemsid,qty,itemid from sa_aftersalesmag_items where sa_aftersalesmagid=" + sa_aftersalesmagid).toRowsMap("itemid");
         int i = 0;
         long[] sa_aftersalesmag_itemsid = createTableID("sa_aftersalesmag_items", iteminfos.size());
-
         for (Object obj : iteminfos) {
             JSONObject iteminfo = (JSONObject) obj;
-            if (iteminfo.getLong("sa_aftersalesmag_itemsid") <= 0 || dbConnect
-                    .runSqlQuery("select sa_aftersalesmag_itemsid from sa_aftersalesmag_items where sa_aftersalesmag_itemsid="
-                            + iteminfo.getLong("sa_aftersalesmag_itemsid"))
-                    .isEmpty()) {
-                Rows sa_aftersalesmag_itemsrows = dbConnect.runSqlQuery("select sa_aftersalesmag_itemsid,qty from sa_aftersalesmag_items where sa_aftersalesmagid="
-                        + sa_aftersalesmagid + " and sa_orderitemsid=" + iteminfo.getLong("sa_orderitemsid"));
-                if (!sa_aftersalesmag_itemsrows.isEmpty() && sa_aftersalesmag_itemsrows.get(0).getLong("sa_aftersalesmag_itemsid") > 0) {
-                    SQLFactory saleFactory = new SQLFactory(this, "返退单明细更新");
-                    saleFactory.addParameter("sa_aftersalesmag_itemsid", sa_aftersalesmag_itemsrows.get(0).getLong("sa_aftersalesmag_itemsid"));
-                    // saleFactory.addParameter("itemno", iteminfo.getString("itemno"));
-                    saleFactory.addParameter("qty", iteminfo.getBigDecimal("qty"));
-                    saleFactory.addParameter("price", iteminfo.getBigDecimal("price"));
-                    saleFactory.addParameter("amount", iteminfo.getBigDecimal("qty").multiply(iteminfo.getBigDecimal("price")));
-                    saleFactory.addParameter("reason", iteminfo.getStringValue("reason"));
-                    sqlList.add(saleFactory.getSQL());
-                } else {
-                    SQLFactory saleFactory = new SQLFactory(this, "返退单明细新增");
-                    saleFactory.addParameter("siteid", siteid);
-                    saleFactory.addParameter("sa_aftersalesmag_itemsid", sa_aftersalesmag_itemsid[i]);
-                    saleFactory.addParameter("sa_aftersalesmagid", sa_aftersalesmagid);
-                    saleFactory.addParameter("sa_orderitemsid", iteminfo.getLong("sa_orderitemsid"));
-                    saleFactory.addParameter("itemid", iteminfo.getLong("itemid"));
-                    saleFactory.addParameter("qty", iteminfo.getBigDecimal("qty"));
-                    saleFactory.addParameter("price", iteminfo.getBigDecimal("price"));
-                    saleFactory.addParameter("amount", iteminfo.getBigDecimal("qty").multiply(iteminfo.getBigDecimal("price")));
-                    saleFactory.addParameter("reason", iteminfo.getStringValue("reason"));
-                    sqlList.add(saleFactory.getSQL());
+            String itemid = iteminfo.getString("itemid");
+            if (rowscount.get(0).getLong("sa_orderid") == 0) {
+                insertOrUpdate(sa_aftersalesmagid, sqlList, i, sa_aftersalesmag_itemsid, iteminfo);
+            } else {
+                if (rowsMap.containsKey(itemid)) {
+                    iteminfo.put("sa_aftersalesmag_itemsid",rowsMap.get(itemid).get(0).getLong("sa_aftersalesmag_itemsid"));
                 }
+                insertOrUpdate(sa_aftersalesmagid, sqlList, i, sa_aftersalesmag_itemsid, iteminfo);
                 i++;
-            } else {
-                SQLFactory saleFactory = new SQLFactory(this, "返退单明细更新");
-                saleFactory.addParameter("sa_aftersalesmag_itemsid", iteminfo.getLong("sa_aftersalesmag_itemsid"));
-                // saleFactory.addParameter("itemno", iteminfo.getString("itemno"));
-                saleFactory.addParameter("qty", iteminfo.getBigDecimal("qty"));
-                saleFactory.addParameter("price", iteminfo.getBigDecimal("price"));
-                saleFactory.addParameter("amount", iteminfo.getBigDecimal("qty").multiply(iteminfo.getBigDecimal("price")));
-                saleFactory.addParameter("reason", iteminfo.getString("reason"));
-                sqlList.add(saleFactory.getSQL());
             }
-
         }
         dbConnect.runSqlUpdate(sqlList);
         Rows sumamountrows = dbConnect.runSqlQuery("select sum(amount) sumamount from sa_aftersalesmag_items where sa_aftersalesmagid=" + sa_aftersalesmagid + " and siteid = '" + siteid + "'");
@@ -143,6 +112,33 @@ public class aftersalesmagItems extends Controller {
         return queryaftersalesmagItemsList();
     }
 
+    private void insertOrUpdate(Long sa_aftersalesmagid, ArrayList<String> sqlList, int i, long[] sa_aftersalesmag_itemsid, JSONObject iteminfo) throws YosException {
+        if (iteminfo.getLong("sa_aftersalesmag_itemsid") <= 0 || dbConnect.runSqlQuery("select sa_aftersalesmag_itemsid from sa_aftersalesmag_items where sa_aftersalesmag_itemsid="
+                        + iteminfo.getLong("sa_aftersalesmag_itemsid"))
+                .isEmpty()) {
+            SQLFactory saleFactory = new SQLFactory(this, "返退单明细新增");
+            saleFactory.addParameter("siteid", siteid);
+            saleFactory.addParameter("sa_aftersalesmag_itemsid", sa_aftersalesmag_itemsid[i]);
+            saleFactory.addParameter("sa_aftersalesmagid", sa_aftersalesmagid);
+            saleFactory.addParameter("sa_orderitemsid", iteminfo.getLong("sa_orderitemsid"));
+            saleFactory.addParameter("itemid", iteminfo.getLong("itemid"));
+            saleFactory.addParameter("qty", iteminfo.getBigDecimal("qty"));
+            saleFactory.addParameter("price", iteminfo.getBigDecimal("price"));
+            saleFactory.addParameter("amount", iteminfo.getBigDecimal("qty").multiply(iteminfo.getBigDecimal("price")));
+            saleFactory.addParameter("reason", iteminfo.getStringValue("reason"));
+            sqlList.add(saleFactory.getSQL());
+        }else {
+            SQLFactory saleFactory = new SQLFactory(this, "返退单明细更新");
+            saleFactory.addParameter("sa_aftersalesmag_itemsid", iteminfo.getLong("sa_aftersalesmag_itemsid"));
+            // saleFactory.addParameter("itemno", iteminfo.getString("itemno"));
+            saleFactory.addParameter("qty", iteminfo.getBigDecimal("qty"));
+            saleFactory.addParameter("price", iteminfo.getBigDecimal("price"));
+            saleFactory.addParameter("amount", iteminfo.getBigDecimal("qty").multiply(iteminfo.getBigDecimal("price")));
+            saleFactory.addParameter("reason", iteminfo.getString("reason"));
+            sqlList.add(saleFactory.getSQL());
+        }
+    }
+
     @API(title = "返退单商品明细列表", apiversion = R.ID20230105111103.v1.class)
     @CACHEING
     public String queryaftersalesmagItemsList() throws YosException {