切换导航条
此项目
正在载入...
登录
allied-creation
/
performance
·
提交
转到一个项目
GitLab
转到群组
项目
活动
文件
提交
管道
0
构建
0
图表
里程碑
问题
0
合并请求
0
成员
标记
维基
派生
网络
创建新的问题
下载为
差异文件
浏览文件
作者
tangxvhui
2 years ago
提交
a0255371b8a6866812ed6cbb8f7423b3e5365568
2 个父辈
24b20791
c49c55c9
Merge branch 'test' of
http://gitlab.fjmaimaimai.com/allied-creation/performance
into test
隐藏空白字符变更
内嵌
并排对比
正在显示
7 个修改的文件
包含
110 行增加
和
26 行删除
pkg/application/department/adapter/department_adapter.go
pkg/application/evaluation_template/command/template_update.go
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/application/department/adapter/department_adapter.go
查看文件 @
a025537
package
adapter
type
DepartmentAdapter
struct
{
Id
int64
`comment:"部门ID" json:"id"`
Id
int64
`comment:"部门ID" json:"id
,string
"`
Name
string
`comment:"部门名称" json:"name"`
CompanyId
int64
`comment:"公司ID" json:"companyId"`
ParentId
int64
`comment:"父级ID" json:"parentId"`
CompanyId
int64
`comment:"公司ID" json:"companyId,string"`
ParentId
int64
`comment:"父级ID" json:"parentId,string"`
Departments
[]
*
DepartmentAdapter
`comment:"子部门" json:"departments"`
UserTotal
int
`comment:"部门用户总数量(包含子部门)" json:"userTotal"`
}
...
...
pkg/application/evaluation_template/command/template_update.go
查看文件 @
a025537
package
command
import
(
"fmt"
"github.com/beego/beego/v2/core/validation"
"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
)
...
...
@@ -20,19 +21,24 @@ func (in *UpdateTemplateCommand) Valid(validation *validation.Validation) {
return
}
//if len(in.Name) > 40 {
// validation.SetError("name", "模板名称最大长度40个字符")
// return
//}
//
//if len(in.Describe) > 100 {
// validation.SetError("describe", "备注最大长度100个字符")
// return
//}
if
len
(
in
.
LinkNodes
)
==
0
{
validation
.
SetError
(
"linkNodes"
,
"评估模板流程不能为空"
)
return
}
else
{
for
i
:=
range
in
.
LinkNodes
{
linkNode
:=
in
.
LinkNodes
[
i
]
// 填写自评反馈,如果有评估内容时,内容权重相加 = 100%
if
linkNode
.
Type
==
domain
.
LinkNodeSelfAssessment
&&
len
(
linkNode
.
NodeContents
)
>
0
{
weightTotal
:=
0.0
for
i2
:=
range
linkNode
.
NodeContents
{
weightTotal
+=
linkNode
.
NodeContents
[
i2
]
.
Weight
}
if
weightTotal
!=
100
{
validation
.
SetError
(
"linkNodes"
,
fmt
.
Sprintf
(
"权重错误,当前%s的总权重值为:%f(必须等于100)"
,
linkNode
.
Name
,
weightTotal
))
return
}
}
}
}
}
...
...
pkg/domain/evaluation_template.go
查看文件 @
a025537
...
...
@@ -41,6 +41,7 @@ type NodeContent struct {
PromptText
string
`json:"promptText" comment:"提示项正文"`
EntryItems
[]
*
EntryItem
`json:"entryItems" comment:"填写项"`
Required
int
`json:"required" comment:"必填项"`
EvaluatorId
int64
`json:"evaluatorId,string" comment:"项目评估人ID ( 0=无评估人、-1=HRBP )"`
}
// LinkNode 评估流程、环节
...
...
pkg/domain/performance_application_form.go
查看文件 @
a025537
...
...
@@ -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
查看文件 @
a025537
...
...
@@ -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
查看文件 @
a025537
...
...
@@ -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
查看文件 @
a025537
不能预览此文件类型
请
注册
或
登录
后发表评论