pdf_controller.go 2.1 KB

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