Ver Fonte

售后bom变更

hu há 3 meses atrás
pai
commit
4f54631efa

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

@@ -6187,6 +6187,76 @@ public class R {
         public static class v1 {
         }
     }
+
+    public static class ID2025071511171103 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025071511172503 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025071511173303 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025071511174303 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025071511175303 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025071511273703 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025071511275403 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025071511280403 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025071511281303 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025071513211903 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025071513212803 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025071513214003 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025071513215203 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025071515025303 {
+        public static class v1 {
+        }
+    }
 }
 
 

+ 2 - 1
src/custom/restcontroller/webmanage/sale/aftersalesbom/aftersalesbom.java

@@ -12,6 +12,7 @@ import common.annotation.CACHEING_CLEAN;
 import common.data.*;
 import org.apache.commons.lang.StringUtils;
 import restcontroller.R;
+import restcontroller.webmanage.sale.aftersalesbomchange.aftersalesbomchange_pjs;
 import restcontroller.webmanage.sale.promotion.*;
 import restcontroller.webmanage.sale.supplier.supplier;
 
@@ -179,7 +180,7 @@ public class aftersalesbom extends Controller {
     }
 
     @API(title = "审核反审核", apiversion = R.ID2025071409541703.v1.class)
-    @CACHEING_CLEAN( apiClass = {aftersalesbom.class})
+    @CACHEING_CLEAN( apiClass = {aftersalesbom.class, aftersalesbomchange_pjs.class})
     public String check() throws YosException {
         Long sa_aftersalesbomid = content.getLong("sa_aftersalesbomid");
         boolean ischeck = content.getBooleanValue("ischeck");

+ 256 - 0
src/custom/restcontroller/webmanage/sale/aftersalesbomchange/aftersalesbomchange.java

@@ -0,0 +1,256 @@
+package restcontroller.webmanage.sale.aftersalesbomchange;
+
+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 org.apache.commons.lang.StringUtils;
+import restcontroller.R;
+
+import java.util.ArrayList;
+
+@API(title = "售后bom变更单")
+public class aftersalesbomchange extends Controller {
+    public aftersalesbomchange(JSONObject content) throws YosException {
+        super(content);
+    }
+
+    @API(title = "售后bom变更单新增更新", apiversion = R.ID2025071511171103.v1.class, intervaltime = 200)
+    @CACHEING_CLEAN(apiClass = {aftersalesbomchange.class})
+    public String insertormodify_aftersalesbomchange() throws YosException {
+        ArrayList<String> sqlList = new ArrayList<>();
+        // 表名
+        String tableName = "sa_aftersalesbomchange";
+        Long sa_aftersalesbomchangeid = content.getLong("sa_aftersalesbomchangeid");
+        String type = content.getString("type");
+
+        if (sa_aftersalesbomchangeid > 0 && dbConnect.runSqlQuery(
+                        "select sa_aftersalesbomchangeid from sa_aftersalesbomchange where sa_aftersalesbomchangeid=" + sa_aftersalesbomchangeid)
+                .isNotEmpty()) {
+            Rows rows = dbConnect.runSqlQuery(
+                    "SELECT status from sa_aftersalesbomchange WHERE sa_aftersalesbomchangeid = "
+                            + sa_aftersalesbomchangeid);
+            if (rows.isNotEmpty()) {
+                if (rows.get(0).getString("status").equals("新建")) {
+                    UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, tableName);
+                    updateSQL.setUniqueid(sa_aftersalesbomchangeid);
+                    updateSQL.setSiteid(siteid);
+                    updateSQL.setValue("type", type);
+                    updateSQL.setDateValue("changedate");
+                    updateSQL.setValue("changeby", username);
+                    sqlList.add(updateSQL.getSQL());
+                    sqlList.add(DataContrlLog.createLog(this, "sa_aftersalesbomchange", sa_aftersalesbomchangeid, "更新", "售后bom变更单更新成功")
+                            .getSQL());
+                } else {
+                    return getErrReturnObject().setErrMsg("非新建状态下无法编辑").toString();
+                }
+
+            } else {
+                return getErrReturnObject().setErrMsg("该售后bom变更单不存在").toString();
+            }
+
+        }else{
+            InsertSQL insertSQL = SQLFactory.createInsertSQL(this, tableName);
+            sa_aftersalesbomchangeid=createTableID(tableName);
+            insertSQL.setUniqueid(sa_aftersalesbomchangeid);
+            insertSQL.setSiteid(siteid);
+            insertSQL.setValue("type", type);
+            insertSQL.setValue("billno", createBillCode("aftersalesbomchange"));
+            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_aftersalesbomchangeid", sa_aftersalesbomchangeid);
+
+        return queryaftersalesbomchangeMain();
+    }
+
+
+    @API(title = "售后bom变更单详情", apiversion = R.ID2025071511172503.v1.class)
+    @CACHEING
+    public String queryaftersalesbomchangeMain() throws YosException {
+        Long sa_aftersalesbomchangeid = content.getLong("sa_aftersalesbomchangeid");
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_aftersalesbomchange", "*");
+        querySQL.setTableAlias("t1");
+        querySQL.setSiteid(siteid);
+        querySQL.setWhere("t1.sa_aftersalesbomchangeid",sa_aftersalesbomchangeid);
+        querySQL.setPage(pageSize, pageNumber);
+        Rows rows = querySQL.query();
+
+        return getSucReturnObject().setData(rows).toString();
+    }
+
+
+
+
+    @API(title = "查询售后bom变更单列表", apiversion = R.ID2025071511173303.v1.class)
+    @CACHEING
+    public String queryaftersalesbomchangeList() 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.type like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append(")");
+            }
+            if (whereObject.containsKey("begindate") && !"".equals(whereObject.getString("begindate"))) {
+
+                where.append(" and t1.createdate >='" + whereObject.getString("begindate")).append("' ");
+            }
+            if (whereObject.containsKey("enddate") && !"".equals(whereObject.getString("enddate"))) {
+                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_aftersalesbomchange", "*");
+        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.ID2025071511174303.v1.class)
+    @CACHEING_CLEAN(apiClass = {aftersalesbomchange.class})
+    public String delete() throws YosException {
+
+        JSONArray sa_aftersalesbomchangeids = content.getJSONArray("sa_aftersalesbomchangeids");
+        BatchDeleteErr batchDeleteErr = BatchDeleteErr.create(this, sa_aftersalesbomchangeids.size());
+        for (Object o : sa_aftersalesbomchangeids) {
+            long sa_aftersalesbomchangeid = Long.parseLong(o.toString());
+            Rows RowsStatus = dbConnect
+                    .runSqlQuery("select sa_aftersalesbomchangeid,status from sa_aftersalesbomchange where siteid='" + siteid
+                            + "' and sa_aftersalesbomchangeid='" + sa_aftersalesbomchangeid + "'");
+
+            if (RowsStatus.isNotEmpty()) {
+                if (!RowsStatus.get(0).getString("status").equals("新建")) {
+                    batchDeleteErr.addErr(sa_aftersalesbomchangeid, "非新建状态的售后bom变更单无法删除");
+                    continue;
+                }
+            }
+
+            dbConnect.runSqlUpdate("delete from sa_aftersalesbomchange where siteid='" + siteid + "' and sa_aftersalesbomchangeid="
+                    + sa_aftersalesbomchangeid);
+            dbConnect.runSqlUpdate("delete from sa_aftersalesbomchange_items where siteid='" + siteid + "' and sa_aftersalesbomchangeid="
+                    + sa_aftersalesbomchangeid);
+            dbConnect.runSqlUpdate("delete from sa_aftersalesbomchange_pjs where siteid='" + siteid + "' and sa_aftersalesbomchangeid="
+                    + sa_aftersalesbomchangeid);
+        }
+        return batchDeleteErr.getReturnObject().toString();
+
+    }
+
+    @API(title = "审核", apiversion = R.ID2025071511175303.v1.class)
+    @CACHEING_CLEAN( apiClass = {aftersalesbomchange.class})
+    public String check() throws YosException {
+        Long sa_aftersalesbomchangeid = content.getLong("sa_aftersalesbomchangeid");
+        boolean ischeck =true;
+        Rows rows = dbConnect.runSqlQuery("select t1.sa_aftersalesbomchangeid,t1.status,t1.billno,t1.type from sa_aftersalesbomchange t1 where t1.sa_aftersalesbomchangeid ='"
+                + sa_aftersalesbomchangeid + "' and  t1.siteid='" + siteid + "'");
+        for (Row row : rows) {
+            if(ischeck){
+                if (!row.getString("status").equals("新建")) {
+                    return getErrReturnObject().setErrMsg("非新建状态的【"+row.getString("billno")+"】售后bom变更单无法审核")
+                            .toString();
+                }
+            }else{
+                if (!row.getString("status").equals("审核")) {
+                    return getErrReturnObject().setErrMsg("非审核状态的【"+row.getString("billno")+"】售后bom变更单无法反审核")
+                            .toString();
+                }
+            }
+        }
+        ArrayList<String> sqlList = new ArrayList<>();
+        UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_aftersalesbomchange");
+        updateSQL.setUniqueid(sa_aftersalesbomchangeid);
+        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){
+            Rows rowsdetail;
+            if(rows.get(0).getString("type").equals("产品变更")){
+                rowsdetail=dbConnect.runSqlQuery("select * from sa_aftersalesbomchange_items t1 where t1.sa_aftersalesbomchangeid ='"
+                        + sa_aftersalesbomchangeid + "' and  t1.siteid='" + siteid + "'");
+                for(Row row :rowsdetail){
+                    if(row.getString("type").equals("新增")){
+                        InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sa_aftersalesbom_items");
+                        insertSQL.setUniqueid(createTableID("sa_aftersalesbom_items"));
+                        insertSQL.setSiteid(siteid);
+                        insertSQL.setValue("sa_aftersalesbomid", row.getLong("sa_aftersalesbomid"));
+                        insertSQL.setValue("itemid", row.getLong("itemid"));
+                        insertSQL.setValue("itemname", row.getString("itemname"));
+                        insertSQL.setValue("itemno", row.getString("itemno"));
+                        insertSQL.setValue("spec", row.getString("spec"));
+                        sqlList.add(insertSQL.getSQL());
+                    }else if(row.getString("type").equals("删除")){
+                        sqlList.add("delete from sa_aftersalesbom_items where sa_aftersalesbomid="+row.getLong("sa_aftersalesbomid")+" and itemid="+row.getLong("itemid")+" and siteid='"+siteid+"'");
+                    }
+                }
+            }else if(rows.get(0).getString("type").equals("配件变更")){
+                rowsdetail=dbConnect.runSqlQuery("select * from sa_aftersalesbomchange_pjs t1 where t1.sa_aftersalesbomchangeid ='"
+                        + sa_aftersalesbomchangeid + "' and  t1.siteid='" + siteid + "'");
+                for(Row row :rowsdetail){
+                    if(row.getString("type").equals("新增")){
+                        InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sa_aftersalesbom_pjs");
+                        insertSQL.setUniqueid(createTableID("sa_aftersalesbom_pjs"));
+                        insertSQL.setSiteid(siteid);
+                        insertSQL.setValue("sa_aftersalesbomid", row.getLong("sa_aftersalesbomid"));
+                        insertSQL.setValue("module", row.getString("module"));
+                        insertSQL.setValue("component", row.getString("component"));
+                        insertSQL.setValue("accessorie", row.getString("accessorie"));
+                        insertSQL.setValue("itemid", row.getLong("itemid"));
+                        insertSQL.setValue("itemname", row.getString("itemname"));
+                        insertSQL.setValue("itemno", row.getString("itemno"));
+                        insertSQL.setValue("begindate", StringUtils.isBlank(row.getString("begindate")) ?"null":row.getString("begindate"));
+                        insertSQL.setValue("enddate", StringUtils.isBlank(row.getString("enddate")) ?"null":row.getString("enddate"));
+                        sqlList.add(insertSQL.getSQL());
+                    }else if(row.getString("type").equals("停用")){
+                        sqlList.add("update sa_aftersalesbom_pjs set enddate='"+(StringUtils.isBlank(row.getString("enddate")) ?"null":row.getString("enddate"))+"' where sa_aftersalesbomid="+row.getLong("sa_aftersalesbomid")+" and itemid="+row.getLong("itemid"));
+                    }
+                    sqlList.add(DataContrlLog.createLog(this, "sa_aftersalesbom", row.getLong("sa_aftersalesbomid"), row.getString("type"), "售后bom变更单审核成功,"+row.getString("itemno")+row.getString("type")).getSQL());
+                }
+            }else{
+                return getErrReturnObject().setErrMsg("售后bom变更单变更类型不符无法审核").toString();
+            }
+        }
+
+
+        if (ischeck) {
+            sqlList.add(
+                    DataContrlLog.createLog(this, "sa_aftersalesbomchange", sa_aftersalesbomchangeid, "审核", "售后bom变更单审核成功").getSQL());
+        } else {
+            sqlList.add(
+                    DataContrlLog.createLog(this, "sa_aftersalesbomchange", sa_aftersalesbomchangeid, "反审核", "售后bom变更单反审核成功").getSQL());
+        }
+        dbConnect.runSqlUpdate(sqlList);
+        return getSucReturnObject().toString();
+    }
+}

