|
@@ -4,7 +4,6 @@ import (
|
|
|
"context"
|
|
|
"database/sql"
|
|
|
"fmt"
|
|
|
- "log"
|
|
|
"math"
|
|
|
"sort"
|
|
|
"strings"
|
|
@@ -103,6 +102,23 @@ type myNetwork struct {
|
|
|
Create_time string
|
|
|
}
|
|
|
|
|
|
+type nodeTree struct {
|
|
|
+ NAME string
|
|
|
+ ID string
|
|
|
+ SZ_PID0 string
|
|
|
+ SZ_PID1 string
|
|
|
+ SZ_PID2 string
|
|
|
+ SZ_PID3 string
|
|
|
+ CODE string
|
|
|
+ PCODE string
|
|
|
+ DATACOUNT int64
|
|
|
+ SZ_LEVEL int
|
|
|
+ SZ_LEAF int
|
|
|
+ TYPE string
|
|
|
+ MYID string
|
|
|
+ MYTYPE string
|
|
|
+}
|
|
|
+
|
|
|
//人脉库-添加/修改人脉
|
|
|
func (n *network) AddOrUpdate(in *types.AddOrUpdateReq) *types.Reply {
|
|
|
reply := &types.Reply{Data: map[string]interface{}{
|
|
@@ -392,19 +408,19 @@ func (n *network) AllProject(in *types.AllprojectReq) (reply *types.Reply) {
|
|
|
list[v.Itype-1].Children = append(list[v.Itype-1].Children, ntc)
|
|
|
}
|
|
|
}
|
|
|
- convList := []map[string]interface{}{}
|
|
|
+ convList := []*nodeTree{}
|
|
|
for _, v := range list {
|
|
|
- pm := map[string]interface{}{
|
|
|
- "CODE": v.Name,
|
|
|
- "NAME": v.Name,
|
|
|
- "SZ_PID0": v.Name,
|
|
|
- "SZ_LEVEL": 0,
|
|
|
- "DATACOUNT": 0,
|
|
|
+ pm := &nodeTree{
|
|
|
+ CODE: v.Name,
|
|
|
+ NAME: v.Name,
|
|
|
+ SZ_PID0: v.Name,
|
|
|
+ SZ_LEVEL: 0,
|
|
|
+ DATACOUNT: 0,
|
|
|
}
|
|
|
if len(v.Children) > 0 {
|
|
|
- pm["SZ_LEAF"] = 0
|
|
|
+ pm.SZ_LEAF = 0
|
|
|
} else {
|
|
|
- pm["SZ_LEAF"] = 1
|
|
|
+ pm.SZ_LEAF = 1
|
|
|
}
|
|
|
sort.Sort(v)
|
|
|
id, pType, pMyType, pMyId := "", "", "", ""
|
|
@@ -423,7 +439,34 @@ func (n *network) AllProject(in *types.AllprojectReq) (reply *types.Reply) {
|
|
|
pMyType += vv.Type
|
|
|
myChildIds, myChildTypes := "", ""
|
|
|
if in.Id == "" && v.Name == "甲方" {
|
|
|
+ cccNodes := []*nodeTree{}
|
|
|
+ cccIndexMap := map[string]int{}
|
|
|
for _, vvv := range firstpartyChild[vv.CompanyId] {
|
|
|
+ cccIndex, cccOk := cccIndexMap[vvv.Name]
|
|
|
+ if cccOk {
|
|
|
+ cccNodes[cccIndex].ID += "," + vvv.CompanyId
|
|
|
+ cccNodes[cccIndex].MYID += "," + vvv.CompanyId
|
|
|
+ cccNodes[cccIndex].SZ_PID2 += "," + vvv.CompanyId
|
|
|
+ cccNodes[cccIndex].CODE += "," + vvv.CompanyId
|
|
|
+ cccNodes[cccIndex].TYPE += ",firstparty"
|
|
|
+ cccNodes[cccIndex].MYTYPE += ",firstparty"
|
|
|
+ } else {
|
|
|
+ cccNodes = append(cccNodes, &nodeTree{
|
|
|
+ NAME: vvv.Name,
|
|
|
+ ID: vvv.CompanyId,
|
|
|
+ SZ_PID0: v.Name,
|
|
|
+ SZ_PID1: v.Name + ":" + myId,
|
|
|
+ SZ_PID2: v.Name + ":" + myId + ":" + vvv.Name + ":" + vvv.CompanyId,
|
|
|
+ CODE: v.Name + ":" + myId + ":" + vvv.Name + ":" + vvv.CompanyId,
|
|
|
+ PCODE: v.Name + ":" + myId,
|
|
|
+ SZ_LEVEL: 1,
|
|
|
+ SZ_LEAF: 1,
|
|
|
+ TYPE: "firstparty",
|
|
|
+ MYID: vvv.CompanyId,
|
|
|
+ MYTYPE: "firstparty",
|
|
|
+ })
|
|
|
+ cccIndexMap[vvv.Name] = len(cccNodes) - 1
|
|
|
+ }
|
|
|
if id != "" {
|
|
|
id += ","
|
|
|
}
|
|
@@ -440,6 +483,24 @@ func (n *network) AllProject(in *types.AllprojectReq) (reply *types.Reply) {
|
|
|
myChildTypes += ","
|
|
|
}
|
|
|
myChildTypes += vv.Type
|
|
|
+ convList = append(convList, &nodeTree{
|
|
|
+ NAME: vvv.CompanyName,
|
|
|
+ ID: vvv.CompanyId,
|
|
|
+ SZ_PID0: v.Name,
|
|
|
+ SZ_PID1: v.Name + ":" + myId,
|
|
|
+ SZ_PID2: cccNodes[cccIndex].SZ_PID2,
|
|
|
+ SZ_PID3: v.Name + ":" + myId + ":" + vvv.Name + ":" + vvv.CompanyId,
|
|
|
+ CODE: v.Name + ":" + myId + ":" + vvv.Name + ":" + vvv.CompanyId,
|
|
|
+ PCODE: cccNodes[cccIndex].PCODE,
|
|
|
+ SZ_LEVEL: 1,
|
|
|
+ SZ_LEAF: 1,
|
|
|
+ TYPE: "firstparty",
|
|
|
+ MYID: vvv.CompanyId,
|
|
|
+ MYTYPE: "firstparty",
|
|
|
+ })
|
|
|
+ }
|
|
|
+ for _, cccNode := range cccNodes {
|
|
|
+ convList = append(convList, cccNode)
|
|
|
}
|
|
|
} else {
|
|
|
if id != "" {
|
|
@@ -453,26 +514,26 @@ func (n *network) AllProject(in *types.AllprojectReq) (reply *types.Reply) {
|
|
|
myChildIds = myId
|
|
|
myChildTypes = vv.Type
|
|
|
}
|
|
|
- cm := map[string]interface{}{
|
|
|
- "NAME": vv.CompanyName,
|
|
|
- "ID": myChildIds,
|
|
|
- "SZ_PID0": v.Name,
|
|
|
- "SZ_PID1": v.Name + ":" + myId,
|
|
|
- "CODE": v.Name + ":" + myId,
|
|
|
- "PCODE": v.Name,
|
|
|
- "DATACOUNT": vv.Count,
|
|
|
- "SZ_LEVEL": 1,
|
|
|
- "SZ_LEAF": 1,
|
|
|
- "TYPE": myChildTypes,
|
|
|
- "MYID": myId,
|
|
|
- "MYTYPE": vv.Type,
|
|
|
+ cm := &nodeTree{
|
|
|
+ NAME: vv.CompanyName,
|
|
|
+ ID: myChildIds,
|
|
|
+ SZ_PID0: v.Name,
|
|
|
+ SZ_PID1: v.Name + ":" + myId,
|
|
|
+ CODE: v.Name + ":" + myId,
|
|
|
+ PCODE: v.Name,
|
|
|
+ DATACOUNT: vv.Count,
|
|
|
+ SZ_LEVEL: 1,
|
|
|
+ SZ_LEAF: 1,
|
|
|
+ TYPE: myChildTypes,
|
|
|
+ MYID: myId,
|
|
|
+ MYTYPE: vv.Type,
|
|
|
}
|
|
|
convList = append(convList, cm)
|
|
|
}
|
|
|
- pm["ID"] = id
|
|
|
- pm["TYPE"] = pType
|
|
|
- pm["MYTYPE"] = pMyType
|
|
|
- pm["MYID"] = pMyId
|
|
|
+ pm.ID = id
|
|
|
+ pm.TYPE = pType
|
|
|
+ pm.MYTYPE = pMyType
|
|
|
+ pm.MYID = pMyId
|
|
|
convList = append(convList, pm)
|
|
|
}
|
|
|
reply = &types.Reply{
|
|
@@ -860,7 +921,6 @@ func (n *network) Introduce_Firstparty(fpn map[string][]*firstpartyNetwork, entM
|
|
|
}
|
|
|
result[k].BuyerCount = int64(len(v))
|
|
|
for _, vv := range v {
|
|
|
- log.Println(k, vv.CompanyName)
|
|
|
if entMonitor[vv.CompanyName] {
|
|
|
result[k].MonitorCount++
|
|
|
}
|