正在显示
15 个修改的文件
包含
263 行增加
和
16 行删除
| 1 | package service | 1 | package service |
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | + "strconv" | ||
| 5 | + "time" | ||
| 6 | + | ||
| 4 | "github.com/linmadan/egglib-go/core/application" | 7 | "github.com/linmadan/egglib-go/core/application" |
| 5 | "github.com/linmadan/egglib-go/utils/tool_funs" | 8 | "github.com/linmadan/egglib-go/utils/tool_funs" |
| 6 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/evaluation_cycle/adapter" | 9 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/evaluation_cycle/adapter" |
| 7 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/evaluation_cycle/command" | 10 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/evaluation_cycle/command" |
| 8 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory" | 11 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory" |
| 9 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain" | 12 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain" |
| 10 | - "strconv" | ||
| 11 | - "time" | ||
| 12 | ) | 13 | ) |
| 13 | 14 | ||
| 14 | type EvaluationCycleService struct { | 15 | type EvaluationCycleService struct { |
| @@ -356,7 +357,7 @@ func (rs *EvaluationCycleService) Remove(in *command.DeleteCycleCommand) (interf | @@ -356,7 +357,7 @@ func (rs *EvaluationCycleService) Remove(in *command.DeleteCycleCommand) (interf | ||
| 356 | projectRepository := factory.CreateEvaluationProjectRepository(map[string]interface{}{"transactionContext": transactionContext}) | 357 | projectRepository := factory.CreateEvaluationProjectRepository(map[string]interface{}{"transactionContext": transactionContext}) |
| 357 | taskRepository := factory.CreateNodeTaskRepository(map[string]interface{}{"transactionContext": transactionContext}) | 358 | taskRepository := factory.CreateNodeTaskRepository(map[string]interface{}{"transactionContext": transactionContext}) |
| 358 | staffRepository := factory.CreateStaffAssessTaskRepository(map[string]interface{}{"transactionContext": transactionContext}) | 359 | staffRepository := factory.CreateStaffAssessTaskRepository(map[string]interface{}{"transactionContext": transactionContext}) |
| 359 | - | 360 | + summaryEvaluationRepository := factory.CreateSummaryEvaluationRepository(map[string]interface{}{"transactionContext": transactionContext}) |
| 360 | // 删除周期 | 361 | // 删除周期 |
| 361 | cycle, err := cycleRepository.FindOne(map[string]interface{}{"id": in.Id}) | 362 | cycle, err := cycleRepository.FindOne(map[string]interface{}{"id": in.Id}) |
| 362 | if err != nil { | 363 | if err != nil { |
| @@ -380,11 +381,6 @@ func (rs *EvaluationCycleService) Remove(in *command.DeleteCycleCommand) (interf | @@ -380,11 +381,6 @@ func (rs *EvaluationCycleService) Remove(in *command.DeleteCycleCommand) (interf | ||
| 380 | if _, err := projectRepository.Remove(projects[i]); err != nil { | 381 | if _, err := projectRepository.Remove(projects[i]); err != nil { |
| 381 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 382 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 382 | } | 383 | } |
| 383 | - | ||
| 384 | - // 删除项目已生成的周期评估数据 | ||
| 385 | - if err := staffRepository.RemoveByProjectId(int(projects[i].Id)); err != nil { | ||
| 386 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 387 | - } | ||
| 388 | } | 384 | } |
| 389 | 385 | ||
| 390 | // 删除周期下的所有定时任务 | 386 | // 删除周期下的所有定时任务 |
| @@ -398,6 +394,14 @@ func (rs *EvaluationCycleService) Remove(in *command.DeleteCycleCommand) (interf | @@ -398,6 +394,14 @@ func (rs *EvaluationCycleService) Remove(in *command.DeleteCycleCommand) (interf | ||
| 398 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 394 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 399 | } | 395 | } |
| 400 | } | 396 | } |
| 397 | + // 删除项目已生成的周期评估数据 | ||
| 398 | + if err := staffRepository.RemoveByCycleId(int(cycle.Id)); err != nil { | ||
| 399 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 400 | + } | ||
| 401 | + // | ||
| 402 | + if err := summaryEvaluationRepository.RemoveByCycleId(cycle.Id); err != nil { | ||
| 403 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 404 | + } | ||
| 401 | 405 | ||
| 402 | if err := transactionContext.CommitTransaction(); err != nil { | 406 | if err := transactionContext.CommitTransaction(); err != nil { |
| 403 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 407 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
| @@ -920,7 +920,7 @@ func (srv StaffAssessServeice) GetAssessInfo(param *query.AssessInfoQuery) (*ada | @@ -920,7 +920,7 @@ func (srv StaffAssessServeice) GetAssessInfo(param *query.AssessInfoQuery) (*ada | ||
| 920 | } | 920 | } |
| 921 | } else if assessData.Status == domain.StaffAssessUncompleted { | 921 | } else if assessData.Status == domain.StaffAssessUncompleted { |
| 922 | //未完成 | 922 | //未完成 |
| 923 | - assessContentList, err = srv.getAssessSelfInfoUncompleted(transactionContext, assessData) | 923 | + assessContentList, err = srv.getAssessInfoUncompletedV2(transactionContext, assessData) |
| 924 | if err != nil { | 924 | if err != nil { |
| 925 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取项目填写内容"+err.Error()) | 925 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取项目填写内容"+err.Error()) |
| 926 | } | 926 | } |
| @@ -1059,7 +1059,7 @@ func (srv StaffAssessServeice) SaveAssessInfo(param *command.SaveAssessInfoComma | @@ -1059,7 +1059,7 @@ func (srv StaffAssessServeice) SaveAssessInfo(param *command.SaveAssessInfoComma | ||
| 1059 | } | 1059 | } |
| 1060 | } else if assessData.Status == domain.StaffAssessUncompleted { | 1060 | } else if assessData.Status == domain.StaffAssessUncompleted { |
| 1061 | //未完成 | 1061 | //未完成 |
| 1062 | - assessContentList, err = srv.getAssessSelfInfoUncompleted(transactionContext, assessData) | 1062 | + assessContentList, err = srv.getAssessInfoUncompletedV2(transactionContext, assessData) |
| 1063 | if err != nil { | 1063 | if err != nil { |
| 1064 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取项目填写内容"+err.Error()) | 1064 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取项目填写内容"+err.Error()) |
| 1065 | } | 1065 | } |
| @@ -1077,9 +1077,13 @@ func (srv StaffAssessServeice) SaveAssessInfo(param *command.SaveAssessInfoComma | @@ -1077,9 +1077,13 @@ func (srv StaffAssessServeice) SaveAssessInfo(param *command.SaveAssessInfoComma | ||
| 1077 | if !ok { | 1077 | if !ok { |
| 1078 | continue | 1078 | continue |
| 1079 | } | 1079 | } |
| 1080 | + if assessData.Types == domain.AssessSelf { | ||
| 1081 | + //每日自评需要检查必填项 | ||
| 1080 | if v.Required == domain.NodeRequiredYes && len(item.Value) == 0 { | 1082 | if v.Required == domain.NodeRequiredYes && len(item.Value) == 0 { |
| 1081 | return nil, application.ThrowError(application.BUSINESS_ERROR, v.Category+"-"+v.Name+":必填项") | 1083 | return nil, application.ThrowError(application.BUSINESS_ERROR, v.Category+"-"+v.Name+":必填项") |
| 1082 | } | 1084 | } |
| 1085 | + } | ||
| 1086 | + | ||
| 1083 | v.Value = item.Value | 1087 | v.Value = item.Value |
| 1084 | if len(item.Value) > 0 { | 1088 | if len(item.Value) > 0 { |
| 1085 | // 转换填入的评估值 | 1089 | // 转换填入的评估值 |
| @@ -4,6 +4,7 @@ import ( | @@ -4,6 +4,7 @@ import ( | ||
| 4 | "fmt" | 4 | "fmt" |
| 5 | "sort" | 5 | "sort" |
| 6 | "strconv" | 6 | "strconv" |
| 7 | + "time" | ||
| 7 | 8 | ||
| 8 | "github.com/linmadan/egglib-go/core/application" | 9 | "github.com/linmadan/egglib-go/core/application" |
| 9 | "github.com/linmadan/egglib-go/utils/tool_funs" | 10 | "github.com/linmadan/egglib-go/utils/tool_funs" |
| @@ -373,7 +374,7 @@ func (srv StaffAssessServeice) ListExecutorInviteAssessV2(param *query.ListExecu | @@ -373,7 +374,7 @@ func (srv StaffAssessServeice) ListExecutorInviteAssessV2(param *query.ListExecu | ||
| 373 | continue | 374 | continue |
| 374 | } | 375 | } |
| 375 | projectIdMap[assessList[i].EvaluationProjectId] = struct{}{} | 376 | projectIdMap[assessList[i].EvaluationProjectId] = struct{}{} |
| 376 | - assessContentListTemp, err := srv.getAssessSelfInfoUncompleted(transactionContext, assessList[i]) | 377 | + assessContentListTemp, err := srv.getAssessInfoUncompletedV2(transactionContext, assessList[i]) |
| 377 | if err != nil { | 378 | if err != nil { |
| 378 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取评估任务"+err.Error()) | 379 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取评估任务"+err.Error()) |
| 379 | } | 380 | } |
| @@ -720,7 +721,7 @@ func (srv StaffAssessServeice) GetAssessSelfInfoV2(param *query.GetExecutorSelfA | @@ -720,7 +721,7 @@ func (srv StaffAssessServeice) GetAssessSelfInfoV2(param *query.GetExecutorSelfA | ||
| 720 | } | 721 | } |
| 721 | } else if assessData.Status == domain.StaffAssessUncompleted { | 722 | } else if assessData.Status == domain.StaffAssessUncompleted { |
| 722 | //未完成 | 723 | //未完成 |
| 723 | - assessContentList, err = srv.getAssessSelfInfoUncompleted(transactionContext, assessData) | 724 | + assessContentList, err = srv.getAssessInfoUncompletedV2(transactionContext, assessData) |
| 724 | if err != nil { | 725 | if err != nil { |
| 725 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取项目填写内容"+err.Error()) | 726 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取项目填写内容"+err.Error()) |
| 726 | } | 727 | } |
| @@ -795,7 +796,7 @@ func (srv StaffAssessServeice) ListTargetUserInviteAssess(param *query.ListTarge | @@ -795,7 +796,7 @@ func (srv StaffAssessServeice) ListTargetUserInviteAssess(param *query.ListTarge | ||
| 795 | if err := transactionContext.CommitTransaction(); err != nil { | 796 | if err := transactionContext.CommitTransaction(); err != nil { |
| 796 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 797 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 797 | } | 798 | } |
| 798 | - var resultList []map[string]interface{} | 799 | + resultList := []map[string]interface{}{} |
| 799 | for _, v := range assessList { | 800 | for _, v := range assessList { |
| 800 | item := map[string]interface{}{ | 801 | item := map[string]interface{}{ |
| 801 | "id": v.Id, | 802 | "id": v.Id, |
| @@ -922,3 +923,65 @@ func (srv StaffAssessServeice) SelectAssessInviteUserV2(param *query.SelectAsses | @@ -922,3 +923,65 @@ func (srv StaffAssessServeice) SelectAssessInviteUserV2(param *query.SelectAsses | ||
| 922 | } | 923 | } |
| 923 | return tool_funs.SimpleWrapGridMap(int64(cnt), listData), nil | 924 | return tool_funs.SimpleWrapGridMap(int64(cnt), listData), nil |
| 924 | } | 925 | } |
| 926 | + | ||
| 927 | +// 获取未完成的员工评估内容 | ||
| 928 | +func (srv StaffAssessServeice) getAssessInfoUncompletedV2(transactionContext application.TransactionContext, | ||
| 929 | + assess *domain.StaffAssess) ([]*domain.StaffAssessContent, error) { | ||
| 930 | + evaluationItemRepo := factory.CreateEvaluationItemUsedRepository(map[string]interface{}{ | ||
| 931 | + "transactionContext": transactionContext, | ||
| 932 | + }) | ||
| 933 | + var evaluationItemList []*domain.EvaluationItemUsed | ||
| 934 | + var err error | ||
| 935 | + _, evaluationItemList, err = evaluationItemRepo.Find(map[string]interface{}{ | ||
| 936 | + "evaluationProjectId": assess.EvaluationProjectId, | ||
| 937 | + "nodeId": assess.LinkNodeId, | ||
| 938 | + }) | ||
| 939 | + if err != nil { | ||
| 940 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取项目填写内容"+err.Error()) | ||
| 941 | + } | ||
| 942 | + if len(evaluationItemList) == 0 { | ||
| 943 | + //如果当前节点没有评估内容,就去 使用自评节点的评估内容 | ||
| 944 | + _, evaluationItemList, err = evaluationItemRepo.Find(map[string]interface{}{ | ||
| 945 | + "evaluationProjectId": assess.EvaluationProjectId, | ||
| 946 | + "nodeType": domain.LinkNodeSelfAssessment, | ||
| 947 | + }) | ||
| 948 | + if err != nil { | ||
| 949 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取自评项目填写内容"+err.Error()) | ||
| 950 | + } | ||
| 951 | + } | ||
| 952 | + var contentList []*domain.StaffAssessContent | ||
| 953 | + nowTime := time.Now() | ||
| 954 | + for i, v := range evaluationItemList { | ||
| 955 | + item := &domain.StaffAssessContent{ | ||
| 956 | + Id: 0, | ||
| 957 | + StaffAssessId: assess.Id, | ||
| 958 | + SortBy: i + 1, | ||
| 959 | + Category: v.Category, | ||
| 960 | + Name: v.Name, | ||
| 961 | + PromptTitle: v.PromptTitle, | ||
| 962 | + PromptText: v.PromptText, | ||
| 963 | + Remark: nil, | ||
| 964 | + Value: "", | ||
| 965 | + ReteResult: "", | ||
| 966 | + CreatedAt: nowTime, | ||
| 967 | + Weight: v.Weight, | ||
| 968 | + Required: v.Required, | ||
| 969 | + UpdatedAt: nowTime, | ||
| 970 | + DeletedAt: nil, | ||
| 971 | + Rule: v.Rule, | ||
| 972 | + } | ||
| 973 | + var remarks []domain.AssessContemtRemark | ||
| 974 | + for _, vv := range v.EntryItems { | ||
| 975 | + ritem := domain.AssessContemtRemark{ | ||
| 976 | + Title: vv.Title, | ||
| 977 | + HintText: vv.HintText, | ||
| 978 | + Definition: vv.Definition, | ||
| 979 | + RemarkText: "", | ||
| 980 | + } | ||
| 981 | + remarks = append(remarks, ritem) | ||
| 982 | + } | ||
| 983 | + item.Remark = remarks | ||
| 984 | + contentList = append(contentList, item) | ||
| 985 | + } | ||
| 986 | + return contentList, nil | ||
| 987 | +} |
| @@ -20,7 +20,7 @@ func sendSummaryEvaluation(project *domain.EvaluationProject, | @@ -20,7 +20,7 @@ func sendSummaryEvaluation(project *domain.EvaluationProject, | ||
| 20 | userMap map[int64]*domain.User, departmentMap map[int64]*domain.Department) ([]domain.SummaryEvaluation, error) { | 20 | userMap map[int64]*domain.User, departmentMap map[int64]*domain.Department) ([]domain.SummaryEvaluation, error) { |
| 21 | //自评的时间范围 | 21 | //自评的时间范围 |
| 22 | beginTimeSelf := project.EndTime | 22 | beginTimeSelf := project.EndTime |
| 23 | - endTimeSelf := dayZeroTime(project.EndTime).Add(3*24*time.Hour - time.Second) | 23 | + endTimeSelf := dayZeroTime(project.EndTime).Add(4*24*time.Hour - time.Second) |
| 24 | //人资、360评估的时间范围 | 24 | //人资、360评估的时间范围 |
| 25 | beginTime360 := endTimeSelf | 25 | beginTime360 := endTimeSelf |
| 26 | endTime360 := endTimeSelf.Add(2 * 24 * time.Hour) | 26 | endTime360 := endTimeSelf.Add(2 * 24 * time.Hour) |
| @@ -195,7 +195,8 @@ func (se *summaryEvaluationPublisher) sendSummaryEvaluationV2( | @@ -195,7 +195,8 @@ func (se *summaryEvaluationPublisher) sendSummaryEvaluationV2( | ||
| 195 | } | 195 | } |
| 196 | //自评的时间范围 | 196 | //自评的时间范围 |
| 197 | beginTimeSelf := *cycleData.TimeEnd | 197 | beginTimeSelf := *cycleData.TimeEnd |
| 198 | - endTimeSelf := dayZeroTime(beginTimeSelf).Add(3*24*time.Hour - time.Second) | 198 | + //修改 周期结束时间那天的第二天开始计算 |
| 199 | + endTimeSelf := dayZeroTime(beginTimeSelf).Add(4*24*time.Hour - time.Second) | ||
| 199 | //人资、360评估的时间范围 | 200 | //人资、360评估的时间范围 |
| 200 | beginTime360 := endTimeSelf | 201 | beginTime360 := endTimeSelf |
| 201 | endTime360 := endTimeSelf.Add(2 * 24 * time.Hour) | 202 | endTime360 := endTimeSelf.Add(2 * 24 * time.Hour) |
| @@ -42,4 +42,5 @@ type StaffAssessTaskRepository interface { | @@ -42,4 +42,5 @@ type StaffAssessTaskRepository interface { | ||
| 42 | FindOne(queryOptions map[string]interface{}) (*StaffAssessTask, error) | 42 | FindOne(queryOptions map[string]interface{}) (*StaffAssessTask, error) |
| 43 | Find(queryOptions map[string]interface{}) (int, []*StaffAssessTask, error) | 43 | Find(queryOptions map[string]interface{}) (int, []*StaffAssessTask, error) |
| 44 | RemoveByProjectId(id int) error | 44 | RemoveByProjectId(id int) error |
| 45 | + RemoveByCycleId(id int) error | ||
| 45 | } | 46 | } |
| @@ -68,6 +68,7 @@ type SummaryEvaluationRepository interface { | @@ -68,6 +68,7 @@ type SummaryEvaluationRepository interface { | ||
| 68 | FindOne(queryOptions map[string]interface{}) (*SummaryEvaluation, error) | 68 | FindOne(queryOptions map[string]interface{}) (*SummaryEvaluation, error) |
| 69 | Find(queryOptions map[string]interface{}) (int, []*SummaryEvaluation, error) | 69 | Find(queryOptions map[string]interface{}) (int, []*SummaryEvaluation, error) |
| 70 | RemoveByProjectId(id int) error | 70 | RemoveByProjectId(id int) error |
| 71 | + RemoveByCycleId(id int64) error | ||
| 71 | } | 72 | } |
| 72 | 73 | ||
| 73 | // 计算总分。TotalScore 保留1位小数 | 74 | // 计算总分。TotalScore 保留1位小数 |
| @@ -1280,6 +1280,7 @@ func (d *StaffAssessDao) CountUncompletedSelfAssess(companyId int, projectIds [] | @@ -1280,6 +1280,7 @@ func (d *StaffAssessDao) CountUncompletedSelfAssess(companyId int, projectIds [] | ||
| 1280 | AND staff_assess.types = 'self' | 1280 | AND staff_assess.types = 'self' |
| 1281 | AND staff_assess.evaluation_project_id IN (?) | 1281 | AND staff_assess.evaluation_project_id IN (?) |
| 1282 | AND staff_assess.status = 'uncompleted' | 1282 | AND staff_assess.status = 'uncompleted' |
| 1283 | + AND staff_assess.end_time < now() | ||
| 1283 | GROUP BY | 1284 | GROUP BY |
| 1284 | evaluation_project_id, target_user_id` | 1285 | evaluation_project_id, target_user_id` |
| 1285 | 1286 |
| @@ -125,6 +125,7 @@ and staff_assess.evaluation_project_id in ( | @@ -125,6 +125,7 @@ and staff_assess.evaluation_project_id in ( | ||
| 125 | // hrbp 是否搜索HRBP角色的用户可以查看,1:是;-1:否 (必填) | 125 | // hrbp 是否搜索HRBP角色的用户可以查看,1:是;-1:否 (必填) |
| 126 | func (d *StaffAssessDao) catchProjectIdByPermission(companyId int, cycleId int, operaterId int, hrbp int) string { | 126 | func (d *StaffAssessDao) catchProjectIdByPermission(companyId int, cycleId int, operaterId int, hrbp int) string { |
| 127 | withSql := ` | 127 | withSql := ` |
| 128 | + set time zone 'PRC'; | ||
| 128 | with | 129 | with |
| 129 | t_project_0 as( | 130 | t_project_0 as( |
| 130 | select evaluation_project.id as project_id, | 131 | select evaluation_project.id as project_id, |
| @@ -40,6 +40,8 @@ func (d *SummaryEvaluationDao) GetExecutorCycleList(companyId int, executorId in | @@ -40,6 +40,8 @@ func (d *SummaryEvaluationDao) GetExecutorCycleList(companyId int, executorId in | ||
| 40 | summary_evaluation.cycle_name | 40 | summary_evaluation.cycle_name |
| 41 | from summary_evaluation | 41 | from summary_evaluation |
| 42 | where summary_evaluation.company_id=? | 42 | where summary_evaluation.company_id=? |
| 43 | + and summary_evaluation.begin_time <=now() | ||
| 44 | + and summary_evaluation.deleted_at isnull | ||
| 43 | ` | 45 | ` |
| 44 | tx := d.transactionContext.PgTx | 46 | tx := d.transactionContext.PgTx |
| 45 | condition := []interface{}{ | 47 | condition := []interface{}{ |
| @@ -64,7 +66,7 @@ func (d *SummaryEvaluationDao) CountExecutorCycleList(companyId int, executorId | @@ -64,7 +66,7 @@ func (d *SummaryEvaluationDao) CountExecutorCycleList(companyId int, executorId | ||
| 64 | distinct summary_evaluation.cycle_id | 66 | distinct summary_evaluation.cycle_id |
| 65 | ) as cnt | 67 | ) as cnt |
| 66 | from summary_evaluation | 68 | from summary_evaluation |
| 67 | - where summary_evaluation.company_id=? ` | 69 | + where summary_evaluation.company_id=? and summary_evaluation.deleted_at isnull ` |
| 68 | 70 | ||
| 69 | tx := d.transactionContext.PgTx | 71 | tx := d.transactionContext.PgTx |
| 70 | condition := []interface{}{ | 72 | condition := []interface{}{ |
| @@ -93,6 +93,10 @@ func (repo *EvaluationItemUsedRepository) Find(queryOptions map[string]interface | @@ -93,6 +93,10 @@ func (repo *EvaluationItemUsedRepository) Find(queryOptions map[string]interface | ||
| 93 | query.Where("node_type=?", v) | 93 | query.Where("node_type=?", v) |
| 94 | } | 94 | } |
| 95 | 95 | ||
| 96 | + if v, ok := queryOptions["nodeId"]; ok { | ||
| 97 | + query.Where("node_id=?", v) | ||
| 98 | + } | ||
| 99 | + | ||
| 96 | if v, ok := queryOptions["evaluatorId"]; ok { | 100 | if v, ok := queryOptions["evaluatorId"]; ok { |
| 97 | query.Where("evaluator_id=?", v) | 101 | query.Where("evaluator_id=?", v) |
| 98 | } | 102 | } |
| @@ -153,3 +153,13 @@ func (repo *StaffAssessTaskRepository) RemoveByProjectId(id int) error { | @@ -153,3 +153,13 @@ func (repo *StaffAssessTaskRepository) RemoveByProjectId(id int) error { | ||
| 153 | Update() | 153 | Update() |
| 154 | return err | 154 | return err |
| 155 | } | 155 | } |
| 156 | + | ||
| 157 | +func (repo *StaffAssessTaskRepository) RemoveByCycleId(id int) error { | ||
| 158 | + tx := repo.transactionContext.PgTx | ||
| 159 | + nowTime := time.Now() | ||
| 160 | + _, err := tx.Model(&models.StaffAssessTask{}). | ||
| 161 | + Where("cycle_id=?", id). | ||
| 162 | + Set("deleted_at=?", nowTime). | ||
| 163 | + Update() | ||
| 164 | + return err | ||
| 165 | +} |
| @@ -197,3 +197,13 @@ func (repo *SummaryEvaluationRepository) RemoveByProjectId(id int) error { | @@ -197,3 +197,13 @@ func (repo *SummaryEvaluationRepository) RemoveByProjectId(id int) error { | ||
| 197 | Update() | 197 | Update() |
| 198 | return err | 198 | return err |
| 199 | } | 199 | } |
| 200 | + | ||
| 201 | +func (repo *SummaryEvaluationRepository) RemoveByCycleId(id int64) error { | ||
| 202 | + tx := repo.transactionContext.PgTx | ||
| 203 | + nowTime := time.Now() | ||
| 204 | + _, err := tx.Model(&models.SummaryEvaluation{}). | ||
| 205 | + Where("cycle_id=?", id). | ||
| 206 | + Set("deleted_at=?", nowTime). | ||
| 207 | + Update() | ||
| 208 | + return err | ||
| 209 | +} |
sql/2023-04-01.sql
0 → 100644
| 1 | +-- 数据修复 | ||
| 2 | +-- 需备份 evaluation_item_used 表数据 | ||
| 3 | + | ||
| 4 | +WITH t1 AS ( | ||
| 5 | + SELECT | ||
| 6 | + evaluation_project.company_id, | ||
| 7 | + evaluation_project.id AS project_id, | ||
| 8 | + jsonb_array_elements(evaluation_project."template" #> '{linkNodes}') AS nodes | ||
| 9 | + FROM | ||
| 10 | + evaluation_project | ||
| 11 | + WHERE evaluation_project."template" #> '{linkNodes}'<>'null' | ||
| 12 | + ORDER BY | ||
| 13 | + id | ||
| 14 | +), | ||
| 15 | +t2 AS ( | ||
| 16 | + SELECT | ||
| 17 | + t1.company_id, | ||
| 18 | + t1.project_id, | ||
| 19 | + t1.nodes ->> 'id' AS node_id, | ||
| 20 | + t1.nodes ->> 'type' AS node_type, | ||
| 21 | + jsonb_array_elements(t1.nodes #> '{nodeContents}') AS node_contents | ||
| 22 | + FROM | ||
| 23 | + t1 | ||
| 24 | + WHERE t1.nodes #> '{nodeContents}'<>'null' | ||
| 25 | + ), | ||
| 26 | +t3 AS( | ||
| 27 | + SELECT | ||
| 28 | + t2.company_id, | ||
| 29 | + t2.project_id, | ||
| 30 | + cast(t2.node_id AS int8) AS node_id, | ||
| 31 | + cast(t2.node_type AS int8) AS node_type, | ||
| 32 | + t2.node_contents ->> 'category' AS "category", | ||
| 33 | + t2.node_contents ->> 'name' AS "name", | ||
| 34 | + cast(t2.node_contents ->> 'ruleId' AS int8) AS "rule_id" | ||
| 35 | + FROM | ||
| 36 | + t2 | ||
| 37 | +), | ||
| 38 | +t4 as ( | ||
| 39 | + SELECT | ||
| 40 | + t3.project_id, | ||
| 41 | + t3.node_type, | ||
| 42 | + t3."category", | ||
| 43 | + t3."name", | ||
| 44 | + row_to_json( "evaluation_rule".*) as "rule", | ||
| 45 | + "evaluation_rule"."type" as rule_type | ||
| 46 | + FROM t3 | ||
| 47 | + join "evaluation_rule" on t3.rule_id= "evaluation_rule".id | ||
| 48 | +), | ||
| 49 | +t5 as ( | ||
| 50 | + SELECT | ||
| 51 | + evaluation_item_used."id", | ||
| 52 | + evaluation_item_used.evaluation_project_id, | ||
| 53 | + evaluation_item_used.node_type, | ||
| 54 | + evaluation_item_used.category, | ||
| 55 | + evaluation_item_used."name" | ||
| 56 | + FROM evaluation_item_used | ||
| 57 | + WHERE "rule"='{}' or "rule" ISNULL | ||
| 58 | +), | ||
| 59 | +t6 as ( | ||
| 60 | + SELECT t5."id" , | ||
| 61 | + t4."rule", | ||
| 62 | + t4.rule_type | ||
| 63 | + FROM t5 ,t4 | ||
| 64 | + WHERE t5.evaluation_project_id=t4.project_id | ||
| 65 | + and t5.node_type=t4.node_type | ||
| 66 | + and t5.category=t4.category | ||
| 67 | + and t5."name"=t4."name" | ||
| 68 | +) | ||
| 69 | +update evaluation_item_used | ||
| 70 | +set "rule"=t6."rule", | ||
| 71 | +rule_type=t6."rule_type" | ||
| 72 | +FROM t6 | ||
| 73 | +WHERE evaluation_item_used."id"=t6."id" | ||
| 74 | +; | ||
| 75 | + | ||
| 76 | +-- 修复数据 | ||
| 77 | + | ||
| 78 | +with t1 as | ||
| 79 | +( SELECT | ||
| 80 | +evaluation_rule.id::TEXT, | ||
| 81 | +evaluation_rule."name", | ||
| 82 | +evaluation_rule.remark, | ||
| 83 | +evaluation_rule.company_id::TEXT as "companyId", | ||
| 84 | +evaluation_rule.creator_id::TEXT as "creatorId", | ||
| 85 | +evaluation_rule."type", | ||
| 86 | +evaluation_rule.rating, | ||
| 87 | +evaluation_rule.score, | ||
| 88 | +evaluation_rule.sys_type as "sysType" | ||
| 89 | +FROM evaluation_rule | ||
| 90 | +), | ||
| 91 | +t2 as ( | ||
| 92 | +SELECT t1.id, row_to_json(t1.*) as row_j FROM t1 | ||
| 93 | +), | ||
| 94 | +t3 as ( | ||
| 95 | +SELECT evaluation_item_used.id, t2.row_j | ||
| 96 | +FROM evaluation_item_used | ||
| 97 | +join t2 on t2.id= evaluation_item_used."rule"->>'id' | ||
| 98 | +WHERE evaluation_item_used."rule"->'companyId' ISNULL | ||
| 99 | +and evaluation_item_used."rule"->'id' is not null | ||
| 100 | +) | ||
| 101 | +update evaluation_item_used | ||
| 102 | +SET "rule"=t3.row_j | ||
| 103 | +FROM t3 | ||
| 104 | +WHERE evaluation_item_used.id = t3.id | ||
| 105 | +; | ||
| 106 | +-- 修改开始结束时间 | ||
| 107 | +UPDATE summary_evaluation | ||
| 108 | +set begin_time = '2023-03-31 23:59:00+08', | ||
| 109 | +end_time = '2023-04-02 23:59:00+08' | ||
| 110 | +WHERE id=36 | ||
| 111 | +; | ||
| 112 | + | ||
| 113 | +UPDATE summary_evaluation | ||
| 114 | +set begin_time = '2023-04-02 23:59:00+08', | ||
| 115 | +end_time = '2023-04-04 23:59:00+08' | ||
| 116 | +WHERE id=37 | ||
| 117 | + | ||
| 118 | +-- 修改数据summary_evaluation 表数据 | ||
| 119 | +with t1 as ( | ||
| 120 | +SELECT summary_evaluation.id,summary_evaluation.evaluation_project_id | ||
| 121 | +FROM summary_evaluation | ||
| 122 | +WHERE to_char( summary_evaluation.begin_time, 'YYYY-MM-DD') ='2023-03-31' | ||
| 123 | +and to_char( summary_evaluation.end_time, 'YYYY-MM-DD') ='2023-04-02' | ||
| 124 | +and company_id=1 | ||
| 125 | +) | ||
| 126 | +update summary_evaluation | ||
| 127 | +set end_time=end_time+'1 day' | ||
| 128 | +FROM t1 | ||
| 129 | +WHERE summary_evaluation.evaluation_project_id=t1.evaluation_project_id |
sql/2023-04-03.sql
0 → 100644
-
请 注册 或 登录 后发表评论