load_data.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package main
  2. import (
  3. //"encoding/json"
  4. "log"
  5. )
  6. //初始加载数据,默认加载最近6个月的数据
  7. func (p *ProjectTask) loadData(starttime int64) {
  8. log.Println("load start..", starttime)
  9. p.findLock.Lock()
  10. defer p.findLock.Unlock()
  11. p.AllIdsMapLock.Lock()
  12. defer p.AllIdsMapLock.Unlock()
  13. sess := MongoTool.GetMgoConn()
  14. defer MongoTool.DestoryMongoConn(sess)
  15. q := map[string]interface{}{
  16. "lasttime": map[string]interface{}{"$gt": starttime},
  17. }
  18. it := sess.DB(MongoTool.DbName).C(p.coll).Find(&q).Iter()
  19. tmp := &ProjectInfo{}
  20. n := 0
  21. for it.Next(tmp) {
  22. n++
  23. if n%1000 == 0 {
  24. log.Println("current", n, "\n", tmp.Id, len(p.mapPn), len(p.mapPc), len(p.mapPb), tmp.ProjectName, tmp.MPN, tmp.ProjectCode, tmp.MPC, tmp.Buyer)
  25. }
  26. for _, v := range append([]string{tmp.ProjectName}, tmp.MPN...) {
  27. if v != "" {
  28. v = pcReplace.ReplaceAllString(v, "")
  29. if v != "" {
  30. k := p.mapPn[v]
  31. if k == nil {
  32. k = &Key{Arr: []string{tmp.Id.Hex()}}
  33. p.mapPn[v] = k
  34. } else {
  35. k.Arr = append(k.Arr, tmp.Id.Hex())
  36. }
  37. }
  38. }
  39. }
  40. for _, v := range append([]string{tmp.ProjectCode}, tmp.MPC...) {
  41. if v != "" {
  42. v = pcReplace.ReplaceAllString(v, "")
  43. if v != "" {
  44. k := p.mapPc[v]
  45. if k == nil {
  46. k = &Key{Arr: []string{tmp.Id.Hex()}}
  47. p.mapPc[v] = k
  48. } else {
  49. k.Arr = append(k.Arr, tmp.Id.Hex())
  50. }
  51. }
  52. }
  53. }
  54. if tmp.Buyer != "" && len([]rune(tmp.Buyer)) > 2 {
  55. k := p.mapPb[tmp.Buyer]
  56. if k == nil {
  57. k = &Key{Arr: []string{tmp.Id.Hex()}}
  58. p.mapPb[tmp.Buyer] = k
  59. } else {
  60. k.Arr = append(k.Arr, tmp.Id.Hex())
  61. }
  62. }
  63. p.AllIdsMap[tmp.Id.Hex()] = &ID{Id: tmp.Id.Hex(), P: tmp}
  64. tmp = &ProjectInfo{}
  65. }
  66. log.Println("load over..", n)
  67. }