|
@@ -10,6 +10,7 @@ type Process struct {
|
|
ProcessName string `json:"processName" form:"processName" gorm:"comment:审批流程名称"`
|
|
ProcessName string `json:"processName" form:"processName" gorm:"comment:审批流程名称"`
|
|
ProcessContent string `json:"processContent" form:"processContent" gorm:"审批流程内容"`
|
|
ProcessContent string `json:"processContent" form:"processContent" gorm:"审批流程内容"`
|
|
ProcessType string `json:"processType" form:"processType" gorm:"审批流程类型"`
|
|
ProcessType string `json:"processType" form:"processType" gorm:"审批流程类型"`
|
|
|
|
+ IsUse bool `json:"isUse" form:"isUse" gorm:"comment:是否使用"`
|
|
Nodes []Node `json:"nodes" form:"nodes" gorm:"many2many:process_nodes;"`
|
|
Nodes []Node `json:"nodes" form:"nodes" gorm:"many2many:process_nodes;"`
|
|
}
|
|
}
|
|
|
|
|
|
@@ -31,9 +32,35 @@ func QueryProcessList(limit, offset int) (processes []Process, total int64, err
|
|
return
|
|
return
|
|
}
|
|
}
|
|
err = db.Order("id desc").Limit(limit).Offset(offset).Find(&processes).Error
|
|
err = db.Order("id desc").Limit(limit).Offset(offset).Find(&processes).Error
|
|
|
|
+
|
|
|
|
+ for i, process := range processes {
|
|
|
|
+ var processNodes []ProcessNodes
|
|
|
|
+ err := global.GVA_DB.Model(&ProcessNodes{}).Where("process_id = ?", process.ID).Find(&processNodes).Error
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, 0, err
|
|
|
|
+ }
|
|
|
|
+ var nodes []Node
|
|
|
|
+ for _, node := range processNodes {
|
|
|
|
+ var node1 Node
|
|
|
|
+ err := global.GVA_DB.Model(&Node{}).Where("id = ?", node.NodeId).Preload("Approver").Find(&node1).Error
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, 0, err
|
|
|
|
+ }
|
|
|
|
+ node1.Order = node.NodeOrder
|
|
|
|
+ nodes = append(nodes, node1)
|
|
|
|
+ }
|
|
|
|
+ processes[i].Nodes = nodes
|
|
|
|
+ }
|
|
|
|
+
|
|
return processes, total, err
|
|
return processes, total, err
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+// QueryProcessByType 按类型查询 已使用的流程
|
|
|
|
+func QueryProcessByType(genre string) (process Process, err error) {
|
|
|
|
+ err = global.GVA_DB.Model(&Process{}).Where("process_type = ? AND is_use = 1", genre).First(&process).Error
|
|
|
|
+ return process, err
|
|
|
|
+}
|
|
|
|
+
|
|
func QueryProcessById(id int) (process Process, err error) {
|
|
func QueryProcessById(id int) (process Process, err error) {
|
|
err = global.GVA_DB.Model(&Process{}).Where("id = ?", id).Find(&process).Error
|
|
err = global.GVA_DB.Model(&Process{}).Where("id = ?", id).Find(&process).Error
|
|
return process, err
|
|
return process, err
|
|
@@ -66,6 +93,9 @@ func UpdateProcess(process Process, nodes []ProcessNodes) error {
|
|
if txErr != nil {
|
|
if txErr != nil {
|
|
return txErr
|
|
return txErr
|
|
}
|
|
}
|
|
|
|
+ for i, _ := range nodes {
|
|
|
|
+ nodes[i].ProcessId = int(process.ID)
|
|
|
|
+ }
|
|
txErr = tx.Model(&ProcessNodes{}).Create(&nodes).Error
|
|
txErr = tx.Model(&ProcessNodes{}).Create(&nodes).Error
|
|
if txErr != nil {
|
|
if txErr != nil {
|
|
return txErr
|
|
return txErr
|
|
@@ -74,7 +104,30 @@ func UpdateProcess(process Process, nodes []ProcessNodes) error {
|
|
})
|
|
})
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+func SwitchProcess(process Process) error {
|
|
|
|
+ return global.GVA_DB.Transaction(func(tx *gorm.DB) error {
|
|
|
|
+ txErr := tx.Model(&Process{}).Where("process_type = ?", process.ProcessType).Update("is_use", false).Error
|
|
|
|
+ if txErr != nil {
|
|
|
|
+ return txErr
|
|
|
|
+ }
|
|
|
|
+ txErr = tx.Model(&process).Update("is_use", process.IsUse).Error
|
|
|
|
+ if txErr != nil {
|
|
|
|
+ return txErr
|
|
|
|
+ }
|
|
|
|
+ return nil
|
|
|
|
+ })
|
|
|
|
+}
|
|
|
|
+
|
|
func (p Process) DeleteProcess() error {
|
|
func (p Process) DeleteProcess() error {
|
|
- err := global.GVA_DB.Unscoped().Delete(&p).Error
|
|
|
|
- return err
|
|
|
|
|
|
+ return global.GVA_DB.Transaction(func(tx *gorm.DB) error {
|
|
|
|
+ txErr := tx.Unscoped().Delete(&p).Error
|
|
|
|
+ if txErr != nil {
|
|
|
|
+ return txErr
|
|
|
|
+ }
|
|
|
|
+ txErr = tx.Unscoped().Model(&ProcessNodes{}).Where("process_id = ?", p.ID).Delete(&ProcessNodes{}).Error
|
|
|
|
+ if txErr != nil {
|
|
|
|
+ return txErr
|
|
|
|
+ }
|
|
|
|
+ return nil
|
|
|
|
+ })
|
|
}
|
|
}
|