123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- package main
- import (
- "fmt"
- "github.com/xuri/excelize/v2"
- util "jygit.jydev.jianyu360.cn/data_processing/common_utils"
- "jygit.jydev.jianyu360.cn/data_processing/common_utils/mongodb"
- "log"
- "strings"
- )
- // getCountBidding 根据企业名称,获取企业的招标信息总数
- func getCountBidding() {
- f, err := excelize.OpenFile("./银行业金融机构法人名单.xlsx")
- if err != nil {
- fmt.Println(err)
- return
- }
- defer func() {
- f.Save()
- if err := f.Close(); err != nil {
- fmt.Println(err)
- }
- }()
- rows, err := f.GetRows("Sheet3")
- if err != nil {
- fmt.Println(err)
- return
- }
- ///
- MgoB := &mongodb.MongodbSim{
- MongodbAddr: "172.31.31.202:27081,172.20.45.128:27080",
- //MongodbAddr: "127.0.0.1:27083",
- Size: 10,
- DbName: "qfw",
- UserName: "SJZY_RWbid_ES",
- Password: "SJZY@B4i4D5e6S",
- //Direct: true,
- }
- MgoB.InitPool()
- //url := "http://172.17.4.184:19908"
- //url := "http://127.0.0.1:19908"
- //username := "jybid"
- //password := "Top2023_JEB01i@31"
- //index := "bidding" //索引名称
- //// 创建 Elasticsearch 客户端
- //client, err := elastic.NewClient(
- // elastic.SetURL(url),
- // elastic.SetBasicAuth(username, password),
- // elastic.SetSniff(false),
- //)
- //if err != nil {
- // log.Fatalf("创建 Elasticsearch 客户端失败:%s", err)
- //}
- buyers := make([]string, 0)
- numMap := make(map[string]int)
- for i := 1; i < len(rows); i++ {
- companyName := rows[i][0]
- numMap[companyName] = 0
- buyers = append(buyers, companyName)
- }
- sess := MgoB.GetMgoConn()
- defer MgoB.DestoryMongoConn(sess)
- query := sess.DB("qfw").C("bidding").Find(nil).Iter()
- count := 0
- for tmp := make(map[string]interface{}); query.Next(tmp); count++ {
- buyer := util.ObjToString(tmp["buyer"])
- if count%1000 == 0 {
- log.Println("curren:", count, buyer)
- }
- res := buyerContains(buyers, buyer)
- if res != "" {
- numMap[res]++
- }
- }
- for i := 1; i < len(rows); i++ {
- companyName := rows[i][0]
- log.Println("companyName", companyName)
- f.SetCellValue("Sheet3", fmt.Sprintf("%s%d", "B", i+1), numMap[companyName])
- }
- //for i := 1; i < len(rows); i++ {
- // companyName := rows[i][0]
- // numMap[companyName]++
- // //if i%100 == 0 {
- // // log.Println("iiii", i, companyName)
- // // f.Save()
- // //}
- //
- // //
- //
- // // 构建查询条件
- // //query := elastic.NewBoolQuery().
- // // Must(elastic.NewMatchQuery("buyer", companyName)). // buyer = "中国建筑股份有限公司"
- // // Should(
- // // elastic.NewMatchQuery("subtype", "合同"),
- // // elastic.NewMatchQuery("toptype", "结果"),
- // // elastic.NewMatchQuery("toptype", "招标"),
- // // ).
- // // MinimumShouldMatch("1"). // 至少满足一个Should条件 // buyer = "中国建筑股份有限公司"
- // // Must(elastic.NewRangeQuery("publishtime").Gte(1704038400).Lt(1735660800)) // publishtime 2024年
- // ////Must(elastic.NewRangeQuery("bidamount").Gt(1000000)). // bidamount > 1000000
- // ////MustNot(elastic.NewMatchQuery("s_winner", companyName)) // s_winner != "中国建筑股份有限公司"
- // //
- // //// 执行查询,返回所有匹配的数据
- // //searchResult, err := client.Search().
- // // Index(index). // 查询的索引名称
- // // Query(query). // 使用上述构建的查询
- // // Do(context.Background()) // 执行查询
- // //if err != nil {
- // // log.Fatalf("Error executing search: %s", err)
- // //}
- // //
- // //f.SetCellValue("Sheet3", fmt.Sprintf("%s%d", "B", i+1), searchResult.Hits.TotalHits.Value)
- //
- //}
- log.Println("数据处理完毕")
- }
- // buyerContains 判断 buyer 是否完全包含 buyers 列表中的某个字符串
- // 如果找到完全包含的字符串,则返回该字符串;否则返回空字符串
- func buyerContains(buyers []string, buyer string) string {
- for _, b := range buyers {
- if strings.Contains(buyer, b) { // 判断 buyer 是否包含 buyers 里的某个字符串
- return b // 找到第一个匹配的就返回
- }
- }
- return "" // 没有找到匹配项,返回空字符串
- }
|