rai_data_summary.go 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. package statistic
  2. import (
  3. "fmt"
  4. "hongze/hz_crm_api/controllers"
  5. "hongze/hz_crm_api/models"
  6. "hongze/hz_crm_api/models/statistic_report"
  7. "hongze/hz_crm_api/models/system"
  8. "strings"
  9. )
  10. // 权益数据汇总
  11. // StatisticRaiDataSummaryController 权益数据汇总基类
  12. type StatisticRaiDataSummaryController struct {
  13. controllers.BaseAuthController
  14. }
  15. // MergeCompanyList
  16. // @Title 权益数据汇总
  17. // @Description 权益数据汇总统计列表接口
  18. // @Param AdminId query string true "销售id,多个用英文逗号隔开,空字符串为全部"
  19. // @Param StartYear query int false "开始日期(年份)"
  20. // @Param EndYear query int false "结束日期(年份)"
  21. // @Param DataType query string false "报表类型,枚举值:`季度`,`年度`,`半年度`"
  22. // @Param TryOutType query string false " '试用', '非试用' 非试用即为冻结/流失"
  23. // @Param IsExport query bool false "是否导出excel,默认是false"
  24. // @Param IsConfirm query int false "是否确认续约: -1-默认全部; 0-待确认; 1-已确认 ;2-到期合同"
  25. // @Success 200 {object} statistic_report.RaiDataSummaryListResp
  26. // @router /rai_data_summary/list [get]
  27. func (this *StatisticRaiDataSummaryController) RaiDataSummaryList() {
  28. br := new(models.BaseResponse).Init()
  29. defer func() {
  30. this.Data["json"] = br
  31. this.ServeJSON()
  32. }()
  33. sysUser := this.SysUser
  34. if sysUser == nil {
  35. br.Msg = "请登录"
  36. br.ErrMsg = "请登录,SysUser Is Empty"
  37. br.Ret = 408
  38. return
  39. }
  40. //adminId := this.GetString("AdminId")
  41. dataType := this.GetString("DataType")
  42. startYear, _ := this.GetInt("StartYear")
  43. endYear, _ := this.GetInt("EndYear")
  44. dataTypeArr := []string{}
  45. if dataType == "季度" {
  46. dataTypeArr = []string{"Q1", "Q2", "Q3", "Q4"}
  47. } else if dataType == "半年度" {
  48. dataTypeArr = []string{"H1", "H2"}
  49. } else {
  50. dataTypeArr = []string{""}
  51. }
  52. condition := " AND role_type_code IN ('rai_seller','rai_group') AND enabled = 1 AND rai_enabled = 1"
  53. var pars []interface{}
  54. sellerList, err := system.GetSysUserItemsOrderByCreated(condition, pars)
  55. if err != nil {
  56. br.Msg = "获取管理账号失败"
  57. br.ErrMsg = "获取管理账号失败,Err:" + err.Error()
  58. return
  59. }
  60. var sellerDevelop []*system.AdminItem // 开拓组销售
  61. var sellerService []*system.AdminItem // 服务组销售
  62. for _, v := range sellerList {
  63. if strings.Contains(v.RealName, "6") {
  64. sellerService = append(sellerService, v)
  65. } else {
  66. sellerDevelop = append(sellerDevelop, v)
  67. }
  68. }
  69. resp := new(statistic_report.RaiDataSummaryListResp)
  70. var items []*statistic_report.RaiDataSummaryResp
  71. for i := startYear; i <= endYear; i++ {
  72. //if len(dataTypeArr) > 0 {
  73. for _, Dv := range dataTypeArr {
  74. item := new(statistic_report.RaiDataSummaryResp)
  75. item.DataType = fmt.Sprint(i, Dv)
  76. for _, vS := range sellerDevelop {
  77. sellerItem := new(statistic_report.RaiDataSummaryDetail)
  78. sellerItem.SellerName = vS.RealName
  79. sellerItem.AddTrialCount = "新增试用-(数据)"
  80. sellerItem.NewContractData = "新签合同(金额/数量)-(数据)"
  81. sellerItem.ExpiredContractData = "到期合同(金额/数量)-(数据)"
  82. sellerItem.RenewedContractData = "续约合同(金额/数量)-(数据)"
  83. sellerItem.RenewalRateData = "续约率(金额/数量)-(数据)"
  84. sellerItem.ConfirmedNoRenewalContractData = "确认不续约合同(金额/数量)-(数据)"
  85. sellerItem.ConfirmNonRenewalRateData = "确认不续约率(金额/数量)-(数据)"
  86. sellerItem.SignedClientCount = "签约客户数量-(数据)"
  87. sellerItem.AverageRevenueCount = "客单价-(数据)"
  88. sellerItem.InvoiceAmountCount = "开票金额-(数据)"
  89. sellerItem.PaymentReceivedCount = "到款金额-(数据)"
  90. sellerItem.UnpaidRatioCount = "未到款比例-(数据)"
  91. sellerItem.NewCustomerInvoicingCount = "新客开票-(数据)"
  92. sellerItem.NewCustomerPaymentsReceivedCount = "新客到款-(数据)"
  93. item.DataList = append(item.DataList, sellerItem)
  94. }
  95. if len(sellerDevelop) > 0 {
  96. sellerItem := new(statistic_report.RaiDataSummaryDetail)
  97. sellerItem.SellerName = "开拓组合计"
  98. item.DataList = append(item.DataList, sellerItem)
  99. }
  100. for _, vS := range sellerService {
  101. sellerItem := new(statistic_report.RaiDataSummaryDetail)
  102. sellerItem.SellerName = vS.RealName
  103. sellerItem.AddTrialCount = "新增试用-(数据)"
  104. sellerItem.NewContractData = "新签合同(金额/数量)-(数据)"
  105. sellerItem.ExpiredContractData = "到期合同(金额/数量)-(数据)"
  106. sellerItem.RenewedContractData = "续约合同(金额/数量)-(数据)"
  107. sellerItem.RenewalRateData = "续约率(金额/数量)-(数据)"
  108. sellerItem.ConfirmedNoRenewalContractData = "确认不续约合同(金额/数量)-(数据)"
  109. sellerItem.ConfirmNonRenewalRateData = "确认不续约率(金额/数量)-(数据)"
  110. sellerItem.SignedClientCount = "签约客户数量-(数据)"
  111. sellerItem.AverageRevenueCount = "客单价-(数据)"
  112. sellerItem.InvoiceAmountCount = "开票金额-(数据)"
  113. sellerItem.PaymentReceivedCount = "到款金额-(数据)"
  114. sellerItem.UnpaidRatioCount = "未到款比例-(数据)"
  115. sellerItem.NewCustomerInvoicingCount = "新客开票-(数据)"
  116. sellerItem.NewCustomerPaymentsReceivedCount = "新客到款-(数据)"
  117. item.DataList = append(item.DataList, sellerItem)
  118. }
  119. if len(sellerService) > 0 {
  120. sellerItem := new(statistic_report.RaiDataSummaryDetail)
  121. sellerItem.SellerName = "服务组合计"
  122. item.DataList = append(item.DataList, sellerItem)
  123. }
  124. items = append(items, item)
  125. }
  126. }
  127. resp.List = items
  128. br.Ret = 200
  129. br.Success = true
  130. br.Msg = "获取成功"
  131. br.Data = resp
  132. }