package main import ( "fmt" "github.com/olivere/elastic/v7" "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" "time" ) // lianTongData1 判断联通单一数据,后续是否有中标、成交 func lianTongData1() { f, err := excelize.OpenFile("./2024.9.1-2024.12.1单一来源.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("详细数据") if err != nil { fmt.Println(err) return } //85 项目数据 MgoP := &mongodb.MongodbSim{ MongodbAddr: "127.0.0.1:27080", //MongodbAddr: "172.17.4.85:27080", DbName: "qfw", Size: 10, Direct: true, } MgoP.InitPool() // se := util.SimpleEncrypt{Key: "topJYBX2019"} for i := 1; i < len(rows); i++ { if i%100 == 0 { log.Println("current:iiiiiiiiiiii", i) } //id := rows[i][19] id := se.DecodeString(strings.TrimSpace(rows[i][19])) where := map[string]interface{}{ "ids": id, } p, _ := MgoP.FindOne("projectset_20230904", where) project := *p if list, ok := project["list"].([]interface{}); ok { for _, v := range list { if listData, ok := v.(map[string]interface{}); ok { if util.ObjToString(listData["subtype"]) == "中标" { f.SetCellValue("详细数据", fmt.Sprintf("%s%d", "U", i+1), "是") } if util.ObjToString(listData["subtype"]) == "成交" { f.SetCellValue("详细数据", fmt.Sprintf("%s%d", "V", i+1), "是") } } } } //if util.ObjToString(project["bidstatus"]) == "中标" { // f.SetCellValue("详细数据", fmt.Sprintf("%s%d", "U", i+1), "是") //} //if util.ObjToString(project["bidstatus"]) == "成交" { // f.SetCellValue("详细数据", fmt.Sprintf("%s%d", "V", i+1), "是") //} //if util.ObjToString(project["bidstatus"]) == "合同" { // f.SetCellValue("详细数据", fmt.Sprintf("%s%d", "W", i+1), "是") //} } log.Println("数据处理完毕") } // lianTongShouLu1 判断联通数据是否收录,是否推送 func lianTongShouLu1() { //2024-12-23,赵慧磊 联通需求 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) } }() //2.专项债详情 //rows, err := f.GetRows("基础数据") rows, err := f.GetRows("Sheet2") if err != nil { fmt.Println(err) return } // //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) } // 86 mongo Mgo := &mongodb.MongodbSim{ //MongodbAddr: "172.17.4.86:27080", MongodbAddr: "127.0.0.1:27082", Size: 10, DbName: "jyqyfw", //UserName: "SJZY_RWbid_ES", //Password: "SJZY@B4i4D5e6S", Direct: true, } Mgo.InitPool() for i := 1; i < len(rows); i++ { projectName := strings.TrimSpace(rows[i][5]) buyer := strings.TrimSpace(rows[i][4]) winner := strings.TrimSpace(rows[i][2]) money := strings.TrimSpace(rows[i][9]) projectCode := util.ObjToString(rows[i][6]) title := strings.TrimSpace(rows[i][7]) publishTime := strings.TrimSpace(rows[i][10]) layout := "2006-01-02" t, err := time.Parse(layout, publishTime) if err != nil { fmt.Println(err) return } timestamp := t.Unix() rangeQuery := elastic.NewRangeQuery("publishtime").Gte(timestamp).Lt(timestamp + 24*3600) if i%10 == 0 { log.Println("iiiiii", i, projectName) f.Save() } //判断1;标题+发布时间 query1 := elastic.NewBoolQuery(). Must(elastic.NewTermQuery("title.mtitle", title)). Must(rangeQuery) query3 := elastic.NewBoolQuery(). Must(elastic.NewTermQuery("projectcode", projectCode)). Must(rangeQuery) //1.1 判断es 是否存在 ex1, err, doc1 := checkBiddingData(client, query1) if err != nil { log.Println("checkBiddingData error", err) } //存在,已收录,判断是否推送 if ex1 { f.SetCellValue("Sheet2", fmt.Sprintf("%s%d", "AA", i+1), "是") f.SetCellValue("Sheet2", fmt.Sprintf("%s%d", "V", i+1), "是") id := util.ObjToString(doc1["id"]) f.SetCellValue("Sheet2", fmt.Sprintf("%s%d", "X", i+1), id) where2 := map[string]interface{}{ "id": id, "appid": "jyGQ1XQQsEAwNeSENOFR9D", } datas, _ := Mgo.Find("usermail", where2, nil, nil, false, -1, -1) isTui := false for _, dd := range *datas { if util.IntAll(dd["isOptimization"]) == 1 && util.IntAll(dd["earliestDay"]) == 0 { isTui = true } } //确实推送了 if isTui { f.SetCellValue("Sheet2", fmt.Sprintf("%s%d", "Z", i+1), "是") } } //3.1 判断es 是否存在 ex3, err, doc3 := checkBiddingData(client, query3) if err != nil { log.Println("checkBiddingData error", err) } //存在,已收录,判断是否推送 if ex3 { f.SetCellValue("Sheet2", fmt.Sprintf("%s%d", "AB", i+1), "是") f.SetCellValue("Sheet2", fmt.Sprintf("%s%d", "V", i+1), "是") id := util.ObjToString(doc3["id"]) f.SetCellValue("Sheet2", fmt.Sprintf("%s%d", "X", i+1), id) where3 := map[string]interface{}{ "id": id, "appid": "jyGQ1XQQsEAwNeSENOFR9D", } datas, _ := Mgo.Find("usermail", where3, nil, nil, false, -1, -1) isTui := false for _, dd := range *datas { if util.IntAll(dd["isOptimization"]) == 1 && util.IntAll(dd["earliestDay"]) == 0 { isTui = true } } //确实推送了 if isTui { f.SetCellValue("Sheet2", fmt.Sprintf("%s%d", "Z", i+1), "是") } } //判断2;projectname+s_winner+bidamount+buyer query2 := elastic.NewBoolQuery(). Must(elastic.NewTermQuery("projectname", projectName)). Must(elastic.NewTermQuery("s_winner", winner)). Must(elastic.NewTermQuery("bidamount", money)). Must(elastic.NewTermQuery("buyer", buyer)) //判断es 是否存在 ex, err, doc := checkBiddingData(client, query2) if err != nil { log.Println("checkBiddingData error", err) } //存在,已收录,判断是否推送 if ex { f.SetCellValue("Sheet2", fmt.Sprintf("%s%d", "V", i+1), "是") id := util.ObjToString(doc["id"]) f.SetCellValue("Sheet2", fmt.Sprintf("%s%d", "X", i+1), id) where2 := map[string]interface{}{ "id": id, "appid": "jyGQ1XQQsEAwNeSENOFR9D", } datas, _ := Mgo.Find("usermail", where2, nil, nil, false, -1, -1) isTui := false for _, dd := range *datas { if util.IntAll(dd["isOptimization"]) == 1 && util.IntAll(dd["earliestDay"]) == 0 { isTui = true } } //确实推送了 if isTui { f.SetCellValue("Sheet2", fmt.Sprintf("%s%d", "Z", i+1), "是") } } } }