Project.java 46 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885
  1. package restcontroller.sale.project;
  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.saletool.orderclue.ExportExcel;
  18. import java.util.ArrayList;
  19. import java.util.HashMap;
  20. public class Project extends Controller {
  21. /**
  22. * 构造函数
  23. *
  24. * @param content
  25. */
  26. public Project(JSONObject content) throws YosException {
  27. super(content);
  28. }
  29. @API(title = "我的项目商机", apiversion = R.ID20221020143502.v1.class)
  30. @CACHEING
  31. public String selectMyList() throws YosException {
  32. // 1:我负责的;2:我参与的;3:我下属负责的;4:我下属参与的
  33. int type = content.getIntValue("type");
  34. Long deleted = 0L;
  35. if (content.containsKey("deleted") && !"".equals(content.getString("deleted"))) {
  36. deleted = content.getLong("deleted");
  37. }
  38. String tablename = "sa_project";
  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.createby like'%").append(whereObject.getString("condition")).append("%' ");
  45. where.append("or t1.projectname like'%").append(whereObject.getString("condition")).append("%' ");
  46. where.append("or t1.province like'%").append(whereObject.getString("condition")).append("%' ");
  47. where.append("or t1.city like'%").append(whereObject.getString("condition")).append("%' ");
  48. where.append("or t1.county like'%").append(whereObject.getString("condition")).append("%' ");
  49. where.append("or t1.address like'%").append(whereObject.getString("condition")).append("%' ");
  50. where.append("or t1.projectnum like'%").append(whereObject.getString("condition")).append("%' ");
  51. where.append(")");
  52. }
  53. if (whereObject.containsKey("startdate") && !"".equals(whereObject.getString("startdate"))) {
  54. where.append(" and(");
  55. where.append("t1.createdate >='").append(whereObject.getString("startdate")).append("' ");
  56. where.append(")");
  57. }
  58. if (whereObject.containsKey("enddate") && !"".equals(whereObject.getString("enddate"))) {
  59. where.append(" and(");
  60. where.append("t1.createdate <='").append(whereObject.getString("enddate")).append("' ");
  61. where.append(")");
  62. }
  63. if (whereObject.containsKey("status") && !"".equals(whereObject.getString("status"))) {
  64. where.append(" and(");
  65. where.append("t1.status ='").append(whereObject.getString("status")).append("' ");
  66. where.append(")");
  67. }
  68. if (whereObject.containsKey("projecttype") && !"".equals(whereObject.getString("projecttype"))) {
  69. where.append(" and(");
  70. where.append("t1.projecttype ='").append(whereObject.getString("projecttype")).append("' ");
  71. where.append(")");
  72. }
  73. if (whereObject.containsKey("grade") && !"".equals(whereObject.getString("grade"))) {
  74. where.append(" and(");
  75. where.append("t1.grade ='").append(whereObject.getString("grade")).append("' ");
  76. where.append(")");
  77. }
  78. if (whereObject.containsKey("stagename") && !"".equals(whereObject.getString("stagename"))) {
  79. where.append(" and(");
  80. where.append("t2.stagename ='").append(whereObject.getString("stagename")).append("' ");
  81. where.append(")");
  82. }
  83. if (whereObject.containsKey("brandname") && !"".equals(whereObject.getString("brandname"))) {
  84. where.append(" and(");
  85. where.append("t3.brandname ='").append(whereObject.getString("brandname")).append("' ");
  86. where.append(")");
  87. }
  88. if (whereObject.containsKey("tradefield") && !"".equals(whereObject.getString("tradefield"))) {
  89. where.append(" and(");
  90. where.append("t1.tradefield like'%").append(whereObject.getString("tradefield")).append("%' ");
  91. where.append(")");
  92. }
  93. //缔约方
  94. if (whereObject.containsKey("tag") && !"".equals(whereObject.getString("tag"))) {
  95. where.append(" and( ");
  96. where.append("t1.sa_projectid in ( SELECT ownerid from sys_datatag WHERE ownertable = 'sa_project' and tag like'%" + whereObject.getString("tag") + "%' )");
  97. where.append(")");
  98. }
  99. if (whereObject.containsKey("sys_enterpriseid") && !"".equals(whereObject.getString("sys_enterpriseid"))) {
  100. where.append(" and(");
  101. where.append("exists(select * from sa_project_parties where t1.siteid=sa_project_parties.siteid and t1.sa_projectid=sa_project_parties.sa_projectid and sa_project_parties.sys_enterpriseid='" + whereObject.getString("sys_enterpriseid") + "' )");
  102. where.append(")");
  103. }
  104. }
  105. where.append(" and(").append("t1.deleted = ").append(deleted).append(")");
  106. SQLFactory sqlFactory = new SQLFactory(this, "项目商机列表");
  107. sqlFactory.addParameter("siteid", siteid);
  108. sqlFactory.addParameter_SQL("where", where);
  109. // sqlFactory.addParameter("username", username);
  110. String where2;
  111. if (type == 0) {
  112. where2 = DataTeam.getDataWhereStr(this, tablename, "t1", DataTeam.FilterType.valueOf( 1))
  113. + " or " + DataTeam.getDataWhereStr(this, tablename, "t1", DataTeam.FilterType.valueOf( 2))
  114. + " or " + DataTeam.getDataWhereStr(this, tablename, "t1", DataTeam.FilterType.valueOf( 3))
  115. + " or " + DataTeam.getDataWhereStr(this, tablename, "t1", DataTeam.FilterType.valueOf( 4))
  116. + " or " + DataTeam.getDataWhereStr(this, tablename, "t1", DataTeam.FilterType.valueOf( 5));
  117. } else {
  118. where2 = DataTeam.getDataWhereStr(this, tablename, "t1", DataTeam.FilterType.valueOf( type));
  119. }
  120. sqlFactory.addParameter_SQL("where2", where2);
  121. // String sql = sqlFactory.getSQL();
  122. // Rows rows = dbConnect.runSqlQuery(sql);
  123. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sys_site_parameter", "sys_site_parameterid");
  124. querySQL.setTableAlias("t0");
  125. querySQL.addJoinTable(JOINTYPE.right, sqlFactory, "t1", "t0.siteid='111'", "*");
  126. querySQL.setPage(pageSize, pageNumber);
  127. Rows rows = querySQL.query();
  128. ArrayList<Long> sa_projectids = rows.toArrayList("sa_projectid", new ArrayList<>());
  129. sqlFactory = new SQLFactory(this, "查询项目缔约方客户类型");
  130. sqlFactory.addParameter("siteid", siteid);
  131. sqlFactory.addParameter_in("sa_projectid", sa_projectids);
  132. RowsMap typeRowsMap = dbConnect.runSqlQuery(sqlFactory).toRowsMap("sa_projectid");
  133. RowsMap leaderRows = DataTeam.getLeader(this, tablename, rows.toArrayList("sa_projectid", new ArrayList<>())).toRowsMap("ownerid");
  134. sqlFactory = new SQLFactory(this, "阶段排序");
  135. sqlFactory.addParameter("siteid", siteid);
  136. sqlFactory.addParameter_in("sa_projectids", rows.toArray("sa_projectid"));
  137. RowsMap stageRowsMap = dbConnect.runSqlQuery(sqlFactory.getSQL()).toRowsMap("projectid");
  138. //标签
  139. HashMap<Long, ArrayList<String>> tagList = DataTag.queryTag(this, "sa_project", sa_projectids, false);
  140. //系统标签
  141. HashMap<Long, ArrayList<String>> sysTagList = DataTag.queryTag(this, "sa_project", sa_projectids, true);
  142. RowsMap deletereasonRowsMap = null;
  143. if (deleted == 1) {
  144. deletereasonRowsMap = DataExtend.getDeleteReasonSql(this, "sa_project", rows.toArrayList("sa_projectid", new ArrayList<Long>()));
  145. }
  146. for (Row row : rows) {
  147. Long sa_projectid = row.getLong("sa_projectid");
  148. if (!stageRowsMap.isEmpty() && stageRowsMap.containsKey(String.valueOf(sa_projectid))) {
  149. if (stageRowsMap.get(String.valueOf(sa_projectid)).toRowsMap("active").containsKey("1")) {
  150. String rowNum = stageRowsMap.get(String.valueOf(sa_projectid)).toRowsMap("active").get("1").get(0).getString("rowNum");
  151. row.put("stage", rowNum);
  152. } else {
  153. row.put("stage", 0);
  154. }
  155. } else {
  156. row.put("stage", 0);
  157. }
  158. row.put("types", typeRowsMap.get(String.valueOf(sa_projectid)));
  159. row.put("winrate", 0);
  160. row.put("leader", leaderRows.get(String.valueOf(sa_projectid)));
  161. //非系统标签
  162. row.put("tag", tagList.get(sa_projectid) != null ? tagList.get(sa_projectid) : new ArrayList<String>());
  163. //系统标签
  164. row.put("tag_sys", sysTagList.get(sa_projectid) != null ? sysTagList.get(sa_projectid) : new ArrayList<String>());
  165. if (deletereasonRowsMap != null && deletereasonRowsMap.containsKey(row.getString("sa_projectid"))) {
  166. Row dataextendrow = deletereasonRowsMap.get(row.getString("sa_projectid")).get(0);
  167. row.put("deletereason", dataextendrow.getString("deletereason"));
  168. row.put("deletechangeby", dataextendrow.getString("changeby"));
  169. row.put("deletechangedate", dataextendrow.getString("changedate"));
  170. } else {
  171. row.put("deletereason", "");
  172. row.put("deletechangeby", "");
  173. row.put("deletechangedate", "");
  174. }
  175. }
  176. return getSucReturnObject().setData(rows).toString();
  177. }
  178. @API(title = "新增或更新", apiversion = R.ID20221020144202.v1.class)
  179. @CACHEING_CLEAN(apiversions = {R.ID20221020143502.v1.class, R.ID20221018102003.v1.class})
  180. public String insertOrUpdate() throws YosException {
  181. Long sa_projectid = content.getLong("sa_projectid");
  182. String projectname = content.getString("projectname");
  183. String projecttype = content.getString("projecttype");
  184. Long sa_brandid = content.getLongValue("sa_brandid");
  185. String tradefield = content.getStringValue("tradefield");
  186. String tablename = "sa_project";
  187. RowsMap stageRowsMap = dbConnect.runSqlQuery("select t1.sa_projstagemagid ,t1.stagename,t1.remarks,t1.sequence,t2.projecttype from sa_projstagemag t1 inner join sa_projstagemag_projecttype t2 on t1.siteid=t2.siteid and t1.sa_projstagemagid=t2.sa_projstagemagid where t1.siteid='" + siteid + "'").toRowsMap("projecttype");
  188. Rows projectRows = dbConnect.runSqlQuery("select projecttype from sa_project where siteid='" + siteid + "' and sa_projectid=" + sa_projectid);
  189. String projectnum = content.getStringValue("projectnum");
  190. if (projectnum.isEmpty()) {
  191. projectnum = createBillCode("projectbill");
  192. }
  193. ArrayList<String> sqlList = new ArrayList<>();
  194. SQLFactory sqlFactory = new SQLFactory(this, "项目商机新增");
  195. if (sa_projectid <= 0 || projectRows.isEmpty()) {
  196. sa_projectid = createTableID(tablename);
  197. //数据团队新增
  198. sqlList.addAll(DataTeam.createTeamSQL(this, tablename, sa_projectid, userid));
  199. sqlList.addAll(DataTeam.createTeamMemberSql(this, "sa_project", sa_projectid, userid));
  200. //添加直销标签
  201. DataTag.createTag(this, tablename, sa_projectid, "直销");
  202. String sql = DataContrlLog.createLog(this, "sa_project", sa_projectid, "新建", "新建项目商机" + projectnum).getSQL();
  203. sqlList.add(sql);
  204. } else {
  205. sqlFactory = new SQLFactory(this, "项目商机更新");
  206. String sql = DataContrlLog.createLog(this, "sa_project", sa_projectid, "编辑", "编辑项目商机" + projectnum).getSQL();
  207. sqlList.add(sql);
  208. }
  209. sqlFactory.addParameter("siteid", siteid);
  210. sqlFactory.addParameter("sa_projectid", sa_projectid);
  211. sqlFactory.addParameter("departmentid", departmentid);
  212. sqlFactory.addParameter("userid", userid);
  213. sqlFactory.addParameter("username", username);
  214. sqlFactory.addParameter("projectname", projectname);
  215. sqlFactory.addParameter("projectnum", createBillCode("projectbill"));
  216. sqlFactory.addParameter("grade", content.getStringValue("grade"));
  217. sqlFactory.addParameter("budgetary", content.getStringValue("budgetary"));
  218. sqlFactory.addParameter("remarks", content.getStringValue("remarks"));
  219. sqlFactory.addParameter("projecttype", projecttype);
  220. sqlFactory.addParameter("signdate_due", content.getStringValue("signdate_due"));
  221. sqlFactory.addParameter("scale", content.getStringValue("scale"));
  222. sqlFactory.addParameter("signamount_due", content.getBigDecimal("signamount_due"));
  223. sqlFactory.addParameter("province", content.getStringValue("province"));
  224. sqlFactory.addParameter("city", content.getStringValue("city"));
  225. sqlFactory.addParameter("county", content.getStringValue("county"));
  226. sqlFactory.addParameter("address", content.getStringValue("address"));
  227. sqlFactory.addParameter("discountrate", content.getBigDecimal("discountrate"));
  228. sqlFactory.addParameter("costofconstruction", content.getBigDecimal("costofconstruction"));
  229. sqlFactory.addParameter("totalinvestment", content.getBigDecimal("totalinvestment"));
  230. sqlFactory.addParameter("begdate_due", content.getStringValue("begdate_due", false, "null"));
  231. sqlFactory.addParameter("enddate_due", content.getStringValue("enddate_due", false, "null"));
  232. sqlFactory.addParameter("sa_brandid", sa_brandid);
  233. sqlFactory.addParameter("tradefield", tradefield);
  234. sqlList.add(sqlFactory.getSQL());
  235. if (dbConnect.runSqlQuery("SELECT 1 from sa_project_stage WHERE sa_projectid = " + sa_projectid + " AND siteid = '" + siteid + "'").isEmpty()) {
  236. Rows rows = stageRowsMap.get(projecttype);
  237. for (int i = 0; i < rows.size(); i++) {
  238. Row row = rows.getRow(i);
  239. sqlFactory = new SQLFactory(this, "工程项目阶段信息新增");
  240. sqlFactory.addParameter("siteid", siteid);
  241. sqlFactory.addParameter("sa_project_stageid", createTableID("sa_project_stage"));
  242. sqlFactory.addParameter("sa_projectid", sa_projectid);
  243. sqlFactory.addParameter("sa_projstagemagid", row.getLong("sa_projstagemagid"));
  244. sqlFactory.addParameter("stagename", row.getString("stagename"));
  245. sqlFactory.addParameter("remarks", row.getString("remarks"));
  246. sqlFactory.addParameter("sequence", row.getLong("sequence"));
  247. if (i == 0) {
  248. sqlFactory.addParameter("active", 1);
  249. } else {
  250. sqlFactory.addParameter("active", 0);
  251. }
  252. sqlList.add(sqlFactory.getSQL());
  253. }
  254. }
  255. dbConnect.runSqlUpdate(sqlList);
  256. content.put("sa_projectid", sa_projectid);
  257. return selectDetail();
  258. }
  259. @API(title = "作废", apiversion = R.ID20221020144302.v1.class)
  260. @CACHEING_CLEAN(apiversions = {R.ID20221020143502.v1.class, R.ID20221018102003.v1.class})
  261. public String delete() throws YosException {
  262. JSONArray sa_projectids = content.getJSONArray("sa_projectids");
  263. ArrayList<String> sqlList = new ArrayList<>();
  264. SQLFactory sqlFactory = new SQLFactory(this, "项目商机作废");
  265. sqlFactory.addParameter("siteid", siteid);
  266. sqlFactory.addParameter_in("sa_projectid", sa_projectids.toArray());
  267. sqlList.add(sqlFactory.getSQL());
  268. //新增删除或作废原因
  269. DataExtend.createDeleteReasonSql(this, "sa_project", sa_projectids.toJavaList(Long.class), content.getStringValue("deletereason"));
  270. for (Object obj : sa_projectids) {
  271. Long id = Long.valueOf(obj.toString());
  272. sqlList.add(DataContrlLog.createLog(this, "sa_project", id, "作废", "作废项目商机至 回收站:" + id).getSQL());
  273. }
  274. dbConnect.runSqlUpdate(sqlList);
  275. return getSucReturnObject().toString();
  276. }
  277. @API(title = "报备", apiversion = R.ID20221021092302.v1.class)
  278. @CACHEING_CLEAN(apiversions = {R.ID20221020143502.v1.class})
  279. public String report() throws YosException {
  280. Long sa_projectid = content.getLong("sa_projectid");
  281. String reportby = content.getString("reportby");
  282. SQLFactory sqlFactory = new SQLFactory(this, "项目商机报备");
  283. sqlFactory.addParameter("siteid", siteid);
  284. sqlFactory.addParameter("userid", userid);
  285. sqlFactory.addParameter("username", username);
  286. sqlFactory.addParameter("reportby", reportby);
  287. sqlFactory.addParameter("sa_projectid", sa_projectid);
  288. dbConnect.runSqlUpdate(sqlFactory);
  289. dbConnect.runSqlUpdate(DataContrlLog.createLog(this, "sa_project", sa_projectid, "报备", "项目商机报备成功").getSQL());
  290. return getSucReturnObject().toString();
  291. }
  292. @API(title = "报备", apiversion = R.ID20221021092402.v1.class)
  293. @CACHEING_CLEAN(apiversions = {R.ID20221020143502.v1.class, R.ID20221018102003.v1.class})
  294. public String reportcheck() throws YosException {
  295. Long sa_projectid = content.getLong("sa_projectid");
  296. SQLFactory sqlFactory = new SQLFactory(this, "项目商机报备审核");
  297. sqlFactory.addParameter("siteid", siteid);
  298. sqlFactory.addParameter("userid", userid);
  299. sqlFactory.addParameter("username", username);
  300. sqlFactory.addParameter("sa_projectid", sa_projectid);
  301. dbConnect.runSqlUpdate(sqlFactory);
  302. dbConnect.runSqlUpdate(DataContrlLog.createLog(this, "sa_project", sa_projectid, "报备审核", "项目商机报备审核成功").getSQL());
  303. return getSucReturnObject().toString();
  304. }
  305. @API(title = "可报备人员列表", apiversion = R.ID20221021093202.v1.class)
  306. public String reportList() throws YosException {
  307. StringBuffer where = new StringBuffer(" 1=1 ");
  308. if (content.containsKey("where")) {
  309. JSONObject whereObject = content.getJSONObject("where");
  310. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  311. where.append(" and(");
  312. where.append("t1.name like'%").append(whereObject.getString("condition")).append("%' ");
  313. where.append(")");
  314. }
  315. }
  316. // SQLFactory sqlFactory = new SQLFactory(this, "报备人列表", pageSize, pageNumber, pageSorting);
  317. // sqlFactory.addParameter("siteid", siteid);
  318. // sqlFactory.addParameter("userid", userid);
  319. // sqlFactory.addParameter_SQL("where", where);
  320. // String sql = sqlFactory.getSQL();
  321. // Rows rows = dbConnect.runSqlQuery(sql);
  322. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sys_users", "userid", "name");
  323. querySQL.setTableAlias("t1");
  324. querySQL.addJoinTable(JOINTYPE.inner, "sys_usersite", "t2", "t2.userid = t1.userid");
  325. querySQL.setWhere("t2.siteid", siteid);
  326. querySQL.setWhere("t1.sysadministrator = 0 AND t1.createby != 'system'");
  327. querySQL.setWhere("t1.userid!=" + userid);
  328. querySQL.setWhere(where.toString());
  329. querySQL.setPage(pageSize, pageNumber);
  330. Rows rows = querySQL.query();
  331. return getSucReturnObject().setData(rows).toString();
  332. }
  333. @API(title = "我负责的客户", apiversion = R.ID20221021095802.v1.class)
  334. public String myCustomerList() throws YosException {
  335. StringBuffer where = new StringBuffer(" 1=1 ");
  336. if (content.containsKey("where")) {
  337. JSONObject whereObject = content.getJSONObject("where");
  338. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  339. where.append(" and(");
  340. where.append("t1.createby like'%").append(whereObject.getString("condition")).append("%' ");
  341. where.append("or t2.enterprisename like'%").append(whereObject.getString("condition")).append("%' ");
  342. where.append(")");
  343. }
  344. }
  345. // SQLFactory sqlFactory = new SQLFactory(this, "我的客户", pageSize, pageNumber, pageSorting);
  346. // sqlFactory.addParameter("siteid", siteid);
  347. // sqlFactory.addParameter_SQL("where", where);
  348. // sqlFactory.addParameter_SQL("where2", DataTeam.getDataWhereStr(this, "sa_customers", "t1", 1));
  349. // String sql = sqlFactory.getSQL();
  350. // Rows rows = dbConnect.runSqlQuery(sql);
  351. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_customers", "sa_customersid", "sys_enterpriseid");
  352. querySQL.setTableAlias("t1");
  353. querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t2", "t2.sys_enterpriseid = t1.sys_enterpriseid AND t2.siteid = t1.siteid", "enterprisename");
  354. querySQL.setSiteid(siteid);
  355. querySQL.setWhere(where.toString());
  356. querySQL.setWhere(DataTeam.getDataWhereStr(this, "sa_customers", "t1", DataTeam.FilterType.valueOf( 1)));
  357. querySQL.setPage(pageSize, pageNumber);
  358. Rows rows = querySQL.query();
  359. return getSucReturnObject().setData(rows).toString();
  360. }
  361. @API(title = "项目商机详情", apiversion = R.ID20221021103902.v1.class)
  362. public String selectDetail() throws YosException {
  363. Long sa_projectid = content.getLong("sa_projectid");
  364. SQLFactory sqlFactory = new SQLFactory(this, "项目商机详情");
  365. sqlFactory.addParameter("siteid", siteid);
  366. sqlFactory.addParameter("sa_projectid", sa_projectid);
  367. String sql = sqlFactory.getSQL();
  368. Rows rows = dbConnect.runSqlQuery(sql);
  369. RowsMap leaderRows = DataTeam.getLeader(this, "sa_project", rows.toArrayList("sa_projectid", new ArrayList<>())).toRowsMap("ownerid");
  370. for (Row row : rows) {
  371. if (leaderRows.get(row.getString("sa_projectid")) == null) {
  372. row.put("leader", new Rows());
  373. } else {
  374. row.put("leader", leaderRows.get(row.getString("sa_projectid")));
  375. }
  376. }
  377. Row row = rows.isNotEmpty() ? rows.get(0) : new Row();
  378. sqlFactory = new SQLFactory(this, "查询最近跟进信息");
  379. sqlFactory.addParameter("siteid", siteid);
  380. sqlFactory.addParameter("ownerid", sa_projectid);
  381. Rows followRows = dbConnect.runSqlQuery(sqlFactory);
  382. if (followRows.isNotEmpty()) {
  383. row.putAll(followRows.get(0));
  384. } else {
  385. row.put("followby", "");
  386. row.put("followdate", "");
  387. }
  388. //转移次数
  389. row.put("changecount", 0);
  390. row.put("winrate", 0);
  391. return getSucReturnObject().setData(row).toString();
  392. }
  393. @API(title = "项目商机导入模板", apiversion = R.ID20221110151704.v1.class)
  394. public String downloadExcel() throws YosException {
  395. ExcelFactory excelFactory = new ExcelFactory("项目商机导入模板");
  396. XSSFSheet sheet = excelFactory.getXssfWorkbook().createSheet("Sheet1");
  397. XSSFWorkbook xssfFWorkbook = excelFactory.getXssfWorkbook();
  398. // 设置工作薄列宽
  399. ProjectExcel.setBatchDetailSheetColumn1(sheet);
  400. XSSFCellStyle titleCellStyle1 = ExportExcel.createTitleCellStyle1(xssfFWorkbook);
  401. XSSFCellStyle titleCellStyle2 = ExportExcel.createTitleCellStyle2(xssfFWorkbook);
  402. XSSFCellStyle titleCellStyle3 = ExportExcel.createBodyCellStyle(xssfFWorkbook);
  403. // 写入标题
  404. ProjectExcel.batchDetail(sheet, titleCellStyle1, titleCellStyle2, titleCellStyle3, xssfFWorkbook);
  405. Rows aa = saveToExcelAttachment(excelFactory);
  406. String url = "";
  407. if (!aa.isEmpty()) {
  408. url = aa.get(0).getString("url");
  409. }
  410. return getSucReturnObject().setData(url).toString();
  411. }
  412. @API(title = "项目商机导入", apiversion = R.ID20221110152504.v1.class)
  413. @CACHEING_CLEAN(apiversions = {R.ID20221020143502.v1.class, R.ID20221018102003.v1.class})
  414. public String importExcel() throws YosException {
  415. ExcelFactory e;
  416. try {
  417. // 华为云
  418. e = getExcelAttachment(content.getLong("attachmentid"));
  419. // 本地
  420. //e = getPostExcelFactory();
  421. ArrayList<String> keys = new ArrayList<>();
  422. ArrayList<String> sqlList = new ArrayList<>();
  423. keys.add("projectname");
  424. keys.add("budgetary");
  425. keys.add("projecttype");
  426. keys.add("signdate_due");
  427. keys.add("scale");
  428. keys.add("signamount_due");
  429. keys.add("province");
  430. keys.add("city");
  431. keys.add("county");
  432. keys.add("address");
  433. Rows rows = e.getSheetRows(0, keys, 2);
  434. boolean iserr = false;
  435. Rows rowserr = new Rows();
  436. Rows rowssuc = new Rows();
  437. RowsMap stageRowsMap = dbConnect.runSqlQuery("select t1.sa_projstagemagid ,t1.stagename,t1.remarks,t1.sequence,t2.projecttype from sa_projstagemag t1 inner join sa_projstagemag_projecttype t2 on t1.siteid=t2.siteid and t1.sa_projstagemagid=t2.sa_projstagemagid where t1.siteid='" + siteid + "'").toRowsMap("projecttype");
  438. Rows task = dbConnect.runSqlQuery("select t1.onstage,t2.sa_projstagemagid,t3.projecttype from sa_projtaskmag t1 left join sa_projtaskmag_optionscore t2 on t1.siteid=t2.siteid and t1.sa_projtaskmagid=t2.sa_projtaskmagid left join sa_projstagemag_projecttype t3 on t2.siteid=t3.siteid and t2.sa_projstagemagid=t3.sa_projstagemagid where t1.siteid='" + siteid + "'");
  439. RowsMap onstageRowsMap = task.toRowsMap("onstage");
  440. RowsMap taskStageRowsMap = onstageRowsMap.get("1").toRowsMap("projecttype");
  441. for (Row row : rows) {
  442. StringBuffer err = new StringBuffer();
  443. if (StringUtils.isEmpty(row.getString("projectname"))) {
  444. iserr = true;
  445. err.append("错误信息:项目名称不能为空;");
  446. }
  447. if (StringUtils.isEmpty(row.getString("projecttype"))) {
  448. iserr = true;
  449. err.append("错误信息:项目类型不能为空;");
  450. } else {
  451. if (onstageRowsMap.get("0").isEmpty()) {
  452. if (!taskStageRowsMap.containsKey(row.getString("projecttype"))) {
  453. iserr = true;
  454. err.append("错误信息:该项目类型下没有项目任务,无法创建项目商机");
  455. }
  456. }
  457. }
  458. if (err.length() > 0) {
  459. row.put("msg", err);
  460. rowserr.add(row);
  461. } else {
  462. rowssuc.add(row);
  463. }
  464. }
  465. if (!rowssuc.isEmpty()) {
  466. for (Row row : rowssuc) {
  467. String tablename = "sa_project";
  468. Long sa_projectid = createTableID(tablename);
  469. //数据团队新增
  470. sqlList.addAll(DataTeam.createTeamSQL(this, tablename, sa_projectid, userid));
  471. sqlList.addAll(DataTeam.createTeamMemberSql(this, "sa_project", sa_projectid, userid));
  472. if (usertype == 1 || usertype == 0) {
  473. DataTag.createTag(this, tablename, sa_projectid, "直销");
  474. }
  475. sa_projectid = createTableID("sa_project");
  476. SQLFactory sqlFactoryupload = new SQLFactory(this, "项目商机新增");
  477. sqlFactoryupload.addParameter("siteid", siteid);
  478. sqlFactoryupload.addParameter("sa_projectid", sa_projectid);
  479. sqlFactoryupload.addParameter("departmentid", departmentid);
  480. sqlFactoryupload.addParameter("userid", userid);
  481. sqlFactoryupload.addParameter("username", username);
  482. sqlFactoryupload.addParameter("projectname", row.getString("projectname"));
  483. sqlFactoryupload.addParameter("projectnum", createBillCode("projectbill"));
  484. sqlFactoryupload.addParameter("grade", "null");
  485. sqlFactoryupload.addParameter("budgetary", row.getString("budgetary"));
  486. sqlFactoryupload.addParameter("remarks", "");
  487. sqlFactoryupload.addParameter("projecttype", row.getString("projecttype"));
  488. sqlFactoryupload.addParameter("signdate_due", row.getString("signdate_due"));
  489. sqlFactoryupload.addParameter("scale", "");
  490. sqlFactoryupload.addParameter("signamount_due", row.getBigDecimal("signamount_due"));
  491. sqlFactoryupload.addParameter("province", row.getString("province"));
  492. sqlFactoryupload.addParameter("city", row.getString("city"));
  493. sqlFactoryupload.addParameter("county", row.getString("county"));
  494. sqlFactoryupload.addParameter("address", row.getString("address"));
  495. sqlList.add(sqlFactoryupload.getSQL());
  496. DataContrlLog.createLog(this, "sa_project", sa_projectid, "新增", "项目商机导入:" + sa_projectid);
  497. //创建项目阶段
  498. Rows rows1 = stageRowsMap.get(row.getString("projecttype"));
  499. for (int i = 0; i < rows1.size(); i++) {
  500. Row row1 = rows1.getRow(i);
  501. sqlFactoryupload = new SQLFactory(this, "工程项目阶段信息新增");
  502. sqlFactoryupload.addParameter("siteid", siteid);
  503. sqlFactoryupload.addParameter("sa_project_stageid", createTableID("sa_project_stage"));
  504. sqlFactoryupload.addParameter("sa_projectid", sa_projectid);
  505. sqlFactoryupload.addParameter("sa_projstagemagid", row1.getLong("sa_projstagemagid"));
  506. sqlFactoryupload.addParameter("stagename", row1.getString("stagename"));
  507. sqlFactoryupload.addParameter("remarks", row1.getString("remarks"));
  508. sqlFactoryupload.addParameter("sequence", row1.getLong("sequence"));
  509. if (i == 0) {
  510. sqlFactoryupload.addParameter("active", 1);
  511. } else {
  512. sqlFactoryupload.addParameter("active", 0);
  513. }
  514. sqlList.add(sqlFactoryupload.getSQL());
  515. }
  516. }
  517. }
  518. if (iserr) {
  519. ExcelFactory excelFactory = new ExcelFactory("项目商机导入错误信息");
  520. ArrayList<String> colNameList = new ArrayList<String>();
  521. HashMap<String, Class> keytypemap = new HashMap<String, Class>();
  522. colNameList.add("projectname");
  523. colNameList.add("budgetary");
  524. colNameList.add("projecttype");
  525. colNameList.add("signdate_due");
  526. colNameList.add("scale");
  527. colNameList.add("signamount_due");
  528. colNameList.add("province");
  529. colNameList.add("city");
  530. colNameList.add("county");
  531. colNameList.add("address");
  532. colNameList.add("msg");
  533. keytypemap.put("projectname", String.class);
  534. keytypemap.put("budgetary", String.class);
  535. keytypemap.put("projecttype", String.class);
  536. keytypemap.put("signdate_due", String.class);
  537. keytypemap.put("scale", String.class);
  538. keytypemap.put("signamount_due", String.class);
  539. keytypemap.put("province", String.class);
  540. keytypemap.put("city", String.class);
  541. keytypemap.put("county", String.class);
  542. keytypemap.put("address", String.class);
  543. keytypemap.put("msg", String.class);
  544. rowserr.setFieldList(colNameList);
  545. rowserr.setFieldTypeMap(keytypemap);
  546. addSheet(excelFactory, "Sheet1", rowserr);
  547. Rows aa = saveToExcelAttachment(excelFactory);
  548. String url = "";
  549. if (!aa.isEmpty()) {
  550. url = aa.get(0).getString("url");
  551. }
  552. return getSucReturnObject().setData(url).toString();
  553. }
  554. if (!sqlList.isEmpty()) {
  555. dbConnect.runSqlUpdate(sqlList);
  556. }
  557. } catch (Exception e1) {
  558. e1.printStackTrace();
  559. return getErrReturnObject().setErrMsg(e1.getMessage()).toString();
  560. }
  561. return getSucReturnObject().toString();
  562. }
  563. public XSSFSheet addSheet(ExcelFactory excelFactory, String sheetname, Rows datarows) {
  564. ArrayList<String> keylist = datarows.getFieldList();
  565. XSSFSheet sheet = excelFactory.getXssfWorkbook().createSheet(sheetname);
  566. XSSFWorkbook xssfFWorkbook = excelFactory.getXssfWorkbook();
  567. XSSFCellStyle xssfCellStyle1 = xssfFWorkbook.createCellStyle();
  568. XSSFFont font = xssfFWorkbook.createFont();
  569. font.setColor((short) 0xa);
  570. font.setFontHeightInPoints((short) 12);
  571. font.setBold(true);
  572. xssfCellStyle1.setFont(font);
  573. ProjectExcel.setBatchDetailSheetColumn2(sheet);// 设置工作薄列宽
  574. XSSFCellStyle titleCellStyle1 = ExportExcel.createTitleCellStyle1(xssfFWorkbook);
  575. XSSFCellStyle titleCellStyle2 = ExportExcel.createTitleCellStyle2(xssfFWorkbook);
  576. ProjectExcel.batchDetailErr(sheet, titleCellStyle1, titleCellStyle2, xssfFWorkbook);// 写入标题
  577. for (int n = 0; n < datarows.size(); n++) {
  578. Row row = datarows.get(n);
  579. XSSFRow datarow = sheet.createRow(n + 2);
  580. for (int i1 = 0; i1 < keylist.size(); i1++) {
  581. Class fieldclazztype = datarows.getFieldMeta(keylist.get(i1)).getFieldtype();
  582. if (fieldclazztype == Integer.class) {
  583. datarow.createCell(i1).setCellValue(row.getInteger(keylist.get(i1)));
  584. } else if (fieldclazztype == Long.class) {
  585. datarow.createCell(i1).setCellValue(row.getLong(keylist.get(i1)));
  586. } else if (fieldclazztype == Float.class) {
  587. datarow.createCell(i1).setCellValue(row.getFloat(keylist.get(i1)));
  588. } else if (fieldclazztype == Double.class) {
  589. datarow.createCell(i1).setCellValue(row.getDouble(keylist.get(i1)));
  590. } else {
  591. datarow.createCell(i1).setCellValue(row.getString(keylist.get(i1)));
  592. }
  593. if (i1 == 10) {
  594. datarow.getCell(i1).setCellStyle(xssfCellStyle1);
  595. }
  596. }
  597. }
  598. return sheet;
  599. }
  600. @API(title = "解锁/锁定", apiversion = R.ID20221024094502.v1.class)
  601. @CACHEING_CLEAN(apiversions = {R.ID20221020143502.v1.class})
  602. public String isLocked() throws YosException {
  603. JSONArray sa_projectids = content.getJSONArray("sa_projectids");
  604. ArrayList<String> sqlList = new ArrayList<>();
  605. boolean locked = content.getBooleanValue("locked");
  606. SQLFactory sqlFactory = new SQLFactory(this, "项目商机锁定");
  607. sqlFactory.addParameter("siteid", siteid);
  608. sqlFactory.addParameter("locked", locked);
  609. sqlFactory.addParameter("userid", userid);
  610. sqlFactory.addParameter("username", username);
  611. sqlFactory.addParameter_in("sa_projectid", sa_projectids.toArray());
  612. sqlList.add(sqlFactory.getSQL());
  613. //操作记录
  614. for (Object obj : sa_projectids) {
  615. Long id = Long.valueOf(obj.toString());
  616. if (locked) {
  617. sqlList.add(DataContrlLog.createLog(this, "sa_project", id, "锁定", "项目商机锁定:" + id).getSQL());
  618. } else {
  619. sqlList.add(DataContrlLog.createLog(this, "sa_project", id, "解锁", "项目商机解锁:" + id).getSQL());
  620. }
  621. }
  622. dbConnect.runSqlUpdate(sqlList);
  623. return getSucReturnObject().toString();
  624. }
  625. @API(title = "查询竞争对手", apiversion = R.ID20221027165402.v1.class)
  626. public String selectCompete() throws YosException {
  627. Long sa_projectid = content.getLong("sa_projectid");
  628. StringBuffer where = new StringBuffer(" 1=1 ");
  629. if (content.containsKey("where")) {
  630. JSONObject whereObject = content.getJSONObject("where");
  631. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  632. where.append(" and(");
  633. where.append("t2.createby like'%").append(whereObject.getString("condition")).append("%' ");
  634. where.append("or t2.brandname like'%").append(whereObject.getString("condition")).append("%' ");
  635. where.append("or t1.advantage like'%").append(whereObject.getString("condition")).append("%' ");
  636. where.append("or t1.inferiority like'%").append(whereObject.getString("condition")).append("%' ");
  637. where.append("or t1.remarks like'%").append(whereObject.getString("condition")).append("%' ");
  638. where.append("or t3.enterprisename like'%").append(whereObject.getString("condition")).append("%' ");
  639. where.append(")");
  640. }
  641. }
  642. // SQLFactory sqlFactory = new SQLFactory(this, "竞争对手列表", pageSize, pageNumber, pageSorting);
  643. // sqlFactory.addParameter("siteid", siteid);
  644. // sqlFactory.addParameter_SQL("where", where);
  645. // sqlFactory.addParameter("sa_projectid", sa_projectid);
  646. // String sql = sqlFactory.getSQL();
  647. // Rows rows = dbConnect.runSqlQuery(sql);
  648. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_project_compete", "sa_competitorid", "sa_projectid",
  649. "advantage", "inferiority", "remarks", "important");
  650. querySQL.setTableAlias("t1");
  651. querySQL.addJoinTable(JOINTYPE.left, "sa_competitor", "t2", "t1.sa_competitorid = t2.sa_competitorid and t1.siteid = t2.siteid", "brandname", "createby", "createdate");
  652. querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t3", "t2.sys_enterpriseid = t3.sys_enterpriseid and t2.siteid = t3.siteid", "enterprisename", "industry", "sys_enterpriseid");
  653. querySQL.setSiteid(siteid);
  654. querySQL.setWhere("t1.deleted = 0");
  655. querySQL.setWhere("t1.sa_projectid", sa_projectid);
  656. querySQL.setWhere(where.toString());
  657. querySQL.setPage(pageSize, pageNumber);
  658. Rows rows = querySQL.query();
  659. return getSucReturnObject().setData(rows).toString();
  660. }
  661. @API(title = "报备审核", apiversion = R.ID20221114163402.v1.class)
  662. @CACHEING_CLEAN(apiversions = {R.ID20220929085401.v1.class})
  663. public String addTag() throws YosException {
  664. Long sa_projectid = content.getLong("sa_projectid");
  665. Long type = content.getLong("type");
  666. String projectnum = "";
  667. Rows rows = dbConnect.runSqlQuery("SELECT projectnum from sa_project WHERE sa_projectid = " + sa_projectid + " and siteid='" + siteid + "'");
  668. if (rows.isNotEmpty()) {
  669. projectnum = rows.get(0).getString("projectnum");
  670. }
  671. ArrayList<String> sqlList = new ArrayList<>();
  672. switch (type.toString()) {
  673. case "1":
  674. //提交报备
  675. if (dbConnect.runSqlQuery("SELECT * from sys_datatag WHERE tag in ('报备中','已报备') and ownerid = " + sa_projectid + " and siteid = '" + siteid + "' and ownertable ='sa_project'").isNotEmpty()) {
  676. return getErrReturnObject().setErrMsg("当前状态无法提交报备").toString();
  677. }
  678. DataTag.createTag(this, "sa_project", sa_projectid, "报备中");
  679. sqlList.add("UPDATE sa_project SET reportby='" + username + "',reportdate=CURRENT_TIME WHERE sa_projectid = " + sa_projectid + " and siteid='" + siteid + "'");
  680. //操作记录
  681. sqlList.add(DataContrlLog.createLog(this, "sa_project", sa_projectid, "提交报备", "提交报备项目商机" + projectnum).getSQL());
  682. break;
  683. case "2":
  684. //报备审核
  685. if (dbConnect.runSqlQuery("SELECT * from sys_datatag WHERE tag in ('报备中') and ownerid = " + sa_projectid + " and siteid = '" + siteid + "' and ownertable ='sa_project'").isNotEmpty()) {
  686. dbConnect.runSqlUpdate("UPDATE sys_datatag SET tag='已报备' WHERE tag in ('报备中') and ownerid = " + sa_projectid + " and siteid = '" + siteid + "' and ownertable ='sa_project'");
  687. sqlList.add("UPDATE sa_project SET reportcheckby='" + username + "',reportcheckdate=CURRENT_TIME WHERE sa_projectid = " + sa_projectid + " and siteid='" + siteid + "'");
  688. //操作记录
  689. sqlList.add(DataContrlLog.createLog(this, "sa_project", sa_projectid, "报备审核", "报备审核项目商机" + projectnum).getSQL());
  690. } else {
  691. return getErrReturnObject().setErrMsg("当前状态无法报备审核").toString();
  692. }
  693. break;
  694. case "3":
  695. //取消审核
  696. if (dbConnect.runSqlQuery("SELECT * from sys_datatag WHERE tag in ('已报备','报备中') and ownerid = " + sa_projectid + " and siteid = '" + siteid + "' and ownertable ='sa_project'").isNotEmpty()) {
  697. sqlList.add("delete from sys_datatag WHERE tag in ('已报备','报备中') and ownerid = " + sa_projectid + " and siteid = '" + siteid + "' and ownertable ='sa_project'");
  698. sqlList.add("UPDATE sa_project SET reportby=null,reportdate=null,reportcheckby=null,reportcheckdate=null WHERE sa_projectid = " + sa_projectid + " and siteid='" + siteid + "'");
  699. //操作记录
  700. sqlList.add(DataContrlLog.createLog(this, "sa_project", sa_projectid, "报备驳回(退回)", "报备驳回(退回)项目商机" + projectnum).getSQL());
  701. } else {
  702. return getErrReturnObject().setErrMsg("当前状态无法取消审核").toString();
  703. }
  704. break;
  705. default:
  706. break;
  707. }
  708. dbConnect.runSqlUpdate(sqlList);
  709. return getSucReturnObject().toString();
  710. }
  711. @API(title = "获取所有阶段名称", apiversion = R.ID20221116104502.v1.class)
  712. public String getStageName() throws YosException {
  713. Rows rows = dbConnect.runSqlQuery("SELECT DISTINCT stagename from sa_project_stage WHERE siteid ='" + siteid + "'");
  714. return getSucReturnObject().setData(rows).toString();
  715. }
  716. @API(title = "结束:在跟进中状态下,操作【结束】功能,项目状态变更为:已失败", apiversion = R.ID20221215163702.v1.class)
  717. @CACHEING_CLEAN(apiversions = {R.ID20221020143502.class})
  718. public String endProject() throws YosException {
  719. Long sa_projectid = content.getLong("sa_projectid");
  720. String sql = "SELECT `status`,projectnum from sa_project WHERE sa_projectid = " + sa_projectid + " and siteid = '" + siteid + "'";
  721. Rows rows = dbConnect.runSqlQuery(sql);
  722. if (rows.isEmpty()) {
  723. return getErrReturnObject().setErrMsg("项目不存在").toString();
  724. }
  725. String projectnum = "";
  726. if (rows.isNotEmpty()) {
  727. if (!rows.get(0).getString("status").equals("跟进中")) {
  728. return getErrReturnObject().setErrMsg("只有【跟进中】项目才能结束").toString();
  729. }
  730. projectnum = rows.get(0).getString("projectnum");
  731. }
  732. ArrayList<String> sqlList = new ArrayList<>();
  733. sql = "UPDATE sa_project SET status='已失败' WHERE sa_projectid = " + sa_projectid + " and siteid = '" + siteid + "'";
  734. sqlList.add(sql);
  735. //操作记录
  736. sqlList.add(DataContrlLog.createLog(this, "sa_project", sa_projectid, "结束", "结束项目商机" + projectnum).getSQL());
  737. dbConnect.runSqlUpdate(sqlList);
  738. return getSucReturnObject().toString();
  739. }
  740. @API(title = "恢复:在已失败状态下,操作【恢复】功能,项目状态变更为:跟进中", apiversion = R.ID20221215164002.v1.class)
  741. @CACHEING_CLEAN(apiversions = {R.ID20221020143502.class})
  742. public String recoveryProject() throws YosException {
  743. Long sa_projectid = content.getLong("sa_projectid");
  744. String sql = "SELECT `status`,projectnum from sa_project WHERE sa_projectid = " + sa_projectid + " and siteid = '" + siteid + "'";
  745. Rows rows = dbConnect.runSqlQuery(sql);
  746. if (rows.isEmpty()) {
  747. return getErrReturnObject().setErrMsg("项目不存在").toString();
  748. }
  749. String projectnum = "";
  750. if (rows.isNotEmpty()) {
  751. if (!rows.get(0).getString("status").equals("已失败")) {
  752. return getErrReturnObject().setErrMsg("只有【已失败】项目才能恢复").toString();
  753. }
  754. projectnum = rows.get(0).getString("projectnum");
  755. }
  756. ArrayList<String> sqlList = new ArrayList<>();
  757. sql = "UPDATE sa_project SET status='跟进中' WHERE sa_projectid = " + sa_projectid + " and siteid = '" + siteid + "'";
  758. sqlList.add(sql);
  759. //操作记录
  760. sqlList.add(DataContrlLog.createLog(this, "sa_project", sa_projectid, "恢复", "恢复项目商机" + projectnum).getSQL());
  761. dbConnect.runSqlUpdate(sqlList);
  762. return getSucReturnObject().toString();
  763. }
  764. }