company_statistic.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. package services
  2. import (
  3. "fmt"
  4. "hongze/hongze_task/models"
  5. "hongze/hongze_task/utils"
  6. "time"
  7. )
  8. //存量客户数据统计
  9. func StackCompanyStatistic() (err error) {
  10. defer func() {
  11. if err != nil {
  12. go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "存量客户数据统计 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
  13. }
  14. }()
  15. dayStr := time.Now().AddDate(0, 0, -1).Format(utils.FormatDate) //截止到昨天的数据
  16. //查询昨天的数据有没有生成,如果没有生成的话,那么重新生成
  17. count, err := models.GetStackCompanyCount(dayStr)
  18. if err != nil {
  19. fmt.Println("查询昨天的数据是否生成语句 执行异常:", err.Error())
  20. return
  21. }
  22. //昨天数据有生成,那么就不往下执行了
  23. if count > 0 {
  24. fmt.Println("昨天的数据已经生成,不允许重复生成")
  25. return
  26. }
  27. total, list, err := models.GetStackCompanyListV1()
  28. if err != nil {
  29. fmt.Println("查询新签客户数(存量客户)异常:", err.Error())
  30. return
  31. }
  32. fmt.Println("total:", total)
  33. //fmt.Println(list)
  34. for _, company := range list {
  35. item := models.StackCompanyStatistic{
  36. CompanyId: company.CompanyId,
  37. CompanyName: company.CompanyName,
  38. ProductId: company.ProductId,
  39. ProductName: company.ProductName,
  40. ContractNum: company.Count,
  41. SellerId: company.SellerId,
  42. SellerName: company.SellerName,
  43. GroupId: company.GroupId,
  44. DepartmentId: company.DepartmentId,
  45. Date: dayStr, //截止到昨天的数据
  46. StartDate: company.StartDate,
  47. EndDate: company.EndDate,
  48. RegionType: company.RegionType,
  49. CreateTime: time.Now(),
  50. }
  51. if company.ProductStatus == "正式" {
  52. //正式客户
  53. if company.Count == 1 {
  54. //新签客户数
  55. item.Type = "新签客户"
  56. } else {
  57. item.Type = "续约客户"
  58. }
  59. } else {
  60. //未续约客户
  61. item.Type = "未续约客户"
  62. continue
  63. }
  64. addErr := models.AddStackCompanyStatistic(&item)
  65. if addErr != nil {
  66. fmt.Println("存量客户数据统计,插入数据异常:", addErr)
  67. }
  68. }
  69. total, notRenewalCompanyList, err := models.GetNotRenewalCompanyTotalV1(time.Now().Format(utils.FormatDateTime))
  70. if err != nil {
  71. fmt.Println("查询未续约客户数(存量客户)异常:", err.Error())
  72. return
  73. }
  74. fmt.Println("total:", total)
  75. //fmt.Println(list)
  76. for _, company := range notRenewalCompanyList {
  77. endDateTime, err := time.Parse(utils.FormatDateTime, company.CreateTime)
  78. if err != nil {
  79. fmt.Println("查询未续约客户数,插入数据异常:", err)
  80. }
  81. item := models.StackCompanyStatistic{
  82. CompanyId: company.CompanyId,
  83. CompanyName: company.CompanyName,
  84. ProductId: company.ProductId,
  85. ProductName: company.ProductName,
  86. //ContractNum: company.Count,
  87. SellerId: company.SellerId,
  88. SellerName: company.SellerName,
  89. GroupId: company.GroupId,
  90. DepartmentId: company.DepartmentId,
  91. Date: dayStr, //截止到昨天的数据
  92. StartDate: company.StartDate,
  93. EndDate: endDateTime.Format(utils.FormatDate),
  94. RegionType: company.RegionType,
  95. CreateTime: time.Now(),
  96. Type: "未续约客户",
  97. }
  98. addErr := models.AddStackCompanyStatistic(&item)
  99. if addErr != nil {
  100. fmt.Println("存量客户数据统计,插入数据异常:", addErr)
  101. }
  102. }
  103. return
  104. }