+ 181 - 0
src/custom/restcontroller/webmanage/sale/aftersalesbomchange/aftersalesbomchange_items.java

@@ -0,0 +1,181 @@
+package restcontroller.webmanage.sale.aftersalesbomchange;
+
+import beans.data.BatchDeleteErr;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import common.BaseClass;
+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 java.util.ArrayList;
+
+@API(title = "售后bom变更单变更单产品清单")
+public class aftersalesbomchange_items extends Controller {
+    public aftersalesbomchange_items(JSONObject content) throws YosException {
+        super(content);
+    }
+
+
+    @API(title = "售后bom产品列表查询", apiversion = R.ID2025071511273703.v1.class)
+    @CACHEING
+    public String queryItemList() throws YosException {
+        /*
+         * 过滤条件设置
+         */
+        long sa_aftersalesbomid =content.getLong("sa_aftersalesbomid");
+        long sa_aftersalesbomchangeid =content.getLong("sa_aftersalesbomchangeid");
+        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(")");
+            }
+        }
+
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_aftersalesbom_items", "*");
+        querySQL.setTableAlias("t1");
+        querySQL.setSiteid(siteid);
+        querySQL.setWhere("t1.sa_aftersalesbomid",sa_aftersalesbomid);
+        querySQL.setWhere("t1.itemid not in (select itemid from  sa_aftersalesbomchange_items where sa_aftersalesbomchangeid="+sa_aftersalesbomchangeid+")");
+        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.ID2025071511275403.v1.class)
+    @CACHEING_CLEAN(apiClass = {aftersalesbomchange.class, aftersalesbomchange_items.class})
+    public String insertormodify_aftersalesbomchangeitems() throws YosException {
+        Long sa_aftersalesbomchangeid = content.getLong("sa_aftersalesbomchangeid");
+        JSONArray iteminfos = content.getJSONArray("iteminfos");
+        ArrayList<String> sqlList = new ArrayList<>();
+        Rows rowscount = dbConnect.runSqlQuery("select billno,status from sa_aftersalesbomchange where sa_aftersalesbomchangeid=" + sa_aftersalesbomchangeid);
+        if (!rowscount.isEmpty()) {
+            if (!rowscount.get(0).getString("status").equals("新建")) {
+                return getErrReturnObject().setErrMsg("非新建状态的售后bom变更单无法新增修改").toString();
+            }
+        }
+        int i = 0;
+        long maxid = 0;
+        long[] sa_aftersalesbomchange_itemsid = createTableID("sa_aftersalesbomchange_items", iteminfos.size());
+        for (Object obj : iteminfos) {
+            JSONObject iteminfo = (JSONObject) obj;
+            if (iteminfo.getLong("sa_aftersalesbomchange_itemsid") <= 0 || dbConnect
+                    .runSqlQuery("select sa_aftersalesbomchange_itemsid from sa_aftersalesbomchange_items where sa_aftersalesbomchange_itemsid="
+                            + iteminfo.getLong("sa_aftersalesbomchange_itemsid"))
+                    .isEmpty()) {
+                InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sa_aftersalesbomchange_items");
+                insertSQL.setUniqueid(sa_aftersalesbomchange_itemsid[i]);
+                insertSQL.setSiteid(siteid);
+                insertSQL.setValue("sa_aftersalesbomchangeid", sa_aftersalesbomchangeid);
+                insertSQL.setValue("itemid", iteminfo.getStringValue("itemid"));
+                insertSQL.setValue("itemname", iteminfo.getStringValue("itemname"));
+                insertSQL.setValue("itemno", iteminfo.getStringValue("itemno"));
+                insertSQL.setValue("spec", iteminfo.getStringValue("spec"));
+                insertSQL.setValue("type", iteminfo.getStringValue("type"));
+                insertSQL.setValue("sa_aftersalesbomid", iteminfo.getLongValue("sa_aftersalesbomid"));
+                i++;
+                sqlList.add(insertSQL.getSQL());
+            } else {
+                Rows rows = dbConnect.runSqlQuery(
+                        "SELECT status from sa_aftersalesbomchange WHERE sa_aftersalesbomchangeid = "
+                                + sa_aftersalesbomchangeid);
+                if (rows.isNotEmpty()) {
+                    if (rows.get(0).getString("status").equals("新建")) {
+
+                        UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_aftersalesbomchange_items");
+                        updateSQL.setUniqueid(iteminfo.getLong("sa_aftersalesbomchange_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"));
+                        updateSQL.setValue("type", iteminfo.getStringValue("type"));
+                        updateSQL.setValue("sa_aftersalesbomid", iteminfo.getLongValue("sa_aftersalesbomid"));
+                        sqlList.add(updateSQL.getSQL());
+                    } else {
+                        return getErrReturnObject().setErrMsg("非新建状态下无法编辑").toString();
+                    }
+
+                } else {
+                    return getErrReturnObject().setErrMsg("该售后bom变更单不存在").toString();
+                }
+            }
+
+        }
+        dbConnect.runSqlUpdate(sqlList);
+        return queraftersalesbomchangeitemsList();
+    }
+
+
+    @API(title = "售后bom变更单产品清单列表", apiversion = R.ID2025071511280403.v1.class)
+    @CACHEING
+    public String queraftersalesbomchangeitemsList() 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_aftersalesbomchangeid = content.getLong("sa_aftersalesbomchangeid");
+
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_aftersalesbomchange_items",  "*");
+        querySQL.setTableAlias("t1");
+        querySQL.addJoinTable(BaseClass.JOINTYPE.left, "sa_aftersalesbom", "t2", "t1.sa_aftersalesbomid=t2.sa_aftersalesbomid and t1.siteid=t2.siteid","billno","name");
+        querySQL.setSiteid(siteid);
+        querySQL.setWhere("t1.sa_aftersalesbomchangeid",sa_aftersalesbomchangeid);
+        querySQL.setWhere(where.toString());
+        querySQL.setPage(pageSize, pageNumber);
+        Rows rows = querySQL.query();
+
+        return getSucReturnObject().setData(rows).toString();
+    }
+
+
+    @API(title = "删除明细", apiversion = R.ID2025071511281303.v1.class)
+    @CACHEING_CLEAN(apiClass = {aftersalesbomchange.class, aftersalesbomchange_items.class})
+    public String deletemx() throws YosException {
+
+        JSONArray sa_aftersalesbomchange_itemsids = content.getJSONArray("sa_aftersalesbomchange_itemsids");
+        BatchDeleteErr batchDeleteErr = BatchDeleteErr.create(this, sa_aftersalesbomchange_itemsids.size());
+        for (Object o : sa_aftersalesbomchange_itemsids) {
+            long sa_aftersalesbomchange_itemsid = Long.parseLong(o.toString());
+            Rows RowsStatus = dbConnect.runSqlQuery("select t1.sa_aftersalesbomchange_itemsid,t2.status,t1.sa_aftersalesbomchangeid from sa_aftersalesbomchange_items t1 left join sa_aftersalesbomchange t2 on t1.sa_aftersalesbomchangeid=t2.sa_aftersalesbomchangeid and t1.siteid=t2.siteid where t1.siteid='"
+                    + siteid + "' and t1.sa_aftersalesbomchange_itemsid='" + sa_aftersalesbomchange_itemsid + "'");
+
+            if (RowsStatus.isNotEmpty()) {
+                if (!RowsStatus.get(0).getString("status").equals("新建")) {
+                    batchDeleteErr.addErr(sa_aftersalesbomchange_itemsid, "非新建状态的售后bom变更单明细无法删除");
+                    continue;
+                }
+            }
+            ArrayList<String> list = new ArrayList<>();
+            list.add("delete from sa_aftersalesbomchange_items where siteid='" + siteid
+                    + "' and sa_aftersalesbomchange_itemsid=" + sa_aftersalesbomchange_itemsid);
+
+            dbConnect.runSqlUpdate(list);
+        }
+
+        return batchDeleteErr.getReturnObject().toString();
+    }
+}

