切换导航条
此项目
正在载入...
登录
allied-creation
/
performance
·
提交
转到一个项目
GitLab
转到群组
项目
活动
文件
提交
管道
0
构建
0
图表
里程碑
问题
0
合并请求
0
成员
标记
维基
派生
网络
创建新的问题
下载为
邮件补丁
差异文件
浏览文件
作者
tangxvhui
2 years ago
提交
8aa37348d3c0bd406178ed1511ad8c0e11eabf54
1 个父辈
86bcccae
master
...
dev-pushdata
dev-tangxvhui
dev-zhengzhou
test
v1.3.2-fix
v1.4.0
v2.2.0-fix
20230410
20230403
20230331
20230324
20230315
20230203
20230112
20221208
20221205
v2.2.0
v2.0.0
v1.3.2
v1.3.2-fix
v1.3.1
v1.3.0
v1.2.4
修复一些问题
隐藏空白字符变更
内嵌
并排对比
正在显示
6 个修改的文件
包含
100 行增加
和
80 行删除
pkg/application/staff_assess/adapter/assess_task_desc.go
pkg/application/staff_assess/service/service.go
pkg/application/staff_assess/service/service_2.go
pkg/domain/staff_assess_task.go
pkg/infrastructure/dao/staff_assess_dao.go
pkg/infrastructure/repository/pg_staff_assess_repository.go
pkg/application/staff_assess/adapter/assess_task_desc.go
查看文件 @
8aa3734
...
...
@@ -12,6 +12,7 @@ type AssessTaskDescResp struct {
type
AssessTaskStep
struct
{
SortBy
int
`json:"sortBy"`
//排序
LinkNodeId
int
`json:"linkNodeId"`
//流程id
LinkNodeName
string
`json:"linkNodeName"`
//流程名称
BeginTime
string
`json:"beginTime"`
//开始时间时间
EndTime
string
`json:"endTime"`
//结束时间
...
...
pkg/application/staff_assess/service/service.go
查看文件 @
8aa3734
...
...
@@ -2,6 +2,7 @@ package service
import
(
"fmt"
"sort"
"strconv"
"time"
...
...
@@ -118,6 +119,7 @@ func (srv StaffAssessServeice) AssessTaskDesc(param *query.AssessTaskDescQuery)
stepItem
:=
adapter
.
AssessTaskStep
{
SortBy
:
v
.
SortBy
,
LinkNodeName
:
v
.
LinkNodeName
,
LinkNodeId
:
v
.
LinkNodeId
,
BeginTime
:
v
.
BeginTime
.
Local
()
.
Format
(
"2006-01-02 15:04:05"
),
EndTime
:
v
.
EndTime
.
Local
()
.
Format
(
"2006-01-02 15:04:05"
),
LinkNodeType
:
v
.
LinkNodeType
,
...
...
@@ -206,7 +208,10 @@ func (srv StaffAssessServeice) AssessTaskDesc(param *query.AssessTaskDescQuery)
}
}
}
result
.
StepList
=
append
(
result
.
StepList
,
stepItem
)
//未参与的,不算在个人的评估环节里
if
stepItem
.
Status
!=
""
{
result
.
StepList
=
append
(
result
.
StepList
,
stepItem
)
}
}
if
err
:=
transactionContext
.
CommitTransaction
();
err
!=
nil
{
return
nil
,
application
.
ThrowError
(
application
.
INTERNAL_SERVER_ERROR
,
err
.
Error
())
...
...
@@ -230,7 +235,7 @@ func (srv StaffAssessServeice) AssessSelfList(param *query.AssessSelfListQuery)
staffAssessRepo
:=
factory
.
CreateStaffAssessRepository
(
map
[
string
]
interface
{}{
"transactionContext"
:
transactionContext
,
})
var
limit
int
=
2
0
var
limit
int
=
10
0
var
offset
int
=
0
if
param
.
PageSize
>
0
{
limit
=
param
.
PageSize
...
...
@@ -241,8 +246,9 @@ func (srv StaffAssessServeice) AssessSelfList(param *query.AssessSelfListQuery)
"companyId"
:
param
.
CompanyId
,
"typesList"
:
[]
string
{
string
(
domain
.
AssessSelf
)},
"limit"
:
limit
,
"
status"
:
string
(
domain
.
StaffAssessCompleted
),
"
endTime"
:
time
.
Now
(),
//获取历史记录
}
// "status": string(domain.StaffAssessCompleted),
if
offset
>
0
{
condition
[
"offset"
]
=
offset
}
...
...
@@ -333,16 +339,6 @@ func (srv StaffAssessServeice) AssessSelfList(param *query.AssessSelfListQuery)
// 根据项目评估的配置,创建员工的评估任务
func
(
srv
StaffAssessServeice
)
CreateStaffAssessTask
(
transactionContext
application
.
TransactionContext
,
param
*
command
.
CreateStaffAssessTask
)
(
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()
// }()
log
.
Logger
.
Debug
(
"CreateStaffAssessTask 获取参数"
,
map
[
string
]
interface
{}{
"param"
:
param
,
})
...
...
@@ -358,30 +354,64 @@ func (srv StaffAssessServeice) CreateStaffAssessTask(transactionContext applicat
return
nil
,
application
.
ThrowError
(
application
.
ARG_ERROR
,
"任务结束时间填写错误,"
+
param
.
EndTime
)
}
nowTime
:=
time
.
Now
()
//建立评估任务
assessTaskData
:=
&
domain
.
StaffAssessTask
{
Id
:
0
,
CompanyId
:
param
.
CompanyId
,
EvaluationProjectId
:
param
.
EvaluationProjectId
,
EvaluationProjectName
:
param
.
EvaluationProjectName
,
CycleId
:
param
.
CycleId
,
CycleName
:
param
.
CycleName
,
BeginTime
:
taskBeginTime
,
EndTime
:
taskEndTime
,
StepList
:
[]
domain
.
AssessTaskStep
{},
ExecutorId
:
nil
,
CreatedAt
:
nowTime
,
UpdatedAt
:
nowTime
,
DeletedAt
:
nil
,
BeginDay
:
taskBeginTime
.
Local
()
.
Format
(
"2006-01-02"
),
}
// }
//填充评估环节
_
,
assassessTaskList
,
err
:=
assessTaskRepo
.
Find
(
map
[
string
]
interface
{}{
"evaluationProjectId"
:
param
.
EvaluationProjectId
,
"beginDay"
:
taskBeginTime
.
Local
()
.
Format
(
"2006-01-02"
),
})
if
err
!=
nil
{
return
nil
,
application
.
ThrowError
(
application
.
INTERNAL_SERVER_ERROR
,
"查询同日期同项目已存在的评估任务"
+
err
.
Error
())
}
var
assessTaskData
*
domain
.
StaffAssessTask
//更新旧数据或者新建数据
if
len
(
assassessTaskList
)
>
0
{
assessTaskData
=
assassessTaskList
[
0
]
assessTaskData
.
UpdatedAt
=
nowTime
}
else
{
//建立新的评估任务
assessTaskData
=
&
domain
.
StaffAssessTask
{
Id
:
0
,
CompanyId
:
param
.
CompanyId
,
EvaluationProjectId
:
param
.
EvaluationProjectId
,
EvaluationProjectName
:
param
.
EvaluationProjectName
,
CycleId
:
param
.
CycleId
,
CycleName
:
param
.
CycleName
,
BeginTime
:
taskBeginTime
,
EndTime
:
taskEndTime
,
StepList
:
[]
domain
.
AssessTaskStep
{},
ExecutorId
:
[]
int
{},
CreatedAt
:
nowTime
,
UpdatedAt
:
nowTime
,
DeletedAt
:
nil
,
BeginDay
:
taskBeginTime
.
Local
()
.
Format
(
"2006-01-02"
),
}
}
executorIds
:=
[]
int
{}
//提取评估的参与人id
executorIdMap
:=
map
[
int
]
struct
{}{}
//过滤重复的用户
//从入参中提取参与人
for
_
,
v
:=
range
param
.
ExecutorId
{
if
_
,
ok
:=
executorIdMap
[
v
];
ok
{
continue
}
executorIdMap
[
v
]
=
struct
{}{}
executorIds
=
append
(
executorIds
,
v
)
}
//就数据中提取参与人
for
_
,
v
:=
range
assessTaskData
.
ExecutorId
{
if
_
,
ok
:=
executorIdMap
[
v
];
ok
{
continue
}
executorIdMap
[
v
]
=
struct
{}{}
executorIds
=
append
(
executorIds
,
v
)
}
//填入新的参与人id
assessTaskData
.
ExecutorId
=
executorIds
//填充新的评估环节
loop
:
for
_
,
v
:=
range
param
.
StepList
{
for
_
,
vv
:=
range
assessTaskData
.
StepList
{
if
vv
.
LinkNodeType
==
v
.
LinkNodeType
{
continue
if
vv
.
LinkNodeId
==
v
.
LinkNodeId
{
continue
loop
}
}
stepBeginTime
,
err
:=
time
.
ParseInLocation
(
"2006-01-02 15:04:05"
,
param
.
BeginTime
,
time
.
Local
)
...
...
@@ -402,44 +432,15 @@ func (srv StaffAssessServeice) CreateStaffAssessTask(transactionContext applicat
}
assessTaskData
.
StepList
=
append
(
assessTaskData
.
StepList
,
step
)
}
//评估的参与人
executorIds
:=
[]
int
{}
executorIdMap
:=
map
[
int
]
struct
{}{}
//过滤重复的用户
for
_
,
v
:=
range
param
.
ExecutorId
{
if
_
,
ok
:=
executorIdMap
[
v
];
ok
{
continue
}
executorIdMap
[
v
]
=
struct
{}{}
executorIds
=
append
(
executorIds
,
v
)
}
assessTaskData
.
ExecutorId
=
executorIds
//排序流程环节
stepList
:=
domain
.
SortTaskStep
(
assessTaskData
.
StepList
)
sort
.
Sort
(
stepList
)
assessTaskData
.
StepList
=
stepList
//添加员工的节点任务
assessList
,
err
:=
srv
.
createStaffAssess
(
transactionContext
,
assessTaskData
)
if
err
!=
nil
{
return
nil
,
application
.
ThrowError
(
application
.
INTERNAL_SERVER_ERROR
,
"生成个人评估项"
+
err
.
Error
())
}
// var assessTaskData *domain.StaffAssessTask
_
,
assassessTaskList
,
err
:=
assessTaskRepo
.
Find
(
map
[
string
]
interface
{}{
"evaluationProjectId"
:
param
.
EvaluationProjectId
,
"beginDay"
:
taskBeginTime
.
Local
()
.
Format
(
"2006-01-02"
),
})
if
err
!=
nil
{
return
nil
,
application
.
ThrowError
(
application
.
INTERNAL_SERVER_ERROR
,
"查询同日期已存在评估任务"
+
err
.
Error
())
}
if
len
(
assassessTaskList
)
>
0
{
//过滤就数据
assessTaskData
.
Id
=
assassessTaskList
[
0
]
.
Id
for
_
,
v
:=
range
assassessTaskList
[
0
]
.
ExecutorId
{
if
_
,
ok
:=
executorIdMap
[
v
];
ok
{
continue
}
executorIdMap
[
v
]
=
struct
{}{}
executorIds
=
append
(
executorIds
,
v
)
}
assessTaskData
.
ExecutorId
=
executorIds
assessTaskData
.
StepList
=
append
(
assassessTaskList
[
0
]
.
StepList
,
assessTaskData
.
StepList
...
)
}
_
,
err
=
assessTaskRepo
.
Save
(
assessTaskData
)
if
err
!=
nil
{
return
nil
,
application
.
ThrowError
(
application
.
INTERNAL_SERVER_ERROR
,
"保存评估任务"
+
err
.
Error
())
...
...
@@ -455,10 +456,6 @@ func (srv StaffAssessServeice) CreateStaffAssessTask(transactionContext applicat
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())
// }
return
map
[
string
]
interface
{}{
"assessTaskId"
:
assessTaskData
.
Id
,
},
nil
...
...
@@ -564,7 +561,6 @@ func (srv StaffAssessServeice) createStaffAssessSelf(assessTemp domain.StaffAsse
userList
[]
*
domain
.
User
,
userDepartmentMap
map
[
int64
][]
*
domain
.
Department
)
[]
domain
.
StaffAssess
{
result
:=
[]
domain
.
StaffAssess
{}
for
_
,
usr
:=
range
userList
{
assessTemp
.
TargetUser
=
domain
.
StaffDesc
{
UserId
:
int
(
usr
.
Id
),
Account
:
usr
.
Account
,
...
...
@@ -588,7 +584,7 @@ func (srv StaffAssessServeice) createStaffAssessSelf(assessTemp domain.StaffAsse
return
result
}
// 构建员工上级评估
// 构建员工
的
上级评估
func
(
srv
StaffAssessServeice
)
createStaffAssessSupper
(
transactionContext
application
.
TransactionContext
,
assessTemp
domain
.
StaffAssess
,
...
...
@@ -608,6 +604,7 @@ func (srv StaffAssessServeice) createStaffAssessSupper(
if
len
(
vv2
.
ChargeUserIds
)
==
0
{
continue
}
//获取部门的主管
_
,
chargeUserList
,
err
:=
userRepo
.
Find
(
map
[
string
]
interface
{}{
"ids"
:
vv2
.
ChargeUserIds
,
"limit"
:
40
,
...
...
@@ -728,7 +725,6 @@ func (srv StaffAssessServeice) SaveAssessInviteUser(param *command.SaveAssessInv
defer
func
()
{
_
=
transactionContext
.
RollbackTransaction
()
}()
assessReps
:=
factory
.
CreateStaffAssessRepository
(
map
[
string
]
interface
{}{
"transactionContext"
:
transactionContext
,
})
...
...
@@ -761,6 +757,12 @@ func (srv StaffAssessServeice) SaveAssessInviteUser(param *command.SaveAssessInv
if
inviteNode
==
nil
{
return
nil
,
application
.
ThrowError
(
application
.
ARG_ERROR
,
"评估任务没有邀请评估的环节"
)
}
//检查节点的结束时间
endTimeInt
:=
inviteNode
.
EndTime
.
Unix
()
if
endTimeInt
<
time
.
Now
()
.
Unix
()
{
e
:=
fmt
.
Sprintf
(
"该环节已在%s截止"
,
inviteNode
.
EndTime
.
Local
()
.
Format
(
"2006-01-02 15:04:05"
))
return
nil
,
application
.
ThrowError
(
application
.
BUSINESS_ERROR
,
e
)
}
targetUser
,
err
:=
userRepo
.
FindOne
(
map
[
string
]
interface
{}{
"id"
:
param
.
TargetUserId
,
...
...
@@ -1651,6 +1653,13 @@ func (srv StaffAssessServeice) SaveAssessInfo(param *command.SaveAssessInfoComma
if
err
!=
nil
{
return
nil
,
application
.
ThrowError
(
application
.
INTERNAL_SERVER_ERROR
,
"获取员工的评估"
+
err
.
Error
())
}
//检查截止时间
endTimeInt
:=
assessData
.
EndTime
.
Unix
()
if
endTimeInt
<
time
.
Now
()
.
Unix
()
{
return
nil
,
application
.
ThrowError
(
application
.
BUSINESS_ERROR
,
"当前环节已过截止时间,提交后无法修改内容"
)
}
assessContentRepo
:=
factory
.
CreateStaffAssessContentRepository
(
map
[
string
]
interface
{}{
"transactionContext"
:
transactionContext
,
})
...
...
@@ -1658,7 +1667,6 @@ func (srv StaffAssessServeice) SaveAssessInfo(param *command.SaveAssessInfoComma
assessContentList
:=
[]
*
domain
.
StaffAssessContent
{}
if
assessData
.
Status
==
domain
.
StaffAssessCompleted
{
//已完成
_
,
assessContentList
,
err
=
assessContentRepo
.
Find
(
map
[
string
]
interface
{}{
"staffAssessId"
:
assessData
.
Id
,
})
...
...
pkg/application/staff_assess/service/service_2.go
查看文件 @
8aa3734
...
...
@@ -6,6 +6,7 @@ import (
"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/staff_assess/command"
)
//调试用,手动调用CreateStaffAssessTask
func
(
srv
StaffAssessServeice
)
InvokCreateStaffAssessTask
(
param
*
command
.
CreateStaffAssessTask
)
(
map
[
string
]
interface
{},
error
)
{
transactionContext
,
err
:=
factory
.
CreateTransactionContext
(
nil
)
if
err
!=
nil
{
...
...
pkg/domain/staff_assess_task.go
查看文件 @
8aa3734
...
...
@@ -10,7 +10,7 @@ type StaffAssessTask struct {
EvaluationProjectName
string
`json:"evaluationProjectName"`
//项目名称
CycleId
int64
`json:"cycleId"`
//对应的周期id
CycleName
string
`json:"cycleName"`
//对应周期的名称
BeginDay
string
`json:"beginDay"`
//绩效考核日期
BeginDay
string
`json:"beginDay"`
//绩效考核日期
,2006-01-02
BeginTime
time
.
Time
`json:"beginTime"`
//绩效考核开始时间
EndTime
time
.
Time
`json:"endTime"`
//绩效考核截止时间
StepList
[]
AssessTaskStep
`json:"stepList"`
//考评的流程
...
...
@@ -30,6 +30,12 @@ type AssessTaskStep struct {
EndTime
time
.
Time
`json:"endTime"`
//绩效考核截止时间
}
type
SortTaskStep
[]
AssessTaskStep
func
(
a
SortTaskStep
)
Len
()
int
{
return
len
(
a
)
}
func
(
a
SortTaskStep
)
Swap
(
i
,
j
int
)
{
a
[
i
],
a
[
j
]
=
a
[
j
],
a
[
i
]
}
func
(
a
SortTaskStep
)
Less
(
i
,
j
int
)
bool
{
return
a
[
i
]
.
SortBy
<
a
[
j
]
.
SortBy
}
type
StaffAssessTaskRepository
interface
{
Save
(
param
*
StaffAssessTask
)
(
*
StaffAssessTask
,
error
)
Remove
(
id
int
)
error
...
...
pkg/infrastructure/dao/staff_assess_dao.go
查看文件 @
8aa3734
...
...
@@ -56,7 +56,7 @@ func (d *StaffAssessDao) CountInviteAssessByTargetUser(userIds []int, assessTask
return
result
,
err
}
//
搜索 executorId
参与的评估任务
//
根据评估的人执行人id,搜索 executorId
参与的评估任务
func
(
d
*
StaffAssessDao
)
SearchAssessTaskMe
(
executorId
int
,
companyId
int
,
limit
int
,
offset
int
)
([]
*
domain
.
StaffAssessTask
,
error
)
{
if
limit
<
0
{
...
...
@@ -70,6 +70,7 @@ func (d *StaffAssessDao) SearchAssessTaskMe(executorId int, companyId int, limit
JOIN staff_assess ON staff_assess_task."id" = staff_assess."staff_assess_task_id"
WHERE staff_assess.company_id=?
and staff_assess.executor->>'userId'='?'
order by staff_assess_task.id desc
limit ? offset ?
`
tx
:=
d
.
transactionContext
.
PgTx
...
...
pkg/infrastructure/repository/pg_staff_assess_repository.go
查看文件 @
8aa3734
...
...
@@ -147,12 +147,15 @@ func (repo *StaffAssessRepository) Find(queryOptions map[string]interface{}) (in
if
v
,
ok
:=
queryOptions
[
"id"
];
ok
{
query
.
Where
(
"id=?"
,
v
)
}
if
v
,
ok
:=
queryOptions
[
"typesList"
]
.
([]
string
);
ok
&&
len
(
v
)
>
0
{
if
v
,
ok
:=
queryOptions
[
"typesList"
]
.
([]
string
);
ok
{
query
.
Where
(
"types in(?)"
,
pg
.
In
(
v
))
}
if
v
,
ok
:=
queryOptions
[
"status"
]
.
(
string
);
ok
&&
len
(
v
)
>
0
{
if
v
,
ok
:=
queryOptions
[
"status"
]
.
(
string
);
ok
{
query
.
Where
(
"status=?"
,
v
)
}
if
v
,
ok
:=
queryOptions
[
"endTime"
];
ok
{
query
.
Where
(
"end_time<=?"
,
v
)
}
count
,
err
:=
query
.
SelectAndCount
()
if
err
!=
nil
{
return
0
,
nil
,
err
...
...
请
注册
或
登录
后发表评论