rai_data_summary.go 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. package statistic_report
  2. import (
  3. "github.com/beego/beego/v2/client/orm"
  4. "hongze/hz_crm_api/models/company"
  5. )
  6. // 时间区间数据结构
  7. type DateInterval struct {
  8. StartDate string `description:"合同开始日期"`
  9. EndDate string `description:"合同结束日期"`
  10. }
  11. type RaiDataSummaryListResp struct {
  12. List []*RaiDataSummaryResp
  13. }
  14. type RaiDataSummaryResp struct {
  15. DataType string `description:"时间区间"`
  16. DataList []*RaiDataSummaryDetail
  17. }
  18. type RaiDataSummaryDetail struct {
  19. SellerName string `description:"销售名称"`
  20. AddTrialCount string `description:"新增试用"`
  21. NewContractData string `description:"新签合同(金额/数量)"`
  22. ExpiredContractData string `description:"到期合同(金额/数量)"`
  23. RenewedContractData string `description:"续约合同(金额/数量)"`
  24. RenewalRateData string `description:"续约率(金额/数量)"`
  25. ConfirmedNoRenewalContractData string `description:"确认不续约合同(金额/数量)"`
  26. ConfirmNonRenewalRateData string `description:"确认不续约率(金额/数量)"`
  27. SignedClientCount string `description:"签约客户数量"`
  28. AverageRevenueCount string `description:"客单价"`
  29. InvoiceAmountCount string `description:"开票金额"`
  30. PaymentReceivedCount string `description:"到款金额"`
  31. UnpaidRatioCount string `description:"未到款比例"`
  32. NewCustomerInvoicingCount string `description:"新客开票"`
  33. NewCustomerPaymentsReceivedCount string `description:"新客到款"`
  34. }
  35. // 增量客户统计报表列表数据结构
  36. type IncrementalList struct {
  37. CompanyContractId int `description:"合同id"`
  38. ContractType string `description:"合同类型"`
  39. CompanyId int `description:"企业客户id"`
  40. CompanyName string `description:"企业客户名称"`
  41. ProductId int `description:"产品id"`
  42. ProductName string `description:"产品名称"`
  43. ProductStatus string `description:"产品名称"`
  44. CompanyProductId int `description:"客户购买产品授权id"`
  45. ContractCode string `description:"合同编码"`
  46. StartDate string `description:"合同开始日期"`
  47. EndDate string `description:"合同结束日期"`
  48. Money float64 `description:"合同金额"`
  49. PayMethod string `description:"付款方式"`
  50. PayChannel string `description:"付款渠道"`
  51. ImgUrl string `description:"合同图片"`
  52. CreateTime string `description:"合同创建时间"`
  53. ModifyTime string `description:"合同修改时间"`
  54. Status string `description:"合同审批状态,0:待审批,1:已审批;默认:1"`
  55. RegionType string `description:"企业客户所属区域;可选范围:国内,海外"`
  56. SellerId int `description:"归属销售id"`
  57. SellerName string `description:"归属销售名称"`
  58. SellerNameLast string `description:"合同到期之前最后所属归属销售名称"`
  59. ShareSeller string `description:"合同到期之前最后所属共享销售员"`
  60. ShareSellerLast string `description:"共享销售员"`
  61. ExpireDay string `description:"剩余可用天数"`
  62. PermissionList []*company.CompanyReportPermission `description:"产品权限"`
  63. Count int `json:"-" description:"合同数"`
  64. RenewalReason string `description:"未续约说明"`
  65. RenewalTodo string `description:"未续约说明中的待办事项说明"`
  66. PackageDifference string `description:"和上一份合同的区别"`
  67. AscribeContent string `description:"归因标签说明"`
  68. IsShowNoRenewedNote bool `description:"是否展示未续约备注按钮"`
  69. Content string `description:"归因内容说明"`
  70. PermissionName string `description:"权限名"`
  71. PermissionNameExport string `description:"权限名导出时使用"`
  72. PermissionNameStatus string `description:"权限状态"`
  73. CompanyProductStatus string `description:"客户状态"`
  74. //CompanyContractIdGroup string `description:"表company_contract合并的 company_contract_id"`
  75. IsUserMaker int `description:"近四周之内是否包含决策人互动过 ,0否,1是"`
  76. SellerNameInit string `description:"权益初始化销售"`
  77. SellerIdInit int `description:"权益初始化销售ID"`
  78. SellerIdLast int `description:"合同到期之前最后所属销售ID"`
  79. ShareSellerInit string `description:"共享销售员"`
  80. SysRealName string `description:"操作者名称"`
  81. Operation string `description:"操作"`
  82. RaiContractType string `description:"权益合同类型:枚举值:'新签合同','续约合同','补充协议'"`
  83. }
  84. // GetRaiDataSummaryList 获取增量客户报表列表数据(根据合同来展示)
  85. func GetRaiDataSummaryList(condition string, pars []interface{}) (items []*IncrementalList, err error) {
  86. o := orm.NewOrm()
  87. sql := `SELECT a.start_date,
  88. a.end_date,
  89. a.money,
  90. a.rai_contract_type,
  91. a.seller_id_init,
  92. a.seller_name_init,
  93. a.share_seller_init,
  94. a.share_seller_id_init,
  95. a.seller_id_last,
  96. a.seller_name_last,
  97. a.share_seller_last,
  98. a.share_seller_id_last
  99. FROM company_contract a
  100. JOIN company b ON a.company_id = b.company_id
  101. JOIN company_product c ON a.company_id = c.company_id and a.product_id=c.product_id WHERE 1 = 1 `
  102. if condition != "" {
  103. sql += condition
  104. }
  105. sql += ` group by a.company_contract_id order by a.start_date desc,a.company_id desc `
  106. _, err = o.Raw(sql, pars).QueryRows(&items)
  107. return
  108. }