Browse Source

feat:xiugai

wangchuanjin 1 year ago
parent
commit
fa38b731e3
1 changed files with 88 additions and 28 deletions
  1. 88 28
      api/internal/service/network.go

+ 88 - 28
api/internal/service/network.go

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