切换导航条
此项目
正在载入...
登录
allied-creation
/
performance
·
提交
转到一个项目
GitLab
转到群组
项目
活动
文件
提交
管道
0
构建
0
图表
里程碑
问题
0
合并请求
0
成员
标记
维基
派生
网络
创建新的问题
下载为
邮件补丁
差异文件
浏览文件
作者
郑周
2 years ago
提交
c49c55c937219022847917db69964378c624db1a
1 个父辈
93fa434a
1. 评估内容中,新增字段 项目主导人ID字段
2. excel文件解析 项目主导人名称->ID
隐藏空白字符变更
内嵌
并排对比
正在显示
5 个修改的文件
包含
91 行增加
和
14 行删除
pkg/domain/evaluation_template.go
pkg/domain/performance_application_form.go
pkg/infrastructure/repository/pg_user_repository.go
pkg/port/beego/controllers/import_controller.go
templates/tpl_template_question.xlsx
pkg/domain/evaluation_template.go
查看文件 @
c49c55c
...
...
@@ -41,7 +41,7 @@ type NodeContent struct {
PromptText
string
`json:"promptText" comment:"提示项正文"`
EntryItems
[]
*
EntryItem
`json:"entryItems" comment:"填写项"`
Required
int
`json:"required" comment:"必填项"`
LeaderId
int64
`json:"leaderId,string" comment:"项目主导人
"`
EvaluatorId
int64
`json:"evaluatorId,string" comment:"项目评估人ID ( 0=无评估人、-1=HRBP )
"`
}
// LinkNode 评估流程、环节
...
...
pkg/domain/performance_application_form.go
查看文件 @
c49c55c
...
...
@@ -6,26 +6,28 @@ import (
)
type
PerformanceApplicationForm
struct
{
DimensionName
string
//维度名称
ModuleName
string
//模块名称
Weight
string
//权重
Standard
string
//标准
Task
string
//任务、指标
Definition
string
//定义
DimensionName
string
// 维度名称
ModuleName
string
// 模块名称
Weight
string
// 权重
Standard
string
// 标准
Task
string
// 任务、指标
Definition
string
// 定义
Required
string
// 是否必填 是 否
Evaluator
string
// 项目评估人
}
type
PerformanceDimension
struct
{
Name
string
`json:"name"`
//维度名称
PerformanceModule
[]
*
PerformanceModule
`json:"performanceModule"`
//模块
Name
string
`json:"name"`
// 维度名称
PerformanceModule
[]
*
PerformanceModule
`json:"performanceModule"`
// 模块
}
type
PerformanceModule
struct
{
ModuleName
string
`json:"moduleName"`
//模块名称
Weight
string
`json:"weight"`
//权重
Standard
string
`json:"standard"`
//标准(结构化的成果描述)
Target
[]
*
PerformanceTarget
`json:"performanceTarget"`
//任务\指标
ModuleName
string
`json:"moduleName"`
// 模块名称
Weight
string
`json:"weight"`
// 权重
Standard
string
`json:"standard"`
// 标准(结构化的成果描述)
Target
[]
*
PerformanceTarget
`json:"performanceTarget"`
// 任务\指标
Required
int
`json:"required"`
// 是否必填
Evaluator
string
`json:"evaluator"`
// 项目评估人
}
type
PerformanceTarget
struct
{
...
...
@@ -35,7 +37,7 @@ type PerformanceTarget struct {
func
LoadPerformanceDimensions
(
rows
[][]
string
)
([]
*
PerformanceDimension
,
error
)
{
formRows
:=
make
([]
*
PerformanceApplicationForm
,
0
)
var
dimensionName
,
moduleName
,
taskName
,
weightName
,
standardName
string
var
dimensionName
,
moduleName
,
taskName
,
weightName
,
standardName
,
evaluator
string
required
:=
"是"
for
key
,
item
:=
range
rows
{
if
key
<
3
{
...
...
@@ -88,6 +90,13 @@ func LoadPerformanceDimensions(rows [][]string) ([]*PerformanceDimension, error)
required
=
strings
.
TrimSpace
(
item
[
9
])
}
form
.
Required
=
required
// 项目评估人
if
len
(
item
)
>
10
&&
item
[
10
]
!=
""
{
evaluator
=
strings
.
TrimSpace
(
item
[
10
])
}
form
.
Evaluator
=
evaluator
formRows
=
append
(
formRows
,
form
)
}
dimensions
:=
make
([]
*
PerformanceDimension
,
0
)
...
...
@@ -156,12 +165,17 @@ func loadPerformanceModule(forms []*PerformanceApplicationForm) ([]*PerformanceM
if
err
!=
nil
{
return
modules
,
err
}
evaluator
,
err
:=
getEvaluator
(
item
)
if
err
!=
nil
{
return
modules
,
err
}
module
:=
&
PerformanceModule
{
ModuleName
:
moduleName
,
Weight
:
weightName
,
Standard
:
standardName
,
Target
:
tasks
,
Required
:
required
,
Evaluator
:
evaluator
,
}
modules
=
append
(
modules
,
module
)
}
...
...
@@ -235,6 +249,23 @@ func getRequired(items []*PerformanceApplicationForm) (int, error) {
}
}
// 获取项目评估人
func
getEvaluator
(
items
[]
*
PerformanceApplicationForm
)
(
string
,
error
)
{
if
len
(
items
)
<=
0
{
return
""
,
nil
}
var
prevName
string
for
_
,
item
:=
range
items
{
if
prevName
==
""
{
prevName
=
item
.
Evaluator
}
if
prevName
!=
item
.
Evaluator
{
return
""
,
errors
.
New
(
item
.
ModuleName
+
" 对应的项目评估人填不一致"
)
}
}
return
prevName
,
nil
}
// 获取任务
func
getTasks
(
items
[]
*
PerformanceApplicationForm
)
([]
*
PerformanceTarget
,
error
)
{
tasks
:=
make
([]
*
PerformanceTarget
,
0
)
...
...
pkg/infrastructure/repository/pg_user_repository.go
查看文件 @
c49c55c
...
...
@@ -133,6 +133,9 @@ func (repo *UserRepository) Find(queryOptions map[string]interface{}) (int, []*d
if
v
,
ok
:=
queryOptions
[
"name"
]
.
(
string
);
ok
&&
len
(
v
)
>
0
{
query
.
Where
(
"name like ?"
,
fmt
.
Sprintf
(
"%%%v%%"
,
v
))
}
if
v
,
ok
:=
queryOptions
[
"names"
];
ok
{
query
.
Where
(
"name in(?)"
,
pg
.
In
(
v
))
}
if
v
,
ok
:=
queryOptions
[
"offset"
];
ok
{
if
value
,
ok
:=
v
.
(
int
);
ok
{
query
.
Offset
(
value
)
...
...
pkg/port/beego/controllers/import_controller.go
查看文件 @
c49c55c
...
...
@@ -65,6 +65,8 @@ func (controller *ImportController) parseTemplateNodeContent(data []*domain.Perf
}()
// 获取当前公司下的默认规则
ua
:=
middlewares
.
GetUser
(
controller
.
Ctx
)
// 系统默认规则确认
ruleRepository
:=
factory
.
CreateEvaluationRuleRepository
(
map
[
string
]
interface
{}{
"transactionContext"
:
transactionContext
})
_
,
rules
,
err
:=
ruleRepository
.
Find
(
map
[
string
]
interface
{}{
"companyId"
:
ua
.
CompanyId
,
"sysType"
:
domain
.
EvaluationSysTypeSystem
,
"limit"
:
1
})
if
err
!=
nil
{
...
...
@@ -85,6 +87,10 @@ func (controller *ImportController) parseTemplateNodeContent(data []*domain.Perf
ruleId
=
rules
[
0
]
.
Id
}
// 评估内容主导人名称
evaluatorNames
:=
make
([]
string
,
0
)
evaluatorMap
:=
map
[
string
]
string
{}
for
i
:=
range
data
{
dimension
:=
data
[
i
]
for
i2
:=
range
dimension
.
PerformanceModule
{
...
...
@@ -122,9 +128,46 @@ func (controller *ImportController) parseTemplateNodeContent(data []*domain.Perf
// 必填项
nc
.
Required
=
module
.
Required
// 项目评估人
if
module
.
Evaluator
==
"HRBP"
{
nc
.
EvaluatorId
=
-
1
}
else
{
if
len
(
module
.
Evaluator
)
>
0
{
evaluatorNames
=
append
(
evaluatorNames
,
module
.
Evaluator
)
// 项目评估人名称数组
evaluatorMap
[
nc
.
Category
+
nc
.
Name
]
=
module
.
Evaluator
// k,v = (类别+名称, 项目评估人名称)
}
}
nodeContents
=
append
(
nodeContents
,
nc
)
}
}
if
len
(
evaluatorNames
)
>
0
{
userRepository
:=
factory
.
CreateUserRepository
(
map
[
string
]
interface
{}{
"transactionContext"
:
transactionContext
})
_
,
users
,
err
:=
userRepository
.
Find
(
map
[
string
]
interface
{}{
"companyId"
:
ua
.
CompanyId
,
"names"
:
evaluatorNames
})
if
err
!=
nil
{
return
nodeContents
}
nameIdMap
:=
map
[
string
]
int64
{}
for
i
:=
range
users
{
nameIdMap
[
users
[
i
]
.
Name
]
=
users
[
i
]
.
Id
}
// 名称 -> ID
var
nc
*
domain
.
NodeContent
for
i
:=
range
nodeContents
{
nc
=
nodeContents
[
i
]
if
nc
.
EvaluatorId
==
-
1
{
// HRBP
continue
}
if
evaluatorName
,
ok
:=
evaluatorMap
[
nc
.
Category
+
nc
.
Name
];
ok
{
if
userId
,
ok
:=
nameIdMap
[
evaluatorName
];
ok
{
nc
.
EvaluatorId
=
userId
}
}
}
}
return
nodeContents
}
...
...
templates/tpl_template_question.xlsx
查看文件 @
c49c55c
不能预览此文件类型
请
注册
或
登录
后发表评论