meeting_probabilities.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "eta_gn/eta_api/models"
  5. "eta_gn/eta_api/models/data_manage/request"
  6. "eta_gn/eta_api/utils"
  7. "fmt"
  8. "github.com/tealeg/xlsx"
  9. "os"
  10. "path/filepath"
  11. "time"
  12. )
  13. type MeetingProbabilitiesController struct {
  14. BaseAuthController
  15. }
  16. // @router /detail [get]
  17. func (c *MeetingProbabilitiesController) Detail() {
  18. br := new(models.BaseResponse).Init()
  19. defer func() {
  20. c.Data["json"] = br
  21. c.ServeJSON()
  22. }()
  23. sysUser := c.SysUser
  24. if sysUser == nil {
  25. br.Msg = "请登录"
  26. br.ErrMsg = "请登录,SysUser Is Empty"
  27. br.Ret = 408
  28. return
  29. }
  30. date := c.GetString("DateTime")
  31. isExport, _ := c.GetInt("IsExport")
  32. excelDetail, err := models.GetMeetingInfoById(date)
  33. if err != nil {
  34. if utils.IsErrNoRow(err) {
  35. br.Ret = 200
  36. br.Msg = "该日期无数据"
  37. br.Msg = "该日期无数据,Err:" + err.Error()
  38. return
  39. }
  40. br.ErrMsg = err.Error()
  41. return
  42. }
  43. if isExport == 1 {
  44. sheet := new(request.ISheet)
  45. err = json.Unmarshal([]byte(excelDetail.Content), &sheet)
  46. MeetingProbabilitiesExport(c, br, sheet)
  47. return
  48. }
  49. br.Ret = 200
  50. br.Success = true
  51. br.Msg = "获取成功"
  52. br.Data = excelDetail
  53. }
  54. func MeetingProbabilitiesExport(this *MeetingProbabilitiesController, br *models.BaseResponse, sheetReq *request.ISheet) {
  55. sysUser := this.SysUser
  56. if sysUser == nil {
  57. br.Msg = "请重新登录"
  58. return
  59. }
  60. dir, _ := os.Executable()
  61. exPath := filepath.Dir(dir)
  62. downloadPath := exPath + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + ".xlsx"
  63. xlsxFile := xlsx.NewFile()
  64. sheet, e := xlsxFile.AddSheet("数据报表")
  65. if e != nil {
  66. br.Msg = "新增Sheet失败"
  67. br.ErrMsg = "新增Sheet失败, Err: " + e.Error()
  68. return
  69. }
  70. for _, v := range sheetReq.Data {
  71. addRow := sheet.AddRow()
  72. for _, s := range v {
  73. if s != nil {
  74. addRow.AddCell().SetString(s.M)
  75. }
  76. }
  77. }
  78. if e = xlsxFile.Save(downloadPath); e != nil {
  79. br.Msg = "导出失败"
  80. br.ErrMsg = "保存文件失败"
  81. return
  82. }
  83. fileName := fmt.Sprint("MeetingProbabilities", time.Now().Format("2006.01.02"), ".xlsx")
  84. this.Ctx.Output.Download(downloadPath, fileName)
  85. defer func() {
  86. _ = os.Remove(downloadPath)
  87. }()
  88. br.Ret = 200
  89. br.Success = true
  90. br.Msg = "success"
  91. }