project_process.go 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. package dao
  2. import "server/global"
  3. type ProjectProcess struct {
  4. global.GVA_MODEL
  5. ProjectProcessName string `json:"projectProcessName" form:"projectProcessName" gorm:"comment:项目审批名称"`
  6. Applicant int `json:"applicant" form:"applicant" gorm:"comment:申请人"`
  7. User SysUser `json:"user" form:"user" gorm:"foreignKey:Applicant;references:id;"`
  8. ProjectId int `json:"projectId" form:"projectId" gorm:"comment:项目id"`
  9. CurrentNodeOrder int `json:"currentNodeOrder" form:"currentNodeOrder" gorm:"comment:当前审批节点id"`
  10. Node Node `json:"node" form:"node" gorm:"foreignKey:CurrentNodeOrder;references:id;"`
  11. ProcessApprovalId int `json:"processApprovalId" form:"processApprovalId" gorm:"comment:当前审批流程id"`
  12. Process Process `json:"process" form:"process" gorm:"foreignKey:ProcessApprovalId;references:id"`
  13. ProjectType string `json:"projectType" form:"projectType" gorm:"comment:项目类型"`
  14. Descriptions []Description `json:"descriptions" form:"descriptions" gorm:"foreignKey:ProjectProcessId;"`
  15. State int `json:"isOver" form:"isOver" gorm:"comment:状态;default:0;"`
  16. }
  17. func (ProjectProcess) TableName() string {
  18. return "project_process"
  19. }
  20. func QueryProjectApplicantList(limit, offset, applicant int) (projectProcesses []ProjectProcess, total int64, err error) {
  21. // 创建db
  22. db := global.GVA_DB.Model(&ProjectProcess{})
  23. // 如果有条件搜索 下方会自动创建搜索语句
  24. if applicant != 0 {
  25. db = db.Where("applicant = ?", applicant)
  26. }
  27. err = db.Count(&total).Error
  28. if err != nil {
  29. return
  30. }
  31. err = db.Order("id desc").Limit(limit).Offset(offset).Preload("User").Preload("Node").Preload("Process").Preload("Descriptions").Find(&projectProcesses).Error
  32. for i, projectProcess := range projectProcesses {
  33. var processNodes []ProcessNodes
  34. err = global.GVA_DB.Model(&ProcessNodes{}).Where("process_id = ?", projectProcess.Process.ID).Find(&processNodes).Error
  35. if err != nil {
  36. return nil, 0, err
  37. }
  38. var nodes []Node
  39. for _, node := range processNodes {
  40. var node1 Node
  41. err := global.GVA_DB.Model(&Node{}).Where("id = ?", node.NodeId).Preload("Approver").Find(&node1).Error
  42. if err != nil {
  43. return nil, 0, err
  44. }
  45. node1.Order = node.NodeOrder
  46. nodes = append(nodes, node1)
  47. }
  48. projectProcesses[i].Process.Nodes = nodes
  49. }
  50. return projectProcesses, total, err
  51. }
  52. func QueryProjectProcessList(limit, offset, applicant int) (projectProcesses []ProjectProcess, total int64, err error) {
  53. // 创建db
  54. db := global.GVA_DB.Model(&ProjectProcess{}).Joins("JOIN node ON project_process.current_node_order = node.id").Where("node.approver_id = ?", applicant)
  55. // 如果有条件搜索 下方会自动创建搜索语句
  56. err = db.Count(&total).Error
  57. if err != nil {
  58. return
  59. }
  60. err = db.Order("id desc").Limit(limit).Offset(offset).Preload("User").Preload("Node").Preload("Process").Preload("Descriptions").Find(&projectProcesses).Error
  61. for i, projectProcess := range projectProcesses {
  62. var processNodes []ProcessNodes
  63. err = global.GVA_DB.Model(&ProcessNodes{}).Where("process_id = ?", projectProcess.Process.ID).Find(&processNodes).Error
  64. if err != nil {
  65. return nil, 0, err
  66. }
  67. var nodes []Node
  68. for _, node := range processNodes {
  69. var node1 Node
  70. err := global.GVA_DB.Model(&Node{}).Where("id = ?", node.NodeId).Preload("Approver").Find(&node1).Error
  71. if err != nil {
  72. return nil, 0, err
  73. }
  74. node1.Order = node.NodeOrder
  75. nodes = append(nodes, node1)
  76. }
  77. projectProcesses[i].Process.Nodes = nodes
  78. }
  79. return projectProcesses, total, err
  80. }
  81. func QueryProjectProcessById(id int) (projectProcess ProjectProcess, err error) {
  82. err = global.GVA_DB.Where("id =?", id).Preload("User").Preload("Node").Preload("Process").Preload("Descriptions").First(&projectProcess).Error
  83. var processNodes []ProcessNodes
  84. err = global.GVA_DB.Model(&ProcessNodes{}).Where("process_id = ?", projectProcess.Process.ID).Find(&processNodes).Error
  85. if err != nil {
  86. return projectProcess, err
  87. }
  88. var nodes []Node
  89. for _, node := range processNodes {
  90. var node1 Node
  91. err := global.GVA_DB.Model(&Node{}).Where("id = ?", node.NodeId).Preload("Approver").Find(&node1).Error
  92. if err != nil {
  93. return projectProcess, err
  94. }
  95. node1.Order = node.NodeOrder
  96. nodes = append(nodes, node1)
  97. }
  98. projectProcess.Process.Nodes = nodes
  99. return projectProcess, err
  100. }
  101. func QueryProjectProcessByProcessApprovalId(id int) (projectProcesses []ProjectProcess, err error) {
  102. err = global.GVA_DB.Where("process_approval_id =?", id).Preload("User").Preload("Node").Preload("Process").Preload("Descriptions").Find(&projectProcesses).Error
  103. for i, projectProcess := range projectProcesses {
  104. var processNodes []ProcessNodes
  105. err = global.GVA_DB.Model(&ProcessNodes{}).Where("process_id = ?", projectProcess.Process.ID).Find(&processNodes).Error
  106. if err != nil {
  107. return projectProcesses, err
  108. }
  109. var nodes []Node
  110. for _, node := range processNodes {
  111. var node1 Node
  112. err := global.GVA_DB.Model(&Node{}).Where("id = ?", node.NodeId).Preload("Approver").Find(&node1).Error
  113. if err != nil {
  114. return projectProcesses, err
  115. }
  116. node1.Order = node.NodeOrder
  117. nodes = append(nodes, node1)
  118. }
  119. projectProcesses[i].Process.Nodes = nodes
  120. }
  121. return projectProcesses, err
  122. }
  123. func (pp ProjectProcess) CreateProjectProcess() error {
  124. return global.GVA_DB.Create(&pp).Error
  125. }
  126. func (pp ProjectProcess) UpdateProjectProcess() error {
  127. return global.GVA_DB.Where("id = ?", pp.ID).Updates(&pp).Error
  128. }
  129. func (pp ProjectProcess) DeleteProjectProcess() error {
  130. return global.GVA_DB.Unscoped().Delete(&pp).Error
  131. }