Browse Source

售后bom

hu 2 months ago
parent
commit
4b8f59d916

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

@@ -6087,6 +6087,81 @@ public class R {
         public static class v1 {
         }
     }
+
+    public static class ID2025071409365103 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025071409370003 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025071409371303 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025071409372803 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025071409480903 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025071409483703 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025071409485003 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025071409485903 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025071409541703 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025071409572003 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025071410052703 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025071411251903 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025071411252903 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025071411254003 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025071411255003 {
+        public static class v1 {
+        }
+    }
 }
 
 

+ 250 - 0
src/custom/restcontroller/webmanage/sale/aftersalesbom/aftersalesbom.java

@@ -0,0 +1,250 @@
+package restcontroller.webmanage.sale.aftersalesbom;
+
+import beans.data.BatchDeleteErr;
+import beans.datacontrllog.DataContrlLog;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import common.Controller;
+import common.YosException;
+import common.annotation.API;
+import common.annotation.CACHEING;
+import common.annotation.CACHEING_CLEAN;
+import common.data.*;
+import restcontroller.R;
+import restcontroller.webmanage.sale.supplier.supplier;
+
+import java.util.ArrayList;
+
+@API(title = "售后bom管理")
+public class aftersalesbom extends Controller {
+    public aftersalesbom(JSONObject content) throws YosException {
+        super(content);
+    }
+
+
+    @API(title = "售后bom新增更新", apiversion = R.ID2025071409365103.v1.class, intervaltime = 200)
+    @CACHEING_CLEAN(apiClass = {aftersalesbom.class})
+    public String insertormodify_aftersalesbom() throws YosException {
+        ArrayList<String> sqlList = new ArrayList<>();
+        // 表名
+        String tableName = "sa_aftersalesbom";
+        Long sa_aftersalesbomid = content.getLong("sa_aftersalesbomid");
+        String name = content.getString("name");
+        String productcategories = content.getString("productcategories");
+
+        if (sa_aftersalesbomid > 0 && dbConnect.runSqlQuery(
+                        "select sa_aftersalesbomid from sa_aftersalesbom where sa_aftersalesbomid=" + sa_aftersalesbomid)
+                .isNotEmpty()) {
+            Rows rows = dbConnect.runSqlQuery(
+                    "SELECT status from sa_aftersalesbom WHERE sa_aftersalesbomid = "
+                            + sa_aftersalesbomid);
+            if (rows.isNotEmpty()) {
+                if (rows.get(0).getString("status").equals("新建")) {
+                    UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, tableName);
+                    updateSQL.setUniqueid(sa_aftersalesbomid);
+                    updateSQL.setSiteid(siteid);
+                    updateSQL.setValue("name", name);
+                    updateSQL.setValue("productcategories", productcategories);
+                    updateSQL.setDateValue("changedate");
+                    updateSQL.setValue("changeby", username);
+                    sqlList.add(updateSQL.getSQL());
+                    if(!rows.get(0).getString("productcategories").equals(productcategories)){
+                        sqlList.add("delete from sa_aftersalesbom_items where siteid='"+siteid+"' and sa_aftersalesbomid="+sa_aftersalesbomid);
+                        sqlList.add("delete from sa_aftersalesbom_pjs where siteid='"+siteid+"' and sa_aftersalesbomid="+sa_aftersalesbomid);
+                    }
+                    sqlList.add(DataContrlLog.createLog(this, "sa_aftersalesbom", sa_aftersalesbomid, "更新", "售后bom更新成功")
+                            .getSQL());
+                } else {
+                    return getErrReturnObject().setErrMsg("非新建状态下无法编辑").toString();
+                }
+
+            } else {
+                return getErrReturnObject().setErrMsg("该售后bom不存在").toString();
+            }
+
+        }else{
+            InsertSQL insertSQL = SQLFactory.createInsertSQL(this, tableName);
+            sa_aftersalesbomid=createTableID(tableName);
+            insertSQL.setUniqueid(sa_aftersalesbomid);
+            insertSQL.setSiteid(siteid);
+            insertSQL.setValue("name", name);
+            insertSQL.setValue("productcategories", productcategories);
+            insertSQL.setValue("billno", createBillCode("aftersalesbom"));
+            insertSQL.setValue("createby", username);
+            insertSQL.setDateValue("createdate");
+            insertSQL.setValue("changeby", username);
+            insertSQL.setDateValue("changedate");
+            insertSQL.setValue("status", "新建");
+            sqlList.add(insertSQL.getSQL());
+        }
+
+
+        dbConnect.runSqlUpdate(sqlList);
+        content.put("sa_aftersalesbomid", sa_aftersalesbomid);
+
+        return queryaftersalesbomMain();
+    }
+
+
+
+    @API(title = "售后bom详情", apiversion = R.ID2025071409370003.v1.class)
+    @CACHEING
+    public String queryaftersalesbomMain() throws YosException {
+        Long sa_aftersalesbomid = content.getLong("sa_aftersalesbomid");
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_aftersalesbom", "*");
+        querySQL.setTableAlias("t1");
+        querySQL.setSiteid(siteid);
+        querySQL.setWhere("t1.sa_aftersalesbomid",sa_aftersalesbomid);
+        querySQL.setPage(pageSize, pageNumber);
+        Rows rows = querySQL.query();
+
+        return getSucReturnObject().setData(rows).toString();
+    }
+
+
+    @API(title = "查询售后bom列表", apiversion = R.ID2025071409371303.v1.class)
+    @CACHEING
+    public String queryaftersalesbomList() throws YosException {
+        StringBuffer where = new StringBuffer(" 1=1 ");
+        if (content.containsKey("where")) {
+            JSONObject whereObject = content.getJSONObject("where");
+            if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
+                where.append(" and(");
+                where.append("t1.billno like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append("or t1.name like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append(")");
+            }
+            if (whereObject.containsKey("begindate") && !"".equals(whereObject.getString("begindate"))) {
+//				 if(content.getString("type").equals("借用归还单")) {
+//					 where.append(" and t1.createdate >='" + whereObject.getString("startdate")).append("' ");
+//				 }else if(content.getString("type").equals("退货单")) {
+//					 where.append(" and t1.checkdate >='" + whereObject.getString("startdate")).append("' ");
+//				}
+                where.append(" and t1.createdate >='" + whereObject.getString("begindate")).append("' ");
+            }
+            if (whereObject.containsKey("enddate") && !"".equals(whereObject.getString("enddate"))) {
+//	            	 if(content.getString("type").equals("借用归还单")) {
+//	            		 where.append(" and t1.createdate <='" + whereObject.getString("enddate")).append("' ");
+//					 }else if(content.getString("type").equals("退货单")) {
+//						 where.append(" and t1.checkdate <='" + whereObject.getString("enddate")).append("' ");
+//					}
+                where.append(" and t1.createdate <='" + whereObject.getString("enddate")).append(" 23:59:59'");
+            }
+            if (whereObject.containsKey("status") && !"".equals(whereObject.getString("status"))) {
+                where.append(" and t1.status ='").append(whereObject.getString("status")).append("' ");
+            }
+        }
+
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_aftersalesbom", "*");
+        querySQL.setTableAlias("t1");
+
+        querySQL.setSiteid(siteid);
+        querySQL.setWhere(where.toString());
+        querySQL.setPage(pageSize, pageNumber);
+        Rows rows = querySQL.query();
+
+        return getSucReturnObject().setData(rows).toString();
+    }
+
+    @API(title = "删除", apiversion = R.ID2025071409372803.v1.class)
+    @CACHEING_CLEAN(apiClass = {aftersalesbom.class})
+    public String delete() throws YosException {
+
+        JSONArray sa_aftersalesbomids = content.getJSONArray("sa_aftersalesbomids");
+        BatchDeleteErr batchDeleteErr = BatchDeleteErr.create(this, sa_aftersalesbomids.size());
+        for (Object o : sa_aftersalesbomids) {
+            long sa_aftersalesbomid = Long.parseLong(o.toString());
+            Rows RowsStatus = dbConnect
+                    .runSqlQuery("select sa_aftersalesbomid,status from sa_aftersalesbom where siteid='" + siteid
+                            + "' and sa_aftersalesbomid='" + sa_aftersalesbomid + "'");
+
+            if (RowsStatus.isNotEmpty()) {
+                if (!RowsStatus.get(0).getString("status").equals("新建")) {
+                    batchDeleteErr.addErr(sa_aftersalesbomid, "非新建状态的售后bom无法删除");
+                    continue;
+                }
+            }
+
+            dbConnect.runSqlUpdate("delete from sa_aftersalesbom where siteid='" + siteid + "' and sa_aftersalesbomid="
+                    + sa_aftersalesbomid);
+            dbConnect.runSqlUpdate("delete from sa_aftersalesbom_items where siteid='" + siteid + "' and sa_aftersalesbomid="
+                    + sa_aftersalesbomid);
+            dbConnect.runSqlUpdate("delete from sa_aftersalesbom_pjs where siteid='" + siteid + "' and sa_aftersalesbomid="
+                    + sa_aftersalesbomid);
+        }
+        return batchDeleteErr.getReturnObject().toString();
+
+    }
+
+    @API(title = "审核反审核", apiversion = R.ID2025071409541703.v1.class)
+    @CACHEING_CLEAN( apiClass = {supplier.class})
+    public String check() throws YosException {
+        Long sa_aftersalesbomid = content.getLong("sa_aftersalesbomid");
+        boolean ischeck = content.getBooleanValue("ischeck");
+        Rows rows = dbConnect.runSqlQuery("select t1.sa_aftersalesbomid,t1.status,t1.name from sa_aftersalesbom t1 where t1.sa_aftersalesbomid ='"
+                + sa_aftersalesbomid + "' and  t1.siteid='" + siteid + "'");
+        for (Row row : rows) {
+            if(ischeck){
+                if (!row.getString("status").equals("新建")) {
+                    return getErrReturnObject().setErrMsg("非新建状态的【"+row.getString("name")+"】售后bom无法审核")
+                            .toString();
+                }
+            }else{
+                if (!row.getString("status").equals("审核")) {
+                    return getErrReturnObject().setErrMsg("非审核状态的【"+row.getString("name")+"】售后bom无法反审核")
+                            .toString();
+                }
+            }
+
+        }
+        ArrayList<String> sqlList = new ArrayList<>();
+        UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_aftersalesbom");
+        updateSQL.setUniqueid(sa_aftersalesbomid);
+        updateSQL.setSiteid(siteid);
+        updateSQL.setValue("status", ischeck?"审核":"新建");
+        updateSQL.setValue("checkby", ischeck?username:"null");
+        if(ischeck){
+            updateSQL.setDateValue("checkdate");
+        }else{
+            updateSQL.setValue("checkdate","null");
+        }
+
+        sqlList.add(updateSQL.getSQL());
+        if (ischeck) {
+            sqlList.add(
+                    DataContrlLog.createLog(this, "sa_aftersalesbom", sa_aftersalesbomid, "审核", "售后bom审核成功").getSQL());
+        } else {
+            sqlList.add(
+                    DataContrlLog.createLog(this, "sa_aftersalesbom", sa_aftersalesbomid, "反审核", "售后bom反审核成功").getSQL());
+        }
+
+        dbConnect.runSqlUpdate(sqlList);
+        return getSucReturnObject().toString();
+    }
+
+    @API(title = "查询顶层bom列表", apiversion = R.ID2025071409572003.v1.class)
+    public String querytopbomname() throws YosException {
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "plm_bom", "*");
+        querySQL.setTableAlias("t1");
+        querySQL.setWhere("ifnull(t1.parentid,0)=0");
+        querySQL.setSiteid(siteid);
+        querySQL.setPage(pageSize, pageNumber);
+        Rows rows = querySQL.query();
+        return getSucReturnObject().setData(rows).toString();
+    }
+
+
+
+    @API(title = "根据上层名称查询下级bom列表", apiversion = R.ID2025071410052703.v1.class)
+    public String querylowerbombyname() throws YosException {
+        String bomname=content.getString("bomname");
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "plm_bom", "bomname");
+        querySQL.setTableAlias("t1");
+        querySQL.addJoinTable(JOINTYPE.inner, "plm_bom", "t2", "t1.parentid = t2.plm_bomid AND t1.siteid = t2.siteid and t2.bomname='"+bomname+"'");
+        querySQL.setSiteid(siteid);
+        querySQL.setPage(pageSize, pageNumber);
+        Rows rows = querySQL.query();
+        return getSucReturnObject().setData(rows).toString();
+    }
+
+}

