...
|
...
|
@@ -3,6 +3,7 @@ package dao |
|
|
import (
|
|
|
"fmt"
|
|
|
"strconv"
|
|
|
"time"
|
|
|
|
|
|
"github.com/go-pg/pg/v10"
|
|
|
pgTransaction "github.com/linmadan/egglib-go/transaction/pg"
|
...
|
...
|
@@ -378,6 +379,129 @@ func (d *StaffAssessDao) useTStaffAssess(companyId int, cycleId int, userId int, |
|
|
return sqlstr
|
|
|
}
|
|
|
|
|
|
type SummaryAssess struct {
|
|
|
AssessId string `json:"assessId"`
|
|
|
TargetUserId string `json:"targetUserId"` // 被评估人的id
|
|
|
TargetUserName string `json:"targetUserName"` // 被评估人的名称
|
|
|
BeginDay string `json:"beginDay"` // 评估的开始日期
|
|
|
EndTime time.Time `json:"endTime"` // 评估的截止日期
|
|
|
EvaluationProjectId string `json:"evaluationProjectId"` // 项目id
|
|
|
CycleId string `json:"cycleId"` // 周期id
|
|
|
Types domain.StaffAssessType `json:"types"` // 评估类型
|
|
|
Status domain.StaffAssessStatus `json:"status"` // 评估状态
|
|
|
}
|
|
|
|
|
|
func (d *StaffAssessDao) SummaryAssess(companyId int, operatorId int, cycleId int, beginDay string, hrbp int) ([]SummaryAssess, error) {
|
|
|
sqlString := `
|
|
|
set time zone 'PRC';
|
|
|
with t_user_department as (
|
|
|
select "user".id as user_id ,jsonb_array_elements_text ("user".department_id) as depart_id from "user"
|
|
|
where "user".company_id= %d and "user".deleted_at isnull
|
|
|
),
|
|
|
t_department as (
|
|
|
select department.id::text as depart_id from department where charge_user_ids @>'[%d]'
|
|
|
and "department".deleted_at isnull
|
|
|
),
|
|
|
-- 部门主管(所有下级用户ID)
|
|
|
t_user_1 as (
|
|
|
select t_user_department.user_id::text from t_user_department
|
|
|
join t_department on t_user_department.depart_id = t_department.depart_id
|
|
|
),
|
|
|
-- 如果是HRBP
|
|
|
t_project_1 as(
|
|
|
select evaluation_project.id as project_id
|
|
|
from evaluation_project
|
|
|
where evaluation_project.cycle_id =%d
|
|
|
and evaluation_project.hr_bp = %d
|
|
|
and evaluation_project.deleted_at isnull
|
|
|
),
|
|
|
-- 如果的项目管理员
|
|
|
t_project_2 as(
|
|
|
select evaluation_project.id as project_id
|
|
|
from evaluation_project
|
|
|
where evaluation_project.cycle_id =%d
|
|
|
and evaluation_project.pmp =1
|
|
|
and evaluation_project.pmp_ids @>'["%d"]'
|
|
|
and evaluation_project.deleted_at isnull
|
|
|
),
|
|
|
-- 合并数据
|
|
|
t_project_3 as (
|
|
|
select t_project_2.project_id from t_project_2
|
|
|
union
|
|
|
select t_project_1.project_id from t_project_1
|
|
|
),
|
|
|
-- 初步过滤数据
|
|
|
t_staff_assess_0 as (
|
|
|
select
|
|
|
staff_assess.id as assess_id,
|
|
|
staff_assess.cycle_id,
|
|
|
staff_assess.target_user->>'userId' as target_user_id,
|
|
|
staff_assess.target_user->>'userName' as target_user_name,
|
|
|
to_char(staff_assess.begin_time,'YYYY-MM-DD') as begin_day,
|
|
|
staff_assess.evaluation_project_id,
|
|
|
staff_assess.types,
|
|
|
staff_assess.status,
|
|
|
staff_assess.end_time
|
|
|
from staff_assess
|
|
|
join staff_assess_task on staff_assess.staff_assess_task_id = staff_assess_task.id
|
|
|
and staff_assess_task.deleted_at isnull
|
|
|
where staff_assess.cycle_id = %d
|
|
|
and to_char(staff_assess.begin_time,'YYYY-MM-DD')='%s'
|
|
|
),
|
|
|
-- 根据查看权限过滤合并数据
|
|
|
t_staff_assess_1 as (
|
|
|
( select
|
|
|
t_staff_assess_0.assess_id,
|
|
|
t_staff_assess_0.target_user_id,
|
|
|
t_staff_assess_0.target_user_name,
|
|
|
t_staff_assess_0.begin_day,
|
|
|
t_staff_assess_0.cycle_id,
|
|
|
t_staff_assess_0.evaluation_project_id,
|
|
|
t_staff_assess_0.types,
|
|
|
t_staff_assess_0.status,
|
|
|
t_staff_assess_0.end_time
|
|
|
from t_staff_assess_0
|
|
|
join t_project_3 on t_staff_assess_0.evaluation_project_id = t_project_3.project_id
|
|
|
) union
|
|
|
( select
|
|
|
t_staff_assess_0.assess_id,
|
|
|
t_staff_assess_0.target_user_id,
|
|
|
t_staff_assess_0.target_user_name,
|
|
|
t_staff_assess_0.begin_day,
|
|
|
t_staff_assess_0.cycle_id,
|
|
|
t_staff_assess_0.evaluation_project_id,
|
|
|
t_staff_assess_0.types,
|
|
|
t_staff_assess_0.status,
|
|
|
t_staff_assess_0.end_time
|
|
|
from t_staff_assess_0
|
|
|
join t_user_1 on t_staff_assess_0.target_user_id = t_user_1.user_id
|
|
|
)
|
|
|
)
|
|
|
`
|
|
|
params := []interface{}{companyId, operatorId, cycleId, hrbp, cycleId, operatorId, cycleId, beginDay}
|
|
|
|
|
|
sqlString = fmt.Sprintf(sqlString, params...)
|
|
|
|
|
|
sqlString = sqlString + ` select
|
|
|
t_staff_assess_1.target_user_id,
|
|
|
t_staff_assess_1.target_user_name,
|
|
|
t_staff_assess_1.begin_day,
|
|
|
t_staff_assess_1.cycle_id,
|
|
|
t_staff_assess_1.assess_id,
|
|
|
t_staff_assess_1.evaluation_project_id,
|
|
|
t_staff_assess_1.types,
|
|
|
t_staff_assess_1.status,
|
|
|
t_staff_assess_1.end_time
|
|
|
from t_staff_assess_1
|
|
|
where 1=1
|
|
|
`
|
|
|
|
|
|
tx := d.transactionContext.PgTx
|
|
|
var result = make([]SummaryAssess, 0)
|
|
|
_, err := tx.Query(&result, sqlString)
|
|
|
return result, err
|
|
|
}
|
|
|
|
|
|
type ExportData1 struct {
|
|
|
AssessId string
|
|
|
ContentId int
|
...
|
...
|
|