|
@@ -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...)
|