wcc 1 anno fa
parent
commit
f32cb83323

+ 1 - 1
project_portrait/go.mod

@@ -4,7 +4,7 @@ go 1.20
 
 require (
 	github.com/olivere/elastic/v7 v7.0.32
-	jygit.jydev.jianyu360.cn/data_processing/common_utils v0.0.0-20240202055658-e2ef72e18b40
+	jygit.jydev.jianyu360.cn/data_processing/common_utils v0.0.0-20240412074219-927f3f682cb3
 )
 
 require (

+ 2 - 2
project_portrait/go.sum

@@ -194,5 +194,5 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
 honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-jygit.jydev.jianyu360.cn/data_processing/common_utils v0.0.0-20240202055658-e2ef72e18b40 h1:xTeRmpFgwOdu+NbWg/YntX3MnQpttm7jj33C1+JdBTk=
-jygit.jydev.jianyu360.cn/data_processing/common_utils v0.0.0-20240202055658-e2ef72e18b40/go.mod h1:1Rp0ioZBhikjXHYYXmnzL6RNfvTDM/2XvRB+vuPLurI=
+jygit.jydev.jianyu360.cn/data_processing/common_utils v0.0.0-20240412074219-927f3f682cb3 h1:mTokQIoOu/oZ2oCSAPayIFfnglIHP0qbOw1Ez6biKDo=
+jygit.jydev.jianyu360.cn/data_processing/common_utils v0.0.0-20240412074219-927f3f682cb3/go.mod h1:1Rp0ioZBhikjXHYYXmnzL6RNfvTDM/2XvRB+vuPLurI=

+ 111 - 1
project_portrait/main.go

@@ -7,11 +7,21 @@ import (
 	"github.com/olivere/elastic/v7"
 	"io"
 	util "jygit.jydev.jianyu360.cn/data_processing/common_utils"
+	es "jygit.jydev.jianyu360.cn/data_processing/common_utils/elastic"
 	"jygit.jydev.jianyu360.cn/data_processing/common_utils/mongodb"
 	"log"
 	"time"
 )
 
+var (
+	saveEsPool    = make(chan map[string]interface{}, 5000) //保存binding数据到es
+	saveEsSp      = make(chan bool, 5)
+	EsBulkSize    = 50
+	Es            *es.Elastic
+	portraitIndex = "project_portrait"     // 画像索引
+	portraitMgo   = "wcc_project_portrait" // MongoDB 的表名
+)
+
 type PortraitData struct {
 	Buyer        string  `json:"buyer"`
 	Area         string  `json:"area"`
@@ -23,9 +33,32 @@ type PortraitData struct {
 	ProjectMoney float64 `json:"project_money"`
 }
 
+func Init() {
+	//Es = &es.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()
+	//测试环境
+	Es = &es.Elastic{
+		S_esurl:  "http://192.168.3.149:9201",
+		I_size:   5,
+		Username: "",
+		Password: "",
+	}
+	Es.InitElasticSize()
+}
 func main() {
+	Init()
+	go SaveEsMethod()
+	//dealAllData()
+	allDataEs() //处理存量数据到es
 
-	dealAllData()
+	ch := make(chan bool, 1)
+	<-ch
 }
 
 // dealIncData 处理增量数据
@@ -195,3 +228,80 @@ func dealAllData() {
 
 	fmt.Println("结束~~~~~~~~~~~~~~~")
 }
+
+// allDataEs 处理存量数据到es
+func allDataEs() {
+	//MgoB := &mongodb.MongodbSim{
+	//	MongodbAddr: "172.17.189.140:27080",
+	//	//MongodbAddr: "127.0.0.1:27083",
+	//	Size:     10,
+	//	DbName:   "qfw",
+	//	UserName: "SJZY_RWbid_ES",
+	//	Password: "SJZY@B4i4D5e6S",
+	//	//Direct:      true,
+	//}
+	//MgoB.InitPool()
+	//
+	MgoB := &mongodb.MongodbSim{
+		MongodbAddr: "192.168.3.206:27002",
+		Size:        10,
+		DbName:      "qfw_data",
+		UserName:    "root",
+		Password:    "root",
+		//Direct:      true,
+	}
+	MgoB.InitPool()
+
+	defer util.Catch()
+	sess := MgoB.GetMgoConn()
+	defer MgoB.DestoryMongoConn(sess)
+	count := 0
+	it := sess.DB("qfw_data").C(portraitMgo).Find(nil).Select(nil).Iter()
+	for tmp := make(map[string]interface{}); it.Next(&tmp); count++ {
+		if count%5000 == 0 {
+			log.Println("current:", count, tmp["_id"])
+		}
+		id := mongodb.BsonIdToSId(tmp["_id"])
+		tmp["id"] = id
+		tmp["_id"] = id
+
+		saveEsPool <- tmp
+		//Es.Save("project_portrait", tmp)
+	}
+	log.Println("数据处理完毕")
+}
+
+func SaveEsMethod() {
+	arru := make([]map[string]interface{}, EsBulkSize)
+	indexu := 0
+	for {
+		select {
+		case v := <-saveEsPool:
+			arru[indexu] = v
+			indexu++
+			if indexu == EsBulkSize {
+				saveEsSp <- true
+				go func(arru []map[string]interface{}) {
+					defer func() {
+						<-saveEsSp
+					}()
+					Es.BulkSave(portraitIndex, arru)
+				}(arru)
+				arru = make([]map[string]interface{}, EsBulkSize)
+				indexu = 0
+			}
+		case <-time.After(1000 * time.Millisecond):
+			if indexu > 0 {
+				saveEsSp <- true
+				go func(arru []map[string]interface{}) {
+					defer func() {
+						<-saveEsSp
+					}()
+					Es.BulkSave(portraitIndex, arru)
+				}(arru[:indexu])
+				arru = make([]map[string]interface{}, EsBulkSize)
+				indexu = 0
+			}
+		}
+	}
+}

+ 7 - 4
xlsx/main.go

@@ -32,9 +32,9 @@ func main() {
 	//fmt.Println(11111)
 	//HighBidding()
 	//exportQy()
-	//exportPhone()
+	exportPhone() // 导出联系电话
 	//clickhouseData()
-	getName()
+	//getName()
 	log.Println("over")
 }
 
@@ -170,7 +170,7 @@ func exportPhone() {
 		return
 	}
 
-	f, err := excelize.OpenFile("./四川中标客户导出.xlsx")
+	f, err := excelize.OpenFile("./河南省物业企业名单.xlsx")
 	if err != nil {
 		fmt.Println(err)
 		return
@@ -195,7 +195,10 @@ func exportPhone() {
 		ContactTel  string `json:"contact_tel"`
 	}
 	for i := 1; i < len(rows); i++ {
-		name := rows[i][0]
+		name := rows[i][1]
+		if !strings.Contains(name, "公司") {
+			continue
+		}
 		log.Println(i, "----", name)
 		stds, _ := Mgo.FindOne("qyxy_std", map[string]interface{}{"company_name": name})
 		var reportsMap = make([]string, 0)

+ 1 - 1
xlsx/xlsx_test.go

@@ -155,7 +155,7 @@ func TestAAA(t *testing.T) {
 	sess := Mgo.GetMgoConn()
 	defer Mgo.DestoryMongoConn(sess)
 
-	f, err := excelize.OpenFile("./湖北专项债.xlsx")
+	f, err := excelize.OpenFile("./河南新增专项债-06.xlsx")
 	if err != nil {
 		fmt.Println(err)
 		return

BIN
xlsx/河南新增专项债-06.xlsx


BIN
xlsx/河南省物业企业名单.xlsx