edb_info_notice.go 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. package data
  2. import (
  3. "errors"
  4. "eta_gn/eta_task/models/data_manage"
  5. "eta_gn/eta_task/utils"
  6. "fmt"
  7. "time"
  8. )
  9. func RefreshNotice() (err error) {
  10. defer func() {
  11. if err != nil {
  12. fmt.Println("RefreshNotice Err:" + err.Error())
  13. go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshNotice ErrMsg:"+err.Error(), utils.EmailSendToUsers)
  14. }
  15. }()
  16. var condition string
  17. var pars []interface{}
  18. endDate := time.Now().AddDate(0, -6, 0)
  19. condition += ` AND end_date > ? `
  20. pars = append(pars, endDate)
  21. items, err := data_manage.GetEdbInfoByCondition(condition, pars, 1)
  22. if err != nil {
  23. return errors.New("GetEdbInfoByCondition:" + err.Error())
  24. }
  25. dayDiv := `<div style="margin-bottom: 20px;min-width: 1000px;overflow-x: scroll;">
  26. <div>日度指标,超过3天未更新:</div>`
  27. dayTable := `<table border="1" style="border-collapse: collapse;">
  28. <thead>
  29. <tr>
  30. <td>指标编码</td>
  31. <td>指标名称</td>
  32. <td>指标来源</td>
  33. <td>频度</td>
  34. <td>指标数据最后日期</td>
  35. <td>指标数据更新日期</td>
  36. <td>依赖指标</td>
  37. </tr>
  38. </thead>`
  39. dayTableBody := `<tbody>`
  40. weekDiv := `<div style="margin-bottom: 20px;min-width: 1000px;overflow-x: scroll;"><div>周度指标,超过7天未更新:</div>`
  41. weekTable := `<table border="1" style="border-collapse: collapse;">
  42. <thead>
  43. <tr>
  44. <td>指标编码</td>
  45. <td>指标名称</td>
  46. <td>指标来源</td>
  47. <td>频度</td>
  48. <td>指标数据最后日期</td>
  49. <td>指标数据更新日期</td>
  50. <td>依赖指标</td>
  51. </tr>
  52. </thead>`
  53. weekTableBody := `<tbody>`
  54. monthDiv := `<div style="margin-bottom: 20px;min-width: 1000px;overflow-x: scroll;"><div>月度指标,超过一个月未更新:</div>`
  55. monthTable := `<table border="1" style="border-collapse: collapse;">
  56. <thead>
  57. <tr>
  58. <td>指标编码</td>
  59. <td>指标名称</td>
  60. <td>指标来源</td>
  61. <td>频度</td>
  62. <td>指标数据最后日期</td>
  63. <td>指标数据更新日期</td>
  64. <td>依赖指标</td>
  65. </tr>
  66. </thead>`
  67. monthTableBody := `<tbody>`
  68. allDiv := `<hr style="color: red">`
  69. allDiv = `<div style="margin-bottom: 20px;min-width: 1000px;overflow-x: scroll;"><div>当前所有指标,按数据日期升序排列:</div>`
  70. allTable := `<table border="1" style="border-collapse: collapse;">
  71. <thead>
  72. <tr>
  73. <td>指标编码</td>
  74. <td>指标名称</td>
  75. <td>指标来源</td>
  76. <td>频度</td>
  77. <td>指标数据最后日期</td>
  78. <td>指标数据更新日期</td>
  79. </tr>
  80. </thead>`
  81. allTableBody := `<tbody>`
  82. dayDate := time.Now().AddDate(0, 0, -3)
  83. weekDate := time.Now().AddDate(0, 0, -7)
  84. monthDate := time.Now().AddDate(0, -1, 0)
  85. for _, v := range items {
  86. if v.Frequency == "日度" && v.EndDate.Before(dayDate) {
  87. dayTableBody += getTableTr(v, 1)
  88. }
  89. if v.Frequency == "周度" && v.EndDate.Before(weekDate) {
  90. weekTableBody += getTableTr(v, 2)
  91. }
  92. if v.Frequency == "月度" && v.EndDate.Before(monthDate) {
  93. monthTableBody += getTableTr(v, 3)
  94. }
  95. allTableBody += getTableTr(v, 4)
  96. }
  97. dayTable += dayTableBody
  98. dayTable += ` </tbody></table></div>`
  99. noticeSendBody := dayDiv + dayTable
  100. noticeSendBody += `<br/>`
  101. weekTable += weekTableBody
  102. weekTable += ` </tbody></table></div>`
  103. noticeSendBody += weekDiv + weekTable
  104. noticeSendBody += `<br/>`
  105. monthTable += monthTableBody
  106. monthTable += ` </tbody></table></div>`
  107. noticeSendBody += monthDiv + monthTable
  108. noticeSendBody += `<br/>`
  109. allTable += allTableBody
  110. allTable += ` </tbody></table></div>`
  111. noticeSendBody += allDiv + allTable
  112. go utils.SendEmailByHongze("指标更新情况通知", noticeSendBody, utils.RefreshEdbInfoEmailSendToUsers, "", "")
  113. return
  114. }
  115. func getTableTr(item *data_manage.EdbInfoList, tableType int) string {
  116. if item != nil {
  117. trHtml := ` <tr>
  118. <td>` + item.EdbCode + `</td>
  119. <td>` + item.EdbName + `</td>
  120. <td>` + item.SourceName + `</td>
  121. <td>` + item.Frequency + `</td>
  122. <td>` + item.EndDate.Format(utils.FormatDate) + `</td>
  123. <td>` + item.ModifyTime + `</td>`
  124. if item.Source == utils.DATA_SOURCE_CALCULATE ||
  125. item.Source == utils.DATA_SOURCE_CALCULATE_LJZZY ||
  126. item.Source == utils.DATA_SOURCE_CALCULATE_TBZ ||
  127. item.Source == utils.DATA_SOURCE_CALCULATE_TCZ ||
  128. item.Source == utils.DATA_SOURCE_CALCULATE_NSZYDPJJS {
  129. if tableType != 4 {
  130. mapList, _ := data_manage.GetEdbInfoCalculateMap(item.EdbInfoId, item.Source)
  131. mapStr := ""
  132. for _, v := range mapList {
  133. mapStr += "<p>指标编码:" + v.FromEdbCode + " 来源:" + v.FromSourceName + " 更新日期:" + v.EndDate + "</p>"
  134. }
  135. trHtml += `<td>` + mapStr + `</td>`
  136. }
  137. } else {
  138. if tableType != 4 {
  139. trHtml += `<td></td>`
  140. }
  141. }
  142. trHtml += `</tr>`
  143. return trHtml
  144. } else {
  145. return ""
  146. }
  147. }