hospitaldep.java 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542
  1. package restcontroller.prsx.hospitaldep;
  2. import beans.CommonHepler;
  3. import beans.datacontrllog.DataContrlLog;
  4. import beans.datatag.DataTag;
  5. import beans.datateam.DataTeam;
  6. import beans.proxy.Proxy;
  7. import com.alibaba.fastjson.JSONArray;
  8. import com.alibaba.fastjson.JSONObject;
  9. import common.Controller;
  10. import common.YosException;
  11. import common.annotation.API;
  12. import common.data.*;
  13. import org.apache.commons.lang.StringUtils;
  14. import restcontroller.R;
  15. import java.util.ArrayList;
  16. import java.util.HashMap;
  17. import java.util.List;
  18. /**
  19. * 医院科室管理
  20. */
  21. public class hospitaldep extends Controller {
  22. /**
  23. * 构造函数
  24. *
  25. * @param content
  26. */
  27. public hospitaldep(JSONObject content) throws YosException {
  28. super(content);
  29. }
  30. @API(title = "新建或编辑", apiversion = R.ID2025101409385002.v1.class)
  31. public String insertOrUpdate() throws YosException {
  32. ArrayList<String> sqlList = new ArrayList<>();
  33. Long sa_hospitaldepid = content.getLongValue("sa_hospitaldepid");
  34. Long sa_customersid = content.getLongValue("sa_customersid");
  35. String hospitaldepname = content.getStringValue("hospitaldepname");
  36. if (!dbConnect.runSqlQuery("select * from sa_hospitaldep WHERE siteid='" + siteid + "' and sa_customersid=" + sa_customersid + " and hospitaldepname='" + hospitaldepname + "' and sa_hospitaldepid !='" + sa_hospitaldepid + "'").isEmpty()) {
  37. return getErrReturnObject().setErrMsg("该医院科室不可重复创建!").toString();
  38. }
  39. Rows stagenameRows = dbConnect.runSqlQuery("SELECT stagename from sa_devstage WHERE siteid='" + siteid + "' order by sequence LIMIT 1");
  40. if (sa_hospitaldepid <= 0) {
  41. sa_hospitaldepid = createTableID("sa_hospitaldep");
  42. InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sa_hospitaldep");
  43. insertSQL.setSiteid(siteid);
  44. insertSQL.setUniqueid(sa_hospitaldepid);
  45. insertSQL.setValue("hospitaldepname", hospitaldepname);
  46. insertSQL.setValue("sa_customersid", sa_customersid);
  47. insertSQL.setValue("type", content.getStringValue("type"));
  48. insertSQL.setValue("remarks", content.getStringValue("remarks"));
  49. insertSQL.setValue("stagename", stagenameRows.isNotEmpty() ? stagenameRows.get(0).getString("stagename") : "");
  50. sqlList.add(insertSQL.getSQL());
  51. sqlList.add(DataContrlLog.createLog(this, "sa_hospitaldep", sa_hospitaldepid, "新建", "新建成功").getSQL());
  52. //数据团队新增
  53. sqlList.addAll(DataTeam.createTeamSQL(this, "sa_hospitaldep", sa_hospitaldepid, userid));
  54. } else {
  55. UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_hospitaldep");
  56. updateSQL.setSiteid(siteid);
  57. updateSQL.setUniqueid(sa_hospitaldepid);
  58. updateSQL.setValue("hospitaldepname", content.getStringValue("hospitaldepname"));
  59. updateSQL.setValue("sa_customersid", sa_customersid);
  60. updateSQL.setValue("type", content.getStringValue("type"));
  61. updateSQL.setValue("remarks", content.getStringValue("remarks"));
  62. sqlList.add(updateSQL.getSQL());
  63. sqlList.add(DataContrlLog.createLog(this, "sa_hospitaldep", sa_hospitaldepid, "编辑", "编辑成功").getSQL());
  64. }
  65. dbConnect.runSqlUpdate(sqlList);
  66. content.put("sa_hospitaldepid", sa_hospitaldepid);
  67. return detail();
  68. }
  69. @API(title = "详情", apiversion = R.ID2025101409393102.v1.class)
  70. public String detail() throws YosException {
  71. Long sa_hospitaldepid = content.getLongValue("sa_hospitaldepid");
  72. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_hospitaldep", "*").setTableAlias("t1");
  73. querySQL.addJoinTable(JOINTYPE.left, "sa_customers", "t2", "t2.sa_customersid=t1.sa_customersid and t2.siteid=t1.siteid");
  74. querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t3", "t3.sys_enterpriseid=t2.sys_enterpriseid and t3.siteid=t2.siteid", "enterprisename");
  75. querySQL.setSiteid(siteid);
  76. querySQL.setWhere("t1.sa_hospitaldepid", sa_hospitaldepid);
  77. Rows rows = querySQL.query();
  78. ArrayList<Long> ids = rows.toArrayList("sa_hospitaldepid", new ArrayList<>());
  79. RowsMap leaderRows = DataTeam.getLeader(this, "sa_hospitaldep", rows.toArrayList("sa_hospitaldepid")).toRowsMap("ownerid");
  80. //标签
  81. HashMap<Long, ArrayList<String>> tagList = DataTag.queryTag(this, "sa_hospitaldep", ids, false);
  82. //系统标签
  83. HashMap<Long, ArrayList<String>> sysTagList = DataTag.queryTag(this, "sa_hospitaldep", ids, true);
  84. RowsMap doctorRowsMap = CommonHepler.getDoctorRowsMap(this, ids);
  85. for (Row row : rows) {
  86. Long id = row.getLong("sa_hospitaldepid");
  87. row.put("leader", leaderRows.get(row.getString("sa_hospitaldepid")));
  88. if (leaderRows.get(String.valueOf(id)).isNotEmpty()) {
  89. row.put("depname", leaderRows.get(String.valueOf(id)).get(0).getString("depname"));
  90. }
  91. ArrayList<String> tag = tagList.get(id) != null ? tagList.get(id) : new ArrayList<>();
  92. ArrayList<String> sys_tag = sysTagList.get(id) != null ? sysTagList.get(id) : new ArrayList<>();
  93. //非系统标签
  94. row.put("tag", tag);
  95. //系统标签
  96. row.put("tag_sys", sys_tag);
  97. //科室负责人
  98. Rows doctorRows = doctorRowsMap.getOrDefault(id.toString(), new Rows());
  99. row.putIfAbsent("doctors", StringUtils.join(doctorRows.toArray("doctorname"), ","));
  100. }
  101. Row row = rows.isNotEmpty() ? rows.get(0) : new Row();
  102. return getSucReturnObject().setData(row).toString();
  103. }
  104. @API(title = "删除", apiversion = R.ID2025101409395902.v1.class)
  105. public String delete() throws YosException {
  106. Long sa_hospitaldepid = content.getLongValue("sa_hospitaldepid");
  107. DeleteSQL deleteSQL = SQLFactory.createDeleteSQL(this, "sa_hospitaldep");
  108. deleteSQL.setSiteid(siteid);
  109. deleteSQL.setUniqueid(sa_hospitaldepid);
  110. deleteSQL.delete();
  111. DataContrlLog.createLog(this, "sa_hospitaldep", sa_hospitaldepid, "删除", "删除成功").insert();
  112. return getSucReturnObject().toString();
  113. }
  114. @API(title = "列表", apiversion = R.ID2025101409402402.v1.class)
  115. public String list() throws YosException {
  116. // 1:我负责的;2:我参与的;3:我下属负责的;4:我下属参与的
  117. String tablename = "sa_hospitaldep";
  118. int type = content.getIntValue("type");
  119. StringBuffer where = new StringBuffer(" 1=1 ");
  120. if (content.containsKey("where")) {
  121. JSONObject whereObject = content.getJSONObject("where");
  122. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  123. where.append(" and(");
  124. where.append("t1.hospitaldepname like'%").append(whereObject.getString("condition")).append("%' ");
  125. where.append("or t1.remarks like'%").append(whereObject.getString("condition")).append("%' ");
  126. where.append("or t3.enterprisename like'%").append(whereObject.getString("condition")).append("%' ");
  127. where.append("or t5.name like'%").append(whereObject.getString("condition")).append("%' ");
  128. where.append("or t6.doctors like'%").append(whereObject.getString("condition")).append("%' ");
  129. where.append(")");
  130. }
  131. if (whereObject.containsKey("startdate") && !"".equals(whereObject.getString("startdate"))) {
  132. where.append(" and(");
  133. where.append("t1.createdate >='").append(whereObject.getString("startdate")).append(" 00:00:00' ");
  134. where.append(")");
  135. }
  136. if (whereObject.containsKey("enddate") && !"".equals(whereObject.getString("enddate"))) {
  137. where.append(" and(");
  138. where.append("t1.createdate <='").append(whereObject.getString("enddate")).append(" 23:59:59' ");
  139. where.append(")");
  140. }
  141. //科室类别
  142. if (whereObject.containsKey("type") && !"".equals(whereObject.getString("type"))) {
  143. where.append(" and(");
  144. where.append("t1.type ='").append(whereObject.getString("type")).append("' ");
  145. where.append(")");
  146. }
  147. //开发阶段
  148. if (whereObject.containsKey("stagename") && !"".equals(whereObject.getString("stagename"))) {
  149. where.append(" and(");
  150. where.append("t1.stagename ='").append(whereObject.getString("stagename")).append("' ");
  151. where.append(")");
  152. }
  153. }
  154. String where2 = " 1=1 ";
  155. if (type == 0) {
  156. where2 = "(" + DataTeam.getDataWhereStr(this, tablename, "t1", 1)
  157. + " or " + DataTeam.getDataWhereStr(this, tablename, "t1", 2) + ")";
  158. } else {
  159. where2 = DataTeam.getDataWhereStr(this, tablename, "t1", type);
  160. }
  161. SQLFactory sqlFactory = new SQLFactory(this, "查询科室负责人");
  162. sqlFactory.addParameter("siteid", siteid);
  163. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_hospitaldep", "*").setTableAlias("t1");
  164. querySQL.addJoinTable(JOINTYPE.left, "sa_customers", "t2", "t2.sa_customersid=t1.sa_customersid and t2.siteid=t1.siteid");
  165. querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t3", "t3.sys_enterpriseid=t2.sys_enterpriseid and t3.siteid=t2.siteid", "enterprisename");
  166. 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");
  167. querySQL.addJoinTable(JOINTYPE.left, sqlFactory, "t6", "t6.sa_hospitaldepid = t1.sa_hospitaldepid", "doctors");
  168. querySQL.addJoinTable(JOINTYPE.left, "sys_datateam", "t7", "t7.ownertable = 'sa_hospitaldep' and t7.siteid = t1.siteid and t7.ownerid = t1.sa_hospitaldepid and t7.isleader = 1");
  169. querySQL.addQueryFields("leadername", "t7.name");
  170. querySQL.setSiteid(siteid);
  171. querySQL.setWhere(where);
  172. querySQL.setWhere(where2);
  173. querySQL.setPage(pageSize, pageNumber).setOrderBy(pageSorting);
  174. Rows rows = querySQL.query();
  175. ArrayList<Long> ids = rows.toArrayList("sa_hospitaldepid", new ArrayList<>());
  176. RowsMap leaderRows = DataTeam.getLeader(this, "sa_hospitaldep", rows.toArrayList("sa_hospitaldepid")).toRowsMap("ownerid");
  177. //标签
  178. HashMap<Long, ArrayList<String>> tagList = DataTag.queryTag(this, "sa_hospitaldep", ids, false);
  179. //系统标签
  180. HashMap<Long, ArrayList<String>> sysTagList = DataTag.queryTag(this, "sa_hospitaldep", ids, true);
  181. Rows stageRows = dbConnect.runSqlQuery("SELECT stagename,sequence from sa_devstage WHERE siteid='" + siteid + "' order by sequence");
  182. // RowsMap doctorRowsMap = CommonHepler.getDoctorRowsMap(this, ids);
  183. for (Row row : rows) {
  184. Long id = row.getLong("sa_hospitaldepid");
  185. row.put("leader", leaderRows.get(row.getString("sa_hospitaldepid")));
  186. if (leaderRows.get(String.valueOf(id)).isNotEmpty()) {
  187. row.put("depname", leaderRows.get(String.valueOf(id)).get(0).getString("depname"));
  188. }
  189. ArrayList<String> tag = tagList.get(id) != null ? tagList.get(id) : new ArrayList<>();
  190. ArrayList<String> sys_tag = sysTagList.get(id) != null ? sysTagList.get(id) : new ArrayList<>();
  191. //非系统标签
  192. row.put("tag", tag);
  193. //系统标签
  194. row.put("tag_sys", sys_tag);
  195. //科室负责人
  196. // Rows doctorRows = doctorRowsMap.getOrDefault(id.toString(), new Rows());
  197. // row.putIfAbsent("doctors", StringUtils.join(doctorRows.toArray("doctorname"), ","));
  198. String stagename = row.getString("stagename");
  199. for (Row stageRow : stageRows) {
  200. if (stagename.equals(stageRow.getString("stagename"))) {
  201. stageRow.put("active", 1);
  202. }
  203. stageRow.putIfAbsent("active", 0);
  204. }
  205. row.put("stages", stageRows);
  206. }
  207. return getSucReturnObject().setData(rows).toString();
  208. }
  209. @API(title = "选择医院列表", apiversion = R.ID2025101409411402.v1.class)
  210. public String chooseHospital() throws YosException {
  211. String tablename = "sa_customers";
  212. StringBuffer where = new StringBuffer(" 1=1 ");
  213. if (content.containsKey("where")) {
  214. JSONObject whereObject = content.getJSONObject("where");
  215. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  216. where.append(" and(");
  217. where.append("t1.billno like'%").append(whereObject.getString("condition")).append("%' ");
  218. where.append("or t1.province like'%").append(whereObject.getString("condition")).append("%' ");
  219. where.append("or t1.city like'%").append(whereObject.getString("condition")).append("%' ");
  220. where.append("or t1.county like'%").append(whereObject.getString("condition")).append("%' ");
  221. where.append("or t1.address like'%").append(whereObject.getString("condition")).append("%' ");
  222. where.append("or t2.enterprisename like'%").append(whereObject.getString("condition")).append("%' ");
  223. where.append("or t2.abbreviation like'%").append(whereObject.getString("condition")).append("%' ");
  224. where.append("or t6.name like'%").append(whereObject.getString("condition")).append("%' ");
  225. where.append("or t8.depname like'%").append(whereObject.getString("condition")).append("%' ");
  226. where.append(")");
  227. }
  228. }
  229. where.append(" and ( t1.datastatus in (0,2) )");
  230. String where2 = "(" + DataTeam.getDataWhereStr(this, tablename, "t1", 1)
  231. + " or " + DataTeam.getDataWhereStr(this, tablename, "t1", 2) + ")";
  232. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_customers", "sa_customersid", "createby", "createdate",
  233. "sys_enterpriseid", "status", "type", "tradingstatus", "datastatus", "billno", "province", "city", "county", "address", "stagename", "grade");
  234. querySQL.setTableAlias("t1");
  235. querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t2", "t2.sys_enterpriseid = t1.sys_enterpriseid AND t2.siteid = t1.siteid", "enterprisename");
  236. querySQL.addJoinTable(JOINTYPE.left, "sa_salearea", "t3", "t3.sa_saleareaid = t1.sa_saleareaid AND t3.siteid = t1.siteid", "areaname");
  237. 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");
  238. querySQL.addJoinTable(JOINTYPE.left, "sys_hr", "t7", "t7.userid = t6.userid and t7.siteid = t6.siteid ");
  239. querySQL.addJoinTable(JOINTYPE.left, "sys_department", "t8", "t8.departmentid = t7.departmentid and t8.siteid = t7.siteid ");
  240. querySQL.setSiteid(siteid);
  241. querySQL.setWhere(where);
  242. querySQL.setWhere(where2);
  243. querySQL.setPage(pageSize, pageNumber);
  244. querySQL.setOrderBy(pageSorting);
  245. querySQL.setRoleDataLimit(false);
  246. querySQL.withDeleteData(true);
  247. Rows rows = querySQL.query();
  248. RowsMap leaderRows = DataTeam.getLeaderWithoutHeadpic(this, "sa_customers", rows.toArrayList("sa_customersid")).toRowsMap("ownerid");
  249. ArrayList<Long> ids = rows.toArrayList("sa_customersid", new ArrayList<>());
  250. //标签
  251. HashMap<Long, ArrayList<String>> tagList = DataTag.queryTag(this, tablename, ids, false);
  252. //系统标签
  253. HashMap<Long, ArrayList<String>> sysTagList = DataTag.queryTag(this, tablename, ids, true);
  254. Rows stageRows = dbConnect.runSqlQuery("SELECT stagename,sequence from sa_devstage WHERE siteid='" + siteid + "' order by sequence");
  255. for (Row row : rows) {
  256. Long id = row.getLong("sa_customersid");
  257. row.put("leader", leaderRows.get(String.valueOf(id)));
  258. if (leaderRows.get(String.valueOf(id)).isNotEmpty()) {
  259. row.put("name", leaderRows.get(String.valueOf(id)).get(0).getString("name"));
  260. row.put("depname", leaderRows.get(String.valueOf(id)).get(0).getString("depname"));
  261. }
  262. ArrayList<String> tag = tagList.get(id) != null ? tagList.get(id) : new ArrayList<String>();
  263. ArrayList<String> sys_tag = sysTagList.get(id) != null ? sysTagList.get(id) : new ArrayList<String>();
  264. //非系统标签
  265. row.put("tag", tag);
  266. //系统标签
  267. row.put("tag_sys", sys_tag);
  268. String stagename = row.getString("stagename");
  269. for (Row stageRow : stageRows) {
  270. if (stagename.equals(stageRow.getString("stagename"))) {
  271. stageRow.put("active", 1);
  272. }
  273. stageRow.putIfAbsent("active", 0);
  274. }
  275. row.put("stages", stageRows);
  276. }
  277. return getSucReturnObject().setData(rows).toString();
  278. }
  279. @API(title = "关联查询医生", apiversion = R.ID2025102214574202.v1.class)
  280. public String doctorlist() throws YosException {
  281. StringBuffer where = new StringBuffer(" 1=1 ");
  282. if (content.containsKey("where")) {
  283. JSONObject whereObject = content.getJSONObject("where");
  284. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  285. where.append(" and(");
  286. where.append("t1.doctorname like'%").append(whereObject.getString("condition")).append("%' ");
  287. where.append("or t1.phonenumber like'%").append(whereObject.getString("condition")).append("%' ");
  288. where.append("or t1.professional like'%").append(whereObject.getString("condition")).append("%' ");
  289. where.append("or t2.hospitaldepname like'%").append(whereObject.getString("condition")).append("%' ");
  290. where.append("or t4.enterprisename like'%").append(whereObject.getString("condition")).append("%' ");
  291. where.append(")");
  292. }
  293. }
  294. Long sa_hospitaldepid = content.getLongValue("sa_hospitaldepid");
  295. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_doctor", "*").setTableAlias("t1");
  296. querySQL.addJoinTable(JOINTYPE.left, "sa_hospitaldep", "t2", "t2.sa_hospitaldepid=t1.sa_hospitaldepid and t2.siteid=t1.siteid", "hospitaldepname");
  297. querySQL.addJoinTable(JOINTYPE.left, "sa_customers", "t3", "t3.sa_customersid=t1.sa_customersid");
  298. querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t4", "t4.sys_enterpriseid=t3.sys_enterpriseid",
  299. "enterprisename");
  300. querySQL.setWhere(where);
  301. querySQL.setWhere("t2.sa_hospitaldepid", sa_hospitaldepid);
  302. querySQL.setSiteid(siteid);
  303. querySQL.setPage(pageSize, pageNumber).setOrderBy(pageSorting);
  304. Rows rows = querySQL.query();
  305. ArrayList<Long> ids = rows.toArrayList("sa_doctorid", new ArrayList<>());
  306. RowsMap leaderRows = DataTeam.getLeader(this, "sa_doctor", rows.toArrayList("sa_doctorid")).toRowsMap("ownerid");
  307. //标签
  308. HashMap<Long, ArrayList<String>> tagList = DataTag.queryTag(this, "sa_doctor", ids, false);
  309. //系统标签
  310. HashMap<Long, ArrayList<String>> sysTagList = DataTag.queryTag(this, "sa_doctor", ids, true);
  311. for (Row row : rows) {
  312. Long id = row.getLong("sa_doctorid");
  313. row.put("leader", leaderRows.get(row.getString("sa_doctorid")));
  314. if (leaderRows.get(String.valueOf(id)).isNotEmpty()) {
  315. row.put("depname", leaderRows.get(String.valueOf(id)).get(0).getString("depname"));
  316. }
  317. ArrayList<String> tag = tagList.get(id) != null ? tagList.get(id) : new ArrayList<>();
  318. ArrayList<String> sys_tag = sysTagList.get(id) != null ? sysTagList.get(id) : new ArrayList<>();
  319. //非系统标签
  320. row.put("tag", tag);
  321. //系统标签
  322. row.put("tag_sys", sys_tag);
  323. }
  324. return getSucReturnObject().setData(rows).toString();
  325. }
  326. @API(title = "选择经销商列表", apiversion = R.ID2025102714042402.v1.class)
  327. public String chooseAgents() throws YosException {
  328. StringBuffer where = new StringBuffer(" 1=1 ");
  329. if (content.containsKey("where")) {
  330. JSONObject whereObject = content.getJSONObject("where");
  331. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  332. where.append(" and(");
  333. where.append("t1.agentnum like'%").append(whereObject.getString("condition")).append("%' ");
  334. where.append("or t2.enterprisename like'%").append(whereObject.getString("condition")).append("%' ");
  335. where.append("or t2.province like'%").append(whereObject.getString("condition")).append("%' ");
  336. where.append("or t2.city like'%").append(whereObject.getString("condition")).append("%' ");
  337. where.append("or t2.county like'%").append(whereObject.getString("condition")).append("%' ");
  338. where.append("or t2.address like'%").append(whereObject.getString("condition")).append("%' ");
  339. where.append("or t3.erpagentnum like'%").append(whereObject.getString("condition")).append("%' ");
  340. where.append(")");
  341. }
  342. }
  343. where.append(" and t1.status ='启用' ");
  344. ArrayList<Long> hrids = Proxy.getProxyHrids(this);
  345. hrids.add(hrid);
  346. Long sa_hospitaldepid = content.getLongValue("sa_hospitaldepid");
  347. where.append(" and t1.sa_agentsid not in (SELECT sa_agentsid from sa_agents_hospital " +
  348. "WHERE sa_hospitaldepid="+sa_hospitaldepid+")");
  349. String sql=" and t1.sa_agentsid in (SELECT sa_agentsid from sys_enterprise_tradefield " +
  350. "WHERE hrid in "+hrids+")";
  351. sql= sql.replace("[","(").replace("]",")");
  352. where.append(sql);
  353. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_agents",
  354. "sa_agentsid", "sys_enterpriseid", "gmname", "gmphonenumber", "agentnum", "cooperatetype", "remarks", "status", "createdate", "scale", "mainproducts").
  355. setTableAlias("t1");
  356. querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t2", "t1.siteid = t2.siteid and t1.sys_enterpriseid = t2.sys_enterpriseid",
  357. "enterprisename", "province", "city", "county", "address");
  358. querySQL.addJoinTable(JOINTYPE.left, "sys_dataextend", "t3", "t1.sys_enterpriseid = t3.ownerid and ownertable = 'sys_enterprise' and t1.siteid = t3.siteid",
  359. "erpagentnum");
  360. // querySQL.addJoinTable(JOINTYPE.inner, "sys_enterprise_tradefield", "t4", "t4.sa_agentsid=t1.sa_agentsid and t4.siteid=t1.siteid");
  361. // querySQL.setWhere("t4.hrid", hrids);
  362. querySQL.setSiteid(siteid);
  363. querySQL.setWhere(where);
  364. querySQL.setPage(pageSize, pageNumber);
  365. querySQL.setOrderBy("t1.createdate desc");
  366. Rows rows = querySQL.query();
  367. RowsMap areaRowsMap = CommonHepler.getAreaRowsMap(this, rows.toArrayList("sa_agentsid", new ArrayList<>()));
  368. RowsMap salerRowsMap = CommonHepler.getSalerNameRowsMap(this, rows.toArrayList("sa_agentsid", new ArrayList<>()));
  369. for (Row row : rows) {
  370. row.put("p_c_c", row.getString("province") + "-" + row.getString("city") + "-" + row.getString("county"));
  371. Rows areaRows = areaRowsMap.getOrDefault(row.getString("sa_agentsid"), new Rows());
  372. row.put("areanames", StringUtils.join(areaRows.toArrayList("areaname"), ","));
  373. Rows salerRows = salerRowsMap.getOrDefault(row.getString("sa_agentsid"), new Rows());
  374. row.put("salernames", StringUtils.join(salerRows.toArrayList("name"), ","));
  375. }
  376. return getSucReturnObject().setData(rows).toString();
  377. }
  378. @API(title = "添加经销商", apiversion = R.ID2025102713181402.v1.class)
  379. public String addAgents() throws YosException {
  380. Long sa_hospitaldepid = content.getLongValue("sa_hospitaldepid");
  381. JSONArray sa_agentsids = content.getJSONArray("sa_agentsids");
  382. Long sa_customersid = 0L;
  383. Rows rows = dbConnect.runSqlQuery("SELECT * from sa_hospitaldep WHERE sa_hospitaldepid=" + sa_hospitaldepid);
  384. if (rows.isNotEmpty()) {
  385. sa_customersid = rows.get(0).getLong("sa_customersid");
  386. }
  387. ArrayList<String> sqlList = new ArrayList<>();
  388. for (Object object : sa_agentsids) {
  389. Long sa_agentsid = Long.valueOf(object.toString());
  390. InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sa_agents_hospital");
  391. insertSQL.setUniqueid(createTableID("sa_agents_hospital"));
  392. insertSQL.setSiteid(siteid);
  393. insertSQL.setValue("sa_agentsid", sa_agentsid);
  394. insertSQL.setValue("sa_hospitaldepid", sa_hospitaldepid);
  395. insertSQL.setValue("sa_customersid", sa_customersid);
  396. insertSQL.setWhere(" not exists(select 1 from sa_agents_hospital where sa_agentsid=" + sa_agentsid + " and siteid='" + siteid + "' and sa_hospitaldepid='" + sa_hospitaldepid + "')");
  397. sqlList.add(insertSQL.getSQL());
  398. sqlList.add(DataContrlLog.createLog(this, "sa_hospitaldep", sa_hospitaldepid, "关联经销商", "关联经销商ID:" + sa_agentsid).getSQL());
  399. }
  400. dbConnect.runSqlUpdate(sqlList);
  401. DataTag.createSystemTag(this, "sa_customers", sa_customersid, "经销");
  402. return getSucReturnObject().toString();
  403. }
  404. @API(title = "删除经销商关联", apiversion = R.ID2025102713243702.v1.class)
  405. public String deleteAgents() throws YosException {
  406. Long sa_agents_hospitalid = content.getLong("sa_agents_hospitalid");
  407. Rows rows = dbConnect.runSqlQuery("SELECT * from sa_agents_hospital WHERE sa_agents_hospitalid=" + sa_agents_hospitalid + " and siteid='" + siteid + "'");
  408. Long sa_agentsid = rows.isNotEmpty() ? rows.get(0).getLong("sa_agentsid") : 0;
  409. Long sa_customersid = rows.isNotEmpty() ? rows.get(0).getLong("sa_customersid") : 0;
  410. Long sa_hospitaldepid = rows.isNotEmpty() ? rows.get(0).getLong("sa_hospitaldepid") : 0;
  411. DeleteSQL deleteSQL = SQLFactory.createDeleteSQL(this, "sa_agents_hospital");
  412. deleteSQL.setSiteid(siteid);
  413. deleteSQL.setWhere("sa_agents_hospitalid", sa_agents_hospitalid);
  414. deleteSQL.delete();
  415. DataContrlLog.createLog(this, "sa_hospitaldep", sa_hospitaldepid, "删除经销商", "删除经销商ID:" + sa_agentsid).insert();
  416. if (dbConnect.runSqlQuery("SELECT * from sa_agents_hospital WHERE sa_customersid=" + sa_customersid + " and siteid='" + siteid + "'").isEmpty()) {
  417. DataTag.deleteTag(this, "sa_customers", sa_customersid, "经销");
  418. DataTag.createSystemTag(this, "sa_customers", sa_customersid, "直销");
  419. }
  420. return getSucReturnObject().toString();
  421. }
  422. @API(title = "查询关联的经销商", apiversion = R.ID2025111911232002.v1.class)
  423. public String queryList() throws YosException {
  424. StringBuffer where = new StringBuffer(" 1=1 ");
  425. if (content.containsKey("where")) {
  426. JSONObject whereObject = content.getJSONObject("where");
  427. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  428. where.append(" and(");
  429. where.append("t1.agentnum like'%").append(whereObject.getString("condition")).append("%' ");
  430. where.append("or t2.enterprisename like'%").append(whereObject.getString("condition")).append("%' ");
  431. where.append("or t2.province like'%").append(whereObject.getString("condition")).append("%' ");
  432. where.append("or t2.city like'%").append(whereObject.getString("condition")).append("%' ");
  433. where.append("or t2.county like'%").append(whereObject.getString("condition")).append("%' ");
  434. where.append("or t2.address like'%").append(whereObject.getString("condition")).append("%' ");
  435. where.append("or t3.erpagentnum like'%").append(whereObject.getString("condition")).append("%' ");
  436. where.append(")");
  437. }
  438. }
  439. where.append(" and t1.status ='启用' ");
  440. Long sa_hospitaldepid = content.getLongValue("sa_hospitaldepid");
  441. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_agents",
  442. "sa_agentsid", "sys_enterpriseid", "gmname", "gmphonenumber", "agentnum", "cooperatetype", "remarks", "status", "createdate", "scale", "mainproducts").
  443. setTableAlias("t1");
  444. querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t2", "t1.siteid = t2.siteid and t1.sys_enterpriseid = t2.sys_enterpriseid",
  445. "enterprisename", "province", "city", "county", "address");
  446. querySQL.addJoinTable(JOINTYPE.left, "sys_dataextend", "t3", "t1.sys_enterpriseid = t3.ownerid and ownertable = 'sys_enterprise' and t1.siteid = t3.siteid",
  447. "erpagentnum");
  448. querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t4", "t4.siteid = t1.siteid and t4.sa_agentsid = t1.parentid");
  449. querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t5", "t5.siteid = t4.siteid and t5.sys_enterpriseid = t4.sys_enterpriseid");
  450. querySQL.addJoinTable(JOINTYPE.inner, "sa_agents_hospital", "t6", "t6.siteid = t1.siteid and t6.sa_agentsid = t1.sa_agentsid","sa_agents_hospitalid");
  451. querySQL.addQueryFields("parent_enterprisename", "t5.enterprisename");
  452. querySQL.setWhere("t6.sa_hospitaldepid",sa_hospitaldepid);
  453. querySQL.setSiteid(siteid);
  454. querySQL.setWhere(where);
  455. querySQL.setPage(pageSize, pageNumber);
  456. querySQL.setOrderBy("t1.createdate desc");
  457. Rows rows = querySQL.query();
  458. RowsMap areaRowsMap = CommonHepler.getAreaRowsMap(this, rows.toArrayList("sa_agentsid", new ArrayList<>()));
  459. RowsMap salerRowsMap = CommonHepler.getSalerNameRowsMap(this, rows.toArrayList("sa_agentsid", new ArrayList<>()));
  460. for (Row row : rows) {
  461. row.put("p_c_c", row.getString("province") + "-" + row.getString("city") + "-" + row.getString("county"));
  462. Rows areaRows = areaRowsMap.getOrDefault(row.getString("sa_agentsid"), new Rows());
  463. row.put("areanames", StringUtils.join(areaRows.toArrayList("areaname"), ","));
  464. Rows salerRows = salerRowsMap.getOrDefault(row.getString("sa_agentsid"), new Rows());
  465. row.put("salernames", StringUtils.join(salerRows.toArrayList("name"), ","));
  466. }
  467. return getSucReturnObject().setData(rows).toString();
  468. }
  469. }