作者 tangxvhui

更新

@@ -247,3 +247,11 @@ func CreateTaskRecordRepository(options map[string]interface{}) domain.TaskRecor @@ -247,3 +247,11 @@ func CreateTaskRecordRepository(options map[string]interface{}) domain.TaskRecor
247 } 247 }
248 return repository.NewTaskRecordRepository(transactionContext) 248 return repository.NewTaskRecordRepository(transactionContext)
249 } 249 }
  250 +
  251 +func CreateTaskLevelRepository(options map[string]interface{}) domain.TaskLevelRepository {
  252 + var transactionContext *pg.TransactionContext
  253 + if value, ok := options["transactionContext"]; ok {
  254 + transactionContext = value.(*pg.TransactionContext)
  255 + }
  256 + return repository.NewTaskLevelRepository(transactionContext)
  257 +}
@@ -45,7 +45,9 @@ func messageTaskStageAnomaly(companyId int) ([]*domain.MessagePersonal, error) { @@ -45,7 +45,9 @@ func messageTaskStageAnomaly(companyId int) ([]*domain.MessagePersonal, error) {
45 if len(userList) == 0 { 45 if len(userList) == 0 {
46 continue 46 continue
47 } 47 }
  48 + //通知相关人员
48 49
  50 + //通知负责人
49 for _, val2 := range userList { 51 for _, val2 := range userList {
50 content := "" 52 content := ""
51 if val2.Level == 1 { 53 if val2.Level == 1 {
@@ -351,7 +351,7 @@ func (srv *MessagePersonalService) TodayMessageTaskRecordAnomaly(param *command. @@ -351,7 +351,7 @@ func (srv *MessagePersonalService) TodayMessageTaskRecordAnomaly(param *command.
351 taskDao := dao.NewTaskDao(map[string]interface{}{"transactionContext": transactionContext}) 351 taskDao := dao.NewTaskDao(map[string]interface{}{"transactionContext": transactionContext})
352 // 我作为任务负责人 352 // 我作为任务负责人
353 leaderIds := []string{strconv.Itoa(param.UserId)} 353 leaderIds := []string{strconv.Itoa(param.UserId)}
354 - taskStageList, err := taskDao.TaskAnomalyByLeader(leaderIds, 2) 354 + taskStageList, err := taskDao.TaskAnomalyByLeader(leaderIds, 1)
355 if err != nil { 355 if err != nil {
356 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "检查任务里程碑异常的消息"+err.Error()) 356 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "检查任务里程碑异常的消息"+err.Error())
357 } 357 }
@@ -369,7 +369,7 @@ func (srv *MessagePersonalService) TodayMessageTaskRecordAnomaly(param *command. @@ -369,7 +369,7 @@ func (srv *MessagePersonalService) TodayMessageTaskRecordAnomaly(param *command.
369 //我作为上级, 获取我的下一级的异常任务 369 //我作为上级, 获取我的下一级的异常任务
370 var taskStageList2 []dao.TaskData2 370 var taskStageList2 []dao.TaskData2
371 if len(childUserId) > 0 { 371 if len(childUserId) > 0 {
372 - taskStageList2, err = taskDao.TaskAnomalyByLeader(childUserId, 4) 372 + taskStageList2, err = taskDao.TaskAnomalyByLeader(childUserId, 3)
373 if err != nil { 373 if err != nil {
374 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "检查任务里程碑异常的消息"+err.Error()) 374 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "检查任务里程碑异常的消息"+err.Error())
375 } 375 }
1 package command 1 package command
2 2
3 type UpdateTaskCommand struct { 3 type UpdateTaskCommand struct {
  4 + CompanyId int `json:"-"`
4 Id int `json:"id,string"` 5 Id int `json:"id,string"`
5 Alias string `json:"alias"` //任务名称 6 Alias string `json:"alias"` //任务名称
6 LevelName string `json:"levelName"` //优先级 7 LevelName string `json:"levelName"` //优先级
@@ -349,11 +349,61 @@ func (srv TaskService) UpdateTask(param *command.UpdateTaskCommand) (map[string] @@ -349,11 +349,61 @@ func (srv TaskService) UpdateTask(param *command.UpdateTaskCommand) (map[string]
349 if err := transactionContext.CommitTransaction(); err != nil { 349 if err := transactionContext.CommitTransaction(); err != nil {
350 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 350 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
351 } 351 }
  352 + err = srv.SaveTaskLevel(param.LevelName, param.CompanyId)
  353 + if err != nil {
  354 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "保存任务等级"+err.Error())
  355 + }
352 return map[string]interface{}{ 356 return map[string]interface{}{
353 "id": param.Id, 357 "id": param.Id,
354 }, nil 358 }, nil
355 } 359 }
356 360
  361 +func (srv TaskService) SaveTaskLevel(levelName string, companyId int) error {
  362 + defalutLevel := domain.DefaultTaskLevel()
  363 + for _, val := range defalutLevel {
  364 + if val.LevelName == levelName {
  365 + return nil
  366 + }
  367 + }
  368 + transactionContext, err := factory.CreateTransactionContext(nil)
  369 + if err != nil {
  370 + return application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  371 + }
  372 + if err := transactionContext.StartTransaction(); err != nil {
  373 + return application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  374 + }
  375 + defer func() {
  376 + _ = transactionContext.RollbackTransaction()
  377 + }()
  378 + taskLevelRepo := factory.CreateTaskLevelRepository(map[string]interface{}{
  379 + "transactionContext": transactionContext,
  380 + })
  381 + cnt, _, err := taskLevelRepo.Find(map[string]interface{}{
  382 + "companyId": companyId,
  383 + "levelName": levelName,
  384 + "limit": 1,
  385 + })
  386 + if err != nil {
  387 + return application.ThrowError(application.INTERNAL_SERVER_ERROR, "检查任务优先级失败:"+err.Error())
  388 + }
  389 + if cnt > 0 {
  390 + return nil
  391 + }
  392 + newTaskLevel := domain.TaskLevel{
  393 + Id: 0,
  394 + LevelName: levelName,
  395 + CompanyId: companyId,
  396 + }
  397 + err = taskLevelRepo.Save(&newTaskLevel)
  398 + if err != nil {
  399 + return application.ThrowError(application.INTERNAL_SERVER_ERROR, "保存任务优先级失败:"+err.Error())
  400 + }
  401 + if err := transactionContext.CommitTransaction(); err != nil {
  402 + return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  403 + }
  404 + return nil
  405 +}
  406 +
357 // 获取任务详情 407 // 获取任务详情
358 func (srv TaskService) GetTaskInfo(param *command.GetTaskCommand) (*adapter.TaskInfoAdapter, error) { 408 func (srv TaskService) GetTaskInfo(param *command.GetTaskCommand) (*adapter.TaskInfoAdapter, error) {
359 transactionContext, err := factory.CreateTransactionContext(nil) 409 transactionContext, err := factory.CreateTransactionContext(nil)
@@ -1471,3 +1521,37 @@ func (srv TaskService) listTask3ForHrbp(param *command.SearchTaskCommand) (map[s @@ -1471,3 +1521,37 @@ func (srv TaskService) listTask3ForHrbp(param *command.SearchTaskCommand) (map[s
1471 } 1521 }
1472 return result, nil 1522 return result, nil
1473 } 1523 }
  1524 +
  1525 +func (srv TaskService) ListTaskLevel(companyId int) (map[string]interface{}, error) {
  1526 + transactionContext, err := factory.CreateTransactionContext(nil)
  1527 + if err != nil {
  1528 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  1529 + }
  1530 + if err := transactionContext.StartTransaction(); err != nil {
  1531 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  1532 + }
  1533 + defer func() {
  1534 + _ = transactionContext.RollbackTransaction()
  1535 + }()
  1536 + taskLevelRepo := factory.CreateTaskLevelRepository(map[string]interface{}{
  1537 + "transactionContext": transactionContext,
  1538 + })
  1539 + _, taskLevelList, err := taskLevelRepo.Find(map[string]interface{}{
  1540 + "companyId": companyId,
  1541 + })
  1542 + if err != nil {
  1543 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "检查任务优先级失败:"+err.Error())
  1544 + }
  1545 +
  1546 + if err := transactionContext.CommitTransaction(); err != nil {
  1547 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  1548 + }
  1549 +
  1550 + taskLevelAll := []*domain.TaskLevel{}
  1551 + taskLevelAll = append(taskLevelAll, domain.DefaultTaskLevel()...)
  1552 + taskLevelAll = append(taskLevelAll, taskLevelList...)
  1553 + result := map[string]interface{}{
  1554 + "list": taskLevelAll,
  1555 + }
  1556 + return result, nil
  1557 +}
  1 +package domain
  2 +
  3 +// 任务有优先级
  4 +type TaskLevel struct {
  5 + Id int `json:"id"`
  6 + LevelName string `json:"levelName"`
  7 + CompanyId int `json:"companyId"`
  8 +}
  9 +
  10 +type TaskLevelRepository interface {
  11 + Save(t *TaskLevel) error
  12 + // Remove(t *TaskLevel) (*TaskLevel, error)
  13 + // FindOne(queryOptions map[string]interface{}) (*TaskLevel, error)
  14 + Find(queryOptions map[string]interface{}) (int, []*TaskLevel, error)
  15 +}
  16 +
  17 +func DefaultTaskLevel() []*TaskLevel {
  18 + return []*TaskLevel{
  19 + {
  20 + Id: 0,
  21 + LevelName: "战略任务",
  22 + CompanyId: 0,
  23 + },
  24 + {
  25 + Id: 0,
  26 + LevelName: "重点任务",
  27 + CompanyId: 0,
  28 + },
  29 + {
  30 + Id: 0,
  31 + LevelName: "常规任务",
  32 + CompanyId: 0,
  33 + },
  34 + }
  35 +}
@@ -595,7 +595,7 @@ type TaskData4 struct { @@ -595,7 +595,7 @@ type TaskData4 struct {
595 LeaderId int `pg:"leader_id"` 595 LeaderId int `pg:"leader_id"`
596 } 596 }
597 597
598 -// TaskStageAnomalyAll 获取所有异常的里程碑任务 598 +// TaskStageAnomalyAll 获取所有异常的里程碑任务
599 func (d TaskDao) TaskStageAnomalyAll(companyId int) ([]TaskData4, error) { 599 func (d TaskDao) TaskStageAnomalyAll(companyId int) ([]TaskData4, error) {
600 sqlStr := `select distinct 600 sqlStr := `select distinct
601 task.id as task_id, 601 task.id as task_id,
@@ -56,6 +56,7 @@ func init() { @@ -56,6 +56,7 @@ func init() {
56 &models.TaskStage{}, 56 &models.TaskStage{},
57 &models.TaskIgnore{}, 57 &models.TaskIgnore{},
58 &models.TaskRecord{}, 58 &models.TaskRecord{},
  59 + &models.TaskLevel{},
59 } 60 }
60 for _, model := range tables { 61 for _, model := range tables {
61 err := DB.Model(model).CreateTable(&orm.CreateTableOptions{ 62 err := DB.Model(model).CreateTable(&orm.CreateTableOptions{
  1 +package models
  2 +
  3 +// 任务优先级
  4 +type TaskLevel struct {
  5 + tableName struct{} `comment:"任务优先级" pg:"task_level"`
  6 + Id int `pg:"id"`
  7 + LevelName string `pg:"level_name"`
  8 + CompanyId int `pg:"company_id"`
  9 +}
  1 +package repository
  2 +
  3 +import (
  4 + pgTransaction "github.com/linmadan/egglib-go/transaction/pg"
  5 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
  6 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/infrastructure/pg/models"
  7 +)
  8 +
  9 +//任务
  10 +
  11 +type TaskLevelRepository struct {
  12 + transactionContext *pgTransaction.TransactionContext
  13 +}
  14 +
  15 +var _ domain.TaskLevelRepository = (*TaskLevelRepository)(nil)
  16 +
  17 +func NewTaskLevelRepository(transactionContext *pgTransaction.TransactionContext) *TaskLevelRepository {
  18 + return &TaskLevelRepository{transactionContext: transactionContext}
  19 +}
  20 +
  21 +func (repo *TaskLevelRepository) TransformToDomain(d *models.TaskLevel) *domain.TaskLevel {
  22 + return &domain.TaskLevel{
  23 + Id: d.Id,
  24 + LevelName: d.LevelName,
  25 + CompanyId: d.CompanyId,
  26 + }
  27 +}
  28 +
  29 +func (repo *TaskLevelRepository) Save(param *domain.TaskLevel) error {
  30 +
  31 + m := models.TaskLevel{
  32 + Id: param.Id,
  33 + LevelName: param.LevelName,
  34 + CompanyId: param.CompanyId,
  35 + }
  36 + db := repo.transactionContext.PgTx
  37 + if m.Id == 0 {
  38 + _, err := db.Model(&m).Insert()
  39 + if err != nil {
  40 + return err
  41 + }
  42 + } else {
  43 + _, err := db.Model(&m).WherePK().Update()
  44 + if err != nil {
  45 + return err
  46 + }
  47 + }
  48 + param.Id = m.Id
  49 + return nil
  50 +}
  51 +
  52 +func (repo *TaskLevelRepository) Find(queryOptions map[string]interface{}) (int, []*domain.TaskLevel, error) {
  53 + tx := repo.transactionContext.PgTx
  54 + var m []*models.TaskLevel
  55 + query := tx.Model(&m)
  56 + if v, ok := queryOptions["companyId"]; ok {
  57 + query.Where("company_id=?", v)
  58 + }
  59 + if v, ok := queryOptions["levelName"]; ok {
  60 + query.Where("level_name=?", v)
  61 + }
  62 + query.Order("id desc")
  63 + count, err := query.SelectAndCount()
  64 + if err != nil {
  65 + return 0, nil, err
  66 + }
  67 + var datas []*domain.TaskLevel
  68 + for _, v := range m {
  69 + d := repo.TransformToDomain(v)
  70 + datas = append(datas, d)
  71 + }
  72 + return count, datas, nil
  73 +}
@@ -39,7 +39,8 @@ func (c *TaskController) UpdateTask() { @@ -39,7 +39,8 @@ func (c *TaskController) UpdateTask() {
39 c.Response(nil, e) 39 c.Response(nil, e)
40 return 40 return
41 } 41 }
42 - 42 + userReq := middlewares.GetUser(c.Ctx)
  43 + paramReq.CompanyId = int(userReq.CompanyId)
43 data, err := srv.UpdateTask(paramReq) 44 data, err := srv.UpdateTask(paramReq)
44 c.Response(data, err) 45 c.Response(data, err)
45 } 46 }
@@ -189,3 +190,11 @@ func (c *TaskController) SelectCondition() { @@ -189,3 +190,11 @@ func (c *TaskController) SelectCondition() {
189 data, err := srv.ConditionForListTask2(paramReq) 190 data, err := srv.ConditionForListTask2(paramReq)
190 c.Response(data, err) 191 c.Response(data, err)
191 } 192 }
  193 +
  194 +func (c *TaskController) LevelList() {
  195 + srv := service.NewTaskService()
  196 + userReq := middlewares.GetUser(c.Ctx)
  197 + companyId := int(userReq.CompanyId)
  198 + data, err := srv.ListTaskLevel(companyId)
  199 + c.Response(data, err)
  200 +}
@@ -17,6 +17,7 @@ func init() { @@ -17,6 +17,7 @@ func init() {
17 web.NSCtrlPost("/run", (*controllers.TaskController).RunTask), 17 web.NSCtrlPost("/run", (*controllers.TaskController).RunTask),
18 web.NSCtrlPost("/stop", (*controllers.TaskController).StopTask), 18 web.NSCtrlPost("/stop", (*controllers.TaskController).StopTask),
19 web.NSCtrlPost("/list", (*controllers.TaskController).ListTask), 19 web.NSCtrlPost("/list", (*controllers.TaskController).ListTask),
  20 + web.NSCtrlGet("/level/list", (*controllers.TaskController).LevelList),
20 ) 21 )
21 web.AddNamespace(taskAdminNS) 22 web.AddNamespace(taskAdminNS)
22 // 员工绩效模块 23 // 员工绩效模块