|
@@ -157,7 +157,7 @@ func (t *OwnerService) OwnerlList() *OwnerlListRes {
|
|
}
|
|
}
|
|
// 可介绍业主人脉处理
|
|
// 可介绍业主人脉处理
|
|
logx.Info(t.PositionId, " ConnectionsHandle start 。。。")
|
|
logx.Info(t.PositionId, " ConnectionsHandle start 。。。")
|
|
- routeList := ConnectionsHandle(buyerIdArr, t.PositionId, false)
|
|
|
|
|
|
+ routeList := ConnectionsHandle(buyerIdArr, t.PositionId, 1)
|
|
logx.Info(t.PositionId, " ConnectionsHandle over 。。。")
|
|
logx.Info(t.PositionId, " ConnectionsHandle over 。。。")
|
|
updateReturnDataWithRoutes(olr.ReturnData, routeList)
|
|
updateReturnDataWithRoutes(olr.ReturnData, routeList)
|
|
}
|
|
}
|
|
@@ -199,198 +199,155 @@ func updateReturnDataWithRoutes(returnData []BuyerProject, routeList []map[strin
|
|
}
|
|
}
|
|
|
|
|
|
// 可介绍业主人脉列表
|
|
// 可介绍业主人脉列表
|
|
-func ConnectionsHandle(buyerArr []string, positionId int64, isAll bool) []map[string]interface{} {
|
|
|
|
|
|
+func ConnectionsHandle(buyerArr []string, positionId int64, contactCount int) []map[string]interface{} {
|
|
returnData := []map[string]interface{}{}
|
|
returnData := []map[string]interface{}{}
|
|
- a1 := time.Now().Unix()
|
|
|
|
//中间人
|
|
//中间人
|
|
- returnData = FindMiddleman(buyerArr, positionId, returnData)
|
|
|
|
- a2 := time.Now().Unix()
|
|
|
|
- fmt.Println("中间人", a2-a1)
|
|
|
|
- if isAll && len(returnData) > 0 {
|
|
|
|
- return returnData
|
|
|
|
- }
|
|
|
|
|
|
+ logx.Info(positionId, " ConnectionsHandle start 。。。")
|
|
|
|
+ FindMiddleman(positionId, buyerArr, returnData)
|
|
|
|
+ logx.Info(positionId, " FindMiddleman over 。。。")
|
|
//采购单位 投资关系 管辖关系
|
|
//采购单位 投资关系 管辖关系
|
|
//采购单位
|
|
//采购单位
|
|
- a3 := time.Now().Unix()
|
|
|
|
- returnData = Findfirstparty(buyerArr, returnData)
|
|
|
|
- a4 := time.Now().Unix()
|
|
|
|
- fmt.Println("采购单位", a4-a3)
|
|
|
|
- if isAll && len(returnData) > 0 {
|
|
|
|
- return returnData
|
|
|
|
- }
|
|
|
|
- a5 := time.Now().Unix()
|
|
|
|
- returnData = append(returnData, Findwinner(buyerArr)...)
|
|
|
|
- a6 := time.Now().Unix()
|
|
|
|
- logx.Info("供应商", a6-a5)
|
|
|
|
|
|
+ Findfirstparty(positionId, buyerArr, returnData, contactCount)
|
|
|
|
+ logx.Info(positionId, " Findfirstparty over 。。。")
|
|
|
|
+ returnData = append(returnData, Findwinner(positionId, buyerArr, contactCount)...)
|
|
|
|
+ logx.Info(positionId, " Findwinner over 。。。")
|
|
return returnData
|
|
return returnData
|
|
}
|
|
}
|
|
|
|
|
|
// 供应商处理
|
|
// 供应商处理
|
|
-func Findwinner(buyerArr []string) []map[string]interface{} {
|
|
|
|
|
|
+func Findwinner(positionId int64, buyerArr []string, contactCount int) []map[string]interface{} {
|
|
returnData := []map[string]interface{}{}
|
|
returnData := []map[string]interface{}{}
|
|
if len(buyerArr) == 0 {
|
|
if len(buyerArr) == 0 {
|
|
return returnData
|
|
return returnData
|
|
}
|
|
}
|
|
wh1, args1 := common.WhArgs(buyerArr)
|
|
wh1, args1 := common.WhArgs(buyerArr)
|
|
- args1 = append(args1, args1...)
|
|
|
|
//供应商 采购单位 供应商 招标代理机构 采购单位 招标代理机构 需要计算合作次数
|
|
//供应商 采购单位 供应商 招标代理机构 采购单位 招标代理机构 需要计算合作次数
|
|
- winnerSql := `select zbtime,project_id,project_name,buyer_id,buyer,wr_id,wr,agency_id,agency from transaction_info_all ARRAY JOIN winner_id as wr_id,winner as wr where buyer_id in (` + wh1 + `) and LENGTH(winner)=LENGTH(winner_id) order by zbtime DESC,project_id DESC`
|
|
|
|
- logx.Info("Findwinner 合作 sql ", winnerSql, args1)
|
|
|
|
|
|
+ winnerSql := `select zbtime,project_id,project_name,buyer_id,buyer,wr_id,wr,agency_id,agency from transaction_info_all ARRAY JOIN winner_id as wr_id,winner as wr prewhere buyer_id in (` + wh1 + `) and LENGTH(winner)=LENGTH(winner_id) order by zbtime DESC,project_id DESC`
|
|
|
|
+ logx.Info(positionId, " Findwinner 合作 sql ", winnerSql, args1)
|
|
winnerArr := SupplierFindConnectionsHandle(winnerSql, args1...)
|
|
winnerArr := SupplierFindConnectionsHandle(winnerSql, args1...)
|
|
- if winnerArr != nil && len(winnerArr) > 0 {
|
|
|
|
- //企业联系人处理
|
|
|
|
- entIdArr := []string{}
|
|
|
|
- entIdMap := map[string]bool{}
|
|
|
|
- for _, v := range winnerArr {
|
|
|
|
- if v.Winner_id != "" {
|
|
|
|
- if !entIdMap[v.Winner_id] {
|
|
|
|
- entIdArr = append(entIdArr, v.Winner_id)
|
|
|
|
- }
|
|
|
|
- entIdMap[v.Winner_id] = true
|
|
|
|
- }
|
|
|
|
- if v.Agency_id != "" {
|
|
|
|
- if !entIdMap[v.Agency_id] {
|
|
|
|
- entIdArr = append(entIdArr, v.Agency_id)
|
|
|
|
- }
|
|
|
|
- entIdMap[v.Agency_id] = true
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- personMap := map[string]string{}
|
|
|
|
- if len(entIdArr) > 0 {
|
|
|
|
- wh2, args2 := common.WhArgs(entIdArr)
|
|
|
|
- personSql := `select id,name as personName from ent_contact where id in (` + wh2 + `) ORDER by name`
|
|
|
|
- logx.Info("Findwinner 联系人 sql ", personSql, args2)
|
|
|
|
- personArr := PersonFindConnectionsHandle(personSql, args2...)
|
|
|
|
- //联系人处理
|
|
|
|
- for _, v := range personArr {
|
|
|
|
- personMap[v.Id] = v.PersonName
|
|
|
|
- }
|
|
|
|
|
|
+ if winnerArr == nil || len(winnerArr) == 0 {
|
|
|
|
+ return returnData
|
|
|
|
+ }
|
|
|
|
+ winnerMap := map[string]map[string]interface{}{}
|
|
|
|
+ agencyMap := map[string]map[string]interface{}{}
|
|
|
|
+ agencyIdMap := map[string]bool{}
|
|
|
|
+ for _, m := range winnerArr {
|
|
|
|
+ if m.Winner_id == "" && m.Agency_id == "" {
|
|
|
|
+ continue
|
|
}
|
|
}
|
|
- winnerMap := map[string]map[string]interface{}{}
|
|
|
|
- agencyMap := map[string]map[string]interface{}{}
|
|
|
|
- agencyIdMap := map[string]bool{}
|
|
|
|
- for _, m := range winnerArr {
|
|
|
|
- if m.Winner_id == "" && m.Agency_id == "" {
|
|
|
|
- continue
|
|
|
|
- }
|
|
|
|
- projectId := encrypt.EncodeArticleId2ByCheck(m.Project_id)
|
|
|
|
- projectName := m.Project_name
|
|
|
|
- zbtime := m.Zbtime
|
|
|
|
- if m.Winner_id != "" {
|
|
|
|
- key := fmt.Sprintf("%s_%s", m.Buyer_id, m.Winner_id)
|
|
|
|
- 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.Winner_id,
|
|
|
|
- "b_name": m.Winner,
|
|
|
|
- "a_name": m.Buyer,
|
|
|
|
- "a_id": m.Buyer_id,
|
|
|
|
- "sourceType": "supplier",
|
|
|
|
- "zbtime": zbtime,
|
|
|
|
- "personName": personMap[m.Winner_id],
|
|
|
|
- "count": 1,
|
|
|
|
- "list": []map[string]interface{}{
|
|
|
|
- {
|
|
|
|
- "zbtime": zbtime,
|
|
|
|
- "entName": m.Winner,
|
|
|
|
- "projectId": projectId,
|
|
|
|
- "projectName": projectName,
|
|
|
|
- },
|
|
|
|
|
|
+ projectId := encrypt.EncodeArticleId2ByCheck(m.Project_id)
|
|
|
|
+ projectName := m.Project_name
|
|
|
|
+ zbtime := m.Zbtime
|
|
|
|
+ if m.Winner_id != "" {
|
|
|
|
+ key := fmt.Sprintf("%s_%s", m.Buyer_id, m.Winner_id)
|
|
|
|
+ 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.Winner_id,
|
|
|
|
+ "b_name": m.Winner,
|
|
|
|
+ "a_name": m.Buyer,
|
|
|
|
+ "a_id": m.Buyer_id,
|
|
|
|
+ "sourceType": "supplier",
|
|
|
|
+ "zbtime": zbtime,
|
|
|
|
+ "count": 1,
|
|
|
|
+ "list": []map[string]interface{}{
|
|
|
|
+ {
|
|
|
|
+ "zbtime": zbtime,
|
|
|
|
+ "entName": m.Winner,
|
|
|
|
+ "projectId": projectId,
|
|
|
|
+ "projectName": projectName,
|
|
},
|
|
},
|
|
- }
|
|
|
|
|
|
+ },
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- if m.Agency_id != "" {
|
|
|
|
- key := fmt.Sprintf("%s_%s", m.Buyer_id, m.Agency_id)
|
|
|
|
- if _, ok := agencyIdMap[key]; ok {
|
|
|
|
- data := agencyMap[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
|
|
|
|
- agencyMap[key] = data
|
|
|
|
- } else {
|
|
|
|
- agencyIdMap[key] = true
|
|
|
|
- agencyMap[key] = map[string]interface{}{
|
|
|
|
- "b_id": m.Agency_id,
|
|
|
|
- "b_name": m.Agency,
|
|
|
|
- "a_name": m.Buyer,
|
|
|
|
- "a_id": m.Buyer_id,
|
|
|
|
- "sourceType": "agency",
|
|
|
|
- "count": 1,
|
|
|
|
- "zbtime": zbtime,
|
|
|
|
- "personName": gconv.String(personMap[m.Agency_id]),
|
|
|
|
- "list": []map[string]interface{}{
|
|
|
|
- {
|
|
|
|
- "zbtime": zbtime,
|
|
|
|
- "projectId": projectId,
|
|
|
|
- "projectName": projectName,
|
|
|
|
- },
|
|
|
|
|
|
+ }
|
|
|
|
+ if m.Agency_id != "" {
|
|
|
|
+ key := fmt.Sprintf("%s_%s", m.Buyer_id, m.Agency_id)
|
|
|
|
+ if _, ok := agencyIdMap[key]; ok {
|
|
|
|
+ data := agencyMap[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
|
|
|
|
+ agencyMap[key] = data
|
|
|
|
+ } else {
|
|
|
|
+ agencyIdMap[key] = true
|
|
|
|
+ agencyMap[key] = map[string]interface{}{
|
|
|
|
+ "b_id": m.Agency_id,
|
|
|
|
+ "b_name": m.Agency,
|
|
|
|
+ "a_name": m.Buyer,
|
|
|
|
+ "a_id": m.Buyer_id,
|
|
|
|
+ "sourceType": "agency",
|
|
|
|
+ "count": 1,
|
|
|
|
+ "zbtime": zbtime,
|
|
|
|
+ "list": []map[string]interface{}{
|
|
|
|
+ {
|
|
|
|
+ "zbtime": zbtime,
|
|
|
|
+ "projectId": projectId,
|
|
|
|
+ "projectName": projectName,
|
|
},
|
|
},
|
|
- }
|
|
|
|
|
|
+ },
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
- }
|
|
|
|
- for _, m := range winnerMap {
|
|
|
|
- returnData = append(returnData, map[string]interface{}{
|
|
|
|
- "b_id": gconv.String(m["b_id"]),
|
|
|
|
- "b_name": gconv.String(m["b_name"]),
|
|
|
|
- "a_name": gconv.String(m["a_name"]),
|
|
|
|
- "a_id": gconv.String(m["a_id"]),
|
|
|
|
- "sourceType": gconv.String(m["sourceType"]),
|
|
|
|
- "relationship": gconv.String(m["relationship"]),
|
|
|
|
- "count": gconv.Int64(m["count"]),
|
|
|
|
- "personName": gconv.String(m["personName"]),
|
|
|
|
- "list": m["list"],
|
|
|
|
- "zbtime": m["zbtime"],
|
|
|
|
- })
|
|
|
|
- }
|
|
|
|
- for _, m := range agencyMap {
|
|
|
|
- returnData = append(returnData, map[string]interface{}{
|
|
|
|
- "b_id": gconv.String(m["b_id"]),
|
|
|
|
- "b_name": gconv.String(m["b_name"]),
|
|
|
|
- "a_name": gconv.String(m["a_name"]),
|
|
|
|
- "a_id": gconv.String(m["a_id"]),
|
|
|
|
- "sourceType": gconv.String(m["sourceType"]),
|
|
|
|
- "relationship": gconv.String(m["relationship"]),
|
|
|
|
- "personName": gconv.String(m["personName"]),
|
|
|
|
- "count": gconv.Int64(m["count"]),
|
|
|
|
- "list": m["list"],
|
|
|
|
- "zbtime": m["zbtime"],
|
|
|
|
- })
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ for _, m := range winnerMap {
|
|
|
|
+ returnData = append(returnData, map[string]interface{}{
|
|
|
|
+ "b_id": gconv.String(m["b_id"]),
|
|
|
|
+ "b_name": gconv.String(m["b_name"]),
|
|
|
|
+ "a_name": gconv.String(m["a_name"]),
|
|
|
|
+ "a_id": gconv.String(m["a_id"]),
|
|
|
|
+ "sourceType": gconv.String(m["sourceType"]),
|
|
|
|
+ "relationship": gconv.String(m["relationship"]),
|
|
|
|
+ "count": gconv.Int64(m["count"]),
|
|
|
|
+ "personName": gconv.String(m["personName"]),
|
|
|
|
+ "list": m["list"],
|
|
|
|
+ "zbtime": m["zbtime"],
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ for _, m := range agencyMap {
|
|
|
|
+ returnData = append(returnData, map[string]interface{}{
|
|
|
|
+ "b_id": gconv.String(m["b_id"]),
|
|
|
|
+ "b_name": gconv.String(m["b_name"]),
|
|
|
|
+ "a_name": gconv.String(m["a_name"]),
|
|
|
|
+ "a_id": gconv.String(m["a_id"]),
|
|
|
|
+ "sourceType": gconv.String(m["sourceType"]),
|
|
|
|
+ "relationship": gconv.String(m["relationship"]),
|
|
|
|
+ "personName": gconv.String(m["personName"]),
|
|
|
|
+ "count": gconv.Int64(m["count"]),
|
|
|
|
+ "list": m["list"],
|
|
|
|
+ "zbtime": m["zbtime"],
|
|
|
|
+ })
|
|
|
|
+ }
|
|
sort.Slice(returnData, func(i, j int) bool {
|
|
sort.Slice(returnData, func(i, j int) bool {
|
|
- aa := fmt.Sprintf("%s%s", gconv.String(returnData[i]["zbtime"]),
|
|
|
|
- gconv.String(returnData[i]["b_id"]))
|
|
|
|
- bb := fmt.Sprintf("%s%s", gconv.String(returnData[j]["zbtime"]),
|
|
|
|
- gconv.String(returnData[j]["b_id"]))
|
|
|
|
|
|
+ aa := fmt.Sprintf("%s%s", gconv.String(returnData[i]["zbtime"]), gconv.String(returnData[i]["b_id"]))
|
|
|
|
+ bb := fmt.Sprintf("%s%s", gconv.String(returnData[j]["zbtime"]), gconv.String(returnData[j]["b_id"]))
|
|
return aa > bb
|
|
return aa > bb
|
|
})
|
|
})
|
|
|
|
+ PersonFindConnectionsHandle(positionId, returnData, contactCount)
|
|
return returnData
|
|
return returnData
|
|
}
|
|
}
|
|
|
|
|
|
// 中间人查询
|
|
// 中间人查询
|
|
-func FindMiddleman(buyerArr []string, positionId int64, returnData []map[string]interface{}) []map[string]interface{} {
|
|
|
|
|
|
+func FindMiddleman(positionId int64, buyerArr []string, returnData []map[string]interface{}) {
|
|
if len(buyerArr) == 0 {
|
|
if len(buyerArr) == 0 {
|
|
- return returnData
|
|
|
|
|
|
+ return
|
|
}
|
|
}
|
|
//中间人 作为可介绍业主 企业名称
|
|
//中间人 作为可介绍业主 企业名称
|
|
wh, args := common.WhArgs(buyerArr)
|
|
wh, args := common.WhArgs(buyerArr)
|
|
@@ -412,13 +369,13 @@ func FindMiddleman(buyerArr []string, positionId int64, returnData []map[string]
|
|
"personName": gconv.String(v["contact_person"]),
|
|
"personName": gconv.String(v["contact_person"]),
|
|
})
|
|
})
|
|
}
|
|
}
|
|
- return returnData
|
|
|
|
|
|
+ return
|
|
}
|
|
}
|
|
|
|
|
|
// 企业之间关系查询
|
|
// 企业之间关系查询
|
|
-func Findfirstparty(buyerArr []string, returnData []map[string]interface{}) []map[string]interface{} {
|
|
|
|
|
|
+func Findfirstparty(positionId int64, buyerArr []string, returnData []map[string]interface{}, contactCount int) {
|
|
if len(buyerArr) == 0 {
|
|
if len(buyerArr) == 0 {
|
|
- return returnData
|
|
|
|
|
|
+ return
|
|
}
|
|
}
|
|
wh1, args1 := common.WhArgs(buyerArr)
|
|
wh1, args1 := common.WhArgs(buyerArr)
|
|
args1 = append(args1, args1...)
|
|
args1 = append(args1, args1...)
|
|
@@ -431,7 +388,7 @@ func Findfirstparty(buyerArr []string, returnData []map[string]interface{}) []ma
|
|
a.code as code
|
|
a.code as code
|
|
from
|
|
from
|
|
ent_map_code a
|
|
ent_map_code a
|
|
- where
|
|
|
|
|
|
+ prewhere
|
|
a.a_id in (` + wh1 + `)
|
|
a.a_id in (` + wh1 + `)
|
|
and a.code in('0101', '0201')
|
|
and a.code in('0101', '0201')
|
|
UNION ALL
|
|
UNION ALL
|
|
@@ -444,86 +401,66 @@ func Findfirstparty(buyerArr []string, returnData []map[string]interface{}) []ma
|
|
a.code as code
|
|
a.code as code
|
|
from
|
|
from
|
|
ent_map_code a
|
|
ent_map_code a
|
|
- where
|
|
|
|
|
|
+ prewhere
|
|
a.b_id in (` + wh1 + `)
|
|
a.b_id in (` + wh1 + `)
|
|
and a.code in('0101', '0201')`
|
|
and a.code in('0101', '0201')`
|
|
relationshipArr := BuyerFindConnectionsHandle(buyerSql, args1...)
|
|
relationshipArr := BuyerFindConnectionsHandle(buyerSql, args1...)
|
|
- if relationshipArr != nil && len(relationshipArr) > 0 {
|
|
|
|
- entIdArr := []string{}
|
|
|
|
- for _, v := range relationshipArr {
|
|
|
|
- if v.Bid != "" {
|
|
|
|
- entIdArr = append(entIdArr, v.Bid)
|
|
|
|
|
|
+ if relationshipArr == nil || len(relationshipArr) == 0 {
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ for _, v := range relationshipArr {
|
|
|
|
+ code := v.Code
|
|
|
|
+ status := v.Status
|
|
|
|
+ if gconv.String(status) == "111" {
|
|
|
|
+ //key := fmt.Sprintf("%s_%s", a_id, b_id)
|
|
|
|
+ switch code {
|
|
|
|
+ case "0101": //管辖关系
|
|
|
|
+ returnData = append(returnData, map[string]interface{}{
|
|
|
|
+ "b_id": v.Bid,
|
|
|
|
+ "b_name": v.Bname,
|
|
|
|
+ "a_name": v.Aname,
|
|
|
|
+ "a_id": v.Aid,
|
|
|
|
+ "sourceType": "firstparty",
|
|
|
|
+ "relationship": "业主的下级机构",
|
|
|
|
+ })
|
|
|
|
+ case "0201": //投资关系
|
|
|
|
+ returnData = append(returnData, map[string]interface{}{
|
|
|
|
+ "b_id": v.Bid,
|
|
|
|
+ "b_name": v.Bname,
|
|
|
|
+ "a_name": v.Aname,
|
|
|
|
+ "a_id": v.Aid,
|
|
|
|
+ "sourceType": "firstparty",
|
|
|
|
+ "relationship": "业主的股东",
|
|
|
|
+ })
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- personMap := map[string]string{}
|
|
|
|
- if len(entIdArr) > 0 {
|
|
|
|
- wh2, args2 := common.WhArgs(entIdArr)
|
|
|
|
- personSql := `select id,name as personName from ent_contact where id in (` + wh2 + `) ORDER by name`
|
|
|
|
- personArr := PersonFindConnectionsHandle(personSql, args2...)
|
|
|
|
- //联系人处理
|
|
|
|
- for _, v := range personArr {
|
|
|
|
- personMap[v.Id] = v.PersonName
|
|
|
|
|
|
+ if gconv.String(status) == "222" {
|
|
|
|
+ //key := fmt.Sprintf("%s_%s", b_id, a_id)
|
|
|
|
+ if code == "0101" {
|
|
|
|
+ //"0101":管辖关系
|
|
|
|
+ returnData = append(returnData, map[string]interface{}{
|
|
|
|
+ "b_id": v.Bid,
|
|
|
|
+ "b_name": v.Bname,
|
|
|
|
+ "a_name": v.Aname,
|
|
|
|
+ "a_id": v.Aid,
|
|
|
|
+ "sourceType": "firstparty",
|
|
|
|
+ "relationship": "业主的上级机构",
|
|
|
|
+ })
|
|
}
|
|
}
|
|
- }
|
|
|
|
- for _, v := range relationshipArr {
|
|
|
|
- code := v.Code
|
|
|
|
- status := v.Status
|
|
|
|
- if gconv.String(status) == "111" {
|
|
|
|
- //key := fmt.Sprintf("%s_%s", a_id, b_id)
|
|
|
|
- switch code {
|
|
|
|
- case "0101": //管辖关系
|
|
|
|
- returnData = append(returnData, map[string]interface{}{
|
|
|
|
- "b_id": v.Bid,
|
|
|
|
- "b_name": v.Bname,
|
|
|
|
- "a_name": v.Aname,
|
|
|
|
- "a_id": v.Aid,
|
|
|
|
- "sourceType": "firstparty",
|
|
|
|
- "relationship": "业主的下级机构",
|
|
|
|
- "personName": gconv.String(personMap[v.Bid]),
|
|
|
|
- })
|
|
|
|
-
|
|
|
|
- case "0201": //投资关系
|
|
|
|
- returnData = append(returnData, map[string]interface{}{
|
|
|
|
- "b_id": v.Bid,
|
|
|
|
- "b_name": v.Bname,
|
|
|
|
- "a_name": v.Aname,
|
|
|
|
- "a_id": v.Aid,
|
|
|
|
- "sourceType": "firstparty",
|
|
|
|
- "relationship": "业主的股东",
|
|
|
|
- "personName": gconv.String(personMap[v.Bid]),
|
|
|
|
- })
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- if gconv.String(status) == "222" {
|
|
|
|
- //key := fmt.Sprintf("%s_%s", b_id, a_id)
|
|
|
|
- if code == "0101" {
|
|
|
|
- //"0101":管辖关系
|
|
|
|
- returnData = append(returnData, map[string]interface{}{
|
|
|
|
- "b_id": v.Bid,
|
|
|
|
- "b_name": v.Bname,
|
|
|
|
- "a_name": v.Aname,
|
|
|
|
- "a_id": v.Aid,
|
|
|
|
- "sourceType": "firstparty",
|
|
|
|
- "relationship": "业主的上级机构",
|
|
|
|
- "personName": gconv.String(personMap[v.Bid]),
|
|
|
|
- })
|
|
|
|
- }
|
|
|
|
- if code == "0201" {
|
|
|
|
- returnData = append(returnData, map[string]interface{}{
|
|
|
|
- "b_id": v.Bid,
|
|
|
|
- "b_name": v.Bname,
|
|
|
|
- "a_name": v.Aname,
|
|
|
|
- "a_id": v.Aid,
|
|
|
|
- "sourceType": "firstparty",
|
|
|
|
- "relationship": "业主的股东",
|
|
|
|
- "personName": gconv.String(personMap[v.Bid]),
|
|
|
|
- })
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
|
|
+ if code == "0201" {
|
|
|
|
+ returnData = append(returnData, map[string]interface{}{
|
|
|
|
+ "b_id": v.Bid,
|
|
|
|
+ "b_name": v.Bname,
|
|
|
|
+ "a_name": v.Aname,
|
|
|
|
+ "a_id": v.Aid,
|
|
|
|
+ "sourceType": "firstparty",
|
|
|
|
+ "relationship": "业主的股东",
|
|
|
|
+ })
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- return returnData
|
|
|
|
|
|
+ PersonFindConnectionsHandle(positionId, returnData, contactCount)
|
|
|
|
+ return
|
|
}
|
|
}
|
|
|
|
|
|
// 采购单位和项目合并
|
|
// 采购单位和项目合并
|
|
@@ -704,7 +641,7 @@ func (t *OwnerService) ProjectHandle(buyerArr []string, businessStr string, moni
|
|
allArgs = append(allArgs, args...)
|
|
allArgs = append(allArgs, args...)
|
|
}
|
|
}
|
|
if len(ors2) > 0 {
|
|
if len(ors2) > 0 {
|
|
- ors1 = append(ors1, `(buyer_id in (select DISTINCT buyer_id from transaction_info_all where (`+strings.Join(ors2, " or ")+`) and buyer_id<>''))`)
|
|
|
|
|
|
+ ors1 = append(ors1, `(buyer_id in (select DISTINCT buyer_id from transaction_info_all prewhere (`+strings.Join(ors2, " or ")+`) and buyer_id<>''))`)
|
|
}
|
|
}
|
|
allArgs = append(allArgs, NetworkCom.ProjectYearLimit())
|
|
allArgs = append(allArgs, NetworkCom.ProjectYearLimit())
|
|
ands := []string{}
|
|
ands := []string{}
|
|
@@ -718,7 +655,7 @@ func (t *OwnerService) ProjectHandle(buyerArr []string, businessStr string, moni
|
|
ands = append(ands, `area in (`+wh+`)`)
|
|
ands = append(ands, `area in (`+wh+`)`)
|
|
allArgs = append(allArgs, args...)
|
|
allArgs = append(allArgs, args...)
|
|
}
|
|
}
|
|
- sqlStr += " where (" + strings.Join(ors1, " or ") + ") and zbtime>?"
|
|
|
|
|
|
+ sqlStr += " prewhere (" + strings.Join(ors1, " or ") + ") and zbtime>?"
|
|
if len(ands) > 0 {
|
|
if len(ands) > 0 {
|
|
sqlStr += " and " + strings.Join(ands, " and ")
|
|
sqlStr += " and " + strings.Join(ands, " and ")
|
|
}
|
|
}
|
|
@@ -758,9 +695,9 @@ func (t *OwnerService) ProjectHandle(buyerArr []string, businessStr string, moni
|
|
"buyerName": buyerName,
|
|
"buyerName": buyerName,
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- logx.Info(t.PositionId, " ProjectHandle sql over 。。。", sqlStr, allArgs)
|
|
|
|
|
|
+ logx.Info(t.PositionId, " ProjectHandle sql over 。。。")
|
|
count := T.NetworkCom.Count(countSql, allArgs...)
|
|
count := T.NetworkCom.Count(countSql, allArgs...)
|
|
- logx.Info(t.PositionId, " ProjectHandle count over 。。。", sqlStr, allArgs)
|
|
|
|
|
|
+ logx.Info(t.PositionId, " ProjectHandle count over 。。。")
|
|
return projectMap, count
|
|
return projectMap, count
|
|
}
|
|
}
|
|
|
|
|
|
@@ -837,18 +774,51 @@ func BuyerFindConnectionsHandle(sqlStr string, args ...interface{}) []Connection
|
|
}
|
|
}
|
|
return returnData
|
|
return returnData
|
|
}
|
|
}
|
|
-func PersonFindConnectionsHandle(sqlStr string, args ...interface{}) []PersonEntity {
|
|
|
|
- returnData := []PersonEntity{}
|
|
|
|
- rows, err := ClickhouseConn.Query(context.Background(), sqlStr, args...)
|
|
|
|
- if err != nil {
|
|
|
|
- logx.Error("查询失败", sqlStr, err)
|
|
|
|
|
|
+func PersonFindConnectionsHandle(positionId int64, returnData []map[string]interface{}, contactCount int) {
|
|
|
|
+ if contactCount == 0 {
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ //企业联系人处理
|
|
|
|
+ entIdArr := []string{}
|
|
|
|
+ entIdMap := map[string]bool{}
|
|
|
|
+ for k, v := range returnData {
|
|
|
|
+ b_id, _ := v["b_id"].(string)
|
|
|
|
+ if b_id == "" || entIdMap[b_id] {
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
|
|
+ entIdMap[b_id] = true
|
|
|
|
+ entIdArr = append(entIdArr, b_id)
|
|
|
|
+ if k == contactCount-1 {
|
|
|
|
+ break
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- for rows.Next() {
|
|
|
|
- data := PersonEntity{}
|
|
|
|
- rows.ScanStruct(&data)
|
|
|
|
- returnData = append(returnData, data)
|
|
|
|
|
|
+ personMap := map[string]string{}
|
|
|
|
+ if len(entIdArr) > 0 {
|
|
|
|
+ wh2, args2 := common.WhArgs(entIdArr)
|
|
|
|
+ personSql := `select id,name as personName from ent_contact prewhere id in (` + wh2 + `) ORDER by name`
|
|
|
|
+ logx.Info(positionId, " Findwinner 联系人 sql ", personSql, args2)
|
|
|
|
+ returnData := []PersonEntity{}
|
|
|
|
+ rows, err := ClickhouseConn.Query(context.Background(), personSql, args2...)
|
|
|
|
+ if err != nil {
|
|
|
|
+ logx.Error("查询失败", personSql, err)
|
|
|
|
+ }
|
|
|
|
+ for rows.Next() {
|
|
|
|
+ data := PersonEntity{}
|
|
|
|
+ rows.ScanStruct(&data)
|
|
|
|
+ returnData = append(returnData, data)
|
|
|
|
+ }
|
|
|
|
+ //联系人处理
|
|
|
|
+ for _, v := range returnData {
|
|
|
|
+ personMap[v.Id] = v.PersonName
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ for k, v := range returnData {
|
|
|
|
+ b_id, _ := v["b_id"].(string)
|
|
|
|
+ v["personName"] = personMap[b_id]
|
|
|
|
+ if k == contactCount-1 {
|
|
|
|
+ break
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- return returnData
|
|
|
|
}
|
|
}
|
|
|
|
|
|
// 供应商
|
|
// 供应商
|
|
@@ -904,7 +874,7 @@ func (t *OwnerService) OwnerRoute() []map[string]interface{} {
|
|
if t.BuyerId == "" {
|
|
if t.BuyerId == "" {
|
|
return []map[string]interface{}{}
|
|
return []map[string]interface{}{}
|
|
}
|
|
}
|
|
- routeList := ConnectionsHandle([]string{t.BuyerId}, t.PositionId, false)
|
|
|
|
|
|
+ routeList := ConnectionsHandle([]string{t.BuyerId}, t.PositionId, -1)
|
|
for i, routeMap := range routeList {
|
|
for i, routeMap := range routeList {
|
|
sourceType := gconv.String(routeMap["sourceType"])
|
|
sourceType := gconv.String(routeMap["sourceType"])
|
|
if sourceType == "agency" || sourceType == "supplier" {
|
|
if sourceType == "agency" || sourceType == "supplier" {
|
|
@@ -932,11 +902,11 @@ func (t *OwnerService) OwnerCooperate() []map[string]interface{} {
|
|
transaction_info_all
|
|
transaction_info_all
|
|
ARRAY
|
|
ARRAY
|
|
JOIN winner_id as winnerId
|
|
JOIN winner_id as winnerId
|
|
- where buyer_id= '%s' and winnerId='%s' order by zbtime DESC,project_id DESC `, t.BuyerId, t.WinnerId)
|
|
|
|
|
|
+ prewhere buyer_id= '%s' and winnerId='%s' order by zbtime DESC,project_id DESC `, t.BuyerId, t.WinnerId)
|
|
dataArr = TimeFindConnectionsHandle(supplierSql)
|
|
dataArr = TimeFindConnectionsHandle(supplierSql)
|
|
} else if t.CooperateType == "agency" {
|
|
} else if t.CooperateType == "agency" {
|
|
//代理机构
|
|
//代理机构
|
|
- agentSql := fmt.Sprintf(`select zbtime,project_id,project_name from transaction_info_all where buyer_id ='%s' and agency_id ='%s' order by zbtime DESC,project_id DESC `, t.BuyerId, t.WinnerId)
|
|
|
|
|
|
+ agentSql := fmt.Sprintf(`select zbtime,project_id,project_name from transaction_info_all prewhere buyer_id ='%s' and agency_id ='%s' order by zbtime DESC,project_id DESC `, t.BuyerId, t.WinnerId)
|
|
dataArr = TimeFindConnectionsHandle(agentSql)
|
|
dataArr = TimeFindConnectionsHandle(agentSql)
|
|
}
|
|
}
|
|
if dataArr != nil && len(dataArr) > 0 {
|
|
if dataArr != nil && len(dataArr) > 0 {
|