company_contract_merge.go 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. package company
  2. import (
  3. //"fmt"
  4. "github.com/beego/beego/v2/client/orm"
  5. "github.com/rdlucklib/rdluck_tools/paging"
  6. "time"
  7. )
  8. type CompanyContractMerge struct {
  9. CompanyContractId int `orm:"column(company_contract_merge_id);pk" description:"主键ID"`
  10. ContractType string `description:"合同类型:枚举值:'新签合同','续约合同','补充协议'"`
  11. ProductId int `description:"产品id"`
  12. ProductName string `description:"产品名称"`
  13. CompanyId int `description:"客户id"`
  14. CompanyProductId int `description:"客户产品id"`
  15. StartDate string `description:"合同开始时间"`
  16. EndDate string `description:"合同结束时间"`
  17. Money float64 `description:"合同金额"`
  18. CreateTime time.Time `description:"合同创建时间"`
  19. ModifyTime time.Time `description:"合同修改时间"`
  20. CompanyContractIdGroup string `description:"表company_contract合并的 company_contract_id"`
  21. ChartPermissionName string `description:"权限类目名称"`
  22. }
  23. type CompanyContractMergeResp struct {
  24. CompanyContractId int `orm:"column(company_contract_merge_id);pk" description:"主键ID"`
  25. ContractType string `description:"合同类型:枚举值:'新签合同','续约合同','补充协议'"`
  26. ProductId int `description:"产品id"`
  27. ProductName string `description:"产品名称"`
  28. CompanyId int `description:"客户id"`
  29. CompanyProductId int `description:"客户产品id"`
  30. StartDate time.Time `description:"合同开始时间"`
  31. EndDate time.Time `description:"合同结束时间"`
  32. Money float64 `description:"合同金额"`
  33. CreateTime time.Time `description:"合同创建时间"`
  34. ModifyTime time.Time `description:"合同修改时间"`
  35. CompanyContractIdGroup string `description:"表company_contract合并的 company_contract_id"`
  36. ChartPermissionName string `description:"权限类目名称"`
  37. }
  38. // MultiAddCompanyContractMerge 批量添加合同合并之后的数据
  39. func MultiAddCompanyContractMerge(items []*CompanyContractMerge) (err error) {
  40. if len(items) == 0 {
  41. return
  42. }
  43. o := orm.NewOrm()
  44. _, err = o.InsertMulti(len(items), items)
  45. return
  46. }
  47. // 增量客户统计报表列表数据结构
  48. type IncrementalList struct {
  49. CompanyContractId int `description:"合同id"`
  50. ContractType string `description:"合同类型"`
  51. CompanyId int `description:"企业客户id"`
  52. CompanyName string `description:"企业客户名称"`
  53. ProductId int `description:"产品id"`
  54. ProductName string `description:"产品名称"`
  55. CompanyProductId int `description:"客户购买产品授权id"`
  56. ContractCode string `description:"合同编码"`
  57. StartDate string `description:"合同开始日期"`
  58. EndDate string `description:"合同结束日期"`
  59. Money float64 `description:"合同金额"`
  60. PayMethod string `description:"付款方式"`
  61. PayChannel string `description:"付款渠道"`
  62. ImgUrl string `description:"合同图片"`
  63. CreateTime string `description:"合同创建时间"`
  64. ModifyTime string `description:"合同修改时间"`
  65. Status string `description:"合同审批状态,0:待审批,1:已审批;默认:1"`
  66. RegionType string `description:"企业客户所属区域;可选范围:国内,海外"`
  67. SellerId int `description:"归属销售id"`
  68. SellerName string `description:"归属销售名称"`
  69. ExpireDay string `description:"剩余可用天数"`
  70. PermissionList []*CompanyReportPermission `description:"产品权限"`
  71. Count int `json:"-" description:"合同数"`
  72. RenewalReason string `description:"未续约说明"`
  73. RenewalTodo string `description:"未续约说明中的待办事项说明"`
  74. PackageDifference string `description:"和上一份合同的区别"`
  75. AscribeContent string `description:"归因标签说明"`
  76. IsShowNoRenewedNote bool `description:"是否展示未续约备注按钮"`
  77. Content string `description:"归因内容说明"`
  78. }
  79. // 增量客户统计报表返回类
  80. type IncrementalCompanyListResp struct {
  81. List []*IncrementalList
  82. Paging *paging.PagingItem `description:"分页数据"`
  83. TrialTotal int `description:"新增试用客户数"`
  84. NewCompanyTotal int `description:"新签客户数"`
  85. RenewalCompanyTotal int `description:"续约客户数"`
  86. NotRenewalCompanyTotal int `description:"未续约客户数"`
  87. NotRenewalTryOut int `description:"未续约客户(试用)数"`
  88. NotRenewalNotTryOut int `description:"未续约客户(非试用)数"`
  89. }
  90. // GetIncrementalNewCompanyProductMergeCount 获取增量客户产品报表列表统计数据(根据合同来展示)
  91. func GetIncrementalNewCompanyProductMergeCount(condition string, pars []interface{}) (total int, err error) {
  92. o := orm.NewOrm()
  93. sql := `SELECT a.*,b.region_type,c.seller_id,c.seller_name,b.company_name FROM company_contract_merge a
  94. JOIN company b ON a.company_id = b.company_id
  95. JOIN company_product c ON a.company_id = c.company_id and a.product_id=c.product_id WHERE 1 = 1 `
  96. if condition != "" {
  97. sql += condition
  98. }
  99. sql = `select count(1) count from (` + sql + ` group by company_id,product_id) f`
  100. err = o.Raw(sql, pars).QueryRow(&total)
  101. return
  102. }
  103. // GetIncrementalNewCompanyList 获取增量客户报表列表数据(根据合同来展示)
  104. func GetIncrementalNewCompanyMergeList(condition string, pars []interface{}, startSize, pageSize int) (items []*IncrementalList, err error) {
  105. o := orm.NewOrm()
  106. sql := `SELECT a.*,b.region_type,c.seller_id,c.seller_name,b.company_name,c.renewal_reason FROM company_contract_merge a
  107. JOIN company b ON a.company_id = b.company_id
  108. JOIN company_product c ON a.company_id = c.company_id and a.product_id=c.product_id WHERE 1 = 1 `
  109. if condition != "" {
  110. sql += condition
  111. }
  112. sql += " order by a.start_date desc "
  113. sql = `select *,count(*) count from (` + sql + `) b group by company_id,product_id order by start_date desc,company_id desc limit ?,?`
  114. _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
  115. return
  116. }
  117. // GetIncrementalRenewalCompanyProductMergeCount 续约合同数量
  118. func GetIncrementalRenewalCompanyProductMergeCount(condition string, pars []interface{}) (total int, err error) {
  119. o := orm.NewOrm()
  120. sql := `SELECT a.*,b.region_type,c.seller_id,c.seller_name,b.company_name FROM company_contract_merge a
  121. JOIN company b ON a.company_id = b.company_id
  122. JOIN company_product c ON a.company_id = c.company_id and a.product_id=c.product_id WHERE 1 = 1 `
  123. if condition != "" {
  124. sql += condition
  125. }
  126. sql = `select count(1) count from (` + sql + ` group by company_id,product_id) f`
  127. err = o.Raw(sql, pars).QueryRow(&total)
  128. return
  129. }
  130. // GetIncrementalRenewalCompanyMergeList续约合同列表
  131. func GetIncrementalRenewalCompanyMergeList(condition string, pars []interface{}, startSize, pageSize int) (items []*IncrementalList, err error) {
  132. o := orm.NewOrm()
  133. sql := `SELECT a.*,b.region_type,c.seller_id,c.seller_name,b.company_name,c.renewal_reason FROM company_contract_merge a
  134. JOIN company b ON a.company_id = b.company_id
  135. JOIN company_product c ON a.company_id = c.company_id and a.product_id=c.product_id WHERE 1 = 1 `
  136. if condition != "" {
  137. sql += condition
  138. }
  139. sql += " order by a.start_date desc "
  140. sql = `select *,count(*) count from (` + sql + `) b group by company_id,product_id order by start_date desc,company_id desc limit ?,?`
  141. _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
  142. return
  143. }