ferry/pkg/service/getState.go

58 lines
1.1 KiB
Go
Raw Permalink Normal View History

2020-07-15 01:40:56 +08:00
package service
import (
"strconv"
)
/*
@Author : lanyulei
@Desc : 获取节点数据
*/
type ProcessState struct {
Structure map[string][]map[string]interface{}
}
// 获取节点信息
func (p *ProcessState) GetNode(stateId string) (nodeValue map[string]interface{}, err error) {
for _, node := range p.Structure["nodes"] {
if node["id"] == stateId {
nodeValue = node
}
}
return
}
// 获取流转信息
func (p *ProcessState) GetEdge(stateId string, classify string) (edgeValue []map[string]interface{}, err error) {
var (
leftSort int
rightSort int
)
for _, edge := range p.Structure["edges"] {
if edge[classify] == stateId {
edgeValue = append(edgeValue, edge)
}
}
// 排序
if len(edgeValue) > 1 {
for i := 0; i < len(edgeValue)-1; i++ {
for j := i + 1; j < len(edgeValue); j++ {
if t, ok := edgeValue[i]["sort"]; ok {
leftSort, _ = strconv.Atoi(t.(string))
}
if t, ok := edgeValue[j]["sort"]; ok {
rightSort, _ = strconv.Atoi(t.(string))
}
if leftSort > rightSort {
edgeValue[j], edgeValue[i] = edgeValue[i], edgeValue[j]
}
}
}
}
return
}