pre_payment.go 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. package contract
  2. import (
  3. "fmt"
  4. "github.com/gin-gonic/gin"
  5. "github.com/go-playground/validator/v10"
  6. "hongze/fms_api/controller/resp"
  7. "hongze/fms_api/global"
  8. "hongze/fms_api/models/base"
  9. "hongze/fms_api/models/fms"
  10. )
  11. // // RegisterController 合同登记
  12. type PrePaymentController struct{}
  13. // List
  14. // @Title 到款预登记列表
  15. // @Description 到款预登记列表
  16. // @Param Keyword query string false "关键词"
  17. // @Param StartDate query string false "合同开始日期"
  18. // @Param EndDate query string false "合同结束日期"
  19. // @Param SortType query string true "如何排序,是正序还是倒序,枚举值:`asc 正序`,`desc 倒叙`"
  20. // @Success 200 {object} fms.ContractRegisterItem
  21. // @router /contract/pre_pay/list [get]
  22. func (rg *PrePaymentController) List(c *gin.Context) {
  23. var req fms.PrePayListReq
  24. if e := c.BindQuery(&req); e != nil {
  25. err, ok := e.(validator.ValidationErrors)
  26. if !ok {
  27. resp.FailData("参数解析失败", "Err:"+e.Error(), c)
  28. return
  29. }
  30. resp.FailData("参数解析失败", err.Translate(global.Trans), c)
  31. return
  32. }
  33. cond := `1 = 1`
  34. pars := make([]interface{}, 0)
  35. // 合同编号/客户姓名/销售/实际使用方
  36. if req.Keyword != "" {
  37. kw := "%" + req.Keyword + "%"
  38. cond += ` AND (company_name LIKE ? OR contract_code LIKE ? OR seller_name LIKE ? OR actual_company_name LIKE ?)`
  39. pars = append(pars, kw, kw, kw, kw)
  40. }
  41. if req.StartDate != "" && req.EndDate != "" {
  42. st := fmt.Sprint(req.StartDate, " 00:00:00")
  43. ed := fmt.Sprint(req.EndDate, " 23:59:59")
  44. cond += ` AND (create_time BETWEEN ? AND ?)`
  45. pars = append(pars, st, ed)
  46. }
  47. page := new(base.Page)
  48. page.SetPageSize(req.PageSize)
  49. page.SetCurrent(req.Current)
  50. page.AddOrderItem(base.OrderItem{Column: "create_time", Asc: false})
  51. total, list, e := fms.GetContractRegisterItemPageList(page, cond, pars)
  52. if e != nil {
  53. resp.FailMsg("获取失败", "获取合同登记列表失败, Err: "+e.Error(), c)
  54. return
  55. }
  56. registerIds := make([]int, 0)
  57. for i := range list {
  58. registerIds = append(registerIds, list[i].ContractRegisterId)
  59. }
  60. serviceMap := make(map[int]string, 0)
  61. invoiceMap := make(map[int][]*fms.ContractInvoiceItem, 0)
  62. paymentMap := make(map[int][]*fms.ContractInvoiceItem, 0)
  63. if len(registerIds) > 0 {
  64. // 获取服务套餐
  65. servicesNameList, e := fms.GetContractRegisterServicesNameByRegisterIds(registerIds)
  66. if e != nil {
  67. resp.FailMsg("获取失败", "获取套餐拼接字符串失败, Err: "+e.Error(), c)
  68. return
  69. }
  70. for i := range servicesNameList {
  71. serviceMap[servicesNameList[i].ContractRegisterId] = servicesNameList[i].ServicesName
  72. }
  73. // 获取开票/到款列表
  74. invoiceCond := `contract_register_id IN ?`
  75. invoicePars := make([]interface{}, 0)
  76. invoicePars = append(invoicePars, registerIds)
  77. invoiceList, e := fms.GetContractInvoiceItemList(invoiceCond, invoicePars)
  78. if e != nil {
  79. resp.FailMsg("获取失败", "获取开票/到款列表失败, Err: "+e.Error(), c)
  80. return
  81. }
  82. for i := range invoiceList {
  83. if invoiceMap[invoiceList[i].ContractRegisterId] == nil {
  84. invoiceMap[invoiceList[i].ContractRegisterId] = make([]*fms.ContractInvoiceItem, 0)
  85. }
  86. if paymentMap[invoiceList[i].ContractRegisterId] == nil {
  87. paymentMap[invoiceList[i].ContractRegisterId] = make([]*fms.ContractInvoiceItem, 0)
  88. }
  89. if invoiceList[i].InvoiceType == fms.ContractInvoiceTypeMake {
  90. invoiceMap[invoiceList[i].ContractRegisterId] = append(invoiceMap[invoiceList[i].ContractRegisterId], invoiceList[i])
  91. }
  92. if invoiceList[i].InvoiceType == fms.ContractInvoiceTypePay {
  93. paymentMap[invoiceList[i].ContractRegisterId] = append(paymentMap[invoiceList[i].ContractRegisterId], invoiceList[i])
  94. }
  95. }
  96. }
  97. respList := make([]*fms.ContractRegisterList, 0)
  98. for i := range list {
  99. v := new(fms.ContractRegisterList)
  100. v.ContractRegisterItem = list[i]
  101. v.ServicesName = serviceMap[list[i].ContractRegisterId]
  102. v.InvoiceList = invoiceMap[list[i].ContractRegisterId]
  103. v.PaymentList = paymentMap[list[i].ContractRegisterId]
  104. respList = append(respList, v)
  105. }
  106. page.SetTotal(total)
  107. baseData := new(base.BaseData)
  108. baseData.SetPage(page)
  109. baseData.SetList(respList)
  110. resp.OkData("获取成功", baseData, c)
  111. }