1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- package main
- import (
- "app.yhyue.com/data_processing/common_utils/log"
- "encoding/json"
- "fmt"
- "go.uber.org/zap"
- "proposed_project/config"
- "sync"
- "time"
- )
- func loadProject() {
- sess := MgoPro.GetMgoConn()
- defer MgoPro.DestoryMongoConn(sess)
- f := map[string]interface{}{"list": 0}
- it := sess.DB(MgoPro.DbName).C(config.Conf.DB.MongoP.ProposedColl).Find(nil).Select(f).Iter()
- count := 0
- ch := make(chan bool, 3)
- wg := &sync.WaitGroup{}
- for result := make(map[string]interface{}); it.Next(result); count++ {
- if count%40000 == 0 {
- log.Info(fmt.Sprintf("iter --- %d", count))
- }
- ch <- true
- wg.Add(1)
- go func(tmp map[string]interface{}) {
- defer func() {
- <-ch
- wg.Done()
- }()
- bys, _ := json.Marshal(tmp)
- var p *Project
- _ = json.Unmarshal(bys, &p)
- AllPidMapLock.Lock()
- AllPidMap[p.Id] = &ID{P: p}
- AllPidMapLock.Unlock()
- AllCodeMapLock.Lock()
- AllCodeMap[p.ApproveCode] = p.Id
- AllCodeMapLock.Unlock()
- AllPnMapLock.Lock()
- res := AllPnMap[p.Id]
- if res != nil {
- res.Id[p.Id] = p.ProjectName
- } else {
- res = &Pname{
- Id: map[string]string{p.Id: p.ProjectName},
- }
- }
- AllPnMapLock.Unlock()
- }(result)
- result = make(map[string]interface{})
- }
- wg.Wait()
- time.Sleep(2 * time.Second)
- log.Info("loadProject", zap.Int("count", count), zap.Int("pcode", len(AllCodeMap)))
- }
|