project_process.go 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  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. Code string `json:"code" form:"code" gorm:"-"`
  17. }
  18. func (ProjectProcess) TableName() string {
  19. return "project_process"
  20. }
  21. func QueryProjectApplicantList(limit, offset, applicant int) (projectProcesses []ProjectProcess, total int64, err error) {
  22. // 创建db
  23. db := global.GVA_DB.Model(&ProjectProcess{})
  24. // 如果有条件搜索 下方会自动创建搜索语句
  25. if applicant != 0 {
  26. db = db.Where("applicant = ?", applicant)
  27. }
  28. err = db.Count(&total).Error
  29. if err != nil {
  30. return
  31. }
  32. err = db.Order("id desc").Limit(limit).Offset(offset).Preload("User").Preload("Node").Preload("Process").Preload("Descriptions").Find(&projectProcesses).Error
  33. for i, projectProcess := range projectProcesses {
  34. var processNodes []ProcessNodes
  35. err = global.GVA_DB.Model(&ProcessNodes{}).Where("process_id = ?", projectProcess.Process.ID).Find(&processNodes).Error
  36. if err != nil {
  37. return nil, 0, err
  38. }
  39. var nodes []Node
  40. for _, node := range processNodes {
  41. var node1 Node
  42. err := global.GVA_DB.Model(&Node{}).Where("id = ?", node.NodeId).Preload("Approver").Find(&node1).Error
  43. if err != nil {
  44. return nil, 0, err
  45. }
  46. node1.Order = node.NodeOrder
  47. nodes = append(nodes, node1)
  48. }
  49. projectProcesses[i].Process.Nodes = nodes
  50. //获取当前节点所有信息
  51. var node Node
  52. err = global.GVA_DB.Model(&Node{}).Where("id = ?", projectProcess.CurrentNodeOrder).Preload("Approver").First(&node).Error
  53. projectProcesses[i].Node = node
  54. var processNode ProcessNodes
  55. err = global.GVA_DB.Model(&ProcessNodes{}).Where("process_id = ? and node_id = ?", projectProcess.Process.ID, node.ID).First(&processNode).Error
  56. projectProcesses[i].Node.Order = processNode.NodeOrder
  57. }
  58. return projectProcesses, total, err
  59. }
  60. func QueryProjectProcessList(limit, offset, applicant int) (projectProcesses []ProjectProcess, total int64, err error) {
  61. // 创建db
  62. db := global.GVA_DB.Model(&ProjectProcess{}).Joins("JOIN node ON project_process.current_node_order = node.id").Where("node.approver_id = ?", applicant)
  63. // 如果有条件搜索 下方会自动创建搜索语句
  64. err = db.Count(&total).Error
  65. if err != nil {
  66. return
  67. }
  68. err = db.Order("id desc").Limit(limit).Offset(offset).Preload("User").Preload("Node").Preload("Process").Preload("Descriptions").Find(&projectProcesses).Error
  69. for i, projectProcess := range projectProcesses {
  70. var processNodes []ProcessNodes
  71. err = global.GVA_DB.Model(&ProcessNodes{}).Where("process_id = ?", projectProcess.Process.ID).Find(&processNodes).Error
  72. if err != nil {
  73. return nil, 0, err
  74. }
  75. var nodes []Node
  76. for _, node := range processNodes {
  77. var node1 Node
  78. err := global.GVA_DB.Model(&Node{}).Where("id = ?", node.NodeId).Preload("Approver").Find(&node1).Error
  79. if err != nil {
  80. return nil, 0, err
  81. }
  82. node1.Order = node.NodeOrder
  83. nodes = append(nodes, node1)
  84. }
  85. projectProcesses[i].Process.Nodes = nodes
  86. //获取当前节点所有信息
  87. var node Node
  88. err = global.GVA_DB.Model(&Node{}).Where("id = ?", projectProcess.CurrentNodeOrder).Preload("Approver").First(&node).Error
  89. projectProcesses[i].Node = node
  90. var processNode ProcessNodes
  91. err = global.GVA_DB.Model(&ProcessNodes{}).Where("process_id = ? and node_id = ?", projectProcess.Process.ID, node.ID).First(&processNode).Error
  92. projectProcesses[i].Node.Order = processNode.NodeOrder
  93. }
  94. return projectProcesses, total, err
  95. }
  96. func QueryProjectProcessById(id int) (projectProcess ProjectProcess, err error) {
  97. err = global.GVA_DB.Where("id =?", id).Preload("User").Preload("Node").Preload("Process").Preload("Descriptions").First(&projectProcess).Error
  98. var processNodes []ProcessNodes
  99. err = global.GVA_DB.Model(&ProcessNodes{}).Where("process_id = ?", projectProcess.Process.ID).Find(&processNodes).Error
  100. if err != nil {
  101. return projectProcess, err
  102. }
  103. var nodes []Node
  104. for _, node := range processNodes {
  105. var node1 Node
  106. err := global.GVA_DB.Model(&Node{}).Where("id = ?", node.NodeId).Preload("Approver").Find(&node1).Error
  107. if err != nil {
  108. return projectProcess, err
  109. }
  110. node1.Order = node.NodeOrder
  111. nodes = append(nodes, node1)
  112. }
  113. projectProcess.Process.Nodes = nodes
  114. //获取当前节点所有信息
  115. var node Node
  116. err = global.GVA_DB.Model(&Node{}).Where("id = ?", projectProcess.CurrentNodeOrder).Preload("Approver").First(&node).Error
  117. projectProcess.Node = node
  118. var processNode ProcessNodes
  119. err = global.GVA_DB.Model(&ProcessNodes{}).Where("process_id = ? and node_id = ?", projectProcess.Process.ID, node.ID).First(&processNode).Error
  120. projectProcess.Node.Order = processNode.NodeOrder
  121. //当项目类型为立项时
  122. if projectProcess.ProjectType == "立项" {
  123. var project Project
  124. err = global.GVA_DB.Model(&Project{}).Where("id = ?", projectProcess.ProjectId).First(&project).Error
  125. if err != nil {
  126. return projectProcess, err
  127. }
  128. projectProcess.Code = project.Code
  129. }
  130. return projectProcess, err
  131. }
  132. func QueryProjectProcessByProcessApprovalId(id int) (projectProcesses []ProjectProcess, err error) {
  133. err = global.GVA_DB.Where("process_approval_id =?", id).Preload("User").Preload("Node").Preload("Process").Preload("Descriptions").Find(&projectProcesses).Error
  134. for i, projectProcess := range projectProcesses {
  135. var processNodes []ProcessNodes
  136. err = global.GVA_DB.Model(&ProcessNodes{}).Where("process_id = ?", projectProcess.Process.ID).Find(&processNodes).Error
  137. if err != nil {
  138. return projectProcesses, err
  139. }
  140. var nodes []Node
  141. for _, node := range processNodes {
  142. var node1 Node
  143. err := global.GVA_DB.Model(&Node{}).Where("id = ?", node.NodeId).Preload("Approver").Find(&node1).Error
  144. if err != nil {
  145. return projectProcesses, err
  146. }
  147. node1.Order = node.NodeOrder
  148. nodes = append(nodes, node1)
  149. }
  150. projectProcesses[i].Process.Nodes = nodes
  151. }
  152. return projectProcesses, err
  153. }
  154. func (pp ProjectProcess) CreateProjectProcess() error {
  155. return global.GVA_DB.Create(&pp).Error
  156. }
  157. func (pp ProjectProcess) UpdateProjectProcess() error {
  158. return global.GVA_DB.Where("id = ?", pp.ID).Updates(&pp).Error
  159. }
  160. func (pp ProjectProcess) DeleteProjectProcess() error {
  161. return global.GVA_DB.Unscoped().Delete(&pp).Error
  162. }