245 lines
6.0 KiB
Go
245 lines
6.0 KiB
Go
package process
|
||
|
||
import (
|
||
"errors"
|
||
"ferry/global/orm"
|
||
"ferry/models/process"
|
||
process2 "ferry/models/process"
|
||
"ferry/pkg/pagination"
|
||
"ferry/tools"
|
||
"ferry/tools/app"
|
||
"fmt"
|
||
|
||
"github.com/gin-gonic/gin"
|
||
)
|
||
|
||
/*
|
||
@Author : lanyulei
|
||
*/
|
||
|
||
// 流程列表
|
||
func ProcessList(c *gin.Context) {
|
||
var (
|
||
err error
|
||
processList []*struct {
|
||
process2.Info
|
||
CreateUser string `json:"create_user"`
|
||
CreateName string `json:"create_name"`
|
||
ClassifyName string `json:"classify_name"`
|
||
}
|
||
)
|
||
|
||
SearchParams := map[string]map[string]interface{}{
|
||
"like": pagination.RequestParams(c),
|
||
}
|
||
|
||
db := orm.Eloquent.Model(&process2.Info{}).
|
||
Joins("left join sys_user on sys_user.user_id = p_process_info.creator").
|
||
Joins("left join p_process_classify on p_process_classify.id = p_process_info.classify").
|
||
Select("p_process_info.id, p_process_info.create_time, p_process_info.update_time, p_process_info.name, p_process_info.creator, p_process_classify.name as classify_name, sys_user.username as create_user, sys_user.nick_name as create_name")
|
||
|
||
result, err := pagination.Paging(&pagination.Param{
|
||
C: c,
|
||
DB: db,
|
||
}, &processList, SearchParams, "p_process_info")
|
||
|
||
if err != nil {
|
||
app.Error(c, -1, err, fmt.Sprintf("查询流程模版失败,%v", err.Error()))
|
||
return
|
||
}
|
||
app.OK(c, result, "查询流程列表成功")
|
||
}
|
||
|
||
// 创建流程
|
||
func CreateProcess(c *gin.Context) {
|
||
var (
|
||
err error
|
||
processValue process2.Info
|
||
processCount int
|
||
)
|
||
|
||
err = c.ShouldBind(&processValue)
|
||
if err != nil {
|
||
app.Error(c, -1, err, fmt.Sprintf("参数绑定失败,%v", err.Error()))
|
||
return
|
||
}
|
||
|
||
// 确定流程名称是否重复
|
||
err = orm.Eloquent.Model(&processValue).
|
||
Where("name = ?", processValue.Name).
|
||
Count(&processCount).Error
|
||
if err != nil {
|
||
app.Error(c, -1, err, fmt.Sprintf("流程信息查询失败,%v", err.Error()))
|
||
return
|
||
}
|
||
if processCount > 0 {
|
||
app.Error(c, -1, errors.New("流程名称重复"), "")
|
||
return
|
||
}
|
||
|
||
processValue.Creator = tools.GetUserId(c)
|
||
|
||
err = orm.Eloquent.Create(&processValue).Error
|
||
if err != nil {
|
||
app.Error(c, -1, err, fmt.Sprintf("创建流程失败,%v", err.Error()))
|
||
return
|
||
}
|
||
|
||
app.OK(c, processValue, "流程创建成功")
|
||
}
|
||
|
||
// 更新流程
|
||
func UpdateProcess(c *gin.Context) {
|
||
var (
|
||
err error
|
||
processValue process2.Info
|
||
)
|
||
|
||
err = c.ShouldBind(&processValue)
|
||
if err != nil {
|
||
app.Error(c, -1, err, "")
|
||
return
|
||
}
|
||
|
||
err = orm.Eloquent.Model(&process2.Info{}).
|
||
Where("id = ?", processValue.Id).
|
||
Updates(map[string]interface{}{
|
||
"name": processValue.Name,
|
||
"structure": processValue.Structure,
|
||
"tpls": processValue.Tpls,
|
||
"classify": processValue.Classify,
|
||
"task": processValue.Task,
|
||
"notice": processValue.Notice,
|
||
"icon": processValue.Icon,
|
||
"remarks": processValue.Remarks,
|
||
}).Error
|
||
if err != nil {
|
||
app.Error(c, -1, err, fmt.Sprintf("更新流程信息失败,%v", err.Error()))
|
||
return
|
||
}
|
||
|
||
app.OK(c, processValue, "更新流程信息成功")
|
||
}
|
||
|
||
// 删除流程
|
||
func DeleteProcess(c *gin.Context) {
|
||
processId := c.DefaultQuery("processId", "")
|
||
if processId == "" {
|
||
app.Error(c, -1, errors.New("参数不正确,请确定参数processId是否传递"), "")
|
||
return
|
||
}
|
||
|
||
err := orm.Eloquent.Delete(process2.Info{}, "id = ?", processId).Error
|
||
if err != nil {
|
||
app.Error(c, -1, err, fmt.Sprintf("删除流程失败, %v", err.Error()))
|
||
return
|
||
}
|
||
app.OK(c, "", "删除流程成功")
|
||
}
|
||
|
||
// 流程详情
|
||
func ProcessDetails(c *gin.Context) {
|
||
processId := c.DefaultQuery("processId", "")
|
||
if processId == "" {
|
||
app.Error(c, -1, errors.New("参数不正确,请确定参数processId是否传递"), "")
|
||
return
|
||
}
|
||
|
||
var processValue process2.Info
|
||
err := orm.Eloquent.Model(&processValue).
|
||
Where("id = ?", processId).
|
||
Find(&processValue).Error
|
||
if err != nil {
|
||
app.Error(c, -1, err, fmt.Sprintf("查询流程详情失败, %v", err.Error()))
|
||
return
|
||
}
|
||
|
||
app.OK(c, processValue, "查询流程详情成功")
|
||
}
|
||
|
||
// 分类流程列表
|
||
func ClassifyProcessList(c *gin.Context) {
|
||
var (
|
||
err error
|
||
classifyIdList []int
|
||
classifyList []*struct {
|
||
process2.Classify
|
||
ProcessList []*process2.Info `json:"process_list"`
|
||
}
|
||
)
|
||
|
||
processName := c.DefaultQuery("name", "")
|
||
if processName == "" {
|
||
err = orm.Eloquent.Model(&process2.Classify{}).Find(&classifyList).Error
|
||
if err != nil {
|
||
app.Error(c, -1, err, fmt.Sprintf("获取分类列表失败,%v", err.Error()))
|
||
return
|
||
}
|
||
} else {
|
||
err = orm.Eloquent.Model(&process2.Info{}).
|
||
Where("name LIKE ?", fmt.Sprintf("%%%v%%", processName)).
|
||
Pluck("distinct classify", &classifyIdList).Error
|
||
if err != nil {
|
||
app.Error(c, -1, err, fmt.Sprintf("获取分类失败,%v", err.Error()))
|
||
return
|
||
}
|
||
|
||
err = orm.Eloquent.Model(&process2.Classify{}).
|
||
Where("id in (?)", classifyIdList).
|
||
Find(&classifyList).Error
|
||
if err != nil {
|
||
app.Error(c, -1, err, fmt.Sprintf("获取分类失败,%v", err.Error()))
|
||
return
|
||
}
|
||
}
|
||
|
||
for _, item := range classifyList {
|
||
err = orm.Eloquent.Model(&process2.Info{}).
|
||
Where("classify = ? and name LIKE ?", item.Id, fmt.Sprintf("%%%v%%", processName)).
|
||
Select("id, create_time, update_time, name, icon, remarks").
|
||
Find(&item.ProcessList).Error
|
||
if err != nil {
|
||
app.Error(c, -1, err, fmt.Sprintf("获取流程失败,%v", err.Error()))
|
||
return
|
||
}
|
||
}
|
||
|
||
app.OK(c, classifyList, "成功获取数据")
|
||
}
|
||
|
||
// 克隆流程
|
||
func CloneProcess(c *gin.Context) {
|
||
var (
|
||
err error
|
||
id string
|
||
info process.Info
|
||
)
|
||
|
||
id = c.Param("id")
|
||
|
||
err = orm.Eloquent.Find(&info, id).Error
|
||
if err != nil {
|
||
app.Error(c, -1, err, "查询流程数据失败")
|
||
return
|
||
}
|
||
|
||
err = orm.Eloquent.Create(&process.Info{
|
||
Name: info.Name + "-copy",
|
||
Icon: info.Icon,
|
||
Structure: info.Structure,
|
||
Classify: info.Classify,
|
||
Tpls: info.Tpls,
|
||
Task: info.Task,
|
||
SubmitCount: info.SubmitCount,
|
||
Creator: tools.GetUserId(c),
|
||
Notice: info.Notice,
|
||
Remarks: info.Remarks,
|
||
}).Error
|
||
if err != nil {
|
||
app.Error(c, -1, err, "克隆流程失败")
|
||
return
|
||
}
|
||
|
||
app.OK(c, nil, "")
|
||
}
|