59 lines
1.1 KiB
Go
59 lines
1.1 KiB
Go
![]() |
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
|
||
|
}
|