Ver Fonte

销售线索分配规则:新增刷入经销商数据接口,审核/反审核时自动维护分配范围

wu há 1 semana atrás
pai
commit
7b199558a2

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

@@ -7767,6 +7767,11 @@ public class R {
         public static class v1 {
         }
     }
+
+    public static class ID2026061210000101 {
+        public static class v1 {
+        }
+    }
 }
 
 

+ 36 - 7
src/custom/restcontroller/webmanage/sale/agents/agents.java

@@ -463,23 +463,52 @@ public class agents extends Controller {
         String status = content.getString("status");
         SQLList sqllist = new SQLList();
         JSONArray array = content.getJSONArray("sa_agentsids");
+
+        // 审核时,判断是否需要添加到sat_orderclue_area
+        if (status.equals("1")) {
+            ArrayList<Long> agentsids = new ArrayList<>();
+            for (Object o : array) {
+                agentsids.add(Long.parseLong(o.toString()));
+            }
+            QuerySQL agentQuery = SQLFactory.createQuerySQL(this, "sa_agents", "sa_agentsid", "sys_enterpriseid");
+            agentQuery.setWhere("sa_agentsid", agentsids);
+            agentQuery.setWhere("signingstate", "启用(正常)");
+            agentQuery.setWhere("type!='服务商'");
+            agentQuery.setWhere("not exists(select * from sat_orderclue_area t2 where t1.sys_enterpriseid=t2.sys_enterpriseid and t1.siteid=t2.siteid)");
+            agentQuery.setSiteid(siteid);
+            Rows agentRows = agentQuery.query();
+
+            if (agentRows.isNotEmpty()) {
+                QuerySQL hrQuery = SQLFactory.createQuerySQL(this, "sys_enterprise_hr", "sys_enterpriseid", "sys_enterprise_hrid");
+                hrQuery.setWhere("isleader", true);
+                hrQuery.setWhere("sys_enterpriseid", agentRows.toArrayList("sys_enterpriseid"));
+                RowsMap hrMap = hrQuery.query().toRowsMap("sys_enterpriseid");
+
+                for (Row row : agentRows) {
+                    long sys_enterpriseid = row.getLong("sys_enterpriseid");
+                    InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sat_orderclue_area");
+                    insertSQL.setValue("cluetype", "经销商");
+                    insertSQL.setValue("sys_enterpriseid", sys_enterpriseid);
+                    if (hrMap.containsKey(String.valueOf(sys_enterpriseid))) {
+                        insertSQL.setValue("hrid", hrMap.get(String.valueOf(sys_enterpriseid)).get(0).getLong("sys_enterprise_hrid"));
+                    }
+                    sqllist.add(insertSQL);
+                }
+            }
+        }
+
         for (Object o : array) {
             long sa_agentsid = Long.parseLong(o.toString());
             sqllist.add("update sa_agents set status='" + status + "' where sa_agentsid=" + sa_agentsid);
-//            Rows customersRows = dbConnect.runSqlQuery("SELECT sa_customersid  from sa_customers WHERE sys_enterpriseid in (SELECT sys_enterpriseid from sa_agents WHERE sa_agentsid=" + sa_agentsid + " and siteid='" + siteid + "' ) and siteid='" + siteid + "'");
-//            if (customersRows.isNotEmpty()) {
-//                Long sa_customersid = customersRows.get(0).getLong("sa_customersid");
             if (status.equals("1")) {
-//                    DataTag.createTag(this, "sa_customers", sa_customersid, "经销商");
                 sqllist.add(DataContrlLog.createLog(this, "sa_agents", sa_agentsid, "审核", "审核经销商").getSQL());
             } else {
-//                    DataTag.deleteTag(this, "sa_customers", sa_customersid, "经销商");
+                // 反审核时,从sat_orderclue_area中移除
+                sqllist.add("delete from sat_orderclue_area where sys_enterpriseid in (select sys_enterpriseid from sa_agents where sa_agentsid=" + sa_agentsid + " and siteid='" + siteid + "') and siteid='" + siteid + "'");
                 sqllist.add(DataContrlLog.createLog(this, "sa_agents", sa_agentsid, "反审核", "反审核经销商").getSQL());
             }
-//            }
         }
 
-
         dbConnect.runSqlUpdate(sqllist);
         return getSucReturnObject().toString();
     }

+ 41 - 0
src/custom/restcontroller/webmanage/saletool/orderclue/ordercluerule.java

@@ -104,4 +104,45 @@ public class ordercluerule extends Controller {
         SQLFactory.createDeleteSQL(this, "sat_orderclue_area").setUniqueid(sat_orderclue_areaid).delete();
         return getSucReturnObject().toString();
     }
+
+    @API(title = "销售线索分配规则-刷入经销商数据", apiversion = R.ID2026061210000101.v1.class)
+    public String refreshOrderclueruleArea() throws YosException {
+        // 先清空当前站点的分配范围数据
+        dbConnect.runSqlQuery("delete from sat_orderclue_area where siteid = '" + siteid + "'");
+
+        // 查询已审核、启用、经销商类别不是服务商的经销商
+        QuerySQL agentQuery = SQLFactory.createQuerySQL(this, "sa_agents", "sys_enterpriseid").setTableAlias("t1");
+        agentQuery.setWhere("t1.status", "1");
+        agentQuery.setWhere("t1.signingstate", "启用(正常)");
+        agentQuery.setWhere("t1.type!='服务商'");
+        agentQuery.setSiteid(siteid);
+        Rows agentRows = agentQuery.query();
+
+        if (agentRows.isEmpty()) {
+            return getErrReturnObject().setErrMsg("没有符合条件的经销商数据").toString();
+        }
+
+        // 查询经销商负责人的hrid
+        QuerySQL hrQuery = SQLFactory.createQuerySQL(this, "sys_enterprise_hr", "sys_enterpriseid", "sys_enterprise_hrid");
+        hrQuery.setWhere("isleader", true);
+        hrQuery.setWhere("sys_enterpriseid", agentRows.toArrayList("sys_enterpriseid"));
+        RowsMap hrMap = hrQuery.query().toRowsMap("sys_enterpriseid");
+
+        SQLList sqlDump = new SQLList();
+        for (Row row : agentRows) {
+            long sys_enterpriseid = row.getLong("sys_enterpriseid");
+            InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sat_orderclue_area");
+            insertSQL.setValue("cluetype", "经销商");
+            insertSQL.setValue("sys_enterpriseid", sys_enterpriseid);
+            if (hrMap.containsKey(String.valueOf(sys_enterpriseid))) {
+                insertSQL.setValue("hrid", hrMap.get(String.valueOf(sys_enterpriseid)).get(0).getLong("sys_enterprise_hrid"));
+            }
+            sqlDump.add(insertSQL);
+        }
+
+        if (!sqlDump.isEmpty()) {
+            sqlDump.commit(this);
+        }
+        return queryOrderclueruledetail();
+    }
 }