enterprise.java 39 KB

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