| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- package dao
- import (
- "server/global"
- )
- type Description struct {
- global.GVA_MODEL
- ProjectProcessId int `json:"projectProcessId" form:"projectProcessId" gorm:"comment:项目审批id"`
- ApprovalOpinion string `json:"approvalOpinion" form:"approvalOpinion" gorm:"comment:审批意见"`
- NodeId int `json:"nodeId" form:"nodeId" gorm:"comment:节点id"`
- Node Node `json:"node" form:"node" gorm:"foreignKey:NodeId;references:id;"`
- ApprovalTime string `json:"approvalTime" form:"approvalTime" gorm:"comment:审批时间"`
- OptionResult string `json:"optionResult" form:"optionResult" gorm:"comment:操作结果"`
- }
- func (Description) TableName() string {
- return "description"
- }
- func QueryDescriptionByProjectProcessId(projectProcessId int) (descriptions []Description, err error) {
- err = global.GVA_DB.Model(&Description{}).Where("project_process_id=?", projectProcessId).Find(&descriptions).Error
- return descriptions, err
- }
- func QueryDescriptionById(id int) (description Description, err error) {
- err = global.GVA_DB.Model(&Description{}).Where("id =?", id).First(&description).Error
- return description, err
- }
- func (d Description) CreateDescription() error {
- return global.GVA_DB.Create(&d).Error
- }
- func (d Description) UpdateDescription() error {
- return global.GVA_DB.Where("id = ?", d.ID).Updates(&d).Error
- }
- func (d Description) DeleteDescription() error {
- return global.GVA_DB.Unscoped().Delete(&d).Error
- }
- func ProcessOperate(projectProcess ProjectProcess, description Description) (err error) {
- //当前节点
- var currentNode Node
- //下个节点
- var lastNode Node
- for _, node := range projectProcess.Process.Nodes {
- if node.ID == projectProcess.Node.ID {
- currentNode = node
- }
- if node.Order == currentNode.Order+1 {
- lastNode = node
- }
- }
- // 当是最后一步时进行通过的操作
- if lastNode.Order == len(projectProcess.Process.Nodes) && description.ApprovalOpinion == "通过" {
- // 审批通过后,修改所属项目流程的状态
- err = global.GVA_DB.Model(&projectProcess).Update("state", 1).Error
- if err != nil {
- return err
- }
- // 审批通过后,修改所属项目的状态
- err = global.GVA_DB.Model(&Project{}).Where("id = ?", projectProcess.ProjectId).Update("is_approve", 1).Error
- if err != nil {
- return err
- }
- //流程记录保存
- err = description.CreateDescription()
- if err != nil {
- return err
- }
- return err
- }
- // 当是最后一步时进行打回的操作
- if lastNode.Order == len(projectProcess.Process.Nodes) && description.ApprovalOpinion == "打回" {
- //流程记录保存
- err = description.CreateDescription()
- if err != nil {
- return err
- }
- return err
- }
- // 当是最后一步时进行拒绝的操作
- if lastNode.Order == len(projectProcess.Process.Nodes) && description.ApprovalOpinion == "拒绝" {
- // 审批通过后,修改所属项目流程的状态
- err = global.GVA_DB.Model(&projectProcess).Update("state", 2).Error
- if err != nil {
- return err
- }
- //流程记录保存
- err = description.CreateDescription()
- if err != nil {
- return err
- }
- return err
- }
- if currentNode.Order == lastNode.Order+1 && description.ApprovalOpinion == "通过" {
- // 节点通过后,修改所属项目流程的当前节点为下个节点
- err = global.GVA_DB.Model(&projectProcess).Update("current_node_order", currentNode.ID).Error
- if err != nil {
- return err
- }
- //流程记录保存
- err = description.CreateDescription()
- if err != nil {
- return err
- }
- return err
- }
- if currentNode.Order == lastNode.Order && description.ApprovalOpinion == "拒绝" {
- // 审批通过后,修改所属项目流程的状态
- err = global.GVA_DB.Model(&projectProcess).Update("state", 2).Error
- if err != nil {
- return err
- }
- // 审批通过后,修改所属项目的状态
- err = global.GVA_DB.Model(&Project{}).Where("id = ?", projectProcess.ProjectId).Update("is_approve", 1).Error
- if err != nil {
- return err
- }
- //流程记录保存
- err = description.CreateDescription()
- if err != nil {
- return err
- }
- return err
- }
- return err
- }
|