123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- // update
- package service
- import (
- "log"
- qu "qfw/util"
- "time"
- )
- func init() {
- go update()
- }
- func update() {
- for {
- if len(ResultInfos) > 0 {
- UpdateLock.Lock()
- UpResults = ResultInfos
- ResultInfos = []*ResultInfo{}
- UpdateLock.Unlock()
- up()
- UpResults = []*ResultInfo{}
- }
- time.Sleep(5 * time.Second)
- }
- }
- func up() {
- log.Println("开始更新")
- binfos := []*BidInfo{}
- einfos := []*ExtractInfo{}
- pinfos := []*ProjectInfo{}
- for _, v := range UpResults {
- if v.Bidding != nil {
- binfos = append(binfos, v.Bidding) //招标信息清洗结果
- }
- if v.Extract != nil {
- einfos = append(einfos, v.Extract) //抽取清洗结果
- }
- if v.Project != nil {
- pinfos = append(pinfos, v.Project) //项目清洗结果
- }
- }
- updateB := [][]map[string]interface{}{}
- updateE := [][]map[string]interface{}{}
- updateP := [][]map[string]interface{}{}
- if len(binfos) > 0 { //招标信息:拼装更新语句
- for _, tmp := range binfos {
- set := map[string]interface{}{}
- for _, v := range tmp.UpParam {
- set[v] = tmp.Data[v]
- }
- tmparr := []map[string]interface{}{
- map[string]interface{}{
- "_id": qu.StringTOBsonId(tmp.Id),
- },
- map[string]interface{}{"$set": set},
- }
- updateB = append(updateB, tmparr)
- }
- }
- if len(einfos) > 0 { //抽取信息:拼装更新语句
- for _, tmp := range einfos {
- set := map[string]interface{}{}
- for _, v := range tmp.UpParam {
- set[v] = tmp.Data[v]
- }
- tmparr := []map[string]interface{}{
- map[string]interface{}{
- "_id": qu.StringTOBsonId(tmp.Id),
- },
- map[string]interface{}{"$set": set},
- }
- updateE = append(updateE, tmparr)
- }
- }
- if len(pinfos) > 0 { //项目信息:拼装更新语句
- for _, tmp := range pinfos {
- set := map[string]interface{}{}
- for _, v := range tmp.UpParam {
- set[v] = tmp.Data[v]
- }
- tmparr := []map[string]interface{}{
- map[string]interface{}{
- "_id": qu.StringTOBsonId(tmp.Id),
- },
- map[string]interface{}{"$set": set},
- }
- updateP = append(updateP, tmparr)
- }
- }
- //执行更新
- if len(updateB) > 0 {
- db := Mogdbs["qfw"]
- db.Mongodb.UpSertBulk(db.Coll, updateB...)
- }
- if len(updateE) > 0 {
- db := Mogdbs["extract"]
- db.Mongodb.UpSertBulk(db.Coll, updateE...)
- }
- if len(updateP) > 0 {
- db := Mogdbs["project"]
- db.Mongodb.UpSertBulk(db.Coll, updateP...)
- }
- log.Println("更新完毕", "updateB:", len(updateE), "updateE:", len(updateB), "updateP:", len(updateP))
- }
|