正在显示
8 个修改的文件
包含
59 行增加
和
51 行删除
| @@ -177,12 +177,12 @@ func (rs *EvaluationProjectService) UpdateTemplate(in *command.UpdateProjectTemp | @@ -177,12 +177,12 @@ func (rs *EvaluationProjectService) UpdateTemplate(in *command.UpdateProjectTemp | ||
| 177 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 177 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 178 | } | 178 | } |
| 179 | 179 | ||
| 180 | - // FIXME 启动时,需要激活定时任务 | ||
| 181 | - if in.Activate == 1 { | ||
| 182 | - if len(in.Recipients) == 0 { | ||
| 183 | - return nil, application.ThrowError(application.BUSINESS_ERROR, "请添加被评估人") | ||
| 184 | - } | ||
| 185 | - project.State = domain.ProjectStateEnable | 180 | + if cycleTemplate == nil || cycleTemplate.Template == nil { |
| 181 | + return nil, application.ThrowError(application.BUSINESS_ERROR, "请添加模板") | ||
| 182 | + } | ||
| 183 | + | ||
| 184 | + if len(in.Recipients) == 0 { | ||
| 185 | + return nil, application.ThrowError(application.BUSINESS_ERROR, "请添加被评估人") | ||
| 186 | } | 186 | } |
| 187 | 187 | ||
| 188 | start, err := time.ParseInLocation("2006-01-02 15:04:05", in.TimeStart, time.Local) | 188 | start, err := time.ParseInLocation("2006-01-02 15:04:05", in.TimeStart, time.Local) |
| @@ -209,6 +209,14 @@ func (rs *EvaluationProjectService) UpdateTemplate(in *command.UpdateProjectTemp | @@ -209,6 +209,14 @@ func (rs *EvaluationProjectService) UpdateTemplate(in *command.UpdateProjectTemp | ||
| 209 | return nil, application.ThrowError(application.BUSINESS_ERROR, "评估截至时间不能超出周期截至时间") | 209 | return nil, application.ThrowError(application.BUSINESS_ERROR, "评估截至时间不能超出周期截至时间") |
| 210 | } | 210 | } |
| 211 | 211 | ||
| 212 | + //// FIXME 启动时,需要激活定时任务 | ||
| 213 | + //if in.Activate == 1 { | ||
| 214 | + // project.State = domain.ProjectStateEnable | ||
| 215 | + //} else { | ||
| 216 | + // project.State = domain.ProjectStateWaitActive | ||
| 217 | + //} | ||
| 218 | + project.State = domain.ProjectStateWaitActive | ||
| 219 | + | ||
| 212 | project.Recipients = in.Recipients | 220 | project.Recipients = in.Recipients |
| 213 | project.Template = cycleTemplate.Template | 221 | project.Template = cycleTemplate.Template |
| 214 | for i := range project.Template.LinkNodes { | 222 | for i := range project.Template.LinkNodes { |
| @@ -348,7 +356,9 @@ func (rs *EvaluationProjectService) Activate(in *command.ActivateProjectCommand) | @@ -348,7 +356,9 @@ func (rs *EvaluationProjectService) Activate(in *command.ActivateProjectCommand) | ||
| 348 | if len(project.Recipients) == 0 { | 356 | if len(project.Recipients) == 0 { |
| 349 | return nil, application.ThrowError(application.BUSINESS_ERROR, "请添加被评估人") | 357 | return nil, application.ThrowError(application.BUSINESS_ERROR, "请添加被评估人") |
| 350 | } | 358 | } |
| 351 | - | 359 | + if project.State == domain.TemplateStateEnable { |
| 360 | + return nil, application.ThrowError(application.BUSINESS_ERROR, "项目已启动") | ||
| 361 | + } | ||
| 352 | //cycle, err := cycleRepository.FindOne(map[string]interface{}{"id": project.CycleId}) | 362 | //cycle, err := cycleRepository.FindOne(map[string]interface{}{"id": project.CycleId}) |
| 353 | //if err != nil { | 363 | //if err != nil { |
| 354 | // return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 364 | // return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| @@ -378,6 +388,7 @@ func (rs *EvaluationProjectService) Activate(in *command.ActivateProjectCommand) | @@ -378,6 +388,7 @@ func (rs *EvaluationProjectService) Activate(in *command.ActivateProjectCommand) | ||
| 378 | NodeType: node.Type, | 388 | NodeType: node.Type, |
| 379 | NodeName: node.Name, | 389 | NodeName: node.Name, |
| 380 | NodeDescribe: node.Describe, | 390 | NodeDescribe: node.Describe, |
| 391 | + NodeSort: i + 1, | ||
| 381 | TimeStart: node.TimeStart, | 392 | TimeStart: node.TimeStart, |
| 382 | TimeEnd: node.TimeEnd, | 393 | TimeEnd: node.TimeEnd, |
| 383 | KpiCycle: node.KpiCycle, | 394 | KpiCycle: node.KpiCycle, |
| @@ -39,9 +39,6 @@ func (rs *NodeTaskService) SendEvaluationNode() error { | @@ -39,9 +39,6 @@ func (rs *NodeTaskService) SendEvaluationNode() error { | ||
| 39 | projectRepository := factory.CreateEvaluationProjectRepository(map[string]interface{}{"transactionContext": transactionContext}) | 39 | projectRepository := factory.CreateEvaluationProjectRepository(map[string]interface{}{"transactionContext": transactionContext}) |
| 40 | cycleRepository := factory.CreateEvaluationCycleRepository(map[string]interface{}{"transactionContext": transactionContext}) | 40 | cycleRepository := factory.CreateEvaluationCycleRepository(map[string]interface{}{"transactionContext": transactionContext}) |
| 41 | 41 | ||
| 42 | - //ttaffAssessRepository := factory.CreateStaffAssessTaskRepository(map[string]interface{}{"transactionContext": transactionContext}) | ||
| 43 | - // | ||
| 44 | - | ||
| 45 | projectIdsMap := map[int64]*domain.EvaluationProject{} | 42 | projectIdsMap := map[int64]*domain.EvaluationProject{} |
| 46 | cycleIdsMap := map[int64]*domain.EvaluationCycle{} | 43 | cycleIdsMap := map[int64]*domain.EvaluationCycle{} |
| 47 | for i := range tasks { | 44 | for i := range tasks { |
| @@ -74,7 +71,7 @@ func (rs *NodeTaskService) SendEvaluationNode() error { | @@ -74,7 +71,7 @@ func (rs *NodeTaskService) SendEvaluationNode() error { | ||
| 74 | cycleIdsMap[cycles[i].Id] = cycles[i] | 71 | cycleIdsMap[cycles[i].Id] = cycles[i] |
| 75 | } | 72 | } |
| 76 | 73 | ||
| 77 | - staffAssessTaskMap := map[int64]*command.CreateStaffAssessTask{} | 74 | + staffAssessService := service.NewStaffAssessServeice() |
| 78 | for i := range tasks { | 75 | for i := range tasks { |
| 79 | task := tasks[i] | 76 | task := tasks[i] |
| 80 | // 项目 | 77 | // 项目 |
| @@ -108,47 +105,44 @@ func (rs *NodeTaskService) SendEvaluationNode() error { | @@ -108,47 +105,44 @@ func (rs *NodeTaskService) SendEvaluationNode() error { | ||
| 108 | fmCycleStartTime := cycleTimeStart.Format("2006-1-2 15:04:05") | 105 | fmCycleStartTime := cycleTimeStart.Format("2006-1-2 15:04:05") |
| 109 | fmCycleTimeEnd := cycleTimeEnd.Format("2006-1-2 15:04:05") | 106 | fmCycleTimeEnd := cycleTimeEnd.Format("2006-1-2 15:04:05") |
| 110 | 107 | ||
| 111 | - var csat, staffOk = staffAssessTaskMap[task.ProjectId] | ||
| 112 | - if !staffOk { | ||
| 113 | - csat = &command.CreateStaffAssessTask{ | ||
| 114 | - CompanyId: int(project.CompanyId), | ||
| 115 | - EvaluationProjectId: int(project.Id), | ||
| 116 | - EvaluationProjectName: project.Name, | ||
| 117 | - CycleId: project.CycleId, | ||
| 118 | - } | ||
| 119 | - | ||
| 120 | - // 周期名称 | ||
| 121 | - if cycle, ok := cycleIdsMap[project.CycleId]; ok { | ||
| 122 | - csat.CycleName = cycle.Name | ||
| 123 | - } | ||
| 124 | - | ||
| 125 | - // 接收人 | ||
| 126 | - csat.ExecutorId = make([]int, 0) | ||
| 127 | - for rIndex := range project.Recipients { | ||
| 128 | - vInt, _ := strconv.Atoi(project.Recipients[rIndex]) | ||
| 129 | - csat.ExecutorId = append(csat.ExecutorId, vInt) | ||
| 130 | - } | ||
| 131 | - | ||
| 132 | - // FIXME 这里设置时间可能会有歧义,目前原型设计时间均一致,所以直接选取第一个获取到的周期时间,作为本周期的起止和截止时间 | ||
| 133 | - csat.BeginTime = fmCycleStartTime | ||
| 134 | - csat.EndTime = fmCycleTimeEnd | ||
| 135 | - | ||
| 136 | - staffAssessTaskMap[task.ProjectId] = csat | 108 | + csat := &command.CreateStaffAssessTask{ |
| 109 | + CompanyId: int(project.CompanyId), | ||
| 110 | + EvaluationProjectId: int(project.Id), | ||
| 111 | + EvaluationProjectName: project.Name, | ||
| 112 | + CycleId: project.CycleId, | ||
| 113 | + StepList: make([]command.AssessTaskStep, 0), | ||
| 114 | + } | ||
| 115 | + | ||
| 116 | + // 周期名称 | ||
| 117 | + if cycle, ok := cycleIdsMap[project.CycleId]; ok { | ||
| 118 | + csat.CycleName = cycle.Name | ||
| 137 | } | 119 | } |
| 138 | 120 | ||
| 139 | - if csat.StepList == nil { | ||
| 140 | - csat.StepList = make([]command.AssessTaskStep, 0) | 121 | + // 接收人 |
| 122 | + csat.ExecutorId = make([]int, 0) | ||
| 123 | + for rIndex := range project.Recipients { | ||
| 124 | + vInt, _ := strconv.Atoi(project.Recipients[rIndex]) | ||
| 125 | + csat.ExecutorId = append(csat.ExecutorId, vInt) | ||
| 141 | } | 126 | } |
| 127 | + | ||
| 128 | + csat.BeginTime = fmCycleStartTime | ||
| 129 | + csat.EndTime = fmCycleTimeEnd | ||
| 142 | csat.StepList = append(csat.StepList, command.AssessTaskStep{ | 130 | csat.StepList = append(csat.StepList, command.AssessTaskStep{ |
| 143 | - SortBy: i, | 131 | + SortBy: task.NodeSort, |
| 144 | LinkNodeId: int(task.NodeId), | 132 | LinkNodeId: int(task.NodeId), |
| 145 | LinkNodeName: task.NodeName, | 133 | LinkNodeName: task.NodeName, |
| 146 | LinkNodeType: task.NodeType, | 134 | LinkNodeType: task.NodeType, |
| 147 | BeginTime: fmCycleStartTime, | 135 | BeginTime: fmCycleStartTime, |
| 148 | EndTime: fmCycleTimeEnd, | 136 | EndTime: fmCycleTimeEnd, |
| 149 | }) | 137 | }) |
| 138 | + | ||
| 139 | + // 创建发送任务 | ||
| 140 | + _, err := staffAssessService.CreateStaffAssessTask(transactionContext, csat) | ||
| 141 | + if err != nil { | ||
| 142 | + return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 143 | + } | ||
| 150 | } else { | 144 | } else { |
| 151 | - task.NextSentAt = nil | 145 | + task.NextSentAt = nil // 项目不存在,取消周期任务发送 |
| 152 | } | 146 | } |
| 153 | 147 | ||
| 154 | task, err := taskRepository.Insert(task) | 148 | task, err := taskRepository.Insert(task) |
| @@ -157,15 +151,6 @@ func (rs *NodeTaskService) SendEvaluationNode() error { | @@ -157,15 +151,6 @@ func (rs *NodeTaskService) SendEvaluationNode() error { | ||
| 157 | } | 151 | } |
| 158 | } | 152 | } |
| 159 | 153 | ||
| 160 | - staffAssessService := service.NewStaffAssessServeice() | ||
| 161 | - for i := range staffAssessTaskMap { | ||
| 162 | - staffAssessTask := staffAssessTaskMap[i] | ||
| 163 | - _, err := staffAssessService.CreateStaffAssessTask(transactionContext, staffAssessTask) | ||
| 164 | - if err != nil { | ||
| 165 | - return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 166 | - } | ||
| 167 | - } | ||
| 168 | - | ||
| 169 | if err := transactionContext.CommitTransaction(); err != nil { | 154 | if err := transactionContext.CommitTransaction(); err != nil { |
| 170 | return application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 155 | return application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
| 171 | } | 156 | } |
| @@ -13,6 +13,7 @@ type NodeTask struct { | @@ -13,6 +13,7 @@ type NodeTask struct { | ||
| 13 | NodeType int `json:"nodeType" comment:"环节类型"` | 13 | NodeType int `json:"nodeType" comment:"环节类型"` |
| 14 | NodeName string `json:"nodeName" comment:"环节名称"` | 14 | NodeName string `json:"nodeName" comment:"环节名称"` |
| 15 | NodeDescribe string `json:"nodeDescribe" comment:"环节描述"` | 15 | NodeDescribe string `json:"nodeDescribe" comment:"环节描述"` |
| 16 | + NodeSort int `json:"nodeSort" comment:"环节顺序"` | ||
| 16 | TimeStart *time.Time `json:"timeStart" comment:"起始时间"` | 17 | TimeStart *time.Time `json:"timeStart" comment:"起始时间"` |
| 17 | TimeEnd *time.Time `json:"timeEnd" comment:"截至时间"` | 18 | TimeEnd *time.Time `json:"timeEnd" comment:"截至时间"` |
| 18 | KpiCycle int `json:"kpiCycle" comment:"考核周期(1日、2周、3月)"` | 19 | KpiCycle int `json:"kpiCycle" comment:"考核周期(1日、2周、3月)"` |
| @@ -14,6 +14,7 @@ type NodeTask struct { | @@ -14,6 +14,7 @@ type NodeTask struct { | ||
| 14 | NodeType int `comment:"环节类型"` | 14 | NodeType int `comment:"环节类型"` |
| 15 | NodeName string `comment:"环节名称"` | 15 | NodeName string `comment:"环节名称"` |
| 16 | NodeDescribe string `comment:"环节描述"` | 16 | NodeDescribe string `comment:"环节描述"` |
| 17 | + NodeSort int `comment:"环节顺序"` | ||
| 17 | TimeStart *time.Time `comment:"起始时间"` | 18 | TimeStart *time.Time `comment:"起始时间"` |
| 18 | TimeEnd *time.Time `comment:"截至时间"` | 19 | TimeEnd *time.Time `comment:"截至时间"` |
| 19 | KpiCycle int `comment:"考核周期(1日、2周、3月)"` | 20 | KpiCycle int `comment:"考核周期(1日、2周、3月)"` |
| @@ -123,6 +123,10 @@ func (repo *EvaluationCycleRepository) Find(queryOptions map[string]interface{}) | @@ -123,6 +123,10 @@ func (repo *EvaluationCycleRepository) Find(queryOptions map[string]interface{}) | ||
| 123 | query.Where("name LIKE ?", v) | 123 | query.Where("name LIKE ?", v) |
| 124 | } | 124 | } |
| 125 | 125 | ||
| 126 | + if v, ok := queryOptions["ids"]; ok { | ||
| 127 | + query.Where("id in (?)", pg.In(v)) | ||
| 128 | + } | ||
| 129 | + | ||
| 126 | if v, ok := queryOptions["companyId"]; ok { | 130 | if v, ok := queryOptions["companyId"]; ok { |
| 127 | query.Where("company_id = ?", v) | 131 | query.Where("company_id = ?", v) |
| 128 | } | 132 | } |
| @@ -131,6 +131,10 @@ func (repo *EvaluationProjectRepository) Find(queryOptions map[string]interface{ | @@ -131,6 +131,10 @@ func (repo *EvaluationProjectRepository) Find(queryOptions map[string]interface{ | ||
| 131 | query.ExcludeColumn(excludeColumns...) | 131 | query.ExcludeColumn(excludeColumns...) |
| 132 | } | 132 | } |
| 133 | 133 | ||
| 134 | + if v, ok := queryOptions["ids"]; ok { | ||
| 135 | + query.Where("id in (?)", pg.In(v)) | ||
| 136 | + } | ||
| 137 | + | ||
| 134 | if v, ok := queryOptions["name"].(string); ok && len(v) > 0 { | 138 | if v, ok := queryOptions["name"].(string); ok && len(v) > 0 { |
| 135 | query.Where("name = ?", v) | 139 | query.Where("name = ?", v) |
| 136 | } | 140 | } |
| @@ -30,6 +30,7 @@ func (repo *NodeTaskRepository) TransformToDomain(m *models.NodeTask) domain.Nod | @@ -30,6 +30,7 @@ func (repo *NodeTaskRepository) TransformToDomain(m *models.NodeTask) domain.Nod | ||
| 30 | NodeType: m.NodeType, | 30 | NodeType: m.NodeType, |
| 31 | NodeName: m.NodeName, | 31 | NodeName: m.NodeName, |
| 32 | NodeDescribe: m.NodeDescribe, | 32 | NodeDescribe: m.NodeDescribe, |
| 33 | + NodeSort: m.NodeSort, | ||
| 33 | TimeStart: m.TimeStart, | 34 | TimeStart: m.TimeStart, |
| 34 | TimeEnd: m.TimeEnd, | 35 | TimeEnd: m.TimeEnd, |
| 35 | KpiCycle: m.KpiCycle, | 36 | KpiCycle: m.KpiCycle, |
| @@ -50,6 +51,7 @@ func (repo *NodeTaskRepository) TransformToModel(d *domain.NodeTask) models.Node | @@ -50,6 +51,7 @@ func (repo *NodeTaskRepository) TransformToModel(d *domain.NodeTask) models.Node | ||
| 50 | NodeType: d.NodeType, | 51 | NodeType: d.NodeType, |
| 51 | NodeName: d.NodeName, | 52 | NodeName: d.NodeName, |
| 52 | NodeDescribe: d.NodeDescribe, | 53 | NodeDescribe: d.NodeDescribe, |
| 54 | + NodeSort: d.NodeSort, | ||
| 53 | TimeStart: d.TimeStart, | 55 | TimeStart: d.TimeStart, |
| 54 | TimeEnd: d.TimeEnd, | 56 | TimeEnd: d.TimeEnd, |
| 55 | KpiCycle: d.KpiCycle, | 57 | KpiCycle: d.KpiCycle, |
| @@ -43,7 +43,7 @@ func NextTime(now0 time.Time, start *time.Time, kpiCycle int) time.Time { | @@ -43,7 +43,7 @@ func NextTime(now0 time.Time, start *time.Time, kpiCycle int) time.Time { | ||
| 43 | var nextTime time.Time | 43 | var nextTime time.Time |
| 44 | switch kpiCycle { | 44 | switch kpiCycle { |
| 45 | case domain.KpiCycleDay: | 45 | case domain.KpiCycleDay: |
| 46 | - nextTime = timeconv.AddDate(now0, 0, 0, 1) // 当前时间的下一天开始发送 | 46 | + nextTime = timeconv.AddDate(now0, 0, 0, 1) // 当前时间的下一天0点开始发送 |
| 47 | break | 47 | break |
| 48 | case domain.KpiCycleWeek: | 48 | case domain.KpiCycleWeek: |
| 49 | offsetSeconds := int64(now0.Sub(start0).Seconds()) | 49 | offsetSeconds := int64(now0.Sub(start0).Seconds()) |
-
请 注册 或 登录 后发表评论