task_list.go 2.3 KB
package adapter

import (
	"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
)

type TaskItem struct {
	Id             int               `json:"id,string"`
	Name           string            `json:"name"`           // 任务名称
	Alias          string            `json:"alias"`          // 任务别名
	Leader         string            `json:"leader"`         // 任务负责人
	Status         int               `json:"status"`         // 任务的状态
	StatusDescript string            `json:"statusDescript"` // 任务的整体状态描述
	SortBy         int               `json:"level"`          // 优先级,值越小优先级越高
	LevelName      string            `json:"levelName"`      // 任务分类名称
	StageA         TaskStage         `json:"stageA"`         // 里程碑1
	StageB         TaskStage         `json:"stageB"`         // 里程碑2
	StageC         TaskStage         `json:"stageC"`         // 里程碑3
	StageD         TaskStage         `json:"stageD"`         // 里程碑4
	StageE         TaskStage         `json:"stageE"`         // 里程碑5
	LastStage      TaskStage         `json:"lastStage"`      //
	CurrentStage   TaskStage         `json:"currentStage"`   //
	UpdatedAt      string            `json:"updatedAt"`      //
	Anomaly        int               `json:"anomaly"`        // 异常反馈情况
	WarnFlag       int               `json:"warnFlag"`       // 里程碑完成时间异常标记  0:正常  1标记为异常
	AnomalyDesc    []string          `json:"anomalyDesc"`    // 异常状态
	Marks          map[string]string `json:"marks"`          // 标记
}

func (t *TaskItem) GenStatusDescript() {
	statusNamed := ""
	if domain.TaskState(t.Status) == domain.TaskRunning {
		statusNamed = "进行中"
	}
	if t.Anomaly > 0 {
		statusNamed = "反馈异常"
	}
	if domain.TaskWarnFlag(t.WarnFlag) == domain.TaskWarn {
		statusNamed = "里程碑异常"
	}
	if domain.TaskState(t.Status) == domain.TaskStop {
		statusNamed = "已停止"
	}
	if t.LastStage.Id > 0 && t.CurrentStage.Id == 0 && t.LastStage.PlanCompletedAt < t.LastStage.RealCompletedAt {
		statusNamed = "逾期完成"
	}
	if t.LastStage.Id > 0 && t.CurrentStage.Id == 0 && t.LastStage.PlanCompletedAt >= t.LastStage.RealCompletedAt {
		statusNamed = "如期完成"
	}

	t.StatusDescript = statusNamed
}