Files
zmkgC/test/gannt_test.go
2025-07-07 20:11:59 +08:00

178 lines
4.5 KiB
Go

package test
import (
"context"
"encoding/json"
"fmt"
"testing"
_ "github.com/gogf/gf/contrib/drivers/mysql/v2"
"github.com/gogf/gf/v2/database/gdb"
"github.com/gogf/gf/v2/frame/g"
"github.com/tiger1103/gfast/v3/internal/app/system/dao"
"github.com/tiger1103/gfast/v3/internal/app/system/model/entity"
"github.com/tiger1103/gfast/v3/third/create"
)
// 构建 gantt json 数据
func Test_createGanttJson(t *testing.T) {
a, err := create.FetchGanttData(context.Background(), 2)
if err != nil {
t.Fatal(err)
}
data, _ := json.Marshal(a)
println(string(data))
}
// 测试创建模板数据
func Test_createTemplateData(t *testing.T) {
_, err := create.FetchTemplateData(context.Background(), 2)
if err != nil {
t.Fatal(err)
}
}
// 测试element 数据拼接
func Test_createElement(t *testing.T) {
group, err := create.FetchElementData(context.Background(), 2)
if err != nil {
t.Fatal(err)
}
data, _ := json.Marshal(group)
println(string(data))
}
// 测试箱变导入
// func Test_importXiangbian(t *testing.T) {
// filePath := ""
// err1, s2 := shp.ReadShp(filePath)
// if err1 != nil {
// liberr.ErrIsNil(ctx, err1)
// }
// }
// FetchTemplateData 获取模板数据后绑定到指定的 ProJectID
func Test_FetchTemplateData(t *testing.T) {
ctx := context.Background()
result, err := create.FetchTemplateData(ctx, 183)
if err != nil {
t.Fatal(err)
}
_, err = dao.WorkStatus.Ctx(ctx).Data(result).Batch(50).Insert()
if err != nil {
t.Fatal(err)
}
}
// 测试导入方阵后绑定到指定的 ProJectID 后修改计划表中数据
func Test_FetchElementData(t *testing.T) {
// 根据项目ID获取方阵数据
ctx := context.Background()
projectID := 2
// 获取指定 ProJectID 下的所有方阵
group := []entity.QianqiFangzhen{}
if err := dao.QianqiFangzhen.Ctx(ctx).Where(dao.QianqiFangzhen.Columns().ProjectId, projectID).Scan(&group); err != nil {
t.Fatal(err)
}
// 获取指定 ProJectID 下的所有箱变数量
// count, err := dao.QianqiXiangbian.Ctx(ctx).Where(dao.QianqiXiangbian.Columns().ProjectId, projectID).Count()
// if err != nil {
// t.Fatal(err)
// }
// 遍历方阵
for _, p := range group {
// 根据 p 的主键ID
// 在 Work_Status 表中关联找到其数据
// 更新子数据
_, err := dao.WorkStatus.Ctx(ctx).Where(dao.WorkStatus.Columns().FangzhenId, p.Id).
// Where(dao.WorkStatus.Columns().Type, consts.).
// Where(dao.WorkStatus.Columns()., 1).
WhereNotNull(dao.WorkStatus.Columns().Parent).Data(
g.Map{
dao.WorkStatus.Columns().Total: gdb.Raw(fmt.Sprintf("total+%d", 1)),
},
).Update()
if err != nil {
t.Fatal(err)
}
// count, err := result.RowsAffected()
// if err != nil {
// t.Fatal(err)
// }
// 获取所有子集数据总和
// all, err := dao.WorkStatus.Ctx(ctx).Where(dao.WorkStatus.Columns().FangzhenId, p.Id).
// Where(dao.WorkStatus.Columns().Type, consts.BoxChange).
// WhereNotNull(dao.WorkStatus.Columns().Parent).Count()
// if err != nil {
// t.Fatal(err)
// }
// 更新父数据
// if _, err := dao.WorkStatus.Ctx(ctx).Where(dao.WorkStatus.Columns().Id, projectID).
// Where(dao.WorkStatus.Columns().Type, consts.BoxChange).
// WhereNull(dao.WorkStatus.Columns().Parent).Data(
// g.Map{
// dao.WorkStatus.Columns().Total: gdb.Raw(fmt.Sprintf("total+%d", count)),
// },
// ).Update(); err != nil {
// t.Fatal(err)
// }
}
}
// 拼接 model.WorkStatusChild
// func Test_createWorkStatusChild(t *testing.T) {
// list := []model.WorkStatusChild{}
// ctx := context.Background()
// // 获取指定 ProJectID 下的所有方阵
// group := []entity.QianqiFangzhen{}
// if err := dao.QianqiFangzhen.Ctx(ctx).Where(dao.QianqiFangzhen.Columns().ProjectId, 2).Scan(&group); err != nil {
// t.Fatal(err)
// }
// for _, p := range group {
// // 获取指定 ProJectID 下的所有箱变
// xiangbianGroup := []entity.QianqiXiangbian{}
// if err := dao.QianqiXiangbian.Ctx(ctx).Where(dao.QianqiXiangbian.Columns().ProjectId, p.Id).Scan(&xiangbianGroup); err != nil {
// t.Fatal(err)
// }
// fangzhenList := []model.FangzhenList{}
// for _, x := range xiangbianGroup {
// fangzhenList = append(fangzhenList, model.FangzhenList{
// FangzhenID: x.Id,
// FangzhenName: x.Name,
// })
// }
// list = append(list, model.WorkStatusChild{
// ProJectID: p.ProjectId,
// FangzhenList: fangzhenList,
// })
// }
// data, _ := json.Marshal(list)
// println(string(data))
// }
// 批量执行 SQL
func Test_batchUpdate(t *testing.T) {
}