agents2.java 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345
  1. package restcontroller.webmanage.sale.agents;
  2. import beans.CommonHepler;
  3. import beans.datacontrllog.DataContrlLog;
  4. import beans.datatag.DataTag;
  5. import beans.datateam.DataTeam;
  6. import beans.recycle.Recycle;
  7. import beans.salearea.SaleArea;
  8. import com.alibaba.fastjson.JSONArray;
  9. import com.alibaba.fastjson.JSONObject;
  10. import common.Controller;
  11. import common.YosException;
  12. import common.annotation.API;
  13. import common.data.*;
  14. import jdk.internal.org.objectweb.asm.tree.LineNumberNode;
  15. import org.apache.commons.lang.StringUtils;
  16. import org.apache.poi.xssf.usermodel.XSSFCellStyle;
  17. import org.apache.poi.xssf.usermodel.XSSFSheet;
  18. import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  19. import restcontroller.R;
  20. import restcontroller.sale.customer.ExportExcel;
  21. import java.util.ArrayList;
  22. import java.util.HashMap;
  23. import java.util.HashSet;
  24. public class agents2 extends Controller {
  25. /**
  26. * 构造函数
  27. *
  28. * @param content
  29. */
  30. public agents2(JSONObject content) throws YosException {
  31. super(content);
  32. }
  33. @API(title = "关联查询医院", apiversion = R.ID2025102409284502.v1.class)
  34. public String queryHospitalList() throws YosException {
  35. Long sa_agentsid = content.getLongValue("sa_agentsid");
  36. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_customers", "sa_customersid", "createby", "createdate",
  37. "sys_enterpriseid", "status", "type", "tradingstatus", "datastatus", "billno", "province", "city", "county", "address", "stagename", "grade");
  38. querySQL.setTableAlias("t1");
  39. querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t2", "t2.sys_enterpriseid = t1.sys_enterpriseid AND t2.siteid = t1.siteid", "enterprisename");
  40. querySQL.addJoinTable(JOINTYPE.left, "sa_salearea", "t3", "t3.sa_saleareaid = t1.sa_saleareaid AND t3.siteid = t1.siteid", "areaname");
  41. QuerySQL t5 = SQLFactory.createQuerySQL(this, "sys_datafollowup", "ownerid");
  42. t5.setWhere("ownertable", "sa_customers");
  43. t5.setSiteid(siteid);
  44. t5.addGroupBy("ownerid");
  45. t5.addQueryFields("followdate", "max(createdate)");
  46. t5.setRoleDataLimit(false);
  47. querySQL.addJoinTable(JOINTYPE.left, t5, "t5", "t5.ownerid = t1.sa_customersid", "followdate");
  48. 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");
  49. querySQL.addJoinTable(JOINTYPE.left, "sys_hr", "t7", "t7.userid = t6.userid and t7.siteid = t6.siteid ");
  50. querySQL.addJoinTable(JOINTYPE.left, "sys_department", "t8", "t8.departmentid = t7.departmentid and t8.siteid = t7.siteid ");
  51. querySQL.setSiteid(siteid);
  52. querySQL.setWhere("t1.sa_customersid in (SELECT sa_customersid from sa_agents_hospital WHERE sa_agentsid=" + sa_agentsid + " and siteid='" + siteid + "')");
  53. querySQL.setWhere("t1.datastatus in (0,2) ");
  54. querySQL.setPage(pageSize, pageNumber);
  55. querySQL.setOrderBy(pageSorting);
  56. querySQL.setRoleDataLimit(false);
  57. querySQL.withDeleteData(true);
  58. querySQL.setCondition("t1.billno", "t2.enterprisename");
  59. Rows rows = querySQL.query();
  60. RowsMap leaderRows = DataTeam.getLeaderWithoutHeadpic(this, "sa_customers", rows.toArrayList("sa_customersid")).toRowsMap("ownerid");
  61. ArrayList<Long> ids = rows.toArrayList("sa_customersid", new ArrayList<>());
  62. //标签
  63. HashMap<Long, ArrayList<String>> tagList = DataTag.queryTag(this, "sa_customers", ids, false);
  64. //系统标签
  65. HashMap<Long, ArrayList<String>> sysTagList = DataTag.queryTag(this, "sa_customers", ids, true);
  66. Rows stageRows = dbConnect.runSqlQuery("SELECT stagename,sequence from sa_devstage WHERE siteid='" + siteid + "' order by sequence");
  67. RowsMap KeyDoctorsRowsMap = CommonHepler.getKeyDoctorsRowsMap(this, ids);
  68. for (Row row : rows) {
  69. Long id = row.getLong("sa_customersid");
  70. row.put("leader", leaderRows.get(String.valueOf(id)));
  71. if (leaderRows.get(String.valueOf(id)).isNotEmpty()) {
  72. row.put("name", leaderRows.get(String.valueOf(id)).get(0).getString("name"));
  73. row.put("depname", leaderRows.get(String.valueOf(id)).get(0).getString("depname"));
  74. }
  75. ArrayList<String> tag = tagList.get(id) != null ? tagList.get(id) : new ArrayList<String>();
  76. ArrayList<String> sys_tag = sysTagList.get(id) != null ? sysTagList.get(id) : new ArrayList<String>();
  77. //非系统标签
  78. row.put("tag", tag);
  79. //系统标签
  80. row.put("tag_sys", sys_tag);
  81. //预估手术总量
  82. row.putIfAbsent("totalop", 0);
  83. //关键人
  84. Rows KeyDoctors = KeyDoctorsRowsMap.getOrDefault(String.valueOf(id), new Rows());
  85. row.putIfAbsent("keyperson", StringUtils.join(KeyDoctors.toArray("doctorname"), ","));
  86. String stagename = row.getString("stagename");
  87. for (Row stageRow : stageRows) {
  88. if (stagename.equals(stageRow.getString("stagename"))) {
  89. stageRow.put("active", 1);
  90. }
  91. stageRow.putIfAbsent("active", 0);
  92. }
  93. row.put("stages", stageRows);
  94. }
  95. return getSucReturnObject().setData(rows).toString();
  96. }
  97. @API(title = "关联查询科室", apiversion = R.ID2025111909582402.v1.class)
  98. public String queryhospitaldepList() throws YosException {
  99. Long sa_agentsid = content.getLongValue("sa_agentsid");
  100. StringBuffer where = new StringBuffer(" 1=1 ");
  101. if (content.containsKey("where")) {
  102. JSONObject whereObject = content.getJSONObject("where");
  103. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  104. where.append(" and(");
  105. where.append("t1.hospitaldepname like'%").append(whereObject.getString("condition")).append("%' ");
  106. where.append("or t1.remarks like'%").append(whereObject.getString("condition")).append("%' ");
  107. where.append("or t3.enterprisename like'%").append(whereObject.getString("condition")).append("%' ");
  108. where.append("or t5.name like'%").append(whereObject.getString("condition")).append("%' ");
  109. where.append("or t6.doctors like'%").append(whereObject.getString("condition")).append("%' ");
  110. where.append(")");
  111. }
  112. }
  113. SQLFactory sqlFactory = new SQLFactory(this, "查询科室负责人");
  114. sqlFactory.addParameter("siteid", siteid);
  115. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_hospitaldep", "*").setTableAlias("t1");
  116. querySQL.addJoinTable(JOINTYPE.left, "sa_customers", "t2", "t2.sa_customersid=t1.sa_customersid and t2.siteid=t1.siteid");
  117. querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t3", "t3.sys_enterpriseid=t2.sys_enterpriseid and t3.siteid=t2.siteid", "enterprisename");
  118. querySQL.addJoinTable(JOINTYPE.inner, "sa_agents_hospital", "t4", "t4.sa_hospitaldepid=t1.sa_hospitaldepid and t4.siteid=t1.siteid", "sa_agents_hospitalid");
  119. querySQL.addJoinTable(JOINTYPE.left, "sys_datateam", "t5", "t5.ownerid = t1.sa_hospitaldepid and t5.siteid = t1.siteid and t5.ownertable = 'sa_hospitaldep' and t5.isleader = 1");
  120. querySQL.addJoinTable(JOINTYPE.left, sqlFactory, "t6", "t6.sa_hospitaldepid = t1.sa_hospitaldepid", "doctors");
  121. querySQL.setSiteid(siteid);
  122. querySQL.setWhere(where);
  123. querySQL.setWhere("t4.sa_agentsid", sa_agentsid);
  124. querySQL.setPage(pageSize, pageNumber).setOrderBy(pageSorting);
  125. Rows rows = querySQL.query();
  126. ArrayList<Long> ids = rows.toArrayList("sa_hospitaldepid", new ArrayList<>());
  127. RowsMap leaderRows = DataTeam.getLeader(this, "sa_hospitaldep", rows.toArrayList("sa_hospitaldepid")).toRowsMap("ownerid");
  128. //标签
  129. HashMap<Long, ArrayList<String>> tagList = DataTag.queryTag(this, "sa_hospitaldep", ids, false);
  130. //系统标签
  131. HashMap<Long, ArrayList<String>> sysTagList = DataTag.queryTag(this, "sa_hospitaldep", ids, true);
  132. Rows stageRows = dbConnect.runSqlQuery("SELECT stagename,sequence from sa_devstage WHERE siteid='" + siteid + "' order by sequence");
  133. for (Row row : rows) {
  134. Long id = row.getLong("sa_hospitaldepid");
  135. row.put("leader", leaderRows.get(row.getString("sa_hospitaldepid")));
  136. if (leaderRows.get(String.valueOf(id)).isNotEmpty()) {
  137. row.put("depname", leaderRows.get(String.valueOf(id)).get(0).getString("depname"));
  138. }
  139. ArrayList<String> tag = tagList.get(id) != null ? tagList.get(id) : new ArrayList<>();
  140. ArrayList<String> sys_tag = sysTagList.get(id) != null ? sysTagList.get(id) : new ArrayList<>();
  141. //非系统标签
  142. row.put("tag", tag);
  143. //系统标签
  144. row.put("tag_sys", sys_tag);
  145. String stagename = row.getString("stagename");
  146. for (Row stageRow : stageRows) {
  147. if (stagename.equals(stageRow.getString("stagename"))) {
  148. stageRow.put("active", 1);
  149. }
  150. stageRow.putIfAbsent("active", 0);
  151. }
  152. row.put("stages", stageRows);
  153. }
  154. return getSucReturnObject().setData(rows).toString();
  155. }
  156. @API(title = "关联查询合同", apiversion = R.ID2025102710011202.v1.class)
  157. public String queryContractList() throws YosException {
  158. StringBuffer where = new StringBuffer(" 1=1 ");
  159. if (content.containsKey("where")) {
  160. JSONObject whereObject = content.getJSONObject("where");
  161. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  162. where.append(" and(");
  163. where.append("t1.billno like'%").append(whereObject.getString("condition")).append("%' ");
  164. where.append("or t1.remarks like'%").append(whereObject.getString("condition")).append("%' ");
  165. where.append("or t3.enterprisename like'%").append(whereObject.getString("condition")).append("%' ");
  166. where.append("or t5.enterprisename like'%").append(whereObject.getString("condition")).append("%' ");
  167. where.append("or t6.name like'%").append(whereObject.getString("condition")).append("%' ");
  168. where.append(")");
  169. }
  170. }
  171. Long sa_agentsid = content.getLongValue("sa_agentsid");
  172. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_contract",
  173. "sa_contractid", "billno", "type", "begdate", "enddate", "createdate", "createby", "remarks", "signdate");
  174. querySQL.setTableAlias("t1");
  175. querySQL.addJoinTable(JOINTYPE.left, "sa_customers", "t2", "t2.sa_customersid=t1.sa_customersid and t2.siteid=t1.siteid");
  176. querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t3", "t3.sys_enterpriseid=t2.sys_enterpriseid and t3.siteid=t2.siteid");
  177. querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t4", "t4.sa_agentsid=t1.sa_agentsid and t4.siteid=t1.siteid");
  178. querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t5", "t5.sys_enterpriseid=t4.sys_enterpriseid and t5.siteid=t4.siteid");
  179. querySQL.addJoinTable(JOINTYPE.left, "sys_hr", "t6", "t6.hrid=t1.saler_hrid and t6.siteid=t1.siteid");
  180. querySQL.addJoinTable(JOINTYPE.left, "sys_dataextend", "t7", "t1.siteid = t7.siteid and t1.sa_contractid = t7.ownerid and t7.ownertable = 'sa_contract'", "deletereason");
  181. querySQL.setSiteid(siteid);
  182. querySQL.setWhere(where);
  183. querySQL.setWhere("t4.sa_agentsid", sa_agentsid);
  184. querySQL.addQueryFields("hospitalname", "t3.enterprisename");
  185. querySQL.addQueryFields("agentname", "t5.enterprisename");
  186. querySQL.addQueryFields("salername", "t6.name");
  187. querySQL.addQueryFields("deletechangedate", "t7.changedate");
  188. querySQL.addQueryFields("deletechangeby", "t7.changeby");
  189. querySQL.addQueryFields("status", "if(current_date < t1.begdate,'未生效',if(current_date > t1.enddate,'结束','生效'))");
  190. querySQL.setPage(pageSize, pageNumber);
  191. if (pageSorting.equals("''")) {
  192. pageSorting = "t1.createdate desc";
  193. }
  194. querySQL.setOrderBy(pageSorting);
  195. querySQL.withDeleteData(true);
  196. Rows rows = querySQL.query();
  197. ArrayList<Long> ids = rows.toArrayList("sa_contractid", new ArrayList<>());
  198. RowsMap leaderRows = DataTeam.getLeader(this, "sa_contract", rows.toArrayList("sa_contractid", new ArrayList<>())).toRowsMap("ownerid");
  199. //标签
  200. HashMap<Long, ArrayList<String>> tagList = DataTag.queryTag(this, "sa_contract", ids, false);
  201. //系统标签
  202. HashMap<Long, ArrayList<String>> sysTagList = DataTag.queryTag(this, "sa_contract", ids, true);
  203. for (Row row : rows) {
  204. Long id = row.getLong("sa_contractid");
  205. row.put("leader", leaderRows.get(row.getString("sa_contractid")));
  206. ArrayList<String> tag = tagList.get(id) != null ? tagList.get(id) : new ArrayList<>();
  207. ArrayList<String> sys_tag = sysTagList.get(id) != null ? sysTagList.get(id) : new ArrayList<>();
  208. //非系统标签
  209. row.put("tag", tag);
  210. //系统标签
  211. row.put("tag_sys", sys_tag);
  212. }
  213. return getSucReturnObject().setData(rows).toString();
  214. }
  215. @API(title = "添加科室", apiversion = R.ID2025111914313002.v1.class)
  216. public String addhospitaldep() throws YosException {
  217. Long sa_agentsid = content.getLongValue("sa_agentsid");
  218. JSONArray sa_hospitaldepids = content.getJSONArray("sa_hospitaldepids");
  219. ArrayList<String> sqlList = new ArrayList<>();
  220. for (Object object : sa_hospitaldepids) {
  221. Long sa_hospitaldepid = Long.valueOf(object.toString());
  222. Rows rows = dbConnect.runSqlQuery("SELECT * from sa_hospitaldep WHERE sa_hospitaldepid=" + sa_hospitaldepid);
  223. Long sa_customersid = 0L;
  224. if (rows.isNotEmpty()) {
  225. sa_customersid = rows.get(0).getLong("sa_customersid");
  226. }
  227. InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sa_agents_hospital");
  228. insertSQL.setUniqueid(createTableID("sa_agents_hospital"));
  229. insertSQL.setSiteid(siteid);
  230. insertSQL.setValue("sa_agentsid", sa_agentsid);
  231. insertSQL.setValue("sa_hospitaldepid", sa_hospitaldepid);
  232. insertSQL.setValue("sa_customersid", sa_customersid);
  233. insertSQL.setWhere(" not exists(select 1 from sa_agents_hospital where sa_agentsid=" + sa_agentsid + " and siteid='" + siteid + "' and sa_hospitaldepid='" + sa_hospitaldepid + "')");
  234. sqlList.add(insertSQL.getSQL());
  235. sqlList.add(DataContrlLog.createLog(this, "sa_hospitaldep", sa_hospitaldepid, "关联经销商", "关联经销商ID:" + sa_agentsid).getSQL());
  236. sqlList.add(DataContrlLog.createLog(this, "sa_agents", sa_agentsid, "签约科室", "签约科室ID:" + sa_hospitaldepid).getSQL());
  237. DataTag.createSystemTag(this, "sa_customers", sa_customersid, "经销");
  238. }
  239. dbConnect.runSqlUpdate(sqlList);
  240. return getSucReturnObject().toString();
  241. }
  242. @API(title = "选择科室", apiversion = R.ID2025111914425902.v1.class)
  243. public String chooseHospitalDep() throws YosException {
  244. StringBuffer where = new StringBuffer(" 1=1 ");
  245. if (content.containsKey("where")) {
  246. JSONObject whereObject = content.getJSONObject("where");
  247. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  248. where.append(" and(");
  249. where.append("t1.hospitaldepname like'%").append(whereObject.getString("condition")).append("%' ");
  250. where.append("or t1.remarks like'%").append(whereObject.getString("condition")).append("%' ");
  251. where.append(")");
  252. }
  253. }
  254. Long sa_agentsid = content.getLongValue("sa_agentsid");
  255. where.append(" and t1.sa_hospitaldepid in (SELECT ownerid from sys_enterprise_tradefield t1 " +
  256. "INNER JOIN sys_hr t2 ON t2.hrid=t1.hrid and t2.siteid=t1.siteid " +
  257. "INNER JOIN sys_datateam t3 ON t3.userid=t2.userid and t3.ownertable='sa_hospitaldep' and t3.siteid=t2.siteid " +
  258. "WHERE sa_agentsid=" + sa_agentsid + ")");
  259. where.append(" and t1.sa_hospitaldepid not in (SELECT sa_hospitaldepid from sa_agents_hospital " +
  260. "WHERE sa_agentsid=" + sa_agentsid + ")");
  261. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_hospitaldep", "*").setTableAlias("t1");
  262. querySQL.addJoinTable(JOINTYPE.left, "sa_customers", "t2", "t2.sa_customersid=t1.sa_customersid and t2.siteid=t1.siteid");
  263. querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t3", "t3.sys_enterpriseid=t2.sys_enterpriseid and t3.siteid=t2.siteid", "enterprisename");
  264. querySQL.setSiteid(siteid);
  265. querySQL.setWhere(where);
  266. querySQL.setPage(pageSize, pageNumber).setOrderBy(pageSorting);
  267. Rows rows = querySQL.query();
  268. ArrayList<Long> ids = rows.toArrayList("sa_hospitaldepid", new ArrayList<>());
  269. RowsMap leaderRows = DataTeam.getLeader(this, "sa_hospitaldep", rows.toArrayList("sa_hospitaldepid")).toRowsMap("ownerid");
  270. //标签
  271. HashMap<Long, ArrayList<String>> tagList = DataTag.queryTag(this, "sa_hospitaldep", ids, false);
  272. //系统标签
  273. HashMap<Long, ArrayList<String>> sysTagList = DataTag.queryTag(this, "sa_hospitaldep", ids, true);
  274. Rows stageRows = dbConnect.runSqlQuery("SELECT stagename,sequence from sa_devstage WHERE siteid='" + siteid + "' order by sequence");
  275. RowsMap doctorRowsMap = CommonHepler.getDoctorRowsMap(this, ids);
  276. for (Row row : rows) {
  277. Long id = row.getLong("sa_hospitaldepid");
  278. row.put("leader", leaderRows.get(row.getString("sa_hospitaldepid")));
  279. if (leaderRows.get(String.valueOf(id)).isNotEmpty()) {
  280. row.put("depname", leaderRows.get(String.valueOf(id)).get(0).getString("depname"));
  281. }
  282. ArrayList<String> tag = tagList.get(id) != null ? tagList.get(id) : new ArrayList<>();
  283. ArrayList<String> sys_tag = sysTagList.get(id) != null ? sysTagList.get(id) : new ArrayList<>();
  284. //非系统标签
  285. row.put("tag", tag);
  286. //系统标签
  287. row.put("tag_sys", sys_tag);
  288. //科室负责人
  289. Rows doctorRows = doctorRowsMap.getOrDefault(id.toString(), new Rows());
  290. row.putIfAbsent("doctors", StringUtils.join(doctorRows.toArray("doctorname"), ","));
  291. String stagename = row.getString("stagename");
  292. for (Row stageRow : stageRows) {
  293. if (stagename.equals(stageRow.getString("stagename"))) {
  294. stageRow.put("active", 1);
  295. }
  296. stageRow.putIfAbsent("active", 0);
  297. }
  298. row.put("stages", stageRows);
  299. }
  300. return getSucReturnObject().setData(rows).toString();
  301. }
  302. }