增加获取工作流详细页面信息的接口和对应调用

This commit is contained in:
pixel
2020-11-18 18:06:31 +08:00
parent 5bb840c1ce
commit 0286d56e9c
8 changed files with 261 additions and 35 deletions
+33 -6
View File
@@ -2,6 +2,7 @@ package service
import (
"errors"
"fmt"
"gin-vue-admin/global"
"gin-vue-admin/model"
"gin-vue-admin/model/request"
@@ -42,7 +43,9 @@ func DeleteWorkflowProcess(workflowProcess model.WorkflowProcess) (err error) {
if txErr != nil {
return txErr
}
txErr = tx.Select("StartPoint", "EndPoint").Delete(&edges).Error
if len(edges) > 0 {
txErr = tx.Select("StartPoint", "EndPoint").Delete(&edges).Error
}
if txErr != nil {
return txErr
}
@@ -209,14 +212,14 @@ func complete(tx *gorm.DB, wfm *model.WorkflowMove) (err error) {
if len(Edges) == 1 {
//当前节点为初始节点时候
if nodeInfo.Clazz == model.START {
txErr = tx.Where("id = ?", returnWfm.ID).First(&model.WorkflowMove{}).Update("is_active", false).Error
txErr = tx.Where("id = ?", returnWfm.ID).First(&model.WorkflowMove{}).Update("is_active", false).Update("operator_id", wfm.OperatorID).Error
if txErr != nil {
return txErr
}
}
//当前节点为流转节点时候
if nodeInfo.Clazz == model.USER_TASK {
txErr = tx.Where("id = ?", returnWfm.ID).First(&model.WorkflowMove{}).Update("action", "complete").Update("is_active", false).Error
txErr = tx.Where("id = ?", returnWfm.ID).First(&model.WorkflowMove{}).Update("action", "complete").Update("is_active", false).Update("operator_id", wfm.OperatorID).Error
if txErr != nil {
return txErr
}
@@ -231,7 +234,7 @@ func complete(tx *gorm.DB, wfm *model.WorkflowMove) (err error) {
}
if len(Edges) > 1 {
var needUseTargetNodeID string
txErr = tx.Where("id = ?", returnWfm.ID).Update("is_active", false).Error
txErr = tx.Where("id = ?", returnWfm.ID).First(&model.WorkflowMove{}).Update("action", "complete").Update("is_active", false).Update("operator_id", wfm.OperatorID).Error
if txErr != nil {
return txErr
}
@@ -248,6 +251,12 @@ func complete(tx *gorm.DB, wfm *model.WorkflowMove) (err error) {
}
// 当target为自动节点时候 需要做一些事情 这里暂时先不处理 后续慢慢完善
}
} else if nodeInfo.Clazz == model.EXCLUSIVE_GATEWAY {
return errors.New("目前只支持start节点和userTask功能,其他功能正在开发中")
} else if nodeInfo.Clazz == model.INCLUSIVE_GATEWAY {
return errors.New("目前只支持start节点和userTask功能,其他功能正在开发中")
} else if nodeInfo.Clazz == model.PARELLEL_GATEWAY {
return errors.New("目前只支持start节点和userTask功能,其他功能正在开发中")
} else {
return errors.New("目前只支持start节点和userTask功能,其他功能正在开发中")
}
@@ -259,6 +268,7 @@ func createNewWorkflowMove(oldWfm *model.WorkflowMove, targetNodeID string) (new
BusinessID: oldWfm.BusinessID,
BusinessType: oldWfm.BusinessType,
PromoterID: oldWfm.PromoterID,
OperatorID: 0,
WorkflowNodeID: targetNodeID,
WorkflowProcessID: oldWfm.WorkflowProcessID,
Action: "",
@@ -267,13 +277,30 @@ func createNewWorkflowMove(oldWfm *model.WorkflowMove, targetNodeID string) (new
}
func GetMyStated(userID uint) (err error, wfms []model.WorkflowMove) {
err = global.GVA_DB.Find(&wfms, "promoter_id = ? and is_active", userID, true).Error
err = global.GVA_DB.Preload("Promoter").Preload("Operator").Preload("WorkflowNode").Preload("WorkflowProcess").Joins("INNER JOIN workflow_nodes as node ON workflow_moves.workflow_node_id = node.id").Find(&wfms, "promoter_id = ? and ( is_active = ? OR node.clazz = ?)", userID, true, "end").Error
return err, wfms
}
func GetMyNeed(userID uint, AuthorityID string) (err error, wfms []model.WorkflowMove) {
user := "%," + strconv.Itoa(int(userID)) + ",%"
auth := "%," + AuthorityID + ",%"
err = global.GVA_DB.Joins("INNER JOIN workflow_nodes as node ON workflow_moves.workflow_node_id = node.id").Where("(node.assign_type = ? AND node.assign_value LIKE ? ) OR (node.assign_type = ? AND node.assign_value LIKE ? )", "user", user, "authority", auth).Find(&wfms).Error
err = global.GVA_DB.Preload("Promoter").Preload("Operator").Preload("WorkflowNode").Preload("WorkflowProcess").Joins("INNER JOIN workflow_nodes as node ON workflow_moves.workflow_node_id = node.id").Where("is_active = ? AND (node.assign_type = ? AND node.assign_value LIKE ? ) OR (node.assign_type = ? AND node.assign_value LIKE ? )", true, "user", user, "authority", auth).Find(&wfms).Error
return err, wfms
}
func GetWorkflowMoveByID(id float64) (err error, move model.WorkflowMove, moves []model.WorkflowMove) {
err = global.GVA_DB.Transaction(func(tx *gorm.DB) error {
var txErr error
txErr = tx.Preload("Promoter").Preload("Operator").Preload("WorkflowNode").Preload("WorkflowProcess").First(&move, "id = ?", id).Error
if txErr != nil {
return txErr
}
txErr = tx.Preload("Promoter").Preload("Operator").Preload("WorkflowNode").Preload("WorkflowProcess").Find(&moves, "business_id = ? AND business_type = ?", move.BusinessID, move.BusinessType).Error
fmt.Println(moves)
if txErr != nil {
return txErr
}
return nil
})
return err, move, moves
}