excel_info.go 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. package data_manage
  2. import (
  3. "eta/eta_mobile/controllers"
  4. "eta/eta_mobile/models"
  5. "eta/eta_mobile/models/data_manage"
  6. "eta/eta_mobile/models/data_manage/response"
  7. "eta/eta_mobile/services/excel"
  8. "eta/eta_mobile/utils"
  9. "github.com/rdlucklib/rdluck_tools/paging"
  10. )
  11. // ExcelInfoController ETA表格管理
  12. type ExcelInfoController struct {
  13. controllers.BaseAuthController
  14. }
  15. // List
  16. // @Title ETA表格列表接口
  17. // @Description ETA表格列表接口
  18. // @Param PageSize query int true "每页数据条数"
  19. // @Param CurrentIndex query int true "当前页页码,从1开始"
  20. // @Param ExcelClassifyId query int true "分类id"
  21. // @Param Keyword query string true "搜索关键词"
  22. // @Param AdminId query int false "创建人id"
  23. // @Success 200 {object} response.ExcelListResp
  24. // @router /excel_info/list [get]
  25. func (this *ExcelInfoController) List() {
  26. br := new(models.BaseResponse).Init()
  27. defer func() {
  28. this.Data["json"] = br
  29. this.ServeJSON()
  30. }()
  31. sysUser := this.SysUser
  32. if sysUser == nil {
  33. br.Msg = "请登录"
  34. br.ErrMsg = "请登录,SysUser Is Empty"
  35. br.Ret = 408
  36. return
  37. }
  38. excelClassifyId, _ := this.GetInt("ExcelClassifyId")
  39. pageSize, _ := this.GetInt("PageSize")
  40. currentIndex, _ := this.GetInt("CurrentIndex")
  41. keyword := this.GetString("Keyword")
  42. adminId, _ := this.GetInt("AdminId")
  43. var total int
  44. page := paging.GetPaging(currentIndex, pageSize, total)
  45. var startSize int
  46. if pageSize <= 0 {
  47. pageSize = utils.PageSize20
  48. }
  49. if currentIndex <= 0 {
  50. currentIndex = 1
  51. }
  52. startSize = paging.StartIndex(currentIndex, pageSize)
  53. var condition string
  54. var pars []interface{}
  55. // 筛选分类
  56. if excelClassifyId > 0 {
  57. _, err := data_manage.GetExcelClassifyById(excelClassifyId)
  58. if err != nil && err.Error() != utils.ErrNoRow() {
  59. br.Msg = "获取表格信息失败"
  60. br.ErrMsg = "获取信息失败,GetExcelClassify,Err:" + err.Error()
  61. return
  62. }
  63. condition += " AND excel_classify_id = ? "
  64. pars = append(pars, excelClassifyId)
  65. }
  66. if keyword != "" {
  67. condition += ` AND ( excel_name LIKE ? )`
  68. pars = append(pars, `%`+keyword+`%`)
  69. }
  70. if adminId > 0 {
  71. condition += " AND sys_user_id = ? "
  72. pars = append(pars, adminId)
  73. }
  74. //获取表格信息
  75. list, err := data_manage.GetNoContentExcelListByCondition(condition, pars, startSize, pageSize)
  76. if err != nil && err.Error() != utils.ErrNoRow() {
  77. br.Success = true
  78. br.Msg = "获取表格信息失败"
  79. br.ErrMsg = "获取表格信息失败,Err:" + err.Error()
  80. return
  81. }
  82. if list == nil || len(list) <= 0 || (err != nil && err.Error() == utils.ErrNoRow()) {
  83. list = make([]*data_manage.MyExcelInfoList, 0)
  84. }
  85. // 总数据量
  86. dataCount, err := data_manage.GetExcelListCountByCondition(condition, pars)
  87. if err != nil && err.Error() != utils.ErrNoRow() {
  88. br.Msg = "获取表格列表信息失败"
  89. br.ErrMsg = "获取表格列表数据总数失败,Err:" + err.Error()
  90. return
  91. }
  92. page = paging.GetPaging(currentIndex, pageSize, dataCount)
  93. resp := response.ExcelListResp{
  94. Paging: page,
  95. List: list,
  96. }
  97. br.Ret = 200
  98. br.Success = true
  99. br.Msg = "获取成功"
  100. br.Data = resp
  101. }
  102. // GetExcelTableData
  103. // @Title 获取excel表格的table数据
  104. // @Description 获取excel表格的table数据接口
  105. // @Param UniqueCode query string true "表格code"
  106. // @Success 200 {object} response.ExcelTableDetailResp
  107. // @router /excel_info/table_data [get]
  108. func (this *ExcelInfoController) GetExcelTableData() {
  109. br := new(models.BaseResponse).Init()
  110. defer func() {
  111. this.Data["json"] = br
  112. this.ServeJSON()
  113. }()
  114. sysUser := this.SysUser
  115. if sysUser == nil {
  116. br.Msg = "请登录"
  117. br.ErrMsg = "请登录,SysUser Is Empty"
  118. br.Ret = 408
  119. return
  120. }
  121. uniqueCode := this.GetString("UniqueCode")
  122. var err error
  123. if uniqueCode == `` {
  124. br.Msg = "请选择表格"
  125. br.ErrMsg = "UniqueCode未传"
  126. br.IsSendEmail = false
  127. return
  128. }
  129. //获取eta表格信息
  130. excelInfo, err := data_manage.GetExcelInfoByUniqueCode(uniqueCode)
  131. if err != nil {
  132. br.Msg = "获取失败"
  133. br.ErrMsg = "获取ETA表格信息失败,Err:" + err.Error()
  134. if err.Error() == utils.ErrNoRow() {
  135. br.Msg = "ETA表格被删除,请刷新页面"
  136. br.ErrMsg = "ETA表格被删除,请刷新页面,Err:" + err.Error()
  137. br.IsSendEmail = false
  138. }
  139. return
  140. }
  141. luckySheetData, err := excel.GetLuckySheetData(excelInfo.Content)
  142. if err != nil {
  143. br.Msg = "获取失败"
  144. br.ErrMsg = "获取excel数据失败,Err:" + err.Error()
  145. return
  146. }
  147. tableData, err := luckySheetData.GetTableDataByLuckySheetDataStr()
  148. if err != nil {
  149. br.Msg = "获取失败"
  150. br.ErrMsg = "转换成table失败,Err:" + err.Error()
  151. return
  152. }
  153. tableData = excel.HandleTableCell(tableData)
  154. resp := response.ExcelTableDetailResp{
  155. UniqueCode: excelInfo.UniqueCode,
  156. ExcelImage: excelInfo.ExcelImage,
  157. ExcelName: excelInfo.ExcelName,
  158. TableInfo: tableData,
  159. }
  160. br.Ret = 200
  161. br.Success = true
  162. br.Msg = "获取成功"
  163. br.Data = resp
  164. }