business_checker.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package work_flow_service
  2. import (
  3. "gfast/app/model/admin/user"
  4. "gfast/app/model/admin/wf_business_checker"
  5. "gfast/app/model/admin/wf_flow_process"
  6. "gfast/app/model/admin/wf_run"
  7. "github.com/gogf/gf/database/gdb"
  8. "github.com/gogf/gf/errors/gerror"
  9. "github.com/gogf/gf/frame/g"
  10. "github.com/gogf/gf/text/gstr"
  11. "github.com/gogf/gf/util/gconv"
  12. )
  13. func SetBusinessChecker(fid int, wfType string, runId int64, process *wf_flow_process.Entity, todo string, tx *gdb.TX) error {
  14. data, err := SetUserDept(fid, wfType, runId, process, todo)
  15. if err != nil {
  16. return err
  17. }
  18. return wf_business_checker.SaveInfo(data, tx)
  19. }
  20. func SetBusinessCheckers(fid int, wfType string, runId int64, processes []*wf_flow_process.Entity, todo string, tx *gdb.TX) error {
  21. data := &wf_business_checker.SaveParams{
  22. FromTable: wfType,
  23. FromId: gconv.Uint64(fid),
  24. }
  25. for _, process := range processes {
  26. d, err := SetUserDept(fid, wfType, runId, process, todo)
  27. if err != nil {
  28. return err
  29. }
  30. if d != nil {
  31. if data.UserId != "" {
  32. data.UserId = data.UserId + "," + d.UserId
  33. } else {
  34. data.UserId = d.UserId
  35. }
  36. if data.DepartmentId != "" {
  37. data.DepartmentId = data.DepartmentId + "," + d.DepartmentId
  38. } else {
  39. data.DepartmentId = d.DepartmentId
  40. }
  41. }
  42. }
  43. return wf_business_checker.SaveInfo(data, tx)
  44. }
  45. func SetUserDept(fid int, wfType string, runId int64, process *wf_flow_process.Entity, todo string) (*wf_business_checker.SaveParams, error) {
  46. processData := &ProcessData{
  47. Entity: process,
  48. }
  49. if process.AutoPerson == 6 && process.ProcessType == "is_one" {
  50. //事务处理人员
  51. wf, err := wf_run.GetRunById(gconv.Uint(runId))
  52. if err != nil {
  53. return nil, err
  54. }
  55. userIdBil, err := GetBilValue(wf.FromTable, wf.FromId, process.WorkText)
  56. if err != nil {
  57. return nil, err
  58. }
  59. userInfo, err := user.GetUserById(gconv.Uint64(userIdBil))
  60. if err != nil {
  61. return nil, err
  62. }
  63. processData.UserInfo = userInfo
  64. processData.Todo = g.MapStrAny{"text": userInfo.UserNickname}
  65. }
  66. sponsorIds := "" //用户id
  67. sponsorDepts := "" //部门id
  68. //非自由选择
  69. if todo == "" {
  70. if process.AutoPerson == 3 {
  71. //办理人员
  72. sponsorIds = process.RangeUserIds
  73. } else if process.AutoPerson == 4 {
  74. //办理人员
  75. sponsorIds = process.AutoSponsorIds
  76. } else if process.AutoPerson == 5 {
  77. //办理部门
  78. sponsorDepts = process.AutoRoleIds
  79. } else if process.AutoPerson == 6 {
  80. //事务接收
  81. sponsorIds = gconv.String(processData.UserInfo.Id)
  82. }
  83. } else {
  84. todoArr := gstr.Split(todo, "*%*")
  85. sponsorIds = todoArr[0]
  86. }
  87. data := &wf_business_checker.SaveParams{
  88. FromTable: wfType,
  89. FromId: gconv.Uint64(fid),
  90. UserId: sponsorIds,
  91. DepartmentId: sponsorDepts,
  92. }
  93. return data, nil
  94. }
  95. func DeleteBusinessChecker(fid uint, wfType string, tx *gdb.TX) error {
  96. _, err := wf_business_checker.Model.TX(tx).Where(g.Map{"from_table": wfType, "from_id": fid}).Delete()
  97. if err != nil {
  98. g.Log().Error(err)
  99. return gerror.New("删除业务审批人员/部门信息失败")
  100. }
  101. return nil
  102. }