Selaa lähdekoodia

wip:总数修改

wangkaiyue 2 vuotta sitten
vanhempi
commit
d45b6c8d2e
1 muutettua tiedostoa jossa 25 lisäystä ja 10 poistoa
  1. 25 10
      src/jfw/modules/bigmember/src/entity/portraitBuyerSearch.go

+ 25 - 10
src/jfw/modules/bigmember/src/entity/portraitBuyerSearch.go

@@ -46,7 +46,7 @@ func GetBuyerPortraitData(screen *PortraitScreen) (map[string]interface{}, error
 
 	if AllWinner, ok := buyerPortraitData["allWinnerList"]; ok {
 		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 {
 			log.Println("GetWithEntPortraitData err", withErr)
 		}
@@ -548,7 +548,7 @@ type AllWinner struct {
 }
 
 // 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{}
 	if err := InterfaceToStruct(listDataItf, listData); err != nil {
 		return nil, 0, err
@@ -560,18 +560,18 @@ func GetWithEntPortraitData(listDataItf interface{}, province string, bidamountO
 	var winnerIdList []string
 	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 {
 		winnerIdList = append(winnerIdList, winner.WinnerId)
-		if winner.WinnerId == "" || winner.WinnerId == "-" {
-			businessAggs["其他"] = append(businessAggs["其他"], "-")
-		}
 		allWinnerMap[winner.WinnerId] = winner
+		hasTagTotalBidAmount += winner.BidamountCount
+		hasTagProjectCount += winner.ProjectCount
 	}
+
 	tBegin := time.Now()
 	doSearchSql := fmt.Sprintf(queryTermByIdSql, `"`+strings.Join(winnerIdList, `","`)+`"`)
 	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
 	}
 	go func() {