+ 173 - 0
src/custom/restcontroller/webmanage/sale/aftersalesbom/aftersalesbom_items.java

@@ -0,0 +1,173 @@
+package restcontroller.webmanage.sale.aftersalesbom;
+
+import beans.data.BatchDeleteErr;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import common.Controller;
+import common.YosException;
+import common.annotation.API;
+import common.annotation.CACHEING;
+import common.annotation.CACHEING_CLEAN;
+import common.data.*;
+import restcontroller.R;
+import restcontroller.webmanage.sale.aftersalesbom.aftersalesbom;
+
+import java.util.ArrayList;
+
+@API(title = "售后bom产品清单")
+public class aftersalesbom_items extends Controller {
+    public aftersalesbom_items(JSONObject content) throws YosException {
+        super(content);
+    }
+
+    @API(title = "产品列表查询", apiversion = R.ID2025071409480903.v1.class)
+    @CACHEING
+    public String queryItemList() throws YosException {
+        /*
+         * 过滤条件设置
+         */
+        StringBuffer where = new StringBuffer(" 1=1 ");
+        if (content.containsKey("where")) {
+            JSONObject whereObject = content.getJSONObject("where");
+            if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
+                where.append(" and(");
+                where.append("t1.itemname like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append("or t1.itemno like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append("or t1.spec like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append("or t1.model like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append(")");
+            }
+        }
+
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "plm_item", "*");
+        querySQL.setTableAlias("t1");
+        querySQL.setSiteid(siteid);
+        querySQL.setWhere("isused=1 and status='审核'");
+        querySQL.setWhere("t1.itemid not in (select itemid from sa_aftersalesbom_items t1 inner join sa_aftersalesbom t2 on t1.siteid=t2.siteid and t1.sa_aftersalesbomid=t2.sa_aftersalesbomid)");
+        querySQL.setWhere(where.toString());
+        querySQL.setPage(pageSize, pageNumber);
+        querySQL.setOrderBy(pageSorting);
+        Rows rows = querySQL.query();
+
+        return getSucReturnObject().setData(rows).toString();
+    }
+
+    @API(title = "售后bom明细新增更新", apiversion = R.ID2025071409483703.v1.class)
+    @CACHEING_CLEAN(apiClass = {aftersalesbom.class, aftersalesbom_items.class})
+    public String insertormodify_aftersalesbomitems() throws YosException {
+        Long sa_aftersalesbomid = content.getLong("sa_aftersalesbomid");
+        JSONArray iteminfos = content.getJSONArray("iteminfos");
+        ArrayList<String> sqlList = new ArrayList<>();
+        Rows rowscount = dbConnect.runSqlQuery("select billno,status from sa_aftersalesbom where sa_aftersalesbomid=" + sa_aftersalesbomid);
+        if (!rowscount.isEmpty()) {
+            if (!rowscount.get(0).getString("status").equals("新建")) {
+                return getErrReturnObject().setErrMsg("非新建状态的售后bom无法新增修改").toString();
+            }
+        }
+        int i = 0;
+        long maxid = 0;
+        long[] sa_aftersalesbom_itemsid = createTableID("sa_aftersalesbom_items", iteminfos.size());
+        for (Object obj : iteminfos) {
+            JSONObject iteminfo = (JSONObject) obj;
+            if (iteminfo.getLong("sa_aftersalesbom_itemsid") <= 0 || dbConnect
+                    .runSqlQuery("select sa_aftersalesbom_itemsid from sa_aftersalesbom_items where sa_aftersalesbom_itemsid="
+                            + iteminfo.getLong("sa_aftersalesbom_itemsid"))
+                    .isEmpty()) {
+                InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sa_aftersalesbom_items");
+                insertSQL.setUniqueid(sa_aftersalesbom_itemsid[i]);
+                insertSQL.setSiteid(siteid);
+                insertSQL.setValue("sa_aftersalesbomid", sa_aftersalesbomid);
+                insertSQL.setValue("itemid", iteminfo.getStringValue("itemid"));
+                insertSQL.setValue("itemname", iteminfo.getStringValue("itemname"));
+                insertSQL.setValue("itemno", iteminfo.getStringValue("itemno"));
+                insertSQL.setValue("spec", iteminfo.getStringValue("spec"));
+                i++;
+                sqlList.add(insertSQL.getSQL());
+            } else {
+                Rows rows = dbConnect.runSqlQuery(
+                        "SELECT status from sa_aftersalesbom WHERE sa_aftersalesbomid = "
+                                + sa_aftersalesbomid);
+                if (rows.isNotEmpty()) {
+                    if (rows.get(0).getString("status").equals("新建")) {
+
+                        UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_aftersalesbom_items");
+                        updateSQL.setUniqueid(iteminfo.getLong("sa_aftersalesbom_itemsid"));
+                        updateSQL.setSiteid(siteid);
+                        updateSQL.setValue("itemid", iteminfo.getStringValue("itemid"));
+                        updateSQL.setValue("itemname", iteminfo.getStringValue("itemname"));
+                        updateSQL.setValue("itemno", iteminfo.getStringValue("itemno"));
+                        updateSQL.setValue("spec", iteminfo.getStringValue("spec"));
+                        sqlList.add(updateSQL.getSQL());
+                    } else {
+                        return getErrReturnObject().setErrMsg("非新建状态下无法编辑").toString();
+                    }
+
+                } else {
+                    return getErrReturnObject().setErrMsg("该售后bom不存在").toString();
+                }
+            }
+
+        }
+        dbConnect.runSqlUpdate(sqlList);
+        return queraftersalesbomitemsList();
+    }
+
+
+    @API(title = "售后bom产品清单列表", apiversion = R.ID2025071409485003.v1.class)
+    @CACHEING
+    public String queraftersalesbomitemsList() throws YosException {
+        /*
+         * 过滤条件设置
+         */
+        StringBuffer where = new StringBuffer(" 1=1 ");
+        if (content.containsKey("where")) {
+            JSONObject whereObject = content.getJSONObject("where");
+            if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
+                where.append(" and(");
+                where.append("t1.itemname like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append("or t1.spec like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append("or t1.itemno like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append(")");
+            }
+        }
+        Long sa_aftersalesbomid = content.getLong("sa_aftersalesbomid");
+
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_aftersalesbom_items",  "*");
+        querySQL.setTableAlias("t1");
+        querySQL.setSiteid(siteid);
+        querySQL.setWhere("t1.sa_aftersalesbomid",sa_aftersalesbomid);
+        querySQL.setWhere(where.toString());
+        querySQL.setPage(pageSize, pageNumber);
+        Rows rows = querySQL.query();
+
+        return getSucReturnObject().setData(rows).toString();
+    }
+
+
+    @API(title = "删除明细", apiversion = R.ID2025071409485903.v1.class)
+    @CACHEING_CLEAN(apiClass = {aftersalesbom.class, aftersalesbom_items.class})
+    public String deletemx() throws YosException {
+
+        JSONArray sa_aftersalesbom_itemsids = content.getJSONArray("sa_aftersalesbom_itemsids");
+        BatchDeleteErr batchDeleteErr = BatchDeleteErr.create(this, sa_aftersalesbom_itemsids.size());
+        for (Object o : sa_aftersalesbom_itemsids) {
+            long sa_aftersalesbom_itemsid = Long.parseLong(o.toString());
+            Rows RowsStatus = dbConnect.runSqlQuery("select t1.sa_aftersalesbom_itemsid,t2.status,t1.sa_aftersalesbomid from sa_aftersalesbom_items t1 left join sa_aftersalesbom t2 on t1.sa_aftersalesbomid=t2.sa_aftersalesbomid and t1.siteid=t2.siteid where t1.siteid='"
+                    + siteid + "' and t1.sa_aftersalesbom_itemsid='" + sa_aftersalesbom_itemsid + "'");
+
+            if (RowsStatus.isNotEmpty()) {
+                if (!RowsStatus.get(0).getString("status").equals("新建")) {
+                    batchDeleteErr.addErr(sa_aftersalesbom_itemsid, "非新建状态的售后bom明细无法删除");
+                    continue;
+                }
+            }
+            ArrayList<String> list = new ArrayList<>();
+            list.add("delete from sa_aftersalesbom_items where siteid='" + siteid
+                    + "' and sa_aftersalesbom_itemsid=" + sa_aftersalesbom_itemsid);
+
+            dbConnect.runSqlUpdate(list);
+        }
+
+        return batchDeleteErr.getReturnObject().toString();
+    }
+}

