load_data.go 1.7 KB

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