excel_info.go 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "eta/eta_chart_lib/models"
  5. "eta/eta_chart_lib/models/request"
  6. "eta/eta_chart_lib/models/response"
  7. "eta/eta_chart_lib/services/data"
  8. "eta/eta_chart_lib/services/data/table"
  9. "eta/eta_chart_lib/services/excel"
  10. "eta/eta_chart_lib/utils"
  11. "fmt"
  12. "time"
  13. )
  14. // ExcelInfoController excel表格
  15. type ExcelInfoController struct {
  16. BaseAuthController
  17. }
  18. // GetTableDetail
  19. // @Title 获取表格表详情
  20. // @Description 获取表格表详情接口
  21. // @Param UniqueCode query string true "表格表唯一编码,如果是管理后台访问,传固定字符串:7c69b590249049942070ae9dcd5bf6dc"
  22. // @Success 200 {object} response.ExcelTableDetailResp
  23. // @router /detail [get]
  24. func (this *ExcelInfoController) GetTableDetail() {
  25. br := new(models.BaseResponse).Init()
  26. defer func() {
  27. this.Data["json"] = br
  28. this.ServeJSON()
  29. }()
  30. uniqueCode := this.GetString("UniqueCode")
  31. if uniqueCode == "" {
  32. br.Msg = "参数错误"
  33. br.ErrMsg = "参数错误,uniqueCode is empty"
  34. return
  35. }
  36. key := utils.HZ_CHART_LIB_EXCEL_TABLE_DETAIL + ":" + uniqueCode
  37. resp := new(response.ExcelTableDetailResp)
  38. //判断是否有缓存
  39. if utils.Re == nil {
  40. if utils.Re == nil && utils.Rc.IsExist(key) {
  41. if data, err1 := utils.Rc.RedisBytes(key); err1 == nil {
  42. err := json.Unmarshal(data, &resp)
  43. if err == nil && resp != nil {
  44. br.Ret = 200
  45. br.Success = true
  46. br.Msg = "获取成功"
  47. br.Data = resp
  48. fmt.Println("source redis")
  49. return
  50. }
  51. }
  52. }
  53. }
  54. excelInfo, err := models.GetExcelInfoByUniqueCode(uniqueCode)
  55. if err != nil {
  56. if err.Error() == utils.ErrNoRow() {
  57. br.Msg = "该表格已被删除,请刷新页面"
  58. br.ErrMsg = "该表格已被删除,请刷新页面,Err:" + err.Error()
  59. return
  60. }
  61. br.Msg = "获取失败"
  62. br.ErrMsg = "获取表格表信息失败,Err:" + err.Error()
  63. return
  64. }
  65. var tableData excel.TableData
  66. switch excelInfo.Source {
  67. case utils.EXCEL_DEFAULT:
  68. luckySheetData, err := excel.GetLuckySheetData(excelInfo.Content)
  69. if err != nil {
  70. br.Msg = "获取失败"
  71. br.ErrMsg = "获取excel数据失败,Err:" + err.Error()
  72. return
  73. }
  74. tableData, err = luckySheetData.GetTableDataByLuckySheetDataStr()
  75. if err != nil {
  76. br.Msg = "获取失败"
  77. br.ErrMsg = "转换成table失败,Err:" + err.Error()
  78. return
  79. }
  80. case utils.TIME_TABLE:
  81. var tableDataConfig data.TableDataConfig
  82. err = json.Unmarshal([]byte(excelInfo.Content), &tableDataConfig)
  83. if err != nil {
  84. br.Msg = "获取失败"
  85. br.ErrMsg = "表格json转结构体失败,Err:" + err.Error()
  86. return
  87. }
  88. result, err := data.GetDataByTableDataConfig(tableDataConfig)
  89. if err != nil {
  90. br.Msg = "获取失败"
  91. br.ErrMsg = "获取最新的表格数据失败,Err:" + err.Error()
  92. return
  93. }
  94. tableData, err = excel.GetTableDataByCustomData(excelInfo.ExcelType, result)
  95. if err != nil {
  96. br.Msg = "获取失败"
  97. br.ErrMsg = "转换成table失败,Err:" + err.Error()
  98. return
  99. }
  100. case utils.MIXED_TABLE:
  101. var result request.MixedTableReq
  102. err = json.Unmarshal([]byte(excelInfo.Content), &result)
  103. if err != nil {
  104. br.Msg = "获取失败"
  105. br.ErrMsg = "表格json转结构体失败,Err:" + err.Error()
  106. return
  107. }
  108. newResult, tmpErr, tmpErrMsg := table.GetMixedTableCellData(result)
  109. if tmpErr != nil {
  110. br.Msg = "获取失败"
  111. if tmpErrMsg != `` {
  112. br.Msg = tmpErrMsg
  113. }
  114. br.ErrMsg = "获取最新的数据失败,Err:" + tmpErr.Error()
  115. return
  116. }
  117. tableData, err = excel.GetTableDataByMixedTableData(newResult)
  118. if err != nil {
  119. br.Msg = "获取失败"
  120. br.ErrMsg = "转换成table失败,Err:" + err.Error()
  121. return
  122. }
  123. }
  124. tableData = excel.HandleTableCell(tableData)
  125. resp.TableInfo = tableData
  126. resp.Source = excelInfo.Source
  127. resp.ExcelType = excelInfo.ExcelType
  128. resp.ExcelName = excelInfo.ExcelName
  129. resp.ExcelImage = excelInfo.ExcelImage
  130. resp.UniqueCode = excelInfo.UniqueCode
  131. if utils.Re == nil {
  132. data, _ := json.Marshal(resp)
  133. utils.Rc.Put(key, data, 10*time.Minute)
  134. }
  135. br.Ret = 200
  136. br.Success = true
  137. br.Msg = "获取成功"
  138. br.Data = resp
  139. }