index.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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. "strings"
  12. "time"
  13. )
  14. func IndexCreateCheck() (err error) {
  15. fmt.Println("IndexCreateCheck")
  16. indexObj := new(index.BaseFromMysteelChemicalIndex)
  17. list, err := indexObj.GetIndexCreate()
  18. if err != nil {
  19. return
  20. }
  21. fmt.Println("listLen:", len(list))
  22. if len(list) <= 0 {
  23. return nil
  24. }
  25. var indexCode []string
  26. for _, v := range list {
  27. indexCode = append(indexCode, v.IndexCode)
  28. }
  29. indexCodeStr := strings.Join(indexCode, ";")
  30. fmt.Println("indexCodeStr:" + indexCodeStr)
  31. go alarm_msg.SendAlarmMsg(utils.APPNAME+" 存在指标数据未生成:"+indexCodeStr, 3)
  32. for _, v := range list {
  33. err := IndexCreate(v)
  34. if err != nil {
  35. go alarm_msg.SendAlarmMsg(utils.APPNAME+" 指标数据未生成检测失败:"+err.Error(), 3)
  36. }
  37. }
  38. return nil
  39. }
  40. func IndexCreate(item *index.BaseFromMysteelChemicalIndex) (err error) {
  41. item.UpdateWeek = utils.GetUpdateWeekEn(item.UpdateWeek)
  42. global.LOG.Info("task IndexCreate:" + time.Now().Format(utils.FormatDateTime))
  43. if utils.FileIsExist(item.FilePath) {
  44. os.Remove(item.FilePath)
  45. }
  46. runMode := "release"
  47. //fileName := req.IndexName + "_" + req.IndexCode + ".xlsx"
  48. var fileName string
  49. if item.UpdateWeek != "" {
  50. fileName = item.IndexCode + "_" + item.UpdateWeek + "_" + runMode + ".xlsx" //保存的文件名称
  51. } else {
  52. fileName = item.IndexCode + "_" + runMode + ".xlsx" //保存的文件名称
  53. }
  54. filePath := utils.IndexSaveDir + fileName
  55. templatePath := utils.IndexSaveDir + "index_template.xlsx"
  56. templateFile, err := excelize.OpenFile(templatePath)
  57. if err != nil {
  58. return
  59. }
  60. defer func() {
  61. templateFile.Close()
  62. }()
  63. startDate := "1990-01-01"
  64. 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}
  65. `
  66. commentMap := make(map[string]interface{})
  67. commentMap["author"] = "{"
  68. commentMap["text"] = commentStr
  69. //commentMap["text"] = commentItem
  70. commentJson, err := json.Marshal(commentMap)
  71. if err != nil {
  72. fmt.Println("json.Marshal err:" + err.Error())
  73. return err
  74. }
  75. fmt.Println("commentJson")
  76. fmt.Println(string(commentJson))
  77. templateFile.DeleteComment("Sheet1", "A1")
  78. templateFile.AddComment("Sheet1", "A1", string(commentJson))
  79. if err := templateFile.SaveAs(filePath); err != nil {
  80. fmt.Println(err)
  81. return err
  82. }
  83. time.Sleep(1 * time.Minute)
  84. return
  85. }