OrderClueRemindService.java 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. package service;
  2. import beans.remind.Remind;
  3. import beans.user.User;
  4. import com.alibaba.fastjson.JSONObject;
  5. import common.Controller;
  6. import common.ServiceController;
  7. import common.YosException;
  8. import common.data.Row;
  9. import common.data.Rows;
  10. import common.data.RowsMap;
  11. import utility.email.EmailContent;
  12. import java.util.ArrayList;
  13. /**
  14. * 线索池消息提醒
  15. */
  16. public class OrderClueRemindService extends ServiceController {
  17. @Override
  18. public void serviceRun() throws YosException {
  19. RowsMap rowsMap = getCfgRowsMap();
  20. ArrayList<String> siteiList = getSiteids();
  21. for (String siteid : siteiList) {
  22. Row cfgRow;
  23. try {
  24. cfgRow = rowsMap.get(siteid).get(0);
  25. } catch (Exception e) {
  26. e.printStackTrace();
  27. cfgRow = new Row();
  28. }
  29. if (cfgRow != null) {
  30. int cluelife = cfgRow.getInteger("cluelife");
  31. int linklife = cfgRow.getInteger("linklife");
  32. //线索撤回
  33. selectfollowRows(linklife, siteid);
  34. //3天到期提醒
  35. selectRows3(siteid);
  36. //到期提醒
  37. selectRowsExpire(cluelife, siteid);
  38. }
  39. }
  40. }
  41. public RowsMap getCfgRowsMap() throws YosException {
  42. return dbConnect.runSqlQuery("SELECT cluelife,linklife,siteid FROM sat_ordercluerule").toRowsMap("siteid");
  43. }
  44. public ArrayList<String> getSiteids() throws YosException {
  45. return dbConnect.runSqlQuery("SELECT siteid FROM sys_site WHERE siteid !='GEN'").toArrayList("siteid");
  46. }
  47. /**
  48. * 线索撤回
  49. *
  50. * @param linklife
  51. * @throws YosException
  52. */
  53. public void selectfollowRows(int linklife, String siteid) throws YosException {
  54. Rows rows = dbConnect.runSqlQuery("SELECT * FROM sat_orderclue WHERE status='待跟进' AND DATE_SUB(CURRENT_TIME,interval " + linklife + " day) >= changedate AND siteid = '" + siteid + "'");
  55. ArrayList<String> sqlList = new ArrayList<>();
  56. for (Row row : rows) {
  57. Long id = row.getLong("sat_orderclueid");
  58. sqlList.add("UPDATE sat_orderclue SET status='待分配' WHERE sat_orderclueid = '" + id + "'");
  59. sqlList.add("UPDATE sat_orderclue_auth SET isused = 0 WHERE sat_orderclueid = '" + id + "' AND isused");
  60. }
  61. dbConnect.runSqlUpdate(sqlList);
  62. }
  63. /**
  64. * 线索3天到期
  65. *
  66. * @throws YosException
  67. */
  68. public void selectRows3(String siteid) throws YosException {
  69. Rows rows = dbConnect.runSqlQuery("SELECT * FROM sat_orderclue WHERE UNIX_TIMESTAMP(CURRENT_TIME)-UNIX_TIMESTAMP(changedate) >= 86400 * 3 AND status='待分配' AND UNIX_TIMESTAMP(CURRENT_TIME)-UNIX_TIMESTAMP(changedate) <= ( 86400 * 3 +1000) AND siteid = '" + siteid + "'");
  70. ArrayList<Long> tempIdList = new ArrayList<>();
  71. for (Row row : rows) {
  72. Long id = row.getLong("sat_orderclueid");
  73. Long tempUserid = getUserId(id, siteid);
  74. Remind remind = new Remind(siteid);
  75. remind.setType("应用");
  76. remind.setTitle("线索通知");
  77. remind.setContent("请注意,您有线索还有三天有效时间,请尽快跟进!");
  78. remind.setTouserid(tempUserid);
  79. remind.setObjectname("sat_orderclue");
  80. remind.setObjectid(id);
  81. remind.sendByDialogMsg().createSys_message();
  82. remind.setToemail(tempUserid);
  83. remind.sendByMail();
  84. }
  85. }
  86. /**
  87. * 线索到期
  88. *
  89. * @throws YosException
  90. */
  91. public void selectRowsExpire(int cluelife, String siteid) throws YosException {
  92. Rows rows = dbConnect.runSqlQuery("SELECT * FROM sat_orderclue WHERE status='待分配' AND DATE_SUB(CURRENT_TIME,interval " + cluelife + " day) >= changedate AND siteid = '" + siteid + "'");
  93. ArrayList<String> sqlList = new ArrayList<>();
  94. for (Row row : rows) {
  95. Long id = row.getLong("sat_orderclueid");
  96. sqlList.add("UPDATE sat_orderclue SET status='已过期' WHERE sat_orderclueid = '" + id + "'");
  97. }
  98. dbConnect.runSqlUpdate(sqlList);
  99. for (Row row : rows) {
  100. Long id = row.getLong("sat_orderclueid");
  101. Long tempUserid = getUserId(id, siteid);
  102. Remind remind = new Remind(siteid);
  103. remind.setType("应用");
  104. remind.setTitle("线索通知");
  105. remind.setContent("您有线索到期失效,请查看!");
  106. remind.setTouserid(tempUserid);
  107. remind.setObjectname("sat_orderclue");
  108. remind.setObjectid(id);
  109. remind.sendByDialogMsg().createSys_message();
  110. remind.setToemail(tempUserid);
  111. remind.sendByMail();
  112. }
  113. }
  114. public Long getUserId(Long id, String siteid) throws YosException {
  115. Long tempUserid = 0L;
  116. Rows useridRows = dbConnect.runSqlQuery("SELECT userid FROM sys_enterprise_hr WHERE sys_enterprise_hrid IN(SELECT hrid FROM sat_orderclue_auth WHERE sat_orderclueid = " + id + " and isused AND siteid='" + siteid + "')");
  117. if (useridRows.isNotEmpty()) {
  118. tempUserid = useridRows.get(0).getLong("userid");
  119. }
  120. return tempUserid == 0 ? -1 : tempUserid;
  121. }
  122. }