Procházet zdrojové kódy

添加查询流程列表的接口和通过业务类别查询流程列表的接口

haolongfei před 4 měsíci
rodič
revize
e4e5c5ba29

+ 30 - 0
ng_cws_client/api.go

@@ -7,6 +7,7 @@ import (
 	"git.sxidc.com/service-supports/cws-sdk/service/request"
 	"git.sxidc.com/service-supports/cws-sdk/service/response"
 	"git.sxidc.com/service-supports/cws-sdk/utils/http_client"
+	"strconv"
 )
 
 func launchWorkflowPrepareApi(reqParams *request.LaunchWorkflowPrepareParams) (*response.InfosResponse[response.PrepareInfo], error) {
@@ -54,3 +55,32 @@ func getWorkTemplateInfoByBusinessTypeApi(businessType string, tenantId string)
 	}
 	return respInfo.Info.WorkTemplateId, nil
 }
+
+func getWorkflowListApi(reqParams *request.QueryMyWorkflowParams) (*response.InfosResponse[response.WorkflowInfo], error) {
+	queryParams := map[string]string{
+		"pageNo":             strconv.Itoa(reqParams.PageNo),
+		"pageSize":           strconv.Itoa(reqParams.PageSize),
+		"tenantId":           reqParams.TenantID,
+		"launchUserId":       reqParams.LaunchUserID,
+		"launchUserName":     reqParams.LaunchUserName,
+		"workflowTemplateId": reqParams.TemplateID,
+		"status":             strconv.Itoa(reqParams.Status),
+		"matter":             reqParams.Matter,
+		"catalogId":          reqParams.CatalogID,
+	}
+	newRequest := NGCwsClient.NewRequest(http_client.WithNewRequestTimeout(cwsTimeOut))
+	newRequest.SetQueryParams(queryParams)
+	resp, err := newRequest.Get(cwsUrl + service.GetWorkflowList)
+	if err != nil {
+		return nil, err
+	}
+	respInfo := new(response.InfosResponse[response.WorkflowInfo])
+	err = resp.Json(respInfo)
+	if err != nil {
+		return nil, err
+	}
+	if !respInfo.Success {
+		return nil, errors.New(respInfo.Msg)
+	}
+	return respInfo, nil
+}

+ 36 - 0
ng_cws_client/ng_cws_client.go

@@ -274,3 +274,39 @@ func LaunchWorkflowByBusinessTypePrepare(tenantID string, businessType string, c
 
 	return resp.Infos, nil
 }
+
+// 获取流程列表,租户ID必传
+func GetWorkflowList(reqParams *request.QueryMyWorkflowParams) (*response.InfosResponse[response.WorkflowInfo], error) {
+	if utils.IsStringEmpty(cwsUrl) {
+		return nil, errors.New("未配置CWS地址")
+	}
+	//根据业务类型获取流程模型ID
+	workflowList, err := getWorkflowListApi(reqParams)
+	if err != nil {
+		return nil, err
+	}
+
+	return workflowList, nil
+}
+
+// 通过业务类别获取流程列表,租户ID必传
+func GetWorkflowListByBusinessType(tenantID string, businessType string, reqParams *request.QueryMyWorkflowParams) (*response.InfosResponse[response.WorkflowInfo], error) {
+	if utils.IsStringEmpty(cwsUrl) {
+		return nil, errors.New("未配置CWS地址")
+	}
+	//根据业务类型获取流程模型ID
+	workflowTemplateId, err := getWorkTemplateInfoByBusinessTypeApi(businessType, tenantID)
+	if err != nil {
+		return nil, err
+	}
+	if utils.IsStringEmpty(workflowTemplateId) {
+		return nil, errors.New("该业务类型未配置流程")
+	}
+	reqParams.TemplateID = workflowTemplateId
+	reqParams.TenantID = tenantID
+	workflowList, err := GetWorkflowList(reqParams)
+	if err != nil {
+		return nil, err
+	}
+	return workflowList, nil
+}

+ 1 - 0
service/method_names.go

@@ -7,4 +7,5 @@ const (
 	GetWorkTemplateByCodeMethodName        = methodNamePrefix + "/businessCatalogs/code/getWithWorkTemplate"
 	StartWorkFlowTemplatePrepareMethodName = methodNamePrefix + "/workflow/template/launch/prepare"
 	StartWorkFlowTemplateMethodName        = methodNamePrefix + "/workflow/template/launch"
+	GetWorkflowList                        = methodNamePrefix + "/workflow/list"
 )

+ 12 - 0
service/request/workflow.go

@@ -52,3 +52,15 @@ type StartWorkFlowWithoutPrepareByBusinessTypeRequest struct {
 	UserStructureID    string         `json:"userStructureId"`
 	ChoiceApproveInfos map[string]any `json:"choiceApproveInfos"`
 }
+
+type QueryMyWorkflowParams struct {
+	PageNo         int    `form:"pageNo" assign:"-"`
+	PageSize       int    `form:"pageSize" assign:"-"`
+	TenantID       string `form:"tenantId" binding:"required" assign:"toField:TenantID"`
+	LaunchUserID   string `form:"launchUserId"`
+	LaunchUserName string `form:"launchUserName"`
+	TemplateID     string `form:"workflowTemplateId"`
+	Status         int    `form:"status"`
+	Matter         string `form:"matter"`
+	CatalogID      string `form:"catalogId"`
+}

+ 60 - 0
service/response/workflow.go

