1
|
package dao
|
1
|
package dao
|
2
|
|
2
|
|
3
|
import (
|
3
|
import (
|
|
|
4
|
+ "fmt"
|
4
|
"strconv"
|
5
|
"strconv"
|
5
|
|
6
|
|
6
|
"github.com/go-pg/pg/v10"
|
7
|
"github.com/go-pg/pg/v10"
|
|
@@ -152,149 +153,140 @@ func (d *StaffAssessDao) AllAssessCycleDayList(companyId int, cycleId int) ([]As |
|
@@ -152,149 +153,140 @@ func (d *StaffAssessDao) AllAssessCycleDayList(companyId int, cycleId int) ([]As |
152
|
return result, err
|
153
|
return result, err
|
153
|
}
|
154
|
}
|
154
|
|
155
|
|
155
|
-//根据周期的id和日期获取员工填写的评估内容
|
|
|
156
|
-
|
|
|
157
|
-/**
|
|
|
158
|
-with assess_list as(
|
|
|
159
|
-select
|
|
|
160
|
- staff_assess.id as staff_assess_id,
|
|
|
161
|
- staff_assess.target_user ->>'userId' as target_user_id,
|
|
|
162
|
- staff_assess.target_user ->>'userName' as target_user_name,
|
|
|
163
|
- staff_assess.evaluation_project_id,
|
|
|
164
|
- to_char( staff_assess.begin_time,'YYYY-MM-DD') as begin_day
|
|
|
165
|
-from staff_assess
|
|
|
166
|
-where staff_assess.cycle_id = 1594521861704650752
|
|
|
167
|
-and to_char( staff_assess.begin_time,'YYYY-MM-DD') ='2022-11-22'
|
|
|
168
|
-and staff_assess."types" ='self'
|
|
|
169
|
-limit 5 offset 0
|
|
|
170
|
-)
|
|
|
171
|
-select
|
|
|
172
|
-assess_list.target_user_id,
|
|
|
173
|
-assess_list.target_user_name,
|
|
|
174
|
-assess_list.begin_day,
|
|
|
175
|
-assess_list.evaluation_project_id,
|
|
|
176
|
-staff_assess_content.value ,
|
|
|
177
|
-staff_assess_content.sort_by ,
|
|
|
178
|
-staff_assess_content.category ,
|
|
|
179
|
-staff_assess_content."name" ,
|
|
|
180
|
-staff_assess_content.weight
|
|
|
181
|
-from staff_assess_content
|
|
|
182
|
-right join assess_list on assess_list.staff_assess_id = staff_assess_content.staff_assess_id
|
|
|
183
|
-
|
|
|
184
|
-**/
|
|
|
185
|
-
|
|
|
186
|
//获取员工填写评估内容
|
156
|
//获取员工填写评估内容
|
187
|
type UserAssessContent struct {
|
157
|
type UserAssessContent struct {
|
188
|
- TargetUserId string //被评估人的id
|
|
|
189
|
- TargetUserName string //被评估人的名称
|
|
|
190
|
- BeginDay string //评估的日期
|
|
|
191
|
- EvaluationProjectId string //项目id
|
|
|
192
|
- Value string //评估填写的值
|
|
|
193
|
- SortBy int //评估项顺序
|
|
|
194
|
- Category string //分类
|
|
|
195
|
- Name string //名称
|
|
|
196
|
- Weight int //权重
|
158
|
+ TargetUserId string `json:"targetUserId"` //被评估人的id
|
|
|
159
|
+ TargetUserName string `json:"targetUserName"` //被评估人的名称
|
|
|
160
|
+ BeginDay string `json:"beginDay"` //评估的日期
|
|
|
161
|
+ EvaluationProjectId string `json:"evaluationProjectId"` //项目id
|
|
|
162
|
+ Value string `json:"value"` //评估填写的值
|
|
|
163
|
+ SortBy int `json:"sortBy"` //评估项顺序
|
|
|
164
|
+ Category string `json:"category"` //评估项分类
|
|
|
165
|
+ ContentName string `json:"contentName"` //评估项名称
|
|
|
166
|
+ Weight int `json:"weight"` //权重
|
197
|
}
|
167
|
}
|
198
|
|
168
|
|
199
|
type SearchConditin1 struct {
|
169
|
type SearchConditin1 struct {
|
|
|
170
|
+ CompanyId int //公司id
|
200
|
CycleId int //周期id
|
171
|
CycleId int //周期id
|
201
|
BeginDay string //评估的日期
|
172
|
BeginDay string //评估的日期
|
202
|
- UserName string //被评估人的名称
|
173
|
+ TargetUserName string //被评估人的名称
|
203
|
Limit int //分页
|
174
|
Limit int //分页
|
204
|
Offset int //分页
|
175
|
Offset int //分页
|
205
|
- DepartmentId []int //
|
|
|
206
|
OperaterId int //用户的id是谁在搜索数据
|
176
|
OperaterId int //用户的id是谁在搜索数据
|
207
|
- IsHrBp bool //
|
177
|
+ Hrbp int //
|
208
|
}
|
178
|
}
|
209
|
|
179
|
|
210
|
//根据周期的id和日期获取员工填写的评估内容
|
180
|
//根据周期的id和日期获取员工填写的评估内容
|
211
|
-//cycleId 周期id
|
|
|
212
|
-//beginDay 评估任务的生成日期
|
|
|
213
|
-//userName 被评估的员工名称,
|
|
|
214
|
-// limit offset 分页搜索
|
181
|
+//companyId int 公司id
|
|
|
182
|
+//cycleId int, 评估周期id
|
|
|
183
|
+//userId int, 用户id,谁要查看数据
|
|
|
184
|
+//beginDay string, 周期中执行项目的时间
|
|
|
185
|
+//hrbp 是否搜索HRBP角色的用户可以查看,1:是;-1:否
|
|
|
186
|
+//limit int, 分页条数
|
|
|
187
|
+//offset int 分页偏移
|
215
|
func (d *StaffAssessDao) SearchUserAssessContent(param SearchConditin1) ([]UserAssessContent, error) {
|
188
|
func (d *StaffAssessDao) SearchUserAssessContent(param SearchConditin1) ([]UserAssessContent, error) {
|
216
|
- sqlStr := `with assess_list as(
|
|
|
217
|
- select
|
|
|
218
|
- staff_assess.id as staff_assess_id,
|
|
|
219
|
- staff_assess.target_user ->>'userId' as target_user_id,
|
|
|
220
|
- staff_assess.target_user ->>'userName' as target_user_name,
|
|
|
221
|
- staff_assess.evaluation_project_id,
|
|
|
222
|
- to_char( staff_assess.begin_time,'YYYY-MM-DD') as begin_day
|
|
|
223
|
- from staff_assess
|
|
|
224
|
- where staff_assess.cycle_id = ?
|
|
|
225
|
- and to_char( staff_assess.begin_time,'YYYY-MM-DD') ='?'
|
|
|
226
|
- and staff_assess."types" ='self'
|
|
|
227
|
- and staff_assess.target_user ->>'userName' like '?'
|
|
|
228
|
- limit ? offset ?
|
|
|
229
|
- )
|
|
|
230
|
- select
|
|
|
231
|
- assess_list.target_user_id,
|
|
|
232
|
- assess_list.target_user_name,
|
|
|
233
|
- assess_list.begin_day,
|
|
|
234
|
- assess_list.evaluation_project_id,
|
|
|
235
|
- staff_assess_content.value ,
|
|
|
236
|
- staff_assess_content.sort_by ,
|
|
|
237
|
- staff_assess_content.category ,
|
|
|
238
|
- staff_assess_content."name" ,
|
189
|
+ sqlStr := ` select
|
|
|
190
|
+ t_staff_assess_1.target_user_id,t_staff_assess_1.target_user_name,t_staff_assess_1.begin_day,
|
|
|
191
|
+ staff_assess_content.value ,staff_assess_content.sort_by ,
|
|
|
192
|
+ staff_assess_content.category ,staff_assess_content."name" as content_name ,
|
239
|
staff_assess_content.weight
|
193
|
staff_assess_content.weight
|
240
|
- from staff_assess_content
|
|
|
241
|
- right join assess_list on assess_list.staff_assess_id = staff_assess_content.staff_assess_id
|
|
|
242
|
- order by convert_to(assess_list.target_user_name,'GBK') `
|
|
|
243
|
-
|
|
|
244
|
- tx := d.transactionContext.PgTx
|
|
|
245
|
- condition := []interface{}{
|
|
|
246
|
- param.CycleId, param.BeginDay, "%" + param.UserName + "%", param.Limit, param.Offset,
|
194
|
+ from t_staff_assess_1
|
|
|
195
|
+ left join staff_assess_content on t_staff_assess_1.assess_id = staff_assess_content.staff_assess_id
|
|
|
196
|
+ `
|
|
|
197
|
+ condition := []interface{}{}
|
|
|
198
|
+ if len(param.TargetUserName) > 0 {
|
|
|
199
|
+ sqlStr += ` where t_staff_assess_1.target_user_name like ? `
|
|
|
200
|
+ condition = append(condition, param.TargetUserName)
|
247
|
}
|
201
|
}
|
|
|
202
|
+ //加入排序
|
|
|
203
|
+ sqlStr += ` order by convert_to(t_staff_assess_1.target_user_name,'GBK'),staff_assess_content.sort_by `
|
|
|
204
|
+ //获取前置sql语句
|
|
|
205
|
+ sqlStr0 := d.useTStaffAssess(param.CompanyId, param.CycleId, param.OperaterId, param.BeginDay, param.Hrbp, param.Limit, param.Offset)
|
|
|
206
|
+ sqlStr = sqlStr0 + sqlStr
|
|
|
207
|
+ tx := d.transactionContext.PgTx
|
248
|
var result []UserAssessContent
|
208
|
var result []UserAssessContent
|
249
|
_, err := tx.QueryOne(&result, sqlStr, condition...)
|
209
|
_, err := tx.QueryOne(&result, sqlStr, condition...)
|
250
|
return result, err
|
210
|
return result, err
|
251
|
}
|
211
|
}
|
252
|
|
212
|
|
253
|
-// 根据用户的查看权限 合并用户
|
|
|
254
|
-// with t_user_department as (
|
|
|
255
|
-// select "user".id as user_id ,jsonb_array_elements_text ("user".department_id) as depart_id from "user"
|
|
|
256
|
-// where "user".company_id= 526
|
|
|
257
|
-// ),
|
|
|
258
|
-// t_department as (
|
|
|
259
|
-// select department.id::text as depart_id from department where charge_user_ids @>'[3330208201102336]'
|
|
|
260
|
-// ),
|
|
|
261
|
-// -- 如果是部门管理员 获取用户列表
|
|
|
262
|
-// t_user_1 as (
|
|
|
263
|
-// select t_user_department.user_id from t_user_department
|
|
|
264
|
-// join t_department on t_user_department.depart_id = t_department.depart_id
|
|
|
265
|
-// ),
|
|
|
266
|
-// -- 如果是hrbp
|
|
|
267
|
-// t_user_2 as(
|
|
|
268
|
-// select jsonb_array_elements_text (evaluation_project.recipients) as user_id
|
|
|
269
|
-// from evaluation_project
|
|
|
270
|
-// where evaluation_project.cycle_id =1592787960795762688
|
|
|
271
|
-// and evaluation_project.hr_bp = 1
|
|
|
272
|
-// ),
|
|
|
273
|
-// -- 如果是项目管理员
|
|
|
274
|
-// t_user_3 as(
|
|
|
275
|
-// select jsonb_array_elements_text (evaluation_project.recipients) as user_id
|
|
|
276
|
-// from evaluation_project
|
|
|
277
|
-// where evaluation_project.cycle_id =1592787960795762688
|
|
|
278
|
-// and evaluation_project.pmp =1
|
|
|
279
|
-// and evaluation_project.pmp_ids @>'[3330208201102336]'
|
|
|
280
|
-// ),
|
|
|
281
|
-// -- 合并用户
|
|
|
282
|
-// t_user_all as(
|
|
|
283
|
-// select t_user_1.user_id::text from t_user_1
|
|
|
284
|
-// union
|
|
|
285
|
-// select t_user_2.user_id::text from t_user_2
|
|
|
286
|
-// union
|
|
|
287
|
-// select t_user_3.user_id::text from t_user_3
|
|
|
288
|
-// ),
|
|
|
289
|
-// -- 根据用户提取评估列表
|
|
|
290
|
-// t_staff_assess as(
|
|
|
291
|
-// select staff_assess.id as assess_id,
|
|
|
292
|
-// staff_assess.target_user->>'userId' as user_id,
|
|
|
293
|
-// staff_assess.target_user->>'userName' as user_name
|
|
|
294
|
-// from staff_assess
|
|
|
295
|
-// join t_user_all on staff_assess.target_user->>'userId'= t_user_all.user_id
|
|
|
296
|
-// where staff_assess.cycle_id = 1592787960795762688
|
|
|
297
|
-// and to_char(staff_assess.begin_time,'YYYY-MM-DD')='2022-11-24'
|
|
|
298
|
-// and staff_assess."types" ='self'
|
|
|
299
|
-// limit 1 offset 0
|
|
|
300
|
-// ) |
213
|
+//生成的sql 根据用户的查看权限 ,获取可查看的评估任务,
|
|
|
214
|
+//companyId int 公司id
|
|
|
215
|
+//cycleId int, 评估周期id
|
|
|
216
|
+//userId int, 用户id,谁要查看数据
|
|
|
217
|
+//beginDay string, 周期中执行项目的时间
|
|
|
218
|
+//hrbp 是否搜索HRBP角色的用户可以查看,1:是;-1:否
|
|
|
219
|
+//limit int, 分页条数
|
|
|
220
|
+//offset int 分页偏移
|
|
|
221
|
+func (d *StaffAssessDao) useTStaffAssess(companyId int, cycleId int, userId int, beginDay string, hrbp int, limit int, offset int) string {
|
|
|
222
|
+ sqlstr := `
|
|
|
223
|
+ with t_user_department as (
|
|
|
224
|
+ select "user".id as user_id ,jsonb_array_elements_text ("user".department_id) as depart_id from "user"
|
|
|
225
|
+ where "user".company_id= %d
|
|
|
226
|
+ ),
|
|
|
227
|
+ t_department as (
|
|
|
228
|
+ select department.id::text as depart_id from department where charge_user_ids @>'[%d]'
|
|
|
229
|
+ ),
|
|
|
230
|
+ -- 如果是部门管理员 获取用户列表
|
|
|
231
|
+ t_user_1 as (
|
|
|
232
|
+ select t_user_department.user_id::text from t_user_department
|
|
|
233
|
+ join t_department on t_user_department.depart_id = t_department.depart_id
|
|
|
234
|
+ ),
|
|
|
235
|
+ -- 如果是hrbp
|
|
|
236
|
+ t_project_1 as(
|
|
|
237
|
+ select evaluation_project.id as project_id
|
|
|
238
|
+ from evaluation_project
|
|
|
239
|
+ where evaluation_project.cycle_id =%d
|
|
|
240
|
+ and evaluation_project.hr_bp = %d
|
|
|
241
|
+ ),
|
|
|
242
|
+ -- 如果是项目管理员
|
|
|
243
|
+ t_project_2 as(
|
|
|
244
|
+ select evaluation_project.id as project_id
|
|
|
245
|
+ from evaluation_project
|
|
|
246
|
+ where evaluation_project.cycle_id =%d
|
|
|
247
|
+ and evaluation_project.pmp =1
|
|
|
248
|
+ and evaluation_project.pmp_ids @>'["%d"]'
|
|
|
249
|
+ ),
|
|
|
250
|
+ -- 合并数据
|
|
|
251
|
+ t_project_3 as (
|
|
|
252
|
+ select t_project_2.project_id from t_project_2
|
|
|
253
|
+ union
|
|
|
254
|
+ select t_project_1.project_id from t_project_1
|
|
|
255
|
+ ),
|
|
|
256
|
+ -- 初步过滤评估列表数据
|
|
|
257
|
+ t_staff_assess_0 as (
|
|
|
258
|
+ select staff_assess.id as assess_id,
|
|
|
259
|
+ staff_assess.target_user->>'userId' as target_user_id,
|
|
|
260
|
+ staff_assess.target_user->>'userName' as target_user_name,
|
|
|
261
|
+ to_char(staff_assess.begin_time,'YYYY-MM-DD') as begin_day,
|
|
|
262
|
+ staff_assess.evaluation_project_id
|
|
|
263
|
+ from staff_assess
|
|
|
264
|
+ where staff_assess.cycle_id = %d
|
|
|
265
|
+ and to_char(staff_assess.begin_time,'YYYY-MM-DD')='%s'
|
|
|
266
|
+ and staff_assess."types" ='self'
|
|
|
267
|
+ ),
|
|
|
268
|
+ -- 合并根据权限过滤后的数据
|
|
|
269
|
+ t_staff_assess_1 as (
|
|
|
270
|
+ (select t_staff_assess_0.assess_id,
|
|
|
271
|
+ t_staff_assess_0.target_user_id,
|
|
|
272
|
+ t_staff_assess_0.target_user_name,
|
|
|
273
|
+ t_staff_assess_0.begin_day
|
|
|
274
|
+ from t_staff_assess_0
|
|
|
275
|
+ join t_project_3 on t_staff_assess_0.evaluation_project_id = t_project_3.project_id
|
|
|
276
|
+ ) union (select t_staff_assess_0.assess_id,
|
|
|
277
|
+ t_staff_assess_0.target_user_id,
|
|
|
278
|
+ t_staff_assess_0.target_user_name,
|
|
|
279
|
+ t_staff_assess_0.begin_day
|
|
|
280
|
+ from t_staff_assess_0
|
|
|
281
|
+ join t_user_1 on t_staff_assess_0.target_user_id=t_user_1.user_id
|
|
|
282
|
+ )
|
|
|
283
|
+ limit %d offset %d
|
|
|
284
|
+ )
|
|
|
285
|
+ `
|
|
|
286
|
+ params := []interface{}{
|
|
|
287
|
+ companyId, userId, cycleId, hrbp, cycleId, userId, cycleId, beginDay, limit, offset,
|
|
|
288
|
+ }
|
|
|
289
|
+
|
|
|
290
|
+ sqlstr = fmt.Sprintf(sqlstr, params...)
|
|
|
291
|
+ return sqlstr
|
|
|
292
|
+} |