作者 tangxvhui

Merge branch 'dev-tangxvhui' into test

... ... @@ -6,6 +6,9 @@ type UpdateTaskCommand struct {
Alias string `json:"alias"` //任务名称
LevelName string `json:"levelName"` //优先级
RelatedUserId []string `json:"relatedUserId"` //相关人员id
SortBy int `json:"sortBy"` // 优先级排序;值越小优先级越高
EndTime int64 `json:"endTime"` // 任务截止的时间戳,单位:秒;等于0时表示未设置时间
UseEndtime int `json:"useEndTime"` // 是否应用任务截止的时间;默认值0:不应用,1:应用
StageList []struct {
Id int `json:"id,string"`
Name string `json:"name"` //里程碑名称
... ...
... ... @@ -92,7 +92,6 @@ func (srv TaskService) CreateTask(transactionContext application.TransactionCont
}
leaderData := leaderList[0]
nowTime := time.Now()
nowEndTime := dayEndTime(nowTime)
newTask := domain.Task{
Id: 0,
CreatedAt: time.Time{},
... ... @@ -112,6 +111,7 @@ func (srv TaskService) CreateTask(transactionContext application.TransactionCont
RelatedUser: []int{int(leaderData.Id)},
RunAt: nowTime.Unix(),
StopAt: 0,
SortBy: domain.TaskSortNull,
}
if int(leaderData.ParentId) != 0 {
newTask.RelatedUser = append(newTask.RelatedUser, int(leaderData.ParentId))
... ... @@ -122,30 +122,30 @@ func (srv TaskService) CreateTask(transactionContext application.TransactionCont
return application.ThrowError(application.INTERNAL_SERVER_ERROR, "创建任务失败:"+err.Error())
}
newTaskStage := []*domain.TaskStage{
{
Id: 0,
TaskId: newTask.Id,
Name: "里程碑1",
SortBy: 1,
PlanCompletedAt: nowEndTime.Add(30 * 24 * time.Hour).Unix(),
RealCompletedAt: 0,
},
{
Id: 0,
TaskId: newTask.Id,
Name: "里程碑2",
SortBy: 2,
PlanCompletedAt: nowEndTime.Add(60 * 24 * time.Hour).Unix(),
RealCompletedAt: 0,
},
{
Id: 0,
TaskId: newTask.Id,
Name: "里程碑3",
SortBy: 3,
PlanCompletedAt: nowEndTime.Add(90 * 24 * time.Hour).Unix(),
RealCompletedAt: 0,
},
// {
// Id: 0,
// TaskId: newTask.Id,
// Name: "里程碑1",
// SortBy: 1,
// PlanCompletedAt: nowEndTime.Add(30 * 24 * time.Hour).Unix(),
// RealCompletedAt: 0,
// },
// {
// Id: 0,
// TaskId: newTask.Id,
// Name: "里程碑2",
// SortBy: 2,
// PlanCompletedAt: nowEndTime.Add(60 * 24 * time.Hour).Unix(),
// RealCompletedAt: 0,
// },
// {
// Id: 0,
// TaskId: newTask.Id,
// Name: "里程碑3",
// SortBy: 3,
// PlanCompletedAt: nowEndTime.Add(90 * 24 * time.Hour).Unix(),
// RealCompletedAt: 0,
// },
}
err = taskStageRepo.Save(newTaskStage)
if err != nil {
... ... @@ -313,6 +313,9 @@ func (srv TaskService) UpdateTask(param *command.UpdateTaskCommand) (map[string]
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
}
taskData.SetCurrentStage(stageList)
taskData.SetSortBy(param.SortBy)
taskData.EndTime = param.EndTime
taskData.UseEndTime = param.UseEndtime
err = taskRepo.Save(taskData)
if err != nil {
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
... ...
... ... @@ -21,6 +21,25 @@ const (
TaskWarn TaskWarnFlag = 1
)
type TaskSortBy int
const (
TaskSortHight TaskSortBy = 100
TaskSortMiddle TaskSortBy = 200
TaskSortLow TaskSortBy = 300
TaskSortNull TaskSortBy = 400
)
func (t TaskSortBy) Named() string {
nameMap := map[TaskSortBy]string{
TaskSortHight: "高",
TaskSortMiddle: "中",
TaskSortLow: "低",
TaskSortNull: "无",
}
return nameMap[t]
}
// 任务
type Task struct {
Id int `json:"id"`
... ... @@ -34,9 +53,9 @@ type Task struct {
Status TaskState `json:"status"` // 任务的状态
Level int `json:"level"` // 优先级 (优先级字段表示的意义变更,不再需要这个字段,仅数据保留)
LevelName string `json:"levelName"` // 字段表示的意义变更; 原来 (“优先级名称“)=> 现在 (“任务类型“)
SortBy int `json:"sortBy"` // 优先级排序;值越小优先级越高
SortBy TaskSortBy `json:"sortBy"` // 优先级排序;值越小优先级越高
EndTime int64 `json:"endTime"` // 任务截止的时间戳,单位:秒;等于0时表示未设置时间
UseEndtime int `json:"useEndTime"` // 是否应用任务截止的时间;默认值0:不应用,1:应用
UseEndTime int `json:"useEndTime"` // 是否应用任务截止的时间;默认值0:不应用,1:应用
RelatedUser []int `json:"relatedUser"` // 相关的员工id
RunAt int64 `json:"runAt"` // 启动的时间戳,单位:秒
StopAt int64 `json:"stopAt"` // 停止的时间戳,单位:秒
... ... @@ -83,6 +102,9 @@ func (t *Task) StatusDescription() string {
// 记录待执行的里程碑,和上一个执行的里程碑
func (t *Task) SetCurrentStage(stageList []*TaskStage) {
if len(stageList) == 0 {
return
}
sort.Slice(stageList, func(i, j int) bool {
return stageList[i].SortBy < stageList[j].SortBy
})
... ... @@ -101,27 +123,16 @@ func (t *Task) SetCurrentStage(stageList []*TaskStage) {
// 设置优先级的值
func (t *Task) SetSortBy(a int) error {
switch a {
case 100, 200, 300, 0:
switch TaskSortBy(a) {
case TaskSortHight, TaskSortMiddle, TaskSortLow, TaskSortNull:
default:
return errors.New("优先级值错误")
}
t.SortBy = a
t.SortBy = TaskSortBy(a)
return nil
}
// 获取优先级的名称描述
func (t *Task) GetNameSortBy() string {
nameMap := map[int]string{
100: "高",
200: "中",
300: "低",
0: "无",
}
return nameMap[t.SortBy]
}
type TaskRepository interface {
Save(param *Task) error
Remove(id int) error
... ...
... ... @@ -29,5 +29,5 @@ type Task struct {
CurrentStage domain.TaskStage `pg:"current_stage,type:jsonb"` // 添加type:jsonb 防止orm(可能是特性)生成sql时字段丢失
SortBy int `pg:"sort_by"` // 优先级排序;值越小优先级越高
EndTime int64 `pg:"end_time"` // 任务截止的时间戳,单位:秒;等于0时表示未设置时间
UseEndtime int `pg:"use_end_time"` // 是否应用任务截止的时间;默认值0:不应用,1:应用
UseEndTime int `pg:"use_end_time"` // 是否应用任务截止的时间;默认值0:不应用,1:应用
}
... ...
... ... @@ -37,9 +37,9 @@ func (repo *TaskRepository) TransformToDomain(d *models.Task) *domain.Task {
Status: domain.TaskState(d.Status),
Level: d.Level,
LevelName: d.LevelName,
SortBy: d.SortBy,
SortBy: domain.TaskSortBy(d.SortBy),
EndTime: d.EndTime,
UseEndtime: d.UseEndtime,
UseEndTime: d.UseEndTime,
RelatedUser: d.RelatedUser,
RunAt: d.RunAt,
StopAt: d.StopAt,
... ... @@ -74,9 +74,9 @@ func (repo *TaskRepository) Save(param *domain.Task) error {
Anomaly: param.Anomaly,
WarnFlag: int(param.WarnFlag),
CurrentStage: param.CurrentStage,
SortBy: param.SortBy,
SortBy: int(param.SortBy),
EndTime: param.EndTime,
UseEndtime: param.UseEndtime,
UseEndTime: param.UseEndTime,
}
db := repo.transactionContext.PgTx
if m.Id == 0 {
... ...