report.go 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. package roadshow
  2. import (
  3. "context"
  4. "errors"
  5. "fmt"
  6. "hongze/hongze_task/models"
  7. "hongze/hongze_task/models/roadshow"
  8. "hongze/hongze_task/utils"
  9. "strconv"
  10. "strings"
  11. "time"
  12. )
  13. func AddReportRecord(cont context.Context) (err error) {
  14. defer func() {
  15. if err != nil {
  16. fmt.Println("AddReportRecord Err:" + err.Error())
  17. }
  18. }()
  19. adminAll, err := models.GetAdminList()
  20. if err != nil {
  21. return
  22. }
  23. adminMap := make(map[int]*models.AdminView)
  24. mapRaiSllerId := make(map[int]bool) // 是否为权益销售
  25. for _, v := range adminAll {
  26. adminMap[v.AdminId] = v
  27. if v.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_SELLER || v.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP || v.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN {
  28. mapRaiSllerId[v.AdminId] = true
  29. }
  30. }
  31. companyList, err := roadshow.RsCompanyList()
  32. if err != nil {
  33. return
  34. }
  35. companyListRai, err := roadshow.RsCompanyListRai() //权益客户信息
  36. if err != nil {
  37. return
  38. }
  39. companyMap := make(map[int]*roadshow.CompanySearchView)
  40. companyMapRai := make(map[int]*roadshow.CompanySearchView)
  41. for _, v := range companyList {
  42. companyMap[v.CompanyId] = v
  43. }
  44. for _, v := range companyListRai {
  45. companyMapRai[v.CompanyId] = v
  46. }
  47. endDate := time.Now().AddDate(-1, 0, 0).Format(utils.FormatDate)
  48. existList, err := roadshow.GetExistRsReportRecord(endDate)
  49. if err != nil {
  50. return
  51. }
  52. existMap := make(map[string]*roadshow.RsReportRecord)
  53. var companyIds []int
  54. for _, v := range existList {
  55. key := strconv.Itoa(v.RsCalendarId) + "_" + strconv.Itoa(v.RsCalendarResearcherId)
  56. existMap[key] = v
  57. if v.CompanyId > 0 {
  58. companyIds = append(companyIds, v.CompanyId)
  59. }
  60. }
  61. mapPermissionNameFicc := make(map[int][]string)
  62. mapPermissionNameRai := make(map[int][]string)
  63. if len(companyIds) > 0 {
  64. listPermissionNameFicc, errFicc := models.GetCompanyProductReportPermissionList(companyIds, 1) // FICC权限信息
  65. if errFicc != nil {
  66. err = errFicc
  67. return
  68. }
  69. mapPermissionArrFicc := make(map[string]bool)
  70. for _, v := range listPermissionNameFicc {
  71. if mapPermissionArrFicc[fmt.Sprint(v.CompanyId, v.PermissionName)] || v.PermissionName == "" {
  72. continue
  73. }
  74. mapPermissionNameFicc[v.CompanyId] = append(mapPermissionNameFicc[v.CompanyId], v.PermissionName)
  75. mapPermissionArrFicc[fmt.Sprint(v.CompanyId, v.PermissionName)] = true
  76. }
  77. listPermissionNameRai, errRai := models.GetCompanyProductReportPermissionList(companyIds, 2) // 权益权限信息
  78. if errRai != nil {
  79. err = errRai
  80. return
  81. }
  82. mapPermissionArrRai := make(map[string]bool)
  83. for _, v := range listPermissionNameRai {
  84. if mapPermissionArrRai[fmt.Sprint(v.CompanyId, v.PermissionName)] || v.PermissionName == "" {
  85. continue
  86. }
  87. mapPermissionNameRai[v.CompanyId] = append(mapPermissionNameRai[v.CompanyId], v.PermissionName)
  88. mapPermissionArrRai[fmt.Sprint(v.CompanyId, v.PermissionName)] = true
  89. }
  90. }
  91. list, err := roadshow.GetRsCalendarDetail(endDate)
  92. if err != nil {
  93. return
  94. }
  95. for _, v := range list {
  96. company := new(roadshow.CompanySearchView)
  97. if v.CompanyId > 0 {
  98. if mapRaiSllerId[v.SysUserId] {
  99. company, _ = companyMapRai[v.CompanyId] // 如果是权益销售添加的信息,就用权益相关的客户信息
  100. if len(mapPermissionNameRai[v.CompanyId]) > 0 {
  101. company.PermissionName = strings.Join(mapPermissionNameRai[v.CompanyId], "/")
  102. }
  103. } else {
  104. company, _ = companyMap[v.CompanyId]
  105. if len(mapPermissionNameFicc[v.CompanyId]) > 0 {
  106. company.PermissionName = strings.Join(mapPermissionNameFicc[v.CompanyId], "/")
  107. }
  108. }
  109. }
  110. researcher, ok := adminMap[v.ResearcherId]
  111. if !ok {
  112. err = errors.New("研究员信息不存在:" + strconv.Itoa(v.ResearcherId))
  113. //continue
  114. }
  115. seller, ok := adminMap[v.SysUserId]
  116. if !ok {
  117. err = errors.New("销售信息不存在:" + strconv.Itoa(v.SysUserId))
  118. //return
  119. //continue
  120. }
  121. key := strconv.Itoa(v.RsCalendarId) + "_" + strconv.Itoa(v.RsCalendarResearcherId)
  122. if _, ok := existMap[key]; ok { //修改
  123. utils.FileLog.Info("update:" + strconv.Itoa(v.RsCalendarId))
  124. reportWhereParams := make(map[string]interface{})
  125. reportWhereParams["rs_calendar_id"] = v.RsCalendarId
  126. reportWhereParams["rs_calendar_researcher_id"] = v.RsCalendarResearcherId
  127. reportUpdateParams := make(map[string]interface{})
  128. if company != nil {
  129. reportUpdateParams["company_id"] = company.CompanyId
  130. reportUpdateParams["company_name"] = company.CompanyName
  131. reportUpdateParams["credit_code"] = company.CreditCode
  132. reportUpdateParams["company_status"] = company.Status
  133. reportUpdateParams["permission_name"] = company.PermissionName
  134. }
  135. reportUpdateParams["activity_type"] = v.ActivityType
  136. if researcher != nil {
  137. reportUpdateParams["researcher_id"] = researcher.AdminId
  138. reportUpdateParams["researcher_name"] = researcher.RealName
  139. reportUpdateParams["researcher_group_id"] = researcher.GroupId
  140. reportUpdateParams["researcher_group_name"] = researcher.GroupName
  141. } else {
  142. reportUpdateParams["researcher_id"] = v.ResearcherId
  143. reportUpdateParams["researcher_name"] = v.ResearcherName
  144. reportUpdateParams["researcher_group_id"] = 0
  145. reportUpdateParams["researcher_group_name"] = ""
  146. }
  147. if seller != nil {
  148. reportUpdateParams["seller_id"] = seller.AdminId
  149. reportUpdateParams["seller_name"] = seller.RealName
  150. reportUpdateParams["seller_group_id"] = seller.GroupId
  151. reportUpdateParams["seller_group_name"] = seller.GroupName
  152. } else {
  153. reportUpdateParams["seller_id"] = v.SysUserId
  154. reportUpdateParams["seller_name"] = v.SysUserRealName
  155. reportUpdateParams["seller_group_id"] = 0
  156. reportUpdateParams["seller_group_name"] = ""
  157. }
  158. reportUpdateParams["start_date"] = v.StartDate
  159. reportUpdateParams["end_date"] = v.EndDate
  160. reportUpdateParams["start_time"] = v.StartTime
  161. reportUpdateParams["end_time"] = v.EndTime
  162. reportUpdateParams["start_week"] = v.StartWeek
  163. reportUpdateParams["end_week"] = v.EndWeek
  164. reportUpdateParams["rs_calendar_researcher_status"] = v.Status
  165. reportUpdateParams["activity_type"] = v.ActivityType
  166. reportUpdateParams["roadshow_type"] = v.RoadshowType
  167. reportUpdateParams["modify_time"] = time.Now()
  168. err = roadshow.UpdateRsReportRecord(reportWhereParams, reportUpdateParams)
  169. } else { //新增
  170. item := new(roadshow.RsReportRecord)
  171. if company != nil {
  172. item.CompanyId = company.CompanyId
  173. item.CompanyName = company.CompanyName
  174. item.CreditCode = company.CreditCode
  175. item.CompanyStatus = company.Status
  176. item.PermissionName = company.PermissionName
  177. }
  178. item.ActivityType = v.ActivityType
  179. item.ResearcherId = v.ResearcherId
  180. item.ResearcherName = v.ResearcherName
  181. if researcher != nil {
  182. item.ResearcherGroupId = researcher.GroupId
  183. item.ResearcherGroupName = researcher.GroupName
  184. } else {
  185. item.ResearcherGroupId = 0
  186. item.ResearcherGroupName = ""
  187. }
  188. if seller != nil {
  189. item.SellerId = seller.AdminId
  190. item.SellerName = seller.RealName
  191. item.SellerGroupId = seller.GroupId
  192. item.SellerGroupName = seller.GroupName
  193. } else {
  194. item.SellerId = v.SysUserId
  195. item.SellerName = v.SysUserRealName
  196. item.SellerGroupId = 0
  197. item.SellerGroupName = ""
  198. }
  199. utils.FileLog.Info("add:" + strconv.Itoa(v.RsCalendarId))
  200. item.RsCalendarId = v.RsCalendarId
  201. item.RsCalendarResearcherId = v.RsCalendarResearcherId
  202. item.StartDate = v.StartDate
  203. item.EndDate = v.EndDate
  204. item.StartTime = v.StartTime
  205. item.EndTime = v.EndTime
  206. item.StartWeek = v.StartWeek
  207. item.EndWeek = v.EndWeek
  208. item.CreateTime = time.Now()
  209. item.ModifyTime = time.Now()
  210. item.RsCalendarResearcherStatus = v.Status
  211. item.RoadshowType = v.RoadshowType
  212. _, err = roadshow.AddRsReportRecord(item)
  213. if err != nil {
  214. return
  215. }
  216. }
  217. }
  218. return err
  219. }