xu 6 månader sedan
förälder
incheckning
75ec75ac73

+ 6 - 4
server/api/v1/enter.go

@@ -3,15 +3,17 @@ package v1
 import (
 	"server/api/v1/admin"
 	"server/api/v1/example"
+	"server/api/v1/storehouse"
 	"server/api/v1/system"
 	"server/api/v1/workflow"
 )
 
 type ApiGroup struct {
-	SystemApiGroup   system.ApiGroup
-	ExampleApiGroup  example.ApiGroup
-	AdminApiGroup    admin.ApiGroup
-	WorkflowApiGroup workflow.ApiGroup
+	SystemApiGroup     system.ApiGroup
+	ExampleApiGroup    example.ApiGroup
+	AdminApiGroup      admin.ApiGroup
+	WorkflowApiGroup   workflow.ApiGroup
+	StorehouseApiGroup storehouse.ApiGroup
 }
 
 var ApiGroupApp = new(ApiGroup)

+ 94 - 0
server/api/v1/storehouse/commodity.go

@@ -0,0 +1,94 @@
+package storehouse
+
+import (
+	"github.com/gin-gonic/gin"
+	"server/dao"
+	"server/global"
+	"server/model/common/request"
+	"server/model/common/response"
+)
+
+type CommodityApi struct{}
+
+func (ca *CommodityApi) QueryAllCommodity(c *gin.Context) {
+	commodities, err := commodityService.QueryAllCommodity()
+	if err != nil {
+		response.FailWithMessage("查询失败", c)
+		global.GVA_LOG.Error("QueryAllCommodity ====== " + err.Error())
+		return
+	}
+	response.OkWithData(commodities, c)
+}
+
+func (ca *CommodityApi) QueryCommodityList(c *gin.Context) {
+	var info request.PageInfo
+	err := c.ShouldBindJSON(&info)
+	if err != nil {
+		response.FailWithMessage("参数解析失败", c)
+		global.GVA_LOG.Error("QueryCommodityList ====== " + err.Error())
+		return
+	}
+	list, total, err := commodityService.QueryCommodityList(info)
+	if err != nil {
+		response.FailWithMessage("查询失败", c)
+		global.GVA_LOG.Error("QueryCommodityList ====== " + err.Error())
+		return
+	}
+	response.OkWithDetailed(response.PageResult{
+		List:     list,
+		Total:    total,
+		Page:     info.Page,
+		PageSize: info.PageSize,
+	}, "获取成功", c)
+}
+
+func (ca *CommodityApi) CreateCommodity(c *gin.Context) {
+	var commodity dao.Commodity
+	err := c.ShouldBindJSON(&commodity)
+	if err != nil {
+		response.FailWithMessage("参数解析失败", c)
+		global.GVA_LOG.Error("CreateCommodity ====== " + err.Error())
+		return
+	}
+	err = commodityService.CreateCommodity(commodity)
+	if err != nil {
+		response.FailWithMessage("创建失败", c)
+		global.GVA_LOG.Error("CreateCommodity ====== " + err.Error())
+		return
+	}
+	response.OkWithMessage("创建成功", c)
+}
+
+func (ca *CommodityApi) UpdateCommodity(c *gin.Context) {
+	var commodity dao.Commodity
+	err := c.ShouldBindJSON(&commodity)
+	if err != nil {
+		response.FailWithMessage("参数解析失败", c)
+		global.GVA_LOG.Error("UpdateCommodity ====== " + err.Error())
+		return
+	}
+	err = commodityService.UpdateCommodity(commodity)
+	if err != nil {
+		response.FailWithMessage("更新失败", c)
+		global.GVA_LOG.Error("UpdateCommodity ====== " + err.Error())
+		return
+	}
+	response.OkWithMessage("更新成功", c)
+}
+
+func (ca *CommodityApi) DeleteCommodity(c *gin.Context) {
+	var commodity dao.Commodity
+	err := c.ShouldBindJSON(&commodity)
+	if err != nil {
+		response.FailWithMessage("参数解析失败", c)
+		global.GVA_LOG.Error("DeleteCommodity ====== " + err.Error())
+		return
+	}
+	err = commodityService.DeleteCommodity(commodity)
+	if err != nil {
+		response.FailWithMessage("删除失败", c)
+		global.GVA_LOG.Error("DeleteCommodity ====== " + err.Error())
+		return
+	}
+	response.OkWithMessage("删除成功", c)
+}

