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