Files
zmkgC/internal/app/system/controller/project_schedule.go
2025-07-07 20:11:59 +08:00

122 lines
4.4 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// ==========================================================================
// GFast自动生成controller操作代码。
// 生成日期2024-03-13 18:17:32
// 生成路径: internal/app/system/controller/project_schedule.go
// 生成人gfast
// desc:项目排期
// company:云南奇讯科技有限公司
// ==========================================================================
package controller
import (
"context"
"github.com/gogf/gf/v2/frame/g"
"github.com/tiger1103/gfast/v3/api/v1/system"
"github.com/tiger1103/gfast/v3/internal/app/system/dao"
"github.com/tiger1103/gfast/v3/internal/app/system/model/do"
"github.com/tiger1103/gfast/v3/internal/app/system/service"
"github.com/tiger1103/gfast/v3/library/liberr"
)
type projectScheduleController struct {
BaseController
}
var ProjectSchedule = new(projectScheduleController)
// List 列表
func (c *projectScheduleController) List(ctx context.Context, req *system.ProjectScheduleSearchReq) (res *system.ProjectScheduleSearchRes, err error) {
res, err = service.ProjectSchedule().List(ctx, req)
return
}
// Get 获取项目排期
func (c *projectScheduleController) Get(ctx context.Context, req *system.ProjectScheduleGetReq) (res *system.ProjectScheduleGetRes, err error) {
res = new(system.ProjectScheduleGetRes)
res.ProjectScheduleInfoRes, err = service.ProjectSchedule().GetById(ctx, req.Id)
return
}
// Add 添加项目排期
func (c *projectScheduleController) Add(ctx context.Context, req *system.ProjectScheduleAddReq) (res *system.ProjectScheduleAddRes, err error) {
err = service.ProjectSchedule().Add(ctx, req)
return
}
// Edit 修改项目排期
func (c *projectScheduleController) Edit(ctx context.Context, req *system.ProjectScheduleEditReq) (res *system.ProjectScheduleEditRes, err error) {
err = service.ProjectSchedule().Edit(ctx, req)
return
}
// Delete 删除项目排期
func (c *projectScheduleController) Delete(ctx context.Context, req *system.ProjectScheduleDeleteReq) (res *system.ProjectScheduleDeleteRes, err error) {
err = service.ProjectSchedule().Delete(ctx, req.Ids)
return
}
// 添加一个计划
func (s *projectScheduleController) AddSchedule(ctx context.Context, req *system.ProjectScheduleAddPlanReq) (res *system.ProjectScheduleAddPlanRes, err error) {
err = g.Try(ctx, func(ctx context.Context) {
if req.Types == 1 {
// 如果添加计划时,发现父级的 type ==0 的数据不存在,则将其父项目的开始时间修改为,第一个子任务的开始时间
// 查询父级的 type == 0 的数据
parentData, err := dao.ProjectSchedule.Ctx(ctx).Where(dao.ProjectSchedule.Columns().ParentId, req.ConstructionId).Where(dao.ProjectSchedule.Columns().Types, 0).One()
liberr.ErrIsNil(ctx, err, "查询失败")
if parentData == nil {
// 如果父级的 type == 0 的数据不存在,则添加一条 parent_id = req.ConstructionId, types = 0 的数据
_, err = dao.ProjectSchedule.Ctx(ctx).Insert(do.ProjectSchedule{
ParentId: req.ConstructionId,
StartDate: req.StartDate,
EndDate: req.EndDate,
Name: req.Name,
PlaneNum: req.PlaneNum,
Types: 0,
})
liberr.ErrIsNil(ctx, err, "更新失败")
}
// 插入一条 type = 1 的数据
_, err = dao.ProjectSchedule.Ctx(ctx).Insert(do.ProjectSchedule{
ParentId: req.ConstructionId,
StartDate: req.StartDate,
EndDate: req.EndDate,
Name: req.Name,
PlaneNum: req.PlaneNum,
Types: 1,
})
liberr.ErrIsNil(ctx, err, "更新失败")
return
}
// 如果数据不存在,则添加
count, err := dao.ProjectSchedule.Ctx(ctx).Where(dao.ProjectSchedule.Columns().ParentId, req.ConstructionId).Count()
liberr.ErrIsNil(ctx, err, "查询失败")
if count == 0 {
_, err = dao.ProjectSchedule.Ctx(ctx).Insert(do.ProjectSchedule{
ParentId: req.ConstructionId,
StartDate: req.StartDate,
EndDate: req.EndDate,
Name: req.Name,
PlaneNum: req.PlaneNum,
Types: req.Types,
})
liberr.ErrIsNil(ctx, err, "添加失败")
} else {
// 如果数据存在,则更新
_, err = dao.ProjectSchedule.Ctx(ctx).Where(dao.ProjectSchedule.Columns().ParentId, req.ConstructionId).Update(do.ProjectSchedule{
ParentId: req.ConstructionId,
StartDate: req.StartDate,
EndDate: req.EndDate,
Name: req.Name,
PlaneNum: req.PlaneNum,
Types: req.Types,
})
liberr.ErrIsNil(ctx, err, "更新失败")
}
})
return
}