WiiCITMS/process/oa/workflow_nodes.go

58 lines
1.7 KiB
Go
Raw Normal View History

2025-11-07 14:14:34 +08:00
package oa
import (
"WiiCITMS/models/oa"
"WiiGenerates/WiiCITMS/generates/v1/go/types"
"WiiGoLibrary/apply/middle/process/v1"
"errors"
)
// GetWorkflowNodes 根据工作流ID获取其所有节点
// 这是对QueryWorkflowNodes的封装简化调用参数
func GetWorkflowNodes(workflowGuid string) ([]*oa.WorkflowNodeModel, *process.Process) {
// 使用QueryWorkflowNodes查询所有节点
return QueryWorkflowNodes(QueryNodesRequest{
WorkflowGuid: workflowGuid,
NodeType: -1, // 查询所有类型的节点
})
}
// GetWorkflowNode 根据节点ID获取单个节点
// 对GetWorkflowNodeByID的简单封装保持命名一致性
func GetWorkflowNode(nodeGuid string) (*oa.WorkflowNodeModel, *process.Process) {
return GetWorkflowNodeByID(nodeGuid)
}
// GetNodeApprover 获取节点的审批人GUID
func GetNodeApprover(nodeGuid string) (string, *process.Process) {
// 获取节点信息
node, proc := GetWorkflowNodeByID(nodeGuid)
if proc.IsError() {
return "", proc
}
// 检查是否是审批节点
if node.NodeType != 2 { // 2 - 审批节点
return "", process.FailError(types.InvalidWorkflowStatusError, errors.New("非审批节点"))
}
// 检查是否是指定审批人类型
if node.ApproverType != 1 { // 1 - 指定审批人
return "", process.FailError(types.UnsupportedApproverTypeError, nil)
}
return node.ApproverValue, process.Success(200)
}
// GetWorkflowNodesByInstance 根据工作流实例获取其所有节点
func GetWorkflowNodesByInstance(instanceGuid string) ([]*oa.WorkflowNodeModel, *process.Process) {
// 获取工作流实例
instance, proc := GetWorkflowInstance(instanceGuid)
if proc.IsError() {
return nil, proc
}
// 获取工作流的所有节点
return GetWorkflowNodes(instance.WorkflowGuid.String())
}