@@ -83,3 +83,63 @@ type CustomStructureInfo struct {
 	CreatedTime      string `json:"createdTime"`
 	LastUpdatedTime  string `json:"lastUpdatedTime"`
 }
+
+type WorkflowInfo struct {
+	ID                   string                 `json:"id" sqlresult:"column:business_id"`
+	WorkflowTemplateName string                 `json:"workflowTemplateName" sqlresult:"column:workflow_template_name;"`
+	ArgoName             string                 `json:"argoName" sqlresult:"column:argo_name;"`
+	WorkflowTemplateID   string                 `json:"workflowTemplateId" sqlresult:"column:workflow_template_id;" `
+	IconPath             string                 `json:"-" sqlresult:"column:icon_path;"`
+	IconURL              string                 `json:"iconURL"`
+	Matter               string                 `json:"matter" sqlresult:"column:matter;" `
+	LaunchUserID         string                 `json:"launchUserId" sqlresult:"column:launch_user_id;"`
+	LaunchUserName       string                 `json:"launchUserName" sqlresult:"column:launch_user_name;" `
+	Status               int                    `json:"status" sqlresult:"column:status;"`
+	CurWorkflowNodeID    string                 `json:"cur_workflow_node_id" sqlresult:"column:cur_workflow_node_id;"`
+	ApprovalNodes        []WorkflowInfoNodeInfo `json:"approvalNodes"`
+	CreatedTime          string                 `json:"createdTime" sqlresult:"column:created_time;timeLayout:'2006-01-02 15:04:05'"`
+}
+
+type WorkflowInfoNodeInfo struct {
+	ID                                string                  `json:"id" sqlresult:"column:id"`
+	FrontNodeID                       string                  `json:"frontNodeId" sqlresult:"column:front_node_id;"`
+	WorkflowID                        string                  `json:"workflowId" sqlresult:"-"`
+	ParentID                          string                  `json:"parentId" sqlresult:"column:parent_id;"`
+	Name                              string                  `json:"name" sqlresult:"column:name;" `
+	BranchEntryNodeID                 string                  `json:"branchEntryNodeId" sqlresult:"column:branch_entry_node_id;"`
+	ConditionNodeID                   string                  `json:"conditionNodeId" sqlresult:"column:condition_node_id;"`
+	NodeType                          string                  `json:"nodeType" sqlresult:"column:node_type;" `
+	AssignedType                      string                  `json:"assignedType" sqlresult:"column:assigned_type;"`
+	AssignedMode                      string                  `json:"assignedMode" sqlresult:"column:assigned_mode"`
+	NodeRes                           string                  `json:"nodeRes" sqlresult:"column:node_res"`
+	IsFinal                           bool                    `json:"isFinal" sqlresult:"column:is_final"`
+	IsBranchFirstApprovalNode         bool                    `json:"isBranchFirstApprovalNode" sqlresult:"column:is_branch_first_approval_node"`
+	BranchEntryProps                  string                  `json:"branchEntryProps" sqlresult:"column:branch_entry_props"`
+	RepeatApproveAutoPass             int                     `json:"repeatApproveAutoPass"  sqlresult:"column:repeat_approve_auto_pass"`
+	NodeForm                          string                  `json:"nodeForm" sqlresult:"column:node_form"`
+	Events                            string                  `json:"events" sqlresult:"column:events"`
+	Copies                            string                  `json:"copies" sqlresult:"column:copies"`
+	ApprovePhase                      string                  `json:"approvePhase"`
+	NodeClearInfos                    []WorkflowInfoClearInfo `json:"nodeClearInfos"`
+	NeedAssignedApprovalSubjectNodeID string                  `json:"need_assigned_approval_subject_node_id" sqlresult:"column:need_assigned_approval_subject_node_id;"`
+	HasAssignedApprovalSubject        string                  `json:"has_assigned_approval_subject" sqlresult:"column:has_assigned_approval_subject"`
+	Context                           string                  `json:"context" sqlresult:"column:context"`
+}
+
+type WorkflowInfoClearInfo struct {
+	ID                   string `json:"id" sqlresult:"column:id"`
+	WorkflowTemplateName string `json:"workflowTemplateName" sqlresult:"column:workflow_template_name;"`
+	WorkflowID           string `json:"workflowId;" sqlresult:"column:workflow_business_id"`
+	WorkflowName         string `json:"workflowName" sqlresult:"column:workflow_name;"`
+	WorkflowNodeID       string `json:"workflowNodeId;" sqlresult:"column:workflow_node_id;"`
+	WorkflowNodeName     string `json:"workflowNodeName" sqlresult:"column:workflow_node_name;"`
+	SenderID             string `json:"senderId;" sqlresult:"column:sender_id;"`
+	SenderName           string `json:"senderName;" sqlresult:"column:sender_name;"`
+	SenderRemark         string `json:"senderRemark;" sqlresult:"column:sender_remark;"`
+	SendTime             string `json:"sendTime;" sqlresult:"column:send_time;timeLayout:'2006-01-02 15:04:05'"`
+	ReceiverID           string `json:"receiverId;" sqlresult:"column:receiver_id;"`
+	ReceiverName         string `json:"receiverName" sqlresult:"column:receiver_name;"`
+	ReceiverRemark       string `json:"receiverRemark;" sqlresult:"column:receiver_remark;"`
+	ReplyTime            string `json:"ReplyTime;" sqlresult:"column:reply_time;timeLayout:'2006-01-02 15:04:05'"`
+	TenantID             string `json:"tenantId;" sqlresult:"column:tenant_id;"`
+}