Kaynağa Gözat

Merge branch 'hotfix/v4.8.40.1_wky' of qmx/jy into hotfix/v4.8.40.1

wangkaiyue 2 yıl önce
ebeveyn
işleme
350a71e876

+ 13 - 9
src/jfw/modules/bigmember/src/entity/portraitBuyerSearch.go

@@ -16,12 +16,12 @@ import (
 
 const (
 	buyer_query_address    = `{"query":{"bool":{"must":[{"term":{"buyer_name":"%s"}}]}},"size":1,"_source":["city","province","buyerclass"]}`
-	buyerPortraitSearchSql = `{"query":{"bool":{"must":[%s]}},"aggs":{"year_bidamount":{"range":{"field":"jgtime","ranges":[%s]},"aggs":{"count":{"sum":{"field":"bidamount"}}}},"fail_count":{"filter":{"bool":{"must":[{"term":{"bidstatus":"流标"}}]}}},"winner_count":{"cardinality":{"field":"entidlist"}},"bidamount_count":{"sum":{"field":"bidamount"}},"moneyRange":{"filter":{"bool":{"must":{"range":{"project_rate":{"gte":0,"lte":0.6}}}}},"aggs":{"moneyRangeValue":{"range":{"field":"bidamount","ranges":[%s]},"aggs":{"bidamount_count":{"sum":{"field":"bidamount"}},"budget_count":{"sum":{"field":"budget"}}}}}},"bidtypeData":{"filter":{"bool":{"must":{"terms":{"bidtype":["招标","邀标","询价","单一","竞价","竞谈"]}}}},"aggs":{"bidtype_group":{"terms":{"field":"bidtype"},"aggs":{"bidamount_count":{"sum":{"field":"bidamount"}}}},"bidamount_count":{"sum":{"field":"bidamount"}}}},"topScopeclassData":{"terms":{"field":"topscopeclass","size":12,"order":[{"bidamount_count":"desc"}]},"aggs":{"bidamount_count":{"sum":{"field":"bidamount"}},"top_scopeclass_rate_time_avg":` + YearRate + `}},"allScopeclassData":` + YearRate + `,"topAgencyData":{"terms":{"field":"agency","size":10,"order":[{"_count":"desc"},{"last_with_time":"desc"}]},"aggs":{"last_with_time":{"max":{"field":"jgtime"}}}},"topWinner":{"terms":{"field":"entidlist","size":50,"order":[{"count_bidamount":"desc"},{"_count":"desc"},{"last_with_time":"desc"}]},"aggs":{"last_with_time":{"max":{"field":"jgtime"}},"count_bidamount":{"sum":{"field":"bidamount"}},"avg_data":{"filter":{"bool":{"must":{"range":{"project_rate":{"gte":0,"lte":0.6}}}}},"aggs":{"bidamount_count":{"sum":{"field":"bidamount"}},"budget_count":{"sum":{"field":"budget"}}}}}},"firstWinner":{"terms":{"field":"first_cooperation","size":50}},"allWinnerList":{"terms":{"field":"entidlist","size":10000},"aggs":{"count_bidamount":{"sum":{"field":"bidamount"}},"avg_data":` + BaseRate + `}}},"size":0}`
+	buyerPortraitSearchSql = `{"query":{"bool":{"must":[%s]}},"aggs":{"year_bidamount":{"range":{"field":"jgtime","ranges":[%s]},"aggs":{"count":{"sum":{"field":"bidamount"}}}},"fail_count":{"filter":{"bool":{"must":[{"term":{"bidstatus":"流标"}}]}}},"winner_count":{"cardinality":{"field":"entidlist"}},"bidamount_count":{"sum":{"field":"bidamount"}},"moneyRange":{"filter":{"bool":{"must":{"range":{"project_rate":{"gte":0,"lte":0.6}}}}},"aggs":{"moneyRangeValue":{"range":{"field":"bidamount","ranges":[%s]},"aggs":{"bidamount_count":{"sum":{"field":"bidamount"}},"budget_count":{"sum":{"field":"budget"}}}}}},"bidtypeData":{"filter":{"bool":{"must":{"terms":{"bidtype":["招标","邀标","询价","单一","竞价","竞谈"]}}}},"aggs":{"bidtype_group":{"terms":{"field":"bidtype"},"aggs":{"bidamount_count":{"sum":{"field":"bidamount"}}}},"bidamount_count":{"sum":{"field":"bidamount"}}}},"topScopeclassData":{"terms":{"field":"topscopeclass","size":12,"order":[{"bidamount_count":"desc"}]},"aggs":{"bidamount_count":{"sum":{"field":"bidamount"}},"top_scopeclass_rate_time_avg":` + YearRate + `}},"allScopeclassData":` + YearRate + `,"topAgencyData":{"terms":{"field":"agency","size":10,"order":[{"_count":"desc"},{"last_with_time":"desc"}]},"aggs":{"last_with_time":{"max":{"field":"jgtime"}}}},"topWinner":{"terms":{"field":"entidlist","order":[{"count_bidamount":"desc"},{"_count":"desc"},{"last_with_time":"desc"}]},"aggs":{"last_with_time":{"max":{"field":"jgtime"}},"count_bidamount":{"sum":{"field":"bidamount"}},"avg_data":{"filter":{"bool":{"must":{"range":{"project_rate":{"gte":0,"lte":0.6}}}}},"aggs":{"bidamount_count":{"sum":{"field":"bidamount"}},"budget_count":{"sum":{"field":"budget"}}}}}},"firstWinner":{"terms":{"field":"first_cooperation"}},"allWinnerList":{"terms":{"field":"entidlist","size":10000},"aggs":{"count_bidamount":{"sum":{"field":"bidamount"}},"avg_data":` + BaseRate + `}}},"size":0}`
 	queryTermByIdSql       = `{"terms":{"_id":[%s]}}`
 
 	queryMustSql                = `{"query":{"bool":{"must":[%s]}}}`
 	buyerWithEntThreadSearchNum = 50
-	buyerWithEntPortraitSqlPage = `{"query":{"bool":{"must":[%s]}},"_source":["_id","company_area","capital","establish_date","tag_business"],"from":%d,"size":%d}`
+	buyerWithEntPortraitSqlPage = `{"query":{"bool":{"must":[%s]}},"_source":["_id","company_area","capital","establish_date","tag_business"],"size":%d}`
 )
 
 // GetBuyerMsg 获取采购单位基本信息
@@ -578,14 +578,14 @@ func GetWithEntPortraitData(listDataItf interface{}, province string, bidamountO
 	}
 
 	tBegin := time.Now()
-	doSearchSql := fmt.Sprintf(queryTermByIdSql, `"`+strings.Join(winnerIdList, `","`)+`"`)
-
-	searchNum := elastic.Count("qyxy", "qyxy", fmt.Sprintf(queryMustSql, doSearchSql))
-	if searchNum == 0 {
-		return nil, 0, errors.New("中标企业数量为空")
-	}
+	//doSearchSql := fmt.Sprintf(queryTermByIdSql, `"`+strings.Join(winnerIdList, `","`)+`"`)
+	//searchNum := elastic.Count("qyxy", "qyxy", fmt.Sprintf(queryMustSql, doSearchSql))
+	//if searchNum == 0 {
+	//	return nil, 0, errors.New("中标企业数量为空")
+	//}
 	//多线程查询企业信息
 	var swg sync.WaitGroup
+	searchNum := len(winnerIdList)
 	goThreadNum := qutil.IntAll(searchNum / buyerWithEntThreadSearchNum)
 	if searchNum%buyerWithEntThreadSearchNum != 0 {
 		goThreadNum++
@@ -598,7 +598,11 @@ func GetWithEntPortraitData(listDataItf interface{}, province string, bidamountO
 			defer func() {
 				swg.Done()
 			}()
-			res := elastic.Get("qyxy", "qyxy", fmt.Sprintf(buyerWithEntPortraitSqlPage, doSearchSql, i*buyerWithEntThreadSearchNum, buyerWithEntThreadSearchNum))
+			start, end := i*buyerWithEntThreadSearchNum, (i+1)*buyerWithEntThreadSearchNum
+			if end > searchNum {
+				end = searchNum
+			}
+			res := elastic.Get("qyxy", "qyxy", fmt.Sprintf(buyerWithEntPortraitSqlPage, fmt.Sprintf(queryTermByIdSql, `"`+strings.Join(winnerIdList[start:end], `","`)+`"`), buyerWithEntThreadSearchNum))
 			if res != nil && len(*res) > 0 {
 				lock.Lock()
 				entMsgList = append(entMsgList, *res...)