切换导航条
此项目
正在载入...
登录
allied-creation
/
performance
·
提交
转到一个项目
GitLab
转到群组
项目
活动
文件
提交
管道
0
构建
0
图表
里程碑
问题
0
合并请求
0
成员
标记
维基
派生
网络
创建新的问题
下载为
邮件补丁
差异文件
浏览文件
作者
Your Name
2 years ago
提交
17fe0bde69a2bf00b7ef082e6c9df508cf82d906
1 个父辈
ffb18dca
新增 获取评估指标的接口
隐藏空白字符变更
内嵌
并排对比
正在显示
5 个修改的文件
包含
123 行增加
和
24 行删除
pkg/application/staff_assess/service/export_data_1.go
pkg/application/staff_assess/service/service_3.go
pkg/infrastructure/dao/staff_assess_dao.go
pkg/port/beego/controllers/staff_assess_controller.go
pkg/port/beego/routers/staff_assess_router.go
pkg/application/staff_assess/service/export_data_1.go
查看文件 @
17fe0bd
...
...
@@ -10,20 +10,20 @@ import (
// 员工绩效-综合管理-导出绩效指标
// excel表头部字段
type
h
eaderLevel
struct
{
type
H
eaderLevel
struct
{
Name
string
Filter
map
[
string
]
int
Child
[]
h
eaderLevel
Child
[]
H
eaderLevel
}
// 添加下一层级的字段
func
(
h
*
headerLevel
)
addChild
(
name
string
)
(
child
*
h
eaderLevel
)
{
func
(
h
*
HeaderLevel
)
addChild
(
name
string
)
(
child
*
H
eaderLevel
)
{
cIndex
,
ok
:=
h
.
Filter
[
name
]
if
!
ok
{
h
.
Child
=
append
(
h
.
Child
,
h
eaderLevel
{
h
.
Child
=
append
(
h
.
Child
,
H
eaderLevel
{
Name
:
name
,
Filter
:
map
[
string
]
int
{},
Child
:
[]
h
eaderLevel
{},
Child
:
[]
H
eaderLevel
{},
})
h
.
Filter
[
name
]
=
len
(
h
.
Child
)
-
1
cIndex
=
h
.
Filter
[
name
]
...
...
@@ -32,13 +32,13 @@ func (h *headerLevel) addChild(name string) (child *headerLevel) {
}
// 获取表头的所有列表名
func
(
h
*
h
eaderLevel
)
collectAllColumn
(
all
*
[][]
string
)
{
func
(
h
*
H
eaderLevel
)
collectAllColumn
(
all
*
[][]
string
)
{
for
_
,
v
:=
range
h
.
Child
{
v
.
collectColumn
(
&
v
,
all
,
nil
)
}
}
func
(
h
*
headerLevel
)
collectColumn
(
child
*
h
eaderLevel
,
columns
*
[][]
string
,
column
*
[]
string
)
{
func
(
h
*
HeaderLevel
)
collectColumn
(
child
*
H
eaderLevel
,
columns
*
[][]
string
,
column
*
[]
string
)
{
if
column
==
nil
{
column
=
&
[]
string
{}
}
...
...
@@ -60,7 +60,7 @@ type exportData struct {
userName
[]
string
//员工的名称列表 ,对应excel文件的多个sheet
usrIdMap
map
[
string
]
string
userDayMap
map
[
string
][]
string
//每个员工对应的日期列表 key=员工名称 value= 日期列表
tableHeader
map
[
string
]
*
h
eaderLevel
//每个员工数据表格对应表头 key=员工名称
tableHeader
map
[
string
]
*
H
eaderLevel
//每个员工数据表格对应表头 key=员工名称
data
map
[
string
]
*
strings
.
Builder
//每个员工表头对应的评估填写的数据 key=员工名称+日期+表头
data2
map
[
string
]
string
//每个员工评估项的标准描述
data3
map
[
string
]
string
//每个员工评估项的标准权重
...
...
@@ -71,7 +71,7 @@ func newExportData() *exportData {
userName
:
nil
,
usrIdMap
:
map
[
string
]
string
{},
userDayMap
:
map
[
string
][]
string
{},
tableHeader
:
map
[
string
]
*
h
eaderLevel
{},
tableHeader
:
map
[
string
]
*
H
eaderLevel
{},
data
:
map
[
string
]
*
strings
.
Builder
{},
data2
:
map
[
string
]
string
{},
data3
:
map
[
string
]
string
{},
...
...
@@ -93,10 +93,10 @@ func (e *exportData) setCategoryNameList(param []dao.ContentCategoryName) {
}
userName
:=
e
.
usrIdMap
[
v
.
TargetUserId
]
if
_
,
ok
:=
e
.
tableHeader
[
userName
];
!
ok
{
e
.
tableHeader
[
userName
]
=
&
h
eaderLevel
{
e
.
tableHeader
[
userName
]
=
&
H
eaderLevel
{
Name
:
"个人绩效评估等级统计表"
,
Filter
:
map
[
string
]
int
{},
Child
:
[]
h
eaderLevel
{},
Child
:
[]
H
eaderLevel
{},
}
}
child
:=
e
.
tableHeader
[
userName
]
.
addChild
(
v
.
Category
)
//第一级,"分类"
...
...
pkg/application/staff_assess/service/service_3.go
查看文件 @
17fe0bd
...
...
@@ -553,7 +553,7 @@ func (srv StaffAssessServeice) AnalysisData(param *query.ListAssessContentCycleD
return
&
result
,
nil
}
// 员工绩效-综合管理-导出绩效
指标
// 员工绩效-综合管理-导出绩效
-个人
func
(
srv
StaffAssessServeice
)
ExportUserAssess2
(
param
*
query
.
SummaryCommand
)
(
*
excelize
.
File
,
error
)
{
transactionContext
,
err
:=
factory
.
CreateTransactionContext
(
nil
)
if
err
!=
nil
{
...
...
@@ -661,3 +661,49 @@ func (srv StaffAssessServeice) ExportUserAssess2(param *query.SummaryCommand) (*
xlsxFile
.
DeleteSheet
(
firstSheetName
)
return
xlsxFile
,
nil
}
// 获取所有的评估的指标
func
(
srv
StaffAssessServeice
)
QueryPerformanceIndicator
(
param
*
query
.
ListAssessContentCycleDay
)
(
map
[
string
]
interface
{},
error
)
{
transactionContext
,
err
:=
factory
.
CreateTransactionContext
(
nil
)
if
err
!=
nil
{
return
nil
,
application
.
ThrowError
(
application
.
TRANSACTION_ERROR
,
err
.
Error
())
}
if
err
:=
transactionContext
.
StartTransaction
();
err
!=
nil
{
return
nil
,
application
.
ThrowError
(
application
.
TRANSACTION_ERROR
,
err
.
Error
())
}
defer
func
()
{
_
=
transactionContext
.
RollbackTransaction
()
}()
hrbp
,
err
:=
srv
.
getHRBP
(
transactionContext
,
param
.
CompanyId
,
param
.
OperaterId
)
if
err
!=
nil
{
return
nil
,
application
.
ThrowError
(
application
.
INTERNAL_SERVER_ERROR
,
err
.
Error
())
}
assessDao
:=
dao
.
NewStaffAssessDao
(
map
[
string
]
interface
{}{
"transactionContext"
:
transactionContext
,
})
contentItems
,
err
:=
assessDao
.
SearchUserAssessContentItem
(
dao
.
SearchConditin1
{
CompanyId
:
param
.
CompanyId
,
CycleId
:
param
.
CycleId
,
BeginDay
:
param
.
BeginDay
,
OperaterId
:
param
.
OperaterId
,
Hrbp
:
hrbp
,
})
if
err
!=
nil
{
return
nil
,
application
.
ThrowError
(
application
.
INTERNAL_SERVER_ERROR
,
"统计总数"
+
err
.
Error
())
}
if
err
:=
transactionContext
.
CommitTransaction
();
err
!=
nil
{
return
nil
,
application
.
ThrowError
(
application
.
INTERNAL_SERVER_ERROR
,
err
.
Error
())
}
headerList
:=
HeaderLevel
{}
for
_
,
v
:=
range
contentItems
{
child
:=
headerList
.
addChild
(
v
.
Category
)
child
.
addChild
(
v
.
Name
)
}
result
:=
map
[
string
]
interface
{}{
"headerList"
:
headerList
.
Child
,
}
return
result
,
nil
}
...
...
pkg/infrastructure/dao/staff_assess_dao.go
查看文件 @
17fe0bd
...
...
@@ -260,6 +260,40 @@ func (d *StaffAssessDao) SearchUserAssessContent(param SearchConditin1) ([]UserA
return
result
,
err
}
type
UserAssessContentItem
struct
{
Category
string
`pg:"category"`
//指标分类
Name
string
`pg:"name"`
//指标名称
}
// 项目管理-成员列表 根据周期的id和日期获取员工的评估指标
// companyId int 公司id
// cycleId int, 评估周期id
// userId int, 用户id,谁要查看数据
// beginDay string, 周期中执行项目的时间
// hrbp 是否搜索HRBP角色的用户可以查看,1:是;-1:否
// limit int, 分页条数 不需要
// offset int 分页偏移 不需要
func
(
d
*
StaffAssessDao
)
SearchUserAssessContentItem
(
param
SearchConditin1
)
([]
UserAssessContentItem
,
error
)
{
param
.
Offset
=
0
param
.
Limit
=
10000
sqlStr
:=
`select
staff_assess_content.category,
staff_assess_content."name"
from staff_assess_content
join t_staff_assess_1 on staff_assess_content.staff_assess_id = t_staff_assess_1.assess_id
group by staff_assess_content.category,
staff_assess_content."name"
`
//获取前置sql语句
sqlStr0
:=
d
.
useTStaffAssess
(
param
.
CompanyId
,
param
.
CycleId
,
param
.
OperaterId
,
param
.
BeginDay
,
param
.
Hrbp
,
param
.
Limit
,
param
.
Offset
,
string
(
domain
.
AssessSelf
))
sqlStr
=
sqlStr0
+
sqlStr
tx
:=
d
.
transactionContext
.
PgTx
result
:=
[]
UserAssessContentItem
{}
_
,
err
:=
tx
.
Query
(
&
result
,
sqlStr
)
return
result
,
err
}
// 项目管理-成员列表 根据周期的id和日期获取员工填写的评估内容,数量统计
// companyId int 公司id
// cycleId int, 评估周期id
...
...
@@ -1068,8 +1102,8 @@ func (d *StaffAssessDao) SearchContentCategoryName(companyId int, cycleId int, u
staff_assess_content.category,
staff_assess_content."name" ,
staff_assess_content.weight ,
staff_assess.cycle_id ,
staff_assess.cycle_name,
t_staff_assess_1.cycle_id ,
t_staff_assess_1.cycle_name,
t_staff_assess_1.target_user_id,
t_staff_assess_1.target_user_name,
sum(
...
...
@@ -1079,14 +1113,14 @@ func (d *StaffAssessDao) SearchContentCategoryName(companyId int, cycleId int, u
ELSE 1
END) as cnt
from staff_assess_content
join t_staff_assess_1 on staff_assess_content.staff_assess_id = t_staff_assess_1.id
join t_staff_assess_1 on staff_assess_content.staff_assess_id = t_staff_assess_1.
assess_
id
group by staff_assess_content.category,
staff_assess_content."name" ,
staff_assess.cycle_id ,
staff_assess.cycle_name,
t_staff_assess_1.cycle_id ,
t_staff_assess_1.cycle_name,
staff_assess_content.weight ,
target_user_id,target_user_name
order by cnt desc,user_id
order by cnt desc,
target_
user_id
`
sqlStr0
:=
d
.
useTStaffAssess
(
companyId
,
cycleId
,
userId
,
""
,
hrbp
,
0
,
5000
,
string
(
domain
.
AssessSelf
))
sqlStr
=
sqlStr0
+
sqlStr
...
...
pkg/port/beego/controllers/staff_assess_controller.go
查看文件 @
17fe0bd
...
...
@@ -322,6 +322,23 @@ func (c *StaffAssessController) ListAssessContentCycleDay() {
c
.
Response
(
data
,
err
)
}
// 根据周期里的考核日期,获取员工填写评估内容列表的评估项
func
(
c
*
StaffAssessController
)
ListAssessContentIndicator
()
{
srv
:=
service
.
NewStaffAssessServeice
()
paramReq
:=
&
query
.
ListAssessContentCycleDay
{}
err
:=
c
.
BindJSON
(
paramReq
)
if
err
!=
nil
{
e
:=
application
.
ThrowError
(
application
.
ARG_ERROR
,
"json 解析错误"
+
err
.
Error
())
c
.
Response
(
nil
,
e
)
return
}
userReq
:=
middlewares
.
GetUser
(
c
.
Ctx
)
paramReq
.
CompanyId
=
int
(
userReq
.
CompanyId
)
paramReq
.
OperaterId
=
int
(
userReq
.
UserId
)
data
,
err
:=
srv
.
QueryPerformanceIndicator
(
paramReq
)
c
.
Response
(
data
,
err
)
}
// 根据周期里的考核日期,获取员工填写评估内容列表,导出为xlsx文件
func
(
c
*
StaffAssessController
)
ExportAssessContentCycleDay
()
{
srv
:=
service
.
NewStaffAssessServeice
()
...
...
pkg/port/beego/routers/staff_assess_router.go
查看文件 @
17fe0bd
...
...
@@ -13,12 +13,14 @@ func init() {
//web.NSCtrlPost("/search/me", (*controllers.StaffAssessController).SearchAssessTaskMe), //获取我参与过的评估项目列表
//web.NSCtrlPost("/desc/me", (*controllers.StaffAssessController).AssessTaskMeDesc), //获取我的项目评估进度描述
//web.NSCtrlPost("/", (*controllers.StaffAssessController).CreateStaffAssessTask), //创建员工的评估任务
web
.
NSCtrlGet
(
"/cycle"
,
(
*
controllers
.
StaffAssessController
)
.
ListAssessCycle
),
//获取周期列表
web
.
NSCtrlPost
(
"/cycle/day"
,
(
*
controllers
.
StaffAssessController
)
.
ListAssessCycleDay
),
//获取周期中的考核日期
web
.
NSCtrlPost
(
"/cycle/day/content"
,
(
*
controllers
.
StaffAssessController
)
.
ListAssessContentCycleDay
),
//根据周期里的考核日期,获取员工填写评估内容列表
web
.
NSCtrlPost
(
"/cycle/day/content/export"
,
(
*
controllers
.
StaffAssessController
)
.
ExportAssessContentCycleDay
),
//根据周期里的考核日期,导出员工填写评估内容列表
web
.
NSCtrlPost
(
"/cycle/day/analysis"
,
(
*
controllers
.
StaffAssessController
)
.
AnalysisData
),
//员工绩效-项目管理-矩阵分析
web
.
NSCtrlPost
(
"/cycle/day/content/export2"
,
(
*
controllers
.
StaffAssessController
)
.
ExportUserAssess2
),
//员工绩效-综合管理-导出绩效-个人
web
.
NSCtrlGet
(
"/cycle"
,
(
*
controllers
.
StaffAssessController
)
.
ListAssessCycle
),
//获取周期列表
web
.
NSCtrlPost
(
"/cycle/day"
,
(
*
controllers
.
StaffAssessController
)
.
ListAssessCycleDay
),
//获取周期中的考核日期
web
.
NSCtrlPost
(
"/cycle/day/content"
,
(
*
controllers
.
StaffAssessController
)
.
ListAssessContentCycleDay
),
//根据周期里的考核日期,获取员工填写评估内容列表
web
.
NSCtrlPost
(
"/cycle/day/content/indicator"
,
(
*
controllers
.
StaffAssessController
)
.
ListAssessContentIndicator
),
//根据周期里的考核日期,获取员工填写评估的指标项
web
.
NSCtrlPost
(
"/cycle/day/content/export"
,
(
*
controllers
.
StaffAssessController
)
.
ExportAssessContentCycleDay
),
//根据周期里的考核日期,导出员工填写评估内容列表
web
.
NSCtrlPost
(
"/cycle/day/analysis"
,
(
*
controllers
.
StaffAssessController
)
.
AnalysisData
),
//员工绩效-项目管理-矩阵分析
web
.
NSCtrlPost
(
"/cycle/day/content/export2"
,
(
*
controllers
.
StaffAssessController
)
.
ExportUserAssess2
),
//员工绩效-综合管理-导出绩效-个人
)
assessNS
:=
web
.
NewNamespace
(
"/v1/staff-assess"
,
...
...
请
注册
或
登录
后发表评论