Przeglądaj źródła

经销商关联医院

wu 3 miesięcy temu
rodzic
commit
0a4ba944d3

+ 23 - 6
src/custom/restcontroller/sale/customer/Hospital.java

@@ -194,10 +194,15 @@ public class Hospital extends Controller {
             }
         }
 
-        if(content.containsKey("sa_agentsid")){
-            InsertSQL insertSQL=SQLFactory.createInsertSQL(this, "sa_agents_hospital");
+        if (content.containsKey("sa_agentsid")) {
+            Long sa_agentsid = content.getLongValue("sa_agentsid");
+            InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sa_agents_hospital");
+            insertSQL.setUniqueid(createTableID("sa_agents_hospital"));
             insertSQL.setSiteid(siteid);
-
+            insertSQL.setValue("sa_agentsid", sa_agentsid);
+            insertSQL.setValue("sa_customersid", sa_customersid);
+            insertSQL.setWhere(" not exists(select 1 from sa_agents_hospital where sa_agentsid=" + sa_agentsid + " and siteid='" + siteid + "'  and sa_customersid='" + sa_customersid + "')");
+            insertSQL.insert();
         }
 
         return selectDetail();
@@ -407,6 +412,7 @@ public class Hospital extends Controller {
         //系统标签
         HashMap<Long, ArrayList<String>> sysTagList = DataTag.queryTag(this, tablename, ids, true);
         Rows stageRows = dbConnect.runSqlQuery("SELECT stagename,sequence from sa_devstage WHERE siteid='" + siteid + "' order by sequence");
+        RowsMap AgentRowsMap = getAgentRowsMap(ids);
         for (Row row : rows) {
             Long id = row.getLong("sa_customersid");
             row.put("leader", leaderRows.get(String.valueOf(id)));
@@ -430,7 +436,8 @@ public class Hospital extends Controller {
             //关键人
             row.putIfAbsent("keyperson", "");
             //签约经销商
-            row.putIfAbsent("signagent", "");
+            Rows signagent = AgentRowsMap.getOrDefault(String.valueOf(id), new Rows());
+            row.putIfAbsent("signagent", StringUtils.join(signagent.toArray("enterprisename")));
             String stagename = row.getString("stagename");
             for (Row stageRow : stageRows) {
                 if (stagename.equals(stageRow.getString("stagename"))) {
@@ -460,6 +467,16 @@ public class Hospital extends Controller {
         return getSucReturnObject().setData(rows).toString();
     }
 
+    public RowsMap getAgentRowsMap(List<Long> sa_customersids) throws YosException {
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_agents_hospital", "*").setTableAlias("t1");
+        querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t2", "t2.sa_agentsid = t1.sa_agentsid AND t2.siteid = t1.siteid");
+        querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t3", "t3.sys_enterpriseid = t2.sys_enterpriseid AND t3.siteid = t2.siteid", "enterprisename");
+        querySQL.setSiteid(siteid);
+        querySQL.setWhere("t1.sa_customersid ", sa_customersids);
+        Rows rows = querySQL.query();
+        return rows.toRowsMap("sa_customersid");
+    }
+
     @API(title = "关联医生查询", apiversion = R.ID2025102310134602.v1.class)
     public String queryDoctors() throws YosException {
         StringBuffer where = new StringBuffer(" 1=1 ");
@@ -486,7 +503,7 @@ public class Hospital extends Controller {
                 "enterprisename");
         querySQL.setWhere(where);
         querySQL.setSiteid(siteid);
-        querySQL.setWhere("t3.sa_customersid",sa_customersid);
+        querySQL.setWhere("t3.sa_customersid", sa_customersid);
         querySQL.setPage(pageSize, pageNumber).setOrderBy(pageSorting);
         Rows rows = querySQL.query();
 
@@ -533,7 +550,7 @@ public class Hospital extends Controller {
         querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t3", "t3.sys_enterpriseid=t2.sys_enterpriseid and t3.siteid=t2.siteid", "enterprisename");
         querySQL.setSiteid(siteid);
         querySQL.setWhere(where);
-        querySQL.setWhere("t2.sa_customersid",sa_customersid);
+        querySQL.setWhere("t2.sa_customersid", sa_customersid);
         Rows rows = querySQL.query();
 
         ArrayList<Long> ids = rows.toArrayList("sa_hospitaldepid", new ArrayList<>());

+ 106 - 0
src/custom/restcontroller/webmanage/sale/agents/agents2.java

@@ -0,0 +1,106 @@
+package restcontroller.webmanage.sale.agents;
+
+import beans.datatag.DataTag;
+import beans.datateam.DataTeam;
+import beans.recycle.Recycle;
+import beans.salearea.SaleArea;
+import com.alibaba.fastjson.JSONObject;
+import common.Controller;
+import common.YosException;
+import common.annotation.API;
+import common.data.*;
+import jdk.internal.org.objectweb.asm.tree.LineNumberNode;
+import org.apache.commons.lang.StringUtils;
+import org.apache.poi.xssf.usermodel.XSSFCellStyle;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import restcontroller.R;
+import restcontroller.sale.customer.ExportExcel;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+
+public class agents2 extends Controller {
+    /**
+     * 构造函数
+     *
+     * @param content
+     */
+    public agents2(JSONObject content) throws YosException {
+        super(content);
+    }
+
+    @API(title = "关联查询医院", apiversion = R.ID2025102409284502.v1.class)
+    public String queryHospitalList() throws YosException {
+
+        Long sa_agentsid = content.getLongValue("sa_agentsid");
+
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_customers", "sa_customersid", "createby", "createdate",
+                "sys_enterpriseid", "status", "type", "tradingstatus", "datastatus", "billno", "province", "city", "county", "address", "stagename", "grade");
+        querySQL.setTableAlias("t1");
+        querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t2", "t2.sys_enterpriseid = t1.sys_enterpriseid AND t2.siteid = t1.siteid", "enterprisename");
+        querySQL.addJoinTable(JOINTYPE.left, "sa_salearea", "t3", "t3.sa_saleareaid = t1.sa_saleareaid AND t3.siteid = t1.siteid", "areaname");
+
+        QuerySQL t5 = SQLFactory.createQuerySQL(this, "sys_datafollowup", "ownerid");
+        t5.setWhere("ownertable", "sa_customers");
+        t5.setSiteid(siteid);
+        t5.addGroupBy("ownerid");
+        t5.addQueryFields("followdate", "max(createdate)");
+        t5.setRoleDataLimit(false);
+        querySQL.addJoinTable(JOINTYPE.left, t5, "t5", "t5.ownerid = t1.sa_customersid", "followdate");
+        querySQL.addJoinTable(JOINTYPE.left, "sys_datateam", "t6", "t6.ownerid = t1.sa_customersid and t6.siteid = t1.siteid and t6.ownertable = 'sa_customers' and t6.isleader = 1");
+        querySQL.addJoinTable(JOINTYPE.left, "sys_hr", "t7", "t7.userid = t6.userid and t7.siteid = t6.siteid ");
+        querySQL.addJoinTable(JOINTYPE.left, "sys_department", "t8", "t8.departmentid = t7.departmentid and t8.siteid = t7.siteid ");
+        querySQL.addJoinTable(JOINTYPE.inner, "sa_agents_hospital", "t9", "t9.sa_customersid=t1.sa_customersid and t9.siteid=t1.siteid");
+        querySQL.setSiteid(siteid);
+        querySQL.setWhere("t9.sa_agentsid", sa_agentsid);
+        querySQL.setWhere("t1.datastatus in (0,2) ");
+        querySQL.setPage(pageSize, pageNumber);
+        querySQL.setOrderBy(pageSorting);
+
+        querySQL.setRoleDataLimit(false);
+        querySQL.withDeleteData(true);
+        Rows rows = querySQL.query();
+        RowsMap leaderRows = DataTeam.getLeaderWithoutHeadpic(this, "sa_customers", rows.toArrayList("sa_customersid")).toRowsMap("ownerid");
+        ArrayList<Long> ids = rows.toArrayList("sa_customersid", new ArrayList<>());
+        //标签
+        HashMap<Long, ArrayList<String>> tagList = DataTag.queryTag(this, "sa_customers", ids, false);
+        //系统标签
+        HashMap<Long, ArrayList<String>> sysTagList = DataTag.queryTag(this, "sa_customers", ids, true);
+        Rows stageRows = dbConnect.runSqlQuery("SELECT stagename,sequence from sa_devstage WHERE siteid='" + siteid + "' order by sequence");
+        for (Row row : rows) {
+            Long id = row.getLong("sa_customersid");
+            row.put("leader", leaderRows.get(String.valueOf(id)));
+            if (leaderRows.get(String.valueOf(id)).isNotEmpty()) {
+                row.put("name", leaderRows.get(String.valueOf(id)).get(0).getString("name"));
+                row.put("depname", leaderRows.get(String.valueOf(id)).get(0).getString("depname"));
+            }
+            ArrayList<String> tag = tagList.get(id) != null ? tagList.get(id) : new ArrayList<String>();
+            ArrayList<String> sys_tag = sysTagList.get(id) != null ? sysTagList.get(id) : new ArrayList<String>();
+            if (row.getString("agentsstatus").equals("禁用") || row.getString("agentsstatus").equals("作废")) {
+                tag.removeAll(row.getJSONArray("agentstag").toJavaList(String.class));
+                sys_tag.removeAll(row.getJSONArray("agentstag").toJavaList(String.class));
+            }
+            //非系统标签
+            row.put("tag", tag);
+            //系统标签
+            row.put("tag_sys", sys_tag);
+            //预估手术总量
+            row.putIfAbsent("totalop", 0);
+            //关键人
+            row.putIfAbsent("keyperson", "");
+            String stagename = row.getString("stagename");
+            for (Row stageRow : stageRows) {
+                if (stagename.equals(stageRow.getString("stagename"))) {
+                    stageRow.put("active", 1);
+                }
+                stageRow.putIfAbsent("active", 0);
+            }
+            row.put("stages", stageRows);
+        }
+        return getSucReturnObject().setData(rows).toString();
+    }
+
+
+}