mirror of
https://github.com/tiger1103/gfast.git
synced 2026-09-21 02:04:07 +00:00
添加流程相关功能
This commit is contained in:
@@ -0,0 +1,414 @@
|
||||
// ==========================================================================
|
||||
// 生成日期:2020-08-24 17:13:46
|
||||
// 生成人:gfast
|
||||
// ==========================================================================
|
||||
package admin
|
||||
|
||||
import (
|
||||
"gfast/app/model/admin/sys_dept"
|
||||
"gfast/app/model/admin/user"
|
||||
flowModel "gfast/app/model/admin/wf_flow"
|
||||
"gfast/app/model/admin/wf_flow_process"
|
||||
"gfast/app/service/admin/dept_service"
|
||||
flowService "gfast/app/service/admin/flow_service"
|
||||
"gfast/app/service/admin/user_service"
|
||||
"gfast/app/service/common/work_flow_service"
|
||||
"gfast/library/response"
|
||||
"github.com/gogf/gf/frame/g"
|
||||
"github.com/gogf/gf/net/ghttp"
|
||||
"github.com/gogf/gf/util/gconv"
|
||||
"github.com/gogf/gf/util/gvalid"
|
||||
)
|
||||
|
||||
//控制器
|
||||
type Flow struct{}
|
||||
|
||||
//列表页
|
||||
func (c *Flow) List(r *ghttp.Request) {
|
||||
// 定义一个结构体存储请求参数
|
||||
var req *flowModel.SelectPageReq
|
||||
// 获取参数
|
||||
err := r.Parse(&req)
|
||||
if err != nil {
|
||||
response.FailJson(true, r, err.(*gvalid.Error).FirstString())
|
||||
}
|
||||
total, page, list, err := flowService.SelectListByPage(req)
|
||||
if err != nil {
|
||||
response.FailJson(true, r, err.Error())
|
||||
}
|
||||
//获取流程运行状态
|
||||
listData, err := flowService.GetRunningStatus(list)
|
||||
if err != nil {
|
||||
response.FailJson(true, r, err.Error())
|
||||
}
|
||||
result := g.Map{
|
||||
"currentPage": page,
|
||||
"total": total,
|
||||
"list": listData,
|
||||
}
|
||||
response.SusJson(true, r, "获取列表数据成功", result)
|
||||
}
|
||||
|
||||
// 新增
|
||||
func (c *Flow) Add(r *ghttp.Request) {
|
||||
if r.Method == "POST" {
|
||||
var req *flowModel.AddReq
|
||||
// 通过Parse方法解析获取参数
|
||||
err := r.Parse(&req)
|
||||
if err != nil {
|
||||
response.FailJson(true, r, err.(*gvalid.Error).FirstString())
|
||||
}
|
||||
req.Uid = user_service.GetLoginID(r)
|
||||
// 调用service中的添加函数添加
|
||||
err = flowService.AddSave(req)
|
||||
if err != nil {
|
||||
response.FailJson(true, r, err.Error())
|
||||
}
|
||||
response.SusJson(true, r, "添加成功")
|
||||
}
|
||||
}
|
||||
|
||||
// 修改
|
||||
func (c *Flow) Edit(r *ghttp.Request) {
|
||||
// 如果是post提交的请求就执行修改操作
|
||||
if r.Method == "POST" {
|
||||
var editReq *flowModel.EditReq
|
||||
// 通过Parse方法解析获取参数
|
||||
err := r.Parse(&editReq)
|
||||
if err != nil {
|
||||
response.FailJson(true, r, err.(*gvalid.Error).FirstString())
|
||||
}
|
||||
err = flowService.EditSave(editReq)
|
||||
if err != nil {
|
||||
response.FailJson(true, r, err.Error())
|
||||
}
|
||||
response.SusJson(true, r, "修改参数成功")
|
||||
}
|
||||
// 不是post提交的请求就到修改页面后查询出要修改的记录
|
||||
id := r.GetInt("id")
|
||||
params, err := flowService.GetByID(int64(id))
|
||||
if err != nil {
|
||||
response.FailJson(true, r, err.Error())
|
||||
}
|
||||
response.SusJson(true, r, "ok", params)
|
||||
}
|
||||
|
||||
// 删除
|
||||
func (c *Flow) Delete(r *ghttp.Request) {
|
||||
var req *flowModel.RemoveReq
|
||||
//获取参数
|
||||
if err := r.Parse(&req); err != nil {
|
||||
response.FailJson(true, r, err.(*gvalid.Error).FirstString())
|
||||
}
|
||||
err := flowService.DeleteByIds(req.Ids)
|
||||
if err != nil {
|
||||
response.FailJson(true, r, "删除失败")
|
||||
}
|
||||
response.SusJson(true, r, "删除成功")
|
||||
}
|
||||
|
||||
//设置状态
|
||||
func (c *Flow) StatusSetFlow(r *ghttp.Request) {
|
||||
var req *flowModel.StatusReq
|
||||
//获取参数
|
||||
if err := r.Parse(&req); err != nil {
|
||||
response.FailJson(true, r, err.(*gvalid.Error).FirstString())
|
||||
}
|
||||
err := flowService.SetStatus(req)
|
||||
if err != nil {
|
||||
response.FailJson(true, r, "状态设置失败")
|
||||
}
|
||||
response.SusJson(true, r, "状态设置成功")
|
||||
}
|
||||
|
||||
//工作流设计页
|
||||
func (c *Flow) DesignFlow(r *ghttp.Request) {
|
||||
id := r.GetInt64("id")
|
||||
if id == 0 {
|
||||
response.FailJson(true, r, "参数错误")
|
||||
}
|
||||
//获取工作流信息
|
||||
flowInfo, err := work_flow_service.GetFlowInfoById(id)
|
||||
if err != nil {
|
||||
response.FailJson(true, r, err.Error())
|
||||
}
|
||||
if flowInfo == nil {
|
||||
response.FailJson(true, r, "未找到数据,请返回重试!")
|
||||
}
|
||||
total, processList, err := work_flow_service.ProcessAll(id)
|
||||
if err != nil {
|
||||
response.FailJson(true, r, err.Error())
|
||||
}
|
||||
processStep := make([]*wf_flow_process.ProcessStepData, 0, 20)
|
||||
for _, process := range processList {
|
||||
step, err := work_flow_service.GetProcessStep(process, processList)
|
||||
if err != nil {
|
||||
response.FailJson(true, r, err.Error())
|
||||
}
|
||||
if step != nil {
|
||||
processStep = append(processStep, step...)
|
||||
}
|
||||
}
|
||||
//获取流程对应表字段信息
|
||||
fields, err := work_flow_service.GetFlowTableFields(flowInfo.Type)
|
||||
if err != nil {
|
||||
response.FailJson(true, r, err.Error())
|
||||
}
|
||||
response.SusJson(true, r, "ok", g.Map{
|
||||
"flowInfo": flowInfo,
|
||||
"processList": processList,
|
||||
"total": total,
|
||||
"fields": fields,
|
||||
"processStep": processStep,
|
||||
})
|
||||
}
|
||||
|
||||
//添加流程步骤
|
||||
func (c *Flow) AddProcess(r *ghttp.Request) {
|
||||
id := r.GetInt64("id")
|
||||
if id == 0 {
|
||||
response.FailJson(true, r, "参数错误")
|
||||
}
|
||||
//获取工作流信息
|
||||
flowInfo, err := work_flow_service.GetFlowInfoById(id)
|
||||
if err != nil {
|
||||
response.FailJson(true, r, err.Error())
|
||||
}
|
||||
if flowInfo == nil {
|
||||
response.FailJson(true, r, "添加失败,未找到流程")
|
||||
}
|
||||
err = work_flow_service.ProcessAdd(id)
|
||||
if err != nil {
|
||||
response.FailJson(true, r, err.Error())
|
||||
}
|
||||
response.SusJson(true, r, "添加成功")
|
||||
}
|
||||
|
||||
//保存设计
|
||||
func (c *Flow) SaveProcess(r *ghttp.Request) {
|
||||
var req *wf_flow_process.SaveProcessReqBatch
|
||||
//获取参数
|
||||
if err := r.Parse(&req); err != nil {
|
||||
response.FailJson(true, r, err.(*gvalid.Error).FirstString())
|
||||
}
|
||||
for _, rq := range req.Data {
|
||||
// 使用结构体定义的校验规则和错误提示进行校验
|
||||
if err := gvalid.CheckStruct(rq, nil); err != nil {
|
||||
response.FailJson(true, r, err.FirstString())
|
||||
}
|
||||
}
|
||||
if err := work_flow_service.SaveProcess(req); err != nil {
|
||||
response.FailJson(true, r, err.Error())
|
||||
}
|
||||
response.SusJson(true, r, "保存成功")
|
||||
}
|
||||
|
||||
//获取办理对象(人员/部门)
|
||||
func (c *Flow) GetManager(r *ghttp.Request) {
|
||||
manageType := r.GetString("type")
|
||||
//kid := r.GetString("kid")
|
||||
keyWords := r.GetString("key")
|
||||
if manageType == "getUser" {
|
||||
req := &user.SearchReq{
|
||||
KeyWords: keyWords,
|
||||
PageSize: 50,
|
||||
}
|
||||
_, _, userList, err := user_service.GetAdminList(req)
|
||||
if err != nil {
|
||||
response.FailJson(true, r, err.Error())
|
||||
}
|
||||
res := make(g.ListStrAny, len(userList))
|
||||
for k, v := range userList {
|
||||
res[k] = g.MapStrAny{
|
||||
"label": v.UserNickname,
|
||||
"value": v.Id,
|
||||
}
|
||||
}
|
||||
response.SusJson(true, r, "ok", res)
|
||||
} else if manageType == "getDepartment" {
|
||||
req := &sys_dept.SearchParams{
|
||||
DeptName: keyWords,
|
||||
}
|
||||
list, err := dept_service.GetList(req)
|
||||
if err != nil {
|
||||
response.FailJson(true, r, err.Error())
|
||||
}
|
||||
res := make(g.ListStrAny, len(list))
|
||||
for k, v := range list {
|
||||
res[k] = g.MapStrAny{
|
||||
"label": v.DeptName,
|
||||
"value": v.DeptID,
|
||||
}
|
||||
}
|
||||
response.SusJson(true, r, "ok", res)
|
||||
}
|
||||
response.FailJson(true, r, "参数错误")
|
||||
}
|
||||
|
||||
//保存节点属性
|
||||
func (c *Flow) SaveAttr(r *ghttp.Request) {
|
||||
var req *wf_flow_process.SaveAttrReq
|
||||
//获取参数
|
||||
if err := r.Parse(&req); err != nil {
|
||||
response.FailJson(true, r, err.(*gvalid.Error).FirstString())
|
||||
}
|
||||
if err := work_flow_service.SaveProcessAttr(req); err != nil {
|
||||
response.FailJson(true, r, err.Error())
|
||||
}
|
||||
response.SusJson(true, r, "保存成功", req)
|
||||
}
|
||||
|
||||
//删除节点
|
||||
func (c *Flow) DeleteProcess(r *ghttp.Request) {
|
||||
var req *wf_flow_process.DeleteProcessReq
|
||||
//获取参数
|
||||
if err := r.Parse(&req); err != nil {
|
||||
response.FailJson(true, r, err.(*gvalid.Error).FirstString())
|
||||
}
|
||||
if err := work_flow_service.ProcessDelete(req); err != nil {
|
||||
response.FailJson(true, r, err.Error())
|
||||
}
|
||||
response.SusJson(true, r, "删除成功")
|
||||
}
|
||||
|
||||
//清除流程节点
|
||||
func (c *Flow) DeleteProcessAll(r *ghttp.Request) {
|
||||
flowId := r.GetInt("flow_id")
|
||||
if flowId == 0 {
|
||||
response.FailJson(true, r, "参数错误")
|
||||
}
|
||||
if err := work_flow_service.ProcessDeleteAll(flowId); err != nil {
|
||||
response.FailJson(true, r, err.Error())
|
||||
}
|
||||
response.SusJson(true, r, "清除成功")
|
||||
}
|
||||
|
||||
//检查流程逻辑
|
||||
func (c *Flow) CheckFlow(r *ghttp.Request) {
|
||||
flowId := r.GetInt64("flow_id")
|
||||
if flowId == 0 {
|
||||
response.FailJson(true, r, "参数错误")
|
||||
}
|
||||
err := work_flow_service.CheckFlow(flowId)
|
||||
if err != nil {
|
||||
response.FailJson(true, r, err.Error())
|
||||
}
|
||||
response.SusJson(true, r, "简单逻辑检查通过,请自行检查转出条件!")
|
||||
}
|
||||
|
||||
//发起选择工作流程
|
||||
func (c *Flow) WfStart(r *ghttp.Request) {
|
||||
var req *flowModel.StartFlowReq
|
||||
//获取参数
|
||||
if err := r.Parse(&req); err != nil {
|
||||
response.FailJson(true, r, err.(*gvalid.Error).FirstString())
|
||||
}
|
||||
flow, err := work_flow_service.GetWorkFlowByType(req.WfType)
|
||||
if err != nil {
|
||||
response.FailJson(true, r, err.Error())
|
||||
}
|
||||
|
||||
response.SusJson(true, r, "ok", g.Map{
|
||||
"flow": flow,
|
||||
"info": req,
|
||||
})
|
||||
}
|
||||
|
||||
//保存业务流程信息
|
||||
func (c *Flow) SaveStartWf(r *ghttp.Request) {
|
||||
var req *flowModel.SaveWfFlowReq
|
||||
//获取参数
|
||||
if err := r.Parse(&req); err != nil {
|
||||
response.FailJson(true, r, err.(*gvalid.Error).FirstString())
|
||||
}
|
||||
req.UserId = user_service.GetLoginID(r)
|
||||
err := work_flow_service.StartWorkFlow(req)
|
||||
if err != nil {
|
||||
response.FailJson(true, r, err.Error())
|
||||
}
|
||||
response.SusJson(true, r, "发起成功")
|
||||
}
|
||||
|
||||
//审批
|
||||
func (c *Flow) WfCheck(r *ghttp.Request) {
|
||||
var req *flowModel.CheckWfReq
|
||||
//获取参数
|
||||
if err := r.Parse(&req); err != nil {
|
||||
response.FailJson(true, r, err.(*gvalid.Error).FirstString())
|
||||
}
|
||||
//当前用户信息
|
||||
userInfo := user_service.GetLoginAdminInfo(r)
|
||||
//获取流程信息
|
||||
flowInfo, err := work_flow_service.WorkFlowInfo(req.WfFid, req.WfType, userInfo.Id, userInfo.DeptId)
|
||||
if err != nil {
|
||||
response.FailJson(true, r, err.Error())
|
||||
}
|
||||
//获取流程审批日志信息
|
||||
flowLogs, err := work_flow_service.FlowLog("logs", req.WfFid, req.WfType)
|
||||
if err != nil {
|
||||
response.FailJson(true, r, err.Error())
|
||||
}
|
||||
//获取业务信息
|
||||
table, err := work_flow_service.GetBill(gconv.Int(req.WfFid), req.WfType)
|
||||
if err != nil {
|
||||
response.FailJson(true, r, err.Error())
|
||||
}
|
||||
response.SusJson(true, r, "ok", g.Map{
|
||||
"info": req,
|
||||
"flowInfo": flowInfo,
|
||||
"flowLogs": flowLogs,
|
||||
"table": table,
|
||||
})
|
||||
}
|
||||
|
||||
//审批数据保存
|
||||
func (c *Flow) CheckSave(r *ghttp.Request) {
|
||||
var req *flowModel.CheckWfSaveReq
|
||||
//获取参数
|
||||
if err := r.Parse(&req); err != nil {
|
||||
response.FailJson(true, r, err.(*gvalid.Error).FirstString())
|
||||
}
|
||||
req.UserId = user_service.GetLoginID(r)
|
||||
err := work_flow_service.WorkCheckAction(req)
|
||||
if err != nil {
|
||||
response.FailJson(true, r, err.Error())
|
||||
}
|
||||
response.SusJson(true, r, "ok", req)
|
||||
}
|
||||
|
||||
//获取回退步骤数据
|
||||
func (c *Flow) GetBackTodo(r *ghttp.Request) {
|
||||
var req *flowModel.BackTodoReq
|
||||
//获取参数
|
||||
if err := r.Parse(&req); err != nil {
|
||||
response.FailJson(true, r, err.(*gvalid.Error).FirstString())
|
||||
}
|
||||
todo, err := work_flow_service.GetBackTodo(req)
|
||||
if err != nil {
|
||||
response.FailJson(true, r, err.Error())
|
||||
}
|
||||
response.SusJson(true, r, "ok", todo)
|
||||
}
|
||||
|
||||
//流程监控
|
||||
func (c *Flow) Monitoring(r *ghttp.Request) {
|
||||
list, err := work_flow_service.GetRunningFlow()
|
||||
if err != nil {
|
||||
response.FailJson(true, r, err.Error())
|
||||
}
|
||||
response.SusJson(true, r, "ok", list)
|
||||
}
|
||||
|
||||
//终止流程
|
||||
func (c *Flow) StopFlow(r *ghttp.Request) {
|
||||
runId := r.GetUint("id")
|
||||
wfStatusField := r.GetString("WfStatusField")
|
||||
if runId == 0 || wfStatusField == "" {
|
||||
response.FailJson(true, r, "参数错误")
|
||||
}
|
||||
userId := user_service.GetLoginID(r)
|
||||
if err := work_flow_service.DoSupEnd(runId, userId, wfStatusField); err != nil {
|
||||
response.FailJson(true, r, err.Error())
|
||||
}
|
||||
response.SusJson(true, r, "终止成功")
|
||||
}
|
||||
@@ -0,0 +1,112 @@
|
||||
// ==========================================================================
|
||||
// 生成日期:2020-09-17 10:13:16
|
||||
// 生成人:gfast
|
||||
// ==========================================================================
|
||||
package admin
|
||||
|
||||
import (
|
||||
wfNewsModel "gfast/app/model/admin/wf_news"
|
||||
wfNewsService "gfast/app/service/admin/flow_news_service"
|
||||
"gfast/app/service/admin/user_service"
|
||||
"gfast/app/service/common/work_flow_service"
|
||||
|
||||
"gfast/library/response"
|
||||
"github.com/gogf/gf/frame/g"
|
||||
"github.com/gogf/gf/net/ghttp"
|
||||
"github.com/gogf/gf/util/gvalid"
|
||||
)
|
||||
|
||||
//控制器
|
||||
type WfNews struct{}
|
||||
|
||||
//列表页
|
||||
func (c *WfNews) List(r *ghttp.Request) {
|
||||
// 定义一个结构体存储请求参数
|
||||
var req *wfNewsModel.SelectPageReq
|
||||
// 获取参数
|
||||
err := r.Parse(&req)
|
||||
if err != nil {
|
||||
response.FailJson(true, r, err.(*gvalid.Error).FirstString())
|
||||
}
|
||||
userInfo := user_service.GetLoginAdminInfo(r)
|
||||
total, page, list, err := wfNewsService.SelectListByPage(req, userInfo.Id, userInfo.DeptId)
|
||||
if err != nil {
|
||||
response.FailJson(true, r, err.Error())
|
||||
}
|
||||
result := g.Map{
|
||||
"currentPage": page,
|
||||
"total": total,
|
||||
"list": list,
|
||||
}
|
||||
response.SusJson(true, r, "获取列表数据成功", result)
|
||||
}
|
||||
|
||||
// 新增
|
||||
func (c *WfNews) Add(r *ghttp.Request) {
|
||||
if r.Method == "POST" {
|
||||
var req *wfNewsModel.AddReq
|
||||
// 通过Parse方法解析获取参数
|
||||
err := r.Parse(&req)
|
||||
if err != nil {
|
||||
response.FailJson(true, r, err.(*gvalid.Error).FirstString())
|
||||
}
|
||||
req.Uid = user_service.GetLoginID(r)
|
||||
// 调用service中的添加函数添加
|
||||
err = wfNewsService.AddSave(req)
|
||||
if err != nil {
|
||||
response.FailJson(true, r, err.Error())
|
||||
}
|
||||
response.SusJson(true, r, "添加成功")
|
||||
}
|
||||
}
|
||||
|
||||
// 修改
|
||||
func (c *WfNews) Edit(r *ghttp.Request) {
|
||||
// 如果是post提交的请求就执行修改操作
|
||||
if r.Method == "POST" {
|
||||
var editReq *wfNewsModel.EditReq
|
||||
// 通过Parse方法解析获取参数
|
||||
err := r.Parse(&editReq)
|
||||
if err != nil {
|
||||
response.FailJson(true, r, err.(*gvalid.Error).FirstString())
|
||||
}
|
||||
err = wfNewsService.EditSave(editReq)
|
||||
if err != nil {
|
||||
response.FailJson(true, r, err.Error())
|
||||
}
|
||||
response.SusJson(true, r, "修改参数成功")
|
||||
}
|
||||
// 不是post提交的请求就到修改页面后查询出要修改的记录
|
||||
id := r.GetInt("id")
|
||||
params, err := wfNewsService.GetByID(int64(id))
|
||||
if err != nil {
|
||||
response.FailJson(true, r, err.Error())
|
||||
}
|
||||
response.SusJson(true, r, "ok", params)
|
||||
}
|
||||
|
||||
// 删除
|
||||
func (c *WfNews) Delete(r *ghttp.Request) {
|
||||
var req *wfNewsModel.RemoveReq
|
||||
//获取参数
|
||||
if err := r.Parse(&req); err != nil {
|
||||
response.FailJson(true, r, err.(*gvalid.Error).FirstString())
|
||||
}
|
||||
err := wfNewsService.DeleteByIds(req.Ids)
|
||||
if err != nil {
|
||||
response.FailJson(true, r, "删除失败")
|
||||
}
|
||||
response.SusJson(true, r, "删除成功")
|
||||
}
|
||||
|
||||
//审批日志
|
||||
func (c *WfNews) CheckLog(r *ghttp.Request) {
|
||||
id := r.GetUint("id")
|
||||
wfType := r.GetString("wf_type")
|
||||
//获取流程审批日志信息
|
||||
flowLogs, err := work_flow_service.FlowLog("logs", id, wfType)
|
||||
if err != nil {
|
||||
response.FailJson(true, r, err.Error())
|
||||
}
|
||||
response.SusJson(true, r, "ok", flowLogs)
|
||||
}
|
||||
Reference in New Issue
Block a user