作者 tangxvhui

更新

@@ -7,7 +7,7 @@ type TaskItem struct { @@ -7,7 +7,7 @@ type TaskItem struct {
7 Leader UserData `json:"leader"` // 任务负责人 7 Leader UserData `json:"leader"` // 任务负责人
8 Status int `json:"status"` // 任务的状态 8 Status int `json:"status"` // 任务的状态
9 Level int `json:"level"` // 优先级,值越小优先级越高 9 Level int `json:"level"` // 优先级,值越小优先级越高
10 - LevalName string `json:"levalName"` // 优先级名称 10 + LevelName string `json:"levelName"` // 优先级名称
11 StageA string `json:"stageA"` // 里程碑1 11 StageA string `json:"stageA"` // 里程碑1
12 StageB string `json:"stageB"` // 里程碑2 12 StageB string `json:"stageB"` // 里程碑2
13 StageC string `json:"stageC"` // 里程碑3 13 StageC string `json:"stageC"` // 里程碑3
@@ -49,9 +49,9 @@ func (srv TaskService) CreateTask(transactionContext application.TransactionCont @@ -49,9 +49,9 @@ func (srv TaskService) CreateTask(transactionContext application.TransactionCont
49 Id: 0, 49 Id: 0,
50 Name: param.Name, 50 Name: param.Name,
51 Alias: param.Name, 51 Alias: param.Name,
52 - Status: domain.TaskRunning, 52 + Status: domain.TaskWait,
53 Level: 0, 53 Level: 0,
54 - LevalName: "", 54 + LevelName: "",
55 RelatedUser: []int{}, 55 RelatedUser: []int{},
56 RunAt: nowTime.Unix(), 56 RunAt: nowTime.Unix(),
57 } 57 }
@@ -70,8 +70,8 @@ func (srv TaskService) CreateTask(transactionContext application.TransactionCont @@ -70,8 +70,8 @@ func (srv TaskService) CreateTask(transactionContext application.TransactionCont
70 Name: "里程碑1", 70 Name: "里程碑1",
71 SortBy: 1, 71 SortBy: 1,
72 Status: domain.TaskStageUncompleted, 72 Status: domain.TaskStageUncompleted,
73 - PlanCompletedAt: nowEndTime.Add(30 * 24 * time.Hour).Format("2006-01-02"),  
74 - RealCompletedAt: "", 73 + PlanCompletedAt: nowEndTime.Add(30 * 24 * time.Hour).Unix(),
  74 + RealCompletedAt: 0,
75 }, 75 },
76 { 76 {
77 Id: 0, 77 Id: 0,
@@ -79,8 +79,8 @@ func (srv TaskService) CreateTask(transactionContext application.TransactionCont @@ -79,8 +79,8 @@ func (srv TaskService) CreateTask(transactionContext application.TransactionCont
79 Name: "里程碑2", 79 Name: "里程碑2",
80 SortBy: 2, 80 SortBy: 2,
81 Status: domain.TaskStageUncompleted, 81 Status: domain.TaskStageUncompleted,
82 - PlanCompletedAt: nowEndTime.Add(60 * 24 * time.Hour).Format("2006-01-02"),  
83 - RealCompletedAt: "", 82 + PlanCompletedAt: nowEndTime.Add(60 * 24 * time.Hour).Unix(),
  83 + RealCompletedAt: 0,
84 }, 84 },
85 { 85 {
86 Id: 0, 86 Id: 0,
@@ -88,8 +88,8 @@ func (srv TaskService) CreateTask(transactionContext application.TransactionCont @@ -88,8 +88,8 @@ func (srv TaskService) CreateTask(transactionContext application.TransactionCont
88 Name: "里程碑3", 88 Name: "里程碑3",
89 SortBy: 3, 89 SortBy: 3,
90 Status: domain.TaskStageUncompleted, 90 Status: domain.TaskStageUncompleted,
91 - PlanCompletedAt: nowEndTime.Add(90 * 24 * time.Hour).Format("2006-01-02"),  
92 - RealCompletedAt: "", 91 + PlanCompletedAt: nowEndTime.Add(90 * 24 * time.Hour).Unix(),
  92 + RealCompletedAt: 0,
93 }, 93 },
94 } 94 }
95 err = taskStageRepo.Save(newTaskStage) 95 err = taskStageRepo.Save(newTaskStage)
@@ -131,6 +131,13 @@ func (srv TaskService) UpdateTask(param *command.UpdateTaskCommand) (map[string] @@ -131,6 +131,13 @@ func (srv TaskService) UpdateTask(param *command.UpdateTaskCommand) (map[string]
131 if err != nil { 131 if err != nil {
132 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 132 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
133 } 133 }
  134 + ok, err := srv.canUpdateTask(taskData, stageList)
  135 + if err != nil {
  136 + return nil, err
  137 + }
  138 + if !ok {
  139 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "日评数据已生成,任务不能再被编辑")
  140 + }
134 leaderData, err := userRepo.FindOne(map[string]interface{}{ 141 leaderData, err := userRepo.FindOne(map[string]interface{}{
135 "id": param.LeaderId, 142 "id": param.LeaderId,
136 }) 143 })
@@ -172,8 +179,8 @@ func (srv TaskService) UpdateTask(param *command.UpdateTaskCommand) (map[string] @@ -172,8 +179,8 @@ func (srv TaskService) UpdateTask(param *command.UpdateTaskCommand) (map[string]
172 Name: val2.Name, 179 Name: val2.Name,
173 SortBy: i + 1, 180 SortBy: i + 1,
174 Status: domain.TaskStageUncompleted, 181 Status: domain.TaskStageUncompleted,
175 - PlanCompletedAt: val2.PlanCompletedAt,  
176 - RealCompletedAt: "", 182 + PlanCompletedAt: t.Unix(),
  183 + RealCompletedAt: 0,
177 } 184 }
178 newStageList = append(newStageList, &newStage) 185 newStageList = append(newStageList, &newStage)
179 continue 186 continue
@@ -184,7 +191,7 @@ func (srv TaskService) UpdateTask(param *command.UpdateTaskCommand) (map[string] @@ -184,7 +191,7 @@ func (srv TaskService) UpdateTask(param *command.UpdateTaskCommand) (map[string]
184 } 191 }
185 oldStage.DeletedAt = nil 192 oldStage.DeletedAt = nil
186 oldStage.SortBy = i + 1 193 oldStage.SortBy = i + 1
187 - oldStage.PlanCompletedAt = val2.PlanCompletedAt 194 + oldStage.PlanCompletedAt = t.Unix()
188 oldStage.Name = val2.Name 195 oldStage.Name = val2.Name
189 } 196 }
190 stageList = append(stageList, newStageList...) 197 stageList = append(stageList, newStageList...)
@@ -261,7 +268,7 @@ func (srv TaskService) GetTaskInfo(param *command.GetTaskCommand) (*adapter.Task @@ -261,7 +268,7 @@ func (srv TaskService) GetTaskInfo(param *command.GetTaskCommand) (*adapter.Task
261 }, 268 },
262 Status: int(taskData.Status), 269 Status: int(taskData.Status),
263 Level: taskData.Level, 270 Level: taskData.Level,
264 - LevalName: taskData.LevalName, 271 + LevalName: taskData.LevelName,
265 RelatedUserId: []string{}, 272 RelatedUserId: []string{},
266 RelatedUser: []adapter.UserData{}, 273 RelatedUser: []adapter.UserData{},
267 StageList: []adapter.TaskStage{}, 274 StageList: []adapter.TaskStage{},
@@ -275,12 +282,22 @@ func (srv TaskService) GetTaskInfo(param *command.GetTaskCommand) (*adapter.Task @@ -275,12 +282,22 @@ func (srv TaskService) GetTaskInfo(param *command.GetTaskCommand) (*adapter.Task
275 Name: val.Name, 282 Name: val.Name,
276 }) 283 })
277 } 284 }
  285 +