+ 71 - 0
server/api/v1/storehouse/commodityGenre.go

@@ -0,0 +1,71 @@
+package storehouse
+
+import (
+	"github.com/gin-gonic/gin"
+	"server/dao"
+	"server/global"
+	"server/model/common/response"
+)
+
+type CommodityGenreApi struct{}
+
+func (cga *CommodityGenreApi) QueryAllCommodityGenre(c *gin.Context) {
+	commodityGenres, err := commodityGenreService.QueryAllCommodityGenre()
+	if err != nil {
+		response.FailWithMessage("查询失败", c)
+		global.GVA_LOG.Error("QueryAllCommodityGenre ======= " + err.Error())
+		return
+	}
+	response.OkWithData(commodityGenres, c)
+}
+
+func (cga *CommodityGenreApi) CreateCommodityGenre(c *gin.Context) {
+	var commodityGenre dao.CommodityGenre
+	err := c.ShouldBindJSON(&commodityGenre)
+	if err != nil {
+		response.FailWithMessage("参数解析失败", c)
+		global.GVA_LOG.Error("CreateCommodityGenre ======= " + err.Error())
+		return
+	}
+	err = commodityGenreService.CreateCommodityGenre(commodityGenre)
+	if err != nil {
+		response.FailWithMessage("创建失败", c)
+		global.GVA_LOG.Error("CreateCommodityGenre ======= " + err.Error())
+		return
+	}
+	response.OkWithMessage("创建成功", c)
+}
+
+func (cga *CommodityGenreApi) UpdateCommodityGenre(c *gin.Context) {
+	var commodityGenre dao.CommodityGenre
+	err := c.ShouldBindJSON(&commodityGenre)
+	if err != nil {
+		response.FailWithMessage("参数解析失败", c)
+		global.GVA_LOG.Error("UpdateCommodityGenre ======= " + err.Error())
+		return
+	}
+	err = commodityGenreService.UpdateCommodityGenre(commodityGenre)
+	if err != nil {
+		response.FailWithMessage("更新失败", c)
+		global.GVA_LOG.Error("UpdateCommodityGenre ======= " + err.Error())
+		return
+	}
+	response.OkWithMessage("更新成功", c)
+}
+
+func (cga *CommodityGenreApi) DeleteCommodityGenre(c *gin.Context) {
+	var commodityGenre dao.CommodityGenre
+	err := c.ShouldBindJSON(&commodityGenre)
+	if err != nil {
+		response.FailWithMessage("参数解析失败", c)
+		global.GVA_LOG.Error("DeleteCommodityGenre ======= " + err.Error())
+		return
+	}
+	err = commodityGenreService.DeleteCommodityGenre(commodityGenre)
+	if err != nil {
+		response.FailWithMessage("删除失败", c)
+		global.GVA_LOG.Error("DeleteCommodityGenre ======= " + err.Error())
+		return
+	}
+	response.OkWithMessage("删除成功", c)
+}

+ 17 - 0
server/api/v1/storehouse/enter.go

@@ -0,0 +1,17 @@
+package storehouse
+
+import "server/service"
+
+type ApiGroup struct {
+	CommodityApi
+	CommodityGenreApi
+	SupplierApi
+	WarehouseApi
+}
+
+var (
+	commodityService      = service.ServiceGroupApp.StorehouseServiceGroup.CommodityService
+	commodityGenreService = service.ServiceGroupApp.StorehouseServiceGroup.CommodityGenreService
+	supplierService       = service.ServiceGroupApp.StorehouseServiceGroup.SupplierService
+	warehouseService      = service.ServiceGroupApp.StorehouseServiceGroup.WarehouseService
+)

+ 94 - 0
server/api/v1/storehouse/supplier.go

