切换导航条
此项目
正在载入...
登录
allied-creation
/
performance
·
提交
转到一个项目
GitLab
转到群组
项目
活动
文件
提交
管道
0
构建
0
图表
里程碑
问题
0
合并请求
0
成员
标记
维基
派生
网络
创建新的问题
下载为
邮件补丁
差异文件
浏览文件
作者
tangxvhui
2 years ago
提交
84917ad87f5e7507a913f60d4ef415469cc59293
1 个父辈
2af33521
master
...
dev-pushdata
dev-tangxvhui
dev-zhengzhou
test
v1.3.2-fix
v1.4.0
v2.2.0-fix
20230410
20230403
20230331
v2.2.0
v2.0.0
v1.3.2
v1.3.2-fix
v1.3.1
v1.3.0
v1.2.4
调整周期评估的下发
隐藏空白字符变更
内嵌
并排对比
正在显示
6 个修改的文件
包含
366 行增加
和
4 行删除
main.go
pkg/application/summary_evaluation/service/scheduled.go
pkg/application/summary_evaluation/service/scheduled_v2.go
pkg/domain/log_sms.go
pkg/infrastructure/repository/pg_evaluation_cycle_repository.go
pkg/infrastructure/repository/pg_log_sms_repository.go
main.go
查看文件 @
84917ad
...
...
@@ -56,7 +56,7 @@ func startSummaryEvaluation() {
timer
:=
time
.
NewTimer
(
duration
)
for
{
<-
timer
.
C
if
err
:=
serviceSummary
.
TaskSendSummaryEvaluation
();
err
!=
nil
{
if
err
:=
serviceSummary
.
TaskSendSummaryEvaluation
V2
();
err
!=
nil
{
log
.
Logger
.
Error
(
err
.
Error
())
}
timer
.
Reset
(
duration
)
// 重置定时
...
...
pkg/application/summary_evaluation/service/scheduled.go
查看文件 @
84917ad
...
...
@@ -138,7 +138,6 @@ func sendSummaryEvaluation(project *domain.EvaluationProject,
DepartmentName
:
depart
.
Name
,
})
}
//确定自评
newEvaluationList
=
append
(
newEvaluationList
,
evaluationTemp
)
if
hrbpExist
{
//处理人资评估
...
...
@@ -146,7 +145,6 @@ func sendSummaryEvaluation(project *domain.EvaluationProject,
evaluationTemp
.
EndTime
=
endTime360
evaluationTemp
.
Executor
=
domain
.
StaffDesc
{}
evaluationTemp
.
Types
=
domain
.
EvaluationHrbp
//确定人资评估
newEvaluationList
=
append
(
newEvaluationList
,
evaluationTemp
)
}
//处理360 评估
...
...
@@ -159,7 +157,6 @@ func sendSummaryEvaluation(project *domain.EvaluationProject,
UserName
:
v2
.
Name
,
}
evaluationTemp
.
Types
=
domain
.
Evaluation360
//确定人资评估
newEvaluationList
=
append
(
newEvaluationList
,
evaluationTemp
)
}
...
...
pkg/application/summary_evaluation/service/scheduled_v2.go
0 → 100644
查看文件 @
84917ad
package
service
import
(
"fmt"
"strconv"
"time"
"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory"
"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/infrastructure/dao"
"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/log"
)
// 定时下发周期评估任务
func
TaskSendSummaryEvaluationV2
()
error
{
nowTime
:=
time
.
Now
()
defer
func
()
{
str
:=
fmt
.
Sprintf
(
"下发周期评估耗时%.2f s"
,
time
.
Since
(
nowTime
)
.
Seconds
())
log
.
Logger
.
Info
(
str
)
}()
var
newPublisher
summaryEvaluationPublisher
for
{
projectList
,
err
:=
sendSummaryEvaluationV2
()
if
err
!=
nil
{
return
err
}
if
len
(
projectList
)
==
0
{
break
}
newPublisher
=
summaryEvaluationPublisher
{}
for
_
,
val
:=
range
projectList
{
err
=
newPublisher
.
sendSummaryEvaluationV2
(
val
)
return
err
}
}
return
nil
}
func
sendSummaryEvaluationV2
()
([]
*
domain
.
EvaluationProject
,
error
)
{
transactionContext
,
err
:=
factory
.
CreateTransactionContext
(
nil
)
if
err
!=
nil
{
return
nil
,
err
}
if
err
:=
transactionContext
.
StartTransaction
();
err
!=
nil
{
return
nil
,
err
}
defer
func
()
{
_
=
transactionContext
.
RollbackTransaction
()
}()
projectRepo
:=
factory
.
CreateEvaluationProjectRepository
(
map
[
string
]
interface
{}{
"transactionContext"
:
transactionContext
,
})
// 获取项目数据总数
_
,
projectList
,
err
:=
projectRepo
.
Find
(
map
[
string
]
interface
{}{
"endTime"
:
time
.
Now
(),
"summaryState"
:
domain
.
ProjectSummaryStateNo
,
"state"
:
domain
.
ProjectStateEnable
,
"limit"
:
500
,
},
"template"
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"获取可用的项目数据,%s"
,
err
)
}
if
err
:=
transactionContext
.
CommitTransaction
();
err
!=
nil
{
return
nil
,
err
}
return
projectList
,
nil
}
// 下发周期综合评估
type
summaryEvaluationPublisher
struct
{
userCache
map
[
int64
]
*
domain
.
User
departCache
map
[
int
]
*
domain
.
Department
cycleCache
map
[
int64
]
*
domain
.
EvaluationCycle
}
func
(
se
*
summaryEvaluationPublisher
)
sendSummaryEvaluationV2
(
projectParam
*
domain
.
EvaluationProject
)
error
{
transactionContext
,
err
:=
factory
.
CreateTransactionContext
(
nil
)
if
err
!=
nil
{
return
err
}
if
err
:=
transactionContext
.
StartTransaction
();
err
!=
nil
{
return
err
}
defer
func
()
{
_
=
transactionContext
.
RollbackTransaction
()
}()
userRepo
:=
factory
.
CreateUserRepository
(
map
[
string
]
interface
{}{
"transactionContext"
:
transactionContext
})
departmentRepo
:=
factory
.
CreateDepartmentRepository
(
map
[
string
]
interface
{}{
"transactionContext"
:
transactionContext
})
cycleRepo
:=
factory
.
CreateEvaluationCycleRepository
(
map
[
string
]
interface
{}{
"transactionContext"
:
transactionContext
})
evaluationItemRepo
:=
factory
.
CreateEvaluationItemUsedRepository
(
map
[
string
]
interface
{}{
"transactionContext"
:
transactionContext
})
_
,
evaluationItemList
,
err
:=
evaluationItemRepo
.
Find
(
map
[
string
]
interface
{}{
"evaluationProjectId"
:
projectParam
.
Id
,
"nodeType"
:
int
(
domain
.
LinkNodeSelfAssessment
),
})
if
err
!=
nil
{
return
err
}
if
len
(
evaluationItemList
)
==
0
{
return
nil
}
nodeId
:=
evaluationItemList
[
0
]
.
NodeId
executor360Map
:=
map
[
int64
]
*
domain
.
User
{}
hrbpExist
:=
false
for
_
,
v
:=
range
evaluationItemList
{
nodeId
=
v
.
NodeId
if
v
.
EvaluatorId
<
0
{
hrbpExist
=
true
}
if
v
.
EvaluatorId
<=
0
{
continue
}
user360
,
err
:=
se
.
getUserData
(
userRepo
,
int64
(
v
.
EvaluatorId
))
if
err
!=
nil
{
return
fmt
.
Errorf
(
"获取360用户%s"
,
err
)
}
executor360Map
[
user360
.
Id
]
=
user360
}
//获取周期
cycleData
,
err
:=
se
.
getCycleData
(
cycleRepo
,
projectParam
.
CycleId
)
if
err
!=
nil
{
return
err
}
if
cycleData
==
nil
{
return
nil
}
if
cycleData
.
TimeEnd
==
nil
{
return
fmt
.
Errorf
(
"周期%d:%s 结束时间错误"
,
cycleData
.
Id
,
cycleData
.
Name
)
}
//自评的时间范围
beginTimeSelf
:=
*
cycleData
.
TimeEnd
endTimeSelf
:=
dayZeroTime
(
beginTimeSelf
)
.
Add
(
3
*
24
*
time
.
Hour
-
time
.
Second
)
//人资、360评估的时间范围
beginTime360
:=
endTimeSelf
endTime360
:=
endTimeSelf
.
Add
(
2
*
24
*
time
.
Hour
)
//上级评估的是时间范围
beginTimeSuper
:=
endTime360
endTimeSuper
:=
endTime360
.
Add
(
2
*
24
*
time
.
Hour
)
// 创建周期评估任务
var
newEvaluationList
[]
domain
.
SummaryEvaluation
evaluationTemp
:=
domain
.
SummaryEvaluation
{
Id
:
0
,
CompanyId
:
int
(
projectParam
.
CompanyId
),
EvaluationProjectId
:
int
(
projectParam
.
Id
),
EvaluationProjectName
:
projectParam
.
Name
,
CycleId
:
cycleData
.
Id
,
CycleName
:
cycleData
.
Name
,
NodeId
:
nodeId
,
TargetUser
:
domain
.
StaffDesc
{},
//待填充
TargetDepartment
:
[]
domain
.
StaffDepartment
{},
//待填充
Executor
:
domain
.
StaffDesc
{},
Types
:
0
,
//待填充
Status
:
domain
.
EvaluationUncompleted
,
CheckResult
:
domain
.
EvaluationCheckUncompleted
,
BeginTime
:
time
.
Time
{},
//待填充
EndTime
:
time
.
Time
{},
//待填充
TotalScore
:
""
,
CreatedAt
:
time
.
Now
(),
UpdatedAt
:
time
.
Now
(),
DeletedAt
:
nil
,
}
for
_
,
val
:=
range
projectParam
.
Recipients
{
targetUserId
,
_
:=
strconv
.
ParseInt
(
val
,
10
,
64
)
if
targetUserId
==
0
{
continue
}
targetUser
,
err
:=
se
.
getUserData
(
userRepo
,
targetUserId
)
if
err
!=
nil
{
return
fmt
.
Errorf
(
"获取员工数据%s"
,
err
)
}
if
targetUser
==
nil
{
continue
}
targetUserDepartment
,
err
:=
se
.
getDepartmentData
(
departmentRepo
,
targetUser
.
DepartmentId
)
if
err
!=
nil
{
return
fmt
.
Errorf
(
"获取员工的部门数据%s"
,
err
)
}
evaluationTemp
.
TargetDepartment
=
[]
domain
.
StaffDepartment
{}
evaluationTemp
.
Types
=
domain
.
EvaluationSelf
for
_
,
d
:=
range
targetUserDepartment
{
evaluationTemp
.
TargetDepartment
=
append
(
evaluationTemp
.
TargetDepartment
,
domain
.
StaffDepartment
{
DepartmentId
:
int
(
d
.
Id
),
DepartmentName
:
d
.
Name
,
})
}
evaluationTemp
.
TargetUser
=
domain
.
StaffDesc
{
UserId
:
int
(
targetUser
.
Id
),
Account
:
targetUser
.
Account
,
UserName
:
targetUser
.
Name
,
}
//处理自评
{
evaluationTemp
.
Executor
=
domain
.
StaffDesc
{
UserId
:
int
(
targetUser
.
Id
),
Account
:
targetUser
.
Account
,
UserName
:
targetUser
.
Name
,
}
evaluationTemp
.
BeginTime
=
beginTimeSelf
evaluationTemp
.
EndTime
=
endTimeSelf
newEvaluationList
=
append
(
newEvaluationList
,
evaluationTemp
)
}
//处理360评估
{
for
_
,
val2
:=
range
executor360Map
{
evaluationTemp
.
BeginTime
=
beginTime360
evaluationTemp
.
EndTime
=
endTime360
evaluationTemp
.
Executor
=
domain
.
StaffDesc
{
UserId
:
int
(
val2
.
Id
),
Account
:
val2
.
Account
,
UserName
:
val2
.
Name
,
}
evaluationTemp
.
Types
=
domain
.
Evaluation360
//确定人资评估
newEvaluationList
=
append
(
newEvaluationList
,
evaluationTemp
)
}
}
//处理人资评估
{
if
hrbpExist
{
//处理人资评估
evaluationTemp
.
BeginTime
=
beginTime360
evaluationTemp
.
EndTime
=
endTime360
evaluationTemp
.
Executor
=
domain
.
StaffDesc
{}
evaluationTemp
.
Types
=
domain
.
EvaluationHrbp
newEvaluationList
=
append
(
newEvaluationList
,
evaluationTemp
)
}
}
//处理上级评估
{
superUser
,
_
:=
se
.
getUserData
(
userRepo
,
targetUser
.
ParentId
)
if
superUser
!=
nil
{
evaluationTemp
.
Types
=
domain
.
EvaluationSuper
evaluationTemp
.
Executor
=
domain
.
StaffDesc
{
UserId
:
int
(
superUser
.
Id
),
Account
:
superUser
.
Account
,
UserName
:
superUser
.
Name
,
}
evaluationTemp
.
BeginTime
=
beginTimeSuper
evaluationTemp
.
EndTime
=
endTimeSuper
//确定上级评估
newEvaluationList
=
append
(
newEvaluationList
,
evaluationTemp
)
}
}
//综合考评结果
{
evaluationTemp
.
Types
=
domain
.
EvaluationFinish
evaluationTemp
.
Executor
=
domain
.
StaffDesc
{}
evaluationTemp
.
BeginTime
=
endTimeSuper
evaluationTemp
.
EndTime
=
endTimeSuper
.
Add
(
2
*
24
*
time
.
Hour
)
newEvaluationList
=
append
(
newEvaluationList
,
evaluationTemp
)
}
}
summaryEvaluationRepo
:=
factory
.
CreateSummaryEvaluationRepository
(
map
[
string
]
interface
{}{
"transactionContext"
:
transactionContext
})
for
i
:=
range
newEvaluationList
{
err
=
summaryEvaluationRepo
.
Save
(
&
newEvaluationList
[
i
])
if
err
!=
nil
{
return
fmt
.
Errorf
(
"保存周期综合评估%s"
,
err
)
}
}
//回填项目的状态
projectDao
:=
dao
.
NewEvaluationProjectDao
(
map
[
string
]
interface
{}{
"transactionContext"
:
transactionContext
})
err
=
projectDao
.
UpdateSummaryState
(
projectParam
.
Id
,
domain
.
ProjectSummaryStateYes
)
if
err
!=
nil
{
return
fmt
.
Errorf
(
"保存项目状态%s"
,
err
)
}
if
err
:=
transactionContext
.
CommitTransaction
();
err
!=
nil
{
return
err
}
err
=
sendSmsEvalation
(
newEvaluationList
)
return
fmt
.
Errorf
(
"设置短信发送%s"
,
err
)
}
// 获取周期设置数据
func
(
se
*
summaryEvaluationPublisher
)
getCycleData
(
cycleRepo
domain
.
EvaluationCycleRepository
,
cycleId
int64
)
(
*
domain
.
EvaluationCycle
,
error
)
{
var
cycleData
*
domain
.
EvaluationCycle
if
val
,
ok
:=
se
.
cycleCache
[
cycleId
];
ok
{
cycleData
=
val
}
else
{
_
,
cycleList
,
err
:=
cycleRepo
.
Find
(
map
[
string
]
interface
{}{
"id"
:
cycleId
})
if
err
!=
nil
{
return
nil
,
err
}
if
len
(
cycleList
)
==
0
{
return
nil
,
nil
}
cycleData
=
cycleList
[
0
]
}
return
cycleData
,
nil
}
// 获取用户数据
func
(
se
*
summaryEvaluationPublisher
)
getUserData
(
userRepo
domain
.
UserRepository
,
userId
int64
)
(
*
domain
.
User
,
error
)
{
if
userId
==
0
{
return
nil
,
nil
}
var
userData
*
domain
.
User
if
val
,
ok
:=
se
.
userCache
[
userId
];
ok
{
userData
=
val
}
else
{
_
,
userList
,
err
:=
userRepo
.
Find
(
map
[
string
]
interface
{}{
"id"
:
userId
})
if
err
!=
nil
{
return
nil
,
err
}
if
len
(
userList
)
==
0
{
return
nil
,
nil
}
userData
=
userList
[
0
]
}
return
userData
,
nil
}
// 获取部门数据
func
(
se
*
summaryEvaluationPublisher
)
getDepartmentData
(
departmentRepo
domain
.
DepartmentRepository
,
departmentIds
[]
int
)
([]
*
domain
.
Department
,
error
)
{
departmentList
:=
[]
*
domain
.
Department
{}
for
_
,
departmentId
:=
range
departmentIds
{
if
val
,
ok
:=
se
.
departCache
[
departmentId
];
ok
{
departmentList
=
append
(
departmentList
,
val
)
}
else
{
_
,
departments
,
err
:=
departmentRepo
.
Find
(
map
[
string
]
interface
{}{
"id"
:
departmentId
})
if
err
!=
nil
{
return
nil
,
err
}
if
len
(
departmentList
)
==
0
{
continue
}
departmentList
=
append
(
departmentList
,
departments
[
0
])
}
}
return
departmentList
,
nil
}
...
...
pkg/domain/log_sms.go
查看文件 @
84917ad
...
...
@@ -42,5 +42,6 @@ func (sms *LogSms) SummaryEvaluationMessage(phone string, name string) {
type
LogSmsRepository
interface
{
Save
(
param
*
LogSms
)
error
BatchInsert
(
params
[]
*
LogSms
)
error
Find
(
queryOptions
map
[
string
]
interface
{})
(
int
,
[]
*
LogSms
,
error
)
}
...
...
pkg/infrastructure/repository/pg_evaluation_cycle_repository.go
查看文件 @
84917ad
...
...
@@ -127,6 +127,10 @@ func (repo *EvaluationCycleRepository) Find(queryOptions map[string]interface{})
query
.
Where
(
"id in (?)"
,
pg
.
In
(
v
))
}
if
v
,
ok
:=
queryOptions
[
"id"
];
ok
{
query
.
Where
(
"id=?"
,
v
)
}
if
v
,
ok
:=
queryOptions
[
"companyId"
];
ok
{
query
.
Where
(
"company_id = ?"
,
v
)
}
...
...
pkg/infrastructure/repository/pg_log_sms_repository.go
查看文件 @
84917ad
...
...
@@ -96,3 +96,33 @@ func (repo *LogSmsRepository) TransformToDomain(d *models.LogSms) *domain.LogSms
CreatedAt
:
d
.
CreatedAt
,
}
}
//批量添加
func
(
repo
*
LogSmsRepository
)
BatchInsert
(
params
[]
*
domain
.
LogSms
)
error
{
smsList
:=
[]
models
.
LogSms
{}
for
_
,
param
:=
range
params
{
m
:=
models
.
LogSms
{
Id
:
param
.
Id
,
Phone
:
param
.
Phone
,
TemplateId
:
param
.
TemplateId
,
Template
:
param
.
Template
,
Value
:
param
.
Value
,
CreatedAt
:
param
.
CreatedAt
,
Result
:
param
.
Result
,
Status
:
string
(
param
.
Status
),
From
:
param
.
From
,
Index
:
param
.
Index
,
ExecuteAt
:
param
.
ExecuteAt
,
}
smsList
=
append
(
smsList
,
m
)
}
tx
:=
repo
.
transactionContext
.
PgTx
_
,
err
:=
tx
.
Model
(
&
smsList
)
.
Insert
()
if
err
!=
nil
{
return
err
}
return
nil
}
...
...
请
注册
或
登录
后发表评论