123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311 |
- package controller
- import (
- "fmt"
- "github.com/gin-gonic/gin"
- "lims-extend/common"
- "lims-extend/model"
- "lims-extend/response"
- "lims-extend/util"
- "lims-extend/vo"
- )
- func ShowPlans(c *gin.Context) {
- db := common.GetDB()
- userId := c.Params.ByName("userId")
- var plans []model.Plan
-
- db.Model(&model.Plan{}).Joins("left join plan_groups on plan.id = plan_id ").
- Joins("left join group_users on plan_groups.group_id = group_users.group_id").
- Where("user_id = ? and plan.delete <> 1", userId).Distinct().Find(&plans)
- planVos := make([]vo.PlanVo, len(plans))
-
-
-
-
-
-
- response.Success(c, gin.H{"planlists": planVos}, "success")
- }
- func ShowPlan(c *gin.Context) {
- planId := c.Params.ByName("planId")
- db := common.GetDB()
- var plan model.Plan
- if err := db.Model(&model.Plan{}).Where("id = ?", planId).First(&plan).Error; err != nil {
- response.Fail(c, nil, "结果不存在")
- return
- }
- if plan.Delete == 1 {
- response.Fail(c, nil, "当前计划已经被删除")
- return
- }
- planVo := vo.PlanVo{
- SendAmount: GetSendPacketAmount(planId),
- ReceiveAmount: GetRecvPacketAmount(planId),
- ReportAmount: GetPlanReportAmount(planId),
- }
- response.Success(c, gin.H{
- "plan": planVo,
- }, "success")
- }
- func TakePlan(c *gin.Context) {
- planId := c.Params.ByName("planId")
- username := c.Params.ByName("username")
-
- db := common.GetDB()
- var plan model.Plan
- if err := db.Model(&model.Plan{}).Where("id = ?", planId).First(&plan).Error; err != nil {
- response.Fail(c, nil, "测试计划不存在")
- return
- }
-
- if plan.Delete == 1 {
- response.Fail(c, nil, "测试计划已被删除")
- return
- }
-
- var file model.File
- db.Model(&model.File{}).Where("id = ?", plan.StatementFile).First(&file)
-
- var user model.User
- if err := db.Model(&model.User{}).Where("username = ?", username).First(&user).Error; err != nil {
- response.Fail(c, nil, "提测人不存在")
- return
- }
-
- task := model.Task{
- ID: util.GetNextId(db, "task"),
- Title: plan.Title + "_" + user.Username,
- State: 0,
- Description: plan.Description,
- StateFile: plan.StatementFile,
- CaseFile: "",
- CaseAll: 0,
- CaseNotExecute: 0,
- CaseSuccess: 0,
- CaseFail: 0,
- CreatedAt: model.Time{},
- UpdatedAt: model.Time{},
- Delete: 0,
- PlanId: plan.Id,
- ExecutorId: user.ID,
- }
-
- var dupTask model.Task
- db.Model(&model.Task{}).Where("title = ?", task.Title).First(&dupTask)
- if dupTask.Title != "" {
- response.Fail(c, nil, user.Name+"已领取当前测试任务,请勿重复领取")
- return
- }
-
- if err := db.Create(&task).Error; err != nil {
- response.Fail(c, nil, "测试任务创建失败")
- return
- }
- response.Success(c, gin.H{"task": task}, "success")
- }
- func AssignPlan(c *gin.Context) {
-
- var groupVo vo.GroupVo
- c.ShouldBind(&groupVo)
- db := common.GetDB()
-
- var plan model.Plan
- if err := db.Model(&model.Plan{}).Where("id = ?", groupVo.PlanId).First(&plan).Error; err != nil {
- response.Fail(c, nil, "计划不存在")
- return
- }
- if plan.Delete == 1 {
- response.Fail(c, nil, "当前计划已经被删除")
- return
- }
-
- for _, groupId := range groupVo.GroupIdList {
- var group model.Group
- if err := db.Model(&model.Group{}).Where("id = ?", groupId).First(&group).Error; err != nil {
- response.Fail(c, nil, fmt.Sprintf("团队ID[%s]不存在", groupId))
- return
- }
-
- if group.Delete == 1 {
- response.Fail(c, nil, fmt.Sprintf("团队ID[%s]已被删除", groupId))
- return
- }
- }
-
- var errorTaskLists []string
-
- for _, groupId := range groupVo.GroupIdList {
- plan2group := model.Plan2Group{
- PlanId: groupVo.PlanId,
- GroupId: groupId,
- }
-
- if err := db.Model(&model.Plan2Group{}).Where("group_id = ? and plan_id = ?", groupId, groupVo.PlanId).
- First(&model.Plan2Group{}).Error; err == nil {
- response.Fail(c, nil, "分配失败,小组已被该计划分配")
- return
- }
- if err := db.Model(&model.Plan2Group{}).Create(&plan2group).Error; err != nil {
- response.Fail(c, nil, "分配失败")
- return
- }
-
-
- var group2users []model.Group2Users
- db.Model(&model.Group2Users{}).Where("group_id = ?", groupId).Find(&group2users)
- for _, item := range group2users {
-
- task := model.Task{
- ID: util.GetNextId(db, "task"),
- Title: plan.Title,
- State: 3,
- Description: plan.Description,
- StateFile: plan.StatementFile,
- CaseFile: "",
- CaseAll: 0,
- CaseNotExecute: 0,
- CaseSuccess: 0,
- CaseFail: 0,
- CreatedAt: model.Time{},
- UpdatedAt: model.Time{},
- Delete: 0,
- PlanId: plan.Id,
- ExecutorId: item.UserId,
- }
-
- var dupTask model.Task
- db.Model(&model.Task{}).Where("plan_id = ? and executor_id = ?", plan.Id, item.UserId).First(&dupTask)
- if dupTask.Title != "" {
- errorTaskLists = append(errorTaskLists, fmt.Sprintf("用户ID[%s]已被分配当前测试任务", item.UserId))
- continue
- }
-
- if err := db.Create(&task).Error; err != nil {
- errorTaskLists = append(errorTaskLists, fmt.Sprintf("用户ID为[%s]的测试任务创建失败,未知数据库错误", item.UserId))
- continue
- }
- }
- }
- response.Success(c, gin.H{
- "groupIdList": groupVo,
- "errorList": errorTaskLists,
- }, "分配成功")
- }
- func GetPlanAssignedGroups(c *gin.Context) {
- db := common.GetDB()
- planId := c.Params.ByName("planId")
- var plan2groups []model.Plan2Group
- db.Model(&model.Plan2Group{}).Where("plan_id = ?", planId).Find(&plan2groups)
- var groupList []model.Group
- for _, group := range plan2groups {
- var singleGroup model.Group
- db.Model(&model.Group{}).Where("id = ?", group.GroupId).First(&singleGroup)
- groupList = append(groupList, singleGroup)
- }
- response.Success(c, gin.H{"groupList": groupList}, "success")
- }
- func Test(c *gin.Context) {
- response.Success(c, gin.H{"count": GetPlanReportAmount("TestLaboratory_V1_Plan_9")}, "success")
- }
- func GetSendPacketAmount(planId string) int {
- db := common.GetDB()
- var amount int64
- db.Model(&model.Task{}).Where("plan_id = ?", planId).Count(&amount)
- return int(amount)
- }
- func GetRecvPacketAmount(planId string) int {
- db := common.GetDB()
- var amount int64
- db.Model(&model.Task{}).Where("plan_id = ? and state <> 3", planId).Count(&amount)
- return int(amount)
- }
- func GetPlanReportAmount(planId string) int {
- var count int64
- db := common.GetDB()
- db.Model(&model.Task{}).Where("plan_id = ? and state = 2", planId).Count(&count)
- return int(count)
- }
- func GetPlanTotalUserAmount(planId string) int {
- totalAmount := 0
- var plan2groups []model.Plan2Group
- db := common.GetDB()
- db.Model(&model.Plan2Group{}).Where("plan_id = ?", planId).Find(&plan2groups)
- for _, group := range plan2groups {
- totalAmount += GetGroupUserAmount(group.GroupId)
- }
- return totalAmount
- }
- func GetGroupUserAmount(groupId string) int {
- var count int64
- db := common.GetDB()
- db.Model(&model.Group2Users{}).Where("group_id = ?", groupId).Count(&count)
- return int(count)
- }
|