@@ -0,0 +1,94 @@
+package storehouse
+
+import (
+	"github.com/gin-gonic/gin"
+	"server/dao"
+	"server/global"
+	"server/model/common/request"
+	"server/model/common/response"
+)
+
+type SupplierApi struct{}
+
+func (sa *SupplierApi) QueryAllSupplier(c *gin.Context) {
+	suppliers, err := supplierService.QueryAllSupplier()
+	if err != nil {
+		response.FailWithMessage("查询失败", c)
+		global.GVA_LOG.Error("QueryAllSupplier ====== " + err.Error())
+		return
+	}
+	response.OkWithData(suppliers, c)
+}
+
+func (sa *SupplierApi) QuerySupplierList(c *gin.Context) {
+	var info request.PageInfo
+	err := c.ShouldBindJSON(&info)
+	if err != nil {
+		response.FailWithMessage("参数解析失败", c)
+		global.GVA_LOG.Error("QuerySupplierList ====== " + err.Error())
+		return
+	}
+	list, total, err := supplierService.QuerySupplierList(info)
+	if err != nil {
+		response.FailWithMessage("查询失败", c)
+		global.GVA_LOG.Error("QuerySupplierList ====== " + err.Error())
+		return
+	}
+	response.OkWithDetailed(response.PageResult{
+		List:     list,
+		Total:    total,
+		Page:     info.Page,
+		PageSize: info.PageSize,
+	}, "获取成功", c)
+}
+
+func (sa *SupplierApi) CreateSupplier(c *gin.Context) {
+	var supplier dao.Supplier
+	err := c.ShouldBindJSON(&supplier)
+	if err != nil {
+		response.FailWithMessage("参数解析失败", c)
+		global.GVA_LOG.Error("CreateSupplier ====== " + err.Error())
+		return
+	}
+	err = supplierService.CreateSupplier(supplier)
+	if err != nil {
+		response.FailWithMessage("创建失败", c)
+		global.GVA_LOG.Error("CreateSupplier ====== " + err.Error())
+		return
+	}
+	response.OkWithMessage("创建成功", c)
+}
+
+func (sa *SupplierApi) UpdateSupplier(c *gin.Context) {
+	var supplier dao.Supplier
+	err := c.ShouldBindJSON(&supplier)
+	if err != nil {
+		response.FailWithMessage("参数解析失败", c)
+		global.GVA_LOG.Error("UpdateSupplier ====== " + err.Error())
+		return
+	}
+	err = supplierService.UpdateSupplier(supplier)
+	if err != nil {
+		response.FailWithMessage("更新失败", c)
+		global.GVA_LOG.Error("UpdateSupplier ====== " + err.Error())
+		return
+	}
+	response.OkWithMessage("更新成功", c)
+}
+
+func (sa *SupplierApi) DeleteSupplier(c *gin.Context) {
+	var supplier dao.Supplier
+	err := c.ShouldBindJSON(&supplier)
+	if err != nil {
+		response.FailWithMessage("参数解析失败", c)
+		global.GVA_LOG.Error("DeleteSupplier ====== " + err.Error())
+		return
+	}
+	err = supplierService.DeleteSupplier(supplier)
+	if err != nil {
+		response.FailWithMessage("删除失败", c)
+		global.GVA_LOG.Error("DeleteSupplier ====== " + err.Error())
+		return
+	}
+	response.OkWithMessage("删除成功", c)
+}

+ 94 - 0
server/api/v1/storehouse/warehouse.go

