Merge remote-tracking branch 'origin/test' into test
正在显示
15 个修改的文件
包含
283 行增加
和
142 行删除
| @@ -57,7 +57,6 @@ type AssessCountLeveltItem struct { | @@ -57,7 +57,6 @@ type AssessCountLeveltItem struct { | ||
| 57 | 57 | ||
| 58 | // 评级数量 | 58 | // 评级数量 |
| 59 | type LevalCodeCount struct { | 59 | type LevalCodeCount struct { |
| 60 | - Code string `json:"code"` //评级代码 | ||
| 61 | - Number int `json:"number"` //数量 | ||
| 62 | - ItemList []string `json:"itemList"` //对应的评估项名称 | 60 | + Code string `json:"code"` //评级代码 |
| 61 | + Number int `json:"number"` //数量 | ||
| 63 | } | 62 | } |
| @@ -3,6 +3,6 @@ package query | @@ -3,6 +3,6 @@ package query | ||
| 3 | type ListTargetUserCycleQuery struct { | 3 | type ListTargetUserCycleQuery struct { |
| 4 | PageNumber int `json:"pageNumber"` | 4 | PageNumber int `json:"pageNumber"` |
| 5 | PageSize int `json:"pageSize"` | 5 | PageSize int `json:"pageSize"` |
| 6 | - CompanyId int `json:"companyId"` // | 6 | + CompanyId int `json:"-"` // |
| 7 | TargetUserId int `json:"targetUserId,string"` //评估的执行人,必填 | 7 | TargetUserId int `json:"targetUserId,string"` //评估的执行人,必填 |
| 8 | } | 8 | } |
| @@ -17,7 +17,7 @@ type ExportUserAssess2Commad struct { | @@ -17,7 +17,7 @@ type ExportUserAssess2Commad struct { | ||
| 17 | 17 | ||
| 18 | type StaffAsessSelfCountLevel struct { | 18 | type StaffAsessSelfCountLevel struct { |
| 19 | CompanyId int `cname:"公司ID" json:"-"` | 19 | CompanyId int `cname:"公司ID" json:"-"` |
| 20 | - TargetUserId int `json:"targetUserId"` | 20 | + TargetUserId int `json:"targetUserId,string"` |
| 21 | ProjectId int `json:"projectId,string"` | 21 | ProjectId int `json:"projectId,string"` |
| 22 | CycleId int `cname:"周期ID" json:"cycleId,string"` | 22 | CycleId int `cname:"周期ID" json:"cycleId,string"` |
| 23 | } | 23 | } |
| @@ -5,6 +5,7 @@ import ( | @@ -5,6 +5,7 @@ import ( | ||
| 5 | "strconv" | 5 | "strconv" |
| 6 | "time" | 6 | "time" |
| 7 | 7 | ||
| 8 | + "github.com/linmadan/egglib-go/core/application" | ||
| 8 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory" | 9 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory" |
| 9 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain" | 10 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain" |
| 10 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/infrastructure/dao" | 11 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/infrastructure/dao" |
| @@ -18,25 +19,24 @@ func TaskSendSummaryEvaluationV2() error { | @@ -18,25 +19,24 @@ func TaskSendSummaryEvaluationV2() error { | ||
| 18 | str := fmt.Sprintf("下发周期评估耗时%.2f s", time.Since(nowTime).Seconds()) | 19 | str := fmt.Sprintf("下发周期评估耗时%.2f s", time.Since(nowTime).Seconds()) |
| 19 | log.Logger.Info(str) | 20 | log.Logger.Info(str) |
| 20 | }() | 21 | }() |
| 21 | - var newPublisher summaryEvaluationPublisher | ||
| 22 | for { | 22 | for { |
| 23 | - projectList, err := getPrepareSummaryEvaluation() | 23 | + cycleList, err := getPrepareEvaluationCycle() |
| 24 | if err != nil { | 24 | if err != nil { |
| 25 | return err | 25 | return err |
| 26 | } | 26 | } |
| 27 | - if len(projectList) == 0 { | 27 | + if len(cycleList) == 0 { |
| 28 | break | 28 | break |
| 29 | } | 29 | } |
| 30 | - newPublisher = summaryEvaluationPublisher{} | ||
| 31 | - for _, val := range projectList { | ||
| 32 | - err = newPublisher.sendSummaryEvaluationV2(val) | 30 | + err = sendSummaryEvaluationByCycle(cycleList[0]) |
| 31 | + if err != nil { | ||
| 33 | return err | 32 | return err |
| 34 | } | 33 | } |
| 35 | } | 34 | } |
| 36 | return nil | 35 | return nil |
| 37 | } | 36 | } |
| 38 | 37 | ||
| 39 | -func getPrepareSummaryEvaluation() ([]*domain.EvaluationProject, error) { | 38 | +// 获取周期 |
| 39 | +func getPrepareEvaluationCycle() ([]*domain.EvaluationCycle, error) { | ||
| 40 | transactionContext, err := factory.CreateTransactionContext(nil) | 40 | transactionContext, err := factory.CreateTransactionContext(nil) |
| 41 | if err != nil { | 41 | if err != nil { |
| 42 | return nil, err | 42 | return nil, err |
| @@ -47,56 +47,131 @@ func getPrepareSummaryEvaluation() ([]*domain.EvaluationProject, error) { | @@ -47,56 +47,131 @@ func getPrepareSummaryEvaluation() ([]*domain.EvaluationProject, error) { | ||
| 47 | defer func() { | 47 | defer func() { |
| 48 | _ = transactionContext.RollbackTransaction() | 48 | _ = transactionContext.RollbackTransaction() |
| 49 | }() | 49 | }() |
| 50 | + cycleRepo := factory.CreateEvaluationCycleRepository(map[string]interface{}{"transactionContext": transactionContext}) | ||
| 51 | + cycleList, err := cycleRepo.FindCycleEnd(1) | ||
| 52 | + if err != nil { | ||
| 53 | + return nil, fmt.Errorf("获取可用的周期数据,%s", err) | ||
| 54 | + } | ||
| 55 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
| 56 | + return nil, err | ||
| 57 | + } | ||
| 58 | + return cycleList, nil | ||
| 59 | +} | ||
| 60 | + | ||
| 61 | +// 获取可用的项目 | ||
| 62 | +// func getPrepareSummaryEvaluation(cycleId int) ([]*domain.EvaluationProject, error) { | ||
| 63 | +// transactionContext, err := factory.CreateTransactionContext(nil) | ||
| 64 | +// if err != nil { | ||
| 65 | +// return nil, err | ||
| 66 | +// } | ||
| 67 | +// if err := transactionContext.StartTransaction(); err != nil { | ||
| 68 | +// return nil, err | ||
| 69 | +// } | ||
| 70 | +// defer func() { | ||
| 71 | +// _ = transactionContext.RollbackTransaction() | ||
| 72 | +// }() | ||
| 73 | +// projectRepo := factory.CreateEvaluationProjectRepository(map[string]interface{}{ | ||
| 74 | +// "transactionContext": transactionContext, | ||
| 75 | +// }) | ||
| 76 | +// // 获取项目数据总数 | ||
| 77 | +// _, projectList, err := projectRepo.Find(map[string]interface{}{ | ||
| 78 | +// "cycleId": cycleId, | ||
| 79 | +// "summaryState": domain.ProjectSummaryStateNo, | ||
| 80 | +// "state": domain.ProjectStateEnable, | ||
| 81 | +// "limit": 200, | ||
| 82 | +// }, "template") | ||
| 83 | +// if err != nil { | ||
| 84 | +// return nil, fmt.Errorf("获取可用的项目数据,%s", err) | ||
| 85 | +// } | ||
| 86 | +// if err := transactionContext.CommitTransaction(); err != nil { | ||
| 87 | +// return nil, err | ||
| 88 | +// } | ||
| 89 | +// return projectList, nil | ||
| 90 | +// } | ||
| 91 | + | ||
| 92 | +// 按周期下发 综合评估任务 | ||
| 93 | +func sendSummaryEvaluationByCycle(cycleParam *domain.EvaluationCycle) error { | ||
| 94 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
| 95 | + if err != nil { | ||
| 96 | + return err | ||
| 97 | + } | ||
| 98 | + if err := transactionContext.StartTransaction(); err != nil { | ||
| 99 | + return err | ||
| 100 | + } | ||
| 101 | + defer func() { | ||
| 102 | + _ = transactionContext.RollbackTransaction() | ||
| 103 | + }() | ||
| 104 | + | ||
| 50 | projectRepo := factory.CreateEvaluationProjectRepository(map[string]interface{}{ | 105 | projectRepo := factory.CreateEvaluationProjectRepository(map[string]interface{}{ |
| 51 | "transactionContext": transactionContext, | 106 | "transactionContext": transactionContext, |
| 52 | }) | 107 | }) |
| 53 | // 获取项目数据总数 | 108 | // 获取项目数据总数 |
| 54 | _, projectList, err := projectRepo.Find(map[string]interface{}{ | 109 | _, projectList, err := projectRepo.Find(map[string]interface{}{ |
| 55 | - "endTime": time.Now(), | 110 | + "cycleId": cycleParam.Id, |
| 56 | "summaryState": domain.ProjectSummaryStateNo, | 111 | "summaryState": domain.ProjectSummaryStateNo, |
| 57 | "state": domain.ProjectStateEnable, | 112 | "state": domain.ProjectStateEnable, |
| 58 | - "limit": 200, | 113 | + "limit": 500, |
| 59 | }, "template") | 114 | }, "template") |
| 60 | if err != nil { | 115 | if err != nil { |
| 61 | - return nil, fmt.Errorf("获取可用的项目数据,%s", err) | 116 | + return fmt.Errorf("获取可用的项目数据,%s", err) |
| 117 | + } | ||
| 118 | + var newEvaluationList []domain.SummaryEvaluation | ||
| 119 | + newPublisher := summaryEvaluationPublisher{} | ||
| 120 | + for _, val := range projectList { | ||
| 121 | + evaluationList, err := newPublisher.sendSummaryEvaluationV2(transactionContext, val, cycleParam) | ||
| 122 | + if err != nil { | ||
| 123 | + return fmt.Errorf("按项目下发综合评估任务数据,%s", err) | ||
| 124 | + } | ||
| 125 | + newEvaluationList = append(newEvaluationList, evaluationList...) | ||
| 126 | + } | ||
| 127 | + // 回填周期的状态 | ||
| 128 | + cycleDao := dao.NewEvaluationCycleDao(map[string]interface{}{"transactionContext": transactionContext}) | ||
| 129 | + err = cycleDao.UpdateSummaryState(cycleParam.Id, domain.ProjectSummaryStateYes) | ||
| 130 | + if err != nil { | ||
| 131 | + return fmt.Errorf("保存项目周期状态%s", err) | ||
| 62 | } | 132 | } |
| 63 | if err := transactionContext.CommitTransaction(); err != nil { | 133 | if err := transactionContext.CommitTransaction(); err != nil { |
| 64 | - return nil, err | 134 | + return err |
| 135 | + } | ||
| 136 | + err = sendSmsEvalation(newEvaluationList) | ||
| 137 | + if err != nil { | ||
| 138 | + return fmt.Errorf("设置短信消息%s", err) | ||
| 65 | } | 139 | } |
| 66 | - return projectList, nil | 140 | + return nil |
| 67 | } | 141 | } |
| 68 | 142 | ||
| 69 | // 下发周期综合评估 | 143 | // 下发周期综合评估 |
| 70 | type summaryEvaluationPublisher struct { | 144 | type summaryEvaluationPublisher struct { |
| 71 | userCache map[int64]*domain.User | 145 | userCache map[int64]*domain.User |
| 72 | departCache map[int]*domain.Department | 146 | departCache map[int]*domain.Department |
| 73 | - cycleCache map[int64]*domain.EvaluationCycle | ||
| 74 | } | 147 | } |
| 75 | 148 | ||
| 76 | -func (se *summaryEvaluationPublisher) sendSummaryEvaluationV2(projectParam *domain.EvaluationProject) error { | ||
| 77 | - transactionContext, err := factory.CreateTransactionContext(nil) | ||
| 78 | - if err != nil { | ||
| 79 | - return err | ||
| 80 | - } | ||
| 81 | - if err := transactionContext.StartTransaction(); err != nil { | ||
| 82 | - return err | ||
| 83 | - } | ||
| 84 | - defer func() { | ||
| 85 | - _ = transactionContext.RollbackTransaction() | ||
| 86 | - }() | 149 | +func (se *summaryEvaluationPublisher) sendSummaryEvaluationV2( |
| 150 | + transactionContext application.TransactionContext, | ||
| 151 | + projectParam *domain.EvaluationProject, cycleData *domain.EvaluationCycle, | ||
| 152 | +) ([]domain.SummaryEvaluation, error) { | ||
| 153 | + // transactionContext, err := factory.CreateTransactionContext(nil) | ||
| 154 | + // if err != nil { | ||
| 155 | + // return err | ||
| 156 | + // } | ||
| 157 | + // if err := transactionContext.StartTransaction(); err != nil { | ||
| 158 | + // return err | ||
| 159 | + // } | ||
| 160 | + // defer func() { | ||
| 161 | + // _ = transactionContext.RollbackTransaction() | ||
| 162 | + // }() | ||
| 87 | userRepo := factory.CreateUserRepository(map[string]interface{}{"transactionContext": transactionContext}) | 163 | userRepo := factory.CreateUserRepository(map[string]interface{}{"transactionContext": transactionContext}) |
| 88 | departmentRepo := factory.CreateDepartmentRepository(map[string]interface{}{"transactionContext": transactionContext}) | 164 | departmentRepo := factory.CreateDepartmentRepository(map[string]interface{}{"transactionContext": transactionContext}) |
| 89 | - cycleRepo := factory.CreateEvaluationCycleRepository(map[string]interface{}{"transactionContext": transactionContext}) | ||
| 90 | evaluationItemRepo := factory.CreateEvaluationItemUsedRepository(map[string]interface{}{"transactionContext": transactionContext}) | 165 | evaluationItemRepo := factory.CreateEvaluationItemUsedRepository(map[string]interface{}{"transactionContext": transactionContext}) |
| 91 | _, evaluationItemList, err := evaluationItemRepo.Find(map[string]interface{}{ | 166 | _, evaluationItemList, err := evaluationItemRepo.Find(map[string]interface{}{ |
| 92 | "evaluationProjectId": projectParam.Id, | 167 | "evaluationProjectId": projectParam.Id, |
| 93 | "nodeType": int(domain.LinkNodeSelfAssessment), | 168 | "nodeType": int(domain.LinkNodeSelfAssessment), |
| 94 | }) | 169 | }) |
| 95 | if err != nil { | 170 | if err != nil { |
| 96 | - return err | 171 | + return nil, err |
| 97 | } | 172 | } |
| 98 | if len(evaluationItemList) == 0 { | 173 | if len(evaluationItemList) == 0 { |
| 99 | - return nil | 174 | + return nil, nil |
| 100 | } | 175 | } |
| 101 | nodeId := evaluationItemList[0].NodeId | 176 | nodeId := evaluationItemList[0].NodeId |
| 102 | executor360Map := map[int64]*domain.User{} | 177 | executor360Map := map[int64]*domain.User{} |
| @@ -111,20 +186,12 @@ func (se *summaryEvaluationPublisher) sendSummaryEvaluationV2(projectParam *doma | @@ -111,20 +186,12 @@ func (se *summaryEvaluationPublisher) sendSummaryEvaluationV2(projectParam *doma | ||
| 111 | } | 186 | } |
| 112 | user360, err := se.getUserData(userRepo, int64(v.EvaluatorId)) | 187 | user360, err := se.getUserData(userRepo, int64(v.EvaluatorId)) |
| 113 | if err != nil { | 188 | if err != nil { |
| 114 | - return fmt.Errorf("获取360用户%s", err) | 189 | + return nil, fmt.Errorf("获取360用户%s", err) |
| 115 | } | 190 | } |
| 116 | executor360Map[user360.Id] = user360 | 191 | executor360Map[user360.Id] = user360 |
| 117 | } | 192 | } |
| 118 | - //获取周期 | ||
| 119 | - cycleData, err := se.getCycleData(cycleRepo, projectParam.CycleId) | ||
| 120 | - if err != nil { | ||
| 121 | - return err | ||
| 122 | - } | ||
| 123 | - if cycleData == nil { | ||
| 124 | - return nil | ||
| 125 | - } | ||
| 126 | if cycleData.TimeEnd == nil { | 193 | if cycleData.TimeEnd == nil { |
| 127 | - return fmt.Errorf("周期%d:%s 结束时间错误", cycleData.Id, cycleData.Name) | 194 | + return nil, fmt.Errorf("周期%d:%s 结束时间错误", cycleData.Id, cycleData.Name) |
| 128 | } | 195 | } |
| 129 | //自评的时间范围 | 196 | //自评的时间范围 |
| 130 | beginTimeSelf := *cycleData.TimeEnd | 197 | beginTimeSelf := *cycleData.TimeEnd |
| @@ -166,14 +233,14 @@ func (se *summaryEvaluationPublisher) sendSummaryEvaluationV2(projectParam *doma | @@ -166,14 +233,14 @@ func (se *summaryEvaluationPublisher) sendSummaryEvaluationV2(projectParam *doma | ||
| 166 | } | 233 | } |
| 167 | targetUser, err := se.getUserData(userRepo, targetUserId) | 234 | targetUser, err := se.getUserData(userRepo, targetUserId) |
| 168 | if err != nil { | 235 | if err != nil { |
| 169 | - return fmt.Errorf("获取员工数据%s", err) | 236 | + return nil, fmt.Errorf("获取员工数据%s", err) |
| 170 | } | 237 | } |
| 171 | if targetUser == nil { | 238 | if targetUser == nil { |
| 172 | continue | 239 | continue |
| 173 | } | 240 | } |
| 174 | targetUserDepartment, err := se.getDepartmentData(departmentRepo, targetUser.DepartmentId) | 241 | targetUserDepartment, err := se.getDepartmentData(departmentRepo, targetUser.DepartmentId) |
| 175 | if err != nil { | 242 | if err != nil { |
| 176 | - return fmt.Errorf("获取员工的部门数据%s", err) | 243 | + return nil, fmt.Errorf("获取员工的部门数据%s", err) |
| 177 | } | 244 | } |
| 178 | evaluationTemp.TargetDepartment = []domain.StaffDepartment{} | 245 | evaluationTemp.TargetDepartment = []domain.StaffDepartment{} |
| 179 | evaluationTemp.Types = domain.EvaluationSelf | 246 | evaluationTemp.Types = domain.EvaluationSelf |
| @@ -254,39 +321,38 @@ func (se *summaryEvaluationPublisher) sendSummaryEvaluationV2(projectParam *doma | @@ -254,39 +321,38 @@ func (se *summaryEvaluationPublisher) sendSummaryEvaluationV2(projectParam *doma | ||
| 254 | for i := range newEvaluationList { | 321 | for i := range newEvaluationList { |
| 255 | err = summaryEvaluationRepo.Save(&newEvaluationList[i]) | 322 | err = summaryEvaluationRepo.Save(&newEvaluationList[i]) |
| 256 | if err != nil { | 323 | if err != nil { |
| 257 | - return fmt.Errorf("保存周期综合评估%s", err) | 324 | + return nil, fmt.Errorf("保存周期综合评估%s", err) |
| 258 | } | 325 | } |
| 259 | } | 326 | } |
| 260 | //回填项目的状态 | 327 | //回填项目的状态 |
| 261 | projectDao := dao.NewEvaluationProjectDao(map[string]interface{}{"transactionContext": transactionContext}) | 328 | projectDao := dao.NewEvaluationProjectDao(map[string]interface{}{"transactionContext": transactionContext}) |
| 262 | err = projectDao.UpdateSummaryState(projectParam.Id, domain.ProjectSummaryStateYes) | 329 | err = projectDao.UpdateSummaryState(projectParam.Id, domain.ProjectSummaryStateYes) |
| 263 | if err != nil { | 330 | if err != nil { |
| 264 | - return fmt.Errorf("保存项目状态%s", err) | ||
| 265 | - } | ||
| 266 | - if err := transactionContext.CommitTransaction(); err != nil { | ||
| 267 | - return err | 331 | + return nil, fmt.Errorf("保存项目状态%s", err) |
| 268 | } | 332 | } |
| 269 | - err = sendSmsEvalation(newEvaluationList) | ||
| 270 | - return fmt.Errorf("设置短信发送%s", err) | 333 | + // if err := transactionContext.CommitTransaction(); err != nil { |
| 334 | + // return err | ||
| 335 | + // } | ||
| 336 | + return newEvaluationList, fmt.Errorf("设置短信发送%s", err) | ||
| 271 | } | 337 | } |
| 272 | 338 | ||
| 273 | // 获取周期设置数据 | 339 | // 获取周期设置数据 |
| 274 | -func (se *summaryEvaluationPublisher) getCycleData(cycleRepo domain.EvaluationCycleRepository, cycleId int64) (*domain.EvaluationCycle, error) { | ||
| 275 | - var cycleData *domain.EvaluationCycle | ||
| 276 | - if val, ok := se.cycleCache[cycleId]; ok { | ||
| 277 | - cycleData = val | ||
| 278 | - } else { | ||
| 279 | - _, cycleList, err := cycleRepo.Find(map[string]interface{}{"id": cycleId}) | ||
| 280 | - if err != nil { | ||
| 281 | - return nil, err | ||
| 282 | - } | ||
| 283 | - if len(cycleList) == 0 { | ||
| 284 | - return nil, nil | ||
| 285 | - } | ||
| 286 | - cycleData = cycleList[0] | ||
| 287 | - } | ||
| 288 | - return cycleData, nil | ||
| 289 | -} | 340 | +// func (se *summaryEvaluationPublisher) getCycleData(cycleRepo domain.EvaluationCycleRepository, cycleId int64) (*domain.EvaluationCycle, error) { |
| 341 | +// var cycleData *domain.EvaluationCycle | ||
| 342 | +// if val, ok := se.cycleCache[cycleId]; ok { | ||
| 343 | +// cycleData = val | ||
| 344 | +// } else { | ||
| 345 | +// _, cycleList, err := cycleRepo.Find(map[string]interface{}{"id": cycleId}) | ||
| 346 | +// if err != nil { | ||
| 347 | +// return nil, err | ||
| 348 | +// } | ||
| 349 | +// if len(cycleList) == 0 { | ||
| 350 | +// return nil, nil | ||
| 351 | +// } | ||
| 352 | +// cycleData = cycleList[0] | ||
| 353 | +// } | ||
| 354 | +// return cycleData, nil | ||
| 355 | +// } | ||
| 290 | 356 | ||
| 291 | // 获取用户数据 | 357 | // 获取用户数据 |
| 292 | func (se *summaryEvaluationPublisher) getUserData(userRepo domain.UserRepository, userId int64) (*domain.User, error) { | 358 | func (se *summaryEvaluationPublisher) getUserData(userRepo domain.UserRepository, userId int64) (*domain.User, error) { |
| @@ -21,16 +21,17 @@ type TemplateSimple struct { | @@ -21,16 +21,17 @@ type TemplateSimple struct { | ||
| 21 | } | 21 | } |
| 22 | 22 | ||
| 23 | type EvaluationCycle struct { | 23 | type EvaluationCycle struct { |
| 24 | - Id int64 `json:"id,string" comment:"ID"` | ||
| 25 | - Name string `json:"name" comment:"名称"` | ||
| 26 | - TimeStart *time.Time `json:"timeStart" comment:"起始时间"` | ||
| 27 | - TimeEnd *time.Time `json:"timeEnd" comment:"截至时间"` | ||
| 28 | - CompanyId int64 `json:"companyId,string" comment:"公司ID"` | ||
| 29 | - CreatorId int64 `json:"creatorId,string" comment:"创建人ID"` | ||
| 30 | - KpiCycle int `json:"kpiCycle" comment:"考核周期(1日、2周、3月)"` | ||
| 31 | - CreatedAt time.Time `json:"createdAt" comment:"创建时间"` | ||
| 32 | - UpdatedAt time.Time `json:"updatedAt" comment:"更新时间"` | ||
| 33 | - DeletedAt *time.Time `json:"deletedAt" comment:"删除时间"` | 24 | + Id int64 `json:"id,string" comment:"ID"` |
| 25 | + Name string `json:"name" comment:"名称"` | ||
| 26 | + TimeStart *time.Time `json:"timeStart" comment:"起始时间"` | ||
| 27 | + TimeEnd *time.Time `json:"timeEnd" comment:"截至时间"` | ||
| 28 | + CompanyId int64 `json:"companyId,string" comment:"公司ID"` | ||
| 29 | + CreatorId int64 `json:"creatorId,string" comment:"创建人ID"` | ||
| 30 | + KpiCycle int `json:"kpiCycle" comment:"考核周期(1日、2周、3月)"` | ||
| 31 | + SummaryState ProjectSummaryState `json:"summaryState" comment:"周期评估是否下发"` | ||
| 32 | + CreatedAt time.Time `json:"createdAt" comment:"创建时间"` | ||
| 33 | + UpdatedAt time.Time `json:"updatedAt" comment:"更新时间"` | ||
| 34 | + DeletedAt *time.Time `json:"deletedAt" comment:"删除时间"` | ||
| 34 | } | 35 | } |
| 35 | 36 | ||
| 36 | type EvaluationCycleRepository interface { | 37 | type EvaluationCycleRepository interface { |
| @@ -39,4 +40,5 @@ type EvaluationCycleRepository interface { | @@ -39,4 +40,5 @@ type EvaluationCycleRepository interface { | ||
| 39 | FindOne(queryOptions map[string]interface{}) (*EvaluationCycle, error) | 40 | FindOne(queryOptions map[string]interface{}) (*EvaluationCycle, error) |
| 40 | Find(queryOptions map[string]interface{}) (int64, []*EvaluationCycle, error) | 41 | Find(queryOptions map[string]interface{}) (int64, []*EvaluationCycle, error) |
| 41 | Count(queryOptions map[string]interface{}) (int64, error) | 42 | Count(queryOptions map[string]interface{}) (int64, error) |
| 43 | + FindCycleEnd(limit int) ([]*EvaluationCycle, error) // 获取已结束的周期,且还没下发周期评估 | ||
| 42 | } | 44 | } |
| @@ -34,6 +34,7 @@ type EvaluationProject struct { | @@ -34,6 +34,7 @@ type EvaluationProject struct { | ||
| 34 | DeletedAt *time.Time `json:"deletedAt" comment:"删除时间"` | 34 | DeletedAt *time.Time `json:"deletedAt" comment:"删除时间"` |
| 35 | } | 35 | } |
| 36 | 36 | ||
| 37 | +// 周期评估的下发状态 | ||
| 37 | type ProjectSummaryState int | 38 | type ProjectSummaryState int |
| 38 | 39 | ||
| 39 | const ( | 40 | const ( |
pkg/infrastructure/dao/evaluation_cycle.go
0 → 100644
| 1 | +package dao | ||
| 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 | +type EvaluationCycleDao struct { | ||
| 10 | + transactionContext *pgTransaction.TransactionContext | ||
| 11 | +} | ||
| 12 | + | ||
| 13 | +func NewEvaluationCycleDao(options map[string]interface{}) *EvaluationCycleDao { | ||
| 14 | + var transactionContext *pgTransaction.TransactionContext | ||
| 15 | + if value, ok := options["transactionContext"]; ok { | ||
| 16 | + transactionContext = value.(*pgTransaction.TransactionContext) | ||
| 17 | + } | ||
| 18 | + return &EvaluationCycleDao{ | ||
| 19 | + transactionContext: transactionContext, | ||
| 20 | + } | ||
| 21 | +} | ||
| 22 | + | ||
| 23 | +func (d *EvaluationCycleDao) UpdateSummaryState(id int64, status domain.ProjectSummaryState) error { | ||
| 24 | + db := d.transactionContext.PgTx | ||
| 25 | + _, err := db.Model(&models.EvaluationCycle{}). | ||
| 26 | + Where("id=?", id). | ||
| 27 | + Set("summary_state=?", int(status)). | ||
| 28 | + Update() | ||
| 29 | + return err | ||
| 30 | +} |
| @@ -1253,7 +1253,7 @@ group by level_value,category,"name" ` | @@ -1253,7 +1253,7 @@ group by level_value,category,"name" ` | ||
| 1253 | 1253 | ||
| 1254 | var result []AssessContentLevelCode | 1254 | var result []AssessContentLevelCode |
| 1255 | condition := []interface{}{ | 1255 | condition := []interface{}{ |
| 1256 | - projectId, targetUserId, string(assessType), cycleId, | 1256 | + targetUserId, string(assessType), cycleId, projectId, |
| 1257 | } | 1257 | } |
| 1258 | tx := d.transactionContext.PgTx | 1258 | tx := d.transactionContext.PgTx |
| 1259 | _, err := tx.Query(&result, sqlStr, condition...) | 1259 | _, err := tx.Query(&result, sqlStr, condition...) |
| @@ -174,33 +174,32 @@ func (d *StaffAssessDao) catchProjectIdByPermission(companyId int, cycleId int, | @@ -174,33 +174,32 @@ func (d *StaffAssessDao) catchProjectIdByPermission(companyId int, cycleId int, | ||
| 174 | } | 174 | } |
| 175 | 175 | ||
| 176 | type TargetUserCycleProject struct { | 176 | type TargetUserCycleProject struct { |
| 177 | - CycleId string `pg:"cycle_id" json:"cycleId"` //周期id | ||
| 178 | - CycleName string `pg:"cycle_name" json:"cycleName"` //周期名称 | ||
| 179 | - EvaluationProjectIds []string `pg:"evaluation_project_ids" json:"evaluationProjectIds"` | 177 | + CycleId string `pg:"cycle_id" json:"cycleId"` //周期id |
| 178 | + CycleName string `pg:"cycle_name" json:"cycleName"` //周期名称 | ||
| 179 | + EvaluationProjectId string `pg:"evaluation_project_id" json:"evaluationProjectId"` | ||
| 180 | + EvaluationProjectName string `pg:"evaluation_project_name" json:"evaluationProjectName"` | ||
| 181 | + TargetUserId string `pg:"target_user_id" json:"targetUserId"` | ||
| 180 | } | 182 | } |
| 181 | 183 | ||
| 182 | // 获取目标员工的自评周期和项目 | 184 | // 获取目标员工的自评周期和项目 |
| 183 | func (d *StaffAssessDao) SearchTargetUserCycleProject(companyId int, targetUserId int, limit int, offset int) ([]TargetUserCycleProject, error) { | 185 | func (d *StaffAssessDao) SearchTargetUserCycleProject(companyId int, targetUserId int, limit int, offset int) ([]TargetUserCycleProject, error) { |
| 184 | - sqlStr := ` with t_staff_assess as ( | ||
| 185 | - select distinct staff_assess.cycle_id , | ||
| 186 | - staff_assess.cycle_name, | ||
| 187 | - staff_assess.evaluation_project_id | ||
| 188 | - from staff_assess | ||
| 189 | - where 1=1 | ||
| 190 | - and staff_assess."types" ='self' | ||
| 191 | - and staff_assess.deleted_at isnull | ||
| 192 | - and staff_assess.target_user ->>'userId'='?' | ||
| 193 | - and staff_assess.company_id=? | ||
| 194 | - ) | ||
| 195 | - select | ||
| 196 | - t_staff_assess.cycle_id, | ||
| 197 | - t_staff_assess.cycle_name, | ||
| 198 | - array_agg(to_char(t_staff_assess.evaluation_project_id,'9999999999999999999')) as evaluation_project_ids | ||
| 199 | - from t_staff_assess | ||
| 200 | - group by cycle_id,cycle_name | ||
| 201 | - limit ? offset ? | 186 | + sqlStr := `select distinct |
| 187 | + staff_assess.cycle_name, | ||
| 188 | + staff_assess.cycle_id , | ||
| 189 | + staff_assess.evaluation_project_id, | ||
| 190 | + staff_assess.target_user ->>'userId' as target_user_id, | ||
| 191 | + staff_assess.evaluation_project_name | ||
| 192 | + from staff_assess ,staff_assess_task | ||
| 193 | + where 1=1 | ||
| 194 | + and staff_assess_task.id =staff_assess.staff_assess_task_id | ||
| 195 | + and staff_assess."types" ='self' | ||
| 196 | + and staff_assess_task.deleted_at isnull | ||
| 197 | + and staff_assess.deleted_at isnull | ||
| 198 | + and staff_assess.target_user ->>'userId'='?' | ||
| 199 | + and staff_assess.company_id=? | ||
| 202 | ` | 200 | ` |
| 203 | - condition := []interface{}{companyId, targetUserId, limit, offset} | 201 | + sqlStr += ` order by cycle_id desc limit ? offset ? ` |
| 202 | + condition := []interface{}{targetUserId, companyId, limit, offset} | ||
| 204 | result := []TargetUserCycleProject{} | 203 | result := []TargetUserCycleProject{} |
| 205 | tx := d.transactionContext.PgTx | 204 | tx := d.transactionContext.PgTx |
| 206 | _, err := tx.Query(&result, sqlStr, condition...) | 205 | _, err := tx.Query(&result, sqlStr, condition...) |
| @@ -5,15 +5,16 @@ import ( | @@ -5,15 +5,16 @@ import ( | ||
| 5 | ) | 5 | ) |
| 6 | 6 | ||
| 7 | type EvaluationCycle struct { | 7 | type EvaluationCycle struct { |
| 8 | - tableName struct{} `comment:"评估周期" pg:"evaluation_cycle"` | ||
| 9 | - Id int64 `comment:"周期ID" pg:"pk:id"` | ||
| 10 | - Name string `comment:"名称"` | ||
| 11 | - TimeStart *time.Time `comment:"起始时间"` | ||
| 12 | - TimeEnd *time.Time `comment:"截至时间"` | ||
| 13 | - CompanyId int64 `comment:"公司ID"` | ||
| 14 | - CreatorId int64 `comment:"创建人ID"` | ||
| 15 | - KpiCycle int `comment:"考核周期(1日、2周、3月)"` | ||
| 16 | - CreatedAt time.Time `comment:"创建时间"` | ||
| 17 | - UpdatedAt time.Time `comment:"更新时间"` | ||
| 18 | - DeletedAt *time.Time `comment:"删除时间"` | 8 | + tableName struct{} `comment:"评估周期" pg:"evaluation_cycle"` |
| 9 | + Id int64 `comment:"周期ID" pg:"pk:id"` | ||
| 10 | + Name string `comment:"名称"` | ||
| 11 | + TimeStart *time.Time `comment:"起始时间"` | ||
| 12 | + TimeEnd *time.Time `comment:"截至时间"` | ||
| 13 | + CompanyId int64 `comment:"公司ID"` | ||
| 14 | + CreatorId int64 `comment:"创建人ID"` | ||
| 15 | + KpiCycle int `comment:"考核周期(1日、2周、3月)"` | ||
| 16 | + SummaryState int `comment:"周期评估是否下发" pg:",use_zero"` | ||
| 17 | + CreatedAt time.Time `comment:"创建时间"` | ||
| 18 | + UpdatedAt time.Time `comment:"更新时间"` | ||
| 19 | + DeletedAt *time.Time `comment:"删除时间"` | ||
| 19 | } | 20 | } |
| @@ -23,31 +23,33 @@ func NewEvaluationCycleRepository(transactionContext *pgTransaction.TransactionC | @@ -23,31 +23,33 @@ func NewEvaluationCycleRepository(transactionContext *pgTransaction.TransactionC | ||
| 23 | 23 | ||
| 24 | func (repo *EvaluationCycleRepository) TransformToDomain(m *models.EvaluationCycle) domain.EvaluationCycle { | 24 | func (repo *EvaluationCycleRepository) TransformToDomain(m *models.EvaluationCycle) domain.EvaluationCycle { |
| 25 | return domain.EvaluationCycle{ | 25 | return domain.EvaluationCycle{ |
| 26 | - Id: m.Id, | ||
| 27 | - Name: m.Name, | ||
| 28 | - TimeStart: m.TimeStart, | ||
| 29 | - TimeEnd: m.TimeEnd, | ||
| 30 | - CompanyId: m.CompanyId, | ||
| 31 | - CreatorId: m.CreatorId, | ||
| 32 | - KpiCycle: m.KpiCycle, | ||
| 33 | - CreatedAt: m.CreatedAt.Local(), | ||
| 34 | - UpdatedAt: m.UpdatedAt.Local(), | ||
| 35 | - DeletedAt: m.DeletedAt, | 26 | + Id: m.Id, |
| 27 | + Name: m.Name, | ||
| 28 | + TimeStart: m.TimeStart, | ||
| 29 | + TimeEnd: m.TimeEnd, | ||
| 30 | + CompanyId: m.CompanyId, | ||
| 31 | + CreatorId: m.CreatorId, | ||
| 32 | + KpiCycle: m.KpiCycle, | ||
| 33 | + SummaryState: domain.ProjectSummaryState(m.SummaryState), | ||
| 34 | + CreatedAt: m.CreatedAt.Local(), | ||
| 35 | + UpdatedAt: m.UpdatedAt.Local(), | ||
| 36 | + DeletedAt: m.DeletedAt, | ||
| 36 | } | 37 | } |
| 37 | } | 38 | } |
| 38 | 39 | ||
| 39 | func (repo *EvaluationCycleRepository) TransformToModel(d *domain.EvaluationCycle) models.EvaluationCycle { | 40 | func (repo *EvaluationCycleRepository) TransformToModel(d *domain.EvaluationCycle) models.EvaluationCycle { |
| 40 | return models.EvaluationCycle{ | 41 | return models.EvaluationCycle{ |
| 41 | - Id: d.Id, | ||
| 42 | - Name: d.Name, | ||
| 43 | - TimeStart: d.TimeStart, | ||
| 44 | - TimeEnd: d.TimeEnd, | ||
| 45 | - CompanyId: d.CompanyId, | ||
| 46 | - CreatorId: d.CreatorId, | ||
| 47 | - KpiCycle: d.KpiCycle, | ||
| 48 | - CreatedAt: d.CreatedAt, | ||
| 49 | - UpdatedAt: d.UpdatedAt, | ||
| 50 | - DeletedAt: d.DeletedAt, | 42 | + Id: d.Id, |
| 43 | + Name: d.Name, | ||
| 44 | + TimeStart: d.TimeStart, | ||
| 45 | + TimeEnd: d.TimeEnd, | ||
| 46 | + CompanyId: d.CompanyId, | ||
| 47 | + CreatorId: d.CreatorId, | ||
| 48 | + KpiCycle: d.KpiCycle, | ||
| 49 | + SummaryState: int(d.SummaryState), | ||
| 50 | + CreatedAt: d.CreatedAt, | ||
| 51 | + UpdatedAt: d.UpdatedAt, | ||
| 52 | + DeletedAt: d.DeletedAt, | ||
| 51 | } | 53 | } |
| 52 | } | 54 | } |
| 53 | 55 | ||
| @@ -195,3 +197,25 @@ func (repo *EvaluationCycleRepository) Count(queryOptions map[string]interface{} | @@ -195,3 +197,25 @@ func (repo *EvaluationCycleRepository) Count(queryOptions map[string]interface{} | ||
| 195 | } | 197 | } |
| 196 | return int64(count), nil | 198 | return int64(count), nil |
| 197 | } | 199 | } |
| 200 | + | ||
| 201 | +// 获取已结束的周期 | ||
| 202 | +func (repo *EvaluationCycleRepository) FindCycleEnd(limit int) ([]*domain.EvaluationCycle, error) { | ||
| 203 | + tx := repo.transactionContext.PgTx | ||
| 204 | + var m []*models.EvaluationCycle | ||
| 205 | + query := tx.Model(&m). | ||
| 206 | + Where("deleted_at isnull"). | ||
| 207 | + Where("time_end<=?", time.Now()). | ||
| 208 | + Where("summary_state=0"). | ||
| 209 | + Limit(limit) | ||
| 210 | + | ||
| 211 | + err := query.Select() | ||
| 212 | + if err != nil { | ||
| 213 | + return nil, err | ||
| 214 | + } | ||
| 215 | + var arrays []*domain.EvaluationCycle | ||
| 216 | + for _, v := range m { | ||
| 217 | + d := repo.TransformToDomain(v) | ||
| 218 | + arrays = append(arrays, &d) | ||
| 219 | + } | ||
| 220 | + return arrays, nil | ||
| 221 | +} |
| @@ -337,7 +337,22 @@ func (c *StaffAssessController) ListTargetUserSelfCycle() { | @@ -337,7 +337,22 @@ func (c *StaffAssessController) ListTargetUserSelfCycle() { | ||
| 337 | } | 337 | } |
| 338 | userReq := middlewares.GetUser(c.Ctx) | 338 | userReq := middlewares.GetUser(c.Ctx) |
| 339 | paramReq.CompanyId = int(userReq.CompanyId) | 339 | paramReq.CompanyId = int(userReq.CompanyId) |
| 340 | - paramReq.TargetUserId = int(userReq.UserId) | ||
| 341 | data, err := srv.ListTargetUserSelfCycle(paramReq) | 340 | data, err := srv.ListTargetUserSelfCycle(paramReq) |
| 342 | c.Response(data, err) | 341 | c.Response(data, err) |
| 343 | } | 342 | } |
| 343 | + | ||
| 344 | +// ListTargetUserSelfCycle 按照周期获取员工的每日自评小结 | ||
| 345 | +func (c *StaffAssessController) GetStaffAsessSelfCountLevel() { | ||
| 346 | + srv := service.NewStaffAssessServeice() | ||
| 347 | + paramReq := &query.StaffAsessSelfCountLevel{} | ||
| 348 | + err := c.BindJSON(paramReq) | ||
| 349 | + if err != nil { | ||
| 350 | + e := application.ThrowError(application.ARG_ERROR, "json 解析错误"+err.Error()) | ||
| 351 | + c.Response(nil, e) | ||
| 352 | + return | ||
| 353 | + } | ||
| 354 | + userReq := middlewares.GetUser(c.Ctx) | ||
| 355 | + paramReq.CompanyId = int(userReq.CompanyId) | ||
| 356 | + data, err := srv.GetStaffAsessSelfCountLevel(paramReq) | ||
| 357 | + c.Response(data, err) | ||
| 358 | +} |
| @@ -20,7 +20,6 @@ func init() { | @@ -20,7 +20,6 @@ func init() { | ||
| 20 | web.NSCtrlPost("/cycle/day/content/export", (*controllers.StaffAssessController).ExportAssessContentCycleDay), //根据周期里的考核日期,导出员工填写评估内容列表 | 20 | web.NSCtrlPost("/cycle/day/content/export", (*controllers.StaffAssessController).ExportAssessContentCycleDay), //根据周期里的考核日期,导出员工填写评估内容列表 |
| 21 | web.NSCtrlPost("/cycle/day/analysis", (*controllers.StaffAssessController).AnalysisData), //员工绩效-项目管理-矩阵分析 | 21 | web.NSCtrlPost("/cycle/day/analysis", (*controllers.StaffAssessController).AnalysisData), //员工绩效-项目管理-矩阵分析 |
| 22 | web.NSCtrlPost("/cycle/day/content/export2", (*controllers.StaffAssessController).ExportUserAssess2), //员工绩效-综合管理-导出绩效-个人 | 22 | web.NSCtrlPost("/cycle/day/content/export2", (*controllers.StaffAssessController).ExportUserAssess2), //员工绩效-综合管理-导出绩效-个人 |
| 23 | - | ||
| 24 | ) | 23 | ) |
| 25 | 24 | ||
| 26 | assessNS := web.NewNamespace("/v1/staff-assess", | 25 | assessNS := web.NewNamespace("/v1/staff-assess", |
| @@ -36,6 +35,7 @@ func init() { | @@ -36,6 +35,7 @@ func init() { | ||
| 36 | web.NSCtrlPost("/summary/users-indicator", (*controllers.StaffAssessController).QueryMemberPerformanceIndicator), //员工绩效-综合管理-绩效导出指标 | 35 | web.NSCtrlPost("/summary/users-indicator", (*controllers.StaffAssessController).QueryMemberPerformanceIndicator), //员工绩效-综合管理-绩效导出指标 |
| 37 | web.NSCtrlPost("/summary/export-indicator", (*controllers.StaffAssessController).ExportPerformanceIndicator), //员工绩效-综合管理-绩效导出指标 | 36 | web.NSCtrlPost("/summary/export-indicator", (*controllers.StaffAssessController).ExportPerformanceIndicator), //员工绩效-综合管理-绩效导出指标 |
| 38 | web.NSCtrlPost("/target_user/self/cycle", (*controllers.StaffAssessController).ListTargetUserSelfCycle), //获取员工自评的周期下拉列表 | 37 | web.NSCtrlPost("/target_user/self/cycle", (*controllers.StaffAssessController).ListTargetUserSelfCycle), //获取员工自评的周期下拉列表 |
| 38 | + web.NSCtrlPost("/target_user/self/summary", (*controllers.StaffAssessController).GetStaffAsessSelfCountLevel), //获取员工每日自评小结 | ||
| 39 | ) | 39 | ) |
| 40 | //v2 改版 | 40 | //v2 改版 |
| 41 | assessTaskV2NS := web.NewNamespace("/v2/staff-assess-task", | 41 | assessTaskV2NS := web.NewNamespace("/v2/staff-assess-task", |
-
请 注册 或 登录 后发表评论