作者 tangxvhui

调整检查task_record 的逻辑

@@ -255,3 +255,11 @@ func CreateTaskLevelRepository(options map[string]interface{}) domain.TaskLevelR @@ -255,3 +255,11 @@ func CreateTaskLevelRepository(options map[string]interface{}) domain.TaskLevelR
255 } 255 }
256 return repository.NewTaskLevelRepository(transactionContext) 256 return repository.NewTaskLevelRepository(transactionContext)
257 } 257 }
  258 +
  259 +func CreateTaskAnomalyRepository(options map[string]interface{}) domain.TaskAnomalyRepository {
  260 + var transactionContext *pg.TransactionContext
  261 + if value, ok := options["transactionContext"]; ok {
  262 + transactionContext = value.(*pg.TransactionContext)
  263 + }
  264 + return repository.NewTaskAnomalyRepository(transactionContext)
  265 +}
@@ -11,8 +11,6 @@ import ( @@ -11,8 +11,6 @@ import (
11 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain" 11 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
12 ) 12 )
13 13
14 -//TODO 检查任务里程碑反馈, 记录异常情况  
15 -  
16 // 检查昨日提交的任务里程碑反馈 14 // 检查昨日提交的任务里程碑反馈
17 func CheckYesterdayTaskRecord() { 15 func CheckYesterdayTaskRecord() {
18 nowTime := time.Now() 16 nowTime := time.Now()
@@ -2,11 +2,15 @@ package service @@ -2,11 +2,15 @@ package service
2 2
3 import ( 3 import (
4 "fmt" 4 "fmt"
  5 + "time"
5 6
  7 + "github.com/linmadan/egglib-go/core/application"
6 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory" 8 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory"
7 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain" 9 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
8 ) 10 )
9 11
  12 +// TODO 检查任务里程碑反馈, 记录异常情况
  13 +
10 func checkTaskRecordV2(param *domain.TaskRecord) error { 14 func checkTaskRecordV2(param *domain.TaskRecord) error {
11 transactionContext, err := factory.CreateTransactionContext(nil) 15 transactionContext, err := factory.CreateTransactionContext(nil)
12 if err != nil { 16 if err != nil {
@@ -21,7 +25,6 @@ func checkTaskRecordV2(param *domain.TaskRecord) error { @@ -21,7 +25,6 @@ func checkTaskRecordV2(param *domain.TaskRecord) error {
21 taskRepo := factory.CreateTaskRepository(map[string]interface{}{ 25 taskRepo := factory.CreateTaskRepository(map[string]interface{}{
22 "transactionContext": transactionContext, 26 "transactionContext": transactionContext,
23 }) 27 })
24 -  
25 _, taskDataList, err := taskRepo.Find(map[string]interface{}{"id": param.TaskId}) 28 _, taskDataList, err := taskRepo.Find(map[string]interface{}{"id": param.TaskId})
26 if err != nil { 29 if err != nil {
27 return fmt.Errorf("获取任务数据失败:%s", err) 30 return fmt.Errorf("获取任务数据失败:%s", err)
@@ -30,17 +33,85 @@ func checkTaskRecordV2(param *domain.TaskRecord) error { @@ -30,17 +33,85 @@ func checkTaskRecordV2(param *domain.TaskRecord) error {
30 return nil 33 return nil
31 } 34 }
32 taskData := taskDataList[0] 35 taskData := taskDataList[0]
  36 +
  37 + //userDao := dao.NewUserDao(map[string]interface{}{"transactionContext": transactionContext})
  38 +
  39 + // 反馈异常,里程碑异常, 辅导异常
  40 + // 检查反馈异常
  41 + if param.IsRemarkAnomaly() {
  42 + taskData.Anomaly += 1
  43 + // err = isAssessFlag(transactionContext, taskData)
  44 + // if err != nil {
  45 + // return err
  46 + // }
  47 + } else {
  48 + taskData.Anomaly = 0
  49 + }
  50 + // 检查里程碑异常
  51 + if param.IsTaskStageAnomaly() {
  52 + taskData.WarnFlag = domain.TaskWarn
  53 + err := isWarnFlag(transactionContext, taskData)
  54 + if err != nil {
  55 + return err
  56 + }
  57 + } else {
  58 + taskData.WarnFlag = domain.TaskWarnNull
  59 + }
  60 + // 检查辅导异常
  61 + if param.IsAssistAnomaly() {
  62 + taskData.AssistFlag += 1
  63 + err = isAssistFlag(transactionContext, taskData)
  64 + if err != nil {
  65 + return err
  66 + }
  67 + } else {
  68 + taskData.AssistFlag = 0
  69 + }
  70 + // 保存任务数据
  71 + err = taskRepo.Save(taskData)
  72 + if err != nil {
  73 + return fmt.Errorf("保存任务数据:%s", err)
  74 + }
  75 +
  76 + if err := transactionContext.CommitTransaction(); err != nil {
  77 + return err
  78 + }
  79 + return nil
  80 +}
  81 +
  82 +// 处理里程碑异常的情况
  83 +func isWarnFlag(transactionContext application.TransactionContext, taskData *domain.Task) error {
  84 + taskAnomalyRepo := factory.CreateTaskAnomalyRepository(map[string]interface{}{
  85 + "transactionContext": transactionContext,
  86 + })
  87 +
  88 + userRepo := factory.CreateUserRepository(map[string]interface{}{
  89 + "transactionContext": transactionContext,
  90 + })
  91 + //获取任务Leader的数据
  92 + _, useList, err := userRepo.Find(map[string]interface{}{"id": taskData.Leader.Id, "limit": 1})
  93 + if err != nil {
  94 + return fmt.Errorf("获取任务Leader:%s", err)
  95 + }
  96 + if len(useList) == 0 {
  97 + return nil
  98 + }
  99 + _, oldAnomaly, err := taskAnomalyRepo.Find(map[string]interface{}{"isLast": 1, "category": 2, "limit": 1})
  100 + if err != nil {
  101 + return fmt.Errorf("查询反馈异常的数据:%s", err)
  102 + }
  103 + // 异常就通知自己和上级
33 anomalyDataTmp := domain.TaskAnomaly{ 104 anomalyDataTmp := domain.TaskAnomaly{
34 Id: taskData.Id, 105 Id: taskData.Id,
35 CreatedAt: taskData.CreatedAt, 106 CreatedAt: taskData.CreatedAt,
36 UpdatedAt: taskData.UpdatedAt, 107 UpdatedAt: taskData.UpdatedAt,
37 CompanyId: taskData.CompanyId, 108 CompanyId: taskData.CompanyId,
38 TaskId: taskData.Id, 109 TaskId: taskData.Id,
39 - Category: 0, 110 + Category: 1,
40 CurrentStage: taskData.CurrentStage, 111 CurrentStage: taskData.CurrentStage,
41 LastStage: taskData.LastStage, 112 LastStage: taskData.LastStage,
42 AssessFlag: 0, 113 AssessFlag: 0,
43 - WarnFlag: 0, 114 + WarnFlag: int(taskData.WarnFlag),
44 AssistFlag: 0, 115 AssistFlag: 0,
45 IsLast: 1, 116 IsLast: 1,
46 TaskLevel: taskData.LevelName, 117 TaskLevel: taskData.LevelName,
@@ -48,45 +119,102 @@ func checkTaskRecordV2(param *domain.TaskRecord) error { @@ -48,45 +119,102 @@ func checkTaskRecordV2(param *domain.TaskRecord) error {
48 TaskAlias: taskData.Alias, 119 TaskAlias: taskData.Alias,
49 TaskSortBy: taskData.SortBy, 120 TaskSortBy: taskData.SortBy,
50 TaskEndTime: taskData.EndTime, 121 TaskEndTime: taskData.EndTime,
51 - RecordBegin: 0,  
52 - NoticeWho: []int64{}, 122 + RecordBegin: time.Now().Unix(),
  123 + NoticeWho: []int64{taskData.Leader.Id, useList[0].ParentId},
53 Marks: map[string]string{ 124 Marks: map[string]string{
54 "a": "", "b": "", "c": "", "d": "", 125 "a": "", "b": "", "c": "", "d": "",
55 }, 126 },
56 } 127 }
57 - var anomalyList []domain.TaskAnomaly  
58 128
59 - // 检查反馈异常  
60 - if param.IsRemarkAnomaly() {  
61 - taskData.Anomaly += 1  
62 - anomalyDataTmp.Category = 2  
63 - anomalyList = append(anomalyList, anomalyDataTmp)  
64 - } else {  
65 - taskData.Anomaly = 0  
66 - }  
67 - // 检查里程碑异常  
68 - if param.IsTaskStageAnomaly() {  
69 - taskData.WarnFlag = domain.TaskWarn  
70 - anomalyDataTmp.Category = 1  
71 - anomalyList = append(anomalyList, anomalyDataTmp)  
72 - } else {  
73 - taskData.WarnFlag = domain.TaskWarnNull 129 + if len(oldAnomaly) > 0 {
  130 + anomalyDataTmp.RecordBegin = oldAnomaly[0].RecordBegin
  131 + anomalyDataTmp.WarnFlag = oldAnomaly[0].WarnFlag + 1
  132 + oldAnomaly[0].IsLast = 2
  133 + err = taskAnomalyRepo.Save(oldAnomaly[0])
  134 + if err != nil {
  135 + return fmt.Errorf("更新里程碑异常记录:%s", err)
  136 + }
74 } 137 }
75 - // 检查辅导异常  
76 - if param.IsAssistAnomaly() {  
77 - taskData.AssistFlag += 1  
78 - anomalyDataTmp.Category = 3  
79 - anomalyList = append(anomalyList, anomalyDataTmp)  
80 - } else {  
81 - taskData.AssistFlag = 0 138 + err = taskAnomalyRepo.Save(&anomalyDataTmp)
  139 + if err != nil {
  140 + return fmt.Errorf("保存里程碑异常记录:%s", err)
82 } 141 }
  142 + return nil
  143 +}
83 144
84 - err = taskRepo.Save(taskData) 145 +// 处理辅导异常的情况
  146 +func isAssistFlag(transactionContext application.TransactionContext, taskData *domain.Task) error {
  147 + taskAnomalyRepo := factory.CreateTaskAnomalyRepository(map[string]interface{}{
  148 + "transactionContext": transactionContext,
  149 + })
  150 +
  151 + userRepo := factory.CreateUserRepository(map[string]interface{}{
  152 + "transactionContext": transactionContext,
  153 + })
  154 + //获取任务Leader的数据
  155 + _, useList, err := userRepo.Find(map[string]interface{}{"id": taskData.Leader.Id, "limit": 1})
85 if err != nil { 156 if err != nil {
86 - return fmt.Errorf("保存任务数据:%s", err) 157 + return fmt.Errorf("获取任务Leader:%s", err)
87 } 158 }
88 - if err := transactionContext.CommitTransaction(); err != nil {  
89 - return err 159 + if len(useList) == 0 {
  160 + return nil
  161 + }
  162 + _, oldAnomaly, err := taskAnomalyRepo.Find(map[string]interface{}{"isLast": 1, "category": 3, "limit": 1})
  163 + if err != nil {
  164 + return fmt.Errorf("查询反馈异常的数据:%s", err)
  165 + }
  166 + // 辅导异常通知该条任务负责人的上级;辅导异常超过3天,通知任务负责人的上上级
  167 + anomalyDataTmp := domain.TaskAnomaly{
  168 + Id: taskData.Id,
  169 + CreatedAt: taskData.CreatedAt,
  170 + UpdatedAt: taskData.UpdatedAt,
  171 + CompanyId: taskData.CompanyId,
  172 + TaskId: taskData.Id,
  173 + Category: 3,
  174 + CurrentStage: taskData.CurrentStage,
  175 + LastStage: taskData.LastStage,
  176 + AssessFlag: 0,
  177 + WarnFlag: 0,
  178 + AssistFlag: taskData.AssistFlag,
  179 + IsLast: 1,
  180 + TaskLevel: taskData.LevelName,
  181 + TaskName: taskData.Name,
  182 + TaskAlias: taskData.Alias,
  183 + TaskSortBy: taskData.SortBy,
  184 + TaskEndTime: taskData.EndTime,
  185 + RecordBegin: time.Now().Unix(),
  186 + NoticeWho: []int64{useList[0].ParentId},
  187 + Marks: map[string]string{
  188 + "a": "", "b": "", "c": "", "d": "",
  189 + },
  190 + }
  191 + if taskData.AssistFlag >= taskData.AssistFlagMax {
  192 + //通知任务负责人的上上级
  193 + _, useList2, err := userRepo.Find(map[string]interface{}{"id": useList[0].ParentId, "limit": 1})
  194 + if err != nil {
  195 + return fmt.Errorf("获取任务Leader:%s", err)
  196 + }
  197 + if len(useList2) > 0 {
  198 + anomalyDataTmp.NoticeWho = append(anomalyDataTmp.NoticeWho, useList2[0].Id)
  199 + }
  200 + }
  201 + if len(oldAnomaly) > 0 {
  202 + anomalyDataTmp.RecordBegin = oldAnomaly[0].RecordBegin
  203 + oldAnomaly[0].IsLast = 2
  204 + err = taskAnomalyRepo.Save(oldAnomaly[0])
  205 + if err != nil {
  206 + return fmt.Errorf("更新里程碑异常记录:%s", err)
  207 + }
90 } 208 }
  209 + err = taskAnomalyRepo.Save(&anomalyDataTmp)
  210 + if err != nil {
  211 + return fmt.Errorf("保存里程碑异常记录:%s", err)
  212 + }
  213 + return nil
  214 +
  215 +}
  216 +
  217 +// 处理反馈异常的情况
  218 +func isAssessFlag(transactionContext application.TransactionContext, taskData *domain.Task) error {
91 return nil 219 return nil
92 } 220 }
@@ -21,7 +21,7 @@ type TaskAnomaly struct { @@ -21,7 +21,7 @@ type TaskAnomaly struct {
21 TaskAlias string `json:"taskAlias"` // 任务别名 21 TaskAlias string `json:"taskAlias"` // 任务别名
22 TaskSortBy TaskSortBy `json:"taskSortBy"` // 优先级排序;值越小优先级越高 22 TaskSortBy TaskSortBy `json:"taskSortBy"` // 优先级排序;值越小优先级越高
23 TaskEndTime int64 `json:"taskEndTime"` // 任务截止的时间戳,单位:秒;等于0时表示未设置时间 23 TaskEndTime int64 `json:"taskEndTime"` // 任务截止的时间戳,单位:秒;等于0时表示未设置时间
24 - RecordBegin int `json:"recordBegin"` // 异常记录的开始时间 24 + RecordBegin int64 `json:"recordBegin"` // 异常记录的开始时间
25 NoticeWho []int64 `json:"noticeWho"` // 异常记录消息通知的人 25 NoticeWho []int64 `json:"noticeWho"` // 异常记录消息通知的人
26 Marks map[string]string `json:"marks"` // 已经操作的标记 26 Marks map[string]string `json:"marks"` // 已经操作的标记
27 } 27 }
@@ -26,7 +26,7 @@ type TaskAnomaly struct { @@ -26,7 +26,7 @@ type TaskAnomaly struct {
26 TaskAlias string `pg:"task_alias"` // 任务别名 26 TaskAlias string `pg:"task_alias"` // 任务别名
27 TaskSortBy int `pg:"task_sort_by"` // 优先级排序;值越小优先级越高 27 TaskSortBy int `pg:"task_sort_by"` // 优先级排序;值越小优先级越高
28 TaskEndTime int64 `pg:"task_end_time,use_zero"` // 任务截止的时间戳,单位:秒;等于0时表示未设置时间 28 TaskEndTime int64 `pg:"task_end_time,use_zero"` // 任务截止的时间戳,单位:秒;等于0时表示未设置时间
29 - RecordBegin int `pg:"record_begin"` // 异常记录的开始时间 29 + RecordBegin int64 `pg:"record_begin"` // 异常记录的开始时间
30 NoticeWho []int64 `pg:"notice_who"` // 异常记录消息通知的人 30 NoticeWho []int64 `pg:"notice_who"` // 异常记录消息通知的人
31 Marks map[string]string `pg:"marks"` // 已经操作的标记 31 Marks map[string]string `pg:"marks"` // 已经操作的标记
32 } 32 }
@@ -14,75 +14,67 @@ import ( @@ -14,75 +14,67 @@ import (
14 14
15 //任务 15 //任务
16 16
17 -type TaskRepository struct { 17 +type TaskAnomalyRepository struct {
18 transactionContext *pgTransaction.TransactionContext 18 transactionContext *pgTransaction.TransactionContext
19 } 19 }
20 20
21 -var _ domain.TaskRepository = (*TaskRepository)(nil) 21 +var _ domain.TaskAnomalyRepository = (*TaskAnomalyRepository)(nil)
22 22
23 -func NewTaskRepository(transactionContext *pgTransaction.TransactionContext) *TaskRepository {  
24 - return &TaskRepository{transactionContext: transactionContext} 23 +func NewTaskAnomalyRepository(transactionContext *pgTransaction.TransactionContext) *TaskAnomalyRepository {
  24 + return &TaskAnomalyRepository{transactionContext: transactionContext}
25 } 25 }
26 26
27 -func (repo *TaskRepository) TransformToDomain(d *models.Task) *domain.Task {  
28 - return &domain.Task{  
29 - Id: d.Id,  
30 - CreatedAt: d.CreatedAt,  
31 - UpdatedAt: d.UpdatedAt,  
32 - DeletedAt: d.DeletedAt,  
33 - CompanyId: d.CompanyId,  
34 - Name: d.Name,  
35 - Alias: d.Alias,  
36 - Leader: d.Leader,  
37 - Status: domain.TaskState(d.Status),  
38 - Level: d.Level,  
39 - LevelName: d.LevelName,  
40 - SortBy: domain.TaskSortBy(d.SortBy),  
41 - EndTime: d.EndTime,  
42 - UseEndTime: d.UseEndTime,  
43 - RelatedUser: d.RelatedUser,  
44 - RunAt: d.RunAt,  
45 - StopAt: d.StopAt,  
46 - Anomaly: d.Anomaly,  
47 - WarnFlag: domain.TaskWarnFlag(d.WarnFlag),  
48 - AssistFlag: d.AssistFlag,  
49 - AssistFlagMax: d.AssistFlagMax,  
50 - CurrentStage: d.CurrentStage,  
51 - LastStage: d.LastStage,  
52 - CreatedBy: d.CreatedBy, 27 +func (repo *TaskAnomalyRepository) TransformToDomain(d *models.TaskAnomaly) *domain.TaskAnomaly {
  28 + return &domain.TaskAnomaly{
  29 + Id: d.Id,
  30 + CreatedAt: d.CreatedAt,
  31 + UpdatedAt: d.UpdatedAt,
  32 + CompanyId: d.CompanyId,
  33 + TaskId: d.TaskId,
  34 + Category: d.Category,
  35 + CurrentStage: d.CurrentStage,
  36 + LastStage: d.LastStage,
  37 + AssessFlag: d.AssessFlag,
  38 + WarnFlag: d.WarnFlag,
  39 + AssistFlag: d.AssistFlag,
  40 + IsLast: d.IsLast,
  41 + TaskLevel: d.TaskLevel,
  42 + TaskName: d.TaskName,
  43 + TaskAlias: d.TaskAlias,
  44 + TaskSortBy: domain.TaskSortBy(d.TaskSortBy),
  45 + TaskEndTime: d.TaskEndTime,
  46 + RecordBegin: d.RecordBegin,
  47 + NoticeWho: d.NoticeWho,
  48 + Marks: d.Marks,
53 } 49 }
54 } 50 }
55 51
56 -func (repo *TaskRepository) Save(param *domain.Task) error { 52 +func (repo *TaskAnomalyRepository) Save(param *domain.TaskAnomaly) error {
57 param.UpdatedAt = time.Now() 53 param.UpdatedAt = time.Now()
58 if param.Id == 0 { 54 if param.Id == 0 {
59 param.CreatedAt = time.Now() 55 param.CreatedAt = time.Now()
60 } 56 }
61 - m := models.Task{  
62 - Id: param.Id,  
63 - CreatedAt: param.CreatedAt,  
64 - UpdatedAt: param.UpdatedAt,  
65 - DeletedAt: param.DeletedAt,  
66 - Name: param.Name,  
67 - Alias: param.Alias,  
68 - CompanyId: param.CompanyId,  
69 - Leader: param.Leader,  
70 - Status: int(param.Status),  
71 - Level: param.Level,  
72 - LevelName: param.LevelName,  
73 - RelatedUser: param.RelatedUser,  
74 - LastStage: param.LastStage,  
75 - RunAt: param.RunAt,  
76 - StopAt: param.StopAt,  
77 - Anomaly: param.Anomaly,  
78 - WarnFlag: int(param.WarnFlag),  
79 - CurrentStage: param.CurrentStage,  
80 - SortBy: int(param.SortBy),  
81 - EndTime: param.EndTime,  
82 - UseEndTime: param.UseEndTime,  
83 - AssistFlag: param.AssistFlag,  
84 - AssistFlagMax: param.AssistFlagMax,  
85 - CreatedBy: param.CreatedBy, 57 + m := models.TaskAnomaly{
  58 + Id: param.Id,
  59 + CreatedAt: param.CreatedAt,
  60 + UpdatedAt: param.UpdatedAt,
  61 + CompanyId: param.CompanyId,
  62 + TaskId: param.TaskId,
  63 + Category: param.Category,
  64 + CurrentStage: param.CurrentStage,
  65 + LastStage: param.LastStage,
  66 + AssessFlag: param.AssessFlag,
  67 + WarnFlag: param.WarnFlag,
  68 + AssistFlag: param.AssistFlag,
  69 + IsLast: param.IsLast,
  70 + TaskLevel: param.TaskLevel,
  71 + TaskName: param.TaskName,
  72 + TaskAlias: param.TaskAlias,
  73 + TaskSortBy: int(param.TaskSortBy),
  74 + TaskEndTime: param.TaskEndTime,
  75 + RecordBegin: param.RecordBegin,
  76 + NoticeWho: param.NoticeWho,
  77 + Marks: param.Marks,
86 } 78 }
87 db := repo.transactionContext.PgTx 79 db := repo.transactionContext.PgTx
88 if m.Id == 0 { 80 if m.Id == 0 {
@@ -100,28 +92,16 @@ func (repo *TaskRepository) Save(param *domain.Task) error { @@ -100,28 +92,16 @@ func (repo *TaskRepository) Save(param *domain.Task) error {
100 return nil 92 return nil
101 } 93 }
102 94
103 -func (repo *TaskRepository) Remove(id int) error { 95 +func (repo *TaskAnomalyRepository) FindOne(queryOptions map[string]interface{}) (*domain.TaskAnomaly, error) {
104 tx := repo.transactionContext.PgTx 96 tx := repo.transactionContext.PgTx
105 - nowTime := time.Now()  
106 - _, err := tx.Model(&models.Task{}).  
107 - Where("id=?", id).  
108 - Set("deleted_at=?", nowTime).  
109 - Update()  
110 - return err  
111 -  
112 -}  
113 -  
114 -func (repo *TaskRepository) FindOne(queryOptions map[string]interface{}) (*domain.Task, error) {  
115 - tx := repo.transactionContext.PgTx  
116 - m := new(models.Task) 97 + m := new(models.TaskAnomaly)
117 query := tx.Model(m) 98 query := tx.Model(m)
118 - query.Where("deleted_at isnull")  
119 if id, ok := queryOptions["id"]; ok { 99 if id, ok := queryOptions["id"]; ok {
120 query.Where("id=?", id) 100 query.Where("id=?", id)
121 } 101 }
122 if err := query.First(); err != nil { 102 if err := query.First(); err != nil {
123 if errors.Is(err, pg.ErrNoRows) { 103 if errors.Is(err, pg.ErrNoRows) {
124 - return nil, fmt.Errorf("没有找到task数据") 104 + return nil, fmt.Errorf("没有找到TaskAnomaly数据")
125 } else { 105 } else {
126 return nil, err 106 return nil, err
127 } 107 }
@@ -130,33 +110,10 @@ func (repo *TaskRepository) FindOne(queryOptions map[string]interface{}) (*domai @@ -130,33 +110,10 @@ func (repo *TaskRepository) FindOne(queryOptions map[string]interface{}) (*domai
130 return u, nil 110 return u, nil
131 } 111 }
132 112
133 -func (repo *TaskRepository) Find(queryOptions map[string]interface{}) (int, []*domain.Task, error) { 113 +func (repo *TaskAnomalyRepository) Find(queryOptions map[string]interface{}) (int, []*domain.TaskAnomaly, error) {
134 tx := repo.transactionContext.PgTx 114 tx := repo.transactionContext.PgTx
135 - var m []*models.Task  
136 - query := tx.Model(&m).  
137 - Where("deleted_at isnull").  
138 - Limit(20)  
139 - if val, ok := queryOptions["name"]; ok {  
140 - query.Where("task.name like ?", val)  
141 - }  
142 - if val, ok := queryOptions["companyId"]; ok {  
143 - query.Where("task.company_id = ?", val)  
144 - }  
145 - if val, ok := queryOptions["id"]; ok {  
146 - query.Where("task.id=?", val)  
147 - }  
148 - if val, ok := queryOptions["leaderId"]; ok {  
149 - query.Where("task.leader->>'id'=?", val)  
150 - }  
151 - if val, ok := queryOptions["aliasOrLeader"]; ok {  
152 - query.Where(`task.alias like ? or task.leader->>'name' like ?`, val, val)  
153 - }  
154 - if val, ok := queryOptions["status"]; ok {  
155 - query.Where("task.status=?", val)  
156 - }  
157 - if val, ok := queryOptions["createdBy"]; ok {  
158 - query.Where("created_by = ?", val)  
159 - } 115 + var m []*models.TaskAnomaly
  116 + query := tx.Model(&m)
160 if val, ok := queryOptions["limit"]; ok { 117 if val, ok := queryOptions["limit"]; ok {
161 if limit, err := strconv.Atoi(fmt.Sprintf("%v", val)); err == nil { 118 if limit, err := strconv.Atoi(fmt.Sprintf("%v", val)); err == nil {
162 query.Limit(limit) 119 query.Limit(limit)
@@ -167,12 +124,21 @@ func (repo *TaskRepository) Find(queryOptions map[string]interface{}) (int, []*d @@ -167,12 +124,21 @@ func (repo *TaskRepository) Find(queryOptions map[string]interface{}) (int, []*d
167 query.Offset(offset) 124 query.Offset(offset)
168 } 125 }
169 } 126 }
  127 + if val, ok := queryOptions["category"]; ok {
  128 + query.Where(" category =? ", val)
  129 + }
  130 + if val, ok := queryOptions["currentStage"]; ok {
  131 + query.Where("current_stage @> ?", val)
  132 + }
  133 + if val, ok := queryOptions["isLast"]; ok {
  134 + query.Where("is_last=?", val)
  135 + }
170 query.Order("id desc") 136 query.Order("id desc")
171 count, err := query.SelectAndCount() 137 count, err := query.SelectAndCount()
172 if err != nil { 138 if err != nil {
173 return 0, nil, err 139 return 0, nil, err
174 } 140 }
175 - var datas []*domain.Task 141 + var datas []*domain.TaskAnomaly
176 for _, v := range m { 142 for _, v := range m {
177 d := repo.TransformToDomain(v) 143 d := repo.TransformToDomain(v)
178 datas = append(datas, d) 144 datas = append(datas, d)
@@ -14,67 +14,75 @@ import ( @@ -14,67 +14,75 @@ import (
14 14
15 //任务 15 //任务
16 16
17 -type TaskAnomalyRepository struct { 17 +type TaskRepository struct {
18 transactionContext *pgTransaction.TransactionContext 18 transactionContext *pgTransaction.TransactionContext
19 } 19 }
20 20
21 -var _ domain.TaskAnomalyRepository = (*TaskAnomalyRepository)(nil) 21 +var _ domain.TaskRepository = (*TaskRepository)(nil)
22 22
23 -func NewTaskAnomalyRepository(transactionContext *pgTransaction.TransactionContext) *TaskAnomalyRepository {  
24 - return &TaskAnomalyRepository{transactionContext: transactionContext} 23 +func NewTaskRepository(transactionContext *pgTransaction.TransactionContext) *TaskRepository {
  24 + return &TaskRepository{transactionContext: transactionContext}
25 } 25 }
26 26
27 -func (repo *TaskAnomalyRepository) TransformToDomain(d *models.TaskAnomaly) *domain.TaskAnomaly {  
28 - return &domain.TaskAnomaly{  
29 - Id: d.Id,  
30 - CreatedAt: d.CreatedAt,  
31 - UpdatedAt: d.UpdatedAt,  
32 - CompanyId: d.CompanyId,  
33 - TaskId: d.TaskId,  
34 - Category: d.Category,  
35 - CurrentStage: d.CurrentStage,  
36 - LastStage: d.LastStage,  
37 - AssessFlag: d.AssessFlag,  
38 - WarnFlag: d.WarnFlag,  
39 - AssistFlag: d.AssistFlag,  
40 - IsLast: d.IsLast,  
41 - TaskLevel: d.TaskLevel,  
42 - TaskName: d.TaskName,  
43 - TaskAlias: d.TaskAlias,  
44 - TaskSortBy: domain.TaskSortBy(d.TaskSortBy),  
45 - TaskEndTime: d.TaskEndTime,  
46 - RecordBegin: d.RecordBegin,  
47 - NoticeWho: d.NoticeWho,  
48 - Marks: d.Marks, 27 +func (repo *TaskRepository) TransformToDomain(d *models.Task) *domain.Task {
  28 + return &domain.Task{
  29 + Id: d.Id,
  30 + CreatedAt: d.CreatedAt,
  31 + UpdatedAt: d.UpdatedAt,
  32 + DeletedAt: d.DeletedAt,
  33 + CompanyId: d.CompanyId,
  34 + Name: d.Name,
  35 + Alias: d.Alias,
  36 + Leader: d.Leader,
  37 + Status: domain.TaskState(d.Status),
  38 + Level: d.Level,
  39 + LevelName: d.LevelName,
  40 + SortBy: domain.TaskSortBy(d.SortBy),
  41 + EndTime: d.EndTime,
  42 + UseEndTime: d.UseEndTime,
  43 + RelatedUser: d.RelatedUser,
  44 + RunAt: d.RunAt,
  45 + StopAt: d.StopAt,
  46 + Anomaly: d.Anomaly,
  47 + WarnFlag: domain.TaskWarnFlag(d.WarnFlag),
  48 + AssistFlag: d.AssistFlag,
  49 + AssistFlagMax: d.AssistFlagMax,
  50 + CurrentStage: d.CurrentStage,
  51 + LastStage: d.LastStage,
  52 + CreatedBy: d.CreatedBy,
49 } 53 }
50 } 54 }
51 55
52 -func (repo *TaskAnomalyRepository) Save(param *domain.TaskAnomaly) error { 56 +func (repo *TaskRepository) Save(param *domain.Task) error {
53 param.UpdatedAt = time.Now() 57 param.UpdatedAt = time.Now()
54 if param.Id == 0 { 58 if param.Id == 0 {
55 param.CreatedAt = time.Now() 59 param.CreatedAt = time.Now()
56 } 60 }
57 - m := models.TaskAnomaly{  
58 - Id: param.Id,  
59 - CreatedAt: param.CreatedAt,  
60 - UpdatedAt: param.UpdatedAt,  
61 - CompanyId: param.CompanyId,  
62 - TaskId: param.TaskId,  
63 - Category: param.Category,  
64 - CurrentStage: param.CurrentStage,  
65 - LastStage: param.LastStage,  
66 - AssessFlag: param.AssessFlag,  
67 - WarnFlag: param.WarnFlag,  
68 - AssistFlag: param.AssistFlag,  
69 - IsLast: param.IsLast,  
70 - TaskLevel: param.TaskLevel,  
71 - TaskName: param.TaskName,  
72 - TaskAlias: param.TaskAlias,  
73 - TaskSortBy: int(param.TaskSortBy),  
74 - TaskEndTime: param.TaskEndTime,  
75 - RecordBegin: param.RecordBegin,  
76 - NoticeWho: param.NoticeWho,  
77 - Marks: param.Marks, 61 + m := models.Task{
  62 + Id: param.Id,
  63 + CreatedAt: param.CreatedAt,
  64 + UpdatedAt: param.UpdatedAt,
  65 + DeletedAt: param.DeletedAt,
  66 + Name: param.Name,
  67 + Alias: param.Alias,
  68 + CompanyId: param.CompanyId,
  69 + Leader: param.Leader,
  70 + Status: int(param.Status),
  71 + Level: param.Level,
  72 + LevelName: param.LevelName,
  73 + RelatedUser: param.RelatedUser,
  74 + LastStage: param.LastStage,
  75 + RunAt: param.RunAt,
  76 + StopAt: param.StopAt,
  77 + Anomaly: param.Anomaly,
  78 + WarnFlag: int(param.WarnFlag),
  79 + CurrentStage: param.CurrentStage,
  80 + SortBy: int(param.SortBy),
  81 + EndTime: param.EndTime,
  82 + UseEndTime: param.UseEndTime,
  83 + AssistFlag: param.AssistFlag,
  84 + AssistFlagMax: param.AssistFlagMax,
  85 + CreatedBy: param.CreatedBy,
78 } 86 }
79 db := repo.transactionContext.PgTx 87 db := repo.transactionContext.PgTx
80 if m.Id == 0 { 88 if m.Id == 0 {
@@ -92,16 +100,28 @@ func (repo *TaskAnomalyRepository) Save(param *domain.TaskAnomaly) error { @@ -92,16 +100,28 @@ func (repo *TaskAnomalyRepository) Save(param *domain.TaskAnomaly) error {
92 return nil 100 return nil
93 } 101 }
94 102
95 -func (repo *TaskAnomalyRepository) FindOne(queryOptions map[string]interface{}) (*domain.TaskAnomaly, error) { 103 +func (repo *TaskRepository) Remove(id int) error {
96 tx := repo.transactionContext.PgTx 104 tx := repo.transactionContext.PgTx
97 - m := new(models.TaskAnomaly) 105 + nowTime := time.Now()
  106 + _, err := tx.Model(&models.Task{}).
  107 + Where("id=?", id).
  108 + Set("deleted_at=?", nowTime).
  109 + Update()
  110 + return err
  111 +
  112 +}
  113 +
  114 +func (repo *TaskRepository) FindOne(queryOptions map[string]interface{}) (*domain.Task, error) {
  115 + tx := repo.transactionContext.PgTx
  116 + m := new(models.Task)
98 query := tx.Model(m) 117 query := tx.Model(m)
  118 + query.Where("deleted_at isnull")
99 if id, ok := queryOptions["id"]; ok { 119 if id, ok := queryOptions["id"]; ok {
100 query.Where("id=?", id) 120 query.Where("id=?", id)
101 } 121 }
102 if err := query.First(); err != nil { 122 if err := query.First(); err != nil {
103 if errors.Is(err, pg.ErrNoRows) { 123 if errors.Is(err, pg.ErrNoRows) {
104 - return nil, fmt.Errorf("没有找到TaskAnomaly数据") 124 + return nil, fmt.Errorf("没有找到task数据")
105 } else { 125 } else {
106 return nil, err 126 return nil, err
107 } 127 }
@@ -110,10 +130,33 @@ func (repo *TaskAnomalyRepository) FindOne(queryOptions map[string]interface{}) @@ -110,10 +130,33 @@ func (repo *TaskAnomalyRepository) FindOne(queryOptions map[string]interface{})
110 return u, nil 130 return u, nil
111 } 131 }
112 132
113 -func (repo *TaskAnomalyRepository) Find(queryOptions map[string]interface{}) (int, []*domain.TaskAnomaly, error) { 133 +func (repo *TaskRepository) Find(queryOptions map[string]interface{}) (int, []*domain.Task, error) {
114 tx := repo.transactionContext.PgTx 134 tx := repo.transactionContext.PgTx
115 - var m []*models.TaskAnomaly  
116 - query := tx.Model(&m) 135 + var m []*models.Task
  136 + query := tx.Model(&m).
  137 + Where("deleted_at isnull").
  138 + Limit(20)
  139 + if val, ok := queryOptions["name"]; ok {
  140 + query.Where("task.name like ?", val)
  141 + }
  142 + if val, ok := queryOptions["companyId"]; ok {
  143 + query.Where("task.company_id = ?", val)
  144 + }
  145 + if val, ok := queryOptions["id"]; ok {
  146 + query.Where("task.id=?", val)
  147 + }
  148 + if val, ok := queryOptions["leaderId"]; ok {
  149 + query.Where("task.leader->>'id'=?", val)
  150 + }
  151 + if val, ok := queryOptions["aliasOrLeader"]; ok {
  152 + query.Where(`task.alias like ? or task.leader->>'name' like ?`, val, val)
  153 + }
  154 + if val, ok := queryOptions["status"]; ok {
  155 + query.Where("task.status=?", val)
  156 + }
  157 + if val, ok := queryOptions["createdBy"]; ok {
  158 + query.Where("created_by = ?", val)
  159 + }
117 if val, ok := queryOptions["limit"]; ok { 160 if val, ok := queryOptions["limit"]; ok {
118 if limit, err := strconv.Atoi(fmt.Sprintf("%v", val)); err == nil { 161 if limit, err := strconv.Atoi(fmt.Sprintf("%v", val)); err == nil {
119 query.Limit(limit) 162 query.Limit(limit)
@@ -129,7 +172,7 @@ func (repo *TaskAnomalyRepository) Find(queryOptions map[string]interface{}) (in @@ -129,7 +172,7 @@ func (repo *TaskAnomalyRepository) Find(queryOptions map[string]interface{}) (in
129 if err != nil { 172 if err != nil {
130 return 0, nil, err 173 return 0, nil, err
131 } 174 }
132 - var datas []*domain.TaskAnomaly 175 + var datas []*domain.Task
133 for _, v := range m { 176 for _, v := range m {
134 d := repo.TransformToDomain(v) 177 d := repo.TransformToDomain(v)
135 datas = append(datas, d) 178 datas = append(datas, d)