@@ -0,0 +1,94 @@
+package storehouse
+
+import (
+	"github.com/gin-gonic/gin"
+	"server/dao"
+	"server/global"
+	"server/model/common/request"
+	"server/model/common/response"
+)
+
+type WarehouseApi struct{}
+
+func (wa *WarehouseApi) QueryAllWarehouse(c *gin.Context) {
+	warehouses, err := warehouseService.QueryAllWarehouse()
+	if err != nil {
+		response.FailWithMessage("查询失败", c)
+		global.GVA_LOG.Error("QueryAllWarehouse ====== " + err.Error())
+		return
+	}
+	response.OkWithData(warehouses, c)
+}
+
+func (wa *WarehouseApi) QueryWarehouseList(c *gin.Context) {
+	var info request.PageInfo
+	err := c.ShouldBindJSON(&info)
+	if err != nil {
+		response.FailWithMessage("参数解析失败", c)
+		global.GVA_LOG.Error("QueryWarehouseList ====== " + err.Error())
+		return
+	}
+	list, total, err := warehouseService.QueryWarehouseList(info)
+	if err != nil {
+		response.FailWithMessage("查询失败", c)
+		global.GVA_LOG.Error("QueryWarehouseList ====== " + err.Error())
+		return
+	}
+	response.OkWithDetailed(response.PageResult{
+		List:     list,
+		Total:    total,
+		Page:     info.Page,
+		PageSize: info.PageSize,
+	}, "获取成功", c)
+}
+
+func (wa *WarehouseApi) CreateWarehouse(c *gin.Context) {
+	var warehouse dao.Warehouse
+	err := c.ShouldBindJSON(&warehouse)
+	if err != nil {
+		response.FailWithMessage("参数解析失败", c)
+		global.GVA_LOG.Error("CreateWarehouse ====== " + err.Error())
+		return
+	}
+	err = warehouseService.CreateWarehouse(warehouse)
+	if err != nil {
+		response.FailWithMessage("创建失败", c)
+		global.GVA_LOG.Error("CreateWarehouse ====== " + err.Error())
+		return
+	}
+	response.OkWithMessage("创建成功", c)
+}
+
+func (wa *WarehouseApi) UpdateWarehouse(c *gin.Context) {
+	var warehouse dao.Warehouse
+	err := c.ShouldBindJSON(&warehouse)
+	if err != nil {
+		response.FailWithMessage("参数解析失败", c)
+		global.GVA_LOG.Error("UpdateWarehouse ====== " + err.Error())
+		return
+	}
+	err = warehouseService.UpdateWarehouse(warehouse)
+	if err != nil {
+		response.FailWithMessage("更新失败", c)
+		global.GVA_LOG.Error("UpdateWarehouse ====== " + err.Error())
+		return
+	}
+	response.OkWithMessage("更新成功", c)
+}
+
+func (wa *WarehouseApi) DeleteWarehouse(c *gin.Context) {
+	var warehouse dao.Warehouse
+	err := c.ShouldBindJSON(&warehouse)
+	if err != nil {
+		response.FailWithMessage("参数解析失败", c)
+		global.GVA_LOG.Error("DeleteWarehouse ====== " + err.Error())
+		return
+	}
+	err = warehouseService.DeleteWarehouse(warehouse)
+	if err != nil {
+		response.FailWithMessage("删除失败", c)
+		global.GVA_LOG.Error("DeleteWarehouse ====== " + err.Error())
+		return
+	}
+	response.OkWithMessage("删除成功", c)
+}

+ 17 - 0
server/api/v1/workflow/process.go

@@ -76,6 +76,23 @@ func (pa *ProcessApi) UpdateProcess(c *gin.Context) {
 	response.OkWithMessage("更新成功", c)
 }
 
+func (pa *ProcessApi) SwitchProcess(c *gin.Context) {
+	var process dao.Process
+	err := c.ShouldBindJSON(&process)
+	if err != nil {
+		response.FailWithMessage("参数解析失败", c)
+		global.GVA_LOG.Error("SwitchProcess ====== " + err.Error())
+		return
+	}
+	err = processService.SwitchProcess(process)
+	if err != nil {
+		response.FailWithMessage("操作失败", c)
+		global.GVA_LOG.Error("SwitchProcess ====== " + err.Error())
+		return
+	}
+	response.OkWithMessage("操作成功", c)
+}
+
 func (pa *ProcessApi) DeleteProcess(c *gin.Context) {
 	var process dao.Process
 	err := c.ShouldBindJSON(&process)

+ 18 - 0
server/api/v1/workflow/project_process.go

@@ -6,6 +6,7 @@ import (
 	"server/global"
 	"server/model/common/request"
 	"server/model/common/response"
+	"strconv"
 )
 
 type ProjectProcessApi struct{}
@@ -54,6 +55,23 @@ func (ppa *ProjectProcessApi) QueryProjectProcessList(c *gin.Context) {
 	}, "获取成功", c)
 }
 
