Sfoglia il codice sorgente

新增经销商查重规则

wu 1 settimana fa
parent
commit
d78b6a6fce

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

@@ -7572,6 +7572,11 @@ public class R {
         public static class v1 {
         }
     }
+
+    public static class ID2025121613475302 {
+        public static class v1 {
+        }
+    }
 }
 
 

+ 205 - 0
src/custom/restcontroller/webmanage/sale/salearea/Agents.java

@@ -0,0 +1,205 @@
+package restcontroller.webmanage.sale.salearea;
+
+import beans.customers.Customers;
+import beans.datatag.DataTag;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import common.Controller;
+import common.YosException;
+import common.data.Row;
+import common.data.Rows;
+import common.data.RowsMap;
+import common.data.SQLFactory;
+
+import java.util.ArrayList;
+
+public class Agents {
+
+    public static ArrayList<Long> getRepeatAgents(Controller controller, Long sa_agentsid) throws YosException {
+
+        JSONObject ruleObj = controller.dbConnect.runSqlQuery("select agentcheckrule from sys_site_parameter WHERE siteid='" + controller.siteid + "'").get(0).getJSONObject("agentcheckrule");
+        if (ruleObj == null) {
+            return new ArrayList<>();
+        }
+        Row agentRow = new Row();
+        if (sa_agentsid > 0) {
+            Rows agentRows = controller.dbConnect.runSqlQuery("SELECT * from v_agents_check WHERE sa_agentsid=" + sa_agentsid + " and siteid='" + controller.siteid + "'");
+            if (agentRows.isNotEmpty()) {
+                agentRow = agentRows.get(0);
+            }
+        }
+
+
+        StringBuffer where = new StringBuffer("");
+        //第一层
+        if (ruleObj.containsKey("fields1")) {
+            JSONArray fields1 = ruleObj.getJSONArray("fields1");
+            String factor1 = ruleObj.getString("factor1");
+            if (fields1.size() > 0) {
+                if (sa_agentsid > 0) {
+                    where = setWhere(controller, agentRow, where, fields1, factor1);
+                } else {
+                    where = setWhere(controller, where, fields1, factor1);
+                }
+            } else {
+                where.append("1=2");
+            }
+            //第二层
+            if (fields1.size() > 0) {
+                if (ruleObj.containsKey("fields2")) {
+                    JSONArray fields2 = ruleObj.getJSONArray("fields2");
+                    String factor2 = ruleObj.getString("factor2");
+                    if (fields2.size() > 0) {
+                        where.append("and");
+                        if (sa_agentsid > 0) {
+                            where = setWhere(controller, agentRow, where, fields2, factor2);
+                        } else {
+                            where = setWhere(controller, where, fields2, factor2);
+                        }
+
+                    }
+                    //第三层
+                    if (fields2.size() > 0) {
+                        if (ruleObj.containsKey("fields3")) {
+                            JSONArray fields3 = ruleObj.getJSONArray("fields3");
+                            String factor3 = ruleObj.getString("factor3");
+                            if (fields3.size() > 0) {
+                                where.append("and");
+                                if (sa_agentsid > 0) {
+                                    where = setWhere(controller, agentRow, where, fields3, factor3);
+                                } else {
+                                    where = setWhere(controller, where, fields3, factor3);
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+        SQLFactory sqlFactory = new SQLFactory(new Agents(), "经销商查重");
+        sqlFactory.addParameter("siteid", controller.siteid);
+        sqlFactory.addParameter("sa_agentsid", sa_agentsid);
+        sqlFactory.addParameter_SQL("where", where);
+        String sql = sqlFactory.getSQL();
+        Rows rows = controller.dbConnect.runSqlQuery(sql);
+
+//        if (sa_agentsid > 0) {
+//
+//            DataTag.deleteTag(controller, "sa_agentsid", sa_agentsid, "疑似重复");
+//            controller.cleanAllDataPool();
+//        }
+
+        return rows.toArrayList("sa_agentsid", new ArrayList<>());
+    }
+
+    public static StringBuffer setWhere(Controller controller, StringBuffer where, JSONArray fields, String factor) {
+        where.append("(");
+        for (int i = 0; i < fields.size(); i++) {
+            String key = fields.get(i).toString();
+            String value = controller.content.getStringValue(key);
+            if (i == 0) {
+                where.append("(" + key + "='" + value + "'");
+                where.append(" and ").append("LENGTH(" + key + ")>0");
+                where.append(")");
+            } else {
+                where.append(" " + factor + " ").append("(" + key + "='" + value + "'");
+                where.append(" and ").append("LENGTH(" + key + ")>0");
+                where.append(")");
+            }
+        }
+        where.append(")");
+        return where;
+    }
+
+    public static StringBuffer setWhere(Controller controller, Row row, StringBuffer where, JSONArray fields, String factor) {
+        where.append("(");
+        for (int i = 0; i < fields.size(); i++) {
+            String key = fields.get(i).toString();
+            String value = row.get(key).toString();
+            if (!controller.content.getStringValue(key).equals(value)) {
+                value = controller.content.getStringValue(key);
+            }
+            if (i == 0) {
+                where.append("(" + key + "='" + value + "'");
+                where.append(" and ").append("LENGTH(" + key + ")>0");
+                where.append(")");
+            } else {
+                where.append(" " + factor + " ").append("(" + key + "='" + value + "'");
+                where.append(" and ").append("LENGTH(" + key + ")>0");
+                where.append(")");
+            }
+        }
+        where.append(")");
+        return where;
+    }
+
+    public static RowsMap getRepeatChars(Controller controller, ArrayList<Long> sa_agentsids, Long sa_agentsid) throws YosException {
+        RowsMap rowsMap = new RowsMap();
+        JSONObject ruleObj = controller.dbConnect.runSqlQuery("select agentcheckrule from sys_site_parameter WHERE siteid='" + controller.siteid + "'").get(0).getJSONObject("agentcheckrule");
+        if (ruleObj == null || sa_agentsids.size() == 0) {
+            return rowsMap;
+        }
+        Row sourceRow = new Row();
+        Rows sourceRows = controller.dbConnect.runSqlQuery("SELECT*FROM v_agents_check WHERE sa_agentsid=" + sa_agentsid + " AND siteid='" + controller.siteid + "'");
+        if (sourceRows.isNotEmpty()) {
+            sourceRow = sourceRows.get(0);
+        }
+
+        String sql = "SELECT*FROM v_agents_check WHERE sa_agentsid in " + sa_agentsids + " AND siteid='" + controller.siteid + "'";
+        sql = sql.replace("[", "(").replace("]", ")");
+        Rows rows = controller.dbConnect.runSqlQuery(sql);
+
+        Rows charRows = new Rows();
+        if (ruleObj.containsKey("fields1")) {
+            JSONArray fields = ruleObj.getJSONArray("fields1");
+            String factor = ruleObj.getString("factor1");
+            charRows.addAll(getChars(controller, fields, factor, rows, sourceRow));
+            if (ruleObj.containsKey("fields2")) {
+                JSONArray fields2 = ruleObj.getJSONArray("fields2");
+                String factor2 = ruleObj.getString("factor2");
+                charRows.addAll(getChars(controller, fields2, factor2, rows, sourceRow));
+                if (ruleObj.containsKey("fields3")) {
+                    JSONArray fields3 = ruleObj.getJSONArray("fields3");
+                    String factor3 = ruleObj.getString("factor3");
+                    charRows.addAll(getChars(controller, fields3, factor3, rows, sourceRow));
+                }
+            }
+        }
+
+
+        return charRows.toRowsMap("sa_agentsid");
+    }
+
+    public static Rows getChars(Controller controller, JSONArray fields, String factor, Rows rows, Row sourceRow) {
+        Rows resrows = new Rows();
+        for (Row row : rows) {
+            Rows charrows = new Rows();
+            for (Object object : fields) {
+                String key = object.toString();
+                if (controller.content.containsKey(key) && row.containsKey(key)) {
+                    String value = controller.content.get(key).toString();
+                    if (value.isEmpty() && !sourceRow.isEmpty()) {
+                        value = sourceRow.get(key).toString();
+                    }
+                    if (row.get(key).toString().equals(value)) {
+                        Row charrow = new Row();
+                        charrow.put(key, row.get(key).toString());
+                        charrow.put("sa_agentsid", row.getString("sa_agentsid"));
+                        charrows.add(charrow);
+                    }
+                }
+            }
+            if (factor.equalsIgnoreCase("and") && charrows.size() == fields.size()) {
+                resrows.addAll(charrows);
+            }
+            if (factor.equalsIgnoreCase("or")) {
+                resrows.addAll(charrows);
+            }
+        }
+
+
+        return resrows;
+    }
+
+}

+ 5 - 0
src/custom/restcontroller/webmanage/sale/salearea/SQL/经销商查重.sql

@@ -0,0 +1,5 @@
+SELECT sa_agentsid
+from v_agents_check
+WHERE siteid = $siteid$
+  and sa_agentsid != $sa_agentsid$
+  and   ($where$)

+ 47 - 1
src/custom/restcontroller/webmanage/sale/salearea/salearea.java

@@ -25,7 +25,6 @@ import java.io.IOException;
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.HashSet;
 
 @API(title = "营销区域管理")
 public class salearea extends Controller {
@@ -627,5 +626,52 @@ public class salearea extends Controller {
         return getSucReturnObject().toString();
     }
 
+    @API(title = "经销商查重", apiversion = R.ID2025121613475302.v1.class)
+    public String agentrepeat() throws YosException {
+
+        String tablename = "sa_agents";
+        Long sa_agentsid = content.getLong("sa_agentsid");
+        ArrayList<Long> sa_agentsids = Agents.getRepeatAgents(this, sa_agentsid);
+        if (sa_agentsids.isEmpty()) {
+            return getSucReturnObject().setData(new Rows()).toString();
+        }
+
+
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_agents",
+                        "sa_agentsid", "sys_enterpriseid", "gmname", "gmphonenumber", "agentnum", "cooperatetype", "remarks", "status", "createdate", "scale", "mainproducts").
+                setTableAlias("t1");
+        querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t2", "t1.siteid = t2.siteid and t1.sys_enterpriseid = t2.sys_enterpriseid",
+                "enterprisename", "province", "city", "county", "address");
+        querySQL.addJoinTable(JOINTYPE.left, "sys_dataextend", "t3", "t1.sys_enterpriseid = t3.ownerid and ownertable = 'sys_enterprise' and t1.siteid = t3.siteid",
+                "erpagentnum");
+        querySQL.addJoinTable(JOINTYPE.left, "sys_dataextend", "t4", "t1.siteid = t4.siteid and t1.sa_agentsid = t4.ownerid and t4.ownertable = 'sa_agents'",
+                "deletereason");
+        querySQL.addQueryFields("deletechangedate", "t4.changedate");
+        querySQL.addQueryFields("deletechangeby", "t4.changeby");
+        querySQL.setSiteid(siteid);
+        querySQL.setWhere("t1.sa_agentsid", sa_agentsids);
+
+        querySQL.setPage(pageSize, pageNumber);
+        querySQL.setOrderBy("t1.createdate desc");
+        Rows rows = querySQL.query();
+
+        RowsMap charsRowsMap = Agents.getRepeatChars(this, rows.toArrayList("sa_agentsid", new ArrayList<>()), sa_agentsid);
+
+        RowsMap areaRowsMap = CommonHepler.getAreaRowsMap(this, rows.toArrayList("sa_agentsid", new ArrayList<>()));
+        RowsMap salerRowsMap = CommonHepler.getSalerNameRowsMap(this, rows.toArrayList("sa_agentsid", new ArrayList<>()));
+        for (Row row : rows) {
+            row.put("p_c_c", row.getString("province") + "-" + row.getString("city") + "-" + row.getString("county"));
+            Rows areaRows = areaRowsMap.getOrDefault(row.getString("sa_agentsid"), new Rows());
+            row.put("areanames", StringUtils.join(areaRows.toArrayList("areaname"), ","));
+            Rows salerRows = salerRowsMap.getOrDefault(row.getString("sa_agentsid"), new Rows());
+            row.put("salernames", StringUtils.join(salerRows.toArrayList("name"), ","));
+            Long id = row.getLong("sa_agentsid");
+            Rows charsRows = charsRowsMap.getOrDefault(String.valueOf(id), new Rows());
+            charsRows.removeColumn("sa_agentsid");
+            row.put("chars", charsRows);
+        }
+        return getSucReturnObject().setData(rows).toString();
+    }
+
 
 }