作者 tangxvhui

调整一些逻辑

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())
@@ -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位小数
@@ -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,
@@ -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 +}
  1 +-- 调整旧数据
  2 +WITH t1 AS (
  3 + SELECT
  4 + evaluation_cycle.id AS cycle_id
  5 + FROM
  6 + evaluation_cycle
  7 + WHERE
  8 + deleted_at IS NOT NULL)
  9 +UPDATE
  10 + summary_evaluation
  11 +SET
  12 + deleted_at = now()
  13 +FROM
  14 + t1
  15 +WHERE
  16 + summary_evaluation.cycle_id = t1.cycle_id