index.go 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. package index
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "github.com/gin-gonic/gin"
  6. "github.com/go-playground/validator/v10"
  7. "github.com/xuri/excelize/v2"
  8. "hongze/mysteel_watch/controller/resp"
  9. "hongze/mysteel_watch/global"
  10. "hongze/mysteel_watch/models/index"
  11. "hongze/mysteel_watch/utils"
  12. "os"
  13. )
  14. type IndexController struct {
  15. }
  16. func (s *IndexController) ServerCheck(c *gin.Context) {
  17. resp.OkData("检测成功", 1, c)
  18. return
  19. }
  20. // Add 生成指标
  21. func (s *IndexController) Create(c *gin.Context) {
  22. req := new(index.IndexAddReq)
  23. err := c.Bind(&req)
  24. if err != nil {
  25. errs, ok := err.(validator.ValidationErrors)
  26. if !ok {
  27. resp.FailData("参数解析失败", "Err:"+err.Error(), c)
  28. return
  29. }
  30. resp.FailData("参数解析失败", errs.Translate(global.Trans), c)
  31. return
  32. }
  33. fmt.Println("indexCode:" + req.IndexCode)
  34. if req.RunMode == "" {
  35. req.RunMode = "debug"
  36. }
  37. //fileName := req.IndexName + "_" + req.IndexCode + ".xlsx"
  38. var fileName string
  39. if req.UpdateWeek != "" {
  40. fileName = req.IndexCode + "_" + req.UpdateWeek + "_" + req.RunMode + ".xlsx" //保存的文件名称
  41. } else {
  42. fileName = req.IndexCode + "_" + req.RunMode + ".xlsx" //保存的文件名称
  43. }
  44. filePath := utils.IndexSaveDir + fileName
  45. templatePath := utils.IndexSaveDir + "index_template.xlsx"
  46. templateFile, err := excelize.OpenFile(templatePath)
  47. if err != nil {
  48. resp.FailData("打开文件失败", "打开文件失败,Err:"+err.Error(), c)
  49. return
  50. }
  51. defer func() {
  52. templateFile.Close()
  53. }()
  54. //timeTag := time.Now().UnixNano() / 1e6
  55. //timeTagStr := fmt.Sprintf("%d", timeTag)
  56. //UpdateMode:1:增量更新,0:全量更新
  57. //commentStr := `"BlankValue":"0","CanMark":true,"ChartLineType":"0","DateBlock":0,"DateBlockCount":1,"DateFormat":0,"DateTimeTag":` + timeTagStr + `,"EndDate":"",
  58. // "ExportType":0,"HasDescription":true,"HasEmptyRows":false,"HasFrequency":true,"HasIndexID":true,"HasLastDate":true,"HasSourceName":true,"HasTimeInterval":true,
  59. // "HasUnit":true,"HasUpdateDate":true,"IsCreateChart":false,"IsDataSort":true,"IsNewSheet":false,"IsNewWorkbook":false,
  60. // "Models":[{"DataFormat":0,"DataStartDate":"2011-03-25","DefineName":"","DefineUnit":"","DisplayIndexCode":"` + req.IndexCode + `",
  61. // "IndexCode":"` + req.IndexCode + `","IndexFormula":"` + req.IndexCode + `","PointValue":0,"UnionStart":""}],"Position":"A1","RangeData":"A2:B2791",
  62. // "ShowBlankLines":false,"StartDate":"","Transpose":false,"UpdateMode":1,"lookModel":{"IsLast":false,"LookValue":0,"lookType":0},"ver":3}`
  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":"` + req.IndexCode + `","IndexCode":"` + req.IndexCode + `","IndexFormula":"` + req.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. }
  74. fmt.Println("commentJson")
  75. fmt.Println(string(commentJson))
  76. templateFile.DeleteComment("Sheet1", "A1")
  77. templateFile.AddComment("Sheet1", "A1", string(commentJson))
  78. if err := templateFile.SaveAs(filePath); err != nil {
  79. fmt.Println(err)
  80. resp.FailData("保存失败", "保存失败,Err:"+err.Error(), c)
  81. return
  82. }
  83. resp.Ok("保存成功", c)
  84. return
  85. }
  86. // Delete 删除指标文件
  87. func (s *IndexController) Delete(c *gin.Context) {
  88. req := new(index.IndexAddReq)
  89. err := c.Bind(&req)
  90. if err != nil {
  91. errs, ok := err.(validator.ValidationErrors)
  92. if !ok {
  93. resp.FailData("参数解析失败", "Err:"+err.Error(), c)
  94. return
  95. }
  96. resp.FailData("参数解析失败", errs.Translate(global.Trans), c)
  97. return
  98. }
  99. var fileName string
  100. if req.UpdateWeek != "" {
  101. fileName = req.IndexCode + "_" + req.UpdateWeek + "_" + req.RunMode + ".xlsx" //保存的文件名称
  102. } else {
  103. fileName = req.IndexCode + "_" + req.RunMode + ".xlsx" //保存的文件名称
  104. }
  105. filePath := utils.IndexSaveDir + fileName
  106. err = os.Remove(filePath)
  107. if err != nil {
  108. resp.Ok("删除失败", c)
  109. return
  110. }
  111. resp.Ok("删除成功", c)
  112. return
  113. }
  114. func (s *IndexController) Test(c *gin.Context) {
  115. resp.OkData("检测成功", 1, c)
  116. return
  117. }