作者 tangxvhui

Merge branch 'test'

正在显示 33 个修改的文件 包含 665 行增加151 行删除
@@ -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 +}
  1 +package query
  2 +
  3 +type ListAssessCycleDay struct {
  4 + CompanyId int `json:"companyId"`
  5 + CycleId int `json:"cycleId,string"`
  6 +}
@@ -480,6 +480,7 @@ func (srv StaffAssessServeice) createStaffAssess(transactionContext application. @@ -480,6 +480,7 @@ func (srv StaffAssessServeice) createStaffAssess(transactionContext application.
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)
@@ -781,6 +791,7 @@ func (srv StaffAssessServeice) SaveAssessInviteUser(param *command.SaveAssessInv @@ -781,6 +791,7 @@ func (srv StaffAssessServeice) SaveAssessInviteUser(param *command.SaveAssessInv
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())
@@ -798,6 +809,7 @@ func (srv StaffAssessServeice) SaveAssessInviteUser(param *command.SaveAssessInv @@ -798,6 +809,7 @@ func (srv StaffAssessServeice) SaveAssessInviteUser(param *command.SaveAssessInv
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 {
@@ -1863,6 +1874,7 @@ loop: @@ -1863,6 +1874,7 @@ loop:
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:"评估模板"`
@@ -12,16 +12,16 @@ type StaffAssess struct { @@ -12,16 +12,16 @@ type StaffAssess struct {
12 Id int `pg:",pk"` //id 12 Id int `pg:",pk"` //id
13 CompanyId int `comment:"公司id"` //公司id 13 CompanyId int `comment:"公司id"` //公司id
14 EvaluationProjectId int `comment:"对应的项目id"` //对应的项目id 14 EvaluationProjectId int `comment:"对应的项目id"` //对应的项目id
15 - EvaluationProjectName string 15 + EvaluationProjectName string `comment:"对应的项目名称"`
16 CycleId int64 `comment:"对应的周期id"` //对应的周期id 16 CycleId int64 `comment:"对应的周期id"` //对应的周期id
17 - CycleName string  
18 - StaffAssessTaskId int 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 24 + LinkNodeName string `comment:"评估环节名称"`
25 Status string `comment:"评估的填写状态"` //评估的填写状态 25 Status string `comment:"评估的填写状态"` //评估的填写状态
26 BeginTime time.Time `comment:"开始时间"` //开始时间 26 BeginTime time.Time `comment:"开始时间"` //开始时间
27 EndTime time.Time `comment:"截止时间"` //截止时间 27 EndTime time.Time `comment:"截止时间"` //截止时间
@@ -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:"填写的评估项"` 11 + tableName struct{} `pg:"staff_assess_content_temp" comment:"临时填写的评估项"`
12 Id int `pg:",pk"` //id 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 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)