| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- package work_flow_service
- import (
- "fmt"
- flowModel "gfast/app/model/admin/wf_flow"
- "gfast/app/model/admin/wf_run"
- "github.com/gogf/gf/database/gdb"
- "github.com/gogf/gf/errors/gerror"
- "github.com/gogf/gf/frame/g"
- "github.com/gogf/gf/os/gtime"
- "github.com/gogf/gf/util/gconv"
- )
- func AddWfRun(wfId int64, processId int, wfFid int, wfType, wfTitle, wfStatusField string, userId uint64, tx *gdb.TX) (runId int64, err error) {
- //删除旧的流程数据
- _, err = wf_run.Model.TX(tx).Delete(g.Map{
- "from_table": wfType,
- "from_id": wfFid,
- })
- if err != nil {
- g.Log().Error(err)
- return 0, gerror.New("删除旧流程信息失败")
- }
- data := &wf_run.RunAddData{
- Pid: 0,
- Uid: gconv.Uint(userId),
- FlowId: gconv.Uint(wfId),
- FromTable: wfType,
- FromId: wfFid,
- FromTitle: wfTitle,
- FromStatus: wfStatusField,
- RunName: gconv.String(wfFid),
- RunFlowId: gconv.Uint(wfId),
- RunFlowProcess: gconv.String(processId),
- Dateline: gconv.Uint(gtime.Timestamp()),
- }
- return wf_run.Add(data, tx)
- }
- func Up(runId uint, flowProcess string, tx *gdb.TX) (err error) {
- err = wf_run.UpdateRun(runId, g.Map{
- "run_flow_process": flowProcess,
- }, tx)
- if err != nil {
- g.Log().Error(err)
- err = gerror.New("更新流程运行信息失败")
- }
- return
- }
- func UpFlowPress(id uint, runProcess string, tx *gdb.TX) error {
- return Up(id, runProcess, tx)
- }
- func EndFlow(runId uint, tx *gdb.TX) error {
- err := wf_run.UpdateRun(runId, g.Map{
- "status": 1,
- "endtime": gtime.Timestamp(),
- }, tx)
- if err != nil {
- g.Log().Error(err)
- err = gerror.New("结束流程主状态失败")
- }
- return err
- }
- func UpFlow(runId uint, sid int64, tx *gdb.TX) error {
- err := wf_run.UpdateRun(runId, g.Map{
- "is_sing": 1,
- "sing_id": sid,
- "endtime": gtime.Timestamp(),
- }, tx)
- if err != nil {
- g.Log().Error(err)
- err = gerror.New("设置会签状态失败")
- }
- return err
- }
- func UpRun(id uint, tx *gdb.TX) error {
- err := wf_run.UpdateRun(id, g.Map{
- "is_sing": 0,
- }, tx)
- if err != nil {
- g.Log().Error(err)
- err = gerror.New("更新流程状态失败")
- }
- return err
- }
- //终止流程操作
- func DoSupEnd(runId uint, userId uint64, wfStatusField string) error {
- //获取流程运行信息
- runInfo, err := wf_run.GetRunById(runId)
- if err != nil {
- return err
- }
- //日志信息
- fm := &flowModel.SaveWfFlowReq{
- WfType: runInfo.FromTable,
- WfFid: runInfo.FromId,
- WfId: gconv.Int64(runInfo.FlowId),
- CheckCon: fmt.Sprintf("编号:%d的管理员终止了本流程!", userId),
- RunProcess: gconv.Uint(runInfo.RunFlowProcess),
- RunId: runId,
- Art: "",
- UserId: userId,
- }
- tx, err := g.DB().Begin()
- if err != nil {
- g.Log().Error(err)
- return gerror.New("开启事务失败")
- }
- //结束流程
- err = EndFlow(runId, tx)
- if err != nil {
- tx.Rollback()
- return err
- }
- err = EndProcess(gconv.Uint(runInfo.RunFlowProcess), fm.CheckCon, 2, tx)
- if err != nil {
- tx.Rollback()
- return err
- }
- //日志记录
- err = AddRunLog(gconv.Int64(runId), fm, "SupEnd", tx)
- if err != nil {
- tx.Rollback()
- return err
- }
- //更新单据状态
- err = UpdateBill(fm.WfFid, fm.WfType, wfStatusField, 2, tx)
- if err != nil {
- tx.Rollback()
- return err
- }
- tx.Commit()
- return nil
- }
|