...
|
...
|
@@ -652,6 +652,132 @@ func (d *StaffAssessDao) MemberSummaryList(likeUserName string, companyId int, o |
|
|
return total, result, err
|
|
|
}
|
|
|
|
|
|
type PerformanceIndicatorAssess struct {
|
|
|
AssessId int `json:"assessId"` // ID
|
|
|
TargetUserId string `json:"targetUserId"` // 被评估人的id
|
|
|
TargetUserName string `json:"targetUserName"` // 被评估人的名称
|
|
|
BeginDay string `json:"beginDay"` // 评估的开始日期
|
|
|
CycleId int `json:"cycleId"` // 周期ID
|
|
|
ContentId int `json:"contentId"` // 评估内容ID
|
|
|
ContentCategory string `json:"contentCategory"` // 评估内容分类
|
|
|
ContentName string `json:"contentName"` // 评估内容名称
|
|
|
SortBy int `json:"sort_by"` // 评估内容排序
|
|
|
}
|
|
|
|
|
|
func (d *StaffAssessDao) MemberPerformanceIndicator(likeUserName string, companyId int, operatorId int, cycleId int, hrbp int, assessType string, userIds []string) ([]PerformanceIndicatorAssess, 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
|
|
|
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 staff_assess.types ='%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
|
|
|
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
|
|
|
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, assessType}
|
|
|
sqlString = fmt.Sprintf(sqlString, params...)
|
|
|
|
|
|
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,
|
|
|
staff_assess_content.id as content_id,
|
|
|
staff_assess_content.name as content_name,
|
|
|
staff_assess_content.category as content_category,
|
|
|
staff_assess_content.sort_by
|
|
|
from t_staff_assess_1
|
|
|
left join staff_assess_content on t_staff_assess_1.assess_id = staff_assess_content.staff_assess_id
|
|
|
where 1=1
|
|
|
-- AND staff_assess_content.id NOTNULL 部分脏数据
|
|
|
`
|
|
|
condition := make([]interface{}, 0)
|
|
|
if len(likeUserName) > 0 {
|
|
|
sqlString += ` and t_staff_assess_1.target_user_name like ? `
|
|
|
condition = append(condition, "%"+likeUserName+"%")
|
|
|
}
|
|
|
if len(userIds) > 0 {
|
|
|
sqlString += ` and t_staff_assess_1.target_user_id in (?) `
|
|
|
condition = append(condition, pg.In(userIds))
|
|
|
}
|
|
|
sqlString += ` order by convert_to(t_staff_assess_1.target_user_name,'GBK'), staff_assess_content.sort_by`
|
|
|
|
|
|
tx := d.transactionContext.PgTx
|
|
|
var result = make([]PerformanceIndicatorAssess, 0)
|
|
|
_, err := tx.Query(&result, sqlString, condition...)
|
|
|
|
|
|
return result, err
|
|
|
|
|
|
}
|
|
|
|
|
|
type ExportData1 struct {
|
|
|
AssessId string
|
|
|
ContentId int
|
...
|
...
|
|