正在显示
33 个修改的文件
包含
681 行增加
和
167 行删除
| @@ -60,6 +60,8 @@ spec: | @@ -60,6 +60,8 @@ spec: | ||
| 60 | value: "debug" | 60 | value: "debug" |
| 61 | - name: LOG_FILE | 61 | - name: LOG_FILE |
| 62 | value: "true" | 62 | value: "true" |
| 63 | + - name: ENV_MOD | ||
| 64 | + value: "prd" | ||
| 63 | - name: ERROR_BASE_CODE | 65 | - name: ERROR_BASE_CODE |
| 64 | value: "1" | 66 | value: "1" |
| 65 | - name: ERROR_BASE_CODE_MULTIPLE | 67 | - name: ERROR_BASE_CODE_MULTIPLE |
| @@ -60,6 +60,8 @@ spec: | @@ -60,6 +60,8 @@ spec: | ||
| 60 | value: "debug" | 60 | value: "debug" |
| 61 | - name: LOG_FILE | 61 | - name: LOG_FILE |
| 62 | value: "true" | 62 | value: "true" |
| 63 | + - name: ENV_MOD | ||
| 64 | + value: "test" | ||
| 63 | - name: ERROR_BASE_CODE | 65 | - name: ERROR_BASE_CODE |
| 64 | value: "1" | 66 | value: "1" |
| 65 | - name: ERROR_BASE_CODE_MULTIPLE | 67 | - name: ERROR_BASE_CODE_MULTIPLE |
| 1 | package main | 1 | package main |
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/constant" | ||
| 4 | "time" | 5 | "time" |
| 5 | 6 | ||
| 6 | "github.com/beego/beego/v2/server/web" | 7 | "github.com/beego/beego/v2/server/web" |
| @@ -27,7 +28,13 @@ func startNodeTask() { | @@ -27,7 +28,13 @@ func startNodeTask() { | ||
| 27 | go func() { | 28 | go func() { |
| 28 | nodeTaskService := serviceTask.NewNodeTaskService() | 29 | nodeTaskService := serviceTask.NewNodeTaskService() |
| 29 | for { | 30 | for { |
| 30 | - timer := time.NewTimer(time.Second * 60) | 31 | + var duration time.Duration |
| 32 | + if constant.Env == "prd" { | ||
| 33 | + duration = time.Minute * 5 | ||
| 34 | + } else { | ||
| 35 | + duration = time.Minute * 1 | ||
| 36 | + } | ||
| 37 | + timer := time.NewTimer(duration) | ||
| 31 | <-timer.C | 38 | <-timer.C |
| 32 | if err := nodeTaskService.SendEvaluationNode(); err != nil { | 39 | if err := nodeTaskService.SendEvaluationNode(); err != nil { |
| 33 | log.Logger.Error(err.Error()) | 40 | log.Logger.Error(err.Error()) |
| @@ -17,6 +17,7 @@ type EvaluationProjectAdapter struct { | @@ -17,6 +17,7 @@ type EvaluationProjectAdapter struct { | ||
| 17 | } | 17 | } |
| 18 | 18 | ||
| 19 | func (adapter *EvaluationProjectAdapter) TransformRecipientAdapter(recipients []*domain.User) { | 19 | func (adapter *EvaluationProjectAdapter) TransformRecipientAdapter(recipients []*domain.User) { |
| 20 | + adapter.RecipientList = make([]*UserAdapter, 0) | ||
| 20 | for i := range recipients { | 21 | for i := range recipients { |
| 21 | adapter.RecipientList = append(adapter.RecipientList, &UserAdapter{ | 22 | adapter.RecipientList = append(adapter.RecipientList, &UserAdapter{ |
| 22 | Id: recipients[i].Id, | 23 | Id: recipients[i].Id, |
| @@ -26,6 +27,7 @@ func (adapter *EvaluationProjectAdapter) TransformRecipientAdapter(recipients [] | @@ -26,6 +27,7 @@ func (adapter *EvaluationProjectAdapter) TransformRecipientAdapter(recipients [] | ||
| 26 | } | 27 | } |
| 27 | 28 | ||
| 28 | func (adapter *EvaluationProjectAdapter) TransformPmpAdapter(pms []*domain.User) { | 29 | func (adapter *EvaluationProjectAdapter) TransformPmpAdapter(pms []*domain.User) { |
| 30 | + adapter.PmpList = make([]*UserAdapter, 0) | ||
| 29 | for i := range pms { | 31 | for i := range pms { |
| 30 | adapter.PmpList = append(adapter.PmpList, &UserAdapter{ | 32 | adapter.PmpList = append(adapter.PmpList, &UserAdapter{ |
| 31 | Id: pms[i].Id, | 33 | Id: pms[i].Id, |
| @@ -46,6 +48,8 @@ func TransformProjectListAdapter(projects []*domain.EvaluationProject, users []* | @@ -46,6 +48,8 @@ func TransformProjectListAdapter(projects []*domain.EvaluationProject, users []* | ||
| 46 | 48 | ||
| 47 | epa := &EvaluationProjectAdapter{} | 49 | epa := &EvaluationProjectAdapter{} |
| 48 | epa.EvaluationProject = project | 50 | epa.EvaluationProject = project |
| 51 | + epa.PmpList = make([]*UserAdapter, 0) | ||
| 52 | + | ||
| 49 | projectAdapters = append(projectAdapters, epa) | 53 | projectAdapters = append(projectAdapters, epa) |
| 50 | 54 | ||
| 51 | for j := range project.PmpIds { | 55 | for j := range project.PmpIds { |
| @@ -176,7 +176,8 @@ func (rs *EvaluationProjectService) UpdateTemplate(in *command.UpdateProjectTemp | @@ -176,7 +176,8 @@ func (rs *EvaluationProjectService) UpdateTemplate(in *command.UpdateProjectTemp | ||
| 176 | } | 176 | } |
| 177 | 177 | ||
| 178 | now := time.Now().Local() | 178 | now := time.Now().Local() |
| 179 | - nowO := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, time.Local) // 当前时间0点0分0秒时刻 | 179 | + year, month, day := now.Date() |
| 180 | + nowO := time.Date(year, month, day, 0, 0, 0, 0, time.Local) // 当前时间0点0分0秒时刻 | ||
| 180 | 181 | ||
| 181 | for i := range tasks { | 182 | for i := range tasks { |
| 182 | task := tasks[i] | 183 | task := tasks[i] |
| @@ -185,18 +186,20 @@ func (rs *EvaluationProjectService) UpdateTemplate(in *command.UpdateProjectTemp | @@ -185,18 +186,20 @@ func (rs *EvaluationProjectService) UpdateTemplate(in *command.UpdateProjectTemp | ||
| 185 | // 重新计算 | 186 | // 重新计算 |
| 186 | if task.NextSentAt == nil { | 187 | if task.NextSentAt == nil { |
| 187 | // 环节起始和截止本地时间 | 188 | // 环节起始和截止本地时间 |
| 188 | - startLocal := task.TimeStart | ||
| 189 | - endLocal := task.TimeEnd | 189 | + startLocal := task.TimeStart.Local() |
| 190 | + sYear, sMonth, sDay := startLocal.Date() | ||
| 191 | + startLocal = time.Date(sYear, sMonth, sDay, 0, 0, 0, 0, time.Local) // 开始时间以0点开始计算 | ||
| 192 | + endLocal := task.TimeEnd.Local() | ||
| 190 | 193 | ||
| 191 | // 在当前时间之前,则计算下一个周期时间 | 194 | // 在当前时间之前,则计算下一个周期时间 |
| 192 | - if startLocal.Before(now) { | 195 | + if startLocal.Before(nowO) { |
| 193 | nextTime := utils.NextTime(nowO, startLocal, task.KpiCycle) | 196 | nextTime := utils.NextTime(nowO, startLocal, task.KpiCycle) |
| 194 | task.NextSentAt = &nextTime | 197 | task.NextSentAt = &nextTime |
| 195 | } else { | 198 | } else { |
| 196 | - task.NextSentAt = startLocal | 199 | + task.NextSentAt = &startLocal |
| 197 | } | 200 | } |
| 198 | // 如果超出截至时间,则周期置空 | 201 | // 如果超出截至时间,则周期置空 |
| 199 | - if task.NextSentAt.After(endLocal.Local()) { | 202 | + if task.NextSentAt.After(endLocal) { |
| 200 | task.NextSentAt = nil | 203 | task.NextSentAt = nil |
| 201 | } | 204 | } |
| 202 | } else { | 205 | } else { |
| @@ -435,6 +438,7 @@ func (rs *EvaluationProjectService) Activate(in *command.ActivateProjectCommand) | @@ -435,6 +438,7 @@ func (rs *EvaluationProjectService) Activate(in *command.ActivateProjectCommand) | ||
| 435 | }() | 438 | }() |
| 436 | 439 | ||
| 437 | projectRepository := factory.CreateEvaluationProjectRepository(map[string]interface{}{"transactionContext": transactionContext}) | 440 | projectRepository := factory.CreateEvaluationProjectRepository(map[string]interface{}{"transactionContext": transactionContext}) |
| 441 | + taskRepository := factory.CreateNodeTaskRepository(map[string]interface{}{"transactionContext": transactionContext}) | ||
| 438 | 442 | ||
| 439 | project, err := projectRepository.FindOne(map[string]interface{}{"id": in.Id}) | 443 | project, err := projectRepository.FindOne(map[string]interface{}{"id": in.Id}) |
| 440 | if err != nil { | 444 | if err != nil { |
| @@ -456,10 +460,9 @@ func (rs *EvaluationProjectService) Activate(in *command.ActivateProjectCommand) | @@ -456,10 +460,9 @@ func (rs *EvaluationProjectService) Activate(in *command.ActivateProjectCommand) | ||
| 456 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 460 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 457 | } | 461 | } |
| 458 | 462 | ||
| 459 | - taskRepository := factory.CreateNodeTaskRepository(map[string]interface{}{"transactionContext": transactionContext}) | ||
| 460 | - | ||
| 461 | now := time.Now().Local() | 463 | now := time.Now().Local() |
| 462 | - nowO := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, time.Local) // 当前时间0点0分0秒时刻 | 464 | + year, month, day := now.Date() |
| 465 | + nowO := time.Date(year, month, day, 0, 0, 0, 0, time.Local) // 当前时间0点0分0秒时刻 | ||
| 463 | 466 | ||
| 464 | for i := range project.Template.LinkNodes { | 467 | for i := range project.Template.LinkNodes { |
| 465 | node := project.Template.LinkNodes[i] | 468 | node := project.Template.LinkNodes[i] |
| @@ -479,18 +482,20 @@ func (rs *EvaluationProjectService) Activate(in *command.ActivateProjectCommand) | @@ -479,18 +482,20 @@ func (rs *EvaluationProjectService) Activate(in *command.ActivateProjectCommand) | ||
| 479 | } | 482 | } |
| 480 | 483 | ||
| 481 | // 环节起始和截止本地时间 | 484 | // 环节起始和截止本地时间 |
| 482 | - startLocal := node.TimeStart | ||
| 483 | - endLocal := node.TimeEnd | 485 | + startLocal := task.TimeStart.Local() |
| 486 | + sYear, sMonth, sDay := startLocal.Date() | ||
| 487 | + startLocal = time.Date(sYear, sMonth, sDay, 0, 0, 0, 0, time.Local) // 开始时间以0点开始计算 | ||
| 488 | + endLocal := task.TimeEnd.Local() | ||
| 484 | 489 | ||
| 485 | // 在当前时间之前,则计算下一个周期时间 | 490 | // 在当前时间之前,则计算下一个周期时间 |
| 486 | - if startLocal.Before(now) { | 491 | + if startLocal.Before(nowO) { |
| 487 | nextTime := utils.NextTime(nowO, startLocal, node.KpiCycle) | 492 | nextTime := utils.NextTime(nowO, startLocal, node.KpiCycle) |
| 488 | task.NextSentAt = &nextTime | 493 | task.NextSentAt = &nextTime |
| 489 | } else { | 494 | } else { |
| 490 | - task.NextSentAt = startLocal | 495 | + task.NextSentAt = &startLocal |
| 491 | } | 496 | } |
| 492 | // 如果超出截至时间,则周期置空 | 497 | // 如果超出截至时间,则周期置空 |
| 493 | - if task.NextSentAt.After(endLocal.Local()) { | 498 | + if task.NextSentAt.After(endLocal) { |
| 494 | task.NextSentAt = nil | 499 | task.NextSentAt = nil |
| 495 | } | 500 | } |
| 496 | 501 |
| @@ -218,6 +218,7 @@ func (rs *EvaluationRuleService) ListRelCreator(in *command.QueryRuleCommand) (i | @@ -218,6 +218,7 @@ func (rs *EvaluationRuleService) ListRelCreator(in *command.QueryRuleCommand) (i | ||
| 218 | if v, ok := userNameMap[ras[i].CreatorId]; ok { | 218 | if v, ok := userNameMap[ras[i].CreatorId]; ok { |
| 219 | ras[i].CreatorName = v | 219 | ras[i].CreatorName = v |
| 220 | } | 220 | } |
| 221 | + | ||
| 221 | } | 222 | } |
| 222 | 223 | ||
| 223 | if err := transactionContext.CommitTransaction(); err != nil { | 224 | if err := transactionContext.CommitTransaction(); err != nil { |
| @@ -160,3 +160,11 @@ func CreateStaffAssessTaskRepository(options map[string]interface{}) domain.Staf | @@ -160,3 +160,11 @@ func CreateStaffAssessTaskRepository(options map[string]interface{}) domain.Staf | ||
| 160 | } | 160 | } |
| 161 | return repository.NewStaffAssessTaskRepository(transactionContext) | 161 | return repository.NewStaffAssessTaskRepository(transactionContext) |
| 162 | } | 162 | } |
| 163 | + | ||
| 164 | +func CreateStaffAssessContentTempRepository(options map[string]interface{}) domain.StaffAssessContentTempRepository { | ||
| 165 | + var transactionContext *pg.TransactionContext | ||
| 166 | + if value, ok := options["transactionContext"]; ok { | ||
| 167 | + transactionContext = value.(*pg.TransactionContext) | ||
| 168 | + } | ||
| 169 | + return repository.NewStaffAssessContentTempRepository(transactionContext) | ||
| 170 | +} |
| @@ -87,7 +87,7 @@ func (rs *NodeTaskService) SendEvaluationNode() error { | @@ -87,7 +87,7 @@ func (rs *NodeTaskService) SendEvaluationNode() error { | ||
| 87 | maxTime := task.TimeEnd.Local() | 87 | maxTime := task.TimeEnd.Local() |
| 88 | 88 | ||
| 89 | // 当前周起始时间和截止时间 | 89 | // 当前周起始时间和截止时间 |
| 90 | - var cycleTimeStart = task.NextSentAt | 90 | + var cycleTimeStart = task.NextSentAt.Local() |
| 91 | var cycleTimeEnd time.Time | 91 | var cycleTimeEnd time.Time |
| 92 | 92 | ||
| 93 | // 下个周期起始时间 | 93 | // 下个周期起始时间 |
| 1 | +package query | ||
| 2 | + | ||
| 3 | +type ListAssessContentCycleDay struct { | ||
| 4 | + CompanyId int `json:"companyId"` | ||
| 5 | + OperaterId int `json:"operaterId"` | ||
| 6 | + CycleId int `json:"cycleId,string"` | ||
| 7 | + BeginDay string `json:"beginDay"` | ||
| 8 | + TargetUserName string `json:"targetUserName"` | ||
| 9 | + PageNumber int `json:"pageNumber"` | ||
| 10 | + PageSize int `json:"pageSize"` | ||
| 11 | +} |
| @@ -479,7 +479,8 @@ func (srv StaffAssessServeice) createStaffAssess(transactionContext application. | @@ -479,7 +479,8 @@ func (srv StaffAssessServeice) createStaffAssess(transactionContext application. | ||
| 479 | }) | 479 | }) |
| 480 | //获取员工信息 | 480 | //获取员工信息 |
| 481 | _, userList, err := userRepo.Find(map[string]interface{}{ | 481 | _, userList, err := userRepo.Find(map[string]interface{}{ |
| 482 | - "ids": selfUserId, | 482 | + "ids": selfUserId, |
| 483 | + "status": 1, | ||
| 483 | }) | 484 | }) |
| 484 | if err != nil { | 485 | if err != nil { |
| 485 | return nil, application.ThrowError(application.ARG_ERROR, "获取员工信息"+err.Error()) | 486 | return nil, application.ThrowError(application.ARG_ERROR, "获取员工信息"+err.Error()) |
| @@ -690,12 +691,17 @@ func (srv StaffAssessServeice) GetAssessInviteUser(param *query.GetAssessInviteU | @@ -690,12 +691,17 @@ func (srv StaffAssessServeice) GetAssessInviteUser(param *query.GetAssessInviteU | ||
| 690 | // 保存某个员工360邀请的人员 | 691 | // 保存某个员工360邀请的人员 |
| 691 | func (srv StaffAssessServeice) SaveAssessInviteUser(param *command.SaveAssessInvite) (map[string]interface{}, error) { | 692 | func (srv StaffAssessServeice) SaveAssessInviteUser(param *command.SaveAssessInvite) (map[string]interface{}, error) { |
| 692 | inviteSameSuperId := []int{} | 693 | inviteSameSuperId := []int{} |
| 694 | + userIdMap := map[int]struct{}{} //过滤重复的id | ||
| 693 | InviteDiffSuperId := []int{} | 695 | InviteDiffSuperId := []int{} |
| 694 | for _, v := range param.InviteDiffSuper { | 696 | for _, v := range param.InviteDiffSuper { |
| 695 | id, err := strconv.Atoi(v) | 697 | id, err := strconv.Atoi(v) |
| 696 | if err != nil { | 698 | if err != nil { |
| 697 | return nil, application.ThrowError(application.ARG_ERROR, "用户填写错误") | 699 | return nil, application.ThrowError(application.ARG_ERROR, "用户填写错误") |
| 698 | } | 700 | } |
| 701 | + if _, ok := userIdMap[id]; ok { | ||
| 702 | + continue | ||
| 703 | + } | ||
| 704 | + userIdMap[id] = struct{}{} | ||
| 699 | InviteDiffSuperId = append(InviteDiffSuperId, id) | 705 | InviteDiffSuperId = append(InviteDiffSuperId, id) |
| 700 | } | 706 | } |
| 701 | for _, v := range param.InviteSameSuper { | 707 | for _, v := range param.InviteSameSuper { |
| @@ -703,6 +709,10 @@ func (srv StaffAssessServeice) SaveAssessInviteUser(param *command.SaveAssessInv | @@ -703,6 +709,10 @@ func (srv StaffAssessServeice) SaveAssessInviteUser(param *command.SaveAssessInv | ||
| 703 | if err != nil { | 709 | if err != nil { |
| 704 | return nil, application.ThrowError(application.ARG_ERROR, "用户填写错误") | 710 | return nil, application.ThrowError(application.ARG_ERROR, "用户填写错误") |
| 705 | } | 711 | } |
| 712 | + if _, ok := userIdMap[id]; ok { | ||
| 713 | + continue | ||
| 714 | + } | ||
| 715 | + userIdMap[id] = struct{}{} | ||
| 706 | inviteSameSuperId = append(inviteSameSuperId, id) | 716 | inviteSameSuperId = append(inviteSameSuperId, id) |
| 707 | } | 717 | } |
| 708 | transactionContext, err := factory.CreateTransactionContext(nil) | 718 | transactionContext, err := factory.CreateTransactionContext(nil) |
| @@ -780,7 +790,8 @@ func (srv StaffAssessServeice) SaveAssessInviteUser(param *command.SaveAssessInv | @@ -780,7 +790,8 @@ func (srv StaffAssessServeice) SaveAssessInviteUser(param *command.SaveAssessInv | ||
| 780 | var inviteSameSuper []domain.StaffDesc | 790 | var inviteSameSuper []domain.StaffDesc |
| 781 | if len(inviteSameSuperId) > 0 { | 791 | if len(inviteSameSuperId) > 0 { |
| 782 | _, userList, err := userRepo.Find(map[string]interface{}{ | 792 | _, userList, err := userRepo.Find(map[string]interface{}{ |
| 783 | - "ids": inviteSameSuperId, | 793 | + "ids": inviteSameSuperId, |
| 794 | + "status": 1, | ||
| 784 | }) | 795 | }) |
| 785 | if err != nil { | 796 | if err != nil { |
| 786 | return nil, application.ThrowError(application.ARG_ERROR, "获取用户信息"+err.Error()) | 797 | return nil, application.ThrowError(application.ARG_ERROR, "获取用户信息"+err.Error()) |
| @@ -797,7 +808,8 @@ func (srv StaffAssessServeice) SaveAssessInviteUser(param *command.SaveAssessInv | @@ -797,7 +808,8 @@ func (srv StaffAssessServeice) SaveAssessInviteUser(param *command.SaveAssessInv | ||
| 797 | var inviteDiffSuper []domain.StaffDesc | 808 | var inviteDiffSuper []domain.StaffDesc |
| 798 | if len(InviteDiffSuperId) > 0 { | 809 | if len(InviteDiffSuperId) > 0 { |
| 799 | _, userList, err := userRepo.Find(map[string]interface{}{ | 810 | _, userList, err := userRepo.Find(map[string]interface{}{ |
| 800 | - "ids": InviteDiffSuperId, | 811 | + "ids": InviteDiffSuperId, |
| 812 | + "status": 1, | ||
| 801 | }) | 813 | }) |
| 802 | if err != nil { | 814 | if err != nil { |
| 803 | return nil, application.ThrowError(application.ARG_ERROR, "获取用户信息"+err.Error()) | 815 | return nil, application.ThrowError(application.ARG_ERROR, "获取用户信息"+err.Error()) |
| @@ -1136,6 +1148,7 @@ func (srv StaffAssessServeice) SelectAssessInviteUser(param *query.SelectAssessI | @@ -1136,6 +1148,7 @@ func (srv StaffAssessServeice) SelectAssessInviteUser(param *query.SelectAssessI | ||
| 1136 | "companyId": param.CompanyId, | 1148 | "companyId": param.CompanyId, |
| 1137 | "name": param.InviteUserName, | 1149 | "name": param.InviteUserName, |
| 1138 | "limit": 20, | 1150 | "limit": 20, |
| 1151 | + "status": 1, | ||
| 1139 | } | 1152 | } |
| 1140 | if param.PageSize > 0 { | 1153 | if param.PageSize > 0 { |
| 1141 | condition["limit"] = param.PageSize | 1154 | condition["limit"] = param.PageSize |
| @@ -1713,12 +1726,11 @@ func (srv StaffAssessServeice) SaveAssessInfo(param *command.SaveAssessInfoComma | @@ -1713,12 +1726,11 @@ func (srv StaffAssessServeice) SaveAssessInfo(param *command.SaveAssessInfoComma | ||
| 1713 | continue | 1726 | continue |
| 1714 | } | 1727 | } |
| 1715 | v.Value = item.Value | 1728 | v.Value = item.Value |
| 1716 | - //填入评估值描述 | ||
| 1717 | - reteResult, err := v.Rule.ScoreOrRating(&v.Value) | 1729 | + //转换填入的评估值 |
| 1730 | + err = v.TransformValue() | ||
| 1718 | if err != nil { | 1731 | if err != nil { |
| 1719 | return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | 1732 | return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) |
| 1720 | } | 1733 | } |
| 1721 | - v.ReteResult = reteResult | ||
| 1722 | for ii := range v.Remark { | 1734 | for ii := range v.Remark { |
| 1723 | for _, vvv := range item.Remark { | 1735 | for _, vvv := range item.Remark { |
| 1724 | if v.Remark[ii].Title == vvv.Title { | 1736 | if v.Remark[ii].Title == vvv.Title { |
| @@ -1727,7 +1739,6 @@ func (srv StaffAssessServeice) SaveAssessInfo(param *command.SaveAssessInfoComma | @@ -1727,7 +1739,6 @@ func (srv StaffAssessServeice) SaveAssessInfo(param *command.SaveAssessInfoComma | ||
| 1727 | } | 1739 | } |
| 1728 | } | 1740 | } |
| 1729 | } | 1741 | } |
| 1730 | - | ||
| 1731 | } | 1742 | } |
| 1732 | //保存信息 | 1743 | //保存信息 |
| 1733 | for i := range assessContentList { | 1744 | for i := range assessContentList { |
| @@ -1862,7 +1873,8 @@ loop: | @@ -1862,7 +1873,8 @@ loop: | ||
| 1862 | var chargeUserList []*domain.User | 1873 | var chargeUserList []*domain.User |
| 1863 | if len(chargeUserIds) > 0 { | 1874 | if len(chargeUserIds) > 0 { |
| 1864 | _, chargeUserList, err = userRepo.Find(map[string]interface{}{ | 1875 | _, chargeUserList, err = userRepo.Find(map[string]interface{}{ |
| 1865 | - "ids": chargeUserIds, | 1876 | + "ids": chargeUserIds, |
| 1877 | + "status": 1, //正常的用户 | ||
| 1866 | }) | 1878 | }) |
| 1867 | if err != nil { | 1879 | if err != nil { |
| 1868 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取主管员工数据"+err.Error()) | 1880 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取主管员工数据"+err.Error()) |
| 1 | package service | 1 | package service |
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | + "time" | ||
| 5 | + | ||
| 4 | "github.com/linmadan/egglib-go/core/application" | 6 | "github.com/linmadan/egglib-go/core/application" |
| 5 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory" | 7 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory" |
| 6 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/staff_assess/adapter" | 8 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/staff_assess/adapter" |
| 7 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/staff_assess/command" | 9 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/staff_assess/command" |
| 10 | + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain" | ||
| 8 | ) | 11 | ) |
| 9 | 12 | ||
| 10 | //调试用,手动调用CreateStaffAssessTask | 13 | //调试用,手动调用CreateStaffAssessTask |
| @@ -31,14 +34,77 @@ func (srv StaffAssessServeice) InvokCreateStaffAssessTask(param *command.CreateS | @@ -31,14 +34,77 @@ func (srv StaffAssessServeice) InvokCreateStaffAssessTask(param *command.CreateS | ||
| 31 | } | 34 | } |
| 32 | 35 | ||
| 33 | //保存员工绩效评估填写过程中即写即存的内容 | 36 | //保存员工绩效评估填写过程中即写即存的内容 |
| 34 | -func (srv StaffAssessServeice) SaveAssessContentTemp(param *command.SaveAssessInfoCommand) error { | 37 | +func (srv StaffAssessServeice) SaveAssessContentTemp(param *command.SaveAssessInfoCommand) (map[string]interface{}, error) { |
| 35 | 38 | ||
| 36 | - return nil | 39 | + transactionContext, err := factory.CreateTransactionContext(nil) |
| 40 | + if err != nil { | ||
| 41 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 42 | + } | ||
| 43 | + if err := transactionContext.StartTransaction(); err != nil { | ||
| 44 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 45 | + } | ||
| 46 | + defer func() { | ||
| 47 | + _ = transactionContext.RollbackTransaction() | ||
| 48 | + }() | ||
| 49 | + //获取旧的临时数据内容 | ||
| 50 | + contentTempRepo := factory.CreateStaffAssessContentTempRepository(map[string]interface{}{ | ||
| 51 | + "transactionContext": transactionContext, | ||
| 52 | + }) | ||
| 53 | + //获取评估填写的内容 | ||
| 54 | + // assessContentRepo := factory.CreateStaffAssessContentRepository(map[string]interface{}{ | ||
| 55 | + // "transactionContext": transactionContext, | ||
| 56 | + // }) | ||
| 57 | + assessRepo := factory.CreateStaffAssessRepository(map[string]interface{}{ | ||
| 58 | + "transactionContext": transactionContext, | ||
| 59 | + }) | ||
| 60 | + assessData, err := assessRepo.FindOne(map[string]interface{}{ | ||
| 61 | + "id": param.AssessId, | ||
| 62 | + }) | ||
| 63 | + if err != nil { | ||
| 64 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取评估任务"+err.Error()) | ||
| 65 | + } | ||
| 66 | + | ||
| 67 | + // staffAssessId | ||
| 68 | + _, contentTempList, err := contentTempRepo.Find(map[string]interface{}{ | ||
| 69 | + "staffAssessId": param.AssessId, | ||
| 70 | + }) | ||
| 71 | + if err != nil { | ||
| 72 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取临时保存的内容"+err.Error()) | ||
| 73 | + } | ||
| 74 | + nowTime := time.Now() | ||
| 75 | + if len(contentTempList) == 0 { | ||
| 76 | + //获取评估模板 | ||
| 77 | + assessContentList, err := srv.getAssessSelfInfoUncompleted(transactionContext, assessData) | ||
| 78 | + if err != nil { | ||
| 79 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取评估模板,"+err.Error()) | ||
| 80 | + } | ||
| 81 | + //转填入临时的数据 | ||
| 82 | + for _, v := range assessContentList { | ||
| 83 | + item := &domain.StaffAssessContentTemp{ | ||
| 84 | + Id: 0, | ||
| 85 | + StaffAssessId: v.StaffAssessId, | ||
| 86 | + SortBy: v.SortBy, | ||
| 87 | + Category: v.Category, | ||
| 88 | + Name: v.Name, | ||
| 89 | + Remark: v.Remark, | ||
| 90 | + Value: "", | ||
| 91 | + CreatedAt: nowTime, | ||
| 92 | + UpdatedAt: nowTime, | ||
| 93 | + } | ||
| 94 | + contentTempList = append(contentTempList, item) | ||
| 95 | + } | ||
| 96 | + } | ||
| 97 | + //更新assessContentTemp | ||
| 98 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
| 99 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 100 | + } | ||
| 101 | + return nil, nil | ||
| 37 | } | 102 | } |
| 38 | 103 | ||
| 39 | //获取员工绩效评估填写内容 | 104 | //获取员工绩效评估填写内容 |
| 40 | //临时数据存在时就获取临时数据 | 105 | //临时数据存在时就获取临时数据 |
| 41 | //不存在就获取实际保存的数据 | 106 | //不存在就获取实际保存的数据 |
| 42 | func (srv StaffAssessServeice) GetAssessContentTemp(param *command.SaveAssessInfoCommand) (*adapter.AssessInfoResp, error) { | 107 | func (srv StaffAssessServeice) GetAssessContentTemp(param *command.SaveAssessInfoCommand) (*adapter.AssessInfoResp, error) { |
| 108 | + //将临时保存的数据填入模板中 | ||
| 43 | return nil, nil | 109 | return nil, nil |
| 44 | } | 110 | } |
| 1 | +package service | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "github.com/linmadan/egglib-go/core/application" | ||
| 5 | + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory" | ||
| 6 | + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/staff_assess/query" | ||
| 7 | + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/infrastructure/dao" | ||
| 8 | +) | ||
| 9 | + | ||
| 10 | +//员工绩效-项目管理 | ||
| 11 | + | ||
| 12 | +//获取已被执行的周期列表 | ||
| 13 | +func (srv StaffAssessServeice) ListAllAssessCycle(companyid int) (map[string]interface{}, error) { | ||
| 14 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
| 15 | + if err != nil { | ||
| 16 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 17 | + } | ||
| 18 | + if err := transactionContext.StartTransaction(); err != nil { | ||
| 19 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 20 | + } | ||
| 21 | + defer func() { | ||
| 22 | + _ = transactionContext.RollbackTransaction() | ||
| 23 | + }() | ||
| 24 | + assessDao := dao.NewStaffAssessDao(map[string]interface{}{ | ||
| 25 | + "transactionContext": transactionContext, | ||
| 26 | + }) | ||
| 27 | + cycleList, err := assessDao.AllAssessCycleList(companyid) | ||
| 28 | + if err != nil { | ||
| 29 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取周期列表"+err.Error()) | ||
| 30 | + } | ||
| 31 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
| 32 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 33 | + } | ||
| 34 | + result := map[string]interface{}{ | ||
| 35 | + "list": cycleList, | ||
| 36 | + } | ||
| 37 | + return result, nil | ||
| 38 | + | ||
| 39 | +} | ||
| 40 | + | ||
| 41 | +//获取周期内的考核日期 | ||
| 42 | +func (srv StaffAssessServeice) ListAllAssessCycleDay(param *query.ListAssessCycleDay) (map[string]interface{}, error) { | ||
| 43 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
| 44 | + if err != nil { | ||
| 45 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 46 | + } | ||
| 47 | + if err := transactionContext.StartTransaction(); err != nil { | ||
| 48 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 49 | + } | ||
| 50 | + defer func() { | ||
| 51 | + _ = transactionContext.RollbackTransaction() | ||
| 52 | + }() | ||
| 53 | + assessDao := dao.NewStaffAssessDao(map[string]interface{}{ | ||
| 54 | + "transactionContext": transactionContext, | ||
| 55 | + }) | ||
| 56 | + cycleDayList, err := assessDao.AllAssessCycleDayList(param.CompanyId, param.CycleId) | ||
| 57 | + if err != nil { | ||
| 58 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取周期列表"+err.Error()) | ||
| 59 | + } | ||
| 60 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
| 61 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 62 | + } | ||
| 63 | + result := map[string]interface{}{ | ||
| 64 | + "list": cycleDayList, | ||
| 65 | + } | ||
| 66 | + return result, nil | ||
| 67 | +} | ||
| 68 | + | ||
| 69 | +//根据周期id和日期获取 员工填写评估内容 | ||
| 70 | +// 有过滤查看权限 | ||
| 71 | +func (srv StaffAssessServeice) ListAllAssessContentCycleDay(param *query.ListAssessContentCycleDay) (map[string]interface{}, error) { | ||
| 72 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
| 73 | + if err != nil { | ||
| 74 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 75 | + } | ||
| 76 | + if err := transactionContext.StartTransaction(); err != nil { | ||
| 77 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 78 | + } | ||
| 79 | + defer func() { | ||
| 80 | + _ = transactionContext.RollbackTransaction() | ||
| 81 | + }() | ||
| 82 | + // assessDao := dao.NewStaffAssessDao(map[string]interface{}{ | ||
| 83 | + // "transactionContext": transactionContext, | ||
| 84 | + // }) | ||
| 85 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
| 86 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 87 | + } | ||
| 88 | + return nil, nil | ||
| 89 | +} |
| @@ -5,6 +5,7 @@ import ( | @@ -5,6 +5,7 @@ import ( | ||
| 5 | "github.com/linmadan/egglib-go/utils/tool_funs" | 5 | "github.com/linmadan/egglib-go/utils/tool_funs" |
| 6 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory" | 6 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory" |
| 7 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/user/query" | 7 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/user/query" |
| 8 | + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain" | ||
| 8 | ) | 9 | ) |
| 9 | 10 | ||
| 10 | type UserService struct{} | 11 | type UserService struct{} |
| @@ -26,6 +27,7 @@ func (service *UserService) ListUsers(listUserQuery *query.ListUserQuery) (inter | @@ -26,6 +27,7 @@ func (service *UserService) ListUsers(listUserQuery *query.ListUserQuery) (inter | ||
| 26 | count, list, err := userRepo.Find(map[string]interface{}{ | 27 | count, list, err := userRepo.Find(map[string]interface{}{ |
| 27 | "companyId": listUserQuery.CompanyId, | 28 | "companyId": listUserQuery.CompanyId, |
| 28 | "name": listUserQuery.Name, | 29 | "name": listUserQuery.Name, |
| 30 | + "status": domain.UserStatusEnable, | ||
| 29 | }) | 31 | }) |
| 30 | if err != nil { | 32 | if err != nil { |
| 31 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 33 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| @@ -11,8 +11,15 @@ var AdminJwtExpiresIn = int64(3600 * 24 * 7) | @@ -11,8 +11,15 @@ var AdminJwtExpiresIn = int64(3600 * 24 * 7) | ||
| 11 | 11 | ||
| 12 | var AdminJWTSecretKey = "sg-storage" | 12 | var AdminJWTSecretKey = "sg-storage" |
| 13 | 13 | ||
| 14 | +// Env 判断当前环境变量 | ||
| 15 | +var Env = "dev" | ||
| 16 | + | ||
| 14 | func init() { | 17 | func init() { |
| 15 | if os.Getenv("LOG_LEVEL") != "" { | 18 | if os.Getenv("LOG_LEVEL") != "" { |
| 16 | LOG_LEVEL = os.Getenv("LOG_LEVEL") | 19 | LOG_LEVEL = os.Getenv("LOG_LEVEL") |
| 17 | } | 20 | } |
| 21 | + | ||
| 22 | + if os.Getenv("ENV_MOD") != "" { | ||
| 23 | + Env = os.Getenv("ENV_MOD") | ||
| 24 | + } | ||
| 18 | } | 25 | } |
| 1 | package domain | 1 | package domain |
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | - "errors" | ||
| 5 | - "fmt" | ||
| 6 | - "strconv" | ||
| 7 | "time" | 4 | "time" |
| 8 | ) | 5 | ) |
| 9 | 6 | ||
| @@ -58,54 +55,54 @@ type EvaluationRule struct { | @@ -58,54 +55,54 @@ type EvaluationRule struct { | ||
| 58 | DeletedAt *time.Time `json:"deletedAt" comment:"删除时间"` | 55 | DeletedAt *time.Time `json:"deletedAt" comment:"删除时间"` |
| 59 | } | 56 | } |
| 60 | 57 | ||
| 61 | -// 根据评估填写的值,得出等级名称 | ||
| 62 | -// 如果 评估方式是评分,对评估填写的值的小数点后的位数进行处理, | ||
| 63 | -// value 根据评估填写的值 | ||
| 64 | -func (rule *EvaluationRule) ScoreOrRating(value *string) (string, error) { | ||
| 65 | - switch rule.Type { | ||
| 66 | - case EvaluationTypeRating: | ||
| 67 | - return rule.RatingValue(value) | ||
| 68 | - case EvaluationTypeScore: | ||
| 69 | - return rule.ScoreValue(value) | ||
| 70 | - } | ||
| 71 | - return "", errors.New("rule.Type 错误") | ||
| 72 | -} | ||
| 73 | - | ||
| 74 | -//根据评估填写的值,得出等级名称, | ||
| 75 | -func (rule *EvaluationRule) ScoreValue(value *string) (string, error) { | ||
| 76 | - valueFloat, err := strconv.ParseFloat(*value, 64) | ||
| 77 | - if err != nil { | ||
| 78 | - return "", errors.New("评分填写的值错误") | ||
| 79 | - } | ||
| 80 | - if valueFloat < rule.Score.Min || valueFloat > rule.Score.Max { | ||
| 81 | - return "", fmt.Errorf("评分填写的值超出限制,>=%f且<=%f", rule.Score.Min, rule.Score.Max) | ||
| 82 | - } | ||
| 83 | - //保留小数处理 | ||
| 84 | - fStr := fmt.Sprintf("%%.%df", rule.Score.DecimalPlaces) | ||
| 85 | - valueStr := fmt.Sprintf(fStr, valueFloat) | ||
| 86 | - *value = valueStr | ||
| 87 | - if rule.Score.IntervalState == 0 { | ||
| 88 | - // 未开启按分数子区间匹配等级 | ||
| 89 | - return "", nil | ||
| 90 | - } | ||
| 91 | - valueDescrip := "" | ||
| 92 | - for _, v := range rule.Score.Levels { | ||
| 93 | - if valueFloat >= v.Start && valueFloat <= v.End { | ||
| 94 | - valueDescrip = v.Name | ||
| 95 | - } | ||
| 96 | - } | ||
| 97 | - return valueDescrip, nil | ||
| 98 | -} | ||
| 99 | - | ||
| 100 | -//根据评估填写的值,得出等级名称, | ||
| 101 | -func (rule *EvaluationRule) RatingValue(value *string) (string, error) { | ||
| 102 | - for _, v := range rule.Rating.Levels { | ||
| 103 | - if v.Code == *value { | ||
| 104 | - return v.Name, nil | ||
| 105 | - } | ||
| 106 | - } | ||
| 107 | - return "", errors.New("评估填写的值错误") | ||
| 108 | -} | 58 | +// // 根据评估填写的值,得出等级名称和填写的值量化值 |
| 59 | +// // 如果 评估方式是评分,对评估填写的值的小数点后的位数进行处理, | ||
| 60 | +// // value 根据评估填写的值 | ||
| 61 | +// func (rule *EvaluationRule) ScoreOrRating(value *string) (string, error) { | ||
| 62 | +// switch rule.Type { | ||
| 63 | +// case EvaluationTypeRating: | ||
| 64 | +// return rule.RatingValue(value) | ||
| 65 | +// case EvaluationTypeScore: | ||
| 66 | +// return rule.ScoreValue(value) | ||
| 67 | +// } | ||
| 68 | +// return "", errors.New("rule.Type 错误") | ||
| 69 | +// } | ||
| 70 | + | ||
| 71 | +// //根据评估填写的值,得出等级名称和填写的值量化值 | ||
| 72 | +// func (rule *EvaluationRule) ScoreValue(value *string) (string, error) { | ||
| 73 | +// valueFloat, err := strconv.ParseFloat(*value, 64) | ||
| 74 | +// if err != nil { | ||
| 75 | +// return "", errors.New("评分填写的值错误") | ||
| 76 | +// } | ||
| 77 | +// if valueFloat < rule.Score.Min || valueFloat > rule.Score.Max { | ||
| 78 | +// return "", fmt.Errorf("评分填写的值超出限制,>=%f且<=%f", rule.Score.Min, rule.Score.Max) | ||
| 79 | +// } | ||
| 80 | +// //保留小数处理 | ||
| 81 | +// fStr := fmt.Sprintf("%%.%df", rule.Score.DecimalPlaces) | ||
| 82 | +// valueStr := fmt.Sprintf(fStr, valueFloat) | ||
| 83 | +// *value = valueStr | ||
| 84 | +// if rule.Score.IntervalState == 0 { | ||
| 85 | +// // 未开启按分数子区间匹配等级 | ||
| 86 | +// return "", nil | ||
| 87 | +// } | ||
| 88 | +// valueDescrip := "" | ||
| 89 | +// for _, v := range rule.Score.Levels { | ||
| 90 | +// if valueFloat >= v.Start && valueFloat <= v.End { | ||
| 91 | +// valueDescrip = v.Name | ||
| 92 | +// } | ||
| 93 | +// } | ||
| 94 | +// return valueDescrip, nil | ||
| 95 | +// } | ||
| 96 | + | ||
| 97 | +// //根据评估填写的值,得出等级名称, | ||
| 98 | +// func (rule *EvaluationRule) RatingValue(value *string) (string, error) { | ||
| 99 | +// for _, v := range rule.Rating.Levels { | ||
| 100 | +// if v.Code == *value { | ||
| 101 | +// return v.Name, nil | ||
| 102 | +// } | ||
| 103 | +// } | ||
| 104 | +// return "", errors.New("评估填写的值错误") | ||
| 105 | +// } | ||
| 109 | 106 | ||
| 110 | // GenerateSysRule 当前公司下的生成默认规则 | 107 | // GenerateSysRule 当前公司下的生成默认规则 |
| 111 | func GenerateSysRule(companyId int64) *EvaluationRule { | 108 | func GenerateSysRule(companyId int64) *EvaluationRule { |
| 1 | package domain | 1 | package domain |
| 2 | 2 | ||
| 3 | -import "time" | 3 | +import ( |
| 4 | + "errors" | ||
| 5 | + "fmt" | ||
| 6 | + "strconv" | ||
| 7 | + "time" | ||
| 8 | +) | ||
| 4 | 9 | ||
| 5 | //填写的评估内容 | 10 | //填写的评估内容 |
| 6 | type StaffAssessContent struct { | 11 | type StaffAssessContent struct { |
| @@ -13,6 +18,8 @@ type StaffAssessContent struct { | @@ -13,6 +18,8 @@ type StaffAssessContent struct { | ||
| 13 | PromptText string `json:"promptText"` //提示项正文 | 18 | PromptText string `json:"promptText"` //提示项正文 |
| 14 | Remark []AssessContemtRemark `json:"remark"` //填写的反馈 | 19 | Remark []AssessContemtRemark `json:"remark"` //填写的反馈 |
| 15 | Value string `json:"value"` //评估填写的值 | 20 | Value string `json:"value"` //评估填写的值 |
| 21 | + ScoreValue float64 `json:"scoreValue"` // 填写值按规则Rule转换为相应的量化值 | ||
| 22 | + LevelValue string `json:"levelValue"` // 填写值按规则Rule转换为相应的等级值 | ||
| 16 | ReteResult string `json:"reteResult"` //评估的结果 | 23 | ReteResult string `json:"reteResult"` //评估的结果 |
| 17 | Rule EvaluationRule `json:"rule"` //评估的选项规则 | 24 | Rule EvaluationRule `json:"rule"` //评估的选项规则 |
| 18 | Weight int `json:"weight" ` //"权重" | 25 | Weight int `json:"weight" ` //"权重" |
| @@ -28,6 +35,63 @@ type AssessContemtRemark struct { | @@ -28,6 +35,63 @@ type AssessContemtRemark struct { | ||
| 28 | RemarkText string `json:"remarkText"` // comment:"填写文本内容" | 35 | RemarkText string `json:"remarkText"` // comment:"填写文本内容" |
| 29 | } | 36 | } |
| 30 | 37 | ||
| 38 | +//TransformValue | ||
| 39 | +//根据规则 rule 转换评填写的值 | ||
| 40 | +func (content *StaffAssessContent) TransformValue() error { | ||
| 41 | + switch content.Rule.Type { | ||
| 42 | + case EvaluationTypeRating: | ||
| 43 | + return content.ratingValue() | ||
| 44 | + case EvaluationTypeScore: | ||
| 45 | + return content.scoreValue() | ||
| 46 | + } | ||
| 47 | + return nil | ||
| 48 | +} | ||
| 49 | + | ||
| 50 | +// 规则是评级方式 | ||
| 51 | +func (content *StaffAssessContent) ratingValue() error { | ||
| 52 | + levels := content.Rule.Rating.Levels | ||
| 53 | + for _, v := range levels { | ||
| 54 | + if v.Code != content.Value { | ||
| 55 | + continue | ||
| 56 | + } | ||
| 57 | + content.LevelValue = v.Code | ||
| 58 | + content.ScoreValue = v.QuantizedValue | ||
| 59 | + content.ReteResult = v.Name | ||
| 60 | + return nil | ||
| 61 | + } | ||
| 62 | + return errors.New("评级填写的值错误") | ||
| 63 | +} | ||
| 64 | + | ||
| 65 | +// 规则是评分方式 | ||
| 66 | +func (content *StaffAssessContent) scoreValue() error { | ||
| 67 | + valueFloat, err := strconv.ParseFloat(content.Value, 64) | ||
| 68 | + if err != nil { | ||
| 69 | + return errors.New("评分填写的值错误") | ||
| 70 | + } | ||
| 71 | + rule := &content.Rule | ||
| 72 | + if valueFloat < rule.Score.Min || valueFloat > rule.Score.Max { | ||
| 73 | + return fmt.Errorf("评分填写的值超出限制,>=%f且<=%f", rule.Score.Min, rule.Score.Max) | ||
| 74 | + } | ||
| 75 | + //保留小数处理 | ||
| 76 | + fStr := fmt.Sprintf("%%.%df", rule.Score.DecimalPlaces) | ||
| 77 | + valueStr := fmt.Sprintf(fStr, valueFloat) | ||
| 78 | + content.Value = valueStr | ||
| 79 | + if rule.Score.IntervalState == 0 { | ||
| 80 | + // 未开启按分数子区间匹配等级 | ||
| 81 | + return nil | ||
| 82 | + } | ||
| 83 | + for _, v := range rule.Score.Levels { | ||
| 84 | + if valueFloat < v.Start || valueFloat > v.End { | ||
| 85 | + continue | ||
| 86 | + } | ||
| 87 | + content.LevelValue = v.Code | ||
| 88 | + content.ScoreValue = valueFloat | ||
| 89 | + content.ReteResult = v.Name | ||
| 90 | + return nil | ||
| 91 | + } | ||
| 92 | + return errors.New("评分填写的值错误") | ||
| 93 | +} | ||
| 94 | + | ||
| 31 | type StaffAssessContentRepository interface { | 95 | type StaffAssessContentRepository interface { |
| 32 | Save(param *StaffAssessContent) (*StaffAssessContent, error) | 96 | Save(param *StaffAssessContent) (*StaffAssessContent, error) |
| 33 | Remove(id int) error | 97 | Remove(id int) error |
| @@ -13,7 +13,6 @@ type StaffAssessContentTemp struct { | @@ -13,7 +13,6 @@ type StaffAssessContentTemp struct { | ||
| 13 | Value string `json:"value"` //评估填写的值 | 13 | Value string `json:"value"` //评估填写的值 |
| 14 | CreatedAt time.Time `json:"createdAt"` //数据创建时间 | 14 | CreatedAt time.Time `json:"createdAt"` //数据创建时间 |
| 15 | UpdatedAt time.Time `json:"updatedAt"` //数据更新时间 | 15 | UpdatedAt time.Time `json:"updatedAt"` //数据更新时间 |
| 16 | - DeletedAt *time.Time `json:"deletedAt"` | ||
| 17 | } | 16 | } |
| 18 | 17 | ||
| 19 | type StaffAssessContentTempRepository interface { | 18 | type StaffAssessContentTempRepository interface { |
| @@ -24,7 +24,7 @@ const ( | @@ -24,7 +24,7 @@ const ( | ||
| 24 | UserTypeCommon int = 1 | 24 | UserTypeCommon int = 1 |
| 25 | UserTypeManager int = 2 | 25 | UserTypeManager int = 2 |
| 26 | 26 | ||
| 27 | - UserStatusEnable int = 1 | 27 | + UserStatusEnable int = 1 // 正常用户 2禁用用户 |
| 28 | ) | 28 | ) |
| 29 | 29 | ||
| 30 | type UserRepository interface { | 30 | type UserRepository interface { |
| 1 | package dao | 1 | package dao |
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | + "fmt" | ||
| 4 | "strconv" | 5 | "strconv" |
| 5 | 6 | ||
| 6 | "github.com/go-pg/pg/v10" | 7 | "github.com/go-pg/pg/v10" |
| @@ -99,5 +100,226 @@ func (d *StaffAssessDao) CountAssessTaskMe(executorId int, companyId int) (int, | @@ -99,5 +100,226 @@ func (d *StaffAssessDao) CountAssessTaskMe(executorId int, companyId int) (int, | ||
| 99 | result := 0 | 100 | result := 0 |
| 100 | _, err := tx.QueryOne(pg.Scan(&result), sqlStr, condition...) | 101 | _, err := tx.QueryOne(pg.Scan(&result), sqlStr, condition...) |
| 101 | return result, err | 102 | return result, err |
| 103 | +} | ||
| 104 | + | ||
| 105 | +//获取所以已经执行的评估周期 | ||
| 106 | +type AssessCycle struct { | ||
| 107 | + CycleId string `json:"cycleId"` //周期id | ||
| 108 | + CompanyId string `json:"companyId"` | ||
| 109 | + CycleName string `json:"cycleName"` //周期名称 | ||
| 110 | +} | ||
| 111 | + | ||
| 112 | +//获取所以已经执行的评估周期 | ||
| 113 | +func (d *StaffAssessDao) AllAssessCycleList(companyId int) ([]AssessCycle, error) { | ||
| 114 | + sqlStr := `select | ||
| 115 | + distinct | ||
| 116 | + staff_assess_task.cycle_id , | ||
| 117 | + staff_assess_task.company_id , | ||
| 118 | + staff_assess_task.cycle_name | ||
| 119 | + from staff_assess_task | ||
| 120 | + where staff_assess_task.company_id = ?` | ||
| 121 | + | ||
| 122 | + tx := d.transactionContext.PgTx | ||
| 123 | + condition := []interface{}{ | ||
| 124 | + companyId, | ||
| 125 | + } | ||
| 126 | + result := []AssessCycle{} | ||
| 127 | + _, err := tx.QueryOne(&result, sqlStr, condition...) | ||
| 128 | + return result, err | ||
| 129 | +} | ||
| 130 | + | ||
| 131 | +//获取评估周期中的绩效考核日期 | ||
| 132 | +type AssessCycleDay struct { | ||
| 133 | + BeginDay string `json:"beginDay"` | ||
| 134 | + CycleId string `json:"cycleId"` | ||
| 135 | + CompanyId string `json:"companyId"` | ||
| 136 | +} | ||
| 137 | + | ||
| 138 | +//获取评估周期中的绩效考核日期 | ||
| 139 | +func (d *StaffAssessDao) AllAssessCycleDayList(companyId int, cycleId int) ([]AssessCycleDay, error) { | ||
| 140 | + sqlStr := `select distinct staff_assess_task.begin_day , | ||
| 141 | + staff_assess_task.cycle_id , | ||
| 142 | + staff_assess_task.company_id | ||
| 143 | + from staff_assess_task | ||
| 144 | + where staff_assess_task.cycle_id = ? | ||
| 145 | + and company_id =? ` | ||
| 146 | + | ||
| 147 | + tx := d.transactionContext.PgTx | ||
| 148 | + condition := []interface{}{ | ||
| 149 | + cycleId, companyId, | ||
| 150 | + } | ||
| 151 | + result := []AssessCycleDay{} | ||
| 152 | + _, err := tx.QueryOne(&result, sqlStr, condition...) | ||
| 153 | + return result, err | ||
| 154 | +} | ||
| 155 | + | ||
| 156 | +//获取员工填写评估内容 | ||
| 157 | +type UserAssessContent struct { | ||
| 158 | + TargetUserId string `json:"targetUserId"` //被评估人的id | ||
| 159 | + TargetUserName string `json:"targetUserName"` //被评估人的名称 | ||
| 160 | + BeginDay string `json:"beginDay"` //评估的日期 | ||
| 161 | + EvaluationProjectId string `json:"evaluationProjectId"` //项目id | ||
| 162 | + Value string `json:"value"` //评估填写的值 | ||
| 163 | + SortBy int `json:"sortBy"` //评估项顺序 | ||
| 164 | + Category string `json:"category"` //评估项分类 | ||
| 165 | + ContentName string `json:"contentName"` //评估项名称 | ||
| 166 | + Weight int `json:"weight"` //权重 | ||
| 167 | +} | ||
| 168 | + | ||
| 169 | +type SearchConditin1 struct { | ||
| 170 | + CompanyId int //公司id | ||
| 171 | + CycleId int //周期id | ||
| 172 | + BeginDay string //评估的日期 | ||
| 173 | + TargetUserName string //被评估人的名称 | ||
| 174 | + Limit int //分页 | ||
| 175 | + Offset int //分页 | ||
| 176 | + OperaterId int //用户的id是谁在搜索数据 | ||
| 177 | + Hrbp int // | ||
| 178 | +} | ||
| 179 | + | ||
| 180 | +//根据周期的id和日期获取员工填写的评估内容 | ||
| 181 | +//companyId int 公司id | ||
| 182 | +//cycleId int, 评估周期id | ||
| 183 | +//userId int, 用户id,谁要查看数据 | ||
| 184 | +//beginDay string, 周期中执行项目的时间 | ||
| 185 | +//hrbp 是否搜索HRBP角色的用户可以查看,1:是;-1:否 | ||
| 186 | +//limit int, 分页条数 | ||
| 187 | +//offset int 分页偏移 | ||
| 188 | +func (d *StaffAssessDao) SearchUserAssessContent(param SearchConditin1) ([]UserAssessContent, error) { | ||
| 189 | + sqlStr := ` select | ||
| 190 | + t_staff_assess_1.target_user_id,t_staff_assess_1.target_user_name,t_staff_assess_1.begin_day, | ||
| 191 | + staff_assess_content.value ,staff_assess_content.sort_by , | ||
| 192 | + staff_assess_content.category ,staff_assess_content."name" as content_name , | ||
| 193 | + staff_assess_content.weight | ||
| 194 | + from t_staff_assess_1 | ||
| 195 | + left join staff_assess_content on t_staff_assess_1.assess_id = staff_assess_content.staff_assess_id | ||
| 196 | + ` | ||
| 197 | + condition := []interface{}{} | ||
| 198 | + if len(param.TargetUserName) > 0 { | ||
| 199 | + sqlStr += ` where t_staff_assess_1.target_user_name like ? ` | ||
| 200 | + condition = append(condition, param.TargetUserName) | ||
| 201 | + } | ||
| 202 | + //加入排序 | ||
| 203 | + sqlStr += ` order by convert_to(t_staff_assess_1.target_user_name,'GBK'),staff_assess_content.sort_by ` | ||
| 204 | + //获取前置sql语句 | ||
| 205 | + sqlStr0 := d.useTStaffAssess(param.CompanyId, param.CycleId, param.OperaterId, param.BeginDay, param.Hrbp, param.Limit, param.Offset) | ||
| 206 | + sqlStr = sqlStr0 + sqlStr | ||
| 207 | + tx := d.transactionContext.PgTx | ||
| 208 | + var result []UserAssessContent | ||
| 209 | + _, err := tx.QueryOne(&result, sqlStr, condition...) | ||
| 210 | + return result, err | ||
| 211 | +} | ||
| 212 | + | ||
| 213 | +//根据周期的id和日期获取员工填写的评估内容,数量统计 | ||
| 214 | +//companyId int 公司id | ||
| 215 | +//cycleId int, 评估周期id | ||
| 216 | +//userId int, 用户id,谁要查看数据 | ||
| 217 | +//beginDay string, 周期中执行项目的时间 | ||
| 218 | +//hrbp 是否搜索HRBP角色的用户可以查看,1:是;-1:否 | ||
| 219 | +//limit int, 分页条数 | ||
| 220 | +//offset int 分页偏移 | ||
| 221 | +func (d *StaffAssessDao) CountUserAssess(param SearchConditin1) ([]UserAssessContent, error) { | ||
| 222 | + sqlStr := ` select | ||
| 223 | + t_staff_assess_1.target_user_id,t_staff_assess_1.target_user_name,t_staff_assess_1.begin_day, | ||
| 224 | + staff_assess_content.value ,staff_assess_content.sort_by , | ||
| 225 | + staff_assess_content.category ,staff_assess_content."name" as content_name , | ||
| 226 | + staff_assess_content.weight | ||
| 227 | + from t_staff_assess_1 | ||
| 228 | + left join staff_assess_content on t_staff_assess_1.assess_id = staff_assess_content.staff_assess_id | ||
| 229 | + ` | ||
| 230 | + condition := []interface{}{} | ||
| 231 | + if len(param.TargetUserName) > 0 { | ||
| 232 | + sqlStr += ` where t_staff_assess_1.target_user_name like ? ` | ||
| 233 | + condition = append(condition, param.TargetUserName) | ||
| 234 | + } | ||
| 235 | + //加入排序 | ||
| 236 | + sqlStr += ` order by convert_to(t_staff_assess_1.target_user_name,'GBK'),staff_assess_content.sort_by ` | ||
| 237 | + //获取前置sql语句 | ||
| 238 | + sqlStr0 := d.useTStaffAssess(param.CompanyId, param.CycleId, param.OperaterId, param.BeginDay, param.Hrbp, param.Limit, param.Offset) | ||
| 239 | + sqlStr = sqlStr0 + sqlStr | ||
| 240 | + tx := d.transactionContext.PgTx | ||
| 241 | + var result []UserAssessContent | ||
| 242 | + _, err := tx.QueryOne(&result, sqlStr, condition...) | ||
| 243 | + return result, err | ||
| 244 | +} | ||
| 245 | + | ||
| 246 | +//生成的sql 根据用户的查看权限 ,获取可查看的评估任务, | ||
| 247 | +//companyId int 公司id | ||
| 248 | +//cycleId int, 评估周期id | ||
| 249 | +//userId int, 用户id,谁要查看数据 | ||
| 250 | +//beginDay string, 周期中执行项目的时间 | ||
| 251 | +//hrbp 是否搜索HRBP角色的用户可以查看,1:是;-1:否 | ||
| 252 | +//limit int, 分页条数 | ||
| 253 | +//offset int 分页偏移 | ||
| 254 | +func (d *StaffAssessDao) useTStaffAssess(companyId int, cycleId int, userId int, beginDay string, hrbp int, limit int, offset int) string { | ||
| 255 | + sqlstr := ` | ||
| 256 | + with t_user_department as ( | ||
| 257 | + select "user".id as user_id ,jsonb_array_elements_text ("user".department_id) as depart_id from "user" | ||
| 258 | + where "user".company_id= %d | ||
| 259 | + ), | ||
| 260 | + t_department as ( | ||
| 261 | + select department.id::text as depart_id from department where charge_user_ids @>'[%d]' | ||
| 262 | + ), | ||
| 263 | + -- 如果是部门管理员 获取用户列表 | ||
| 264 | + t_user_1 as ( | ||
| 265 | + select t_user_department.user_id::text from t_user_department | ||
| 266 | + join t_department on t_user_department.depart_id = t_department.depart_id | ||
| 267 | + ), | ||
| 268 | + -- 如果是hrbp | ||
| 269 | + t_project_1 as( | ||
| 270 | + select evaluation_project.id as project_id | ||
| 271 | + from evaluation_project | ||
| 272 | + where evaluation_project.cycle_id =%d | ||
| 273 | + and evaluation_project.hr_bp = %d | ||
| 274 | + ), | ||
| 275 | + -- 如果是项目管理员 | ||
| 276 | + t_project_2 as( | ||
| 277 | + select evaluation_project.id as project_id | ||
| 278 | + from evaluation_project | ||
| 279 | + where evaluation_project.cycle_id =%d | ||
| 280 | + and evaluation_project.pmp =1 | ||
| 281 | + and evaluation_project.pmp_ids @>'["%d"]' | ||
| 282 | + ), | ||
| 283 | + -- 合并数据 | ||
| 284 | + t_project_3 as ( | ||
| 285 | + select t_project_2.project_id from t_project_2 | ||
| 286 | + union | ||
| 287 | + select t_project_1.project_id from t_project_1 | ||
| 288 | + ), | ||
| 289 | + -- 初步过滤评估列表数据 | ||
| 290 | + t_staff_assess_0 as ( | ||
| 291 | + select staff_assess.id as assess_id, | ||
| 292 | + staff_assess.target_user->>'userId' as target_user_id, | ||
| 293 | + staff_assess.target_user->>'userName' as target_user_name, | ||
| 294 | + to_char(staff_assess.begin_time,'YYYY-MM-DD') as begin_day, | ||
| 295 | + staff_assess.evaluation_project_id | ||
| 296 | + from staff_assess | ||
| 297 | + where staff_assess.cycle_id = %d | ||
| 298 | + and to_char(staff_assess.begin_time,'YYYY-MM-DD')='%s' | ||
| 299 | + and staff_assess."types" ='self' | ||
| 300 | + ), | ||
| 301 | + -- 合并根据权限过滤后的数据 | ||
| 302 | + t_staff_assess_1 as ( | ||
| 303 | + (select t_staff_assess_0.assess_id, | ||
| 304 | + t_staff_assess_0.target_user_id, | ||
| 305 | + t_staff_assess_0.target_user_name, | ||
| 306 | + t_staff_assess_0.begin_day | ||
| 307 | + from t_staff_assess_0 | ||
| 308 | + join t_project_3 on t_staff_assess_0.evaluation_project_id = t_project_3.project_id | ||
| 309 | + ) union (select t_staff_assess_0.assess_id, | ||
| 310 | + t_staff_assess_0.target_user_id, | ||
| 311 | + t_staff_assess_0.target_user_name, | ||
| 312 | + t_staff_assess_0.begin_day | ||
| 313 | + from t_staff_assess_0 | ||
| 314 | + join t_user_1 on t_staff_assess_0.target_user_id=t_user_1.user_id | ||
| 315 | + ) | ||
| 316 | + limit %d offset %d | ||
| 317 | + ) | ||
| 318 | + ` | ||
| 319 | + params := []interface{}{ | ||
| 320 | + companyId, userId, cycleId, hrbp, cycleId, userId, cycleId, beginDay, limit, offset, | ||
| 321 | + } | ||
| 102 | 322 | ||
| 323 | + sqlstr = fmt.Sprintf(sqlstr, params...) | ||
| 324 | + return sqlstr | ||
| 103 | } | 325 | } |
| @@ -14,8 +14,8 @@ type EvaluationProject struct { | @@ -14,8 +14,8 @@ type EvaluationProject struct { | ||
| 14 | CycleId int64 `comment:"周期ID"` | 14 | CycleId int64 `comment:"周期ID"` |
| 15 | CreatorId int64 `comment:"创建人ID"` | 15 | CreatorId int64 `comment:"创建人ID"` |
| 16 | State int `comment:"状态(0待完成配置、1待启用、2启用、3停用)" pg:",use_zero"` | 16 | State int `comment:"状态(0待完成配置、1待启用、2启用、3停用)" pg:",use_zero"` |
| 17 | - HrBp int `comment:"HR角色权限"` | ||
| 18 | - Pmp int `comment:"PM角色权限"` | 17 | + HrBp int `comment:"HR角色权限" pg:",use_zero"` |
| 18 | + Pmp int `comment:"PM角色权限" pg:",use_zero"` | ||
| 19 | PmpIds []string `comment:"项目管理员ID"` | 19 | PmpIds []string `comment:"项目管理员ID"` |
| 20 | Recipients []string `comment:"被评估人ID"` | 20 | Recipients []string `comment:"被评估人ID"` |
| 21 | Template *domain.EvaluationTemplate `comment:"评估模板"` | 21 | Template *domain.EvaluationTemplate `comment:"评估模板"` |
| @@ -8,24 +8,24 @@ import ( | @@ -8,24 +8,24 @@ import ( | ||
| 8 | 8 | ||
| 9 | // 记录用户需要的评估项 | 9 | // 记录用户需要的评估项 |
| 10 | type StaffAssess struct { | 10 | type StaffAssess struct { |
| 11 | - tableName struct{} `pg:"staff_assess" comment:"记录用户需要的评估项"` | ||
| 12 | - Id int `pg:",pk"` //id | ||
| 13 | - CompanyId int `comment:"公司id"` //公司id | ||
| 14 | - EvaluationProjectId int `comment:"对应的项目id"` //对应的项目id | ||
| 15 | - EvaluationProjectName string | ||
| 16 | - CycleId int64 `comment:"对应的周期id"` //对应的周期id | ||
| 17 | - CycleName string | ||
| 18 | - StaffAssessTaskId int | 11 | + tableName struct{} `pg:"staff_assess" comment:"记录用户需要的评估项"` |
| 12 | + Id int `pg:",pk"` //id | ||
| 13 | + CompanyId int `comment:"公司id"` //公司id | ||
| 14 | + EvaluationProjectId int `comment:"对应的项目id"` //对应的项目id | ||
| 15 | + EvaluationProjectName string `comment:"对应的项目名称"` | ||
| 16 | + CycleId int64 `comment:"对应的周期id"` //对应的周期id | ||
| 17 | + CycleName string `comment:"对应的周期名称"` | ||
| 18 | + StaffAssessTaskId int `comment:"评估任务的id"` | ||
| 19 | TargetUser domain.StaffDesc `comment:"被评估的目标用户"` //被评估的目标用户 | 19 | TargetUser domain.StaffDesc `comment:"被评估的目标用户"` //被评估的目标用户 |
| 20 | TargetDepartment []domain.StaffDepartment `comment:"被评估的用户所在的部门"` //被评估的用户所在的部门 | 20 | TargetDepartment []domain.StaffDepartment `comment:"被评估的用户所在的部门"` //被评估的用户所在的部门 |
| 21 | Executor domain.StaffDesc `comment:"填写评估的用户"` //填写评估的用户 | 21 | Executor domain.StaffDesc `comment:"填写评估的用户"` //填写评估的用户 |
| 22 | Types string `comment:"填写评估对应的类型"` //填写评估对应的类型 | 22 | Types string `comment:"填写评估对应的类型"` //填写评估对应的类型 |
| 23 | LinkNodeId int `comment:"评估环节id"` | 23 | LinkNodeId int `comment:"评估环节id"` |
| 24 | - LinkNodeName string | ||
| 25 | - Status string `comment:"评估的填写状态"` //评估的填写状态 | ||
| 26 | - BeginTime time.Time `comment:"开始时间"` //开始时间 | ||
| 27 | - EndTime time.Time `comment:"截止时间"` //截止时间 | ||
| 28 | - CreatedAt time.Time `comment:"数据创建时间"` //数据创建时间 | ||
| 29 | - UpdatedAt time.Time `comment:"数据更新时间"` //数据更新时间 | ||
| 30 | - DeletedAt *time.Time `comment:"数据删除时间"` //数据删除时间 | 24 | + LinkNodeName string `comment:"评估环节名称"` |
| 25 | + Status string `comment:"评估的填写状态"` //评估的填写状态 | ||
| 26 | + BeginTime time.Time `comment:"开始时间"` //开始时间 | ||
| 27 | + EndTime time.Time `comment:"截止时间"` //截止时间 | ||
| 28 | + CreatedAt time.Time `comment:"数据创建时间"` //数据创建时间 | ||
| 29 | + UpdatedAt time.Time `comment:"数据更新时间"` //数据更新时间 | ||
| 30 | + DeletedAt *time.Time `comment:"数据删除时间"` //数据删除时间 | ||
| 31 | } | 31 | } |
| @@ -14,13 +14,15 @@ type StaffAssessContent struct { | @@ -14,13 +14,15 @@ type StaffAssessContent struct { | ||
| 14 | SortBy int //排序 | 14 | SortBy int //排序 |
| 15 | Category string //类别 | 15 | Category string //类别 |
| 16 | Name string //名称 | 16 | Name string //名称 |
| 17 | + ScoreValue float64 // 填写值按规则Rule转换为相应的量化值 | ||
| 18 | + LevelValue string // 填写值按规则Rule转换为相应的等级值 | ||
| 17 | PromptTitle string //问题标题 | 19 | PromptTitle string //问题标题 |
| 18 | PromptText string //提示项正文 | 20 | PromptText string //提示项正文 |
| 19 | Value string //评估填写的值 | 21 | Value string //评估填写的值 |
| 20 | ReteResult string //评估的结果 | 22 | ReteResult string //评估的结果 |
| 21 | Rule domain.EvaluationRule | 23 | Rule domain.EvaluationRule |
| 22 | Remark []domain.AssessContemtRemark | 24 | Remark []domain.AssessContemtRemark |
| 23 | - Weight int //权重 | 25 | + Weight int `pg:",use_zero"` //权重 |
| 24 | CreatedAt time.Time //数据创建时间 | 26 | CreatedAt time.Time //数据创建时间 |
| 25 | UpdatedAt time.Time //数据更新时间 | 27 | UpdatedAt time.Time //数据更新时间 |
| 26 | DeletedAt *time.Time | 28 | DeletedAt *time.Time |
| @@ -8,20 +8,14 @@ import ( | @@ -8,20 +8,14 @@ import ( | ||
| 8 | 8 | ||
| 9 | // 填写的评估内容 | 9 | // 填写的评估内容 |
| 10 | type StaffAssessContentTemp struct { | 10 | type StaffAssessContentTemp struct { |
| 11 | - tableName struct{} `pg:"staff_assess_content_temp" comment:"填写的评估项"` | ||
| 12 | - Id int `pg:",pk"` //id | ||
| 13 | - StaffAssessId int //用户需要的评估项id | ||
| 14 | - SortBy int //排序 | ||
| 15 | - Category string //类别 | ||
| 16 | - Name string //名称 | ||
| 17 | - PromptTitle string //问题标题 | ||
| 18 | - PromptText string //提示项正文 | ||
| 19 | - Value string //评估填写的值 | ||
| 20 | - ReteResult string //评估的结果 | ||
| 21 | - Rule domain.EvaluationRule | ||
| 22 | - Remark []domain.AssessContemtRemark | ||
| 23 | - Weight int //权重 | ||
| 24 | - CreatedAt time.Time //数据创建时间 | ||
| 25 | - UpdatedAt time.Time //数据更新时间 | ||
| 26 | - DeletedAt *time.Time | 11 | + tableName struct{} `pg:"staff_assess_content_temp" comment:"临时填写的评估项"` |
| 12 | + Id int `pg:",pk"` //id | ||
| 13 | + StaffAssessId int `json:"staffAssessId"` //用户需要的评估项id | ||
| 14 | + SortBy int `json:"sortBy"` //排序 | ||
| 15 | + Category string `json:"category"` //类别 | ||
| 16 | + Name string `json:"name"` //名称 | ||
| 17 | + Remark []domain.AssessContemtRemark `json:"remark"` //填写的反馈 | ||
| 18 | + Value string `json:"value"` //评估填写的值 | ||
| 19 | + CreatedAt time.Time `json:"createdAt"` //数据创建时间 | ||
| 20 | + UpdatedAt time.Time `json:"updatedAt"` //数据更新时间 | ||
| 27 | } | 21 | } |
| @@ -21,9 +21,6 @@ func NewNodeTaskRepository(transactionContext *pgTransaction.TransactionContext) | @@ -21,9 +21,6 @@ func NewNodeTaskRepository(transactionContext *pgTransaction.TransactionContext) | ||
| 21 | } | 21 | } |
| 22 | 22 | ||
| 23 | func (repo *NodeTaskRepository) TransformToDomain(m *models.NodeTask) domain.NodeTask { | 23 | func (repo *NodeTaskRepository) TransformToDomain(m *models.NodeTask) domain.NodeTask { |
| 24 | - timeStart := m.TimeStart.Local() | ||
| 25 | - timeEnd := m.TimeEnd.Local() | ||
| 26 | - nextSentAt := m.NextSentAt.Local() | ||
| 27 | return domain.NodeTask{ | 24 | return domain.NodeTask{ |
| 28 | Id: m.Id, | 25 | Id: m.Id, |
| 29 | CompanyId: m.CompanyId, | 26 | CompanyId: m.CompanyId, |
| @@ -34,10 +31,10 @@ func (repo *NodeTaskRepository) TransformToDomain(m *models.NodeTask) domain.Nod | @@ -34,10 +31,10 @@ func (repo *NodeTaskRepository) TransformToDomain(m *models.NodeTask) domain.Nod | ||
| 34 | NodeName: m.NodeName, | 31 | NodeName: m.NodeName, |
| 35 | NodeDescribe: m.NodeDescribe, | 32 | NodeDescribe: m.NodeDescribe, |
| 36 | NodeSort: m.NodeSort, | 33 | NodeSort: m.NodeSort, |
| 37 | - TimeStart: &timeStart, | ||
| 38 | - TimeEnd: &timeEnd, | 34 | + TimeStart: m.TimeStart, |
| 35 | + TimeEnd: m.TimeEnd, | ||
| 39 | KpiCycle: m.KpiCycle, | 36 | KpiCycle: m.KpiCycle, |
| 40 | - NextSentAt: &nextSentAt, | 37 | + NextSentAt: m.NextSentAt, |
| 41 | CreatedAt: m.CreatedAt.Local(), | 38 | CreatedAt: m.CreatedAt.Local(), |
| 42 | UpdatedAt: m.UpdatedAt.Local(), | 39 | UpdatedAt: m.UpdatedAt.Local(), |
| 43 | DeletedAt: m.DeletedAt, | 40 | DeletedAt: m.DeletedAt, |
| @@ -32,6 +32,8 @@ func (repo *StaffAssessContentRepository) TransformToDomain(d *models.StaffAsses | @@ -32,6 +32,8 @@ func (repo *StaffAssessContentRepository) TransformToDomain(d *models.StaffAsses | ||
| 32 | PromptText: d.PromptText, | 32 | PromptText: d.PromptText, |
| 33 | Remark: d.Remark, | 33 | Remark: d.Remark, |
| 34 | Value: d.Value, | 34 | Value: d.Value, |
| 35 | + ScoreValue: d.ScoreValue, | ||
| 36 | + LevelValue: d.LevelValue, | ||
| 35 | ReteResult: d.ReteResult, | 37 | ReteResult: d.ReteResult, |
| 36 | Rule: d.Rule, | 38 | Rule: d.Rule, |
| 37 | Weight: d.Weight, | 39 | Weight: d.Weight, |
| @@ -48,15 +50,17 @@ func (repo *StaffAssessContentRepository) Save(d *domain.StaffAssessContent) (*d | @@ -48,15 +50,17 @@ func (repo *StaffAssessContentRepository) Save(d *domain.StaffAssessContent) (*d | ||
| 48 | SortBy: d.SortBy, | 50 | SortBy: d.SortBy, |
| 49 | Category: d.Category, | 51 | Category: d.Category, |
| 50 | Name: d.Name, | 52 | Name: d.Name, |
| 53 | + ScoreValue: d.ScoreValue, | ||
| 54 | + LevelValue: d.LevelValue, | ||
| 51 | PromptTitle: d.PromptTitle, | 55 | PromptTitle: d.PromptTitle, |
| 52 | PromptText: d.PromptText, | 56 | PromptText: d.PromptText, |
| 53 | - Remark: d.Remark, | ||
| 54 | Value: d.Value, | 57 | Value: d.Value, |
| 55 | ReteResult: d.ReteResult, | 58 | ReteResult: d.ReteResult, |
| 56 | Rule: d.Rule, | 59 | Rule: d.Rule, |
| 60 | + Remark: d.Remark, | ||
| 61 | + Weight: d.Weight, | ||
| 57 | CreatedAt: d.CreatedAt, | 62 | CreatedAt: d.CreatedAt, |
| 58 | UpdatedAt: d.UpdatedAt, | 63 | UpdatedAt: d.UpdatedAt, |
| 59 | - Weight: d.Weight, | ||
| 60 | DeletedAt: nil, | 64 | DeletedAt: nil, |
| 61 | } | 65 | } |
| 62 | tx := repo.transactionContext.PgTx | 66 | tx := repo.transactionContext.PgTx |
| @@ -3,7 +3,6 @@ package repository | @@ -3,7 +3,6 @@ package repository | ||
| 3 | import ( | 3 | import ( |
| 4 | "errors" | 4 | "errors" |
| 5 | "fmt" | 5 | "fmt" |
| 6 | - "time" | ||
| 7 | 6 | ||
| 8 | "github.com/go-pg/pg/v10" | 7 | "github.com/go-pg/pg/v10" |
| 9 | pgTransaction "github.com/linmadan/egglib-go/transaction/pg" | 8 | pgTransaction "github.com/linmadan/egglib-go/transaction/pg" |
| @@ -15,49 +14,37 @@ type StaffAssessContentTempRepository struct { | @@ -15,49 +14,37 @@ type StaffAssessContentTempRepository struct { | ||
| 15 | transactionContext *pgTransaction.TransactionContext | 14 | transactionContext *pgTransaction.TransactionContext |
| 16 | } | 15 | } |
| 17 | 16 | ||
| 18 | -// var _ domain.StaffAssessContentRepository = (*StaffAssessContentTempRepository)(nil) | 17 | +var _ domain.StaffAssessContentTempRepository = (*StaffAssessContentTempRepository)(nil) |
| 19 | 18 | ||
| 20 | func NewStaffAssessContentTempRepository(transactionContext *pgTransaction.TransactionContext) *StaffAssessContentTempRepository { | 19 | func NewStaffAssessContentTempRepository(transactionContext *pgTransaction.TransactionContext) *StaffAssessContentTempRepository { |
| 21 | return &StaffAssessContentTempRepository{transactionContext: transactionContext} | 20 | return &StaffAssessContentTempRepository{transactionContext: transactionContext} |
| 22 | } | 21 | } |
| 23 | 22 | ||
| 24 | -func (repo *StaffAssessContentTempRepository) TransformToDomain(d *models.StaffAssessContent) *domain.StaffAssessContent { | ||
| 25 | - return &domain.StaffAssessContent{ | 23 | +func (repo *StaffAssessContentTempRepository) TransformToDomain(d *models.StaffAssessContentTemp) *domain.StaffAssessContentTemp { |
| 24 | + return &domain.StaffAssessContentTemp{ | ||
| 26 | Id: d.Id, | 25 | Id: d.Id, |
| 27 | StaffAssessId: d.StaffAssessId, | 26 | StaffAssessId: d.StaffAssessId, |
| 28 | SortBy: d.SortBy, | 27 | SortBy: d.SortBy, |
| 29 | Category: d.Category, | 28 | Category: d.Category, |
| 30 | Name: d.Name, | 29 | Name: d.Name, |
| 31 | - PromptTitle: d.PromptTitle, | ||
| 32 | - PromptText: d.PromptText, | ||
| 33 | Remark: d.Remark, | 30 | Remark: d.Remark, |
| 34 | Value: d.Value, | 31 | Value: d.Value, |
| 35 | - ReteResult: d.ReteResult, | ||
| 36 | - Rule: d.Rule, | ||
| 37 | - Weight: d.Weight, | ||
| 38 | CreatedAt: d.CreatedAt, | 32 | CreatedAt: d.CreatedAt, |
| 39 | UpdatedAt: d.UpdatedAt, | 33 | UpdatedAt: d.UpdatedAt, |
| 40 | - DeletedAt: nil, | ||
| 41 | } | 34 | } |
| 42 | } | 35 | } |
| 43 | 36 | ||
| 44 | -func (repo *StaffAssessContentTempRepository) Save(d *domain.StaffAssessContent) (*domain.StaffAssessContent, error) { | ||
| 45 | - saveModel := models.StaffAssessContent{ | 37 | +func (repo *StaffAssessContentTempRepository) Save(d *domain.StaffAssessContentTemp) (*domain.StaffAssessContentTemp, error) { |
| 38 | + saveModel := models.StaffAssessContentTemp{ | ||
| 46 | Id: d.Id, | 39 | Id: d.Id, |
| 47 | StaffAssessId: d.StaffAssessId, | 40 | StaffAssessId: d.StaffAssessId, |
| 48 | SortBy: d.SortBy, | 41 | SortBy: d.SortBy, |
| 49 | Category: d.Category, | 42 | Category: d.Category, |
| 50 | Name: d.Name, | 43 | Name: d.Name, |
| 51 | - PromptTitle: d.PromptTitle, | ||
| 52 | - PromptText: d.PromptText, | ||
| 53 | Remark: d.Remark, | 44 | Remark: d.Remark, |
| 54 | Value: d.Value, | 45 | Value: d.Value, |
| 55 | - ReteResult: d.ReteResult, | ||
| 56 | - Rule: d.Rule, | ||
| 57 | CreatedAt: d.CreatedAt, | 46 | CreatedAt: d.CreatedAt, |
| 58 | UpdatedAt: d.UpdatedAt, | 47 | UpdatedAt: d.UpdatedAt, |
| 59 | - Weight: d.Weight, | ||
| 60 | - DeletedAt: nil, | ||
| 61 | } | 48 | } |
| 62 | tx := repo.transactionContext.PgTx | 49 | tx := repo.transactionContext.PgTx |
| 63 | var err error | 50 | var err error |
| @@ -78,19 +65,15 @@ func (repo *StaffAssessContentTempRepository) Save(d *domain.StaffAssessContent) | @@ -78,19 +65,15 @@ func (repo *StaffAssessContentTempRepository) Save(d *domain.StaffAssessContent) | ||
| 78 | 65 | ||
| 79 | func (repo *StaffAssessContentTempRepository) Remove(id int) error { | 66 | func (repo *StaffAssessContentTempRepository) Remove(id int) error { |
| 80 | tx := repo.transactionContext.PgTx | 67 | tx := repo.transactionContext.PgTx |
| 81 | - nowTime := time.Now() | ||
| 82 | - _, err := tx.Model(&models.StaffAssessContent{}). | ||
| 83 | - Where("id=?", id). | ||
| 84 | - Set("deleted_at=?", nowTime). | ||
| 85 | - Update() | 68 | + _, err := tx.Model(&models.StaffAssessContentTemp{}). |
| 69 | + Where("id=?", id).Delete() | ||
| 86 | return err | 70 | return err |
| 87 | } | 71 | } |
| 88 | 72 | ||
| 89 | -func (repo *StaffAssessContentTempRepository) FindOne(queryOptions map[string]interface{}) (*domain.StaffAssessContent, error) { | 73 | +func (repo *StaffAssessContentTempRepository) FindOne(queryOptions map[string]interface{}) (*domain.StaffAssessContentTemp, error) { |
| 90 | tx := repo.transactionContext.PgTx | 74 | tx := repo.transactionContext.PgTx |
| 91 | - m := new(models.StaffAssessContent) | 75 | + m := new(models.StaffAssessContentTemp) |
| 92 | query := tx.Model(m) | 76 | query := tx.Model(m) |
| 93 | - query.Where("deleted_at isnull") | ||
| 94 | if id, ok := queryOptions["id"]; ok { | 77 | if id, ok := queryOptions["id"]; ok { |
| 95 | query.Where("id=?", id) | 78 | query.Where("id=?", id) |
| 96 | } | 79 | } |
| @@ -105,20 +88,13 @@ func (repo *StaffAssessContentTempRepository) FindOne(queryOptions map[string]in | @@ -105,20 +88,13 @@ func (repo *StaffAssessContentTempRepository) FindOne(queryOptions map[string]in | ||
| 105 | return u, nil | 88 | return u, nil |
| 106 | } | 89 | } |
| 107 | 90 | ||
| 108 | -func (repo *StaffAssessContentTempRepository) Find(queryOptions map[string]interface{}) (int, []*domain.StaffAssessContent, error) { | 91 | +func (repo *StaffAssessContentTempRepository) Find(queryOptions map[string]interface{}) (int, []*domain.StaffAssessContentTemp, error) { |
| 109 | tx := repo.transactionContext.PgTx | 92 | tx := repo.transactionContext.PgTx |
| 110 | - var m []*models.StaffAssessContent | ||
| 111 | - query := tx.Model(&m). | ||
| 112 | - Where("deleted_at isnull") | 93 | + var m []*models.StaffAssessContentTemp |
| 94 | + query := tx.Model(&m) | ||
| 113 | if companyId, ok := queryOptions["companyId"]; ok { | 95 | if companyId, ok := queryOptions["companyId"]; ok { |
| 114 | query.Where("company_id = ?", companyId) | 96 | query.Where("company_id = ?", companyId) |
| 115 | } | 97 | } |
| 116 | - if v, ok := queryOptions["limit"].(int); ok { | ||
| 117 | - query.Limit(v) | ||
| 118 | - } | ||
| 119 | - if v, ok := queryOptions["offset"].(int); ok { | ||
| 120 | - query.Offset(v) | ||
| 121 | - } | ||
| 122 | if v, ok := queryOptions["staffAssessId"]; ok { | 98 | if v, ok := queryOptions["staffAssessId"]; ok { |
| 123 | query.Where("staff_assess_id=?", v) | 99 | query.Where("staff_assess_id=?", v) |
| 124 | } | 100 | } |
| @@ -126,7 +102,7 @@ func (repo *StaffAssessContentTempRepository) Find(queryOptions map[string]inter | @@ -126,7 +102,7 @@ func (repo *StaffAssessContentTempRepository) Find(queryOptions map[string]inter | ||
| 126 | if err != nil { | 102 | if err != nil { |
| 127 | return 0, nil, err | 103 | return 0, nil, err |
| 128 | } | 104 | } |
| 129 | - var arrays []*domain.StaffAssessContent | 105 | + var arrays []*domain.StaffAssessContentTemp |
| 130 | for _, v := range m { | 106 | for _, v := range m { |
| 131 | d := repo.TransformToDomain(v) | 107 | d := repo.TransformToDomain(v) |
| 132 | arrays = append(arrays, d) | 108 | arrays = append(arrays, d) |
| @@ -63,8 +63,8 @@ func (repo *StaffAssessRepository) Save(d *domain.StaffAssess) (*domain.StaffAss | @@ -63,8 +63,8 @@ func (repo *StaffAssessRepository) Save(d *domain.StaffAssess) (*domain.StaffAss | ||
| 63 | Status: string(d.Status), | 63 | Status: string(d.Status), |
| 64 | BeginTime: d.BeginTime, | 64 | BeginTime: d.BeginTime, |
| 65 | EndTime: d.EndTime, | 65 | EndTime: d.EndTime, |
| 66 | - CreatedAt: d.EndTime, | ||
| 67 | - UpdatedAt: d.CreatedAt, | 66 | + CreatedAt: d.CreatedAt, |
| 67 | + UpdatedAt: d.UpdatedAt, | ||
| 68 | DeletedAt: d.DeletedAt, | 68 | DeletedAt: d.DeletedAt, |
| 69 | } | 69 | } |
| 70 | tx := repo.transactionContext.PgTx | 70 | tx := repo.transactionContext.PgTx |
| @@ -34,8 +34,8 @@ func (repo *StaffAssessTaskRepository) TransformToDomain(d *models.StaffAssessTa | @@ -34,8 +34,8 @@ func (repo *StaffAssessTaskRepository) TransformToDomain(d *models.StaffAssessTa | ||
| 34 | EndTime: d.EndTime, | 34 | EndTime: d.EndTime, |
| 35 | StepList: d.StepList, | 35 | StepList: d.StepList, |
| 36 | ExecutorId: d.ExecutorId, | 36 | ExecutorId: d.ExecutorId, |
| 37 | - CreatedAt: d.EndTime, | ||
| 38 | - UpdatedAt: d.CreatedAt, | 37 | + CreatedAt: d.CreatedAt, |
| 38 | + UpdatedAt: d.UpdatedAt, | ||
| 39 | DeletedAt: d.DeletedAt, | 39 | DeletedAt: d.DeletedAt, |
| 40 | } | 40 | } |
| 41 | } | 41 | } |
| @@ -53,8 +53,8 @@ func (repo *StaffAssessTaskRepository) Save(d *domain.StaffAssessTask) (*domain. | @@ -53,8 +53,8 @@ func (repo *StaffAssessTaskRepository) Save(d *domain.StaffAssessTask) (*domain. | ||
| 53 | StepList: d.StepList, | 53 | StepList: d.StepList, |
| 54 | BeginTime: d.BeginTime, | 54 | BeginTime: d.BeginTime, |
| 55 | EndTime: d.EndTime, | 55 | EndTime: d.EndTime, |
| 56 | - CreatedAt: d.EndTime, | ||
| 57 | - UpdatedAt: d.CreatedAt, | 56 | + CreatedAt: d.CreatedAt, |
| 57 | + UpdatedAt: d.UpdatedAt, | ||
| 58 | DeletedAt: d.DeletedAt, | 58 | DeletedAt: d.DeletedAt, |
| 59 | } | 59 | } |
| 60 | tx := repo.transactionContext.PgTx | 60 | tx := repo.transactionContext.PgTx |
| @@ -119,6 +119,9 @@ func (repo *UserRepository) Find(queryOptions map[string]interface{}) (int, []*d | @@ -119,6 +119,9 @@ func (repo *UserRepository) Find(queryOptions map[string]interface{}) (int, []*d | ||
| 119 | if v, ok := queryOptions["account"]; ok { | 119 | if v, ok := queryOptions["account"]; ok { |
| 120 | query.Where("account like ?", v) | 120 | query.Where("account like ?", v) |
| 121 | } | 121 | } |
| 122 | + if v, ok := queryOptions["status"]; ok { | ||
| 123 | + query.Where("status=?", v) | ||
| 124 | + } | ||
| 122 | if v, ok := queryOptions["name"].(string); ok && len(v) > 0 { | 125 | if v, ok := queryOptions["name"].(string); ok && len(v) > 0 { |
| 123 | query.Where("name like ?", fmt.Sprintf("%%%v%%", v)) | 126 | query.Where("name like ?", fmt.Sprintf("%%%v%%", v)) |
| 124 | } | 127 | } |
| @@ -279,3 +279,35 @@ func (c *StaffAssessController) ListTargetUserMeSupperAssess() { | @@ -279,3 +279,35 @@ func (c *StaffAssessController) ListTargetUserMeSupperAssess() { | ||
| 279 | data, err := srv.ListTargetUserAssess(paramReq) | 279 | data, err := srv.ListTargetUserAssess(paramReq) |
| 280 | c.Response(data, err) | 280 | c.Response(data, err) |
| 281 | } | 281 | } |
| 282 | + | ||
| 283 | +//获取周期列表 | ||
| 284 | +func (c *StaffAssessController) ListAssessCycle() { | ||
| 285 | + srv := service.NewStaffAssessServeice() | ||
| 286 | + // paramReq := &query.ListTargetUserAssessQuery{} | ||
| 287 | + // err := c.BindJSON(paramReq) | ||
| 288 | + // if err != nil { | ||
| 289 | + // e := application.ThrowError(application.ARG_ERROR, "json 解析错误"+err.Error()) | ||
| 290 | + // c.Response(nil, e) | ||
| 291 | + // return | ||
| 292 | + // } | ||
| 293 | + userReq := middlewares.GetUser(c.Ctx) | ||
| 294 | + | ||
| 295 | + data, err := srv.ListAllAssessCycle(int(userReq.CompanyId)) | ||
| 296 | + c.Response(data, err) | ||
| 297 | +} | ||
| 298 | + | ||
| 299 | +//获取周期里的考核日期 | ||
| 300 | +func (c *StaffAssessController) ListAssessCycleDay() { | ||
| 301 | + srv := service.NewStaffAssessServeice() | ||
| 302 | + paramReq := &query.ListAssessCycleDay{} | ||
| 303 | + err := c.BindJSON(paramReq) | ||
| 304 | + if err != nil { | ||
| 305 | + e := application.ThrowError(application.ARG_ERROR, "json 解析错误"+err.Error()) | ||
| 306 | + c.Response(nil, e) | ||
| 307 | + return | ||
| 308 | + } | ||
| 309 | + userReq := middlewares.GetUser(c.Ctx) | ||
| 310 | + paramReq.CompanyId = int(userReq.CompanyId) | ||
| 311 | + data, err := srv.ListAllAssessCycleDay(paramReq) | ||
| 312 | + c.Response(data, err) | ||
| 313 | +} |
| @@ -13,6 +13,8 @@ func init() { | @@ -13,6 +13,8 @@ func init() { | ||
| 13 | web.NSCtrlPost("/search/me", (*controllers.StaffAssessController).SearchAssessTaskMe), //获取我参与过的评估项目列表 | 13 | web.NSCtrlPost("/search/me", (*controllers.StaffAssessController).SearchAssessTaskMe), //获取我参与过的评估项目列表 |
| 14 | web.NSCtrlPost("/desc/me", (*controllers.StaffAssessController).AssessTaskMeDesc), //获取我的项目评估进度描述 | 14 | web.NSCtrlPost("/desc/me", (*controllers.StaffAssessController).AssessTaskMeDesc), //获取我的项目评估进度描述 |
| 15 | web.NSCtrlPost("/", (*controllers.StaffAssessController).CreateStaffAssessTask), //创建员工的评估任务 | 15 | web.NSCtrlPost("/", (*controllers.StaffAssessController).CreateStaffAssessTask), //创建员工的评估任务 |
| 16 | + web.NSCtrlGet("/cycle", (*controllers.StaffAssessController).ListAssessCycle), //获取周期列表 | ||
| 17 | + web.NSCtrlPost("/cycle/day", (*controllers.StaffAssessController).ListAssessCycleDay), //获取周期中的考核日期 | ||
| 16 | ) | 18 | ) |
| 17 | // /v1/staff-assess/self/me/list | 19 | // /v1/staff-assess/self/me/list |
| 18 | assessNS := web.NewNamespace("/v1/staff-assess", | 20 | assessNS := web.NewNamespace("/v1/staff-assess", |
| @@ -37,7 +37,7 @@ func ValidateCommand(commandType interface{}) error { | @@ -37,7 +37,7 @@ func ValidateCommand(commandType interface{}) error { | ||
| 37 | } | 37 | } |
| 38 | 38 | ||
| 39 | // NextTime 0点时刻为标准计算 | 39 | // NextTime 0点时刻为标准计算 |
| 40 | -func NextTime(now0 time.Time, start *time.Time, kpiCycle int) time.Time { | 40 | +func NextTime(now0 time.Time, start time.Time, kpiCycle int) time.Time { |
| 41 | year, month, day := start.Date() | 41 | year, month, day := start.Date() |
| 42 | // 起始时间0点时刻 | 42 | // 起始时间0点时刻 |
| 43 | start0 := time.Date(year, month, day, 0, 0, 0, 0, time.Local) | 43 | start0 := time.Date(year, month, day, 0, 0, 0, 0, time.Local) |
| @@ -141,7 +141,7 @@ func SubMonth(t1, t2 time.Time) (month int) { | @@ -141,7 +141,7 @@ func SubMonth(t1, t2 time.Time) (month int) { | ||
| 141 | } | 141 | } |
| 142 | 142 | ||
| 143 | // NextTimeInc 0点时刻为标准计算 | 143 | // NextTimeInc 0点时刻为标准计算 |
| 144 | -func NextTimeInc(start *time.Time, kpiCycle int) time.Time { | 144 | +func NextTimeInc(start time.Time, kpiCycle int) time.Time { |
| 145 | year, month, day := start.Date() | 145 | year, month, day := start.Date() |
| 146 | // 起始时间0点时刻 | 146 | // 起始时间0点时刻 |
| 147 | start0 := time.Date(year, month, day, 0, 0, 0, 0, time.Local) | 147 | start0 := time.Date(year, month, day, 0, 0, 0, 0, time.Local) |
-
请 注册 或 登录 后发表评论