|
|
@@ -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;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|