report.go 37 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154
  1. package roadshow
  2. import (
  3. "encoding/json"
  4. "hongze/hz_crm_api/models"
  5. "hongze/hz_crm_api/models/company"
  6. "hongze/hz_crm_api/models/roadshow"
  7. "hongze/hz_crm_api/models/system"
  8. "hongze/hz_crm_api/services"
  9. roadshowService "hongze/hz_crm_api/services/roadshow"
  10. "hongze/hz_crm_api/utils"
  11. "strconv"
  12. "strings"
  13. "time"
  14. )
  15. // ResearcherReportList
  16. // @Title 研究员路演统计
  17. // @Description 研究员路演统计接口
  18. // @Param DataType query string true "枚举值:week、month、time_interval"
  19. // @Param StartDate query string true "开始日期,格式:2022-04-06"
  20. // @Param EndDate query string true "结束日期,格式:2022-04-06"
  21. // @Success 200 {object} roadshow.RsReportRecordResp
  22. // @router /report/researcher/list [get]
  23. func (this *CalendarController) ResearcherReportList() {
  24. br := new(models.BaseResponse).Init()
  25. defer func() {
  26. this.Data["json"] = br
  27. this.ServeJSON()
  28. }()
  29. sysUser := this.SysUser
  30. if sysUser == nil {
  31. br.Msg = "请登录"
  32. br.ErrMsg = "请登录,SysUser Is Empty"
  33. br.Ret = 408
  34. return
  35. }
  36. dataType := this.GetString("DataType")
  37. startDate := this.GetString("StartDate")
  38. endDate := this.GetString("EndDate")
  39. var adminDataList []roadshowService.AdminDataMap
  40. var err error
  41. //var firstDate time.Time
  42. //获取列表
  43. switch dataType {
  44. case "week":
  45. adminDataList, _, err = roadshowService.GetWeekData("researcher", "company_status")
  46. if err != nil {
  47. br.Msg = "数据异常"
  48. br.ErrMsg = "数据异常,Err:" + err.Error()
  49. return
  50. }
  51. case "month":
  52. adminDataList, _, err = roadshowService.GetMonthData("researcher", "company_status")
  53. if err != nil {
  54. br.Msg = "数据异常"
  55. br.ErrMsg = "数据异常,Err:" + err.Error()
  56. return
  57. }
  58. case "time_interval":
  59. if startDate == `` || endDate == `` {
  60. br.Msg = "开始日期或结束日期不能为空"
  61. br.ErrMsg = "开始日期或结束日期不能为空,Err:" + err.Error()
  62. return
  63. }
  64. adminDataList, _, err = roadshowService.GetTimeIntervalData(startDate, endDate, "researcher", "company_status")
  65. if err != nil {
  66. br.Msg = "数据异常"
  67. br.ErrMsg = "数据异常,Err:" + err.Error()
  68. return
  69. }
  70. }
  71. group, err := roadshow.GetResearcherGroup()
  72. if err != nil {
  73. br.Msg = "获取信息失败!"
  74. br.ErrMsg = "获取分组信息失败!Err:" + err.Error()
  75. return
  76. }
  77. researcherList, err := roadshow.GetResearcherV2()
  78. if err != nil {
  79. br.Msg = "获取信息失败!"
  80. br.ErrMsg = "获取分组信息失败!,GetResearcherV2 Err:" + err.Error()
  81. return
  82. }
  83. groupMap := make(map[int][]*roadshow.Researcher)
  84. for _, v := range researcherList {
  85. //if v.RoleTypeCode == "ficc_admin" {
  86. // findItems := groupMap[1]
  87. // findItems = append(findItems, v)
  88. // groupMap[1] = findItems
  89. //} else {
  90. if findItems, ok := groupMap[v.GroupId]; ok {
  91. findItems = append(findItems, v)
  92. groupMap[v.GroupId] = findItems
  93. } else {
  94. findItems = append(findItems, v)
  95. groupMap[v.GroupId] = findItems
  96. }
  97. //}
  98. }
  99. groupReportRecordList := make([]roadshow.GroupReportRecord, 0)
  100. rsAllReportRecordNumList := make([]roadshow.RsReportRecordNum, 0)
  101. RsReportRecordResp := roadshow.RsReportRecordResp{
  102. List: groupReportRecordList,
  103. RsReportRecordNumList: rsAllReportRecordNumList,
  104. }
  105. startDateIndexList := make(map[int]string) //开始时间间隔map
  106. endDateIndexList := make(map[int]string) //结束时间间隔map
  107. tmpAllTryOutNumMap := make(map[int]int)
  108. tmpAllFormalNumMap := make(map[int]int)
  109. tmpAllMeetingNumMap := make(map[int]int)
  110. for _, v := range group {
  111. v.ResearcherList = groupMap[v.GroupId]
  112. tmpGroupAdminReportRecord := make([]roadshow.AdminReportRecord, 0)
  113. tmpGroupRsReportRecordNumList := make([]roadshow.RsReportRecordNum, 0)
  114. tmpGroupTryOutNumMap := make(map[int]int)
  115. tmpGroupFormalNumMap := make(map[int]int)
  116. tmpGroupMeetingNumMap := make(map[int]int)
  117. for _, researcher := range groupMap[v.GroupId] {
  118. //组内研究员数据
  119. //每个区间的数据
  120. tmpAdminRsReportRecordNumList := make([]roadshow.RsReportRecordNum, 0)
  121. for index, adminData := range adminDataList {
  122. startDateIndexList[index] = adminData.StartDate
  123. endDateIndexList[index] = adminData.EndDate
  124. var tmpTryOutNum, tmpFormalNum, tmpMeetingNum int
  125. if num, ok := adminData.TryOutMap[researcher.AdminId]; ok {
  126. tmpTryOutNum = num
  127. }
  128. if num, ok := adminData.FormalMap[researcher.AdminId]; ok {
  129. tmpFormalNum = num
  130. }
  131. if num, ok := adminData.MeetingMap[researcher.AdminId]; ok {
  132. tmpMeetingNum = num
  133. }
  134. tmpAdminRsReportRecordNum := roadshow.RsReportRecordNum{
  135. TryOutNum: tmpTryOutNum,
  136. FormalNum: tmpFormalNum,
  137. MeetingNum: tmpMeetingNum,
  138. StartDate: adminData.StartDate,
  139. EndDate: adminData.EndDate,
  140. }
  141. tmpAdminRsReportRecordNumList = append(tmpAdminRsReportRecordNumList, tmpAdminRsReportRecordNum)
  142. //组内数据汇总
  143. if _, ok := tmpGroupTryOutNumMap[index]; !ok {
  144. tmpGroupTryOutNumMap[index] = 0
  145. }
  146. if _, ok := tmpGroupFormalNumMap[index]; !ok {
  147. tmpGroupFormalNumMap[index] = 0
  148. }
  149. if _, ok := tmpGroupMeetingNumMap[index]; !ok {
  150. tmpGroupMeetingNumMap[index] = 0
  151. }
  152. tmpGroupTryOutNumMap[index] += tmpTryOutNum
  153. tmpGroupFormalNumMap[index] += tmpFormalNum
  154. tmpGroupMeetingNumMap[index] += tmpMeetingNum
  155. //总数据汇总
  156. if _, ok := tmpAllTryOutNumMap[index]; !ok {
  157. tmpAllTryOutNumMap[index] = 0
  158. }
  159. if _, ok := tmpAllFormalNumMap[index]; !ok {
  160. tmpAllFormalNumMap[index] = 0
  161. }
  162. if _, ok := tmpAllMeetingNumMap[index]; !ok {
  163. tmpAllMeetingNumMap[index] = 0
  164. }
  165. tmpAllTryOutNumMap[index] += tmpTryOutNum
  166. tmpAllFormalNumMap[index] += tmpFormalNum
  167. tmpAllMeetingNumMap[index] += tmpMeetingNum
  168. }
  169. tmpAdminReportRecord := roadshow.AdminReportRecord{
  170. Name: researcher.RealName,
  171. AdminId: researcher.AdminId,
  172. RsReportRecordNumList: tmpAdminRsReportRecordNumList,
  173. }
  174. tmpGroupAdminReportRecord = append(tmpGroupAdminReportRecord, tmpAdminReportRecord)
  175. }
  176. for i := 0; i < len(tmpGroupMeetingNumMap); i++ {
  177. tmpGroupRsReportRecordNum := roadshow.RsReportRecordNum{
  178. TryOutNum: tmpGroupTryOutNumMap[i],
  179. FormalNum: tmpGroupFormalNumMap[i],
  180. MeetingNum: tmpGroupMeetingNumMap[i],
  181. StartDate: startDateIndexList[i],
  182. EndDate: endDateIndexList[i],
  183. }
  184. tmpGroupRsReportRecordNumList = append(tmpGroupRsReportRecordNumList, tmpGroupRsReportRecordNum)
  185. }
  186. groupReportRecord := roadshow.GroupReportRecord{
  187. Item: tmpGroupAdminReportRecord,
  188. Name: v.GroupName,
  189. RsReportRecordNumList: tmpGroupRsReportRecordNumList,
  190. }
  191. RsReportRecordResp.List = append(RsReportRecordResp.List, groupReportRecord)
  192. }
  193. //总体汇总数据
  194. for i := 0; i < len(tmpAllFormalNumMap); i++ {
  195. tmpGroupRsReportRecordNum := roadshow.RsReportRecordNum{
  196. TryOutNum: tmpAllTryOutNumMap[i],
  197. FormalNum: tmpAllFormalNumMap[i],
  198. MeetingNum: tmpAllMeetingNumMap[i],
  199. StartDate: startDateIndexList[i],
  200. EndDate: endDateIndexList[i],
  201. }
  202. rsAllReportRecordNumList = append(rsAllReportRecordNumList, tmpGroupRsReportRecordNum)
  203. }
  204. RsReportRecordResp.RsReportRecordNumList = rsAllReportRecordNumList
  205. br.Ret = 200
  206. br.Success = true
  207. br.Msg = "获取成功"
  208. br.Data = RsReportRecordResp
  209. return
  210. }
  211. // SellerReportList
  212. // @Title 销售路演统计
  213. // @Description 销售路演统计接口
  214. // @Param DataType query string true "枚举值:week、month、time_interval、online、offline"
  215. // @Param DimensionType query string true "维度枚举值:company_status、roadshow_type"
  216. // @Param StartDate query string true "开始日期,格式:2022-04-06"
  217. // @Param EndDate query string true "结束日期,格式:2022-04-06"
  218. // @Success 200 {object} roadshow.RsReportRecordResp
  219. // @router /report/seller/list [get]
  220. func (this *CalendarController) SellerReportList() {
  221. br := new(models.BaseResponse).Init()
  222. defer func() {
  223. this.Data["json"] = br
  224. this.ServeJSON()
  225. }()
  226. sysUser := this.SysUser
  227. if sysUser == nil {
  228. br.Msg = "请登录"
  229. br.ErrMsg = "请登录,SysUser Is Empty"
  230. br.Ret = 408
  231. return
  232. }
  233. dataType := this.GetString("DataType")
  234. dimensionType := this.GetString("DimensionType")
  235. startDate := this.GetString("StartDate")
  236. endDate := this.GetString("EndDate")
  237. if dimensionType == "" {
  238. dimensionType = "company_status"
  239. }
  240. var adminDataList []roadshowService.AdminDataMap
  241. var err error
  242. var firstDate time.Time
  243. //获取列表
  244. switch dataType {
  245. case "week":
  246. adminDataList, firstDate, err = roadshowService.GetWeekDataV2("seller", dimensionType, 6)
  247. if err != nil {
  248. br.Msg = "数据异常"
  249. br.ErrMsg = "数据异常,Err:" + err.Error()
  250. return
  251. }
  252. case "month":
  253. adminDataList, firstDate, err = roadshowService.GetMonthDataV2("seller", dimensionType, 6)
  254. if err != nil {
  255. br.Msg = "数据异常"
  256. br.ErrMsg = "数据异常,Err:" + err.Error()
  257. return
  258. }
  259. case "time_interval":
  260. if startDate == `` || endDate == `` {
  261. br.Msg = "开始日期或结束日期不能为空"
  262. br.ErrMsg = "开始日期或结束日期不能为空,Err:" + err.Error()
  263. return
  264. }
  265. adminDataList, firstDate, err = roadshowService.GetTimeIntervalData(startDate, endDate, "seller", dimensionType)
  266. if err != nil {
  267. br.Msg = "数据异常"
  268. br.ErrMsg = "数据异常,Err:" + err.Error()
  269. return
  270. }
  271. }
  272. group, groupIdRelationMap, err := services.GetFiccSystemGroup()
  273. if err != nil {
  274. br.Msg = "获取信息失败!"
  275. br.ErrMsg = "获取分组信息失败!Err:" + err.Error()
  276. return
  277. }
  278. researcherList, err := services.GetFiccSeller(firstDate, groupIdRelationMap)
  279. groupMap := make(map[int][]*roadshow.Researcher)
  280. for _, v := range researcherList {
  281. if v.RoleTypeCode == "ficc_admin" {
  282. findItems := groupMap[1]
  283. findItems = append(findItems, v)
  284. groupMap[1] = findItems
  285. } else {
  286. if findItems, ok := groupMap[v.GroupId]; ok {
  287. findItems = append(findItems, v)
  288. groupMap[v.GroupId] = findItems
  289. } else {
  290. findItems = append(findItems, v)
  291. groupMap[v.GroupId] = findItems
  292. }
  293. }
  294. }
  295. groupReportRecordList := make([]roadshow.GroupReportRecord, 0)
  296. rsAllReportRecordNumList := make([]roadshow.RsReportRecordNum, 0)
  297. RsReportRecordResp := roadshow.RsReportRecordResp{
  298. List: groupReportRecordList,
  299. RsReportRecordNumList: rsAllReportRecordNumList,
  300. }
  301. startDateIndexList := make(map[int]string) //开始时间间隔map
  302. endDateIndexList := make(map[int]string) //结束时间间隔map
  303. tmpAllTryOutNumMap := make(map[int]int)
  304. tmpAllFormalNumMap := make(map[int]int)
  305. tmpAllMeetingNumMap := make(map[int]int)
  306. tmpAllOnlineNumMap := make(map[int]int)
  307. tmpAllOfflineNumMap := make(map[int]int)
  308. for _, v := range group {
  309. v.ResearcherList = groupMap[v.GroupId]
  310. tmpGroupAdminReportRecord := make([]roadshow.AdminReportRecord, 0)
  311. tmpGroupRsReportRecordNumList := make([]roadshow.RsReportRecordNum, 0)
  312. tmpGroupTryOutNumMap := make(map[int]int)
  313. tmpGroupFormalNumMap := make(map[int]int)
  314. tmpGroupMeetingNumMap := make(map[int]int)
  315. tmpGroupOnlineNumMap := make(map[int]int)
  316. tmpGroupOfflineNumMap := make(map[int]int)
  317. for _, researcher := range groupMap[v.GroupId] {
  318. //组内研究员数据
  319. //每个区间的数据
  320. tmpAdminRsReportRecordNumList := make([]roadshow.RsReportRecordNum, 0)
  321. for index, adminData := range adminDataList {
  322. startDateIndexList[index] = adminData.StartDate
  323. endDateIndexList[index] = adminData.EndDate
  324. var tmpTryOutNum, tmpFormalNum, tmpMeetingNum, tmpOnlineNum, tmpOfflineNum int
  325. if num, ok := adminData.TryOutMap[researcher.AdminId]; ok {
  326. tmpTryOutNum = num
  327. }
  328. if num, ok := adminData.FormalMap[researcher.AdminId]; ok {
  329. tmpFormalNum = num
  330. }
  331. if num, ok := adminData.MeetingMap[researcher.AdminId]; ok {
  332. tmpMeetingNum = num
  333. }
  334. if num, ok := adminData.OnlineMap[researcher.AdminId]; ok {
  335. tmpOnlineNum = num
  336. }
  337. if num, ok := adminData.OfflineMap[researcher.AdminId]; ok {
  338. tmpOfflineNum = num
  339. }
  340. tmpAdminRsReportRecordNum := roadshow.RsReportRecordNum{
  341. TryOutNum: tmpTryOutNum,
  342. FormalNum: tmpFormalNum,
  343. MeetingNum: tmpMeetingNum,
  344. OnlineNum: tmpOnlineNum,
  345. OfflineNum: tmpOfflineNum,
  346. StartDate: adminData.StartDate,
  347. EndDate: adminData.EndDate,
  348. }
  349. tmpAdminRsReportRecordNumList = append(tmpAdminRsReportRecordNumList, tmpAdminRsReportRecordNum)
  350. //组内数据汇总
  351. if _, ok := tmpGroupTryOutNumMap[index]; !ok {
  352. tmpGroupTryOutNumMap[index] = 0
  353. }
  354. if _, ok := tmpGroupFormalNumMap[index]; !ok {
  355. tmpGroupFormalNumMap[index] = 0
  356. }
  357. if _, ok := tmpGroupMeetingNumMap[index]; !ok {
  358. tmpGroupMeetingNumMap[index] = 0
  359. }
  360. if _, ok := tmpGroupOnlineNumMap[index]; !ok {
  361. tmpGroupOnlineNumMap[index] = 0
  362. }
  363. if _, ok := tmpGroupOfflineNumMap[index]; !ok {
  364. tmpGroupOfflineNumMap[index] = 0
  365. }
  366. tmpGroupTryOutNumMap[index] += tmpTryOutNum
  367. tmpGroupFormalNumMap[index] += tmpFormalNum
  368. tmpGroupMeetingNumMap[index] += tmpMeetingNum
  369. tmpGroupOnlineNumMap[index] += tmpOnlineNum
  370. tmpGroupOfflineNumMap[index] += tmpOfflineNum
  371. //总数据汇总
  372. if _, ok := tmpAllTryOutNumMap[index]; !ok {
  373. tmpAllTryOutNumMap[index] = 0
  374. }
  375. if _, ok := tmpAllFormalNumMap[index]; !ok {
  376. tmpAllFormalNumMap[index] = 0
  377. }
  378. if _, ok := tmpAllMeetingNumMap[index]; !ok {
  379. tmpAllMeetingNumMap[index] = 0
  380. }
  381. if _, ok := tmpAllOnlineNumMap[index]; !ok {
  382. tmpAllOnlineNumMap[index] = 0
  383. }
  384. if _, ok := tmpAllOfflineNumMap[index]; !ok {
  385. tmpAllOfflineNumMap[index] = 0
  386. }
  387. tmpAllTryOutNumMap[index] += tmpTryOutNum
  388. tmpAllFormalNumMap[index] += tmpFormalNum
  389. tmpAllMeetingNumMap[index] += tmpMeetingNum
  390. tmpAllOnlineNumMap[index] += tmpOnlineNum
  391. tmpAllOfflineNumMap[index] += tmpOfflineNum
  392. }
  393. tmpAdminReportRecord := roadshow.AdminReportRecord{
  394. Name: researcher.RealName,
  395. AdminId: researcher.AdminId,
  396. RsReportRecordNumList: tmpAdminRsReportRecordNumList,
  397. }
  398. tmpGroupAdminReportRecord = append(tmpGroupAdminReportRecord, tmpAdminReportRecord)
  399. }
  400. for i := 0; i < len(tmpGroupMeetingNumMap); i++ {
  401. tmpGroupRsReportRecordNum := roadshow.RsReportRecordNum{
  402. TryOutNum: tmpGroupTryOutNumMap[i],
  403. FormalNum: tmpGroupFormalNumMap[i],
  404. MeetingNum: tmpGroupMeetingNumMap[i],
  405. OnlineNum: tmpGroupOnlineNumMap[i],
  406. OfflineNum: tmpGroupOfflineNumMap[i],
  407. StartDate: startDateIndexList[i],
  408. EndDate: endDateIndexList[i],
  409. }
  410. tmpGroupRsReportRecordNumList = append(tmpGroupRsReportRecordNumList, tmpGroupRsReportRecordNum)
  411. }
  412. groupReportRecord := roadshow.GroupReportRecord{
  413. Item: tmpGroupAdminReportRecord,
  414. Name: v.GroupName,
  415. GruopId: v.GroupId,
  416. RsReportRecordNumList: tmpGroupRsReportRecordNumList,
  417. }
  418. groupReportRecordList = append(groupReportRecordList, groupReportRecord)
  419. }
  420. //总体汇总数据
  421. for i := 0; i < len(tmpAllFormalNumMap); i++ {
  422. tmpGroupRsReportRecordNum := roadshow.RsReportRecordNum{
  423. TryOutNum: tmpAllTryOutNumMap[i],
  424. FormalNum: tmpAllFormalNumMap[i],
  425. MeetingNum: tmpAllMeetingNumMap[i],
  426. OnlineNum: tmpAllOnlineNumMap[i],
  427. OfflineNum: tmpAllOfflineNumMap[i],
  428. StartDate: startDateIndexList[i],
  429. EndDate: endDateIndexList[i],
  430. }
  431. rsAllReportRecordNumList = append(rsAllReportRecordNumList, tmpGroupRsReportRecordNum)
  432. }
  433. RsReportRecordResp.RsReportRecordNumList = rsAllReportRecordNumList
  434. //tmpList := groupReportRecordList
  435. //因为RoleTypeCode不一样,所以需要重新从数据库取数据
  436. //adminInfo, _ := system.GetSysAdminById(sysUser.AdminId)
  437. //adminGroupId := adminInfo.GroupId
  438. //if tmpGroupId, ok := groupIdRelationMap[adminGroupId]; ok {
  439. // adminGroupId = tmpGroupId
  440. //}
  441. //switch adminInfo.RoleTypeCode {
  442. //case utils.ROLE_TYPE_CODE_FICC_GROUP, utils.ROLE_TYPE_CODE_FICC_TEAM:
  443. // for index, v := range tmpList {
  444. // //如果不是同一个分组,那么就移除该分组下的人员数据
  445. // if v.GruopId != adminGroupId {
  446. // tmpList[index].Item = make([]roadshow.AdminReportRecord, 0)
  447. // }
  448. // }
  449. // RsReportRecordResp.List = tmpList
  450. //case utils.ROLE_TYPE_CODE_FICC_ADMIN, utils.ROLE_TYPE_CODE_ADMIN:
  451. // //管理员、超管看全部数据
  452. // RsReportRecordResp.List = groupReportRecordList
  453. //}
  454. // 20230529-有权限查看该页面的用户权限同admin
  455. RsReportRecordResp.List = groupReportRecordList
  456. br.Ret = 200
  457. br.Success = true
  458. br.Msg = "获取成功"
  459. br.Data = RsReportRecordResp
  460. return
  461. }
  462. // ReportCalendarList
  463. // @Title 路演详情列表
  464. // @Description 路演详情列表接口
  465. // @Param AdminType query string true "枚举值:researcher、seller、 special:专项路演"
  466. // @Param DataType query string true "枚举值:try_out、formal、meeting、online、offline"
  467. // @Param AdminId query int true "用户id"
  468. // @Param StartDate query string true "开始日期,格式:2022-04-06"
  469. // @Param EndDate query string true "结束日期,格式:2022-04-06"
  470. // @Success 200 {object} []roadshow.RsReportRecordList
  471. // @router /report/calendar/list [get]
  472. func (this *CalendarController) ReportCalendarList() {
  473. br := new(models.BaseResponse).Init()
  474. defer func() {
  475. this.Data["json"] = br
  476. this.ServeJSON()
  477. }()
  478. sysUser := this.SysUser
  479. if sysUser == nil {
  480. br.Msg = "请登录"
  481. br.ErrMsg = "请登录,SysUser Is Empty"
  482. br.Ret = 408
  483. return
  484. }
  485. adminType := this.GetString("AdminType")
  486. dataType := this.GetString("DataType")
  487. startDate := this.GetString("StartDate")
  488. endDate := this.GetString("EndDate")
  489. adminId, _ := this.GetInt("AdminId")
  490. if adminId <= 0 {
  491. br.Msg = "请传入对应的人员"
  492. return
  493. }
  494. //正式客户
  495. var condition string
  496. var pars []interface{}
  497. condition = ` and a.start_date >= ? and a.end_date <= ? `
  498. pars = append(pars, startDate, endDate)
  499. //选择的人员类型(发起人还是被发起人)
  500. if adminType == "seller" {
  501. condition += ` and a.seller_id = ? `
  502. } else if adminType == "special" {
  503. condition += ` and a.seller_id = ? `
  504. detail, err := company.GetConfigDetailByCode("choice_researcher_adminid")
  505. if err != nil {
  506. br.Msg = "获取研究员信息失败!"
  507. br.ErrMsg = "选择研究员失败,Err:" + err.Error()
  508. return
  509. }
  510. condition += ` and a.researcher_id IN (` + detail.ConfigValue + `) `
  511. } else {
  512. condition += ` and a.researcher_id = ? `
  513. }
  514. pars = append(pars, adminId)
  515. //获取列表
  516. switch dataType {
  517. case "try_out":
  518. condition += ` and a.company_status = ? `
  519. pars = append(pars, "试用")
  520. case "formal":
  521. condition += ` and a.company_status = ? `
  522. pars = append(pars, "正式")
  523. case "meeting":
  524. condition += ` and a.activity_type = ? `
  525. pars = append(pars, "公开会议")
  526. case "online":
  527. condition += ` and a.roadshow_type = ? `
  528. pars = append(pars, "线上")
  529. case "offline":
  530. condition += ` and a.roadshow_type = ? `
  531. pars = append(pars, "线下")
  532. default:
  533. br.Msg = "请传入类型"
  534. br.ErrMsg = "请传入类型DataType"
  535. return
  536. }
  537. list, err := roadshow.GetRsReportRecordList(condition, pars)
  538. if err != nil {
  539. br.Msg = "获取失败"
  540. br.ErrMsg = "获取失败,ERR:" + err.Error()
  541. return
  542. }
  543. br.Ret = 200
  544. br.Success = true
  545. br.Msg = "获取成功"
  546. br.Data = list
  547. return
  548. }
  549. // ChoiceResearcher
  550. // @Title 选择的研究员
  551. // @Description 选择的研究员接口
  552. // @Param AdminIds query string true "研究员ID ,多个用 , 隔开"
  553. // @Success 200 操作成功
  554. // @router /report/choice/researcher [post]
  555. func (this *CalendarController) ChoiceResearcher() {
  556. br := new(models.BaseResponse).Init()
  557. defer func() {
  558. this.Data["json"] = br
  559. this.ServeJSON()
  560. }()
  561. sysUser := this.SysUser
  562. if sysUser == nil {
  563. br.Msg = "请登录"
  564. br.ErrMsg = "请登录,SysUser Is Empty"
  565. br.Ret = 408
  566. return
  567. }
  568. var req roadshow.ResearcherIds
  569. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  570. if err != nil {
  571. br.Msg = "参数解析异常!"
  572. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  573. return
  574. }
  575. if req.AdminIds == "" {
  576. req.AdminIds = "0"
  577. }
  578. adminIdArr := strings.Split(req.AdminIds, ",")
  579. for _, v := range adminIdArr {
  580. _, err := strconv.Atoi(v)
  581. if err != nil {
  582. br.Msg = "选择研究员失败!"
  583. br.ErrMsg = "选择研究员失败,Err:" + err.Error()
  584. return
  585. }
  586. }
  587. err = company.CrmConfigUpdate(req.AdminIds, "choice_researcher_adminid")
  588. if err != nil {
  589. br.Msg = "操作失败"
  590. br.ErrMsg = "操作失败,Err:" + err.Error()
  591. return
  592. }
  593. br.Ret = 200
  594. br.Success = true
  595. br.Msg = "操作成功"
  596. return
  597. }
  598. // AdminList
  599. // @Title 选择的研究员列表
  600. // @Description 获取选择的研究员列表
  601. // @Success 200 {object} roadshow.Researcher
  602. // @Success 200 操作成功
  603. // @router /report/admin/list [get]
  604. func (this *CalendarController) AdminList() {
  605. br := new(models.BaseResponse).Init()
  606. defer func() {
  607. this.Data["json"] = br
  608. this.ServeJSON()
  609. }()
  610. sysUser := this.SysUser
  611. if sysUser == nil {
  612. br.Msg = "请登录"
  613. br.ErrMsg = "请登录,SysUser Is Empty"
  614. br.Ret = 408
  615. return
  616. }
  617. detail, err := company.GetConfigDetailByCode("choice_researcher_adminid")
  618. if err != nil {
  619. br.Msg = "获取研究员信息失败!"
  620. br.ErrMsg = "选择研究员失败,Err:" + err.Error()
  621. return
  622. }
  623. list, err := roadshow.GetChoiceResearcher(detail.ConfigValue)
  624. if err != nil {
  625. br.Msg = "操作失败"
  626. br.ErrMsg = "操作失败,Err:" + err.Error()
  627. return
  628. }
  629. br.Ret = 200
  630. br.Success = true
  631. br.Msg = "操作成功"
  632. br.Data = list
  633. return
  634. }
  635. // SellerReportList
  636. // @Title 专项路演统计
  637. // @Description 专项路演统计接口
  638. // @Success 200 {object} roadshow.RsReportRecordResp
  639. // @router /report/special/list [get]
  640. func (this *CalendarController) SpecialReportList() {
  641. br := new(models.BaseResponse).Init()
  642. defer func() {
  643. this.Data["json"] = br
  644. this.ServeJSON()
  645. }()
  646. sysUser := this.SysUser
  647. if sysUser == nil {
  648. br.Msg = "请登录"
  649. br.ErrMsg = "请登录,SysUser Is Empty"
  650. br.Ret = 408
  651. return
  652. }
  653. dimensionType := this.GetString("DimensionType")
  654. if dimensionType == "" {
  655. dimensionType = "seller_special"
  656. }
  657. var adminDataList []roadshowService.AdminDataMap
  658. var err error
  659. var firstDate time.Time
  660. //获取列表
  661. adminDataList, firstDate, err = roadshowService.GetWeekData("seller", dimensionType)
  662. if err != nil {
  663. br.Msg = "数据异常"
  664. br.ErrMsg = "数据异常,Err:" + err.Error()
  665. return
  666. }
  667. var haveData bool
  668. detail, err := company.GetConfigDetailByCode("choice_researcher_adminid")
  669. if err != nil {
  670. br.Msg = "获取信息失败!"
  671. br.ErrMsg = "获取选择研究员信息失败,Err:" + err.Error()
  672. return
  673. }
  674. adminMap := make(map[int]int)
  675. adminIdArr := strings.Split(detail.ConfigValue, ",")
  676. for _, v := range adminIdArr {
  677. adminId, err := strconv.Atoi(v)
  678. if err != nil {
  679. br.Msg = "获取信息失败!"
  680. br.ErrMsg = "获取选择研究员信息失败,Err:" + err.Error()
  681. return
  682. }
  683. adminMap[adminId] = adminId
  684. }
  685. group, groupIdRelationMap, err := services.GetFiccSystemGroup()
  686. if err != nil {
  687. br.Msg = "获取信息失败!"
  688. br.ErrMsg = "获取分组信息失败!Err:" + err.Error()
  689. return
  690. }
  691. researcherList, err := services.GetFiccSeller(firstDate, groupIdRelationMap)
  692. groupMap := make(map[int][]*roadshow.Researcher)
  693. for _, v := range researcherList {
  694. //if v.RoleTypeCode == "ficc_admin" {
  695. // findItems := groupMap[1]
  696. // findItems = append(findItems, v)
  697. // groupMap[1] = findItems
  698. //} else {
  699. if findItems, ok := groupMap[v.GroupId]; ok {
  700. findItems = append(findItems, v)
  701. groupMap[v.GroupId] = findItems
  702. } else {
  703. findItems = append(findItems, v)
  704. groupMap[v.GroupId] = findItems
  705. }
  706. //}
  707. }
  708. groupReportRecordList := make([]roadshow.GroupReportRecord, 0)
  709. rsAllReportRecordNumList := make([]roadshow.RsReportRecordNum, 0)
  710. RsReportRecordResp := roadshow.RsReportRecordResp{
  711. List: groupReportRecordList,
  712. RsReportRecordNumList: rsAllReportRecordNumList,
  713. }
  714. startDateIndexList := make(map[int]string) //开始时间间隔map
  715. endDateIndexList := make(map[int]string) //结束时间间隔map
  716. tmpAllTryOutNumMap := make(map[int]int)
  717. tmpAllFormalNumMap := make(map[int]int)
  718. tmpAllMeetingNumMap := make(map[int]int)
  719. tmpAllOnlineNumMap := make(map[int]int)
  720. tmpAllOfflineNumMap := make(map[int]int)
  721. for _, v := range group {
  722. v.ResearcherList = groupMap[v.GroupId]
  723. tmpGroupAdminReportRecord := make([]roadshow.AdminReportRecord, 0)
  724. tmpGroupRsReportRecordNumList := make([]roadshow.RsReportRecordNum, 0)
  725. tmpGroupTryOutNumMap := make(map[int]int)
  726. tmpGroupFormalNumMap := make(map[int]int)
  727. tmpGroupMeetingNumMap := make(map[int]int)
  728. tmpGroupOnlineNumMap := make(map[int]int)
  729. tmpGroupOfflineNumMap := make(map[int]int)
  730. for _, researcher := range groupMap[v.GroupId] {
  731. //组内研究员数据
  732. var isLook bool
  733. //如果是管理员或者本组的可以查看详情
  734. if sysUser.GroupId == v.GroupId || sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_ADMIN {
  735. isLook = true
  736. }
  737. //每个区间的数据
  738. tmpAdminRsReportRecordNumList := make([]roadshow.RsReportRecordNum, 0)
  739. var isAppend bool
  740. for index, adminData := range adminDataList {
  741. startDateIndexList[index] = adminData.StartDate
  742. endDateIndexList[index] = adminData.EndDate
  743. var tmpTryOutNum, tmpFormalNum, tmpMeetingNum, tmpOnlineNum, tmpOfflineNum int
  744. if num, ok := adminData.TryOutMap[researcher.AdminId]; ok {
  745. tmpTryOutNum = num
  746. }
  747. if num, ok := adminData.FormalMap[researcher.AdminId]; ok {
  748. tmpFormalNum = num
  749. }
  750. if num, ok := adminData.MeetingMap[researcher.AdminId]; ok {
  751. tmpMeetingNum = num
  752. }
  753. if num, ok := adminData.OnlineMap[researcher.AdminId]; ok {
  754. tmpOnlineNum = num
  755. }
  756. if num, ok := adminData.OfflineMap[researcher.AdminId]; ok {
  757. tmpOfflineNum = num
  758. }
  759. tmpAdminRsReportRecordNum := roadshow.RsReportRecordNum{
  760. TryOutNum: tmpTryOutNum,
  761. FormalNum: tmpFormalNum,
  762. MeetingNum: tmpMeetingNum,
  763. OnlineNum: tmpOnlineNum,
  764. OfflineNum: tmpOfflineNum,
  765. StartDate: adminData.StartDate,
  766. EndDate: adminData.EndDate,
  767. IsLook: isLook,
  768. }
  769. if tmpTryOutNum > 0 || tmpFormalNum > 0 || tmpMeetingNum > 0 || tmpOnlineNum > 0 || tmpOfflineNum > 0 {
  770. isAppend = true
  771. haveData = true
  772. }
  773. tmpAdminRsReportRecordNumList = append(tmpAdminRsReportRecordNumList, tmpAdminRsReportRecordNum)
  774. //组内数据汇总
  775. if _, ok := tmpGroupTryOutNumMap[index]; !ok {
  776. tmpGroupTryOutNumMap[index] = 0
  777. }
  778. if _, ok := tmpGroupFormalNumMap[index]; !ok {
  779. tmpGroupFormalNumMap[index] = 0
  780. }
  781. if _, ok := tmpGroupMeetingNumMap[index]; !ok {
  782. tmpGroupMeetingNumMap[index] = 0
  783. }
  784. if _, ok := tmpGroupOnlineNumMap[index]; !ok {
  785. tmpGroupOnlineNumMap[index] = 0
  786. }
  787. if _, ok := tmpGroupOfflineNumMap[index]; !ok {
  788. tmpGroupOfflineNumMap[index] = 0
  789. }
  790. tmpGroupTryOutNumMap[index] += tmpTryOutNum
  791. tmpGroupFormalNumMap[index] += tmpFormalNum
  792. tmpGroupMeetingNumMap[index] += tmpMeetingNum
  793. tmpGroupOnlineNumMap[index] += tmpOnlineNum
  794. tmpGroupOfflineNumMap[index] += tmpOfflineNum
  795. //总数据汇总
  796. if _, ok := tmpAllTryOutNumMap[index]; !ok {
  797. tmpAllTryOutNumMap[index] = 0
  798. }
  799. if _, ok := tmpAllFormalNumMap[index]; !ok {
  800. tmpAllFormalNumMap[index] = 0
  801. }
  802. if _, ok := tmpAllMeetingNumMap[index]; !ok {
  803. tmpAllMeetingNumMap[index] = 0
  804. }
  805. if _, ok := tmpAllOnlineNumMap[index]; !ok {
  806. tmpAllOnlineNumMap[index] = 0
  807. }
  808. if _, ok := tmpAllOfflineNumMap[index]; !ok {
  809. tmpAllOfflineNumMap[index] = 0
  810. }
  811. tmpAllTryOutNumMap[index] += tmpTryOutNum
  812. tmpAllFormalNumMap[index] += tmpFormalNum
  813. tmpAllMeetingNumMap[index] += tmpMeetingNum
  814. tmpAllOnlineNumMap[index] += tmpOnlineNum
  815. tmpAllOfflineNumMap[index] += tmpOfflineNum
  816. }
  817. tmpAdminReportRecord := roadshow.AdminReportRecord{
  818. Name: researcher.RealName,
  819. AdminId: researcher.AdminId,
  820. RsReportRecordNumList: tmpAdminRsReportRecordNumList,
  821. }
  822. if isAppend {
  823. tmpGroupAdminReportRecord = append(tmpGroupAdminReportRecord, tmpAdminReportRecord)
  824. }
  825. }
  826. for i := 0; i < len(tmpGroupMeetingNumMap); i++ {
  827. tmpGroupRsReportRecordNum := roadshow.RsReportRecordNum{
  828. TryOutNum: tmpGroupTryOutNumMap[i],
  829. FormalNum: tmpGroupFormalNumMap[i],
  830. MeetingNum: tmpGroupMeetingNumMap[i],
  831. OnlineNum: tmpGroupOnlineNumMap[i],
  832. OfflineNum: tmpGroupOfflineNumMap[i],
  833. StartDate: startDateIndexList[i],
  834. EndDate: endDateIndexList[i],
  835. }
  836. tmpGroupRsReportRecordNumList = append(tmpGroupRsReportRecordNumList, tmpGroupRsReportRecordNum)
  837. }
  838. groupReportRecord := roadshow.GroupReportRecord{
  839. Item: tmpGroupAdminReportRecord,
  840. Name: v.GroupName,
  841. GruopId: v.GroupId,
  842. RsReportRecordNumList: tmpGroupRsReportRecordNumList,
  843. }
  844. if len(tmpGroupAdminReportRecord) > 0 {
  845. groupReportRecordList = append(groupReportRecordList, groupReportRecord)
  846. }
  847. }
  848. //总体汇总数据
  849. for i := 0; i < len(tmpAllFormalNumMap); i++ {
  850. tmpGroupRsReportRecordNum := roadshow.RsReportRecordNum{
  851. TryOutNum: tmpAllTryOutNumMap[i],
  852. FormalNum: tmpAllFormalNumMap[i],
  853. MeetingNum: tmpAllMeetingNumMap[i],
  854. OnlineNum: tmpAllOnlineNumMap[i],
  855. OfflineNum: tmpAllOfflineNumMap[i],
  856. StartDate: startDateIndexList[i],
  857. EndDate: endDateIndexList[i],
  858. }
  859. rsAllReportRecordNumList = append(rsAllReportRecordNumList, tmpGroupRsReportRecordNum)
  860. }
  861. RsReportRecordResp.RsReportRecordNumList = rsAllReportRecordNumList
  862. tmpList := groupReportRecordList
  863. //因为RoleTypeCode不一样,所以需要重新从数据库取数据
  864. adminInfo, _ := system.GetSysAdminById(sysUser.AdminId)
  865. adminGroupId := adminInfo.GroupId
  866. if tmpGroupId, ok := groupIdRelationMap[adminGroupId]; ok {
  867. adminGroupId = tmpGroupId
  868. }
  869. switch adminInfo.RoleTypeCode {
  870. case utils.ROLE_TYPE_CODE_FICC_GROUP, utils.ROLE_TYPE_CODE_FICC_TEAM:
  871. for index, v := range tmpList {
  872. //如果不是同一个分组,那么就移除该分组下的人员数据
  873. if v.GruopId != adminGroupId {
  874. tmpList[index].Item = make([]roadshow.AdminReportRecord, 0)
  875. }
  876. }
  877. RsReportRecordResp.List = tmpList
  878. case utils.ROLE_TYPE_CODE_FICC_ADMIN, utils.ROLE_TYPE_CODE_ADMIN:
  879. //管理员、超管看全部数据
  880. RsReportRecordResp.List = groupReportRecordList
  881. }
  882. //判断是否有数据如果没有,处理数据为空
  883. if !haveData {
  884. RsReportRecordResp = roadshow.RsReportRecordResp{
  885. List: make([]roadshow.GroupReportRecord, 0),
  886. RsReportRecordNumList: make([]roadshow.RsReportRecordNum, 0),
  887. }
  888. }
  889. br.Ret = 200
  890. br.Success = true
  891. br.Msg = "获取成功"
  892. br.Data = RsReportRecordResp
  893. return
  894. }
  895. // ResearcherReportList
  896. // @Title 研究员出差表
  897. // @Description 研究员出差表接口
  898. // @Param AdminId query int true "研究员id"
  899. // @Param WeekQuery query int false "周查询: 0-本期(本周及下周); 1-前两周; 2-后两周"
  900. // @Param BaseQueryDate query string false "周查询时的开始日期"
  901. // @Success 200 {object} roadshow.BusinessTripResp
  902. // @router /report/researcher/business_trip [get]
  903. func (this *CalendarController) ResearcherBusinessTrip() {
  904. br := new(models.BaseResponse).Init()
  905. defer func() {
  906. this.Data["json"] = br
  907. this.ServeJSON()
  908. }()
  909. sysUser := this.SysUser
  910. if sysUser == nil {
  911. br.Msg = "请登录"
  912. br.ErrMsg = "请登录,SysUser Is Empty"
  913. br.Ret = 408
  914. return
  915. }
  916. adminId, _ := this.GetInt("AdminId")
  917. weekQuery, _ := this.GetInt("WeekQuery")
  918. baseQueryDate := this.GetString("BaseQueryDate")
  919. //fmt.Println(adminId)
  920. group, err := roadshow.GetResearcherGroup()
  921. if err != nil {
  922. br.Msg = "获取信息失败!"
  923. br.ErrMsg = "获取分组信息失败!Err:" + err.Error()
  924. return
  925. }
  926. researcherList, err := roadshow.GetBusinessTripResearcher()
  927. if err != nil {
  928. br.Msg = "获取信息失败!"
  929. br.ErrMsg = "获取分组信息失败!,GetBusinessTripResearcher Err:" + err.Error()
  930. return
  931. }
  932. ////获取当天周日期
  933. //nowWeekStart := utils.GetNowWeekMonday().AddDate(0, 0, -2)
  934. ////nowWeekEnd := utils.GetNowWeekLastDay()
  935. ////获取下周日期
  936. //nextWeekStart := utils.GetNextWeekMonday().AddDate(0, 0, -2)
  937. //nextWeekEnd := utils.GetNextWeekLastDay().AddDate(0, 0, -2)
  938. var nowWeekStart time.Time
  939. if baseQueryDate == "" {
  940. now := time.Now()
  941. weekDay := int(now.Weekday())
  942. if weekDay == 6 {
  943. nowWeekStart, _ = time.ParseInLocation(utils.FormatDate, now.Format(utils.FormatDate), time.Local)
  944. } else {
  945. nowWeekStart, _ = time.ParseInLocation(utils.FormatDate, now.AddDate(0, 0, -(weekDay+1)).Format(utils.FormatDate), time.Local)
  946. }
  947. }
  948. // 查询需求是可以无限往前后两周查询, 以入参为本周开始日期
  949. if baseQueryDate != "" {
  950. t, e := time.ParseInLocation(utils.FormatDate, baseQueryDate, time.Local)
  951. if e != nil {
  952. br.Msg = "查询开始日期格式有误"
  953. return
  954. }
  955. nowWeekStart = t
  956. }
  957. // 前/后两周
  958. if weekQuery == 1 {
  959. nowWeekStart = nowWeekStart.AddDate(0, 0, -14)
  960. }
  961. if weekQuery == 2 {
  962. nowWeekStart = nowWeekStart.AddDate(0, 0, +14)
  963. }
  964. //nowWeekEnd := utils.GetNowWeekLastDay()
  965. //获取下周日期
  966. nextWeekStart := nowWeekStart.AddDate(0, 0, +7)
  967. nextWeekEnd := nowWeekStart.AddDate(0, 0, +13)
  968. //获取路演信息
  969. roadshowList, err := roadshow.GetBusinessTripList(adminId, nowWeekStart.Format(utils.FormatDate), nextWeekEnd.Format(utils.FormatDateTime))
  970. if err != nil {
  971. br.Msg = "获取信息失败!"
  972. br.ErrMsg = "获取路演信息失败!,GetBusinessTripList Err:" + err.Error()
  973. return
  974. }
  975. roadshowMap := make(map[int][]*roadshow.BusinessTripResearcherList)
  976. for _, v := range roadshowList {
  977. if findVals, ok := roadshowMap[v.ResearcherId]; ok {
  978. findVals = append(findVals, v)
  979. roadshowMap[v.ResearcherId] = findVals
  980. } else {
  981. roadsItems := make([]*roadshow.BusinessTripResearcherList, 0)
  982. roadsItems = append(roadsItems, v)
  983. roadshowMap[v.ResearcherId] = roadsItems
  984. }
  985. }
  986. //fmt.Println("roadshow json start")
  987. //jsonBody, err := json.Marshal(roadshowMap)
  988. //fmt.Println("json body:" + string(jsonBody))
  989. //fmt.Println("roadshow json end")
  990. groupMap := make(map[int][]*roadshow.BusinessTripResearcher)
  991. for _, v := range researcherList {
  992. if findRoadshowList, ok := roadshowMap[v.AdminId]; ok {
  993. tripList := make([]*roadshow.BusinessTrip, 0)
  994. researcherMap := make(map[string]string)
  995. for i := 0; i < 7; i++ {
  996. newDay, _ := time.ParseInLocation(utils.FormatDate, nowWeekStart.AddDate(0, 0, i).Format(utils.FormatDate), time.Local)
  997. weekDate := newDay.Format(utils.FormatDate)
  998. tripItem := new(roadshow.BusinessTrip)
  999. for _, r := range findRoadshowList {
  1000. startDateT, _ := time.ParseInLocation(utils.FormatDate, r.StartDate, time.Local)
  1001. endDateT, _ := time.ParseInLocation(utils.FormatDate, r.EndDate, time.Local)
  1002. if int(endDateT.Sub(startDateT)) <= 0 {
  1003. skey := strconv.Itoa(r.ResearcherId) + r.StartDate
  1004. if _, sok := researcherMap[skey]; !sok {
  1005. if r != nil && (newDay.Equal(startDateT) || (newDay.Equal(endDateT)) || (newDay.Before(endDateT) && newDay.After(startDateT))) {
  1006. tripItem.City = r.City
  1007. researcherMap[skey] = skey
  1008. }
  1009. }
  1010. } else {
  1011. if r != nil && (newDay.Equal(startDateT) || (newDay.Equal(endDateT)) || (newDay.Before(endDateT) && newDay.After(startDateT))) {
  1012. tripItem.City = r.City
  1013. //researcherMap[skey] = skey
  1014. }
  1015. }
  1016. }
  1017. tripItem.WeekDate = weekDate
  1018. tripItem.WeekType = "current"
  1019. tripItem.Week = newDay.Weekday().String()
  1020. tripList = append(tripList, tripItem)
  1021. }
  1022. for i := 0; i < 7; i++ {
  1023. newDay := nextWeekStart.AddDate(0, 0, i)
  1024. weekDate := newDay.Format(utils.FormatDate)
  1025. tripItem := new(roadshow.BusinessTrip)
  1026. for _, r := range findRoadshowList {
  1027. startDateT, _ := time.ParseInLocation(utils.FormatDate, r.StartDate, time.Local)
  1028. endDateT, _ := time.ParseInLocation(utils.FormatDate, r.EndDate, time.Local)
  1029. if int(endDateT.Sub(startDateT)) <= 0 {
  1030. skey := strconv.Itoa(r.ResearcherId) + r.StartDate
  1031. if _, sok := researcherMap[skey]; !sok {
  1032. if r != nil && (newDay.Equal(startDateT) || (newDay.Equal(endDateT)) || (newDay.Before(endDateT) && newDay.After(startDateT))) {
  1033. tripItem.City = r.City
  1034. researcherMap[skey] = skey
  1035. }
  1036. }
  1037. } else {
  1038. if r != nil && (newDay.Equal(startDateT) || (newDay.Equal(endDateT)) || (newDay.Before(endDateT) && newDay.After(startDateT))) {
  1039. tripItem.City = r.City
  1040. //researcherMap[skey] = skey
  1041. }
  1042. }
  1043. }
  1044. tripItem.WeekDate = weekDate
  1045. tripItem.WeekType = "next"
  1046. tripItem.Week = newDay.Weekday().String()
  1047. tripList = append(tripList, tripItem)
  1048. }
  1049. v.BusinessTripList = tripList
  1050. //if v.RoleTypeCode == "ficc_admin" {
  1051. // findItems := groupMap[1]
  1052. // findItems = append(findItems, v)
  1053. // groupMap[1] = findItems
  1054. //} else {
  1055. if findItems, ok := groupMap[v.GroupId]; ok {
  1056. findItems = append(findItems, v)
  1057. groupMap[v.GroupId] = findItems
  1058. } else {
  1059. findItems = append(findItems, v)
  1060. groupMap[v.GroupId] = findItems
  1061. }
  1062. //}
  1063. }
  1064. }
  1065. groupList := make([]*roadshow.BusinessTripGroup, 0)
  1066. for _, v := range group {
  1067. item := new(roadshow.BusinessTripGroup)
  1068. item.GroupName = v.GroupName
  1069. item.GroupId = v.GroupId
  1070. item.ResearcherList = groupMap[v.GroupId]
  1071. groupList = append(groupList, item)
  1072. }
  1073. resp := new(roadshow.BusinessTripResp)
  1074. resp.GroupList = groupList
  1075. resp.BaseDate = nowWeekStart.Format(utils.FormatDate)
  1076. br.Ret = 200
  1077. br.Success = true
  1078. br.Msg = "获取成功"
  1079. br.Data = resp
  1080. return
  1081. }