+func (ppa *ProjectProcessApi) QueryProjectProcessById(c *gin.Context) {
+	id := c.Query("id")
+	projectProcessId, err := strconv.Atoi(id)
+	if err != nil {
+		response.FailWithMessage("参数错误", c)
+		global.GVA_LOG.Error("QueryProjectProcessById ====== " + err.Error())
+		return
+	}
+	projectProcess, err := projectProcessService.QueryProjectProcessById(projectProcessId)
+	if err != nil {
+		response.FailWithMessage("查询失败", c)
+		global.GVA_LOG.Error("QueryProjectProcessById ====== " + err.Error())
+		return
+	}
+	response.OkWithData(projectProcess, c)
+}
+
 func (ppa *ProjectProcessApi) CreateProjectProcess(c *gin.Context) {
 	var pp dao.ProjectProcess
 	err := c.ShouldBindJSON(&pp)

+ 4 - 0
server/dao/description.go

@@ -25,6 +25,10 @@ func (d Description) CreateDescription() error {
 	return global.GVA_DB.Create(&d).Error
 }
 
+func (d Description) Correcting() {
+
+}
+
 func (d Description) UpdateDescription() error {
 	return global.GVA_DB.Where("id = ?", d.ID).Updates(&d).Error
 }

+ 1 - 0
server/dao/node.go

@@ -11,6 +11,7 @@ type Node struct {
 	Approver        SysUser    `json:"approver" form:"approver" gorm:"foreignKey:ApproverId;references:id;"`
 	NodeDescription string     `json:"nodeDescription" form:"nodeDescription" gorm:"comment:节点描述"`
 	Processes       []*Process `json:"processes" form:"processes" gorm:"many2many:process_nodes;"`
+	Order           int        `json:"order" form:"order" gorm:"-"`
 }
 
 func (Node) TableName() string {

+ 55 - 2
server/dao/process.go

@@ -10,6 +10,7 @@ type Process struct {
 	ProcessName    string `json:"processName" form:"processName" gorm:"comment:审批流程名称"`
 	ProcessContent string `json:"processContent" form:"processContent" gorm:"审批流程内容"`
 	ProcessType    string `json:"processType" form:"processType" gorm:"审批流程类型"`
+	IsUse          bool   `json:"isUse" form:"isUse" gorm:"comment:是否使用"`
 	Nodes          []Node `json:"nodes" form:"nodes" gorm:"many2many:process_nodes;"`
 }
 
@@ -31,9 +32,35 @@ func QueryProcessList(limit, offset int) (processes []Process, total int64, err
 		return
 	}
 	err = db.Order("id desc").Limit(limit).Offset(offset).Find(&processes).Error
+
+	for i, process := range processes {
+		var processNodes []ProcessNodes
+		err := global.GVA_DB.Model(&ProcessNodes{}).Where("process_id = ?", 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)
+		}
+		processes[i].Nodes = nodes
+	}
+
 	return processes, total, err
 }
 
