123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- package dao
- import (
- "server/dao/system"
- "server/global"
- )
- type ProjectProcess struct {
- global.GVA_MODEL
- ProjectProcessName string `json:"projectProcessName" form:"projectProcessName" gorm:"comment:项目审批名称"`
- Applicant int `json:"applicant" form:"applicant" gorm:"comment:申请人"`
- User system.SysUser `json:"user" form:"user" gorm:"foreignKey:Applicant;references:id;"`
- ProjectId int `json:"projectId" form:"projectId" gorm:"comment:项目id"`
- CurrentNodeOrder int `json:"currentNodeOrder" form:"currentNodeOrder" gorm:"comment:当前审批节点id"`
- Node Node `json:"node" form:"node" gorm:"foreignKey:CurrentNodeOrder;references:id;"`
- ProcessApprovalId int `json:"processApprovalId" form:"processApprovalId" gorm:"comment:当前审批流程id"`
- Process Process `json:"process" form:"process" gorm:"foreignKey:ProcessApprovalId;references:id"`
- ProjectType string `json:"projectType" form:"projectType" gorm:"comment:项目类型"`
- Descriptions []Description `json:"descriptions" form:"descriptions" gorm:"foreignKey:ProjectProcessId;"`
- State int `json:"state" form:"state" gorm:"comment:状态;default:0;"`
- Code string `json:"code" form:"code" gorm:"-"`
- IsBack bool `json:"isBack" form:"isBack" gorm:"default:false;comment:是否打回"`
- }
- func (ProjectProcess) TableName() string {
- return "project_process"
- }
- func QueryProjectApplicantList(limit, offset, applicant int) (projectProcesses []ProjectProcess, total int64, err error) {
- // 创建db
- db := global.GVA_DB.Model(&ProjectProcess{})
- // 如果有条件搜索 下方会自动创建搜索语句
- if applicant != 0 {
- db = db.Where("applicant = ?", applicant)
- }
- err = db.Count(&total).Error
- if err != nil {
- return
- }
- err = db.Order("id desc").Limit(limit).Offset(offset).Preload("User").Preload("Node").Preload("Process").Preload("Descriptions").Find(&projectProcesses).Error
- for i, projectProcess := range projectProcesses {
- var processNodes []ProcessNodes
- err = global.GVA_DB.Model(&ProcessNodes{}).Where("process_id = ?", projectProcess.Process.ID).Find(&processNodes).Error
- if err != nil {
- return nil, 0, err
- }
- var nodes []Node
- for _, node := range processNodes {
- var node1 Node
- err := global.GVA_DB.Model(&Node{}).Where("id = ?", node.NodeId).Preload("Approver").Find(&node1).Error
- if err != nil {
- return nil, 0, err
- }
- node1.Order = node.NodeOrder
- nodes = append(nodes, node1)
- }
- projectProcesses[i].Process.Nodes = nodes
- //获取当前节点所有信息
- var node Node
- err = global.GVA_DB.Model(&Node{}).Where("id = ?", projectProcess.CurrentNodeOrder).Preload("Approver").First(&node).Error
- projectProcesses[i].Node = node
- var processNode ProcessNodes
- err = global.GVA_DB.Model(&ProcessNodes{}).Where("process_id = ? and node_id = ?", projectProcess.Process.ID, node.ID).First(&processNode).Error
- projectProcesses[i].Node.Order = processNode.NodeOrder
- }
- return projectProcesses, total, err
- }
- func QueryProjectProcessList(limit, offset, applicant int) (projectProcesses []ProjectProcess, total int64, err error) {
- // 创建db
- db := global.GVA_DB.Model(&ProjectProcess{}).Joins("JOIN node ON project_process.current_node_order = node.id").Where("node.approver_id = ? AND project_process.is_back = ? AND project_process.state = ?", applicant, false, 0)
- // 如果有条件搜索 下方会自动创建搜索语句
- err = db.Count(&total).Error
- if err != nil {
- return
- }
- err = db.Order("id desc").Limit(limit).Offset(offset).Preload("User").Preload("Node").Preload("Process").Preload("Descriptions").Find(&projectProcesses).Error
- for i, projectProcess := range projectProcesses {
- var processNodes []ProcessNodes
- err = global.GVA_DB.Model(&ProcessNodes{}).Where("process_id = ?", projectProcess.Process.ID).Find(&processNodes).Error
- if err != nil {
- return nil, 0, err
- }
- var nodes []Node
- for _, node := range processNodes {
- var node1 Node
- err := global.GVA_DB.Model(&Node{}).Where("id = ?", node.NodeId).Preload("Approver").Find(&node1).Error
- if err != nil {
- return nil, 0, err
- }
- node1.Order = node.NodeOrder
- nodes = append(nodes, node1)
- }
- projectProcesses[i].Process.Nodes = nodes
- //获取当前节点所有信息
- var node Node
- err = global.GVA_DB.Model(&Node{}).Where("id = ?", projectProcess.CurrentNodeOrder).Preload("Approver").First(&node).Error
- projectProcesses[i].Node = node
- var processNode ProcessNodes
- err = global.GVA_DB.Model(&ProcessNodes{}).Where("process_id = ? and node_id = ?", projectProcess.Process.ID, node.ID).First(&processNode).Error
- projectProcesses[i].Node.Order = processNode.NodeOrder
- }
- return projectProcesses, total, err
- }
- func QueryProjectProcessById(id int) (projectProcess ProjectProcess, err error) {
- err = global.GVA_DB.Where("id =?", id).Preload("User").Preload("Node").Preload("Process").Preload("Descriptions").First(&projectProcess).Error
- var processNodes []ProcessNodes
- err = global.GVA_DB.Model(&ProcessNodes{}).Where("process_id = ?", projectProcess.Process.ID).Find(&processNodes).Error
- if err != nil {
- return projectProcess, err
- }
- var nodes []Node
- for _, node := range processNodes {
- var node1 Node
- err := global.GVA_DB.Model(&Node{}).Where("id = ?", node.NodeId).Preload("Approver").Find(&node1).Error
- if err != nil {
- return projectProcess, err
- }
- node1.Order = node.NodeOrder
- nodes = append(nodes, node1)
- }
- projectProcess.Process.Nodes = nodes
- //获取当前节点所有信息
- var node Node
- err = global.GVA_DB.Model(&Node{}).Where("id = ?", projectProcess.CurrentNodeOrder).Preload("Approver").First(&node).Error
- projectProcess.Node = node
- var processNode ProcessNodes
- err = global.GVA_DB.Model(&ProcessNodes{}).Where("process_id = ? and node_id = ?", projectProcess.Process.ID, node.ID).First(&processNode).Error
- projectProcess.Node.Order = processNode.NodeOrder
- //当项目类型为立项时
- if projectProcess.ProjectType == "立项" {
- var project Project
- err = global.GVA_DB.Model(&Project{}).Where("id = ?", projectProcess.ProjectId).First(&project).Error
- if err != nil {
- return projectProcess, err
- }
- projectProcess.Code = project.Code
- }
- return projectProcess, err
- }
- // QueryProjectProcessByProcessApprovalId 按流程审批 ID 查询项目流程
- func QueryProjectProcessByProcessApprovalId(id int) (projectProcesses []ProjectProcess, err error) {
- err = global.GVA_DB.Where("process_approval_id =?", id).Preload("User").Preload("Node").Preload("Process").Preload("Descriptions").Find(&projectProcesses).Error
- for i, projectProcess := range projectProcesses {
- var processNodes []ProcessNodes
- err = global.GVA_DB.Model(&ProcessNodes{}).Where("process_id = ?", projectProcess.Process.ID).Find(&processNodes).Error
- if err != nil {
- return projectProcesses, err
- }
- var nodes []Node
- for _, node := range processNodes {
- var node1 Node
- err := global.GVA_DB.Model(&Node{}).Where("id = ?", node.NodeId).Preload("Approver").Find(&node1).Error
- if err != nil {
- return projectProcesses, err
- }
- node1.Order = node.NodeOrder
- nodes = append(nodes, node1)
- }
- projectProcesses[i].Process.Nodes = nodes
- }
- return projectProcesses, err
- }
- func (pp ProjectProcess) CreateProjectProcess() error {
- return global.GVA_DB.Create(&pp).Error
- }
- func (pp ProjectProcess) UpdateProjectProcess() error {
- return global.GVA_DB.Where("id = ?", pp.ID).Updates(&pp).Error
- }
- // Replenished 补充完毕
- func Replenished(id int) error {
- process, err := QueryProjectProcessById(id)
- if err != nil {
- return err
- }
- err = Notice{
- Title: "审批补充",
- Content: process.ProjectProcessName + "已完成文件补充",
- UserId: process.Node.ApproverId,
- Type: process.ProjectType,
- }.CreateNotice()
- if err != nil {
- return err
- }
- return global.GVA_DB.Model(&ProjectProcess{}).Where("id = ?", id).Update("is_back", false).Error
- }
- func (pp ProjectProcess) DeleteProjectProcess() error {
- return global.GVA_DB.Unscoped().Delete(&pp).Error
- }
|