Hospital.java 49 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872
  1. package restcontroller.sale.customer;
  2. import beans.CommonHepler;
  3. import beans.brand.Brand;
  4. import beans.datacontrllog.DataContrlLog;
  5. import beans.dataextend.DataExtend;
  6. import beans.datatag.DataTag;
  7. import beans.datateam.DataTeam;
  8. import beans.hr.Hr;
  9. import beans.itemclass.ItemClass;
  10. import beans.proxy.Proxy;
  11. import beans.recycle.Recycle;
  12. import beans.salearea.SaleArea;
  13. import com.alibaba.fastjson.JSONArray;
  14. import com.alibaba.fastjson.JSONObject;
  15. import common.Controller;
  16. import common.YosException;
  17. import common.annotation.API;
  18. import common.annotation.CACHEING_CLEAN;
  19. import common.data.*;
  20. import org.apache.commons.lang.StringUtils;
  21. import org.apache.poi.xssf.usermodel.XSSFCellStyle;
  22. import org.apache.poi.xssf.usermodel.XSSFSheet;
  23. import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  24. import org.sqlite.core.DB;
  25. import restcontroller.R;
  26. import restcontroller.webmanage.executorService.Executor;
  27. import java.io.IOException;
  28. import java.util.ArrayList;
  29. import java.util.HashMap;
  30. import java.util.HashSet;
  31. import java.util.List;
  32. import static beans.customers.Customers.getRepeatCustomers;
  33. /**
  34. * 医院管理
  35. */
  36. public class Hospital extends Controller {
  37. /**
  38. * 构造函数
  39. *
  40. * @param content
  41. */
  42. public Hospital(JSONObject content) throws YosException {
  43. super(content);
  44. }
  45. @API(title = "新增或更新", apiversion = R.ID20221012163902.v1.class, intervaltime = 2000)
  46. @CACHEING_CLEAN(apiversions = {R.ID20221022165503.v1.class, R.ID20221011133602.class, R.ID20221013102602.class,
  47. R.ID20221012164402.class, R.ID20221014164702.class, R.ID20220920083901.class, R.ID20220929085401.class,
  48. R.ID20220920083901.v1.class})
  49. public String insertOrUpdate() throws YosException {
  50. String tablename = "sa_customers";
  51. Long sa_customersid = content.getLong("sa_customersid");
  52. String type = content.getString("type");
  53. Long sys_enterpriseid = content.getLong("sys_enterpriseid");
  54. String enterprisename = content.getString("enterprisename");
  55. String address = content.getStringValue("address");
  56. String province = content.getStringValue("province");
  57. String city = content.getStringValue("city");
  58. String county = content.getStringValue("county");
  59. Long saler_userid = content.getLongValue("saler_userid");
  60. if (userInfo.isSaler()) {
  61. saler_userid = userid;
  62. }
  63. ArrayList<String> sqlList = new ArrayList<>();
  64. //创建企业档案
  65. if (sys_enterpriseid <= 0) {
  66. sys_enterpriseid = createTableID("sys_enterprise");
  67. InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sys_enterprise");
  68. insertSQL.setSiteid(siteid);
  69. insertSQL.setUniqueid(sys_enterpriseid);
  70. insertSQL.setValue("province", province);
  71. insertSQL.setValue("city", city);
  72. insertSQL.setValue("county", county);
  73. insertSQL.setValue("address", address);
  74. insertSQL.setValue("enterprisename", enterprisename);
  75. sqlList.add(insertSQL.getSQL());
  76. } else {
  77. UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sys_enterprise");
  78. updateSQL.setSiteid(siteid);
  79. updateSQL.setUniqueid(sys_enterpriseid);
  80. updateSQL.setValue("province", province);
  81. updateSQL.setValue("city", city);
  82. updateSQL.setValue("county", county);
  83. updateSQL.setValue("address", address);
  84. updateSQL.setValue("enterprisename", enterprisename);
  85. sqlList.add(updateSQL.getSQL());
  86. }
  87. boolean isAdd = false;
  88. if (sa_customersid <= 0) {
  89. isAdd = true;
  90. Rows stagenameRows = dbConnect.runSqlQuery("SELECT stagename from sa_devstage WHERE siteid='" + siteid + "' order by sequence LIMIT 1");
  91. sa_customersid = createTableID(tablename);
  92. InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sa_customers");
  93. insertSQL.setSiteid(siteid);
  94. insertSQL.setUniqueid(sa_customersid);
  95. insertSQL.setValue("billno", createBillCode("hospital"));
  96. insertSQL.setValue("sys_enterpriseid", sys_enterpriseid);
  97. insertSQL.setValue("name", enterprisename);
  98. insertSQL.setValue("type", type);
  99. insertSQL.setValue("grade", content.getStringValue("grade"));
  100. insertSQL.setValue("host", content.getLongValue("host"));
  101. insertSQL.setValue("room", content.getLongValue("room"));
  102. insertSQL.setValue("bed", content.getLongValue("bed"));
  103. insertSQL.setValue("scale", content.getLongValue("scale"));
  104. insertSQL.setValue("sa_saleareaid", content.getLongValue("sa_saleareaid"));
  105. insertSQL.setValue("province", province);
  106. insertSQL.setValue("city", city);
  107. insertSQL.setValue("county", county);
  108. insertSQL.setValue("address", address);
  109. insertSQL.setValue("stagename", stagenameRows.isNotEmpty() ? stagenameRows.get(0).getString("stagename") : "");
  110. sqlList.add(insertSQL.getSQL());
  111. } else {
  112. UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_customers");
  113. updateSQL.setSiteid(siteid);
  114. updateSQL.setUniqueid(sa_customersid);
  115. updateSQL.setValue("name", enterprisename);
  116. updateSQL.setValue("type", type);
  117. updateSQL.setValue("grade", content.getStringValue("grade"));
  118. updateSQL.setValue("host", content.getLongValue("host"));
  119. updateSQL.setValue("room", content.getLongValue("room"));
  120. updateSQL.setValue("bed", content.getLongValue("bed"));
  121. updateSQL.setValue("scale", content.getLongValue("scale"));
  122. updateSQL.setValue("sa_saleareaid", content.getStringValue("sa_saleareaid"));
  123. sqlList.add(updateSQL.getSQL());
  124. }
  125. if (isAdd) {
  126. //数据团队新增
  127. sqlList.addAll(DataTeam.createTeamSQL(this, tablename, sa_customersid, saler_userid));
  128. sqlList.add(DataContrlLog.createLog(this, tablename, sa_customersid, "新建", "新建医院成功").getSQL());
  129. //标记数据来源
  130. DataExtend.markDataFrom(this, "sa_customers", sa_customersid);
  131. } else {
  132. sqlList.add(DataContrlLog.createLog(this, tablename, sa_customersid, "编辑", "编辑医院成功").getSQL());
  133. }
  134. DataTag.deleteTag(this, "sa_customers", sa_customersid, "公立");
  135. DataTag.deleteTag(this, "sa_customers", sa_customersid, "民营");
  136. //标签
  137. DataTag.createSystemTag(this, "sa_customers", sa_customersid, type);
  138. //新增时插入财务信息和联系人信息
  139. if (isAdd) {
  140. //添加地址
  141. Long contactsid = createTableID("sys_enterprise_contacts");
  142. InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sys_enterprise_contacts");
  143. insertSQL.setSiteid(siteid);
  144. insertSQL.setValue("contactsid", contactsid);
  145. insertSQL.setValue("sys_enterpriseid", sys_enterpriseid);
  146. insertSQL.setValue("province", province);
  147. insertSQL.setValue("city", city);
  148. insertSQL.setValue("county", county);
  149. insertSQL.setValue("address", address);
  150. insertSQL.setValue("workaddress", 1);
  151. insertSQL.setValue("isdefault", 1);
  152. insertSQL.setValue("isprimary", 1);
  153. sqlList.add(insertSQL.getSQL());
  154. }
  155. content.put("sa_customersid", sa_customersid);
  156. String time = userInfo.getDateTime_Str();
  157. dbConnect.runSqlUpdate(sqlList);
  158. DataTag.deleteTag(this, "sa_customers", sa_customersid, "疑似重复");
  159. Rows teamRows = DataTeam.queryTeamRowWithoutHeadpic(this, "sa_customers", sa_customersid);
  160. Rows leaderRows = teamRows.toRowsMap("isleader").get("1");
  161. Long leaderuserid = leaderRows.isNotEmpty() ? leaderRows.get(0).getLong("userid") : 0;
  162. Long departmentid = getDepartment(leaderuserid).getLong("departmentid");
  163. ArrayList<Long> userids = new ArrayList<>();
  164. userids.add(leaderuserid);
  165. userids.addAll(Proxy.getProxyUserids(this));
  166. userids.add(Hr.getReportUserid(this, leaderuserid));
  167. userids.addAll(Hr.getLeaderRows(this, departmentid).toArrayList("userid", new ArrayList<Long>()));
  168. JSONObject extradata = new JSONObject();
  169. extradata.put("extraUserList", userids);
  170. //客户查重
  171. if (isAdd) {
  172. ArrayList<Long> repeatIds = getRepeatCustomers(this, sa_customersid);
  173. repeatIds.add(120L);
  174. for (Object obj : repeatIds) {
  175. Long id = Long.valueOf(obj.toString());
  176. JSONObject extradata1 = new JSONObject();
  177. extradata1.put("extraUserList", DataTeam.queryTeamRowWithoutHeadpic(this, "sa_customers", id).toArrayList("userid", new ArrayList<>()));
  178. Executor.sendEml_controller(this, "customers_repeat", sa_customersid, extradata1);
  179. }
  180. Executor.sendEml_controller(this, "customers_add_my", sa_customersid, extradata);
  181. } else {
  182. String changedValue = getChangedValue(sa_customersid, time);
  183. if (StringUtils.isEmpty(changedValue)) {
  184. DataContrlLog.createLog(this, "sa_customers", sa_customersid, "编辑", "编辑医院" + enterprisename + "(" + sa_customersid + "),无字段值更新").insert();
  185. } else {
  186. DataContrlLog.createLog(this, "sa_customers", sa_customersid, "编辑", "编辑医院" + enterprisename + "(" + sa_customersid + ");" + changedValue).insert();
  187. Executor.sendEml_controller(this, "customers_update_my", sa_customersid, extradata);
  188. }
  189. }
  190. if (content.containsKey("sa_agentsid")) {
  191. Long sa_agentsid = content.getLongValue("sa_agentsid");
  192. InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sa_agents_hospital");
  193. insertSQL.setUniqueid(createTableID("sa_agents_hospital"));
  194. insertSQL.setSiteid(siteid);
  195. insertSQL.setValue("sa_agentsid", sa_agentsid);
  196. insertSQL.setValue("sa_customersid", sa_customersid);
  197. insertSQL.setWhere(" not exists(select 1 from sa_agents_hospital where sa_agentsid=" + sa_agentsid + " and siteid='" + siteid + "' and sa_customersid='" + sa_customersid + "')");
  198. insertSQL.insert();
  199. }
  200. return selectDetail();
  201. }
  202. public String getChangedValue(Long sa_customersid, String time) throws YosException {
  203. SQLFactory sqlFactory = new SQLFactory(this, "查询客户编辑操作记录值变化");
  204. sqlFactory.addParameter("sa_customersid", sa_customersid);
  205. sqlFactory.addParameter("time", time);
  206. Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL(false));
  207. if (rows.isNotEmpty()) {
  208. return rows.get(0).getString("content");
  209. }
  210. return "";
  211. }
  212. @API(title = "详细", apiversion = R.ID20221012164302.v1.class)
  213. public String selectDetail() throws YosException {
  214. Long sa_customersid = content.getLong("sa_customersid");
  215. SQLFactory sqlFactory = new SQLFactory(this, "客户详情");
  216. sqlFactory.addParameter("siteid", siteid);
  217. sqlFactory.addParameter("sa_customersid", sa_customersid);
  218. Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL(false));
  219. ArrayList<Long> ids = rows.toArrayList("sa_customersid", new ArrayList<>());
  220. RowsMap leaderRows = DataTeam.getLeader(this, "sa_customers", rows.toArrayList("sa_customersid")).toRowsMap("ownerid");
  221. //标签
  222. HashMap<Long, ArrayList<String>> tagList = DataTag.queryTag(this, "sa_customers", ids, false);
  223. //系统标签
  224. HashMap<Long, ArrayList<String>> sysTagList = DataTag.queryTag(this, "sa_customers", ids, true);
  225. RowsMap opRowsMap = CommonHepler.getHospitalOPRowsMap(this);
  226. for (Row row : rows) {
  227. Long id = row.getLong("sa_customersid");
  228. row.put("leader", leaderRows.get(row.getString("sa_customersid")));
  229. if (leaderRows.get(String.valueOf(id)).isNotEmpty()) {
  230. row.put("depname", leaderRows.get(String.valueOf(id)).get(0).getString("depname"));
  231. }
  232. ArrayList<String> tag = tagList.get(id) != null ? tagList.get(id) : new ArrayList<String>();
  233. ArrayList<String> sys_tag = sysTagList.get(id) != null ? sysTagList.get(id) : new ArrayList<String>();
  234. if (row.getString("agentsstatus").equals("禁用") || row.getString("agentsstatus").equals("作废")) {
  235. tag.removeAll(row.getJSONArray("agentstag").toJavaList(String.class));
  236. sys_tag.removeAll(row.getJSONArray("agentstag").toJavaList(String.class));
  237. }
  238. //非系统标签
  239. row.put("tag", tag);
  240. //系统标签
  241. row.put("tag_sys", sys_tag);
  242. //预估手术总量
  243. //预估手术总量
  244. Rows totalop = opRowsMap.getOrDefault(String.valueOf(id), new Rows());
  245. row.putIfAbsent("totalop", totalop.isNotEmpty() ? totalop.get(0).getInteger("qty") : 0);
  246. }
  247. Row row = rows.isNotEmpty() ? rows.get(0) : new Row();
  248. Long sys_enterpriseid = rows.isNotEmpty() ? row.getLong("sys_enterpriseid") : 0;
  249. Rows addressRows = dbConnect.runSqlQuery("SELECT * from sys_enterprise_contacts WHERE isdefault=1 and workaddress=1 and deleted=0 and sys_enterpriseid=" + sys_enterpriseid + " and siteid='" + siteid + "'");
  250. row.put("province", addressRows.isNotEmpty() ? addressRows.get(0).getString("province") : new Row());
  251. row.put("city", addressRows.isNotEmpty() ? addressRows.get(0).getString("city") : new Row());
  252. row.put("county", addressRows.isNotEmpty() ? addressRows.get(0).getString("county") : new Row());
  253. row.put("address", addressRows.isNotEmpty() ? addressRows.get(0).getString("address") : new Row());
  254. return getSucReturnObject().setData(row).toString();
  255. }
  256. @API(title = "医院列表", apiversion = R.ID20221012164402.v1.class)
  257. public String selectList() throws YosException, IOException {
  258. // 1:我负责的;2:我参与的;3:我下属负责的;4:我下属参与的
  259. int type = content.getIntValue("type");
  260. Long deleted = content.getLongValue("deleted");
  261. String tablename = "sa_customers";
  262. StringBuffer where = new StringBuffer(" 1=1 ");
  263. if (content.containsKey("where")) {
  264. JSONObject whereObject = content.getJSONObject("where");
  265. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  266. where.append(" and(");
  267. where.append("t1.billno like'%").append(whereObject.getString("condition")).append("%' ");
  268. where.append("or t1.province like'%").append(whereObject.getString("condition")).append("%' ");
  269. where.append("or t1.city like'%").append(whereObject.getString("condition")).append("%' ");
  270. where.append("or t1.county like'%").append(whereObject.getString("condition")).append("%' ");
  271. where.append("or t1.address like'%").append(whereObject.getString("condition")).append("%' ");
  272. where.append("or t2.enterprisename like'%").append(whereObject.getString("condition")).append("%' ");
  273. where.append("or t2.abbreviation like'%").append(whereObject.getString("condition")).append("%' ");
  274. where.append("or t6.name like'%").append(whereObject.getString("condition")).append("%' ");
  275. where.append("or t8.depname like'%").append(whereObject.getString("condition")).append("%' ");
  276. where.append(")");
  277. }
  278. if (whereObject.containsKey("startdate") && !"".equals(whereObject.getString("startdate"))) {
  279. where.append(" and(");
  280. where.append("t1.createdate >='").append(whereObject.getString("startdate")).append(" 00:00:00' ");
  281. where.append(")");
  282. }
  283. if (whereObject.containsKey("enddate") && !"".equals(whereObject.getString("enddate"))) {
  284. where.append(" and(");
  285. where.append("t1.createdate <='").append(whereObject.getString("enddate")).append(" 23:59:59' ");
  286. where.append(")");
  287. }
  288. //开发状态
  289. if (whereObject.containsKey("status") && !"".equals(whereObject.getString("status"))) {
  290. where.append(" and(");
  291. where.append("t1.status ='").append(whereObject.getString("status")).append("' ");
  292. where.append(")");
  293. }
  294. //医院类型
  295. if (whereObject.containsKey("type") && !"".equals(whereObject.getString("type"))) {
  296. where.append(" and(");
  297. where.append("t1.type ='").append(whereObject.getString("type")).append("' ");
  298. where.append(")");
  299. }
  300. //医院等级
  301. if (whereObject.containsKey("grade") && !"".equals(whereObject.getString("grade"))) {
  302. where.append(" and(");
  303. where.append("t1.grade ='").append(whereObject.getString("grade")).append("' ");
  304. where.append(")");
  305. }
  306. //成交状态
  307. if (whereObject.containsKey("tradingstatus") && !"".equals(whereObject.getString("tradingstatus"))) {
  308. where.append(" and(");
  309. where.append("t1.tradingstatus ='").append(whereObject.getString("tradingstatus")).append("' ");
  310. where.append(")");
  311. }
  312. //标签
  313. if (whereObject.containsKey("tag") && !whereObject.getJSONArray("tag").isEmpty()) {
  314. JSONArray tags = whereObject.getJSONArray("tag");
  315. String tag = tags.toString().replace("[", "(").replace("]", ")");
  316. if (tags.size() > 0) {
  317. where.append(" and exists(select 1 from sys_datatag WHERE ownertable = 'sa_customers' and siteid='").append(siteid).append("' ");
  318. where.append(" and tag in ").append(tag).append(" and t1.sa_customersid=ownerid ");
  319. where.append(")");
  320. }
  321. }
  322. //开发阶段
  323. if (whereObject.containsKey("stagename") && !"".equals(whereObject.getString("stagename"))) {
  324. where.append(" and(");
  325. where.append("t1.stagename ='").append(whereObject.getString("stagename")).append("' ");
  326. where.append(")");
  327. }
  328. //营销区域
  329. if (whereObject.containsKey("sa_saleareaid") && !"".equals(whereObject.getString("sa_saleareaid"))) {
  330. Long sa_saleareaid = whereObject.getLong("sa_saleareaid");
  331. ArrayList<Long> sa_saleareaids = SaleArea.getSubSaleAreaIds(this, sa_saleareaid);
  332. sa_saleareaids.add(sa_saleareaid);
  333. Rows rows = dbConnect.runSqlQuery("SELECT DISTINCT t2.userid from sa_salearea_hr t1 " +
  334. "inner join sys_hr t2 ON t2.hrid=t1.hrid and t2.siteid=t1.siteid " +
  335. "WHERE t1.siteid='" + siteid + "' and t1.sa_saleareaid in(" + StringUtils.join(sa_saleareaids, ",") + ") and t2.userid>0");
  336. HashSet<Long> userIds = new HashSet<>(rows.toArrayList("userid", new ArrayList<>()));
  337. userIds.add(-1L);
  338. where.append(" and(");
  339. where.append(" t6.userid in ").append(userIds.toString().replace("[", "(").replace("]", ")"));
  340. where.append(")");
  341. }
  342. }
  343. if (deleted == 1) {
  344. where.append(" and ( t1.datastatus =1 )");
  345. } else {
  346. where.append(" and ( t1.datastatus in (0,2) )");
  347. }
  348. String where2 = " 1=1 ";
  349. if (deleted == 0) {
  350. if (type == 0) {
  351. where2 = "(" + DataTeam.getDataWhereStr(this, tablename, "t1", 1)
  352. + " or " + DataTeam.getDataWhereStr(this, tablename, "t1", 2) + ")";
  353. } else {
  354. where2 = DataTeam.getDataWhereStr(this, tablename, "t1", type);
  355. }
  356. } else {
  357. where2 = Recycle.getWhereSql(this, tablename, "t1.sa_customersid");
  358. }
  359. boolean isExport = content.getBoolean("isExport");
  360. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_customers", "sa_customersid", "createby", "createdate",
  361. "sys_enterpriseid", "status", "type", "tradingstatus", "datastatus", "billno", "province", "city", "county", "address", "stagename", "grade");
  362. querySQL.setTableAlias("t1");
  363. querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t2", "t2.sys_enterpriseid = t1.sys_enterpriseid AND t2.siteid = t1.siteid", "enterprisename");
  364. querySQL.addJoinTable(JOINTYPE.left, "sa_salearea", "t3", "t3.sa_saleareaid = t1.sa_saleareaid AND t3.siteid = t1.siteid", "areaname");
  365. QuerySQL t5 = SQLFactory.createQuerySQL(this, "sys_datafollowup", "ownerid");
  366. t5.setWhere("ownertable", "sa_customers");
  367. t5.setSiteid(siteid);
  368. t5.addGroupBy("ownerid");
  369. t5.addQueryFields("followdate", "max(createdate)");
  370. t5.setRoleDataLimit(false);
  371. querySQL.addJoinTable(JOINTYPE.left, t5, "t5", "t5.ownerid = t1.sa_customersid", "followdate");
  372. 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");
  373. querySQL.addJoinTable(JOINTYPE.left, "sys_hr", "t7", "t7.userid = t6.userid and t7.siteid = t6.siteid ");
  374. querySQL.addJoinTable(JOINTYPE.left, "sys_department", "t8", "t8.departmentid = t7.departmentid and t8.siteid = t7.siteid ");
  375. querySQL.addJoinTable(JOINTYPE.left, "sys_dataextend", "t10", "t1.siteid = t10.siteid and t1.sa_customersid = t10.ownerid and t10.ownertable = 'sa_customers'", "deletereason");
  376. querySQL.setSiteid(siteid);
  377. querySQL.setWhere(where);
  378. querySQL.setWhere(where2);
  379. if (isExport) {
  380. querySQL.setPage(999999, 1);
  381. } else {
  382. querySQL.setPage(pageSize, pageNumber);
  383. }
  384. if (pageSorting.equals("''")) {
  385. pageSorting = "t1.createdate desc";
  386. }
  387. querySQL.setOrderBy(pageSorting);
  388. querySQL.setRoleDataLimit(false);
  389. querySQL.withDeleteData(true);
  390. Rows rows = querySQL.query();
  391. RowsMap leaderRows = DataTeam.getLeaderWithoutHeadpic(this, "sa_customers", rows.toArrayList("sa_customersid")).toRowsMap("ownerid");
  392. ArrayList<Long> ids = rows.toArrayList("sa_customersid", new ArrayList<>());
  393. //标签
  394. HashMap<Long, ArrayList<String>> tagList = DataTag.queryTag(this, tablename, ids, false);
  395. //系统标签
  396. HashMap<Long, ArrayList<String>> sysTagList = DataTag.queryTag(this, tablename, ids, true);
  397. Rows stageRows = dbConnect.runSqlQuery("SELECT stagename,sequence from sa_devstage WHERE siteid='" + siteid + "' order by sequence");
  398. RowsMap AgentRowsMap = CommonHepler.getAgentRowsMap(this, ids);
  399. RowsMap KeyDoctorsRowsMap = CommonHepler.getKeyDoctorsRowsMap(this, ids);
  400. RowsMap opRowsMap = CommonHepler.getHospitalOPRowsMap(this);
  401. for (Row row : rows) {
  402. Long id = row.getLong("sa_customersid");
  403. row.put("leader", leaderRows.get(String.valueOf(id)));
  404. if (leaderRows.get(String.valueOf(id)).isNotEmpty()) {
  405. row.put("name", leaderRows.get(String.valueOf(id)).get(0).getString("name"));
  406. row.put("depname", leaderRows.get(String.valueOf(id)).get(0).getString("depname"));
  407. }
  408. ArrayList<String> tag = tagList.get(id) != null ? tagList.get(id) : new ArrayList<String>();
  409. ArrayList<String> sys_tag = sysTagList.get(id) != null ? sysTagList.get(id) : new ArrayList<String>();
  410. //非系统标签
  411. row.put("tag", tag);
  412. //系统标签
  413. row.put("tag_sys", sys_tag);
  414. row.putIfAbsent("followdate", "");
  415. //预估手术总量
  416. Rows totalop = opRowsMap.getOrDefault(String.valueOf(id), new Rows());
  417. row.putIfAbsent("totalop", totalop.isNotEmpty() ? totalop.get(0).getInteger("qty") : 0);
  418. //关键人
  419. Rows KeyDoctors = KeyDoctorsRowsMap.getOrDefault(String.valueOf(id), new Rows());
  420. row.putIfAbsent("keyperson", StringUtils.join(KeyDoctors.toArray("doctorname"), ","));
  421. //签约经销商
  422. Rows signagent = AgentRowsMap.getOrDefault(String.valueOf(id), new Rows());
  423. row.putIfAbsent("signagent", StringUtils.join(signagent.toArray("enterprisename"), ","));
  424. String stagename = row.getString("stagename");
  425. for (Row stageRow : stageRows) {
  426. if (stagename.equals(stageRow.getString("stagename"))) {
  427. stageRow.put("active", 1);
  428. }
  429. stageRow.putIfAbsent("active", 0);
  430. }
  431. row.put("stages", stageRows);
  432. }
  433. if (isExport) {
  434. ExcelFactory excelFactory = new ExcelFactory("医院管理导出");
  435. XSSFSheet sheet = excelFactory.getXssfWorkbook().createSheet("医院管理");
  436. XSSFWorkbook xssfFWorkbook = excelFactory.getXssfWorkbook();
  437. ExportExcel.setBatchDetailSheetColumn(sheet);// 设置工作薄列宽
  438. XSSFCellStyle titleCellStyle1 = ExportExcel.createTitleCellStyle(xssfFWorkbook);
  439. XSSFCellStyle titleCellStyle2 = ExportExcel.createBodyCellStyle(xssfFWorkbook);
  440. ExportExcel.download(sheet, titleCellStyle1, titleCellStyle2, rows);// 写入标题
  441. Rows aa = uploadExcelToObs(excelFactory);
  442. String url = "";
  443. if (!aa.isEmpty()) {
  444. url = aa.get(0).getString("url");
  445. }
  446. return getSucReturnObject().setData(url).toString();
  447. }
  448. return getSucReturnObject().setData(rows).toString();
  449. }
  450. @API(title = "关联医生查询", apiversion = R.ID2025102310134602.v1.class)
  451. public String queryDoctors() throws YosException {
  452. StringBuffer where = new StringBuffer(" 1=1 ");
  453. if (content.containsKey("where")) {
  454. JSONObject whereObject = content.getJSONObject("where");
  455. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  456. where.append(" and(");
  457. where.append("t1.doctorname like'%").append(whereObject.getString("condition")).append("%' ");
  458. where.append("or t1.phonenumber like'%").append(whereObject.getString("condition")).append("%' ");
  459. where.append("or t1.professional like'%").append(whereObject.getString("condition")).append("%' ");
  460. where.append("or t2.hospitaldepname like'%").append(whereObject.getString("condition")).append("%' ");
  461. where.append("or t4.enterprisename like'%").append(whereObject.getString("condition")).append("%' ");
  462. where.append(")");
  463. }
  464. }
  465. Long sa_customersid = content.getLong("sa_customersid");
  466. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_doctor", "*").setTableAlias("t1");
  467. querySQL.addJoinTable(JOINTYPE.left, "sa_hospitaldep", "t2", "t2.sa_hospitaldepid=t1.sa_hospitaldepid and t2.siteid=t1.siteid", "hospitaldepname");
  468. querySQL.addJoinTable(JOINTYPE.left, "sa_customers", "t3", "t3.sa_customersid=t1.sa_customersid");
  469. querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t4", "t4.sys_enterpriseid=t3.sys_enterpriseid",
  470. "enterprisename");
  471. querySQL.setWhere(where);
  472. querySQL.setSiteid(siteid);
  473. querySQL.setWhere("t3.sa_customersid", sa_customersid);
  474. querySQL.setPage(pageSize, pageNumber).setOrderBy(pageSorting);
  475. Rows rows = querySQL.query();
  476. ArrayList<Long> ids = rows.toArrayList("sa_doctorid", new ArrayList<>());
  477. RowsMap leaderRows = DataTeam.getLeader(this, "sa_doctor", rows.toArrayList("sa_doctorid")).toRowsMap("ownerid");
  478. //标签
  479. HashMap<Long, ArrayList<String>> tagList = DataTag.queryTag(this, "sa_doctor", ids, false);
  480. //系统标签
  481. HashMap<Long, ArrayList<String>> sysTagList = DataTag.queryTag(this, "sa_doctor", ids, true);
  482. for (Row row : rows) {
  483. Long id = row.getLong("sa_doctorid");
  484. row.put("leader", leaderRows.get(row.getString("sa_doctorid")));
  485. if (leaderRows.get(String.valueOf(id)).isNotEmpty()) {
  486. row.put("depname", leaderRows.get(String.valueOf(id)).get(0).getString("depname"));
  487. }
  488. ArrayList<String> tag = tagList.get(id) != null ? tagList.get(id) : new ArrayList<>();
  489. ArrayList<String> sys_tag = sysTagList.get(id) != null ? sysTagList.get(id) : new ArrayList<>();
  490. //非系统标签
  491. row.put("tag", tag);
  492. //系统标签
  493. row.put("tag_sys", sys_tag);
  494. }
  495. return getSucReturnObject().setData(rows).toString();
  496. }
  497. @API(title = "关联科室查询", apiversion = R.ID2025102310143002.v1.class)
  498. public String queryHospitalDeps() throws YosException {
  499. StringBuffer where = new StringBuffer(" 1=1 ");
  500. if (content.containsKey("where")) {
  501. JSONObject whereObject = content.getJSONObject("where");
  502. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  503. where.append(" and(");
  504. where.append("t1.hospitaldepname like'%").append(whereObject.getString("condition")).append("%' ");
  505. where.append("or t1.remarks like'%").append(whereObject.getString("condition")).append("%' ");
  506. where.append(")");
  507. }
  508. }
  509. Long sa_customersid = content.getLong("sa_customersid");
  510. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_hospitaldep", "*").setTableAlias("t1");
  511. querySQL.addJoinTable(JOINTYPE.left, "sa_customers", "t2", "t2.sa_customersid=t1.sa_customersid and t2.siteid=t1.siteid");
  512. querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t3", "t3.sys_enterpriseid=t2.sys_enterpriseid and t3.siteid=t2.siteid", "enterprisename");
  513. querySQL.setSiteid(siteid);
  514. querySQL.setWhere(where);
  515. querySQL.setWhere("t2.sa_customersid", sa_customersid);
  516. Rows rows = querySQL.query();
  517. ArrayList<Long> ids = rows.toArrayList("sa_hospitaldepid", new ArrayList<>());
  518. RowsMap leaderRows = DataTeam.getLeader(this, "sa_hospitaldep", rows.toArrayList("sa_hospitaldepid")).toRowsMap("ownerid");
  519. //标签
  520. HashMap<Long, ArrayList<String>> tagList = DataTag.queryTag(this, "sa_hospitaldep", ids, false);
  521. //系统标签
  522. HashMap<Long, ArrayList<String>> sysTagList = DataTag.queryTag(this, "sa_hospitaldep", ids, true);
  523. Rows stageRows = dbConnect.runSqlQuery("SELECT stagename,sequence from sa_devstage WHERE siteid='" + siteid + "' order by sequence");
  524. RowsMap doctorRowsMap = CommonHepler.getDoctorRowsMap(this, ids);
  525. for (Row row : rows) {
  526. Long id = row.getLong("sa_hospitaldepid");
  527. row.put("leader", leaderRows.get(row.getString("sa_hospitaldepid")));
  528. if (leaderRows.get(String.valueOf(id)).isNotEmpty()) {
  529. row.put("depname", leaderRows.get(String.valueOf(id)).get(0).getString("depname"));
  530. }
  531. ArrayList<String> tag = tagList.get(id) != null ? tagList.get(id) : new ArrayList<>();
  532. ArrayList<String> sys_tag = sysTagList.get(id) != null ? sysTagList.get(id) : new ArrayList<>();
  533. //非系统标签
  534. row.put("tag", tag);
  535. //系统标签
  536. row.put("tag_sys", sys_tag);
  537. //科室负责人
  538. Rows doctorRows = doctorRowsMap.getOrDefault(id.toString(), new Rows());
  539. row.putIfAbsent("doctors", StringUtils.join(doctorRows.toArray("doctorname"), ","));
  540. String stagename = row.getString("stagename");
  541. for (Row stageRow : stageRows) {
  542. if (stagename.equals(stageRow.getString("stagename"))) {
  543. stageRow.put("active", 1);
  544. }
  545. stageRow.putIfAbsent("active", 0);
  546. }
  547. row.put("stages", stageRows);
  548. }
  549. return getSucReturnObject().setData(rows).toString();
  550. }
  551. @API(title = "关联查询合同", apiversion = R.ID2025102710422402.v1.class)
  552. public String queryContract() throws YosException {
  553. StringBuffer where = new StringBuffer(" 1=1 ");
  554. if (content.containsKey("where")) {
  555. JSONObject whereObject = content.getJSONObject("where");
  556. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  557. where.append(" and(");
  558. where.append("t1.billno like'%").append(whereObject.getString("condition")).append("%' ");
  559. where.append("or t1.remarks like'%").append(whereObject.getString("condition")).append("%' ");
  560. where.append("or t3.enterprisename like'%").append(whereObject.getString("condition")).append("%' ");
  561. where.append("or t5.enterprisename like'%").append(whereObject.getString("condition")).append("%' ");
  562. where.append("or t6.name like'%").append(whereObject.getString("condition")).append("%' ");
  563. where.append(")");
  564. }
  565. }
  566. Long sa_customersid = content.getLongValue("sa_customersid");
  567. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_contract",
  568. "sa_contractid", "billno", "type", "begdate", "enddate", "createdate", "createby", "remarks", "signdate");
  569. querySQL.setTableAlias("t1");
  570. querySQL.addJoinTable(JOINTYPE.left, "sa_customers", "t2", "t2.sa_customersid=t1.sa_customersid and t2.siteid=t1.siteid");
  571. querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t3", "t3.sys_enterpriseid=t2.sys_enterpriseid and t3.siteid=t2.siteid");
  572. querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t4", "t4.sa_agentsid=t1.sa_agentsid and t4.siteid=t1.siteid");
  573. querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t5", "t5.sys_enterpriseid=t4.sys_enterpriseid and t5.siteid=t4.siteid");
  574. querySQL.addJoinTable(JOINTYPE.left, "sys_hr", "t6", "t6.hrid=t1.saler_hrid and t6.siteid=t1.siteid");
  575. querySQL.addJoinTable(JOINTYPE.left, "sys_dataextend", "t7", "t1.siteid = t7.siteid and t1.sa_contractid = t7.ownerid and t7.ownertable = 'sa_contract'", "deletereason");
  576. querySQL.setSiteid(siteid);
  577. querySQL.setWhere(where);
  578. querySQL.setWhere("t2.sa_customersid", sa_customersid);
  579. querySQL.addQueryFields("hospitalname", "t3.enterprisename");
  580. querySQL.addQueryFields("agentname", "t5.enterprisename");
  581. querySQL.addQueryFields("salername", "t6.name");
  582. querySQL.addQueryFields("deletechangedate", "t7.changedate");
  583. querySQL.addQueryFields("deletechangeby", "t7.changeby");
  584. querySQL.addQueryFields("status", "if(current_date < t1.begdate,'未生效',if(current_date > t1.enddate,'结束','生效'))");
  585. querySQL.setPage(pageSize, pageNumber);
  586. if (pageSorting.equals("''")) {
  587. pageSorting = "t1.createdate desc";
  588. }
  589. querySQL.setOrderBy(pageSorting);
  590. querySQL.withDeleteData(true);
  591. Rows rows = querySQL.query();
  592. ArrayList<Long> ids = rows.toArrayList("sa_contractid", new ArrayList<>());
  593. RowsMap leaderRows = DataTeam.getLeader(this, "sa_contract", rows.toArrayList("sa_contractid", new ArrayList<>())).toRowsMap("ownerid");
  594. //标签
  595. HashMap<Long, ArrayList<String>> tagList = DataTag.queryTag(this, "sa_contract", ids, false);
  596. //系统标签
  597. HashMap<Long, ArrayList<String>> sysTagList = DataTag.queryTag(this, "sa_contract", ids, true);
  598. for (Row row : rows) {
  599. Long id = row.getLong("sa_contractid");
  600. row.put("leader", leaderRows.get(row.getString("sa_contractid")));
  601. ArrayList<String> tag = tagList.get(id) != null ? tagList.get(id) : new ArrayList<>();
  602. ArrayList<String> sys_tag = sysTagList.get(id) != null ? sysTagList.get(id) : new ArrayList<>();
  603. //非系统标签
  604. row.put("tag", tag);
  605. //系统标签
  606. row.put("tag_sys", sys_tag);
  607. }
  608. return getSucReturnObject().setData(rows).toString();
  609. }
  610. @API(title = "关联查询科室产品", apiversion = R.ID2025102711132502.v1.class)
  611. public String queryItems() throws YosException {
  612. StringBuffer where = new StringBuffer(" 1=1 ");
  613. if (content.containsKey("where")) {
  614. JSONObject whereObject = content.getJSONObject("where");
  615. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  616. where.append(" and(");
  617. where.append("t1.itemno like'%").append(whereObject.getString("condition")).append("%' ");
  618. where.append("or t1.itemname like'%").append(whereObject.getString("condition")).append("%' ");
  619. where.append("or t1.model like'%").append(whereObject.getString("condition")).append("%' ");
  620. where.append("or t1.spec like'%").append(whereObject.getString("condition")).append("%' ");
  621. where.append("or t1.assistance like'%").append(whereObject.getString("condition")).append("%' ");
  622. where.append("or t1.goodstype like'%").append(whereObject.getString("condition")).append("%' ");
  623. where.append("or t1.explains like'%").append(whereObject.getString("condition")).append("%' ");
  624. where.append("or t4.stagename like'%").append(whereObject.getString("condition")).append("%' ");
  625. where.append(")");
  626. }
  627. }
  628. Long sa_customersid = content.getLong("sa_customersid");
  629. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "plm_item",
  630. "itemid", "itemno", "itemname", "model", "spec", "assistance", "goodstype", "explains")
  631. .setTableAlias("t1");
  632. querySQL.addJoinTable(JOINTYPE.left, "plm_itemextend", "t2", "t2.itemid = t1.itemid AND t2.siteid = t1.siteid",
  633. "erpitemname", "erpitemno");
  634. querySQL.addJoinTable(JOINTYPE.inner, "sa_hospitaldep_item", "t3", "t3.itemid = t1.itemid AND t3.siteid = t1.siteid", "sa_hospitaldep_itemid");
  635. querySQL.addJoinTable(JOINTYPE.inner, "sa_devstage", "t4", "t4.sa_devstageid = t3.sa_devstageid AND t4.siteid = t3.siteid",
  636. "stagename");
  637. querySQL.addJoinTable(JOINTYPE.inner, "sa_hospitaldep", "t5", "t5.sa_hospitaldepid = t3.sa_hospitaldepid AND t5.siteid = t3.siteid",
  638. "hospitaldepname", "sa_hospitaldepid");
  639. querySQL.setWhere("t5.sa_customersid", sa_customersid);
  640. querySQL.setSiteid(siteid);
  641. querySQL.setWhere(where);
  642. if (pageSorting.equals("''")) {
  643. pageSorting = "t5.sa_hospitaldepid,t3.sa_hospitaldep_itemid";
  644. }
  645. querySQL.setPage(pageSize, pageNumber).setOrderBy(pageSorting);
  646. Rows rows = querySQL.query();
  647. ArrayList<Long> ids = rows.toArrayList("itemid", new ArrayList<>());
  648. // 商品品牌
  649. RowsMap brandRowsMap = Brand.getBrandRowsMap(this, ids);
  650. RowsMap itemclassRowsMap = ItemClass.getAllItemClassRowsMap(this, ids);
  651. //查询附件
  652. RowsMap attinfoRowsMap = getAttachmentUrl("plm_item", ids);
  653. for (Row row : rows) {
  654. row.put("attinfos", attinfoRowsMap.getOrDefault(row.getString("itemid"), new Rows()));
  655. Rows brandRows = brandRowsMap.getOrDefault(row.getString("itemid"), new Rows());
  656. Rows itemclassRows = itemclassRowsMap.getOrDefault(row.getString("itemid"), new Rows());
  657. row.put("brandname", StringUtils.join(brandRows.toArray("brandname"), ","));
  658. row.put("itemclassname", StringUtils.join(itemclassRows.toArray("itemclassname"), ","));
  659. }
  660. return getSucReturnObject().setData(rows).toString();
  661. }
  662. @API(title = "关联经销商查询", apiversion = R.ID2025102713075502.v1.class)
  663. public String queryAgents() throws YosException {
  664. StringBuffer where = new StringBuffer(" 1=1 ");
  665. if (content.containsKey("where")) {
  666. JSONObject whereObject = content.getJSONObject("where");
  667. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  668. where.append(" and(");
  669. where.append("t1.agentnum like'%").append(whereObject.getString("condition")).append("%' ");
  670. where.append("or t2.enterprisename like'%").append(whereObject.getString("condition")).append("%' ");
  671. where.append("or t2.province like'%").append(whereObject.getString("condition")).append("%' ");
  672. where.append("or t2.city like'%").append(whereObject.getString("condition")).append("%' ");
  673. where.append("or t2.county like'%").append(whereObject.getString("condition")).append("%' ");
  674. where.append("or t2.address like'%").append(whereObject.getString("condition")).append("%' ");
  675. where.append("or t3.erpagentnum like'%").append(whereObject.getString("condition")).append("%' ");
  676. where.append(")");
  677. }
  678. }
  679. where.append(" and t1.status !='作废' ");
  680. Long sa_customersid = content.getLong("sa_customersid");
  681. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_agents",
  682. "sa_agentsid", "sys_enterpriseid", "gmname", "gmphonenumber", "agentnum", "cooperatetype", "remarks", "status", "createdate", "scale", "mainproducts").
  683. setTableAlias("t1");
  684. querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t2", "t1.siteid = t2.siteid and t1.sys_enterpriseid = t2.sys_enterpriseid",
  685. "enterprisename", "province", "city", "county", "address");
  686. querySQL.addJoinTable(JOINTYPE.left, "sys_dataextend", "t3", "t1.sys_enterpriseid = t3.ownerid and ownertable = 'sys_enterprise' and t1.siteid = t3.siteid",
  687. "erpagentnum");
  688. querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t4", "t4.siteid = t1.siteid and t4.sa_agentsid = t1.parentid");
  689. querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t5", "t5.siteid = t4.siteid and t5.sys_enterpriseid = t4.sys_enterpriseid");
  690. querySQL.addJoinTable(JOINTYPE.inner, "sa_agents_hospital", "t9", "t9.sa_agentsid=t1.sa_agentsid and t9.siteid=t1.siteid", "sa_agents_hospitalid");
  691. querySQL.addQueryFields("parent_enterprisename", "t5.enterprisename");
  692. querySQL.setWhere("t9.sa_customersid", sa_customersid);
  693. querySQL.setSiteid(siteid);
  694. querySQL.setWhere(where);
  695. querySQL.setPage(pageSize, pageNumber);
  696. querySQL.setOrderBy("t1.createdate desc");
  697. Rows rows = querySQL.query();
  698. RowsMap areaRowsMap = CommonHepler.getAreaRowsMap(this, rows.toArrayList("sa_agentsid", new ArrayList<>()));
  699. RowsMap salerRowsMap = CommonHepler.getSalerNameRowsMap(this, rows.toArrayList("sa_agentsid", new ArrayList<>()));
  700. for (Row row : rows) {
  701. row.put("p_c_c", row.getString("province") + "-" + row.getString("city") + "-" + row.getString("county"));
  702. Rows areaRows = areaRowsMap.getOrDefault(row.getString("sa_agentsid"), new Rows());
  703. row.put("areanames", StringUtils.join(areaRows.toArrayList("areaname"), ","));
  704. Rows salerRows = salerRowsMap.getOrDefault(row.getString("sa_agentsid"), new Rows());
  705. row.put("salernames", StringUtils.join(salerRows.toArrayList("name"), ","));
  706. }
  707. return getSucReturnObject().setData(rows).toString();
  708. }
  709. @API(title = "添加经销商", apiversion = R.ID2025102713181402.v1.class)
  710. public String addAgents() throws YosException {
  711. Long sa_customersid = content.getLong("sa_customersid");
  712. JSONArray sa_agentsids = content.getJSONArray("sa_agentsids");
  713. ArrayList<String> sqlList = new ArrayList<>();
  714. for (Object object : sa_agentsids) {
  715. Long sa_agentsid = Long.valueOf(object.toString());
  716. InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sa_agents_hospital");
  717. insertSQL.setUniqueid(createTableID("sa_agents_hospital"));
  718. insertSQL.setSiteid(siteid);
  719. insertSQL.setValue("sa_agentsid", sa_agentsid);
  720. insertSQL.setValue("sa_customersid", sa_customersid);
  721. insertSQL.setWhere(" not exists(select 1 from sa_agents_hospital where sa_agentsid=" + sa_agentsid + " and siteid='" + siteid + "' and sa_customersid='" + sa_customersid + "')");
  722. sqlList.add(insertSQL.getSQL());
  723. sqlList.add(DataContrlLog.createLog(this, "sa_customers", sa_customersid, "关联经销商", "关联经销商ID:" + sa_agentsid).getSQL());
  724. }
  725. dbConnect.runSqlUpdate(sqlList);
  726. DataTag.createSystemTag(this, "sa_customers", sa_customersid, "经销");
  727. return getSucReturnObject().toString();
  728. }
  729. @API(title = "删除经销商关联", apiversion = R.ID2025102713243702.v1.class)
  730. public String deleteAgents() throws YosException {
  731. Long sa_agents_hospitalid = content.getLong("sa_agents_hospitalid");
  732. Rows rows = dbConnect.runSqlQuery("SELECT * from sa_agents_hospital WHERE sa_agents_hospitalid=" + sa_agents_hospitalid + " and siteid='" + siteid + "'");
  733. Long sa_agentsid = rows.isNotEmpty() ? rows.get(0).getLong("sa_agentsid") : 0;
  734. Long sa_customersid = rows.isNotEmpty() ? rows.get(0).getLong("sa_customersid") : 0;
  735. DeleteSQL deleteSQL = SQLFactory.createDeleteSQL(this, "sa_agents_hospital");
  736. deleteSQL.setSiteid(siteid);
  737. deleteSQL.setWhere("sa_agents_hospitalid", sa_agents_hospitalid);
  738. deleteSQL.delete();
  739. DataContrlLog.createLog(this, "sa_customers", sa_customersid, "关联经销商", "关联经销商ID:" + sa_agentsid).insert();
  740. if (dbConnect.runSqlQuery("SELECT * from sa_agents_hospital WHERE sa_customersid=" + sa_customersid + " and siteid='" + siteid + "'").isEmpty()) {
  741. DataTag.deleteTag(this, "sa_customers", sa_customersid, "经销");
  742. DataTag.createSystemTag(this, "sa_customers", sa_customersid, "直销");
  743. }
  744. return getSucReturnObject().toString();
  745. }
  746. @API(title = "选择经销商列表", apiversion = R.ID2025102714042402.v1.class)
  747. public String chooseAgents() throws YosException {
  748. StringBuffer where = new StringBuffer(" 1=1 ");
  749. if (content.containsKey("where")) {
  750. JSONObject whereObject = content.getJSONObject("where");
  751. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  752. where.append(" and(");
  753. where.append("t1.agentnum like'%").append(whereObject.getString("condition")).append("%' ");
  754. where.append("or t2.enterprisename like'%").append(whereObject.getString("condition")).append("%' ");
  755. where.append("or t2.province like'%").append(whereObject.getString("condition")).append("%' ");
  756. where.append("or t2.city like'%").append(whereObject.getString("condition")).append("%' ");
  757. where.append("or t2.county like'%").append(whereObject.getString("condition")).append("%' ");
  758. where.append("or t2.address like'%").append(whereObject.getString("condition")).append("%' ");
  759. where.append("or t3.erpagentnum like'%").append(whereObject.getString("condition")).append("%' ");
  760. where.append(")");
  761. }
  762. }
  763. where.append(" and t1.status !='作废' ");
  764. ArrayList<Long> hrids = Proxy.getProxyHrids(this);
  765. hrids.add(hrid);
  766. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_agents",
  767. "sa_agentsid", "sys_enterpriseid", "gmname", "gmphonenumber", "agentnum", "cooperatetype", "remarks", "status", "createdate", "scale", "mainproducts").
  768. setTableAlias("t1");
  769. querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t2", "t1.siteid = t2.siteid and t1.sys_enterpriseid = t2.sys_enterpriseid",
  770. "enterprisename", "province", "city", "county", "address");
  771. querySQL.addJoinTable(JOINTYPE.left, "sys_dataextend", "t3", "t1.sys_enterpriseid = t3.ownerid and ownertable = 'sys_enterprise' and t1.siteid = t3.siteid",
  772. "erpagentnum");
  773. querySQL.addJoinTable(JOINTYPE.inner, "sys_enterprise_tradefield", "t4", "t4.sa_agentsid=t1.sa_agentsid and t4.siteid=t1.siteid");
  774. querySQL.setWhere("t4.hrid", hrids);
  775. querySQL.setSiteid(siteid);
  776. querySQL.setWhere(where);
  777. querySQL.setPage(pageSize, pageNumber);
  778. querySQL.setOrderBy("t1.createdate desc");
  779. Rows rows = querySQL.query();
  780. RowsMap areaRowsMap = CommonHepler.getAreaRowsMap(this, rows.toArrayList("sa_agentsid", new ArrayList<>()));
  781. RowsMap salerRowsMap = CommonHepler.getSalerNameRowsMap(this, rows.toArrayList("sa_agentsid", new ArrayList<>()));
  782. for (Row row : rows) {
  783. row.put("p_c_c", row.getString("province") + "-" + row.getString("city") + "-" + row.getString("county"));
  784. Rows areaRows = areaRowsMap.getOrDefault(row.getString("sa_agentsid"), new Rows());
  785. row.put("areanames", StringUtils.join(areaRows.toArrayList("areaname"), ","));
  786. Rows salerRows = salerRowsMap.getOrDefault(row.getString("sa_agentsid"), new Rows());
  787. row.put("salernames", StringUtils.join(salerRows.toArrayList("name"), ","));
  788. }
  789. return getSucReturnObject().setData(rows).toString();
  790. }
  791. }