wk_process.go 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. package service
  2. import (
  3. "gin-vue-admin/global"
  4. "gin-vue-admin/model"
  5. "gin-vue-admin/model/request"
  6. "gorm.io/gorm"
  7. )
  8. // @title CreateWorkflowProcess
  9. // @description create a WorkflowProcess
  10. // @param workflowProcess model.WorkflowProcess
  11. // @auth (2020/04/05 20:22)
  12. // @return err error
  13. func CreateWorkflowProcess(workflowProcess model.WorkflowProcess) (err error) {
  14. err = global.GVA_DB.Create(&workflowProcess).Error
  15. return err
  16. }
  17. // @title DeleteWorkflowProcess
  18. // @description delete a WorkflowProcess
  19. // @auth (2020/04/05 20:22)
  20. // @param workflowProcess model.WorkflowProcess
  21. // @return error
  22. func DeleteWorkflowProcess(workflowProcess model.WorkflowProcess) (err error) {
  23. err = global.GVA_DB.Transaction(func(tx *gorm.DB) error {
  24. var txErr error
  25. txErr = tx.Delete(workflowProcess).Error
  26. if txErr != nil {
  27. return txErr
  28. }
  29. var edges []model.WorkflowEdge
  30. txErr = tx.Delete(model.WorkflowNode{}, "workflow_process_id = ?", workflowProcess.ID).Error
  31. if txErr != nil {
  32. return txErr
  33. }
  34. txErr = tx.Find(&edges, "workflow_process_id = ?", workflowProcess.ID).Error
  35. if txErr != nil {
  36. return txErr
  37. }
  38. txErr = tx.Select("StartPoint", "EndPoint").Delete(&edges).Error
  39. if txErr != nil {
  40. return txErr
  41. }
  42. return nil
  43. })
  44. return err
  45. }
  46. // @title DeleteWorkflowProcessByIds
  47. // @description delete WorkflowProcesss
  48. // @auth (2020/04/05 20:22)
  49. // @param workflowProcess model.WorkflowProcess
  50. // @return error
  51. func DeleteWorkflowProcessByIds(ids request.IdsReq) (err error) {
  52. err = global.GVA_DB.Delete(&[]model.WorkflowProcess{}, "id in ?", ids.Ids).Error
  53. return err
  54. }
  55. // @title UpdateWorkflowProcess
  56. // @description update a WorkflowProcess
  57. // @param workflowProcess *model.WorkflowProcess
  58. // @auth (2020/04/05 20:22)
  59. // @return error
  60. func UpdateWorkflowProcess(workflowProcess *model.WorkflowProcess) (err error) {
  61. return global.GVA_DB.Transaction(func(tx *gorm.DB) error {
  62. var txErr error
  63. var edges []model.WorkflowEdge
  64. var edgesIds []string
  65. txErr = tx.Unscoped().Delete(workflowProcess).Error
  66. if txErr != nil {
  67. return txErr
  68. }
  69. txErr = tx.Unscoped().Delete(model.WorkflowNode{}, "workflow_process_id = ?", workflowProcess.ID).Error
  70. if txErr != nil {
  71. return txErr
  72. }
  73. txErr = tx.Unscoped().Find(&edges, "workflow_process_id = ?", workflowProcess.ID).Error
  74. if txErr != nil {
  75. return txErr
  76. }
  77. txErr = tx.Unscoped().Delete(&edges).Error
  78. if txErr != nil {
  79. return txErr
  80. }
  81. for _, v := range edges {
  82. edgesIds = append(edgesIds, v.ID)
  83. }
  84. txErr = tx.Unscoped().Delete(model.WorkflowStartPoint{}, "workflow_edge_id in ?", edgesIds).Error
  85. if txErr != nil {
  86. return txErr
  87. }
  88. txErr = tx.Unscoped().Delete(model.WorkflowEndPoint{}, "workflow_edge_id in ?", edgesIds).Error
  89. if txErr != nil {
  90. return txErr
  91. }
  92. txErr = tx.Create(&workflowProcess).Error
  93. if txErr != nil {
  94. return txErr
  95. }
  96. return nil
  97. })
  98. }
  99. // @title GetWorkflowProcess
  100. // @description get the info of a WorkflowProcess
  101. // @auth (2020/04/05 20:22)
  102. // @param id uint
  103. // @return error
  104. // @return WorkflowProcess WorkflowProcess
  105. func GetWorkflowProcess(id string) (err error, workflowProcess model.WorkflowProcess) {
  106. err = global.GVA_DB.Preload("Nodes").Preload("Edges").Where("id = ?", id).First(&workflowProcess).Error
  107. return
  108. }
  109. // @title GetWorkflowProcessInfoList
  110. // @description get WorkflowProcess list by pagination, 分页获取WorkflowProcess
  111. // @auth (2020/04/05 20:22)
  112. // @param info PageInfo
  113. // @return error
  114. func GetWorkflowProcessInfoList(info request.WorkflowProcessSearch) (err error, list interface{}, total int64) {
  115. limit := info.PageSize
  116. offset := info.PageSize * (info.Page - 1)
  117. // 创建db
  118. db := global.GVA_DB.Model(&model.WorkflowProcess{})
  119. var workflowProcesss []model.WorkflowProcess
  120. // 如果有条件搜索 下方会自动创建搜索语句
  121. if info.Name != "" {
  122. db = db.Where("`name` LIKE ?", "%"+info.Name+"%")
  123. }
  124. if info.Label != "" {
  125. db = db.Where("`label` LIKE ?", "%"+info.Label+"%")
  126. }
  127. err = db.Count(&total).Error
  128. err = db.Limit(limit).Offset(offset).Find(&workflowProcesss).Error
  129. return err, workflowProcesss, total
  130. }