Bläddra i källkod

fix:代码优化

xuemingyang 3 år sedan
förälder
incheckning
f05171dfb8

+ 38 - 22
src/jfw/modules/bigmember/src/entity/marketAnalysis/customized_analysis.go

@@ -20,8 +20,8 @@ const (
 	aggs_buyerclass_amounttop3 = `"buyerclass_amount_top3":{"terms":{"field":"buyerclass","exclude":["其它",""],"order":[{"buyerclass_amount":"desc"}],"size":3},"aggs":{"buyerclass_amount":{"sum":{"field":"sortprice"}},"winner_top":{"terms":{"field":"entidlist","exclude": ["-"],"order":[{"buyer_winner_amount":"desc"}],"size":3},"aggs":{"buyer_winner_amount":{"sum":{"field":"sortprice"}}}}}}`
 	sortprice_str              = `{"key":"<10万","from":0.0000000000001,"to":100000},{"key":"10万-50万","from":100000,"to":500000},{"key":"50万-100万","from":500000,"to":1000000},{"key":"100万-500万","from":1000000,"to":5000000},{"key":"500万-1000万","from":5000000,"to":10000000},{"key":"1000万-1亿","from":10000000,"to":100000000},{"key":"≥1亿","from":100000000}`
 	aggs_all_c_m               = `"project_count": {"filter": {}},"project_count_not0": {"filter": {"range": {"sortprice": {"gt": 0}}}},"project_amount": {"sum": {"field": "sortprice"}}`
-	query_id                   = `{"query": {"bool": {"must": [{"term": {"entidlist": "%s"}}]}},"size": 1}`
-	query_idto                 = `{"query": {"bool": {"must": [{"terms": {"qyxy.id": [%s]}}],"should": []}},"from": 0,"size": 36}`
+	query_id                   = `{"query": {"bool": {"must": [{"term": {"entidlist": "%s"}}]}},"_source":["_id","company_name"],"size": 1}`
+	query_idto                 = `{"query": {"bool": {"must": [{"terms": {"qyxy.id": ["%s"]}}]}},"size": %d}`
 )
 
 type AreaCTop struct {
@@ -191,23 +191,19 @@ func IdToWinner(id string) (entname string) {
 }
 
 //企业id查企业名 传入数组
-func IDToName(ids []string) (iMap map[string]interface{}) {
-	var idss []string
-	iMap = map[string]interface{}{}
-	for _, v := range ids {
-		vs := `"` + v + `"`
-		idss = append(idss, vs)
-	}
-	d := strings.Join(idss, ",")
-	finalSql := fmt.Sprintf(query_idto, d)
+func IDToName(ids []string) (iMap map[string]string) {
+	iMap = map[string]string{}
+	d := strings.Join(ids, `","`)
+	finalSql := fmt.Sprintf(query_idto, d, len(ids))
 	hits := elastic.Get("qyxy", "qyxy", finalSql)
-	source := *hits
-	for _, vv := range source {
-		for _, vi := range ids {
-			if vv["_id"] != nil && vi == vv["_id"] {
-				iMap[util.ObjToString(vv["_id"])] = vv["company_name"]
-				break
-			}
+	if hits == nil || len(*hits) == 0 {
+		return
+	}
+	for _, item := range *hits {
+		id, _ := item["_id"].(string)
+		name, _ := item["company_name"].(string)
+		if id != "" && name != "" {
+			iMap[id] = name
 		}
 	}
 	return
@@ -421,6 +417,11 @@ func AmountCompute(thisRow AreaCTop, types string) (rData []map[string]interface
 			rWinner := []map[string]interface{}{}
 			rM["name"] = v.Key
 			rM["area_amount"] = v.AreaAmount.Amount
+			var ids []string
+			for _, va := range v.WinnerTop.Buckets {
+				ids = append(ids, va.Winner)
+			}
+			eid := IDToName(ids)
 			for _, va := range v.WinnerTop.Buckets {
 				if va.WinnerAmount.Amount == 0 {
 					break
@@ -428,7 +429,7 @@ func AmountCompute(thisRow AreaCTop, types string) (rData []map[string]interface
 				rW := map[string]interface{}{}
 				id := util2.EncodeId(va.Winner)
 				rW["id"] = id
-				rW["winner"] = IdToWinner(va.Winner)
+				rW["winner"] = eid[va.Winner]
 				rW["winner_amount"] = va.WinnerAmount.Amount
 				//rW["amount_scale"] = va.WinnerAmount.Amount / v.AreaAmount.Amount
 				rWinner = append(rWinner, rW)
@@ -449,6 +450,11 @@ func AmountCompute(thisRow AreaCTop, types string) (rData []map[string]interface
 			rWinner := []map[string]interface{}{}
 			rM["name"] = v.Key
 			rM["buyclass_amount"] = v.AreaAmount.Amount
+			var ids []string
+			for _, va := range v.WinnerTop.Buckets {
+				ids = append(ids, va.Winner)
+			}
+			eid := IDToName(ids)
 			for _, va := range v.WinnerTop.Buckets {
 				if va.WinnerAmount.Amount == 0 {
 					break
@@ -456,7 +462,7 @@ func AmountCompute(thisRow AreaCTop, types string) (rData []map[string]interface
 				rW := map[string]interface{}{}
 				id := util2.EncodeId(va.Winner)
 				rW["id"] = id
-				rW["winner"] = IdToWinner(va.Winner)
+				rW["winner"] = eid[va.Winner]
 				rW["winner_amount"] = va.WinnerAmount.Amount
 				//rW["amount_scale"] = va.WinnerAmount.Amount / v.AreaAmount.Amount
 				rWinner = append(rWinner, rW)
@@ -483,6 +489,11 @@ func CountCompute(thisRow AreaCTop, types string) (rData []map[string]interface{
 			rWinner := []map[string]interface{}{}
 			rM["name"] = v.Area
 			rM["area_count"] = v.Total
+			var ids []string
+			for _, va := range v.WinnerTop.Buckets {
+				ids = append(ids, va.Winner)
+			}
+			eid := IDToName(ids)
 			for _, va := range v.WinnerTop.Buckets {
 				if va.WinnerTotal == 0 {
 					break
@@ -490,7 +501,7 @@ func CountCompute(thisRow AreaCTop, types string) (rData []map[string]interface{
 				rW := map[string]interface{}{}
 				id := util2.EncodeId(va.Winner)
 				rW["id"] = id
-				rW["winner"] = IdToWinner(va.Winner)
+				rW["winner"] = eid[va.Winner]
 				rW["winner_total"] = va.WinnerTotal
 				rWinner = append(rWinner, rW)
 			}
@@ -513,6 +524,11 @@ func CountCompute(thisRow AreaCTop, types string) (rData []map[string]interface{
 			rWinner := []map[string]interface{}{}
 			rM["name"] = v.Buyclass
 			rM["buyclass_count"] = v.Total
+			var ids []string
+			for _, va := range v.BidcountTop.Buckets {
+				ids = append(ids, va.Winner)
+			}
+			eid := IDToName(ids)
 			for _, va := range v.BidcountTop.Buckets {
 				if va.WinnerTotal == 0 {
 					break
@@ -520,7 +536,7 @@ func CountCompute(thisRow AreaCTop, types string) (rData []map[string]interface{
 				rW := map[string]interface{}{}
 				id := util2.EncodeId(va.Winner)
 				rW["id"] = id
-				rW["winner"] = IdToWinner(va.Winner)
+				rW["winner"] = eid[va.Winner]
 				rW["winner_total"] = va.WinnerTotal
 				rWinner = append(rWinner, rW)
 			}