正在显示
15 个修改的文件
包含
266 行增加
和
19 行删除
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 v.Required == domain.NodeRequiredYes && len(item.Value) == 0 { | ||
1081 | - return nil, application.ThrowError(application.BUSINESS_ERROR, v.Category+"-"+v.Name+":必填项") | 1080 | + if assessData.Types == domain.AssessSelf { |
1081 | + //每日自评需要检查必填项 | ||
1082 | + if v.Required == domain.NodeRequiredYes && len(item.Value) == 0 { | ||
1083 | + return nil, application.ThrowError(application.BUSINESS_ERROR, v.Category+"-"+v.Name+":必填项") | ||
1084 | + } | ||
1082 | } | 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, |
@@ -39,7 +39,9 @@ func (d *SummaryEvaluationDao) GetExecutorCycleList(companyId int, executorId in | @@ -39,7 +39,9 @@ func (d *SummaryEvaluationDao) GetExecutorCycleList(companyId int, executorId in | ||
39 | summary_evaluation.cycle_id , | 39 | summary_evaluation.cycle_id , |
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
-
请 注册 或 登录 后发表评论