+ 227 - 0
src/custom/restcontroller/webmanage/sale/aftersalesbomchange/aftersalesbomchange_pjs.java

@@ -0,0 +1,227 @@
+package restcontroller.webmanage.sale.aftersalesbomchange;
+
+import beans.data.BatchDeleteErr;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import common.BaseClass;
+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 java.util.ArrayList;
+
+@API(title = "售后bom变更单变更单产品清单")
+public class aftersalesbomchange_pjs extends Controller {
+    public aftersalesbomchange_pjs(JSONObject content) throws YosException {
+        super(content);
+    }
+
+
+    @API(title = "通过bomid查询配件列表", apiversion = R.ID2025071513211903.v1.class)
+    @CACHEING
+    public String queryItemList() throws YosException {
+        /*
+         * 过滤条件设置
+         */
+        long plm_bomid =content.getLong("plm_bomid");
+        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("t2.itemname like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append("or t2.itemno like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append("or t2.spec like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append(")");
+            }
+        }
+
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_itemsalebom", "*");
+        querySQL.setTableAlias("t1");
+        querySQL.addJoinTable(BaseClass.JOINTYPE.inner, "plm_item", "t2", "t2.itemid=t1.itemid and t2.siteid=t1.siteid","itemno","itemname");
+        querySQL.setSiteid(siteid);
+        querySQL.setWhere("t1.plm_bomid",plm_bomid);
+        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.ID2025071515025303.v1.class)
+    @CACHEING
+    public String querysalebomList() throws YosException {
+        /*
+         * 过滤条件设置
+         */
+        boolean iscontinitem =content.getBooleanValue("iscontinitem");
+        long itemid =content.getLong("itemid");
+        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.name like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append(")");
+            }
+        }
+
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_aftersalesbom", "*");
+        querySQL.setTableAlias("t1");
+        querySQL.setSiteid(siteid);
+        if(iscontinitem){
+            querySQL.setWhere("t1.sa_aftersalesbomid in (select sa_aftersalesbomid from sa_aftersalesbom_pjs where itemid="+itemid+")");
+        }else{
+            querySQL.setWhere("t1.sa_aftersalesbomid not in (select sa_aftersalesbomid from sa_aftersalesbom_pjs where itemid="+itemid+")");
+        }
+
+        querySQL.setWhere("t1.status='审核'");
+        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.ID2025071513212803.v1.class)
+    @CACHEING_CLEAN(apiClass = {aftersalesbomchange.class, aftersalesbomchange_pjs.class})
+    public String insertormodify_aftersalesbomchangeitems() throws YosException {
+        Long sa_aftersalesbomchangeid = content.getLong("sa_aftersalesbomchangeid");
+        JSONArray iteminfos = content.getJSONArray("iteminfos");
+        ArrayList<String> sqlList = new ArrayList<>();
+        Rows rowscount = dbConnect.runSqlQuery("select billno,status from sa_aftersalesbomchange where sa_aftersalesbomchangeid=" + sa_aftersalesbomchangeid);
+        if (!rowscount.isEmpty()) {
+            if (!rowscount.get(0).getString("status").equals("新建")) {
+                return getErrReturnObject().setErrMsg("非新建状态的售后bom变更单无法新增修改").toString();
+            }
+        }
+        int i = 0;
+        long maxid = 0;
+        long[] sa_aftersalesbomchange_pjsid = createTableID("sa_aftersalesbomchange_pjs", iteminfos.size());
+        for (Object obj : iteminfos) {
+            JSONObject iteminfo = (JSONObject) obj;
+            if (iteminfo.getLong("sa_aftersalesbomchange_pjsid") <= 0 || dbConnect
+                    .runSqlQuery("select sa_aftersalesbomchange_pjsid from sa_aftersalesbomchange_pjs where sa_aftersalesbomchange_pjsid="
+                            + iteminfo.getLong("sa_aftersalesbomchange_pjsid"))
+                    .isEmpty()) {
+                InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sa_aftersalesbomchange_pjs");
+                insertSQL.setUniqueid(sa_aftersalesbomchange_pjsid[i]);
+                insertSQL.setSiteid(siteid);
+                insertSQL.setValue("sa_aftersalesbomchangeid", sa_aftersalesbomchangeid);
+                insertSQL.setValue("itemid", iteminfo.getStringValue("itemid"));
+                insertSQL.setValue("itemname", iteminfo.getStringValue("itemname"));
+                insertSQL.setValue("itemno", iteminfo.getStringValue("itemno"));
+                insertSQL.setValue("module", iteminfo.getStringValue("module"));
+                insertSQL.setValue("component", iteminfo.getStringValue("component"));
+                insertSQL.setValue("accessorie", iteminfo.getStringValue("accessorie"));
+                insertSQL.setValue("begindate", StringUtils.isBlank(iteminfo.getStringValue("begindate")) ?"null":iteminfo.getStringValue("begindate"));
+                insertSQL.setValue("enddate", StringUtils.isBlank(iteminfo.getStringValue("enddate")) ?"null":iteminfo.getStringValue("enddate"));
+                insertSQL.setValue("type", iteminfo.getStringValue("type"));
+                insertSQL.setValue("sa_aftersalesbomid", iteminfo.getLongValue("sa_aftersalesbomid"));
+                i++;
+                sqlList.add(insertSQL.getSQL());
+            } else {
+                Rows rows = dbConnect.runSqlQuery(
+                        "SELECT status from sa_aftersalesbomchange WHERE sa_aftersalesbomchangeid = "
+                                + sa_aftersalesbomchangeid);
+                if (rows.isNotEmpty()) {
+                    if (rows.get(0).getString("status").equals("新建")) {
+
+                        UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_aftersalesbomchange_pjs");
+                        updateSQL.setUniqueid(iteminfo.getLong("sa_aftersalesbomchange_pjsid"));
+                        updateSQL.setSiteid(siteid);
+                        updateSQL.setValue("itemid", iteminfo.getStringValue("itemid"));
+                        updateSQL.setValue("itemname", iteminfo.getStringValue("itemname"));
+                        updateSQL.setValue("itemno", iteminfo.getStringValue("itemno"));
+                        updateSQL.setValue("module", iteminfo.getStringValue("module"));
+                        updateSQL.setValue("component", iteminfo.getStringValue("component"));
+                        updateSQL.setValue("accessorie", iteminfo.getStringValue("accessorie"));
+                        updateSQL.setValue("type", iteminfo.getStringValue("type"));
+                        updateSQL.setValue("sa_aftersalesbomid", iteminfo.getLongValue("sa_aftersalesbomid"));
+                        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 queraftersalesbomchangeitemsList();
+    }
+
+
+
+    @API(title = "售后bom变更单产品清单列表", apiversion = R.ID2025071513214003.v1.class)
+    @CACHEING
+    public String queraftersalesbomchangeitemsList() 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(")");
+            }
+        }
+        Long sa_aftersalesbomchangeid = content.getLong("sa_aftersalesbomchangeid");
+
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_aftersalesbomchange_pjs",  "*");
+        querySQL.setTableAlias("t1");
+        querySQL.addJoinTable(JOINTYPE.left, "sa_aftersalesbom", "t2", "t1.sa_aftersalesbomid=t2.sa_aftersalesbomid and t1.siteid=t2.siteid","billno","name");
+        querySQL.setSiteid(siteid);
+        querySQL.setWhere("t1.sa_aftersalesbomchangeid",sa_aftersalesbomchangeid);
+        querySQL.setWhere(where.toString());
+        querySQL.setPage(pageSize, pageNumber);
+        Rows rows = querySQL.query();
+
+        return getSucReturnObject().setData(rows).toString();
+    }
+
+
+
+    @API(title = "删除明细", apiversion = R.ID2025071513215203.v1.class)
+    @CACHEING_CLEAN(apiClass = {aftersalesbomchange.class, aftersalesbomchange_pjs.class})
+    public String deletemx() throws YosException {
+
+        JSONArray sa_aftersalesbomchange_pjsids = content.getJSONArray("sa_aftersalesbomchange_pjsids");
+        BatchDeleteErr batchDeleteErr = BatchDeleteErr.create(this, sa_aftersalesbomchange_pjsids.size());
+        for (Object o : sa_aftersalesbomchange_pjsids) {
+            long sa_aftersalesbomchange_pjsid = Long.parseLong(o.toString());
+            Rows RowsStatus = dbConnect.runSqlQuery("select t1.sa_aftersalesbomchange_pjsid,t2.status,t1.sa_aftersalesbomchangeid from sa_aftersalesbomchange_pjs t1 left join sa_aftersalesbomchange t2 on t1.sa_aftersalesbomchangeid=t2.sa_aftersalesbomchangeid and t1.siteid=t2.siteid where t1.siteid='"
+                    + siteid + "' and t1.sa_aftersalesbomchange_pjsid='" + sa_aftersalesbomchange_pjsid + "'");
+
+            if (RowsStatus.isNotEmpty()) {
+                if (!RowsStatus.get(0).getString("status").equals("新建")) {
+                    batchDeleteErr.addErr(sa_aftersalesbomchange_pjsid, "非新建状态的售后bom变更单明细无法删除");
+                    continue;
+                }
+            }
+            ArrayList<String> list = new ArrayList<>();
+            list.add("delete from sa_aftersalesbomchange_pjs where siteid='" + siteid
+                    + "' and sa_aftersalesbomchange_pjsid=" + sa_aftersalesbomchange_pjsid);
+
+            dbConnect.runSqlUpdate(list);
+        }
+
+        return batchDeleteErr.getReturnObject().toString();
+    }
+}