index.go 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. package services
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "github.com/xuri/excelize/v2"
  6. "hongze/mysteel_watch/global"
  7. "hongze/mysteel_watch/models/index"
  8. "hongze/mysteel_watch/services/alarm_msg"
  9. "hongze/mysteel_watch/utils"
  10. "os"
  11. "strconv"
  12. "strings"
  13. "time"
  14. )
  15. func IndexCreateCheck() (err error) {
  16. fmt.Println("IndexCreateCheck")
  17. indexObj := new(index.BaseFromMysteelChemicalIndex)
  18. list, err := indexObj.GetIndexCreate()
  19. if err != nil {
  20. return
  21. }
  22. fmt.Println("listLen:", len(list))
  23. if len(list) <= 0 {
  24. return nil
  25. }
  26. var indexCode []string
  27. for _, v := range list {
  28. indexCode = append(indexCode, v.IndexCode)
  29. }
  30. indexCodeStr := strings.Join(indexCode, ";")
  31. fmt.Println("indexCodeStr:" + indexCodeStr)
  32. go alarm_msg.SendAlarmMsg(utils.APPNAME+" 存在指标数据未生成:"+indexCodeStr, 3)
  33. for _, v := range list {
  34. //err := IndexCreate(v)
  35. //if err != nil {
  36. // go alarm_msg.SendAlarmMsg(utils.APPNAME+" 指标数据未生成检测失败:"+err.Error(), 3)
  37. //}
  38. MysteelChemicalRefresh(v.FilePath)
  39. }
  40. return nil
  41. }
  42. func IndexCreate(item *index.BaseFromMysteelChemicalIndex) (err error) {
  43. item.UpdateWeek = utils.GetUpdateWeekEn(item.UpdateWeek)
  44. global.LOG.Info("task IndexCreate:" + time.Now().Format(utils.FormatDateTime))
  45. if utils.FileIsExist(item.FilePath) {
  46. os.Remove(item.FilePath)
  47. }
  48. runMode := "release"
  49. //fileName := req.IndexName + "_" + req.IndexCode + ".xlsx"
  50. var fileName string
  51. if item.UpdateWeek != "" {
  52. fileName = item.IndexCode + "_" + item.UpdateWeek + "_" + runMode + ".xlsx" //保存的文件名称
  53. } else {
  54. fileName = item.IndexCode + "_" + runMode + ".xlsx" //保存的文件名称
  55. }
  56. filePath := utils.IndexSaveDir + fileName
  57. templatePath := utils.IndexSaveDir + "index_template.xlsx"
  58. templateFile, err := excelize.OpenFile(templatePath)
  59. if err != nil {
  60. return
  61. }
  62. defer func() {
  63. templateFile.Close()
  64. }()
  65. startDate := "1990-01-01"
  66. commentStr := `"BlankValue":"0","CanMark":true,"ChartLineType":"0","DateBlock":0,"DateBlockCount":1,"DateFormat":0,"DateTimeTag":"","EndDate":"","ExportType":0,"HasDescription":true,"HasEmptyRows":false,"HasFrequency":true,"HasIndexID":true,"HasLastDate":true,"HasSourceName":true,"HasTimeInterval":true,"HasUnit":true,"HasUpdateDate":true,"IsCreateChart":false,"IsDataSort":true,"IsNewSheet":false,"IsNewWorkbook":false,"Models":[{"DataFormat":0,"DataStartDate":"` + startDate + `","DefineName":"","DefineUnit":"","DisplayIndexCode":"` + item.IndexCode + `","IndexCode":"` + item.IndexCode + `","IndexFormula":"` + item.IndexCode + `","PointValue":0,"UnionStart":""}],"Position":"A1","RangeData":"A2:B280","ShowBlankLines":false,"StartDate":"","Transpose":false,"UpdateMode":0,"lookModel":{"IsLast":false,"LookValue":0,"lookType":0},"ver":3}
  67. `
  68. commentMap := make(map[string]interface{})
  69. commentMap["author"] = "{"
  70. commentMap["text"] = commentStr
  71. //commentMap["text"] = commentItem
  72. commentJson, err := json.Marshal(commentMap)
  73. if err != nil {
  74. fmt.Println("json.Marshal err:" + err.Error())
  75. return err
  76. }
  77. fmt.Println("commentJson")
  78. fmt.Println(string(commentJson))
  79. templateFile.DeleteComment("Sheet1", "A1")
  80. templateFile.AddComment("Sheet1", "A1", string(commentJson))
  81. if err := templateFile.SaveAs(filePath); err != nil {
  82. fmt.Println(err)
  83. return err
  84. }
  85. time.Sleep(1 * time.Minute)
  86. return
  87. }
  88. func IndexRefreshAll() {
  89. fmt.Println("IndexCreateCheck")
  90. indexObj := new(index.BaseFromMysteelChemicalIndex)
  91. list, err := indexObj.GetIndexRefreshAll()
  92. if err != nil {
  93. fmt.Println("GetIndexRefreshAll Err:" + err.Error())
  94. return
  95. }
  96. fmt.Println("listLen:", len(list))
  97. if len(list) <= 0 {
  98. return
  99. }
  100. nowDate := time.Now().Format(utils.FormatDate)
  101. monthLastDay := utils.GetNowMonthLastDay()
  102. monthLastDayStr := monthLastDay.Format(utils.FormatDate)
  103. nowWeek := time.Now().Weekday().String()
  104. nowWeekZn := utils.GetWeekZn(nowWeek)
  105. yearLast := strconv.Itoa(time.Now().Year()) + "12-31"
  106. for _, v := range list {
  107. if v.Frequency == "周度" && v.UpdateWeek == nowWeekZn && v.UpdateTime == "" && v.UpdateTime2 == "" {
  108. MysteelChemicalRefresh(v.FilePath)
  109. } else if (v.Frequency == "月度" || v.Frequency == "旬度") && nowDate == monthLastDayStr {
  110. MysteelChemicalRefresh(v.FilePath)
  111. } else if v.Frequency == "年度" && nowDate == yearLast {
  112. MysteelChemicalRefresh(v.FilePath)
  113. } else {
  114. MysteelChemicalRefresh(v.FilePath)
  115. }
  116. }
  117. return
  118. }
  119. func IndexRefreshWeek() {
  120. nowWeek := time.Now().Weekday().String()
  121. nowWeekZn := utils.GetWeekZn(nowWeek)
  122. indexObj := new(index.BaseFromMysteelChemicalIndex)
  123. list, err := indexObj.GetIndexRefreshWeek(nowWeek)
  124. if err != nil {
  125. fmt.Println("GetIndexRefreshWeek Err:" + err.Error())
  126. return
  127. }
  128. fmt.Println("listLen:", len(list))
  129. if len(list) <= 0 {
  130. return
  131. }
  132. nowDate := time.Now().Format(utils.FormatDate)
  133. monthLastDay := utils.GetNowMonthLastDay()
  134. monthLastDayStr := monthLastDay.Format(utils.FormatDate)
  135. yearLast := strconv.Itoa(time.Now().Year()) + "12-31"
  136. for _, v := range list {
  137. if v.Frequency == "周度" && v.UpdateWeek == nowWeekZn && v.UpdateTime == "" && v.UpdateTime2 == "" {
  138. MysteelChemicalRefresh(v.FilePath)
  139. } else if (v.Frequency == "月度" || v.Frequency == "旬度") && nowDate == monthLastDayStr {
  140. MysteelChemicalRefresh(v.FilePath)
  141. } else if v.Frequency == "年度" && nowDate == yearLast {
  142. MysteelChemicalRefresh(v.FilePath)
  143. } else {
  144. MysteelChemicalRefresh(v.FilePath)
  145. }
  146. }
  147. return
  148. }