+ 183 - 0
src/custom/restcontroller/webmanage/sale/aftersalesbom/aftersalesbom_pjs.java

@@ -0,0 +1,183 @@
+package restcontroller.webmanage.sale.aftersalesbom;
+
+import beans.data.BatchDeleteErr;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import common.Controller;
+import common.YosException;
+import common.annotation.API;
+import common.annotation.CACHEING;
+import common.annotation.CACHEING_CLEAN;
+import common.data.*;
+import org.apache.commons.lang.StringUtils;
+import restcontroller.R;
+import restcontroller.webmanage.sale.aftersalesbom.aftersalesbom;
+
+import java.util.ArrayList;
+
+public class aftersalesbom_pjs extends Controller {
+    public aftersalesbom_pjs(JSONObject content) throws YosException {
+        super(content);
+    }
+
+    @API(title = "产品列表查询", apiversion = R.ID2025071411251903.v1.class)
+    @CACHEING
+    public String queryItemList() throws YosException {
+        /*
+         * 过滤条件设置
+         */
+        StringBuffer where = new StringBuffer(" 1=1 ");
+        if (content.containsKey("where")) {
+            JSONObject whereObject = content.getJSONObject("where");
+            if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
+                where.append(" and(");
+                where.append("t1.itemname like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append("or t1.itemno like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append("or t1.spec like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append("or t1.model like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append(")");
+            }
+        }
+
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "plm_item", "*");
+        querySQL.setTableAlias("t1");
+        querySQL.setSiteid(siteid);
+        querySQL.setWhere("isused=1 and status='审核' and ismodule=1 ");
+        querySQL.setWhere(where.toString());
+        querySQL.setPage(pageSize, pageNumber);
+        querySQL.setOrderBy(pageSorting);
+        Rows rows = querySQL.query();
+
+        return getSucReturnObject().setData(rows).toString();
+    }
+
+
+    @API(title = "售后bom配件明细新增更新", apiversion = R.ID2025071411252903.v1.class)
+    @CACHEING_CLEAN(apiClass = {aftersalesbom.class, aftersalesbom_items.class})
+    public String insertormodify_aftersalesbompjs() throws YosException {
+        Long sa_aftersalesbomid = content.getLong("sa_aftersalesbomid");
+        JSONArray iteminfos = content.getJSONArray("iteminfos");
+        ArrayList<String> sqlList = new ArrayList<>();
+        Rows rowscount = dbConnect.runSqlQuery("select billno,status from sa_aftersalesbom where sa_aftersalesbomid=" + sa_aftersalesbomid);
+        if (!rowscount.isEmpty()) {
+            if (!rowscount.get(0).getString("status").equals("新建")) {
+                return getErrReturnObject().setErrMsg("非新建状态的售后bom无法新增修改").toString();
+            }
+        }
+        int i = 0;
+        long maxid = 0;
+        long[] sa_aftersalesbom_pjsid = createTableID("sa_aftersalesbom_pjs", iteminfos.size());
+        for (Object obj : iteminfos) {
+            JSONObject iteminfo = (JSONObject) obj;
+            if (iteminfo.getLong("sa_aftersalesbom_pjsid") <= 0 || dbConnect
+                    .runSqlQuery("select sa_aftersalesbom_pjsid from sa_aftersalesbom_pjs where sa_aftersalesbom_pjsid="
+                            + iteminfo.getLong("sa_aftersalesbom_pjsid"))
+                    .isEmpty()) {
+                InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sa_aftersalesbom_pjs");
+                insertSQL.setUniqueid(sa_aftersalesbom_pjsid[i]);
+                insertSQL.setSiteid(siteid);
+                insertSQL.setValue("sa_aftersalesbomid", sa_aftersalesbomid);
+                insertSQL.setValue("module", iteminfo.getStringValue("module"));
+                insertSQL.setValue("component", iteminfo.getStringValue("component"));
+                insertSQL.setValue("accessorie", iteminfo.getStringValue("accessorie"));
+                insertSQL.setValue("itemid", iteminfo.getStringValue("itemid"));
+                insertSQL.setValue("itemname", iteminfo.getStringValue("itemname"));
+                insertSQL.setValue("itemno", iteminfo.getStringValue("itemno"));
+                insertSQL.setValue("begindate", StringUtils.isBlank(iteminfo.getStringValue("begindate")) ?"null":iteminfo.getStringValue("begindate"));
+                insertSQL.setValue("enddate", StringUtils.isBlank(iteminfo.getStringValue("enddate")) ?"null":iteminfo.getStringValue("enddate"));
+                i++;
+                sqlList.add(insertSQL.getSQL());
+            } else {
+                Rows rows = dbConnect.runSqlQuery(
+                        "SELECT status from sa_aftersalesbom WHERE sa_aftersalesbomid = "
+                                + sa_aftersalesbomid);
+                if (rows.isNotEmpty()) {
+                    if (rows.get(0).getString("status").equals("新建")) {
+
+                        UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_aftersalesbom_pjs");
+                        updateSQL.setUniqueid(iteminfo.getLong("sa_aftersalesbom_pjsid"));
+                        updateSQL.setSiteid(siteid);
+                        updateSQL.setValue("sa_aftersalesbomid", sa_aftersalesbomid);
+                        updateSQL.setValue("module", iteminfo.getStringValue("module"));
+                        updateSQL.setValue("component", iteminfo.getStringValue("component"));
+                        updateSQL.setValue("accessorie", iteminfo.getStringValue("accessorie"));
+                        updateSQL.setValue("itemid", iteminfo.getStringValue("itemid"));
+                        updateSQL.setValue("itemname", iteminfo.getStringValue("itemname"));
+                        updateSQL.setValue("itemno", iteminfo.getStringValue("itemno"));
+                        updateSQL.setValue("begindate", StringUtils.isBlank(iteminfo.getStringValue("begindate")) ?"null":iteminfo.getStringValue("begindate"));
+                        updateSQL.setValue("enddate", StringUtils.isBlank(iteminfo.getStringValue("enddate")) ?"null":iteminfo.getStringValue("enddate"));
+                        sqlList.add(updateSQL.getSQL());
+                    } else {
+                        return getErrReturnObject().setErrMsg("非新建状态下无法编辑").toString();
+                    }
+
+                } else {
+                    return getErrReturnObject().setErrMsg("该售后bom不存在").toString();
+                }
+            }
+
+        }
+        dbConnect.runSqlUpdate(sqlList);
+        return queraftersalesbompjsList();
+    }
+
+
+    @API(title = "售后bom产品清单列表", apiversion = R.ID2025071411254003.v1.class)
+    @CACHEING
+    public String queraftersalesbompjsList() throws YosException {
+        /*
+         * 过滤条件设置
+         */
+        StringBuffer where = new StringBuffer(" 1=1 ");
+        if (content.containsKey("where")) {
+            JSONObject whereObject = content.getJSONObject("where");
+            if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
+                where.append(" and(");
+                where.append("t1.itemname like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append("or t1.itemno like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append("or t1.module like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append("or t1.component like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append("or t1.accessorie like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append(")");
+            }
+        }
+        Long sa_aftersalesbomid = content.getLong("sa_aftersalesbomid");
+
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_aftersalesbom_pjs",  "*");
+        querySQL.setTableAlias("t1");
+        querySQL.setSiteid(siteid);
+        querySQL.setWhere("t1.sa_aftersalesbomid",sa_aftersalesbomid);
+        querySQL.setWhere(where.toString());
+        querySQL.setPage(pageSize, pageNumber);
+        Rows rows = querySQL.query();
+
+        return getSucReturnObject().setData(rows).toString();
+    }
+
+    @API(title = "删除配件明细", apiversion = R.ID2025071411255003.v1.class)
+    @CACHEING_CLEAN(apiClass = {aftersalesbom.class, aftersalesbom_items.class})
+    public String deletemx() throws YosException {
+
+        JSONArray sa_aftersalesbom_pjsids = content.getJSONArray("sa_aftersalesbom_pjsids");
+        BatchDeleteErr batchDeleteErr = BatchDeleteErr.create(this, sa_aftersalesbom_pjsids.size());
+        for (Object o : sa_aftersalesbom_pjsids) {
+            long sa_aftersalesbom_pjsid = Long.parseLong(o.toString());
+            Rows RowsStatus = dbConnect.runSqlQuery("select t1.sa_aftersalesbom_pjsid,t2.status,t1.sa_aftersalesbomid from sa_aftersalesbom_pjs t1 left join sa_aftersalesbom t2 on t1.sa_aftersalesbomid=t2.sa_aftersalesbomid and t1.siteid=t2.siteid where t1.siteid='"
+                    + siteid + "' and t1.sa_aftersalesbom_pjsid='" + sa_aftersalesbom_pjsid + "'");
+
+            if (RowsStatus.isNotEmpty()) {
+                if (!RowsStatus.get(0).getString("status").equals("新建")) {
+                    batchDeleteErr.addErr(sa_aftersalesbom_pjsid, "非新建状态的售后bom配件明细无法删除");
+                    continue;
+                }
+            }
+            ArrayList<String> list = new ArrayList<>();
+            list.add("delete from sa_aftersalesbom_pjs where siteid='" + siteid
+                    + "' and sa_aftersalesbom_pjsid=" + sa_aftersalesbom_pjsid);
+
+            dbConnect.runSqlUpdate(list);
+        }
+
+        return batchDeleteErr.getReturnObject().toString();
+    }
+}