Browse Source

Merge branch 'dev_v1.0.4_wh' of CRM/application into hotfix/v1.0.4.2

王浩 1 year ago
parent
commit
238a0e0cec
1 changed files with 76 additions and 79 deletions
  1. 76 79
      api/internal/service/owner.go

+ 76 - 79
api/internal/service/owner.go

@@ -218,31 +218,39 @@ func Findwinner(buyerArr []string) []map[string]interface{} {
 		return returnData
 	}
 	//供应商  采购单位 供应商     招标代理机构  采购单位  招标代理机构  需要计算合作次数
-	winnerSql := fmt.Sprintf(`select
-		DISTINCT 
+	winnerSql := fmt.Sprintf(`select  * from  (select
 			zbtime,
 			project_id,
 			project_name,
 			buyer_id,
 			buyer,
-			agency_id,
-			agency,
-			winnerId,
-			winner
-	from
-			transaction_info      ARRAY JOIN  winner_id as  winnerId
-	where
-		buyer_id in (%s) order by  zbtime DESC,project_id DESC  `, strings.Join(buyerArr, ","))
+			entId,
+			'supplier' as entType
+from
+			transaction_info ARRAY
+JOIN winner_id as entId
+where
+		buyer_id in (%s)
+UNION ALL
+		select
+			zbtime,
+			project_id,
+			project_name,
+			buyer_id,
+			buyer,
+			agency_id as entId,
+			'agent' as  entType
+from
+			transaction_info
+where
+		buyer_id in (%s) and  agency_id!='') order by  zbtime DESC,project_id DESC   `, strings.Join(buyerArr, ","), strings.Join(buyerArr, ","))
 	winnerArr := SupplierFindConnectionsHandle(winnerSql)
 	if winnerArr != nil && len(winnerArr) > 0 {
 		//企业联系人处理
 		entIdArr := []string{}
 		for _, v := range winnerArr {
-			if v.WinnerId != "" {
-				entIdArr = append(entIdArr, fmt.Sprintf("'%s'", v.WinnerId))
-			}
-			if v.Agency_id != "" {
-				entIdArr = append(entIdArr, fmt.Sprintf("'%s'", v.Agency_id))
+			if v.EntId != "" {
+				entIdArr = append(entIdArr, fmt.Sprintf("'%s'", v.EntId))
 			}
 		}
 		personMap := map[string]string{}
@@ -265,54 +273,49 @@ func Findwinner(buyerArr []string) []map[string]interface{} {
 		agencyMap := map[string]map[string]interface{}{}
 		agencyIdMap := map[string]bool{}
 		for _, m := range winnerArr {
-			buyerId := m.Buyer_id
-			winner := entNameMap[m.WinnerId]
-			buyer := m.Buyer
-			winnerId := m.WinnerId
-			agency := m.Agency
-			agencyId := m.Agency_id
 			projectId := encrypt.EncodeArticleId2ByCheck(m.Project_id)
 			projectName := m.Project_name
 			zbtime := m.Zbtime
-			key := fmt.Sprintf("%s_%s", buyerId, winnerId)
-			if winnerId == "" {
-				continue
-			}
-			if _, ok := winnerMap[key]; ok {
-				data := winnerMap[key]
-				data["count"] = gconv.Int64(data["count"]) + 1
-				dataList := gconv.Maps(data["list"])
-				dataList = append(dataList, map[string]interface{}{
-					"zbtime":      zbtime,
-					"projectId":   projectId,
-					"projectName": projectName,
-				})
-				data["list"] = dataList
-				data["zbtime"] = zbtime
-				winnerMap[key] = data
-			} else {
-				winnerMap[key] = map[string]interface{}{
-					"b_id":       winnerId,
-					"b_name":     winner,
-					"a_name":     buyer,
-					"a_id":       buyerId,
-					"sourceType": "supplier",
-					"zbtime":     zbtime,
-					"personName": gconv.String(personMap[winnerId]),
-					"count":      1,
-					"list": []map[string]interface{}{
-						{
-							"zbtime":      zbtime,
-							"entName":     winner,
-							"projectId":   projectId,
-							"projectName": projectName,
+			key := fmt.Sprintf("%s_%s", m.Buyer_id, m.EntId)
+			if m.EntType == "supplier" {
+				buyerId := m.Buyer_id
+				winner := entNameMap[m.EntId]
+				buyer := m.Buyer
+				if _, ok := winnerMap[key]; ok {
+					data := winnerMap[key]
+					data["count"] = gconv.Int64(data["count"]) + 1
+					dataList := gconv.Maps(data["list"])
+					dataList = append(dataList, map[string]interface{}{
+						"zbtime":      zbtime,
+						"projectId":   projectId,
+						"projectName": projectName,
+					})
+					data["list"] = dataList
+					data["zbtime"] = zbtime
+					winnerMap[key] = data
+				} else {
+					winnerMap[key] = map[string]interface{}{
+						"b_id":       m.EntId,
+						"b_name":     entNameMap[m.EntId],
+						"a_name":     buyer,
+						"a_id":       buyerId,
+						"sourceType": "supplier",
+						"zbtime":     zbtime,
+						"personName": personMap[m.EntId],
+						"count":      1,
+						"list": []map[string]interface{}{
+							{
+								"zbtime":      zbtime,
+								"entName":     winner,
+								"projectId":   projectId,
+								"projectName": projectName,
+							},
 						},
-					},
+					}
 				}
-			}
-			if agencyId != "" && buyerId != "" && projectId != "" {
-				key = fmt.Sprintf("%s_%s", buyerId, agencyId)
-				//key1 := fmt.Sprintf("%s_%s_%s", buyerId, agencyId, projectId)
+			} else {
+				agencyId := m.EntId
+				key = fmt.Sprintf("%s_%s", m.Buyer_id, agencyId)
 				if _, ok := agencyIdMap[key]; ok {
 					data := agencyMap[key]
 					data["count"] = gconv.Int64(data["count"]) + 1
@@ -328,10 +331,10 @@ func Findwinner(buyerArr []string) []map[string]interface{} {
 				} else {
 					agencyIdMap[key] = true
 					agencyMap[key] = map[string]interface{}{
-						"b_id":       agencyId,
-						"b_name":     agency,
-						"a_name":     buyer,
-						"a_id":       buyerId,
+						"b_id":       m.EntId,
+						"b_name":     entNameMap[m.EntId],
+						"a_name":     m.Buyer,
+						"a_id":       m.Buyer_id,
 						"sourceType": "agency",
 						"count":      1,
 						"zbtime":     zbtime,
@@ -899,15 +902,13 @@ type PersonEntity struct {
 	PersonName string `ch:"personName"`
 }
 type SupplierConnectionsEntity struct {
-	Zbtime       int64    `ch:"zbtime"`
-	Project_id   string   `ch:"project_id"`
-	Project_name string   `ch:"project_name"`
-	Buyer_id     string   `ch:"buyer_id"`
-	Buyer        string   `ch:"buyer"`
-	Agency_id    string   `ch:"agency_id"`
-	Agency       string   `ch:"agency"`
-	WinnerId     string   `ch:"winnerId"`
-	Winner       []string `ch:"winner"`
+	Zbtime       int64  `ch:"zbtime"`
+	Project_id   string `ch:"project_id"`
+	Project_name string `ch:"project_name"`
+	Buyer_id     string `ch:"buyer_id"`
+	Buyer        string `ch:"buyer"`
+	EntId        string `ch:"entId"`
+	EntType      string `ch:"entType"`
 }
 type SupplierConnectionsEntitys struct {
 	Zbtime       int64
@@ -915,10 +916,8 @@ type SupplierConnectionsEntitys struct {
 	Project_name string
 	Buyer_id     string
 	Buyer        string
-	Agency_id    string
-	Agency       string
-	WinnerId     string
-	Winner       string
+	EntId        string
+	EntType      string
 }
 type TimeConnectionsEntity struct {
 	Zbtime       int64  `ch:"zbtime"`
@@ -974,10 +973,8 @@ func SupplierFindConnectionsHandle(sqlStr string) []SupplierConnectionsEntitys {
 			Project_name: data.Project_name,
 			Buyer_id:     data.Buyer_id,
 			Buyer:        data.Buyer,
-			Agency_id:    data.Agency_id,
-			Agency:       data.Agency,
-			WinnerId:     data.WinnerId,
-			Winner:       "",
+			EntId:        data.EntId,
+			EntType:      data.EntType,
 		})
 	}
 	return returnData