package main import ( "fmt" es7 "github.com/olivere/elastic/v7" "go.mongodb.org/mongo-driver/bson" util "jygit.jydev.jianyu360.cn/data_processing/common_utils" "jygit.jydev.jianyu360.cn/data_processing/common_utils/elastic" "jygit.jydev.jianyu360.cn/data_processing/common_utils/mongodb" "log" "strings" ) // getBidding 根据biddingID获取相关数据;深信服需求 func getBidding() { //es Es := &elastic.Elastic{ //S_esurl: "http://127.0.0.1:19908", S_esurl: "http://172.17.4.184:19908", I_size: 5, Username: "jybid", Password: "Top2023_JEB01i@31", } Es.InitElasticSize() //mongodb 163 Mgo := &mongodb.MongodbSim{ MongodbAddr: "172.17.189.140:27080", //MongodbAddr: "127.0.0.1:27083", DbName: "qfw", Size: 10, UserName: "SJZY_RWbid_ES", Password: "SJZY@B4i4D5e6S", //Direct: true, } Mgo.InitPool() Mgo2 := &mongodb.MongodbSim{ MongodbAddr: "172.17.189.140:27080", //MongodbAddr: "127.0.0.1:27083", DbName: "mixdata", Size: 10, UserName: "SJZY_RWbid_ES", Password: "SJZY@B4i4D5e6S", //Direct: true, } Mgo2.InitPool() defer util.Catch() sess := Mgo.GetMgoConn() defer Mgo.DestoryMongoConn(sess) it := sess.DB("qfw").C("20240626_sxf_id").Find(nil).Select(nil).Sort("_id").Iter() fmt.Println("taskRun 开始") count := 0 for tmp := make(map[string]interface{}); it.Next(&tmp); count++ { if count%10000 == 0 { log.Println("current:", count) } biddingID := util.ObjToString(tmp["id"]) err, biddingData := Es.GetById("bidding", biddingID) if err != nil { log.Println("err", biddingID, "获取数据失败") continue } whereBuyer := map[string]interface{}{ "name": biddingData["buyer"], } // 医院等级 hospData, _ := Mgo2.FindOne("buyer_rank", whereBuyer) if hospData != nil && len(*hospData) > 0 { if rank := util.ObjToString((*hospData)["rank"]); rank != "" { biddingData["rank"] = (*hospData)["rank"] } } // 中标单位 if s_winner := util.ObjToString(tmp["s_winner"]); s_winner != "" { winner := strings.Split(s_winner, ",")[0] //取第一个中标单位 data, _ := Mgo2.FindOne("qyxy_std", bson.M{"company_name": winner}) if data != nil && len(*data) > 0 { //注册省份 if company_area := util.ObjToString((*data)["company_area"]); company_area != "" { biddingData["company_area"] = company_area } //注册城市 if company_city := util.ObjToString((*data)["company_city"]); company_city != "" { biddingData["company_city"] = company_city } //注册区县 if company_district := util.ObjToString((*data)["company_district"]); company_district != "" { biddingData["company_district"] = company_district } //中标单位联系人 if legal_person := util.ObjToString((*data)["legal_person"]); legal_person != "" { biddingData["legal_person"] = legal_person } //中标单位的注册地址 if company_address := util.ObjToString((*data)["company_address"]); company_address != "" { biddingData["company_address"] = company_address } //注册资金"capital" : "324 万","capital" : 124.8, if (*data)["capital"] != nil { biddingData["capital"] = util.Float64All((*data)["capital"]) } //注册时间"establish_date" : ISODate("1949-10-01T00:00:00.000+0000") if establish_date := util.ObjToString((*data)["establish_date"]); establish_date != "" { biddingData["establish_date"] = establish_date } //经营范围 if business_scope := util.ObjToString((*data)["business_scope"]); business_scope != "" { biddingData["business_scope"] = business_scope } //中标单位的社会征信代码 if credit_no := util.ObjToString((*data)["credit_no"]); credit_no != "" { biddingData["winner_credit_no"] = credit_no } //股东名单 if stock_name := util.ObjToString((*data)["stock_name"]); stock_name != "" { biddingData["stock_name"] = stock_name } if email := util.ObjToString((*data)["company_email"]); email != "" { biddingData["company_email"] = email } if phone := util.ObjToString((*data)["company_phone"]); phone != "" { biddingData["company_phone"] = phone } } } if agency := util.ObjToString(tmp["agency"]); agency != "" { data, _ := Mgo2.FindOne("qyxy_std", bson.M{"company_name": agency}) if data != nil && len(*data) > 0 { //招标代理机构的社会征信代码 if credit_no := util.ObjToString((*data)["credit_no"]); credit_no != "" { biddingData["agency_credit_no"] = credit_no } } } // 构建 BoolQuery boolQuery := es7.NewBoolQuery(). Must(es7.NewTermQuery("ids", biddingID)). MustNot(). Should() data := Es.Get("projectset", boolQuery) if data != nil && *data != nil && len(*data) > 0 { biddingData["projectID"] = (*data)[0]["id"] } biddingData["jybxhref"] = GetJyURLByID(biddingID) buyerEntData, _ := Mgo2.FindOne("qyxy_std", bson.M{"company_name": biddingData["buyer"]}) if buyerEntData != nil && len(*buyerEntData) > 0 { if credit_no := util.ObjToString((*buyerEntData)["credit_no"]); credit_no != "" { biddingData["buyer_credit_no"] = credit_no } } // info, _ := Mgo.FindById("bidding", biddingID, nil) if info == nil || len(*info) == 0 { info, _ = Mgo.FindById("bidding_back", biddingID, nil) } if info != nil && len(*info) > 0 { if (*info)["projectinfo"] != nil { projectInfo := util.ObjToMap((*info)["projectinfo"]) if projectInfo != nil && len(*projectInfo) > 0 { if (*projectInfo)["attachments"] != nil { filesArr := []map[string]interface{}{} fileUrl := util.ObjToString("http://jy-datafile.oss-cn-beijing.aliyuncs.com/") if attachments, oks := (*projectInfo)["attachments"].(map[string]interface{}); oks { for _, v := range attachments { if atta, ok := v.(map[string]interface{}); ok { if atta["fid"] != nil && util.ObjToString(atta["fid"]) != "" { fileMap := map[string]interface{}{ "filename": atta["filename"], "url": fileUrl + util.ObjToString(atta["fid"]), } filesArr = append(filesArr, fileMap) } else { if atta["org_url"] != nil { fileMap := map[string]interface{}{ "filename": atta["filename"], "url": util.ObjToString(atta["org_url"]), } filesArr = append(filesArr, fileMap) } } } } } //log.Debug("查询附件结果:" + id + ", 附件数量:" + fmt.Sprint(len(filesArr))) if len(filesArr) > 0 { biddingData["filehref"] = filesArr } } } } } Mgo.Save("wcc_0626_sxf", biddingData) } } // GetJyURLByID 获取剑鱼地址 func GetJyURLByID(id string) string { var Url = "https://www.jianyu360.com/article/content/%s.html" url := fmt.Sprintf(Url, util.CommonEncodeArticle("content", id)) return url }