task_list.go 2.4 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"`    // 异常状态
	AnomalyDesc2   []map[string]string `json:"anomalyDesc2"`
	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
}