278 for _, val := range stageList { 286 for _, val := range stageList {
  287 + t1 := ""
  288 + t2 := ""
  289 + if val.PlanCompletedAt > 0 {
  290 + t1 = time.Unix(val.PlanCompletedAt, 0).Local().Format("2006-01-02")
  291 + }
  292 + if val.RealCompletedAt > 0 {
  293 + t2 = time.Unix(val.RealCompletedAt, 0).Local().Format("2006-01-02")
  294 + }
279 result.StageList = append(result.StageList, adapter.TaskStage{ 295 result.StageList = append(result.StageList, adapter.TaskStage{
280 Id: val.Id, 296 Id: val.Id,
281 Name: val.Name, 297 Name: val.Name,
282 - PlanCompletedAt: val.PlanCompletedAt,  
283 - RealCompletedAt: val.RealCompletedAt, 298 + PlanCompletedAt: t1,
  299 + RealCompletedAt: t2,
  300 + StatusCompleted: val.DescriptStatus(),
284 }) 301 })
285 } 302 }
286 return &result, nil 303 return &result, nil
@@ -427,7 +444,7 @@ func (srv TaskService) ListTask(param *command.ListTaskCommand) (map[string]inte @@ -427,7 +444,7 @@ func (srv TaskService) ListTask(param *command.ListTaskCommand) (map[string]inte
427 }, 444 },
428 Status: int(val.Status), 445 Status: int(val.Status),
429 Level: val.Level, 446 Level: val.Level,
430 - LevalName: val.LevalName, 447 + LevelName: val.LevelName,
431 StageA: "", 448 StageA: "",
432 StageB: "", 449 StageB: "",
433 StageC: "", 450 StageC: "",
@@ -458,3 +475,7 @@ func (srv TaskService) ListTask(param *command.ListTaskCommand) (map[string]inte @@ -458,3 +475,7 @@ func (srv TaskService) ListTask(param *command.ListTaskCommand) (map[string]inte
458 result := tool_funs.SimpleWrapGridMap(int64(taskCnt), taskResult) 475 result := tool_funs.SimpleWrapGridMap(int64(taskCnt), taskResult)
459 return result, nil 476 return result, nil
460 } 477 }
  478 +
  479 +func (t TaskService) canUpdateTask(taskData *domain.Task, stageList []*domain.TaskStage) (bool, error) {
  480 + return true, nil
  481 +}