+// QueryProcessByType 按类型查询 已使用的流程
+func QueryProcessByType(genre string) (process Process, err error) {
+	err = global.GVA_DB.Model(&Process{}).Where("process_type = ? AND is_use = 1", genre).First(&process).Error
+	return process, err
+}
+
 func QueryProcessById(id int) (process Process, err error) {
 	err = global.GVA_DB.Model(&Process{}).Where("id = ?", id).Find(&process).Error
 	return process, err
@@ -66,6 +93,9 @@ func UpdateProcess(process Process, nodes []ProcessNodes) error {
 		if txErr != nil {
 			return txErr
 		}
+		for i, _ := range nodes {
+			nodes[i].ProcessId = int(process.ID)
+		}
 		txErr = tx.Model(&ProcessNodes{}).Create(&nodes).Error
 		if txErr != nil {
 			return txErr
@@ -74,7 +104,30 @@ func UpdateProcess(process Process, nodes []ProcessNodes) error {
 	})
 }
 
+func SwitchProcess(process Process) error {
+	return global.GVA_DB.Transaction(func(tx *gorm.DB) error {
+		txErr := tx.Model(&Process{}).Where("process_type = ?", process.ProcessType).Update("is_use", false).Error
+		if txErr != nil {
+			return txErr
+		}
+		txErr = tx.Model(&process).Update("is_use", process.IsUse).Error
+		if txErr != nil {
+			return txErr
+		}
+		return nil
+	})
+}
+
 func (p Process) DeleteProcess() error {
-	err := global.GVA_DB.Unscoped().Delete(&p).Error
-	return err
+	return global.GVA_DB.Transaction(func(tx *gorm.DB) error {
+		txErr := tx.Unscoped().Delete(&p).Error
+		if txErr != nil {
+			return txErr
+		}
+		txErr = tx.Unscoped().Model(&ProcessNodes{}).Where("process_id = ?", p.ID).Delete(&ProcessNodes{}).Error
+		if txErr != nil {
+			return txErr
+		}
+		return nil
+	})
 }

+ 46 - 1
server/dao/project.go

@@ -1,6 +1,7 @@
 package dao
 
 import (
+	"fmt"
 	"github.com/shopspring/decimal"
 	"gorm.io/gorm"
 	"server/global"
@@ -37,6 +38,7 @@ type Project struct {
 	ReimbursementTotal   int64                 `json:"reimbursementTotal" form:"reimbursementTotal" gorm:"-"`
 	ProjectFee           []ProjectFee          `json:"projectFee" form:"project" gorm:"-"`
 	ProjectFeeTotal      int64                 `json:"projectFeeTotal" form:"projectFeeTotal" gorm:"-"`
+	IsApprove            bool                  `json:"isApprove" form:"isApprove" gorm:"comment:是否审批;default:0"`
 }
 
 func (Project) TableName() string {
@@ -96,11 +98,37 @@ func QueryAllProject() (projects []Project, err error) {
 // CreateProject 新增项目
 func (p Project) CreateProject() error {
 	return global.GVA_DB.Transaction(func(tx *gorm.DB) error {
-		txErr := tx.Model(&Project{}).Create(&p).Error
+		var process Process
+		txErr := global.GVA_DB.Model(&Process{}).Where("process_type = ? AND is_use = 1", "立项").Find(&process).Error
 		if txErr != nil {
 			return txErr
 		}
 
+		var processNodes []ProcessNodes
+		txErr = global.GVA_DB.Model(&ProcessNodes{}).Where("process_id = ?", process.ID).Find(&processNodes).Error
+		if txErr != nil {
+			return txErr
+		}
+		var nodes []Node
+		for _, node := range processNodes {
+			var node1 Node
+			txErr := global.GVA_DB.Model(&Node{}).Where("id = ?", node.NodeId).Preload("Approver").Find(&node1).Error
+			if txErr != nil {
+				return txErr
+			}
+			node1.Order = node.NodeOrder
+			nodes = append(nodes, node1)
+		}
+		process.Nodes = nodes
+
+		if process.ID == 0 {
+			p.IsApprove = true
+		}
+
+		txErr = tx.Model(&Project{}).Create(&p).Error
+		if txErr != nil {
+			return txErr
+		}
 		for _, file := range p.Files {
 			var isFile ProjectFile
 			tx.Model(&ProjectFile{}).Where("project_code = ? AND name = ? AND genre = ?", file.ProjectCode, file.Name, file.Genre).First(&isFile)
@@ -116,6 +144,23 @@ func (p Project) CreateProject() error {
 				}
 			}
 		}
+		fmt.Println(process.Nodes)
+		// 查询是否有使用的流程
+		if process.ID != 0 {
+			projectProcess := ProjectProcess{
+				ProjectProcessName: p.Name + "审批",
+				Applicant:          p.SecondPrincipal,
+				ProjectId:          int(p.ID),
+				CurrentNodeOrder:   int(process.Nodes[0].ID),
+				ProcessApprovalId:  int(process.ID),
+				ProjectType:        "立项",
+			}
+			txErr := projectProcess.CreateProjectProcess()
+			if txErr != nil {
+				return txErr
+			}
+		}
+
 		return txErr
 	})
 }

+ 8 - 0
server/dao/project_process.go

@@ -48,6 +48,14 @@ func QueryProjectProcessList(limit, offset, applicant int) (projectProcesses []P
 	return projectProcesses, total, err
 }
 
+func QueryProjectProcessById(id int) (projectProcess ProjectProcess, err error) {
+	return projectProcess, global.GVA_DB.Where("id =?", id).Preload("User").Preload("Node").Preload("Process").Preload("Descriptions").First(&projectProcess).Error
+}
+
+func QueryProjectProcessByProcessApprovalId(id int) (projectProcess []ProjectProcess, err error) {
+	return projectProcess, global.GVA_DB.Where("process_approval_id =?", id).Preload("User").Preload("Node").Preload("Process").Preload("Descriptions").Find(&projectProcess).Error
+}
+
 func (pp ProjectProcess) CreateProjectProcess() error {
 	return global.GVA_DB.Create(&pp).Error
 }

+ 3 - 3
server/router/workflow/description.go

@@ -14,9 +14,9 @@ func (s *DescriptionRouter) InitDescriptionRouter(Router *gin.RouterGroup) {
 
 	descriptionApi := v1.ApiGroupApp.WorkflowApiGroup.DescriptionApi
 	{
-		descriptionRouter.POST("createApprover", descriptionApi.CreateDescription)
-		descriptionRouter.PUT("updateApprover", descriptionApi.UpdateDescription)
-		descriptionRouter.DELETE("deleteApprover", descriptionApi.DeleteDescription)
+		descriptionRouter.POST("createDescription", descriptionApi.CreateDescription)
+		descriptionRouter.PUT("updateDescription", descriptionApi.UpdateDescription)
+		descriptionRouter.DELETE("deleteDescription", descriptionApi.DeleteDescription)
 	}
 	{
 		descriptionRouterWithoutRecord.GET("queryDescriptionByProjectProcessId", descriptionApi.QueryDescriptionByProjectProcessId)

+ 1 - 0
server/router/workflow/process.go

@@ -16,6 +16,7 @@ func (s *ProcessRouter) InitProcessRouter(Router *gin.RouterGroup) {
 	{
 		processRouter.POST("createProcess", processApi.CreateProcess)
 		processRouter.PUT("updateProcess", processApi.UpdateProcess)
+		processRouter.POST("switchProcess", processApi.SwitchProcess)
 		processRouter.DELETE("deleteProcess", processApi.DeleteProcess)
 	}
 	{

+ 1 - 0
server/router/workflow/projectProcess.go

@@ -21,5 +21,6 @@ func (s *ProjectProcessRouter) InitProjectProcessRouter(Router *gin.RouterGroup)
 	{
 		projectProcessRouterWithoutRecord.POST("queryProjectApplicantList", projectProcessApi.QueryProjectApplicantList)
 		projectProcessRouterWithoutRecord.GET("queryProjectProcessList", projectProcessApi.QueryProjectProcessList)
+		projectProcessRouterWithoutRecord.GET("queryProjectProcessById", projectProcessApi.QueryProjectProcessById)
 	}
 }

+ 6 - 4
server/service/enter.go

@@ -3,15 +3,17 @@ package service
 import (
 	"server/service/admin"
 	"server/service/example"
+	"server/service/storehouse"
 	"server/service/system"
 	"server/service/workflow"
 )
 
 type ServiceGroup struct {
-	SystemServiceGroup   system.ServiceGroup
-	ExampleServiceGroup  example.ServiceGroup
-	AdminServiceGroup    admin.ServiceGroup
-	WorkflowServiceGroup workflow.ServiceGroup
+	SystemServiceGroup     system.ServiceGroup
+	ExampleServiceGroup    example.ServiceGroup
+	AdminServiceGroup      admin.ServiceGroup
+	WorkflowServiceGroup   workflow.ServiceGroup
+	StorehouseServiceGroup storehouse.ServiceGroup
 }
 
 var ServiceGroupApp = new(ServiceGroup)

+ 1 - 0
server/service/storehouse/enter.go

@@ -4,4 +4,5 @@ type ServiceGroup struct {
 	CommodityService
 	SupplierService
 	CommodityGenreService
+	WarehouseService
 }

+ 13 - 0
server/service/workflow/process.go

@@ -1,6 +1,7 @@
 package workflow
 
 import (
+	"errors"
 	"server/dao"
 	"server/model/common/request"
 )
@@ -26,6 +27,18 @@ func (ps *ProcessService) UpdateProcess(process request.CreateProcess) error {
 	return dao.UpdateProcess(process.Process, process.ProcessNodes)
 }
 
+func (ps *ProcessService) SwitchProcess(process dao.Process) error {
+	return dao.SwitchProcess(process)
+}
+
 func (ps *ProcessService) DeleteProcess(process dao.Process) error {
+	projectProcess, err := dao.QueryProjectProcessByProcessApprovalId(int(process.ID))
+	if err != nil {
+		return err
+	}
+	if len(projectProcess) > 0 {
+		return errors.New("该审批流程已被使用")
+	}
+
 	return process.DeleteProcess()
 }

+ 4 - 0
server/service/workflow/project_process.go

@@ -21,6 +21,10 @@ func (pps *ProjectProcessService) QueryProjectProcessList(info request.SearchPro
 	return projectProcesses, total, err
 }
 
+func (pps *ProjectProcessService) QueryProjectProcessById(id int) (dao.ProjectProcess, error) {
+	return dao.QueryProjectProcessById(id)
+}
+
 func (pps *ProjectProcessService) CreateProjectProcess(process dao.ProjectProcess) error {
 	return process.CreateProjectProcess()
 }