|
@@ -46,7 +46,7 @@ func GetBuyerPortraitData(screen *PortraitScreen) (map[string]interface{}, error
|
|
|
|
|
|
if AllWinner, ok := buyerPortraitData["allWinnerList"]; ok {
|
|
if AllWinner, ok := buyerPortraitData["allWinnerList"]; ok {
|
|
province := qutil.ObjToString(buyerPortraitData["province"])
|
|
province := qutil.ObjToString(buyerPortraitData["province"])
|
|
- withPorTraitData, thisProvincesWinnerCount, withErr := GetWithEntPortraitData(AllWinner, province, buyerPortraitData["bidamount_count"])
|
|
|
|
|
|
+ withPorTraitData, thisProvincesWinnerCount, withErr := GetWithEntPortraitData(AllWinner, province, buyerPortraitData["bidamount_count"], buyerPortraitData["project_count"])
|
|
if withErr != nil {
|
|
if withErr != nil {
|
|
log.Println("GetWithEntPortraitData err", withErr)
|
|
log.Println("GetWithEntPortraitData err", withErr)
|
|
}
|
|
}
|
|
@@ -548,7 +548,7 @@ type AllWinner struct {
|
|
}
|
|
}
|
|
|
|
|
|
// GetWithEntPortraitData 查询采购单位合作企业画像
|
|
// GetWithEntPortraitData 查询采购单位合作企业画像
|
|
-func GetWithEntPortraitData(listDataItf interface{}, province string, bidamountObj interface{}) (map[string]interface{}, int, error) {
|
|
|
|
|
|
+func GetWithEntPortraitData(listDataItf interface{}, province string, bidamountObj, project_count interface{}) (map[string]interface{}, int, error) {
|
|
listData := &[]AllWinner{}
|
|
listData := &[]AllWinner{}
|
|
if err := InterfaceToStruct(listDataItf, listData); err != nil {
|
|
if err := InterfaceToStruct(listDataItf, listData); err != nil {
|
|
return nil, 0, err
|
|
return nil, 0, err
|
|
@@ -560,18 +560,18 @@ func GetWithEntPortraitData(listDataItf interface{}, province string, bidamountO
|
|
var winnerIdList []string
|
|
var winnerIdList []string
|
|
allWinnerMap := map[string]AllWinner{}
|
|
allWinnerMap := map[string]AllWinner{}
|
|
|
|
|
|
- capitalAggs := map[int][]string{} //注册资本
|
|
|
|
- areaAggs := map[string][]string{} //地区
|
|
|
|
- establishAggs := map[int][]string{} //成立日期
|
|
|
|
- businessAggs := map[string][]string{} //企业标签
|
|
|
|
-
|
|
|
|
|
|
+ capitalAggs := map[int][]string{} //注册资本
|
|
|
|
+ areaAggs := map[string][]string{} //地区
|
|
|
|
+ establishAggs := map[int][]string{} //成立日期
|
|
|
|
+ businessAggs := map[string][]string{} //企业标签
|
|
|
|
+ hasTagTotalBidAmount, hasTagProjectCount := 0.0, 0 //有企业分类中标总金额,其他归为"其他分类"
|
|
for _, winner := range *listData {
|
|
for _, winner := range *listData {
|
|
winnerIdList = append(winnerIdList, winner.WinnerId)
|
|
winnerIdList = append(winnerIdList, winner.WinnerId)
|
|
- if winner.WinnerId == "" || winner.WinnerId == "-" {
|
|
|
|
- businessAggs["其他"] = append(businessAggs["其他"], "-")
|
|
|
|
- }
|
|
|
|
allWinnerMap[winner.WinnerId] = winner
|
|
allWinnerMap[winner.WinnerId] = winner
|
|
|
|
+ hasTagTotalBidAmount += winner.BidamountCount
|
|
|
|
+ hasTagProjectCount += winner.ProjectCount
|
|
}
|
|
}
|
|
|
|
+
|
|
tBegin := time.Now()
|
|
tBegin := time.Now()
|
|
doSearchSql := fmt.Sprintf(queryTermByIdSql, `"`+strings.Join(winnerIdList, `","`)+`"`)
|
|
doSearchSql := fmt.Sprintf(queryTermByIdSql, `"`+strings.Join(winnerIdList, `","`)+`"`)
|
|
searchNum := elastic.Count("qyxy", "qyxy", fmt.Sprintf(queryMustSql, doSearchSql))
|
|
searchNum := elastic.Count("qyxy", "qyxy", fmt.Sprintf(queryMustSql, doSearchSql))
|
|
@@ -734,6 +734,21 @@ func GetWithEntPortraitData(listDataItf interface{}, province string, bidamountO
|
|
})
|
|
})
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ // 根据entid未查到企业信息、项目中entidlist数据不存在、项目中entidlist为[-],统一划分为【其他】类型、以保证占比相加等于1
|
|
|
|
+ if mCount := bidamount - hasTagTotalBidAmount; mCount > 0 {
|
|
|
|
+ businessData = append(businessData, map[string]interface{}{
|
|
|
|
+ "business_name": "其他",
|
|
|
|
+ "money_prop": func(m, b float64) interface{} {
|
|
|
|
+ if b <= 0 {
|
|
|
|
+ return nil
|
|
|
|
+ }
|
|
|
|
+ return mCount / bidamount
|
|
|
|
+ }(mCount, bidamount), //采购规模占比
|
|
|
|
+ "money_count": mCount, //采购规模
|
|
|
|
+ "project_count": qutil.IntAll(project_count) - hasTagProjectCount, //项目数量
|
|
|
|
+ "rate_avg": 0, //平均节支率(因包含未抽取到中标企业,中标企业id为-,无法计算)
|
|
|
|
+ })
|
|
|
|
+ }
|
|
returnData["withBusinessData"] = businessData
|
|
returnData["withBusinessData"] = businessData
|
|
}
|
|
}
|
|
go func() {
|
|
go func() {
|