工作流增删改查功能完善

This commit is contained in:
QM303176530
2020-10-31 00:03:49 +08:00
parent 32abd69c16
commit d6bc0572c2
5 changed files with 314 additions and 334 deletions
-49
View File
@@ -56,52 +56,3 @@ func InitMysqlTables(db *gorm.DB) {
}
color.Info.Println("[Mysql]-->初始化数据表成功")
}
func InitPostgresqlData(db *gorm.DB) {
var err error
err = InitSysApi(db)
err = InitSysUser(db)
err = InitExaCustomer(db)
err = InitCasbinModel(db)
err = InitSysAuthority(db)
err = InitSysBaseMenus(db)
err = InitAuthorityMenu(db)
err = InitSysAuthorityMenus(db)
err = InitSysDataAuthorityId(db)
err = InitSysDictionaryDetail(db)
err = InitExaFileUploadAndDownload(db)
err = InitSysDictionaryToPostgresql(db)
if err != nil {
color.Error.Printf("[Postgresql]-->初始化数据失败,err: %v\n", err)
os.Exit(0)
}
color.Info.Println("[Postgresql]-->初始化数据成功")
}
func InitPostgresqlTables(db *gorm.DB) {
var err error
if !db.Migrator().HasTable("casbin_rule") {
err = db.Migrator().CreateTable(&gormadapter.CasbinRule{})
}
err = db.AutoMigrate(
model.SysApi{},
model.SysUser{},
model.ExaFile{},
model.ExaCustomer{},
model.SysBaseMenu{},
model.SysAuthority{},
model.JwtBlacklist{},
model.ExaFileChunk{},
model.ExaSimpleUploader{},
model.SysOperationRecord{},
model.SysDictionaryDetail{},
model.SysBaseMenuParameter{},
model.ExaFileUploadAndDownload{},
SysDictionaryToPostgresql{},
)
if err != nil {
color.Error.Printf("[Postgresql]-->初始化数据表失败,err: %v\n", err)
os.Exit(0)
}
color.Info.Println("[Postgresql]-->初始化数据表成功")
}
+3 -3
View File
@@ -10,7 +10,7 @@ type WorkflowProcess struct {
ID string `json:"id" form:"id" gorm:"comment:流程标识;primaryKey;unique;not null"`
CreatedAt time.Time
UpdatedAt time.Time
DeletedAt gorm.DeletedAt `gorm:"index"`
DeletedAt gorm.DeletedAt `json:"-" gorm:"index"`
Name string `json:"name" gorm:"comment:流程名称"`
Category string `json:"category" gorm:"comment:分类"`
Clazz string `json:"clazz" gorm:"comment:类型"`
@@ -25,7 +25,7 @@ type WorkflowNode struct {
ID string `json:"id" form:"id" gorm:"comment:节点id;primaryKey;unique;not null"`
CreatedAt time.Time
UpdatedAt time.Time
DeletedAt gorm.DeletedAt `gorm:"index"`
DeletedAt gorm.DeletedAt `json:"-" gorm:"index"`
WorkflowProcessID string `json:"-" gorm:"comment:流程标识"`
Clazz string `json:"clazz" gorm:"comment:节点类型"`
Label string `json:"label" gorm:"comment:节点名称"`
@@ -48,7 +48,7 @@ type WorkflowEdge struct {
ID string `json:"id" form:"id" gorm:"comment:唯一标识;primaryKey;unique;not null"`
CreatedAt time.Time
UpdatedAt time.Time
DeletedAt gorm.DeletedAt `gorm:"index"`
DeletedAt gorm.DeletedAt `json:"-" gorm:"index"`
WorkflowProcessID string `json:"-" gorm:"comment:流程标识"`
Clazz string `json:"clazz" gorm:"comment:类型(线)"`
Source string `json:"source" gorm:"comment:起点节点"`
+59 -3
View File
@@ -4,6 +4,7 @@ import (
"gin-vue-admin/global"
"gin-vue-admin/model"
"gin-vue-admin/model/request"
"gorm.io/gorm"
)
// @title CreateWorkflowProcess
@@ -24,7 +25,27 @@ func CreateWorkflowProcess(workflowProcess model.WorkflowProcess) (err error) {
// @return error
func DeleteWorkflowProcess(workflowProcess model.WorkflowProcess) (err error) {
err = global.GVA_DB.Delete(workflowProcess).Error
err = global.GVA_DB.Transaction(func(tx *gorm.DB) error {
var txErr error
txErr = tx.Delete(workflowProcess).Error
if txErr != nil {
return txErr
}
var edges []model.WorkflowEdge
txErr = tx.Delete(model.WorkflowNode{}, "workflow_process_id = ?", workflowProcess.ID).Error
if txErr != nil {
return txErr
}
txErr = tx.Find(&edges, "workflow_process_id = ?", workflowProcess.ID).Error
if txErr != nil {
return txErr
}
txErr = tx.Select("StartPoint", "EndPoint").Delete(&edges).Error
if txErr != nil {
return txErr
}
return nil
})
return err
}
@@ -46,8 +67,43 @@ func DeleteWorkflowProcessByIds(ids request.IdsReq) (err error) {
// @return error
func UpdateWorkflowProcess(workflowProcess *model.WorkflowProcess) (err error) {
err = global.GVA_DB.Save(workflowProcess).Error
return err
return global.GVA_DB.Transaction(func(tx *gorm.DB) error {
var txErr error
var edges []model.WorkflowEdge
var edgesIds []string
txErr = tx.Unscoped().Delete(workflowProcess).Error
if txErr != nil {
return txErr
}
txErr = tx.Unscoped().Delete(model.WorkflowNode{}, "workflow_process_id = ?", workflowProcess.ID).Error
if txErr != nil {
return txErr
}
txErr = tx.Unscoped().Find(&edges, "workflow_process_id = ?", workflowProcess.ID).Error
if txErr != nil {
return txErr
}
txErr = tx.Unscoped().Delete(&edges).Error
if txErr != nil {
return txErr
}
for _, v := range edges {
edgesIds = append(edgesIds, v.ID)
}
txErr = tx.Unscoped().Delete(model.WorkflowStartPoint{}, "workflow_edge_id in ?", edgesIds).Error
if txErr != nil {
return txErr
}
txErr = tx.Unscoped().Delete(model.WorkflowEndPoint{}, "workflow_edge_id in ?", edgesIds).Error
if txErr != nil {
return txErr
}
txErr = tx.Create(&workflowProcess).Error
if txErr != nil {
return txErr
}
return nil
})
}
// @title GetWorkflowProcess