Bläddra i källkod

经销商出入库可以不指定表体id直接新增序列号,代码自动判断生成表体明细

shenjingwei 3 dagar sedan
förälder
incheckning
a4686603f7
1 ändrade filer med 74 tillägg och 11 borttagningar
  1. 74 11
      src/custom/restcontroller/crm/agent/stock/stockbill.java

+ 74 - 11
src/custom/restcontroller/crm/agent/stock/stockbill.java

@@ -1,5 +1,6 @@
 package restcontroller.crm.agent.stock;
 
+import beans.enterprise.Enterprise;
 import beans.enterprise_stockbill.enterprise_Stockbill;
 import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
@@ -18,8 +19,7 @@ public class stockbill extends Controller {
     }
 
     @API(title = "美大CRM_经销商_出入库单列表查询", type = API.Type.PageQuery, apiversion = R.ID2026031715354101.v1.class, params = {
-            @Param(paramname = "type", fieldtype = FieldType.Varchar, remarks = "单据类型")
-    })
+            @Param(paramname = "type", fieldtype = FieldType.Varchar, remarks = "单据类型")})
     public String sys_enterprise_stockbill_querylist() throws YosException {
         JSONArray types = content.getJSONArray("type");
         QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sys_enterprise_stockbill", "*").setTableAlias("t1");
@@ -313,13 +313,15 @@ public class stockbill extends Controller {
 
     @API(title = "美大CRM_经销商_出入库单商序列号查询", type = API.Type.PageQuery, apiversion = R.ID2026031812265301.v1.class, params = {
             @Param(paramname = "sys_enterprise_stockbillid", fieldtype = FieldType.BigInt, remarks = "出入库单ID", isrequired = true),
-            @Param(paramname = "sys_enterprise_stockbill_itemsid", fieldtype = FieldType.BigInt, remarks = "出入库单商品明细ID", isrequired = true)})
+            @Param(paramname = "sys_enterprise_stockbill_itemsid", fieldtype = FieldType.BigInt, remarks = "出入库单商品明细ID,不传或传0时,查询单据所有序列号", isrequired = false)})
     public String sys_enterprise_stockbill_skus_querylist() throws YosException {
         long sys_enterprise_stockbillid = content.getLongValue("sys_enterprise_stockbillid");
         long sys_enterprise_stockbill_itemsid = content.getLongValue("sys_enterprise_stockbill_itemsid");
         QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sys_enterprise_stockbill_skus");
         querySQL.setWhere("sys_enterprise_stockbillid", sys_enterprise_stockbillid);
-        querySQL.setWhere("sys_enterprise_stockbill_itemsid", sys_enterprise_stockbill_itemsid);
+        if (sys_enterprise_stockbill_itemsid > 0) {
+            querySQL.setWhere("sys_enterprise_stockbill_itemsid", sys_enterprise_stockbill_itemsid);
+        }
         querySQL.setSiteid(siteid);
         querySQL.setPage(pageSize, pageNumber);
         Rows rows = querySQL.query();
@@ -327,18 +329,25 @@ public class stockbill extends Controller {
     }
 
     @API(title = "美大CRM_经销商_出入库单序列号新增", apiversion = R.ID2026031812294301.v1.class, params = {
-            @Param(paramname = "sku", fieldtype = FieldType.Varchar, remarks = "序列号"),
-            @Param(paramname = "sys_enterprise_stockbillid", fieldtype = FieldType.BigInt, remarks = "企业出入库单ID"),
-            @Param(paramname = "sys_enterprise_stockbill_itemsid", fieldtype = FieldType.BigInt, remarks = "企业出入库单货品明细")})
+            @Param(paramname = "sku", fieldtype = FieldType.Varchar, remarks = "序列号", isrequired = true),
+            @Param(paramname = "sys_enterprise_stockbillid", fieldtype = FieldType.BigInt, remarks = "企业出入库单ID", isrequired = true),
+            @Param(paramname = "sys_enterprise_stockbill_itemsid", fieldtype = FieldType.BigInt, remarks = "企业出入库单货品明细id,不传时,自动生成新的或匹配已有的表体ID")})
     public String sys_enterprise_stockbill_skus_insert() throws YosException {
-        String sku = content.getStringValue("sku");// 序列号
         long sys_enterprise_stockbillid = content.getLongValue("sys_enterprise_stockbillid");// 企业出入库单ID
         long sys_enterprise_stockbill_itemsid = content.getLongValue("sys_enterprise_stockbill_itemsid");// 企业出入库单货品明细
+        String sku = content.getStringValue("sku");// 序列号
 
-        if (!getBillStatus(sys_enterprise_stockbillid).equals("新建")) {
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sys_enterprise_stockbill", "status", "sa_custorderid").setSiteid(siteid).setWhere("sys_enterpriseid", sys_enterpriseid).setUniqueid(sys_enterprise_stockbillid);
+        Rows rows = querySQL.query();
+        if (rows.isEmpty()) {
+            return getErrReturnObject().setErrMsg("当前单据不存在").toString();
+        }
+        if (!rows.get(0).getString("status").equals("新建")) {
             return getErrReturnObject().setErrMsg("当前单据不是新建状态,不能添加序列号").toString();
         }
-
+        if (sku.isBlank()) {
+            return getErrReturnObject().setErrMsg("序列号不能为空").toString();
+        }
         Rows skuRows = SQLFactory.createQuerySQL(this, "sa_itemsku").setSiteid(siteid).setWhere("sku", sku).query();
         if (skuRows.isEmpty()) {
             return getErrReturnObject().setErrCode(1).setErrMsg("序列号" + sku + "不存在").toString();
@@ -351,13 +360,67 @@ public class stockbill extends Controller {
         }
 
         if (SQLFactory.createQuerySQL(this, "sys_enterprise_stockbill_skus").setWhere("sku", sku).setWhere("sys_enterprise_stockbillid", sys_enterprise_stockbillid).query().isEmpty()) {
+            SQLList sqlList = new SQLList();
+            long sys_enterprise_itemid = 0;
+            if (sys_enterprise_stockbill_itemsid == 0) {//如果没有指定货品明细ID,则自动生成
+                long itemid = skuRows.get(0).getLong("itemid");
+                Enterprise.addSiteItems(dbConnect, siteid, sys_enterpriseid, itemid);//判断并生成商品档案
+                QuerySQL sys_enterprise_itemQuery = SQLFactory.createQuerySQL(dbConnect, "sys_enterprise_item", "sys_enterprise_itemid");
+                sys_enterprise_itemQuery.setSiteid(siteid);
+                sys_enterprise_itemQuery.setWhere("sys_enterpriseid", sys_enterpriseid);
+                sys_enterprise_itemQuery.setWhere("itemid", itemid);
+                Rows itemrow = sys_enterprise_itemQuery.query();
+                if (itemrow.isEmpty()) {
+                    return getErrReturnObject().setErrMsg("商品档案不存在").toString();
+                } else {
+                    sys_enterprise_itemid = itemrow.get(0).getLong("sys_enterprise_itemid");
+                }
+                Rows stockbill_itemsRows = SQLFactory.createQuerySQL(this, "sys_enterprise_stockbill_items", "sys_enterprise_stockbill_itemsid").setWhere("sys_enterprise_stockbillid", sys_enterprise_stockbillid).setWhere("sys_enterprise_itemid", sys_enterprise_itemid).query();
+                if (stockbill_itemsRows.isEmpty()) {//如果出入库表体不存在,则新增
+                    long sa_custorderid = rows.get(0).getLong("sa_custorderid");
+                    long sa_custorderitemsid = 0;
+                    if (sa_custorderid > 0) {
+                        Rows custorderitemsRows = SQLFactory.createQuerySQL(this, "sa_custorderitems", "sa_custorderitemsid").setWhere("sa_custorderid", sa_custorderid).setWhere("sys_enterprise_itemid", sys_enterprise_itemid).query();
+                        if (custorderitemsRows.isEmpty()) {
+                            throw new YosException("当前出库的客户订单不存在此商品");
+                        }
+                        sa_custorderitemsid = custorderitemsRows.get(0).getLong("sa_custorderitemsid");
+                    }
+                    sys_enterprise_stockbill_itemsid = createTableID("sys_enterprise_stockbill_items");
+                    InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sys_enterprise_stockbill_items");
+                    insertSQL.setValue("siteid", siteid);// 站点
+                    insertSQL.setValue("sys_enterpriseid", sys_enterpriseid);// 合作企业档案ID
+                    insertSQL.setValue("sys_enterprise_stockbillid", sys_enterprise_stockbillid);// 企业出入库单ID
+                    insertSQL.setValue("sa_custorderitemsid", sa_custorderitemsid);// C端订单商品表ID
+                    insertSQL.setValue("sys_enterprise_itemid", sys_enterprise_itemid);// 企业商品档案表ID
+                    insertSQL.setValue("hongqty", 0);// 已红冲数量
+                    insertSQL.setValue("remarks", "");// 备注说明
+                    insertSQL.setValue("itemno", itemrow.get(0).getString("itemno"));// 产品编号
+                    insertSQL.setValue("model", itemrow.get(0).getString("model"));// 型号
+                    insertSQL.setValue("itemname", itemrow.get(0).getString("itemname"));// 产品名称
+                    insertSQL.setValue("skucontrol", true);// 是否单品管理
+                    insertSQL.setValue("qty", 1);// 数量
+                    insertSQL.setUniqueid(sys_enterprise_stockbill_itemsid);
+                    sqlList.add(insertSQL);
+                } else {
+                    sys_enterprise_stockbill_itemsid = stockbill_itemsRows.get(0).getLong("sys_enterprise_stockbill_itemsid");
+                    UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sys_enterprise_stockbill_items");
+                    updateSQL.addValue("qty", 1);// 数量+1
+                    updateSQL.setSiteid(siteid);
+                    updateSQL.setUniqueid(sys_enterprise_stockbill_itemsid);
+                    updateSQL.setWhere("sys_enterprise_stockbillid", sys_enterprise_stockbillid);// 企业出入库单ID
+                    sqlList.add(updateSQL);
+                }
+            }
+
             InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sys_enterprise_stockbill_skus");
             insertSQL.setValue("siteid", siteid);// 站点
             insertSQL.setValue("sku", sku);// 序列号
             insertSQL.setValue("sys_enterprise_stockbillid", sys_enterprise_stockbillid);// 企业出入库单ID
             insertSQL.setValue("sys_enterprise_stockbill_itemsid", sys_enterprise_stockbill_itemsid);// 企业出入库单货品明细
             insertSQL.setValue("sys_enterpriseid", sys_enterpriseid);// 合作企业档案ID
-            insertSQL.insert();
+            sqlList.add(insertSQL);
+            sqlList.commit();
         } else {
             return getErrReturnObject().setErrMsg("序列号已存在").toString();
         }