TSSysbugMailSender.java 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. /**
  2. *
  3. */
  4. package cn.com.lzt.sysbug.entity;
  5. import java.text.SimpleDateFormat;
  6. import org.jeecgframework.core.util.ApplicationContextUtil;
  7. import org.jeecgframework.core.util.SendMailUtil;
  8. import org.jeecgframework.web.system.pojo.base.TSType;
  9. import org.jeecgframework.web.system.pojo.base.TSUser;
  10. import org.jeecgframework.web.system.service.SystemService;
  11. import org.springframework.util.StringUtils;
  12. /**
  13. * @author xzx
  14. *
  15. * 2019年4月6日
  16. *
  17. */
  18. public class TSSysbugMailSender extends Thread{
  19. TSSysbugEntity bugEntity;
  20. SystemService sysService;
  21. String emailUserId;
  22. private String emailTitle;
  23. public TSSysbugMailSender(TSSysbugEntity bugEntity,String emailUserId, String title) {
  24. this.bugEntity = bugEntity;
  25. this.emailUserId = emailUserId;
  26. this.emailTitle = title;
  27. }
  28. @Override
  29. public void run() {
  30. if(sysService == null) {
  31. sysService = ApplicationContextUtil.getContext().getBean(SystemService.class);
  32. }
  33. TSUser user = sysService.get(TSUser.class, emailUserId);
  34. if(user != null && user.getEmail()!=null && user.getEmail().length()>0) {
  35. String email = user.getEmail();
  36. String title = "Bug系统通知";
  37. if(this.emailTitle != null) {
  38. title = emailTitle;
  39. }
  40. SendMailUtil.sendCommonMail(email, title, getHtml(bugEntity));
  41. }
  42. }
  43. public String getHtml(TSSysbugEntity bugEntity) {
  44. StringBuffer sb = new StringBuffer();
  45. sb.append("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\r\n" +
  46. "<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n" +
  47. " <head>\r\n" +
  48. " <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\r\n" +
  49. " <title></title>\r\n" +
  50. " <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"/>\r\n" +
  51. " </head>\r\n" +
  52. " <body style=\"margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px; padding-top:0px;padding-bottom:0px;padding-left:0px;padding-right:0px;\">\r\n" +
  53. " <table align=\"left\" border=\"1\" cellpadding=\"0\" cellspacing=\"0\" width=\"600\" style=\"border-collapse: collapse;font-size:0px\">\r\n" );
  54. sb.append(getTbElements("缺陷ID", bugEntity.getId(),false));
  55. sb.append(getTbElements("缺陷类型", getDicText("bug_type", bugEntity.getBugType()),false));
  56. sb.append(getTbElements("紧急程度", getDicText("bug_level",bugEntity.getBugLevel()),false));
  57. sb.append(getTbElements("当前状态", getDicText("bug_status",bugEntity.getStatus()),false));
  58. if(!StringUtils.isEmpty(bugEntity.getReporter())) {
  59. sb.append(getTbElements("提交人", getUserName(bugEntity.getReporter()),false));
  60. }
  61. if(!StringUtils.isEmpty(bugEntity.getProducter())) {
  62. sb.append(getTbElements("产品负责人", getUserName(bugEntity.getProducter()),false));
  63. }
  64. if(!StringUtils.isEmpty(bugEntity.getCoder())) {
  65. sb.append(getTbElements("开发负责人", getUserName(bugEntity.getCoder()),false));
  66. }
  67. if(!StringUtils.isEmpty(bugEntity.getTester())) {
  68. sb.append(getTbElements("测试负责人", getUserName(bugEntity.getTester()),false));
  69. }
  70. if(!StringUtils.isEmpty(bugEntity.getLoginPerson1())) {
  71. sb.append(getTbElements("登陆账号", getUserName(bugEntity.getLoginPerson1()),false));
  72. }
  73. if(!StringUtils.isEmpty(bugEntity.getBugPerson1())) {
  74. sb.append(getTbElements("涉及的员工",getUserName(bugEntity.getBugPerson1()),false));
  75. sb.append(getTbElements("涉及的员工ID", bugEntity.getBugPerson1(),false));
  76. }
  77. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  78. if(!StringUtils.isEmpty(bugEntity.getEndTime())) {
  79. sb.append(getTbElements("解决时间", sdf.format(bugEntity.getEndTime()),false));
  80. }
  81. sb.append(getTbElements("问题描述", bugEntity.getDescription(),true));
  82. sb.append(" </table>\r\n" +
  83. "</body>\r\n" +
  84. "</html>");
  85. return sb.toString();
  86. }
  87. /**
  88. * @param status
  89. * @return
  90. */
  91. private String getDicText(String dicGroupcode, String typecode) {
  92. String text = "";
  93. TSType type = sysService.getType(typecode, dicGroupcode);
  94. if(type != null) {
  95. text = type.getTypename();
  96. }
  97. return text;
  98. }
  99. /**
  100. * @param producter
  101. * @return
  102. */
  103. private String getUserName(String id) {
  104. if(id != null) {
  105. TSUser user = sysService.get(TSUser.class, id);
  106. if(user!= null) {
  107. return user.getRealName();
  108. }
  109. }
  110. return null;
  111. }
  112. /**
  113. * @param bugLevel
  114. * @return
  115. */
  116. private static String getTbElements(String label, String bugel, boolean isMultiText) {
  117. String trtdstart = "<tr><td style=\"word-wrap:break-word;word-break:break-all;font-size:14px\" width=\"150px\">";
  118. StringBuffer sb = new StringBuffer();
  119. sb.append(trtdstart);
  120. sb.append(label).append("</td>");
  121. if(isMultiText) {
  122. sb.append("<td colspan=\"3\" style=\"word-wrap:break-word;word-break:break-all;font-size:14px\" width=\"400px\";>\r\n" +
  123. "<textarea rows=\"6\" cols=\"60\" wrap=\"hard\">");
  124. sb.append(bugel).append("</textarea>").append("</td>");
  125. }else {
  126. sb.append("<td colspan=\"3\" style=\"word-wrap:break-word;word-break:break-all;font-size:14px\" width=\"400px\";>\r\n");
  127. sb.append(bugel).append("</td>");
  128. }
  129. sb.append("</tr>");
  130. return sb.toString();
  131. }
  132. }