enterprise.java 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728
  1. package restcontroller.webmanage.sale.enterprise;
  2. import beans.data.BatchDeleteErr;
  3. import beans.datateam.DataTeam;
  4. import beans.enterprise.Enterprise;
  5. import beans.hr.Hr;
  6. import beans.parameter.Parameter;
  7. import beans.user.User;
  8. import com.alibaba.fastjson.JSONArray;
  9. import com.alibaba.fastjson.JSONObject;
  10. import common.Controller;
  11. import common.YosException;
  12. import common.annotation.API;
  13. import common.annotation.CACHEING;
  14. import common.annotation.CACHEING_CLEAN;
  15. import common.annotation.cm;
  16. import common.data.Row;
  17. import common.data.Rows;
  18. import common.data.SQLFactory;
  19. import org.apache.commons.lang.StringUtils;
  20. import restcontroller.R;
  21. import restcontroller.webmanage.sale.agents.agents;
  22. import restcontroller.webmanage.sale.customer.Customer;
  23. import restcontroller.webmanage.sale.salearea.salearea;
  24. import utility.tools.WebRequest;
  25. import java.util.ArrayList;
  26. import java.util.HashMap;
  27. import java.util.regex.Matcher;
  28. import java.util.regex.Pattern;
  29. public class enterprise extends Controller {
  30. public enterprise(JSONObject content) throws YosException {
  31. super(content);
  32. }
  33. @API(title = "商户档案列表查询", apiversion = R.ID20220920083901.v1.class)
  34. @CACHEING
  35. public String query_enterpriseList() throws YosException {
  36. /*
  37. 过滤条件设置
  38. */
  39. StringBuffer where = new StringBuffer(" 1=1 ");
  40. if (content.containsKey("where")) {
  41. JSONObject whereObject = content.getJSONObject("where");
  42. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  43. where.append(" and(");
  44. where.append("t1.phonenumber like'%").append(whereObject.getString("condition")).append("%' ");
  45. where.append("or t1.enterprisename like'%").append(whereObject.getString("condition")).append("%' ");
  46. where.append("or t1.taxno like'").append(whereObject.getString("condition")).append("%' ");
  47. where.append("or t1.city like'").append(whereObject.getString("condition")).append("%' ");
  48. where.append("or t1.province like'").append(whereObject.getString("condition")).append("%' ");
  49. where.append("or t1.county like'").append(whereObject.getString("condition")).append("%' ");
  50. where.append("or t1.address like'").append(whereObject.getString("condition")).append("%' ");
  51. where.append("or t1.contact like'").append(whereObject.getString("condition")).append("%' ");
  52. where.append(")");
  53. }
  54. if (whereObject.containsKey("type") && !"".equals(whereObject.getString("type"))) {
  55. String sql;
  56. // if (whereObject.containsKey("typemx") && StringUtils.isNotEmpty(whereObject.getString("typemx"))) {
  57. // sql = " and (";
  58. // } else {
  59. sql = " and ";
  60. // }
  61. String type = whereObject.getString("type");
  62. //获取经销商sys_enterpriseid
  63. if (type.equals("1")) {
  64. ArrayList<Long> list = getAgentsList();
  65. list.add(0L);
  66. sql += " (t1.sys_enterpriseid in " + list + ")";
  67. }
  68. //获取所有客户sys_enterpriseid
  69. if (type.equals("2")) {
  70. ArrayList<Long> list = getCustomersList();
  71. list.add(0L);
  72. sql += " (t1.sys_enterpriseid in " + list + ")";
  73. }
  74. //排除已添加经销商的经销商数据
  75. if (type.equals("3")) {
  76. ArrayList<Long> ids = new ArrayList<>();
  77. ids.addAll(getCanAddAgentsList());
  78. ids.add(0L);
  79. sql += " (t1.sys_enterpriseid in " + ids + ")";
  80. }
  81. //缔约方
  82. if (type.equals("4")) {
  83. Long sa_projectid = whereObject.getLongValue("sa_projectid");
  84. ArrayList<Long> list = getProjectPartiesList(sa_projectid);
  85. list.add(-1L);
  86. sql += " (t1.sys_enterpriseid in " + list + ")";
  87. }
  88. //查询我负责的经销商
  89. if (type.equals("5")) {
  90. ArrayList<Long> ids = new ArrayList<>();
  91. ids.addAll(Hr.getMyAgentsList2(this));
  92. ids.add(0L);
  93. sql += " (t1.sys_enterpriseid in " + ids + ")";
  94. }
  95. //查询我负责的客户,排除已添加的关联客户
  96. if (type.equals("6")) {
  97. Long sa_projectid = whereObject.getLongValue("sa_projectid");
  98. ArrayList<Long> ids = new ArrayList<>();
  99. ids.addAll(Hr.getMyCustomersList(this, hrid));
  100. ids.removeAll(getProjectPartiesList(sa_projectid));
  101. ids.add(0L);
  102. sql += " (t1.sys_enterpriseid in " + ids + ")";
  103. }
  104. //查询我负责的客户
  105. if (type.equals("7")) {
  106. ArrayList<Long> ids = new ArrayList<>();
  107. ids.addAll(Hr.getMyCustomersList2(this));
  108. ids.add(0L);
  109. sql += " (t1.sys_enterpriseid in " + ids + ")";
  110. }
  111. //查询我负责的经销商,排除已添加的关联客户
  112. if (type.equals("8")) {
  113. Long sa_projectid = whereObject.getLongValue("sa_projectid");
  114. ArrayList<Long> ids = new ArrayList<>();
  115. ids.addAll(Hr.getMyAgentsList(this, hrid));
  116. ids.removeAll(getProjectPartiesList(sa_projectid));
  117. ids.add(0L);
  118. sql += " (t1.sys_enterpriseid in " + ids + ")";
  119. }
  120. //工具借用单中使用:查询我负责的经销商及下属负责的,查询我负责的客户及下属负责的
  121. if (type.equals("9")) {
  122. ArrayList<Long> ids = new ArrayList<>();
  123. ids.addAll(Hr.getAgents(this, hrid));
  124. ids.addAll(Hr.getCustomers(this, hrid));
  125. ids.add(0L);
  126. sql += " (t1.sys_enterpriseid in " + ids + ")";
  127. }
  128. //查询我负责的经销商,查询我负责的客户
  129. if (type.equals("10")) {
  130. ArrayList<Long> ids = new ArrayList<>();
  131. ids.addAll(Hr.getMyAgentsList2(this));
  132. ids.addAll(Hr.getMyCustomersList2(this));
  133. ids.add(0L);
  134. sql += " (t1.sys_enterpriseid in " + ids + ")";
  135. }
  136. //项目》关联客户》项目负责人的负责的客户
  137. if (type.equals("11")) {
  138. Long sa_projectid = whereObject.getLongValue("sa_projectid");
  139. ArrayList<Long> ids = new ArrayList<>();
  140. ids.addAll(getProjectCustomers(sa_projectid));
  141. ids.removeAll(getProjectPartiesList(sa_projectid));
  142. ids.add(0L);
  143. sql += " (t1.sys_enterpriseid in " + ids + ")";
  144. }
  145. //项目》关联客户》项目负责人的启用状态的经销商
  146. if (type.equals("12")) {
  147. Long sa_projectid = whereObject.getLongValue("sa_projectid");
  148. ArrayList<Long> ids = new ArrayList<>();
  149. ids.addAll(getProjectAgents(sa_projectid));
  150. ids.removeAll(getProjectPartiesList(sa_projectid));
  151. ids.add(0L);
  152. sql += " (t1.sys_enterpriseid in " + ids + ")";
  153. }
  154. //项目》合同》直销项目协议
  155. if (type.equals("13")) {
  156. Long sa_projectid = whereObject.getLongValue("sa_projectid");
  157. ArrayList<Long> ids = new ArrayList<>();
  158. ids.addAll(getProjectCustomers2(sa_projectid));
  159. ids.add(0L);
  160. sql += " (t1.sys_enterpriseid in " + ids + ")";
  161. }
  162. //项目》合同》居间协议
  163. if (type.equals("14")) {
  164. Long sa_projectid = whereObject.getLongValue("sa_projectid");
  165. ArrayList<Long> ids = new ArrayList<>();
  166. ids.addAll(getProjectAgents2(sa_projectid));
  167. ids.add(0L);
  168. sql += " (t1.sys_enterpriseid in " + ids + ")";
  169. }
  170. sql = sql.replace("[", "(").replace("]", ")");
  171. where.append(sql);
  172. }
  173. // if (whereObject.containsKey("typemx") && !"".equals(whereObject.getString("typemx"))) {
  174. // String typemx = whereObject.getString("typemx");
  175. // String sql = "";
  176. // boolean issaler = isSaler();
  177. //
  178. //
  179. // //经销商
  180. // if (typemx.equals("经销商合作协议") || typemx.equals("经销项目协议") || typemx.equals("工具使用(借用)协议")) {
  181. // if (issaler) {
  182. // Rows rows = dbConnect.runSqlQuery("select sys_enterpriseid from sys_enterprise where sys_enterpriseid in (select t2.sys_enterpriseid from sys_departmenthrid t1 left join sys_enterprise_tradefield t2 "
  183. // + "on t1.siteid=t2.siteid and t1.hrid=t2.hrid where (t1.departmentid in(with recursive department as (select departmentid from sys_department where siteid = '" + siteid + "' and departmentid = " + departmentid
  184. // + " union all select t2.departmentid from department t1 inner join sys_department t2 on t1.departmentid = t2.parentid and t2.siteid ='" + siteid + "') select departmentid from department where departmentid !='" + departmentid + "') "
  185. // + " or if((select isleader from sys_hr where userid=" + userid + ")=1,t1.departmentid=" + departmentid + ",1=2) or t1.hrid=(select hrid from sys_hr where userid=" + userid + "))) UNION ALL select 0");
  186. // if (StringUtils.isNotEmpty(whereObject.getString("type")) && whereObject.getLong("type") > 0) {
  187. // sql = " or (t1.sys_enterpriseid in " + rows.toArrayList("sys_enterpriseid", new ArrayList<>()) + "))";
  188. // } else {
  189. // sql = " and (t1.sys_enterpriseid in " + rows.toArrayList("sys_enterpriseid", new ArrayList<>()) + ")";
  190. // }
  191. // }
  192. // }
  193. // //客户
  194. // if (typemx.equals("直销项目协议") || typemx.equals("工具使用(借用)协议")) {
  195. // if (issaler) {
  196. // //Rows rows = dbConnect.runSqlQuery("select t2.sys_enterpriseid from sys_datateam t1 left join sa_customers t2 on t1.ownerid=t2.sa_customersid and t1.siteid=t2.siteid and t1.ownertable='sa_customers' where t1.userid=" + userid + " and t1.siteid='" + siteid + "' and t2.sys_enterpriseid is not null UNION ALL select 0 ");
  197. //// Rows rows = dbConnect.runSqlQuery("select sys_enterpriseid from sa_customers where sys_enterpriseid in (select t2.sys_enterpriseid from sys_departmenthrid t1 left join sys_datateam t2 "
  198. //// + "on t1.siteid=t2.siteid and t1.hrid=t2.hrid where (t1.departmentid in(with recursive department as (select departmentid from sys_department where siteid = '"+siteid+"' and departmentid = "+departmentid
  199. //// + " union all select t2.departmentid from department t1 inner join sys_department t2 on t1.departmentid = t2.parentid and t2.siteid ='"+siteid+"') select departmentid from department where departmentid !='"+departmentid+"') "
  200. //// + " or if((select isleader from sys_hr where userid="+userid+")=1,t1.departmentid="+departmentid+",1=2) or t1.hrid=(select hrid from sys_hr where userid="+userid+"))) UNION ALL select 0");
  201. //
  202. // if (whereObject.containsKey("type") && StringUtils.isNotEmpty(whereObject.getString("type"))) {
  203. // sql = " or (t1.sys_enterpriseid in " + Hr.getCustomers(this, hrid) + "))";
  204. // } else {
  205. // sql = " and (t1.sys_enterpriseid in " + Hr.getCustomers(this, hrid) + ")";
  206. // }
  207. // }
  208. // }
  209. // if (StringUtils.isEmpty(sql)) {
  210. // sql = ")";
  211. // }
  212. // sql = sql.replace("[", "(").replace("]", ")");
  213. // where.append(sql);
  214. // }
  215. }
  216. SQLFactory sqlFactory = new SQLFactory(this, "商户档案列表查询", pageSize, pageNumber, pageSorting);
  217. sqlFactory.addParameter_SQL("where", where);
  218. sqlFactory.addParameter("siteid", siteid);
  219. String sql = sqlFactory.getSQL(false);
  220. Rows rows = dbConnect.runSqlQuery(sql);
  221. return getSucReturnObject().setData(rows).toString();
  222. }
  223. /**
  224. * 获取项目负责人的负责的客户
  225. *
  226. * @param sa_projectid
  227. * @return
  228. */
  229. public ArrayList<Long> getProjectCustomers(Long sa_projectid) throws YosException {
  230. SQLFactory sqlFactory = new SQLFactory(this, "获取项目负责人的负责的客户");
  231. sqlFactory.addParameter("siteid", siteid);
  232. sqlFactory.addParameter("sa_projectid", sa_projectid);
  233. Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL(false));
  234. return rows.toArrayList("sys_enterpriseid", new ArrayList<>());
  235. }
  236. public ArrayList<Long> getProjectCustomers2(Long sa_projectid) throws YosException {
  237. SQLFactory sqlFactory = new SQLFactory(this, "获取项目负责人的负责的客户2");
  238. sqlFactory.addParameter("siteid", siteid);
  239. sqlFactory.addParameter("sa_projectid", sa_projectid);
  240. Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL(false));
  241. return rows.toArrayList("sys_enterpriseid", new ArrayList<>());
  242. }
  243. /**
  244. * 获取项目负责人启用状态的经销商
  245. *
  246. * @param sa_projectid
  247. * @return
  248. */
  249. public ArrayList<Long> getProjectAgents(Long sa_projectid) throws YosException {
  250. SQLFactory sqlFactory = new SQLFactory(this, "获取项目负责人启用状态的经销商");
  251. sqlFactory.addParameter("siteid", siteid);
  252. sqlFactory.addParameter("sa_projectid", sa_projectid);
  253. Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL(false));
  254. return rows.toArrayList("sys_enterpriseid", new ArrayList<>());
  255. }
  256. public ArrayList<Long> getProjectAgents2(Long sa_projectid) throws YosException {
  257. SQLFactory sqlFactory = new SQLFactory(this, "获取项目负责人启用状态的经销商2");
  258. sqlFactory.addParameter("siteid", siteid);
  259. sqlFactory.addParameter("sa_projectid", sa_projectid);
  260. Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL(false));
  261. return rows.toArrayList("sys_enterpriseid", new ArrayList<>());
  262. }
  263. @API(title = "选择经销商(订单)", apiversion = R.ID20230219195002.v1.class)
  264. @CACHEING
  265. public String selectAgents() throws YosException {
  266. /*
  267. 过滤条件设置
  268. */
  269. StringBuffer where = new StringBuffer(" 1=1 ");
  270. if (content.containsKey("where")) {
  271. JSONObject whereObject = content.getJSONObject("where");
  272. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  273. where.append(" and(");
  274. where.append("t1.phonenumber like'%").append(whereObject.getString("condition")).append("%' ");
  275. where.append("or t1.enterprisename like'%").append(whereObject.getString("condition")).append("%' ");
  276. where.append("or t2.agentnum like'%").append(whereObject.getString("condition")).append("%' ");
  277. where.append("or t1.contact like'").append(whereObject.getString("condition")).append("%' ");
  278. where.append(")");
  279. }
  280. }
  281. boolean ismanage = content.getBooleanValue("ismanage");
  282. //业务员
  283. if (!ismanage && usertype == 1) {
  284. ArrayList<Long> subUserIds = User.getSubUserIds(this);
  285. subUserIds.add(userid);
  286. String hridsql = "SELECT hrid from sys_hr WHERE userid in " + subUserIds + " and siteid='" + siteid + "'";
  287. hridsql = hridsql.replace("[", "(").replace("]", ")");
  288. where.append(" and t1.sys_enterpriseid in (SELECT sys_enterpriseid from sys_enterprise_tradefield WHERE hrid in (" + hridsql + ") and siteid = '" + siteid + "') ");
  289. }
  290. //给默认排序
  291. pageSorting = pageSorting.equals("''") ? " t1.createdate desc" : pageSorting;
  292. SQLFactory sqlFactory = new SQLFactory(this, "经销商列表", pageSize, pageNumber, pageSorting);
  293. sqlFactory.addParameter_SQL("where", where);
  294. sqlFactory.addParameter("siteid", siteid);
  295. String sql = sqlFactory.getSQL();
  296. Rows rows = dbConnect.runSqlQuery(sql);
  297. return getSucReturnObject().setData(rows).toString();
  298. }
  299. @API(title = "选择企业(订单)", apiversion = R.ID20230220005002.v1.class)
  300. @CACHEING
  301. public String selectCustomers() throws YosException {
  302. /*
  303. 过滤条件设置
  304. */
  305. StringBuffer where = new StringBuffer(" 1=1 ");
  306. if (content.containsKey("where")) {
  307. JSONObject whereObject = content.getJSONObject("where");
  308. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  309. where.append(" and(");
  310. where.append("t2.phonenumber like'%").append(whereObject.getString("condition")).append("%' ");
  311. where.append("or t2.enterprisename like'%").append(whereObject.getString("condition")).append("%' ");
  312. where.append("or t2.contact like'").append(whereObject.getString("condition")).append("%' ");
  313. where.append(")");
  314. }
  315. }
  316. String tablename = "sa_customers";
  317. boolean ismanage = content.getBooleanValue("ismanage");
  318. //业务员
  319. String where2 = "1=1";
  320. if (!ismanage && usertype == 1) {
  321. where2 = DataTeam.getDataWhereStr(this, tablename, "t1", 1)
  322. + " or " + DataTeam.getDataWhereStr(this, tablename, "t1", 3);
  323. }
  324. //给默认排序
  325. pageSorting = pageSorting.equals("''") ? " t1.createdate desc" : pageSorting;
  326. SQLFactory sqlFactory = new SQLFactory(this, "客户列表", pageSize, pageNumber, pageSorting);
  327. sqlFactory.addParameter_SQL("where", where);
  328. sqlFactory.addParameter_SQL("where2", where2);
  329. sqlFactory.addParameter("siteid", siteid);
  330. String sql = sqlFactory.getSQL();
  331. Rows rows = dbConnect.runSqlQuery(sql);
  332. return getSucReturnObject().setData(rows).toString();
  333. }
  334. /**
  335. * 获取经销商sys_enterpriseid
  336. *
  337. * @return
  338. * @throws YosException
  339. */
  340. public ArrayList<Long> getAgentsList() throws YosException {
  341. Rows rows = dbConnect.runSqlQuery("SELECT sys_enterpriseid from sa_agents WHERE status='启用' and siteid='" + siteid + "'");
  342. return rows.toArrayList("sys_enterpriseid", new ArrayList<>());
  343. }
  344. //查询可添加为经销商的企业
  345. public ArrayList<Long> getCanAddAgentsList() throws YosException {
  346. Rows rows = dbConnect.runSqlQuery("SELECT sys_enterpriseid from sys_enterprise t1 WHERE NOT EXISTS(SELECT 1 from sa_agents WHERE status='启用' and sys_enterpriseid=t1.sys_enterpriseid and siteid='" + siteid + "') and siteid='" + siteid + "' and ismain=0");
  347. return rows.toArrayList("sys_enterpriseid", new ArrayList<>());
  348. }
  349. /**
  350. * 获取所有客户sys_enterpriseid
  351. *
  352. * @return
  353. * @throws YosException
  354. */
  355. public ArrayList<Long> getCustomersList() throws YosException {
  356. Rows rows = dbConnect.runSqlQuery("SELECT sys_enterpriseid from sa_customers WHERE datastatus != 1 and siteid='" + siteid + "'");
  357. return rows.toArrayList("sys_enterpriseid", new ArrayList<>());
  358. }
  359. /**
  360. * 获取缔约方sys_enterpriseid
  361. *
  362. * @return
  363. * @throws YosException
  364. */
  365. public ArrayList<Long> getProjectPartiesList(Long sa_projectid) throws YosException {
  366. Rows rows = dbConnect.runSqlQuery("SELECT sys_enterpriseid from sa_project_parties WHERE sa_projectid = " + sa_projectid + " and siteid = '" + siteid + "'");
  367. return rows.toArrayList("sys_enterpriseid", new ArrayList<>());
  368. }
  369. @API(title = "商户档案详情查询", apiversion = R.ID20220920084001.v1.class)
  370. @CACHEING
  371. public String query_enterpriseMain() throws YosException {
  372. if (content.containsKey("sys_enterpriseid")) {
  373. sys_enterpriseid = content.getLongValue("sys_enterpriseid");
  374. }
  375. SQLFactory sqlFactory = new SQLFactory(this, "商户档案详情查询");
  376. sqlFactory.addParameter("sys_enterpriseid", sys_enterpriseid);
  377. sqlFactory.addParameter("siteid", siteid);
  378. Rows enterpriseRows = dbConnect.runSqlQuery(sqlFactory.getSQL());
  379. for (Row enterpriseRow : enterpriseRows) {
  380. enterpriseRow.put("hrs", getEnterpriseHrs(enterpriseRow.getLong("sys_enterpriseid")));
  381. }
  382. return getSucReturnObject().setData(enterpriseRows.isNotEmpty() ? enterpriseRows.get(0) : new Row()).toString();
  383. }
  384. @API(title = "商户档案新增修改", apiversion = R.ID20220920084101.v1.class, intervaltime = 200)
  385. @CACHEING_CLEAN(cms = {@cm(clazz = enterprise.class, method = {"query_enterpriseList", "query_enterpriseMain"}),
  386. @cm(clazz = restcontroller.sale.enterprise.enterprise.class, method = {"query_enterpriseMain"})},
  387. apiversions = {R.ID20221011133602.class},
  388. apiClass = {Customer.class, restcontroller.sale.customer.Customer.class})
  389. public String insertormodify_enterprise() throws YosException {
  390. long sys_enterpriseid = content.getLongValue("sys_enterpriseid");//商户档案id,新增时传0
  391. String tablename = "sys_enterprise";
  392. String phonenumber = content.getStringValue("phonenumber", tablename);
  393. boolean isValidPhoneNumber = validatePhoneNumber(phonenumber);
  394. if (!isValidPhoneNumber) {
  395. return getErrReturnObject().setErrMsg("请输入正确的手机号").toString();
  396. }
  397. ArrayList<String> sqllist = new ArrayList<>();
  398. SQLFactory sqlFactory = new SQLFactory(this, "商户档案新增");
  399. if (sys_enterpriseid <= 0 || dbConnect.runSqlQuery("select sys_enterpriseid from sys_enterprise where sys_enterpriseid=" + sys_enterpriseid).isEmpty()) {
  400. sys_enterpriseid = createTableID("sys_enterprise");
  401. } else {
  402. sqlFactory = new SQLFactory(this, "商户档案修改");
  403. }
  404. sqlFactory.addParameter("siteid", siteid);
  405. sqlFactory.addParameter("sys_enterpriseid", sys_enterpriseid);
  406. sqlFactory.addParameter("username", username);
  407. sqlFactory.addParameter("changeuserid", userid);
  408. sqlFactory.addParameter("enterprisename", content.getStringValue("enterprisename", tablename));
  409. sqlFactory.addParameter("address", content.getStringValue("address", tablename));
  410. sqlFactory.addParameter("contact", content.getStringValue("contact", tablename));
  411. Rows rows = dbConnect.runSqlQuery("select t1.sys_enterpriseid,t2.agentnum from sys_enterprise t1 " +
  412. "left join sa_agents t2 on t1.sys_enterpriseid=t2.sys_enterpriseid and t1.siteid=t2.siteid " +
  413. "where t1.sys_enterpriseid!=" + sys_enterpriseid + " and t1.siteid='" + siteid + "' and t1.phonenumber='" + phonenumber + "'");
  414. if (!rows.isEmpty()) {
  415. return getErrReturnObject().setErrMsg("与经销商编码" + rows.get(0).getString("agentnum") + "联系方式重复,无法保存").toString();
  416. }
  417. sqlFactory.addParameter("phonenumber", phonenumber);
  418. sqlFactory.addParameter("province", content.getStringValue("province", tablename));
  419. sqlFactory.addParameter("city", content.getStringValue("city", tablename));
  420. sqlFactory.addParameter("county", content.getStringValue("county", tablename));
  421. sqlFactory.addParameter("taxno", content.getStringValue("taxno", tablename));
  422. sqlFactory.addParameter("limitreturnday", content.getLongValue("limitreturnday"));
  423. sqlFactory.addParameter("freefreightamount", content.getBigDecimalValue("freefreightamount"));
  424. sqlFactory.addParameter("latitude", content.getStringValue("latitude"));
  425. sqlFactory.addParameter("longitude", content.getStringValue("longitude"));
  426. sqlFactory.addParameter("abbreviation", content.getStringValue("abbreviation", tablename));
  427. sqlFactory.addParameter("isorder", content.getLongValue("isorder"));
  428. //开票节点(1:订单审核:2:发货)
  429. sqlFactory.addParameter("invoicingpoint", content.getLongValue("invoicingpoint") == 0 ? 2 : content.getLongValue("invoicingpoint"));
  430. //是否需要经营授权,默认1
  431. sqlFactory.addParameter("saleclassauth", content.getBooleanValue("saleclassauth") == false ? 0 : 1);
  432. sqlFactory.addParameter("grade", content.getLongValue("grade"));
  433. sqllist.add(sqlFactory.getSQL());
  434. //扩展字段
  435. String erpagentnum = content.getStringValue("erpagentnum");
  436. String sql = "SELECT * from sys_dataextend WHERE ownertable='sys_enterprise' and ownerid=" + sys_enterpriseid + " and siteid = '" + siteid + "'";
  437. Rows extendRows = dbConnect.runSqlQuery(sql);
  438. Long sys_dataextendid = 0L;
  439. if (extendRows.isEmpty()) {
  440. sys_dataextendid = createTableID("sys_dataextend");
  441. sqlFactory = new SQLFactory(this, "经销商扩展字段新增");
  442. } else {
  443. sys_dataextendid = extendRows.get(0).getLong("sys_dataextendid");
  444. sqlFactory = new SQLFactory(this, "经销商扩展字段更新");
  445. }
  446. sqlFactory.addParameter("siteid", siteid);
  447. sqlFactory.addParameter("username", username);
  448. sqlFactory.addParameter("userid", userid);
  449. sqlFactory.addParameter("sys_dataextendid", sys_dataextendid);
  450. sqlFactory.addParameter("ownerid", sys_enterpriseid);
  451. sqlFactory.addParameter("ownertable", "sys_enterprise");
  452. sqlFactory.addParameter("erpagentnum", erpagentnum);
  453. sqllist.add(sqlFactory.getSQL());
  454. //企业信息同步到【我的客户】,并将该客户打上经销商标签,
  455. Rows customersRows = dbConnect.runSqlQuery("SELECT sa_customersid from sa_customers WHERE sys_enterpriseid =" + sys_enterpriseid + " and siteid = '" + siteid + "'");
  456. Long sa_customersid = 0L;
  457. if (customersRows.isNotEmpty()) {
  458. sa_customersid = customersRows.get(0).getLong("sa_customersid");
  459. sqlFactory = new SQLFactory(this, "客户更新");
  460. sqlFactory.addParameter("siteid", siteid);
  461. sqlFactory.addParameter("userid", userid);
  462. sqlFactory.addParameter("username", username);
  463. sqlFactory.addParameter("sa_customersid", sa_customersid);
  464. sqlFactory.addParameter("name", content.getStringValue("enterprisename"));
  465. sqlFactory.addParameter("province", content.getStringValue("province"));
  466. sqlFactory.addParameter("city", content.getStringValue("city"));
  467. sqlFactory.addParameter("county", content.getStringValue("county"));
  468. sqlFactory.addParameter("address", content.getStringValue("address"));
  469. sqlFactory.addParameter("phonenumber", content.getStringValue("phonenumber"));
  470. sqllist.add(sqlFactory.getSQL());
  471. }
  472. dbConnect.runSqlUpdate(sqllist);
  473. content.put("sys_enterpriseid", sys_enterpriseid);
  474. return query_enterpriseMain();
  475. }
  476. public static boolean validatePhoneNumber(String number) {
  477. Pattern pattern = Pattern.compile("^[1][0-9]{10}$"); // 定义手机号码格式的正则表达式
  478. Matcher matcher = pattern.matcher(number);
  479. return matcher.matches(); // 返回true表示匹配成功,false表示不匹配或者输入为空
  480. }
  481. @API(title = "商户档案删除", apiversion = R.ID20220920084201.v1.class)
  482. @CACHEING_CLEAN(apiversions = {R.ID20220920083901.class, R.ID20220920084001.class, R.ID20221022165203.class})
  483. public String delete_enterprise() throws YosException {
  484. JSONArray sys_enterpriseids = content.getJSONArray("sys_enterpriseids");
  485. BatchDeleteErr batchDeleteErr = BatchDeleteErr.create(this, sys_enterpriseids.size());
  486. for (Object o : sys_enterpriseids) {
  487. long sys_enterpriseid = Long.parseLong(o.toString());
  488. Rows userRows = dbConnect.runSqlQuery("select userid from sys_enterprise_hr where siteid='" + siteid + "' and sys_enterpriseid='" + sys_enterpriseid + "'");
  489. ArrayList<String> useridlist = userRows.toArrayList("userid");
  490. SQLFactory sqlFactory = new SQLFactory("sql:select * from sys_userrequestlog where userid!=0 and userid in $userid$");
  491. sqlFactory.addParameter_in("userid", useridlist);
  492. Rows logRows = dbConnect.runSqlQuery(sqlFactory.getSQL());
  493. if (logRows.isNotEmpty()) {
  494. batchDeleteErr.addErr(sys_enterpriseid, "该商户下属账号存在访问记录,不可进行删除操作");
  495. continue;
  496. }
  497. ArrayList<String> list = new ArrayList<>();
  498. {
  499. SQLFactory deletesql = new SQLFactory("sql:delete from sys_enterprise where siteid='" + siteid + "' and sys_enterpriseid=" + sys_enterpriseid);
  500. list.add(deletesql.getSQL());
  501. }
  502. {
  503. SQLFactory deletesql = new SQLFactory("sql:delete from sa_agents where siteid='" + siteid + "' and sys_enterpriseid=" + sys_enterpriseid);
  504. list.add(deletesql.getSQL());
  505. }
  506. {
  507. SQLFactory deletesql = new SQLFactory("sql:delete from sys_enterprise_hr where siteid='" + siteid + "' and sys_enterpriseid=" + sys_enterpriseid);
  508. list.add(deletesql.getSQL());
  509. }
  510. if (useridlist.size() > 0) {
  511. {
  512. SQLFactory deletesql = new SQLFactory("sql:delete from sys_users where userid in $userid$");
  513. deletesql.addParameter_in("userid", useridlist);
  514. list.add(deletesql.getSQL());
  515. }
  516. {
  517. SQLFactory deletesql = new SQLFactory("sql:delete from sys_usersite where userid in $userid$");
  518. deletesql.addParameter_in("userid", useridlist);
  519. list.add(deletesql.getSQL());
  520. }
  521. {
  522. SQLFactory deletesql = new SQLFactory("sql:delete from sys_userrole where userid in $userid$");
  523. deletesql.addParameter_in("userid", useridlist);
  524. list.add(deletesql.getSQL());
  525. }
  526. }
  527. dbConnect.runSqlUpdate(list);
  528. }
  529. return batchDeleteErr.getReturnObject().toString();
  530. }
  531. @API(title = "创建商户主账号,如已存在,则赋予相应角色权限", apiversion = R.ID20220920084301.v1.class)
  532. @CACHEING_CLEAN(cms = {@cm(clazz = agents.class, method = {"query_agentList", "query_agentMain"}), @cm(clazz = salearea.class, method = {"query_agent"})})
  533. public String createMainUser() throws YosException {
  534. long sys_enterpriseid = content.getLongValue("sys_enterpriseid");
  535. if (dbConnect.runSqlQuery("select * from sys_enterprise_hr where sys_enterpriseid='" + sys_enterpriseid + "' and isleader=1 and siteid='" + siteid + "'").isNotEmpty()) {
  536. return getErrReturnObject().setErrMsg("创建失败,已存在负责人账号").toString();
  537. }
  538. Rows rows = dbConnect.runSqlQuery("select * from sys_enterprise where siteid='" + siteid + "' and sys_enterpriseid=" + sys_enterpriseid);
  539. if (rows.isEmpty()) {
  540. return getErrReturnObject().setErrMsg("商户档案不存在").toString();
  541. }
  542. String contact = rows.get(0).getString("contact");
  543. String enterprisename = rows.get(0).getString("enterprisename");
  544. String phonenumber = rows.get(0).getString("phonenumber");
  545. Rows defaultrole = dbConnect.runSqlQuery("select roleid from sys_role where siteid='" + siteid + "' and usertype='" + 21 + "' and issystem=1");
  546. Long[] defaultroleids = defaultrole.toArray("roleid", new Long[]{});
  547. Rows agentRows = dbConnect.runSqlQuery("select agentnum from sa_agents where siteid='" + siteid + "' and sys_enterpriseid=" + sys_enterpriseid);
  548. if (agentRows.isEmpty()) {
  549. User.createUser(this, sys_enterpriseid, enterprisename, phonenumber, true, "负责人", 21, defaultroleids, enterprisename);
  550. } else {
  551. String accountprefix = Parameter.get(siteid, "accountprefix");
  552. User.createUser(this, sys_enterpriseid, accountprefix + "" + agentRows.get(0).getString("agentnum"), enterprisename, phonenumber, true, "负责人", 21, defaultroleids, enterprisename);
  553. }
  554. return getSucReturnObject().toString();
  555. }
  556. @API(title = "企业在线查找", intervaltime = 2000, apiversion = R.ID20221208103601.v1.class)
  557. @CACHEING(life = 1440)
  558. public String queryEnterpriseListOnline() throws YosException {
  559. String keyword = content.getString("keyword");
  560. int pageNumber = content.getIntValue("pageNumber");
  561. int pageSize = content.getIntValue("pageSize");
  562. HashMap<String, String> headers = new HashMap<>();
  563. headers.put("content-type", "application/json;charset=utf-8");
  564. JSONObject requestObject = new JSONObject();
  565. requestObject.put("pageNo", pageNumber);
  566. requestObject.put("pageSize", pageSize);
  567. requestObject.put("keyword", keyword);
  568. requestObject.put("orderByType", 5);
  569. String web_result = new WebRequest().doPost(requestObject.toString(), "https://holmes.taobao.com/web/corp/customer/searchWithSummary", headers);
  570. JSONObject web_resultObject = JSONObject.parseObject(web_result);
  571. JSONArray resultArray = new JSONArray();
  572. if (web_resultObject.containsKey("code") && web_resultObject.getLongValue("code") == 0) {
  573. JSONArray webdataArray = web_resultObject.getJSONObject("data").getJSONArray("data");
  574. for (Object webdataObject : webdataArray) {
  575. JSONObject webdataJSONObject = (JSONObject) webdataObject;
  576. JSONObject resultObject = new JSONObject(true);
  577. resultObject.put("companyName", webdataJSONObject.getString("companyName"));
  578. resultObject.put("socialCreditCode", webdataJSONObject.getString("socialCreditCode"));
  579. resultObject.put("taxNum", webdataJSONObject.getString("taxNum"));
  580. resultObject.put("tags", webdataJSONObject.getJSONArray("tags"));
  581. resultObject.put("address", webdataJSONObject.getString("address"));
  582. String regProvince = webdataJSONObject.getString("regProvince");
  583. regProvince = regProvince.replace("&ltmark&gt", "").replace("&lt/mark&gt", "");
  584. resultObject.put("regProvince", regProvince);
  585. String regCity = webdataJSONObject.getString("regCity");
  586. regCity = regCity.replace("&ltmark&gt", "").replace("&lt/mark&gt", "");
  587. resultObject.put("regCity", regCity);
  588. String regArea = webdataJSONObject.getString("regArea");
  589. regArea = regArea.replace("&ltmark&gt", "").replace("&lt/mark&gt", "");
  590. resultObject.put("regArea", regArea);
  591. resultObject.put("registerCapital", webdataJSONObject.getString("registerCapital"));
  592. resultObject.put("legalPerson", webdataJSONObject.getString("legalPerson"));
  593. resultObject.put("registerDate", webdataJSONObject.getString("registerDate"));
  594. resultObject.put("bizStatus", webdataJSONObject.getString("bizStatus"));
  595. resultObject.put("lat", webdataJSONObject.getString("lat"));
  596. resultObject.put("lon", webdataJSONObject.getString("lon"));
  597. resultObject.put("phone", webdataJSONObject.getString("phone"));
  598. resultObject.put("officialSite", webdataJSONObject.getString("officialSite"));
  599. resultObject.put("email", webdataJSONObject.getString("email"));
  600. resultObject.put("ocid", webdataJSONObject.getString("ocid"));
  601. {
  602. JSONObject mainrequestObject = new JSONObject();
  603. mainrequestObject.put("ocid", webdataJSONObject.getString("ocid"));
  604. String web_mainresult = new WebRequest().doPost(mainrequestObject.toString(), "https://holmes.taobao.com/web/corpquery/company/category3", headers);
  605. JSONObject web_mainresultObject = JSONObject.parseObject(web_mainresult);
  606. if (web_mainresultObject.containsKey("code") && web_mainresultObject.getLongValue("code") == 0) {
  607. JSONObject summaryObject = web_mainresultObject.getJSONObject("data").getJSONObject("summary");
  608. resultObject.put("opScope", summaryObject.getString("opScope"));
  609. resultObject.put("entBrief", summaryObject.getString("entBrief"));
  610. resultObject.put("industryOne", summaryObject.getString("industryOne"));
  611. resultObject.put("industryTwo", summaryObject.getString("industryTwo"));
  612. resultObject.put("staffSize", summaryObject.getString("staffSize"));
  613. }
  614. }
  615. resultArray.add(resultObject);
  616. }
  617. }
  618. return getSucReturnObject().setData(resultArray).toString();
  619. }
  620. // public static void main(String[] args) throws YosException {
  621. // JSONObject object = new JSONObject();
  622. // object.put("keyword", "云链");
  623. // object.put("pageNumber", 1);
  624. // object.put("pageSize", 80);
  625. // enterprise enterprise = new enterprise(object);
  626. // }
  627. // @API(title = "在线查询企业详情信息")
  628. // public void queryEnterpriseMainOnline() throws YosException {
  629. // HashMap<String, String> headers = new HashMap<>();
  630. // headers.put("content-type", "application/json;charset=utf-8");
  631. //
  632. // JSONObject requestObject = new JSONObject();
  633. // requestObject.put("ocid", "1211104000186135776");
  634. //
  635. // String web_result = new WebRequest().doPost(requestObject.toString(), "https://holmes.taobao.com/web/corpquery/company/category3", headers);
  636. // JSONObject web_resultObject = JSONObject.parseObject(web_result);
  637. //
  638. //
  639. // JSONObject resultObject = new JSONObject();
  640. // if (web_resultObject.getLong("code") == 0) {
  641. // JSONObject summaryObject = web_resultObject.getJSONObject("data").getJSONObject("summary");
  642. //
  643. // resultObject.put("opScope", summaryObject.getString("opScope"));
  644. // resultObject.put("entBrief", summaryObject.getString("entBrief"));
  645. // resultObject.put("industryOne", summaryObject.getString("industryOne"));
  646. // resultObject.put("industryTwo", summaryObject.getString("industryTwo"));
  647. // }
  648. //
  649. //// JSONObject requestObject2 = new JSONObject();
  650. //// requestObject2.put("type", "web");
  651. //// requestObject2.put("pageNo", 1);
  652. //// requestObject2.put("pageSize", 1);
  653. //// JSONArray dataModuleIds = new JSONArray();
  654. //// dataModuleIds.add("482");//
  655. //// requestObject2.put("dataModuleIds", dataModuleIds);
  656. ////
  657. //// JSONArray params = new JSONArray();
  658. //// JSONObject param = new JSONObject();
  659. //// param.put("key", "onecomp_id");
  660. //// param.put("value", "1211104000186135776");
  661. //// params.add(param);
  662. //// requestObject2.put("params", params);
  663. ////
  664. //// String result2 = new WebRequest().doPost(requestObject2.toString(), "https://holmes.taobao.com/web/detail/companyDetailCardBatch", headers);
  665. //// JSONObject resultObject2 = JSONObject.parseObject(result2);
  666. // }
  667. }