Customer.java 54 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067
  1. package restcontroller.webmanage.sale.customer;
  2. import beans.datacontrllog.DataContrlLog;
  3. import beans.dataextend.DataExtend;
  4. import beans.datatag.DataTag;
  5. import beans.datateam.DataTeam;
  6. import com.alibaba.fastjson2.JSONArray;
  7. import com.alibaba.fastjson2.JSONObject;
  8. import common.Controller;
  9. import common.YosException;
  10. import common.annotation.API;
  11. import common.annotation.CACHEING;
  12. import common.annotation.CACHEING_CLEAN;
  13. import common.data.*;
  14. import org.apache.commons.lang.StringUtils;
  15. import org.apache.poi.xssf.usermodel.*;
  16. import restcontroller.R;
  17. import restcontroller.webmanage.executorService.Executor;
  18. import restcontroller.webmanage.saletool.orderclue.ExportExcel;
  19. import java.io.IOException;
  20. import java.util.ArrayList;
  21. import java.util.HashMap;
  22. @API(title = "客户")
  23. public class Customer extends Controller {
  24. /**
  25. * 构造函数
  26. *
  27. * @param content
  28. */
  29. public Customer(JSONObject content) throws YosException {
  30. super(content);
  31. }
  32. @API(title = "新增或更新", apiversion = R.ID20221010164302.v1.class)
  33. @CACHEING_CLEAN(apiversions = {R.ID20221011133602.class, R.ID20221013102602.class, R.ID20221012164402.class, R.ID20221014164702.class})
  34. public String insertOrUpdate() throws YosException {
  35. String tablename = "sa_customers";
  36. Long sys_enterpriseid = content.getLong("sys_enterpriseid");
  37. String enterprisename = content.getString("enterprisename");
  38. ArrayList<String> sqlList = new ArrayList<>();
  39. //创建企业档案
  40. SQLFactory sqlFactory = new SQLFactory(this, "客户企业档案新增");
  41. if (sys_enterpriseid <= 0) {
  42. sys_enterpriseid = createTableID("sys_enterprise");
  43. } else {
  44. sqlFactory = new SQLFactory(this, "客户企业档案更新");
  45. }
  46. sqlFactory.addParameter("siteid", siteid);
  47. sqlFactory.addParameter("userid", userid);
  48. sqlFactory.addParameter("username", username);
  49. sqlFactory.addParameter("sys_enterpriseid", sys_enterpriseid);
  50. sqlFactory.addParameter("province", content.getStringValue("province"));
  51. sqlFactory.addParameter("city", content.getStringValue("city"));
  52. sqlFactory.addParameter("county", content.getStringValue("county"));
  53. sqlFactory.addParameter("address", content.getStringValue("address"));
  54. sqlFactory.addParameter("enterprisename", enterprisename);
  55. sqlFactory.addParameter("abbreviation", content.getStringValue("abbreviation"));
  56. sqlFactory.addParameter("taxno", content.getStringValue("taxno"));
  57. sqlFactory.addParameter("grade", content.getLongValue("grade") == 0 ? "null" : content.getLongValue("grade"));
  58. sqlFactory.addParameter("industry", content.getJSONArray("industry"));
  59. sqlFactory.addParameter("contact", content.getStringValue("contact"));
  60. sqlFactory.addParameter("phonenumber", content.getStringValue("phonenumber"));
  61. sqlFactory.addParameter("telephone", content.getStringValue("telephone"));
  62. sqlList.add(sqlFactory.getSQL());
  63. //扩展字段
  64. String erpagentnum = content.getStringValue("erpagentnum");
  65. String sql = "SELECT * from sys_dataextend WHERE ownertable='sys_enterprise' and ownerid=" + sys_enterpriseid + " and siteid = '" + siteid + "'";
  66. Rows extendRows = dbConnect.runSqlQuery(sql);
  67. Long sys_dataextendid = 0L;
  68. if (extendRows.isEmpty()) {
  69. sys_dataextendid = createTableID("sys_dataextend");
  70. sqlFactory = new SQLFactory(this, "经销商扩展字段新增");
  71. } else {
  72. sys_dataextendid = extendRows.get(0).getLong("sys_dataextendid");
  73. sqlFactory = new SQLFactory(this, "经销商扩展字段更新");
  74. }
  75. sqlFactory.addParameter("siteid", siteid);
  76. sqlFactory.addParameter("username", username);
  77. sqlFactory.addParameter("userid", userid);
  78. sqlFactory.addParameter("sys_dataextendid", sys_dataextendid);
  79. sqlFactory.addParameter("ownerid", sys_enterpriseid);
  80. sqlFactory.addParameter("ownertable", "sys_enterprise");
  81. sqlFactory.addParameter("erpagentnum", erpagentnum);
  82. sqlList.add(sqlFactory.getSQL());
  83. Long sa_customersid = content.getLong("sa_customersid");
  84. Long parentid = content.getLong("parentid");
  85. String type = content.getString("type");
  86. Long sa_customerpoolid = content.getLong("sa_customerpoolid");
  87. boolean isAdd = true;
  88. sqlFactory = new SQLFactory(this, "客户新增");
  89. if (sa_customersid <= 0) {
  90. sa_customersid = createTableID("sa_customers");
  91. DataTag.createTag(this, "sa_customers", sa_customersid, "潜在");
  92. isAdd = true;
  93. } else {
  94. sqlFactory = new SQLFactory(this, "客户更新");
  95. isAdd = false;
  96. }
  97. sqlFactory.addParameter("siteid", siteid);
  98. sqlFactory.addParameter("userid", userid);
  99. sqlFactory.addParameter("username", username);
  100. sqlFactory.addParameter("sa_customersid", sa_customersid);
  101. //上级客户ID
  102. sqlFactory.addParameter("parentid", parentid == 0 ? "null" : parentid);
  103. //合作企业档案ID
  104. sqlFactory.addParameter("sys_enterpriseid", sys_enterpriseid);
  105. //客户类型
  106. sqlFactory.addParameter("type", type);
  107. //客户池(公海池)ID
  108. sqlFactory.addParameter("sa_customerpoolid", sa_customerpoolid);
  109. //客户来源
  110. sqlFactory.addParameter("source", content.getStringValue("source"));
  111. sqlFactory.addParameter("customergrade", content.getStringValue("customergrade"));
  112. Long ispublic = content.getLongValue("ispublic", 1L);
  113. sqlFactory.addParameter("ispublic", ispublic);
  114. sqlFactory.addParameter("name", enterprisename);
  115. sqlFactory.addParameter("province", content.getStringValue("province"));
  116. sqlFactory.addParameter("city", content.getStringValue("city"));
  117. sqlFactory.addParameter("county", content.getStringValue("county"));
  118. sqlFactory.addParameter("address", content.getStringValue("address"));
  119. sqlFactory.addParameter("phonenumber", content.getStringValue("phonenumber"));
  120. sqlList.add(sqlFactory.getSQL());
  121. //操作记录
  122. if (isAdd) {
  123. if (ispublic == 1) {
  124. sqlList.add(DataContrlLog.createLog(this, "sa_customers", sa_customersid, "新建", "新建公海客户" + enterprisename).getSQL());
  125. } else {
  126. sqlList.add(DataContrlLog.createLog(this, "sa_customers", sa_customersid, "新建", "新建客户" + enterprisename).getSQL());
  127. }
  128. Executor.sendEml(this, "customers_add", sa_customersid, siteid, getUsers(sa_customerpoolid));
  129. } else {
  130. if (ispublic == 1) {
  131. sqlList.add(DataContrlLog.createLog(this, "sa_customers", sa_customersid, "编辑", "编辑公海客户" + enterprisename).getSQL());
  132. } else {
  133. sqlList.add(DataContrlLog.createLog(this, "sa_customers", sa_customersid, "编辑", "编辑客户" + enterprisename).getSQL());
  134. }
  135. }
  136. dbConnect.runSqlUpdate(sqlList);
  137. content.put("sa_customersid", sa_customersid);
  138. return selectDetail();
  139. }
  140. @API(title = "数据状态变更", apiversion = R.ID20221010164402.v1.class)
  141. @CACHEING_CLEAN(apiversions = {R.ID20221011133602.class, R.ID20221013102602.class, R.ID20221012164402.class, R.ID20221014164702.class})
  142. public String changeDataStatus() throws YosException {
  143. JSONArray sa_customersids = content.getJSONArray("sa_customersids");
  144. Long datastatus = content.getLong("datastatus");
  145. SQLFactory sqlFactory = new SQLFactory(this, "客户数据状态变更");
  146. sqlFactory.addParameter("siteid", siteid);
  147. sqlFactory.addParameter("userid", userid);
  148. sqlFactory.addParameter("username", username);
  149. sqlFactory.addParameter_in("datastatus", datastatus);
  150. sqlFactory.addParameter_in("sa_customersid", sa_customersids.toArray());
  151. dbConnect.runSqlUpdate(sqlFactory);
  152. if (datastatus == 1) {
  153. //新增删除或作废原因
  154. DataExtend.createDeleteReasonSql(this, "sa_customers", sa_customersids.toJavaList(Long.class), content.getStringValue("deletereason"));
  155. }
  156. return getSucReturnObject().toString();
  157. }
  158. @API(title = "交易状态变更", apiversion = R.ID20221010164502.v1.class)
  159. @CACHEING_CLEAN(apiversions = {R.ID20221011133602.class, R.ID20221013102602.class, R.ID20221012164402.class, R.ID20221014164702.class})
  160. public String changeTradingStatus() throws YosException {
  161. JSONArray sa_customersids = content.getJSONArray("sa_customersids");
  162. String tradingstatus = content.getString("tradingstatus");
  163. SQLFactory sqlFactory = new SQLFactory(this, "客户交易状态变更");
  164. sqlFactory.addParameter("siteid", siteid);
  165. sqlFactory.addParameter("userid", userid);
  166. sqlFactory.addParameter("username", username);
  167. sqlFactory.addParameter_in("tradingstatus", tradingstatus);
  168. sqlFactory.addParameter_in("sa_customersid", sa_customersids.toArray());
  169. dbConnect.runSqlUpdate(sqlFactory);
  170. return getSucReturnObject().toString();
  171. }
  172. @API(title = "客户状态变更", apiversion = R.ID20221010164602.v1.class)
  173. @CACHEING_CLEAN(apiversions = {R.ID20221011133602.class, R.ID20221013102602.class, R.ID20221012164402.class, R.ID20221014164702.class, R.ID20220929085401.class})
  174. public String changeStatus() throws YosException {
  175. JSONArray sa_customersids = content.getJSONArray("sa_customersids");
  176. String status = content.getString("status");
  177. ArrayList<String> sqlList = new ArrayList<>();
  178. SQLFactory sqlFactory = new SQLFactory(this, "客户状态变更");
  179. sqlFactory.addParameter("siteid", siteid);
  180. sqlFactory.addParameter("userid", userid);
  181. sqlFactory.addParameter("username", username);
  182. sqlFactory.addParameter_in("status", status);
  183. sqlFactory.addParameter_in("sa_customersid", sa_customersids.toArray());
  184. sqlList.add(sqlFactory.getSQL());
  185. for (Object obj : sa_customersids) {
  186. Long id = Long.valueOf(obj.toString());
  187. DataTag.deleteTag(this, "sa_customers", id, "潜在");
  188. DataTag.deleteTag(this, "sa_customers", id, "合作中");
  189. DataTag.deleteTag(this, "sa_customers", id, "已终止");
  190. DataTag.createTag(this, "sa_customers", id, status);
  191. //操作记录
  192. sqlList.add(DataContrlLog.createLog(this, "sa_customers", id, "更改合作状态", "更改合作状态为:" + status).getSQL());
  193. }
  194. dbConnect.runSqlUpdate(sqlList);
  195. return getSucReturnObject().toString();
  196. }
  197. @API(title = "详细", apiversion = R.ID20221011133502.v1.class)
  198. public String selectDetail() throws YosException {
  199. Long sa_customersid = content.getLong("sa_customersid");
  200. SQLFactory sqlFactory = new SQLFactory(this, "客户详情");
  201. sqlFactory.addParameter("siteid", siteid);
  202. sqlFactory.addParameter("sa_customersid", sa_customersid);
  203. Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL());
  204. return getSucReturnObject().setData(rows.isNotEmpty() ? rows.get(0) : new Row()).toString();
  205. }
  206. @API(title = "公海客户列表", apiversion = R.ID20221011133602.v1.class)
  207. @CACHEING
  208. public String selectPublicList() throws YosException, IOException {
  209. StringBuffer where = new StringBuffer(" 1=1 ");
  210. if (content.containsKey("where")) {
  211. JSONObject whereObject = content.getJSONObject("where");
  212. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  213. where.append(" and(");
  214. where.append("t1.createby like'%").append(whereObject.getString("condition")).append("%' ");
  215. where.append("or t1.sa_customersid like'%").append(whereObject.getString("condition")).append("%' ");
  216. where.append("or t1.status like'%").append(whereObject.getString("condition")).append("%' ");
  217. where.append("or t1.type like'%").append(whereObject.getString("condition")).append("%' ");
  218. where.append("or t1.tradingstatus like'%").append(whereObject.getString("condition")).append("%' ");
  219. where.append("or t1.datastatus like'%").append(whereObject.getString("condition")).append("%' ");
  220. where.append("or t2.poolname like'%").append(whereObject.getString("condition")).append("%' ");
  221. where.append("or t3.enterprisename like'%").append(whereObject.getString("condition")).append("%' ");
  222. where.append("or t3.abbreviation like'%").append(whereObject.getString("condition")).append("%' ");
  223. where.append("or t3.industry like'%").append(whereObject.getString("condition")).append("%' ");
  224. where.append("or t3.grade like'%").append(whereObject.getString("condition")).append("%' ");
  225. where.append(")");
  226. }
  227. if (whereObject.containsKey("startdate") && !"".equals(whereObject.getString("startdate"))) {
  228. where.append(" and(");
  229. where.append("t1.createdate >='").append(whereObject.getString("startdate")).append("' ");
  230. where.append(")");
  231. }
  232. if (whereObject.containsKey("enddate") && !"".equals(whereObject.getString("enddate"))) {
  233. where.append(" and(");
  234. where.append("t1.createdate <='").append(whereObject.getString("enddate")).append("' ");
  235. where.append(")");
  236. }
  237. if (whereObject.containsKey("sa_customerpoolid") && !"".equals(whereObject.getString("sa_customerpoolid"))) {
  238. where.append(" and(");
  239. where.append("t1.sa_customerpoolid ='").append(whereObject.getString("sa_customerpoolid")).append("' ");
  240. where.append(")");
  241. }
  242. //客户状态
  243. if (whereObject.containsKey("status") && !"".equals(whereObject.getString("status"))) {
  244. where.append(" and(");
  245. where.append("t1.status ='").append(whereObject.getString("status")).append("' ");
  246. where.append(")");
  247. }
  248. //客户类型
  249. if (whereObject.containsKey("type") && !"".equals(whereObject.getString("type"))) {
  250. where.append(" and(");
  251. where.append("t1.type ='").append(whereObject.getString("type")).append("' ");
  252. where.append(")");
  253. }
  254. //行业
  255. if (whereObject.containsKey("industry") && !"".equals(whereObject.getString("industry"))) {
  256. where.append(" and(");
  257. where.append("t3.industry ='").append(whereObject.getString("industry")).append("' ");
  258. where.append(")");
  259. }
  260. //客户等级
  261. if (whereObject.containsKey("customergrade") && !"".equals(whereObject.getString("customergrade"))) {
  262. where.append(" and(");
  263. where.append("t1.customergrade ='").append(whereObject.getString("customergrade")).append("' ");
  264. where.append(")");
  265. }
  266. if (whereObject.containsKey("tradingstatus") && !"".equals(whereObject.getString("tradingstatus"))) {
  267. where.append(" and(");
  268. where.append("t1.tradingstatus ='").append(whereObject.getString("tradingstatus")).append("' ");
  269. where.append(")");
  270. }
  271. if (whereObject.containsKey("grade") && !"".equals(whereObject.getString("grade"))) {
  272. where.append(" and(");
  273. where.append("t3.grade ='").append(whereObject.getString("grade")).append("' ");
  274. where.append(")");
  275. }
  276. }
  277. boolean isExport = content.getBoolean("isExport");
  278. String tablename = "sa_customers";
  279. SQLFactory sqlFactory = new SQLFactory(this, "客户(公海)列表");
  280. if (isExport) {
  281. sqlFactory = new SQLFactory(this, "客户(公海)列表");
  282. }
  283. sqlFactory.addParameter("siteid", siteid);
  284. sqlFactory.addParameter_SQL("where", where);
  285. // Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL());
  286. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sys_site_parameter", "sys_site_parameterid");
  287. querySQL.setTableAlias("t0");
  288. querySQL.addJoinTable(JOINTYPE.right, sqlFactory, "t1", "t0.siteid='111'","*");
  289. querySQL.setPage(pageSize, pageNumber);
  290. Rows rows = querySQL.query();
  291. ArrayList<Long> ids = rows.toArrayList("sa_customersid", new ArrayList<>());
  292. RowsMap leaderRows = DataTeam.getLeader(this, tablename, rows.toArrayList("sa_customersid")).toRowsMap("ownerid");
  293. //标签
  294. HashMap<Long, ArrayList<String>> tagList = DataTag.queryTag(this, tablename, ids, false);
  295. //系统标签
  296. HashMap<Long, ArrayList<String>> sysTagList = DataTag.queryTag(this, tablename, ids, true);
  297. for (Row row : rows) {
  298. Long id = row.getLong("sa_customersid");
  299. row.put("leader", leaderRows.get(String.valueOf(id)));
  300. //非系统标签
  301. row.put("tag", tagList.get(id) != null ? tagList.get(id) : new ArrayList<String>());
  302. //系统标签
  303. row.put("tag_sys", sysTagList.get(id) != null ? sysTagList.get(id) : new ArrayList<String>());
  304. }
  305. if (isExport) {
  306. //去除不要的导出项
  307. rows.getFieldList().remove("sa_customersid");
  308. rows.getFieldList().remove("parentid");
  309. rows.getFieldList().remove("sys_enterpriseid");
  310. rows.getFieldList().remove("sa_customerpoolid");
  311. for (Row row : rows) {
  312. switch (row.getString("datastatus")) {
  313. case "0":
  314. row.put("datastatusStr", "正常");
  315. case "1":
  316. row.put("datastatusStr", "作废");
  317. case "2":
  318. row.put("datastatusStr", "锁定");
  319. }
  320. }
  321. rows.getFieldList().remove("datastatus");
  322. rows.getFieldList().add("datastatusStr");
  323. Rows uploadRows = saveToExcelAttachment("1111", "公海客户列表", rows, getTitleMap());
  324. return getSucReturnObject().setData(uploadRows).toString();
  325. }
  326. return getSucReturnObject().setData(rows).toString();
  327. }
  328. @API(title = "私域客户列表", apiversion = R.ID20221013102602.v1.class)
  329. @CACHEING
  330. public String selectPrivateList() throws YosException, IOException {
  331. StringBuffer where = new StringBuffer(" 1=1 ");
  332. if (content.containsKey("where")) {
  333. JSONObject whereObject = content.getJSONObject("where");
  334. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  335. where.append(" and(");
  336. where.append("t1.createby like'%").append(whereObject.getString("condition")).append("%' ");
  337. where.append("or t1.sa_customersid like'%").append(whereObject.getString("condition")).append("%' ");
  338. where.append("or t1.status like'%").append(whereObject.getString("condition")).append("%' ");
  339. where.append("or t1.type like'%").append(whereObject.getString("condition")).append("%' ");
  340. where.append("or t1.tradingstatus like'%").append(whereObject.getString("condition")).append("%' ");
  341. where.append("or t1.datastatus like'%").append(whereObject.getString("condition")).append("%' ");
  342. where.append("or t2.poolname like'%").append(whereObject.getString("condition")).append("%' ");
  343. where.append("or t3.enterprisename like'%").append(whereObject.getString("condition")).append("%' ");
  344. where.append("or t3.abbreviation like'%").append(whereObject.getString("condition")).append("%' ");
  345. where.append("or t3.industry like'%").append(whereObject.getString("condition")).append("%' ");
  346. where.append("or t3.grade like'%").append(whereObject.getString("condition")).append("%' ");
  347. where.append(")");
  348. }
  349. if (whereObject.containsKey("startdate") && !"".equals(whereObject.getString("startdate"))) {
  350. where.append(" and(");
  351. where.append("t1.createdate >='").append(whereObject.getString("startdate")).append("' ");
  352. where.append(")");
  353. }
  354. if (whereObject.containsKey("enddate") && !"".equals(whereObject.getString("enddate"))) {
  355. where.append(" and(");
  356. where.append("t1.createdate <='").append(whereObject.getString("enddate")).append("' ");
  357. where.append(")");
  358. }
  359. //客户状态
  360. if (whereObject.containsKey("status") && !"".equals(whereObject.getString("status"))) {
  361. where.append(" and(");
  362. where.append("t1.status ='").append(whereObject.getString("status")).append("' ");
  363. where.append(")");
  364. }
  365. //客户类型
  366. if (whereObject.containsKey("type") && !"".equals(whereObject.getString("type"))) {
  367. where.append(" and(");
  368. where.append("t1.type ='").append(whereObject.getString("type")).append("' ");
  369. where.append(")");
  370. }
  371. //行业
  372. if (whereObject.containsKey("industry") && !"".equals(whereObject.getString("industry"))) {
  373. where.append(" and(");
  374. where.append("t3.industry ='").append(whereObject.getString("industry")).append("' ");
  375. where.append(")");
  376. }
  377. //客户等级
  378. if (whereObject.containsKey("customergrade") && !"".equals(whereObject.getString("customergrade"))) {
  379. where.append(" and(");
  380. where.append("t1.customergrade ='").append(whereObject.getString("customergrade")).append("' ");
  381. where.append(")");
  382. }
  383. }
  384. boolean isExport = content.getBoolean("isExport");
  385. SQLFactory sqlFactory = new SQLFactory(this, "客户(私域)列表");
  386. if (isExport) {
  387. sqlFactory = new SQLFactory(this, "客户(私域)列表");
  388. }
  389. sqlFactory.addParameter("siteid", siteid);
  390. sqlFactory.addParameter_SQL("where", where);
  391. // Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL());
  392. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sys_site_parameter", "sys_site_parameterid");
  393. querySQL.setTableAlias("t0");
  394. querySQL.addJoinTable(JOINTYPE.right, sqlFactory, "t1", "t0.siteid='111'","*");
  395. if (!isExport) {
  396. querySQL.setPage(pageSize, pageNumber);
  397. }
  398. Rows rows = querySQL.query();
  399. RowsMap leaderRows = DataTeam.getLeader(this, "sa_customers", rows.toArrayList("sa_customersid")).toRowsMap("ownerid");
  400. for (Row row : rows) {
  401. row.put("leader", leaderRows.get(row.getString("sa_customersid")));
  402. }
  403. if (isExport) {
  404. //去除不要的导出项
  405. rows.getFieldList().remove("sa_customersid");
  406. rows.getFieldList().remove("parentid");
  407. rows.getFieldList().remove("sys_enterpriseid");
  408. rows.getFieldList().remove("sa_customerpoolid");
  409. for (Row row : rows) {
  410. switch (row.getString("datastatus")) {
  411. case "0":
  412. row.put("datastatusStr", "正常");
  413. case "1":
  414. row.put("datastatusStr", "作废");
  415. case "2":
  416. row.put("datastatusStr", "锁定");
  417. }
  418. }
  419. rows.getFieldList().remove("datastatus");
  420. rows.getFieldList().add("datastatusStr");
  421. Rows uploadRows = saveToExcelAttachment("1111", "私域客户列表", rows, getTitleMap());
  422. return getSucReturnObject().setData(uploadRows).toString();
  423. }
  424. return getSucReturnObject().setData(rows).toString();
  425. }
  426. //返回导出的标题
  427. public HashMap<String, String> getTitleMap() {
  428. HashMap<String, String> titleMap = new HashMap<>();
  429. titleMap.put("sa_customersid", "客户ID");
  430. titleMap.put("createby", "创建人");
  431. titleMap.put("createdate", "创建时间");
  432. titleMap.put("status", "客户状态");
  433. titleMap.put("type", "客户类型");
  434. titleMap.put("sa_customerpoolid", "公海池ID");
  435. titleMap.put("source", "客户来源");
  436. titleMap.put("tradingstatus", "交易状态");
  437. titleMap.put("datastatusStr", "数据状态");
  438. titleMap.put("poolname", "公海池名称");
  439. titleMap.put("enterprisename", "客户名称");
  440. titleMap.put("abbreviation", "客户简称");
  441. titleMap.put("industry", "所属行业");
  442. titleMap.put("grade", "客户等级");
  443. titleMap.put("superiorenterprisename", "上级企业");
  444. titleMap.put("followdate", "最近跟进时间");
  445. return titleMap;
  446. }
  447. @API(title = "分配,分配公海客户至业务人员私域", apiversion = R.ID20221014165502.v1.class)
  448. @CACHEING_CLEAN(apiversions = {R.ID20221011133602.class, R.ID20221013102602.class, R.ID20221012164402.class, R.ID20221014164702.class})
  449. public String distribution() throws YosException {
  450. JSONArray sa_customersids = content.getJSONArray("sa_customersids");
  451. String str = "select DISTINCT sa_customerpoolid from sa_customers where siteid='" + siteid + "' and sa_customerpoolid != 0 and sa_customersid in " + sa_customersids + " ";
  452. str = str.replace("[", "(").replace("]", ")");
  453. if (dbConnect.runSqlQuery(str).size() > 1) {
  454. return getErrReturnObject().setErrMsg("分配的客户所在的公海池不一致").toString();
  455. }
  456. ArrayList<String> sqlStr = new ArrayList<>();
  457. SQLFactory sqlFactory = new SQLFactory(this, "客户分配");
  458. sqlFactory.addParameter("siteid", siteid);
  459. sqlFactory.addParameter("userid", userid);
  460. sqlFactory.addParameter("username", username);
  461. sqlFactory.addParameter_in("sa_customersid", sa_customersids.toArray());
  462. sqlStr.add(sqlFactory.getSQL());
  463. Long userid = content.getLong("userid");
  464. for (Object obj : sa_customersids) {
  465. Long id = Long.valueOf(obj.toString());
  466. //数据团队新增
  467. sqlStr.addAll(DataTeam.createTeamSQL(this, "sa_customers", id, userid));
  468. sqlStr.addAll(DataTeam.createTeamMemberSql(this, "sa_customers", id, userid));
  469. sqlStr.add(DataContrlLog.createLog(this, "sa_customers", id, "分配", "分配公海客户" + getCustomerEnterprisename(id)).getSQL());
  470. }
  471. dbConnect.runSqlUpdate(sqlStr);
  472. for (Object obj : sa_customersids) {
  473. Long id = Long.valueOf(obj.toString());
  474. ArrayList<Long> userids = DataTeam.queryTeamRow(this, "sa_customers", id).toArrayList("userid", new ArrayList<>());
  475. Executor.sendEml(this, "customers_receive", id, siteid, userids);
  476. }
  477. return getSucReturnObject().toString();
  478. }
  479. @API(title = "回收,回收业务人员的客户至公海", apiversion = R.ID20221014165602.v1.class)
  480. @CACHEING_CLEAN(apiversions = {R.ID20221011133602.class, R.ID20221013102602.class, R.ID20221012164402.class, R.ID20221014164702.class})
  481. public String recovery() throws YosException {
  482. Long sa_customersid = content.getLong("sa_customersid");
  483. Long sa_customerpoolid = content.getLong("sa_customerpoolid");
  484. Rows rows = dbConnect.runSqlQuery("SELECT * from sa_customers WHERE sa_customersid = " + sa_customersid + " and siteid ='" + siteid + "'");
  485. if (rows.get(0).getLong("ispublic") == 0) {
  486. return getErrReturnObject().setErrMsg("非公海客户无法回收").toString();
  487. }
  488. ArrayList<String> sqlStr = new ArrayList<>();
  489. SQLFactory sqlFactory = new SQLFactory(this, "客户回收");
  490. sqlFactory.addParameter("siteid", siteid);
  491. sqlFactory.addParameter("userid", userid);
  492. sqlFactory.addParameter("username", username);
  493. sqlFactory.addParameter("sa_customerpoolid", sa_customerpoolid);
  494. sqlFactory.addParameter_in("sa_customersid", sa_customersid);
  495. sqlStr.add(sqlFactory.getSQL());
  496. String str = "delete from sys_datateam where siteid='" + siteid + "' and ownertable='sa_customers' and ownerid = " + sa_customersid + " ";
  497. sqlStr.add(str);
  498. sqlStr.add(DataContrlLog.createLog(this, "sa_customers", sa_customersid, "回收", "回收客户至公海" + sa_customersid).getSQL());
  499. ArrayList<Long> userids = DataTeam.queryTeamRow(this, "sa_customers", sa_customersid).toArrayList("userid", new ArrayList<>());
  500. Executor.sendEml(this, "customers_recovery", sa_customersid, siteid, userids);
  501. dbConnect.runSqlUpdate(sqlStr);
  502. return getSucReturnObject().toString();
  503. }
  504. @API(title = "可分配业务员列表", apiversion = R.ID20221017094102.v1.class)
  505. public String saleList() throws YosException {
  506. Long sa_customerpoolid = content.getLong("sa_customerpoolid");
  507. Rows rows = dbConnect.runSqlQuery("SELECT t1.userid,t1.`name` FROM sys_datateam t1 WHERE ownertable = 'sa_customerpool' AND ownerid = " + sa_customerpoolid + "");
  508. for (Row row : rows) {
  509. row.put("headpic", getHeadPic(row.getLong("userid")));
  510. }
  511. return getSucReturnObject().setData(rows).toString();
  512. }
  513. @API(title = "客户导入模板", apiversion = R.ID20221028100502.v1.class)
  514. public String downloadExcel() throws YosException {
  515. ExcelFactory excelFactory = new ExcelFactory("客户导入模板");
  516. XSSFSheet sheet = excelFactory.getXssfWorkbook().createSheet("Sheet1");
  517. XSSFWorkbook xssfFWorkbook = excelFactory.getXssfWorkbook();
  518. // 设置工作薄列宽
  519. CustomerExcel.setBatchDetailSheetColumn1(sheet);
  520. XSSFCellStyle titleCellStyle1 = ExportExcel.createTitleCellStyle1(xssfFWorkbook);
  521. XSSFCellStyle titleCellStyle2 = ExportExcel.createTitleCellStyle2(xssfFWorkbook);
  522. XSSFCellStyle titleCellStyle3 = ExportExcel.createBodyCellStyle(xssfFWorkbook);
  523. // 写入标题
  524. CustomerExcel.batchDetail(sheet, titleCellStyle1, titleCellStyle2, titleCellStyle3, xssfFWorkbook);
  525. Rows aa = saveToExcelAttachment(excelFactory);
  526. String url = "";
  527. if (!aa.isEmpty()) {
  528. url = aa.get(0).getString("url");
  529. }
  530. return getSucReturnObject().setData(url).toString();
  531. }
  532. @API(title = "客户导入", apiversion = R.ID20221110135304.v1.class)
  533. @CACHEING_CLEAN(apiversions = {R.ID20221011133602.class, R.ID20221013102602.class, R.ID20221012164402.class, R.ID20221014164702.class})
  534. public String importExcel() throws YosException {
  535. ExcelFactory e;
  536. try {
  537. // 华为云
  538. e = getExcelAttachment(content.getLong("attachmentid"));
  539. // 本地
  540. //e = getPostExcelFactory();
  541. ArrayList<String> keys = new ArrayList<>();
  542. ArrayList<String> sqlList = new ArrayList<>();
  543. keys.add("enterprisename");
  544. keys.add("sa_customerpoolid");
  545. keys.add("source");
  546. keys.add("type");
  547. keys.add("province");
  548. keys.add("city");
  549. keys.add("county");
  550. keys.add("address");
  551. keys.add("contact");
  552. keys.add("phonenumber");
  553. Rows rows = e.getSheetRows(0, keys, 2);
  554. boolean iserr = false;
  555. Rows rowserr = new Rows();
  556. Rows rowssuc = new Rows();
  557. // 手机号码的格式:第一位只能为1,第二位可以是3,4,5,7,8,第三位到第十一位可以为0-9中任意一个数字
  558. String regex = "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(17[013678])|(18[0,5-9]))\\d{8}$";
  559. for (Row row : rows) {
  560. StringBuffer err = new StringBuffer();
  561. if (StringUtils.isEmpty(row.getString("enterprisename"))) {
  562. iserr = true;
  563. err.append("错误信息:客户名称不能为空;");
  564. }
  565. if (StringUtils.isEmpty(row.getString("sa_customerpoolid"))) {
  566. iserr = true;
  567. err.append("错误信息:客户池ID不能为空;");
  568. } else if (dbConnect.runSqlQuery("select sa_customerpoolid from sa_customerpool where poolname='"
  569. + row.getString("sa_customerpoolid") + "' and siteid='" + siteid + "'").isEmpty()) {
  570. iserr = true;
  571. err.append("错误信息:客户池ID不存在;");
  572. row.put("sa_customerpoolid", -1);
  573. }
  574. // if (!row.getString("phonenumber").matches(regex)) {
  575. // iserr = true;
  576. // err.append("错误信息:手机号格式不正确");
  577. // }
  578. if (err.length() > 0) {
  579. row.put("msg", err);
  580. rowserr.add(row);
  581. } else {
  582. rowssuc.add(row);
  583. }
  584. }
  585. if (iserr) {
  586. ExcelFactory excelFactory = new ExcelFactory("客户导入错误信息");
  587. ArrayList<String> colNameList = new ArrayList<String>();
  588. HashMap<String, Class> keytypemap = new HashMap<String, Class>();
  589. colNameList.add("enterprisename");
  590. colNameList.add("sa_customerpoolid");
  591. colNameList.add("source");
  592. colNameList.add("type");
  593. colNameList.add("province");
  594. colNameList.add("city");
  595. colNameList.add("county");
  596. colNameList.add("address");
  597. colNameList.add("contact");
  598. colNameList.add("phonenumber");
  599. colNameList.add("msg");
  600. keytypemap.put("enterprisename", String.class);
  601. keytypemap.put("sa_customerpoolid", String.class);
  602. keytypemap.put("source", String.class);
  603. keytypemap.put("type", String.class);
  604. keytypemap.put("province", String.class);
  605. keytypemap.put("city", String.class);
  606. keytypemap.put("county", String.class);
  607. keytypemap.put("putress", String.class);
  608. keytypemap.put("contact", String.class);
  609. keytypemap.put("phonenumber", String.class);
  610. keytypemap.put("msg", String.class);
  611. rowserr.setFieldList(colNameList);
  612. rowserr.setFieldTypeMap(keytypemap);
  613. addSheet(excelFactory, "Sheet1", rowserr);
  614. Rows aa = saveToExcelAttachment(excelFactory);
  615. String url = "";
  616. if (!aa.isEmpty()) {
  617. url = aa.get(0).getString("url");
  618. }
  619. return getSucReturnObject().setData(url).toString();
  620. }
  621. if (!rowssuc.isEmpty()) {
  622. for (Row row : rowssuc) {
  623. Long sys_enterpriseid = createTableID("sys_enterprise");
  624. SQLFactory sqlFactoryupload = new SQLFactory(this, "客户企业档案新增");
  625. sqlFactoryupload.addParameter("siteid", siteid);
  626. sqlFactoryupload.addParameter("userid", userid);
  627. sqlFactoryupload.addParameter("username", username);
  628. sqlFactoryupload.addParameter("sys_enterpriseid", sys_enterpriseid);
  629. sqlFactoryupload.addParameter("province", row.getString("province"));
  630. sqlFactoryupload.addParameter("city", row.getString("city"));
  631. sqlFactoryupload.addParameter("county", row.getString("county"));
  632. sqlFactoryupload.addParameter("address", row.getString("address"));
  633. sqlFactoryupload.addParameter("enterprisename", row.getString("enterprisename"));
  634. sqlFactoryupload.addParameter("abbreviation", "");
  635. sqlFactoryupload.addParameter("taxno", "");
  636. sqlFactoryupload.addParameter("grade", "null");
  637. sqlFactoryupload.addParameter("industry", "null");
  638. sqlFactoryupload.addParameter("contact", row.getString("contact"));
  639. sqlFactoryupload.addParameter("phonenumber", row.getString("phonenumber"));
  640. sqlFactoryupload.addParameter("telephone", row.getString("phonenumber"));
  641. sqlList.add(sqlFactoryupload.getSQL());
  642. sqlFactoryupload = new SQLFactory(this, "客户新增");
  643. Long sa_customersid = createTableID("sa_customers");
  644. sqlFactoryupload.addParameter("siteid", siteid);
  645. sqlFactoryupload.addParameter("userid", userid);
  646. sqlFactoryupload.addParameter("username", username);
  647. sqlFactoryupload.addParameter("customergrade", "普通客户");
  648. sqlFactoryupload.addParameter("ispublic", 1);
  649. sqlFactoryupload.addParameter("sa_customersid", sa_customersid);
  650. //上级客户ID
  651. sqlFactoryupload.addParameter("parentid", "null");
  652. //合作企业档案ID
  653. sqlFactoryupload.addParameter("sys_enterpriseid", sys_enterpriseid);
  654. //客户类型
  655. sqlFactoryupload.addParameter("type", row.getString("type"));
  656. //客户池(公海池)ID
  657. Rows sa_customerpoolRows = dbConnect.runSqlQuery("select sa_customerpoolid from sa_customerpool where poolname='"
  658. + row.getString("sa_customerpoolid") + "' and siteid='" + siteid + "'");
  659. if (!sa_customerpoolRows.isEmpty()) {
  660. sqlFactoryupload.addParameter("sa_customerpoolid", sa_customerpoolRows.get(0).getString("sa_customerpoolid"));
  661. } else {
  662. sqlFactoryupload.addParameter("sa_customerpoolid", 0);
  663. }
  664. sqlFactoryupload.addParameter("source", row.getString("source"));
  665. //客户来源
  666. sqlFactoryupload.addParameter("name", row.getString("enterprisename"));
  667. sqlFactoryupload.addParameter("province", row.getString("province"));
  668. sqlFactoryupload.addParameter("city", row.getString("city"));
  669. sqlFactoryupload.addParameter("county", row.getString("county"));
  670. sqlFactoryupload.addParameter("address", row.getString("address"));
  671. sqlFactoryupload.addParameter("phonenumber", row.getString("phonenumber"));
  672. sqlList.add(sqlFactoryupload.getSQL());
  673. sqlList.add(DataContrlLog.createLog(this, "sa_customers", sa_customersid, "导入", "导入公海客户" + row.getString("enterprisename")).getSQL());
  674. // ArrayList<Long> userids = DataTeam.queryTeamRow(this, "sa_customers", sa_customersid).toArrayList("userid", new ArrayList<>());
  675. Executor.sendEml(this, "customers_add", sa_customersid, siteid, getUsers(sa_customerpoolRows.get(0).getLong("sa_customerpoolid")));
  676. }
  677. }
  678. if (sqlList.size() > 0) {
  679. dbConnect.runSqlUpdate(sqlList);
  680. }
  681. } catch (Exception e1) {
  682. e1.printStackTrace();
  683. return getErrReturnObject().setErrMsg(e1.getMessage()).toString();
  684. }
  685. return getSucReturnObject().toString();
  686. }
  687. public ArrayList<Long> getUsers(Long sa_customerpoolid) throws YosException {
  688. SQLFactory sqlFactory = new SQLFactory(this, "查询范围内的账号");
  689. sqlFactory.addParameter("siteid", siteid);
  690. sqlFactory.addParameter("sa_customerpoolid", sa_customerpoolid);
  691. return dbConnect.runSqlQuery(sqlFactory).toArrayList("userid", new ArrayList<>());
  692. }
  693. public XSSFSheet addSheet(ExcelFactory excelFactory, String sheetname, Rows datarows) {
  694. ArrayList<String> keylist = datarows.getFieldList();
  695. XSSFSheet sheet = excelFactory.getXssfWorkbook().createSheet(sheetname);
  696. XSSFWorkbook xssfFWorkbook = excelFactory.getXssfWorkbook();
  697. XSSFCellStyle xssfCellStyle1 = xssfFWorkbook.createCellStyle();
  698. XSSFFont font = xssfFWorkbook.createFont();
  699. font.setColor((short) 0xa);
  700. font.setFontHeightInPoints((short) 12);
  701. font.setBold(true);
  702. xssfCellStyle1.setFont(font);
  703. CustomerExcel.setBatchDetailSheetColumn2(sheet);// 设置工作薄列宽
  704. XSSFCellStyle titleCellStyle1 = ExportExcel.createTitleCellStyle1(xssfFWorkbook);
  705. XSSFCellStyle titleCellStyle2 = ExportExcel.createTitleCellStyle2(xssfFWorkbook);
  706. CustomerExcel.batchDetailErr(sheet, titleCellStyle1, titleCellStyle2, xssfFWorkbook);// 写入标题
  707. for (int n = 0; n < datarows.size(); n++) {
  708. Row row = datarows.get(n);
  709. XSSFRow datarow = sheet.createRow(n + 2);
  710. //System.err.println(keylist);
  711. //System.err.println(datarows.getFieldList());
  712. for (int i1 = 0; i1 < keylist.size(); i1++) {
  713. //System.err.println(keylist.get(i1));
  714. Class fieldclazztype = null;
  715. try {
  716. String fieldname = keylist.get(i1);
  717. fieldclazztype = datarows.getFieldMeta(fieldname).getFieldtype();
  718. } catch (Exception e) {
  719. e.printStackTrace();
  720. }
  721. if (fieldclazztype == Integer.class) {
  722. datarow.createCell(i1).setCellValue(row.getInteger(keylist.get(i1)));
  723. } else if (fieldclazztype == Long.class) {
  724. datarow.createCell(i1).setCellValue(row.getLong(keylist.get(i1)));
  725. } else if (fieldclazztype == Float.class) {
  726. datarow.createCell(i1).setCellValue(row.getFloat(keylist.get(i1)));
  727. } else if (fieldclazztype == Double.class) {
  728. datarow.createCell(i1).setCellValue(row.getDouble(keylist.get(i1)));
  729. } else {
  730. datarow.createCell(i1).setCellValue(row.getString(keylist.get(i1)));
  731. }
  732. if (i1 == 10) {
  733. datarow.getCell(i1).setCellStyle(xssfCellStyle1);
  734. }
  735. }
  736. }
  737. return sheet;
  738. }
  739. @API(title = "变更经销商", apiversion = R.ID20221103093202.v1.class)
  740. public String changeAgent() throws YosException {
  741. String tablename = "sa_customers";
  742. Long sa_customersid = content.getLong("sa_customersid");
  743. //经销商团队负责人id
  744. Long userid = content.getLong("userid");
  745. String sql = "SELECT sys_datatagid from sys_datatag WHERE ownertable = 'sa_customers' and ownerid = " + sa_customersid + " and siteid='" + siteid + "' AND tag='直销'";
  746. Rows rows = dbConnect.runSqlQuery(sql);
  747. ArrayList<String> sqlList = new ArrayList<>();
  748. if (rows.isEmpty()) {
  749. if (dbConnect.runSqlQuery("SELECT 1 from sys_datatag WHERE ownertable = 'sa_customers' and ownerid = " + sa_customersid + " and siteid='" + siteid + "' AND tag='经销'").isEmpty()) {
  750. DataTag.createTag(this, tablename, sa_customersid, "经销");
  751. }
  752. } else {
  753. Long sys_datatagid = rows.get(0).getLong("sys_datatagid");
  754. dbConnect.runSqlUpdate("UPDATE sys_datatag SET tag='经销' WHERE sys_datatagid =" + sys_datatagid);
  755. }
  756. sqlList.add("delete from sys_datateam WHERE ownertable = 'sa_customers' and siteid = '" + siteid + "' and ownerid = " + sa_customersid + " AND sys_enterpriseid >0");
  757. //数据团队新增
  758. sqlList.addAll(DataTeam.createTeamSQL(this, tablename, sa_customersid, userid));
  759. sqlList.addAll(DataTeam.createTeamMemberSql(this, "sa_customers", sa_customersid, userid));
  760. dbConnect.runSqlUpdate(sqlList);
  761. return getSucReturnObject().toString();
  762. }
  763. @API(title = "撤回", apiversion = R.ID20221103105002.v1.class)
  764. public String revoke() throws YosException {
  765. String tablename = "sa_customers";
  766. Long sa_customersid = content.getLong("sa_customersid");
  767. //1:变更为经销,2:变更为直销
  768. Long type = content.getLong("type");
  769. if (content.containsKey("userid")) {
  770. userid = content.getLong("userid");
  771. }
  772. String oldTag = type == 1 ? "直销" : "经销";
  773. String newTag = type == 1 ? "经销" : "直销";
  774. String sql = "SELECT sys_datatagid from sys_datatag WHERE ownertable = 'sa_customers' and ownerid = " + sa_customersid + " and siteid='" + siteid + "' AND tag='" + oldTag + "'";
  775. Rows rows = dbConnect.runSqlQuery(sql);
  776. if (rows.isEmpty()) {
  777. if (dbConnect.runSqlQuery("SELECT 1 from sys_datatag WHERE ownertable = 'sa_customers' and ownerid = " + sa_customersid + " and siteid='" + siteid + "' AND tag='" + newTag + "'").isEmpty()) {
  778. DataTag.createTag(this, tablename, sa_customersid, newTag);
  779. }
  780. } else {
  781. Long sys_datatagid = rows.get(0).getLong("sys_datatagid");
  782. dbConnect.runSqlUpdate("UPDATE sys_datatag SET tag='" + newTag + "' WHERE sys_datatagid =" + sys_datatagid);
  783. }
  784. ArrayList<String> sqlList = new ArrayList<>();
  785. if (type == 1) {
  786. sqlList.add("delete from sys_datateam WHERE ownertable = 'sa_customers' and siteid = '" + siteid + "' and ownerid = " + sa_customersid + " AND sys_enterpriseid >0");
  787. } else if (type == 2) {
  788. sqlList.add("delete from sys_datateam WHERE ownertable = 'sa_customers' and siteid = '" + siteid + "' and ownerid = " + sa_customersid);
  789. }
  790. //数据团队新增
  791. sqlList.addAll(DataTeam.createTeamSQL(this, tablename, sa_customersid, userid));
  792. sqlList.addAll(DataTeam.createTeamMemberSql(this, "sa_customers", sa_customersid, userid));
  793. sqlList.add(DataContrlLog.createLog(this, "sa_customers", sa_customersid, "撤回", "客户撤回" + sa_customersid).getSQL());
  794. dbConnect.runSqlUpdate(sqlList);
  795. return getSucReturnObject().toString();
  796. }
  797. @API(title = "查询客户相关的线索", apiversion = R.ID20221208163302.v1.class)
  798. @CACHEING
  799. public String selectClueList() throws YosException {
  800. /*
  801. 过滤条件设置
  802. */
  803. StringBuffer where = new StringBuffer(" 1=1 ");
  804. if (content.containsKey("where")) {
  805. JSONObject whereObject = content.getJSONObject("where");
  806. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  807. where.append(" and(");
  808. where.append("t1.name like'%").append(whereObject.getString("condition")).append("%' ");
  809. where.append("or t1.phonenumber like'%").append(whereObject.getString("condition")).append("%' ");
  810. where.append("or t1.address like'%").append(whereObject.getString("condition")).append("%' ");
  811. where.append("or t1.notes like'%").append(whereObject.getString("condition")).append("%' ");
  812. where.append(")");
  813. }
  814. }
  815. SQLFactory sqlFactory = new SQLFactory(this, "线索列表");
  816. sqlFactory.addParameter("siteid", siteid);
  817. sqlFactory.addParameter_SQL("where", where);
  818. sqlFactory.addParameter("sa_customersid", content.getLong("sa_customersid"));
  819. // String sql = sqlFactory.getSQL();
  820. // Rows rows = dbConnect.runSqlQuery(sql);
  821. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sys_site_parameter", "sys_site_parameterid");
  822. querySQL.setTableAlias("t0");
  823. querySQL.addJoinTable(JOINTYPE.right, sqlFactory, "t1", "t0.siteid='111'","*");
  824. querySQL.setPage(pageSize, pageNumber);
  825. Rows rows = querySQL.query();
  826. return getSucReturnObject().setData(rows).toString();
  827. }
  828. @API(title = "客户查重", apiversion = R.ID20221208172002.v1.class)
  829. public String checkRepeat() throws YosException {
  830. Long sa_customersid = content.getLong("sa_customersid");
  831. SQLFactory sqlFactory = new SQLFactory(this, "客户查重");
  832. sqlFactory.addParameter("siteid", siteid);
  833. sqlFactory.addParameter("enterprisename", content.getStringValue("enterprisename"));
  834. sqlFactory.addParameter("taxno", content.getStringValue("taxno"));
  835. sqlFactory.addParameter("address", content.getStringValue("address"));
  836. sqlFactory.addParameter("sa_customersid", sa_customersid);
  837. String sql = sqlFactory.getSQL();
  838. Rows rows = dbConnect.runSqlQuery(sql);
  839. return getSucReturnObject().setData(rows).toString();
  840. }
  841. @API(title = "终端客户档案", apiversion = R.ID2025090809202003.v1.class)
  842. @CACHEING
  843. public String queryMdCustomers() throws YosException {
  844. StringBuffer where = new StringBuffer(" 1=1 ");
  845. if (content.containsKey("where")) {
  846. JSONObject whereObject = content.getJSONObject("where");
  847. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  848. where.append(" and(");
  849. where.append("t1.name like'%").append(whereObject.getString("condition")).append("%' ");
  850. where.append(")");
  851. }
  852. if (whereObject.containsKey("sys_enterpriseid") && !"".equals(whereObject.getString("sys_enterpriseid"))) {
  853. where.append(" and(");
  854. where.append("t2.sys_enterpriseid ='").append(whereObject.getString("sys_enterpriseid")).append("' ");
  855. where.append(" or t4.sys_enterpriseid ='").append(whereObject.getString("sys_enterpriseid")).append("' ");
  856. where.append(")");
  857. }
  858. }
  859. QuerySQL querySQL;
  860. querySQL = SQLFactory.createQuerySQL(this, "sa_customers", "sa_customersid","name","phonenumber","province","city","county","address","createdate","sa_agentsid","sa_agentsid_to");
  861. querySQL.setTableAlias("t1");
  862. querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t2", "t1.sa_agentsid = t2.sa_agentsid AND t1.siteid = t2.siteid","agentnum");
  863. querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t3", "t2.sys_enterpriseid = t3.sys_enterpriseid AND t2.siteid = t3.siteid","enterprisename","abbreviation");
  864. querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t4", "t1.sa_agentsid_to = t4.sa_agentsid AND t1.siteid = t4.siteid");
  865. querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t5", "t4.sys_enterpriseid = t5.sys_enterpriseid AND t4.siteid = t3.siteid");
  866. querySQL.addQueryFields("agentnum_to","t4.agentnum");
  867. querySQL.addQueryFields("enterprisename_to","t5.enterprisename");
  868. querySQL.addQueryFields("abbreviation_to","t5.abbreviation");
  869. querySQL.setSiteid(siteid);
  870. querySQL.setWhere(where.toString());
  871. querySQL.setWhere("(ifnull(t1.sa_agentsid,0)!=0 or ifnull(t1.sa_agentsid_to,0)!=0)");
  872. querySQL.setOrderBy(pageSorting);
  873. querySQL.setPage(pageSize, pageNumber);
  874. Rows rows = querySQL.query();
  875. return getSucReturnObject().setData(rows).toString();
  876. }
  877. @API(title = "经销商查询终端客户档案", apiversion = R.ID2025090909115603.v1.class)
  878. @CACHEING
  879. public String queryAgentMdCustomers() throws YosException {
  880. long sa_agentsid=0;
  881. Rows agentrows = dbConnect.runSqlQuery("select sa_agentsid from sa_agents where sys_enterpriseid="+sys_enterpriseid);
  882. if(agentrows.isNotEmpty()){
  883. sa_agentsid=agentrows.get(0).getLong("sa_agentsid");
  884. }
  885. StringBuffer where = new StringBuffer(" 1=1 ");
  886. if (content.containsKey("where")) {
  887. JSONObject whereObject = content.getJSONObject("where");
  888. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  889. where.append(" and(");
  890. where.append("t1.name like'%").append(whereObject.getString("condition")).append("%' ");
  891. where.append(")");
  892. }
  893. }
  894. QuerySQL querySQL;
  895. querySQL = SQLFactory.createQuerySQL(this, "sa_customers", "sa_customersid","name","phonenumber","province","city","county","address","createdate","sa_agentsid","sa_agentsid_to");
  896. querySQL.setTableAlias("t1");
  897. querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t2", "t1.sa_agentsid = t2.sa_agentsid AND t1.siteid = t2.siteid","agentnum");
  898. querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t3", "t2.sys_enterpriseid = t3.sys_enterpriseid AND t2.siteid = t3.siteid","enterprisename","abbreviation");
  899. querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t4", "t1.sa_agentsid_to = t4.sa_agentsid AND t1.siteid = t4.siteid");
  900. querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t5", "t4.sys_enterpriseid = t5.sys_enterpriseid AND t4.siteid = t3.siteid");
  901. querySQL.addQueryFields("agentnum_to","t4.agentnum");
  902. querySQL.addQueryFields("enterprisename_to","t5.enterprisename");
  903. querySQL.addQueryFields("abbreviation_to","t5.abbreviation");
  904. querySQL.setSiteid(siteid);
  905. querySQL.setWhere(where.toString());
  906. querySQL.setWhere("(ifnull(t1.sa_agentsid,0)!=0 or ifnull(t1.sa_agentsid_to,0)!=0)");
  907. querySQL.setWhere("(t1.sa_agentsid="+sa_agentsid+" or t1.sa_agentsid_to="+sa_agentsid+")");
  908. querySQL.setPage(pageSize, pageNumber);
  909. Rows rows = querySQL.query();
  910. return getSucReturnObject().setData(rows).toString();
  911. }
  912. /**
  913. * 获取客户名称
  914. *
  915. * @param sa_customersid
  916. * @return
  917. * @throws YosException
  918. */
  919. public String getCustomerEnterprisename(Long sa_customersid) throws YosException {
  920. String enterprisename = "";
  921. Rows rows = dbConnect.runSqlQuery("SELECT enterprisename FROM sys_enterprise WHERE sys_enterpriseid in (SELECT sys_enterpriseid from sa_customers WHERE sa_customersid = " + sa_customersid + " ) and siteid = '" + siteid + "'");
  922. if (rows.isNotEmpty()) {
  923. enterprisename = rows.get(0).getString("enterprisename");
  924. }
  925. return enterprisename;
  926. }
  927. }