pdf_controller.go 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "eta/eta_data_analysis/models"
  5. "eta/eta_data_analysis/services/pdf"
  6. "fmt"
  7. "github.com/beego/beego/v2/server/web"
  8. )
  9. type PdfController struct {
  10. web.Controller
  11. }
  12. // GeneratePdf
  13. // @Title 生成PDF
  14. // @Description 合同套餐列表
  15. // @Param DayFlag query int false
  16. // @Param WeekFlag query int false
  17. // @Success 200 {object} company.GetUnusualRenewListGroupMonthResp
  18. // @router /generate_pdf [post]
  19. func (pdfcontrl *PdfController) GeneratePdf() {
  20. br := new(models.BaseResponse).Init()
  21. defer func() {
  22. pdfcontrl.Data["json"] = br
  23. _ = pdfcontrl.ServeJSON()
  24. }()
  25. var req PdfRequest
  26. err := json.Unmarshal(pdfcontrl.Ctx.Input.RequestBody, &req)
  27. if err != nil {
  28. br.Msg = "参数解析异常!"
  29. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  30. return
  31. }
  32. var data PdfResponse
  33. var pdfUrl, jpgUrl, mobilePdfUrl, mobileJpgUrl string
  34. if req.FreeLayout {
  35. pdfUrl, jpgUrl, err = pdf.Report2pdfAndJpeg(req.ReportUrl, req.ReportId, pdf.FreeLayout)
  36. if err != nil {
  37. br.Msg = "生成PDF失败!"
  38. br.ErrMsg = "生成PDF失败,Err:" + err.Error()
  39. return
  40. }
  41. data.PdfUrl = pdfUrl
  42. data.JpgUrl = jpgUrl
  43. } else {
  44. pdfUrl, jpgUrl, err = pdf.Report2pdfAndJpeg(req.ReportUrl, req.ReportId, pdf.PC)
  45. if err != nil {
  46. br.Msg = "生成PDF失败!"
  47. br.ErrMsg = "生成PDF失败,Err:" + err.Error()
  48. return
  49. }
  50. mobilePdfUrl, mobileJpgUrl, err = pdf.Report2pdfAndJpeg(req.ReportUrl, req.ReportId, pdf.Mobile)
  51. if err != nil {
  52. br.Msg = "生成PDF失败!"
  53. br.ErrMsg = "生成PDF失败,Err:" + err.Error()
  54. return
  55. }
  56. data.PdfUrl = pdfUrl
  57. data.JpgUrl = jpgUrl
  58. data.MobilePdfUrl = mobilePdfUrl
  59. data.MobileJpgUrl = mobileJpgUrl
  60. }
  61. str := fmt.Sprintf("%v", data)
  62. fmt.Println(str)
  63. br.Data = data
  64. br.Ret = 200
  65. br.Success = true
  66. br.Msg = "生成PDF成功"
  67. }
  68. type PdfRequest struct {
  69. ReportUrl string `json:"ReportUrl"`
  70. ReportId int `json:"ReportId"`
  71. FreeLayout bool `json:"FreeLayout"`
  72. }
  73. type PdfResponse struct {
  74. PdfUrl string `json:"PdfUrl"`
  75. JpgUrl string `json:"JpgUrl"`
  76. MobilePdfUrl string `json:"MobilePdfUrl"`
  77. MobileJpgUrl string `json:"MobileJpgUrl"`
  78. }