|
@@ -3,9 +3,9 @@ package marketAnalysis
|
|
|
import (
|
|
|
"encoding/json"
|
|
|
"fmt"
|
|
|
+ "jy/src/jfw/modules/bigmember/src/util"
|
|
|
"sort"
|
|
|
"strings"
|
|
|
- "jy/src/jfw/modules/bigmember/src/util"
|
|
|
)
|
|
|
|
|
|
const (
|
|
@@ -78,7 +78,7 @@ type entValue struct {
|
|
|
Prop interface{} `json:"prop"`
|
|
|
}
|
|
|
|
|
|
-//marketScaleRefineQuery 细化聚合
|
|
|
+// marketScaleRefineQuery 细化聚合
|
|
|
func (mae *MarketAnalysisEntity) marketScaleRefineQuery() (rMap map[string]interface{}, err error) {
|
|
|
//关键词分组聚合
|
|
|
var aggsGroup []string
|
|
@@ -94,7 +94,7 @@ func (mae *MarketAnalysisEntity) marketScaleRefineQuery() (rMap map[string]inter
|
|
|
}
|
|
|
}
|
|
|
if len(bools) > 0 {
|
|
|
- aggsGroup = append(aggsGroup, fmt.Sprintf(`"%s":{"filter":{"query":{"bool":{"should":[%s],"minimum_should_match": 1}}},"aggs":{"project_count":{"filter":{"match_all":{}}},"project_amount":{"sum":{"field":"sortprice"}},"winner_total_top":{"terms":{"field":"entidlist","exclude":["-"],"order":[{"refine_winner_total":"desc"}],"size":%d},"aggs":{"refine_winner_total":{"filter":{"match_all":{}}}}},"winner_amount_top":{"terms":{"field":"entidlist","exclude":["-"],"order":[{"refine_winner_amount":"desc"}],"size":%d},"aggs":{"refine_winner_amount":{"sum":{"field":"sortprice"}}}}}}`, group.ItemName, strings.Join(bools, ","), topWinnerLimit, topWinnerLimit))
|
|
|
+ aggsGroup = append(aggsGroup, fmt.Sprintf(`"%s":{"filter":{"bool":{"should":[%s],"minimum_should_match": 1}},"aggs":{"project_count":{"filter":{"match_all":{}}},"project_amount":{"sum":{"field":"sortprice"}},"winner_total_top":{"terms":{"field":"entidlist","exclude":["-"],"order":[{"refine_winner_total":"desc"}],"size":%d},"aggs":{"refine_winner_total":{"filter":{"match_all":{}}}}},"winner_amount_top":{"terms":{"field":"entidlist","exclude":["-"],"order":[{"refine_winner_amount":"desc"}],"size":%d},"aggs":{"refine_winner_amount":{"sum":{"field":"sortprice"}}}}}}`, group.ItemName, strings.Join(bools, ","), topWinnerLimit, topWinnerLimit))
|
|
|
}
|
|
|
itemDataMap[group.ItemName] = group.UpdateTime
|
|
|
}
|
|
@@ -141,7 +141,7 @@ func (mae *MarketAnalysisEntity) marketScaleRefineQuery() (rMap map[string]inter
|
|
|
}, nil
|
|
|
}
|
|
|
|
|
|
-//doIdSwitch 补充企业名称
|
|
|
+// doIdSwitch 补充企业名称
|
|
|
func (srd *scaleRefineData) doIdSwitch() {
|
|
|
if len(srd.IdSwitch) == 0 {
|
|
|
return
|
|
@@ -165,7 +165,7 @@ func (srd *scaleRefineData) doIdSwitch() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-//formatData 计算百分比&获取企业对应名称
|
|
|
+// formatData 计算百分比&获取企业对应名称
|
|
|
func (srd *scaleRefineData) formatData() {
|
|
|
for _, v := range srd.Data {
|
|
|
v.TotalProp = float64(v.Total) / float64(srd.Total.Total)
|
|
@@ -183,7 +183,7 @@ func (srd *scaleRefineData) formatData() {
|
|
|
srd.ReturnData.TotalTop = srd.sortBy(onlyTotal).getFormatTop(topItemLimit, onlyTotal)
|
|
|
}
|
|
|
|
|
|
-//getOverallData 获取分类总览数据
|
|
|
+// getOverallData 获取分类总览数据
|
|
|
func (srd *scaleRefineData) getOverallData() (rData []map[string]interface{}) {
|
|
|
for _, Value := range srd.Data {
|
|
|
rData = append(rData, map[string]interface{}{
|
|
@@ -195,9 +195,9 @@ func (srd *scaleRefineData) getOverallData() (rData []map[string]interface{}) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-//getArrayFormatTop 获取前n个数据,并格式化
|
|
|
-//limit 获取前x条
|
|
|
-//flag 1仅返回数量统计 2仅返回金额统计
|
|
|
+// getArrayFormatTop 获取前n个数据,并格式化
|
|
|
+// limit 获取前x条
|
|
|
+// flag 1仅返回数量统计 2仅返回金额统计
|
|
|
func (srd *scaleRefineData) getFormatTop(limit, flag int) (rData []*returnItem) {
|
|
|
for index, Value := range srd.Data {
|
|
|
if index >= limit && limit > -1 {
|
|
@@ -241,7 +241,7 @@ func (srd *scaleRefineData) getFormatTop(limit, flag int) (rData []*returnItem)
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-//getScaleRefineAll 根据订阅词组创建时间排序
|
|
|
+// getScaleRefineAll 根据订阅词组创建时间排序
|
|
|
func (srd *scaleRefineData) sortBy(flag int) *scaleRefineData {
|
|
|
sort.Slice(srd.Data, func(i, j int) bool {
|
|
|
switch flag {
|