@@ -5,8 +5,9 @@ import "time" @@ -5,8 +5,9 @@ import "time"
5 type TaskState int 5 type TaskState int
6 6
7 const ( 7 const (
8 - TaskRunning TaskState = 1 //任务启动中  
9 - TaskStop TaskState = 2 //任务停止 8 + TaskWait TaskState = 1 //任务待启动
  9 + TaskRunning TaskState = 2 //任务启动中
  10 + TaskStop TaskState = 3 //任务停止
10 ) 11 )
11 12
12 // 任务 13 // 任务
@@ -21,7 +22,7 @@ type Task struct { @@ -21,7 +22,7 @@ type Task struct {
21 Leader TaskLeader `json:"leader"` // 任务负责人 22 Leader TaskLeader `json:"leader"` // 任务负责人
22 Status TaskState `json:"status"` // 任务的状态 23 Status TaskState `json:"status"` // 任务的状态
23 Level int `json:"level"` // 优先级,值越小优先级越高 24 Level int `json:"level"` // 优先级,值越小优先级越高
24 - LevalName string `json:"levalName"` // 优先级名称 25 + LevelName string `json:"levelName"` // 优先级名称
25 RelatedUser []int `json:"relatedUser"` // 相关的员工id 26 RelatedUser []int `json:"relatedUser"` // 相关的员工id
26 RunAt int64 `json:"runAt"` // 启动的时间戳,秒 27 RunAt int64 `json:"runAt"` // 启动的时间戳,秒
27 StopAt int64 `json:"stopAt"` // 停止的时间戳,秒 28 StopAt int64 `json:"stopAt"` // 停止的时间戳,秒
@@ -35,16 +36,16 @@ type TaskLeader struct { @@ -35,16 +36,16 @@ type TaskLeader struct {
35 36
36 // 设置任务的优先级 37 // 设置任务的优先级
37 func (t *Task) ApplyLevelName(name string) { 38 func (t *Task) ApplyLevelName(name string) {
38 - t.LevalName = name 39 + t.LevelName = name
39 switch name { 40 switch name {
40 case "战略任务": 41 case "战略任务":
41 - t.Level = 1 42 + t.Level = 100
42 case "重点任务": 43 case "重点任务":
43 - t.Level = 2 44 + t.Level = 200
44 case "常规任务": 45 case "常规任务":
45 - t.Level = 3 46 + t.Level = 300
46 default: 47 default:
47 - t.Level = 999 48 + t.Level = 9999
48 } 49 }
49 } 50 }
50 51
@@ -5,8 +5,9 @@ import "time" @@ -5,8 +5,9 @@ import "time"
5 type TaskStageState int 5 type TaskStageState int
6 6
7 const ( 7 const (
8 - TaskStageUncompleted TaskStageState = 1 //里程碑未完成  
9 - TaskStageCompleted TaskStageState = 2 //里程碑完成 8 + TaskStageUncompleted TaskStageState = 1 //里程碑未完成
  9 + TaskStageCompleted TaskStageState = 2 //里程碑完成
  10 + TaskStageCompletedOverdue TaskStageState = 3 //里程碑预期完成
10 ) 11 )
11 12
12 // 任务阶段 13 // 任务阶段
@@ -19,8 +20,8 @@ type TaskStage struct { @@ -19,8 +20,8 @@ type TaskStage struct {
19 Name string `json:"name"` //里程碑名称 20 Name string `json:"name"` //里程碑名称
20 SortBy int `json:"sortBy"` //排序 21 SortBy int `json:"sortBy"` //排序
21 Status TaskStageState `json:"status"` //里程碑完成情况 22 Status TaskStageState `json:"status"` //里程碑完成情况
22 - PlanCompletedAt string `json:"planCompletedAt"` //计划完成时间戳,秒  
23 - RealCompletedAt string `json:"realCompletedAt"` //时间完成时间戳,秒 23 + PlanCompletedAt int64 `json:"planCompletedAt"` //计划完成时间戳,秒
  24 + RealCompletedAt int64 `json:"realCompletedAt"` //时间完成时间戳,秒
24 } 25 }
25 type TaskStageRepository interface { 26 type TaskStageRepository interface {
26 Save(param []*TaskStage) error 27 Save(param []*TaskStage) error
@@ -31,10 +32,22 @@ type TaskStageRepository interface { @@ -31,10 +32,22 @@ type TaskStageRepository interface {
31 32
32 // 描述里程碑完成情况 33 // 描述里程碑完成情况
33 func (t TaskStage) DescriptStatus() string { 34 func (t TaskStage) DescriptStatus() string {
34 - // nowTime := time.Now().Unix()  
35 - // if t.RealCompletedAt != "" && t.PlanCompletedAt != "" { 35 + nowDay := time.Now().Format("2006-01-02")
  36 + nowTime, _ := time.ParseInLocation("2006-01-02", nowDay, time.Local)
36 37
37 - // } 38 + str := ""
  39 + switch t.Status {
  40 + case TaskStageUncompleted:
  41 + if nowTime.Unix() > t.PlanCompletedAt {
  42 + str = "已逾期"
  43 + } else {
  44 + str = "未完成"
  45 + }
  46 + case TaskStageCompleted:
  47 + str = "已完成"
  48 + case TaskStageCompletedOverdue:
  49 + str = "逾期完成"
  50 + }
38 51
39 - return "" 52 + return str
40 } 53 }
@@ -19,7 +19,7 @@ type Task struct { @@ -19,7 +19,7 @@ type Task struct {
19 Leader domain.TaskLeader `pg:"leader"` // 任务负责人 19 Leader domain.TaskLeader `pg:"leader"` // 任务负责人
20 Status int `pg:"status"` // 任务的状态 20 Status int `pg:"status"` // 任务的状态
21 Level int `pg:"level"` // 优先级,值越小优先级越高 21 Level int `pg:"level"` // 优先级,值越小优先级越高
22 - LevalName string `pg:"leval_name"` // 优先级名称 22 + LevelName string `pg:"level_name"` // 优先级名称
23 RelatedUser []int `pg:"related_user"` // 23 RelatedUser []int `pg:"related_user"` //
24 RunAt int64 `pg:"run_at"` // 启动的时间 24 RunAt int64 `pg:"run_at"` // 启动的时间
25 StopAt int64 `pg:"stop_at"` // 停止的时间 25 StopAt int64 `pg:"stop_at"` // 停止的时间
@@ -13,6 +13,6 @@ type TaskStage struct { @@ -13,6 +13,6 @@ type TaskStage struct {
13 Name string `pg:"name"` //里程碑名称 13 Name string `pg:"name"` //里程碑名称
14 SortBy int `pg:"sort_by"` //排序 14 SortBy int `pg:"sort_by"` //排序
15 Status int `pg:"status"` //里程碑完成情况 15 Status int `pg:"status"` //里程碑完成情况
16 - PlanCompletedAt string `pg:"plan_completed_at"` //计划完成时间  
17 - RealCompletedAt string `pg:"real_completed_at"` //时间完成时间 16 + PlanCompletedAt int64 `pg:"plan_completed_at"` //计划完成时间
  17 + RealCompletedAt int64 `pg:"real_completed_at"` //时间完成时间
18 } 18 }
@@ -34,7 +34,7 @@ func (repo *TaskRepository) TransformToDomain(d *models.Task) *domain.Task { @@ -34,7 +34,7 @@ func (repo *TaskRepository) TransformToDomain(d *models.Task) *domain.Task {
34 Leader: d.Leader, 34 Leader: d.Leader,
35 Status: domain.TaskState(d.Status), 35 Status: domain.TaskState(d.Status),
36 Level: d.Level, 36 Level: d.Level,
37 - LevalName: d.LevalName, 37 + LevelName: d.LevelName,
38 RelatedUser: d.RelatedUser, 38 RelatedUser: d.RelatedUser,
39 RunAt: d.RunAt, 39 RunAt: d.RunAt,
40 StopAt: d.StopAt, 40 StopAt: d.StopAt,
@@ -58,7 +58,7 @@ func (repo *TaskRepository) Save(param *domain.Task) error { @@ -58,7 +58,7 @@ func (repo *TaskRepository) Save(param *domain.Task) error {
58 Leader: param.Leader, 58 Leader: param.Leader,
59 Status: int(param.Status), 59 Status: int(param.Status),
60 Level: param.Level, 60 Level: param.Level,
61 - LevalName: param.LevalName, 61 + LevelName: param.LevelName,
62 RelatedUser: param.RelatedUser, 62 RelatedUser: param.RelatedUser,
63 RunAt: param.RunAt, 63 RunAt: param.RunAt,
64 CompanyId: param.CompanyId, 64 CompanyId: param.CompanyId,
@@ -12,6 +12,7 @@ type TaskController struct { @@ -12,6 +12,7 @@ type TaskController struct {
12 beego.BaseController 12 beego.BaseController
13 } 13 }
14 14
  15 +// 获取任务
15 func (c *TaskController) GetTaskInfo() { 16 func (c *TaskController) GetTaskInfo() {
16 srv := service.NewTaskService() 17 srv := service.NewTaskService()
17 paramReq := &command.GetTaskCommand{} 18 paramReq := &command.GetTaskCommand{}
@@ -27,3 +28,60 @@ func (c *TaskController) GetTaskInfo() { @@ -27,3 +28,60 @@ func (c *TaskController) GetTaskInfo() {
27 data, err := srv.GetTaskInfo(paramReq) 28 data, err := srv.GetTaskInfo(paramReq)
28 c.Response(data, err) 29 c.Response(data, err)
29 } 30 }
  31 +
  32 +// 更新任务
  33 +func (c *TaskController) UpdateTask() {
  34 + srv := service.NewTaskService()
  35 + paramReq := &command.UpdateTaskCommand{}
  36 + err := c.BindJSON(paramReq)
  37 + if err != nil {
  38 + e := application.ThrowError(application.ARG_ERROR, "json 解析错误"+err.Error())
  39 + c.Response(nil, e)
  40 + return
  41 + }
  42 + // userReq := middlewares.GetUser(c.Ctx)
  43 + data, err := srv.UpdateTask(paramReq)
  44 + c.Response(data, err)
  45 +}
  46 +
  47 +// 启动任务
  48 +func (c *TaskController) RunTask() {
  49 + srv := service.NewTaskService()
  50 + paramReq := &command.RunTaskCommand{}
  51 + err := c.BindJSON(paramReq)
  52 + if err != nil {
  53 + e := application.ThrowError(application.ARG_ERROR, "json 解析错误"+err.Error())
  54 + c.Response(nil, e)
  55 + return
  56 + }
  57 + data, err := srv.RunTask(paramReq)
  58 + c.Response(data, err)
  59 +}
  60 +
  61 +// 启动任务
  62 +func (c *TaskController) StopTask() {
  63 + srv := service.NewTaskService()
  64 + paramReq := &command.StopTaskCommand{}
  65 + err := c.BindJSON(paramReq)
  66 + if err != nil {
  67 + e := application.ThrowError(application.ARG_ERROR, "json 解析错误"+err.Error())
  68 + c.Response(nil, e)
  69 + return
  70 + }
  71 + data, err := srv.StopTask(paramReq)
  72 + c.Response(data, err)
  73 +}
  74 +
  75 +// 任务列表
  76 +func (c *TaskController) ListTask() {
  77 + srv := service.NewTaskService()
  78 + paramReq := &command.ListTaskCommand{}
  79 + err := c.BindJSON(paramReq)
  80 + if err != nil {
  81 + e := application.ThrowError(application.ARG_ERROR, "json 解析错误"+err.Error())
  82 + c.Response(nil, e)
  83 + return
  84 + }
  85 + data, err := srv.ListTask(paramReq)
  86 + c.Response(data, err)
  87 +}
@@ -3,13 +3,20 @@ package routers @@ -3,13 +3,20 @@ package routers
3 import ( 3 import (
4 "github.com/beego/beego/v2/server/web" 4 "github.com/beego/beego/v2/server/web"
5 "github.com/linmadan/egglib-go/web/beego/filters" 5 "github.com/linmadan/egglib-go/web/beego/filters"
  6 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/port/beego/controllers"
6 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/port/beego/middlewares" 7 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/port/beego/middlewares"
7 ) 8 )
8 9
9 func init() { 10 func init() {
10 //绩效管理模块 11 //绩效管理模块
11 taskAdminNS := web.NewNamespace("/v1/admin/task", 12 taskAdminNS := web.NewNamespace("/v1/admin/task",
12 - web.NSBefore(filters.AllowCors(), middlewares.CheckAdminToken())) 13 + web.NSBefore(filters.AllowCors(), middlewares.CheckAdminToken()),
  14 + web.NSCtrlPost("/info", (*controllers.TaskController).GetTaskInfo),
  15 + web.NSCtrlPut("/", (*controllers.TaskController).UpdateTask),
  16 + web.NSCtrlPost("/run", (*controllers.TaskController).RunTask),
  17 + web.NSCtrlPost("/stop", (*controllers.TaskController).StopTask),
  18 + web.NSCtrlPost("/list", (*controllers.TaskController).ListTask),
  19 + )
13 web.AddNamespace(taskAdminNS) 20 web.AddNamespace(taskAdminNS)
14 21
15 taskFontNS := web.NewNamespace("/v1/font/task", 22 taskFontNS := web.NewNamespace("/v1/font/task",