作者 郑周

Merge branch 'dev-tangxvhui' into dev-zhengzhou

... ... @@ -23,10 +23,10 @@ type UserData struct {
type TaskStage struct {
Id int `json:"id,string"`
Name string `json:"name"` //里程碑名称
StatusDescription string `json:"statusDescription"` //里程碑的完成情况
Status int `json:"status"` //里程碑状态
Name string `json:"name"` //里程碑名称
StatusDescription string `json:"statusDescription,omitempty"` //里程碑的完成情况
Status int `json:"status"` //里程碑状态
SortBy int `json:"sortBy"`
PlanCompletedAt string `json:"planCompletedAt"` //计划完成时间, 例:2006-01-02
RealCompletedAt string `json:"realCompletedAt"` //实际完成时间, 例:2006-01-02
PlanCompletedAt string `json:"planCompletedAt,omitempty"` //计划完成时间, 例:2006-01-02
RealCompletedAt string `json:"realCompletedAt,omitempty"` //实际完成时间, 例:2006-01-02
}
... ...
... ... @@ -27,6 +27,12 @@ func dayEndTime(t time.Time) time.Time {
return t2
}
func dayZeroTime(t time.Time) time.Time {
y, m, d := t.Local().Date()
t2 := time.Date(y, m, d, 0, 0, 0, 0, time.Local)
return t2
}
func (srv TaskService) CreateTaskTest(param *command.CreateTaskCommand) error {
transactionContext, err := factory.CreateTransactionContext(nil)
if err != nil {
... ... @@ -108,7 +114,7 @@ func (srv TaskService) CreateTask(transactionContext application.TransactionCont
return application.ThrowError(application.INTERNAL_SERVER_ERROR, "创建任务失败:"+err.Error())
}
nowEndTime := dayEndTime(nowTime)
nowEndTime := dayZeroTime(nowTime)
newTaskStage := []*domain.TaskStage{
{
... ... @@ -590,7 +596,7 @@ func (t TaskService) CancelAttention(param *command.CancelAttentionCommand) erro
}
// 员工绩效-任务管理-列表
func (t TaskService) ListTask2(param command.SearchTaskCommand) (map[string]interface{}, error) {
func (t TaskService) ListTask2(param *command.SearchTaskCommand) (map[string]interface{}, error) {
transactionContext, err := factory.CreateTransactionContext(nil)
if err != nil {
return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
... ... @@ -605,6 +611,10 @@ func (t TaskService) ListTask2(param command.SearchTaskCommand) (map[string]inte
if err != nil {
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取用户的角色信息"+err.Error())
}
if hrbpFlag == domain.RoleTypeSystem {
listData, err := t.listTask2ForHrbp(param)
return listData, err
}
var limit = 20
var offset = 0
if param.PageSize > 0 {
... ... @@ -623,22 +633,204 @@ func (t TaskService) ListTask2(param command.SearchTaskCommand) (map[string]inte
LeaderId: param.LeaderId,
}
if hrbpFlag == domain.RoleTypeSystem {
//已hrbp权限获取
// info.IsHrbp = true
return nil, nil
}
taskDato := dao.NewTaskDao(map[string]interface{}{
"transactionContext": transactionContext,
})
taskDato.ListTaskStageNotHrbp(condition)
tasklistData, err := taskDato.ListTaskStageNotHrbp(condition)
if err != nil {
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取任务列表"+err.Error())
}
taskCount, err := taskDato.CountTaskStageNotHrbp(condition)
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())
}
return nil, nil
taskResult := []*adapter.TaskItem{}
taskMapResult := map[int]*adapter.TaskItem{}
for _, val := range tasklistData {
if _, ok := taskMapResult[val.TaskId]; ok {
continue
}
tk := adapter.TaskItem{
Id: val.TaskId,
Name: val.TaskName,
Alias: val.TaskAliasName,
Leader: val.LeaderName,
Status: val.TaskStatus,
Level: val.Level,
LevelName: val.LevelName,
// StageA: adapter.TaskStage{},
// StageB: adapter.TaskStage{},
// StageC: adapter.TaskStage{},
// StageD: adapter.TaskStage{},
// StageE: adapter.TaskStage{},
}
taskMapResult[val.TaskId] = &tk
taskResult = append(taskResult, &tk)
}
for _, val := range tasklistData {
taskData, ok := taskMapResult[val.TaskId]
if !ok {
continue
}
stage := adapter.TaskStage{
Id: val.StageId,
Name: val.StageName,
Status: val.StageStatus,
SortBy: val.StageSortBy,
}
switch val.StageSortBy {
case 1:
taskData.StageA = stage
case 2:
taskData.StageB = stage
case 3:
taskData.StageC = stage
case 4:
taskData.StageD = stage
case 5:
taskData.StageE = stage
}
}
result := tool_funs.SimpleWrapGridMap(int64(taskCount), taskResult)
return result, nil
}
// 以hrbp角色权限获取任务列表
func (t TaskService) ListTask2ForHrbp(param command.SearchTaskCommand) (map[string]interface{}, error) {
return nil, nil
func (t TaskService) listTask2ForHrbp(param *command.SearchTaskCommand) (map[string]interface{}, error) {
var limit = 20
var offset = 0
if param.PageSize > 0 {
limit = param.PageSize
if param.PageNumber > 0 {
offset = (param.PageNumber - 1) * param.PageSize
}
}
condition := dao.ListTaskCondition{
Limit: limit,
Offset: offset,
UserId: param.UserId,
TaskName: param.TaskName,
LevelName: param.LevelName,
OnlyMy: param.OnlyMy,
LeaderId: param.LeaderId,
}
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()
}()
taskDato := dao.NewTaskDao(map[string]interface{}{
"transactionContext": transactionContext,
})
tasklistData, err := taskDato.ListTaskStageByHrbp(condition)
if err != nil {
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取任务列表"+err.Error())
}
taskCount, err := taskDato.CountTaskStageByHrbp(condition)
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())
}
taskResult := []*adapter.TaskItem{}
taskMapResult := map[int]*adapter.TaskItem{}
for _, val := range tasklistData {
if _, ok := taskMapResult[val.TaskId]; ok {
continue
}
tk := adapter.TaskItem{
Id: val.TaskId,
Name: val.TaskName,
Alias: val.TaskAliasName,
Leader: val.LeaderName,
Status: val.TaskStatus,
Level: val.Level,
LevelName: val.LevelName,
// StageA: adapter.TaskStage{},
// StageB: adapter.TaskStage{},
// StageC: adapter.TaskStage{},
// StageD: adapter.TaskStage{},
// StageE: adapter.TaskStage{},
}
taskMapResult[val.TaskId] = &tk
taskResult = append(taskResult, &tk)
}
for _, val := range tasklistData {
taskData, ok := taskMapResult[val.TaskId]
if !ok {
continue
}
stage := adapter.TaskStage{
Id: val.StageId,
Name: val.StageName,
Status: val.StageStatus,
SortBy: val.StageSortBy,
}
switch val.StageSortBy {
case 1:
taskData.StageA = stage
case 2:
taskData.StageB = stage
case 3:
taskData.StageC = stage
case 4:
taskData.StageD = stage
case 5:
taskData.StageE = stage
}
}
result := tool_funs.SimpleWrapGridMap(int64(taskCount), taskResult)
return result, nil
}
// ReplyTaskStage 根据每日的任务反馈 ,更新任务里程碑
func (t TaskService) ReplyTaskStage(transactionContext application.TransactionContext, param []*domain.TaskRecord) error {
taskRepo := factory.CreateTaskRepository(map[string]interface{}{
"transactionContext": transactionContext,
})
taskStageRepo := factory.CreateTaskStageRepository(map[string]interface{}{
"transactionContext": transactionContext,
})
var taskList []*domain.Task
var taskStages []*domain.TaskStage
for _, val := range param {
taskData, err := taskRepo.FindOne(map[string]interface{}{"id": val.TaskId})
if err != nil {
return application.ThrowError(application.INTERNAL_SERVER_ERROR, "找不到任务数据"+err.Error())
}
if !(len(val.AssistContent) == 0 || val.AssistContent == "无") {
taskData.Anomaly = 0
}
taskList = append(taskList, taskData)
_, stageList, err := taskStageRepo.Find(map[string]interface{}{"ids": []int{val.TaskStageCheck.Id}})
if err != nil {
return application.ThrowError(application.INTERNAL_SERVER_ERROR, "找不到任务里程碑数据"+err.Error())
}
if len(stageList) > 0 {
stageList[0].Status = val.TaskStageCheck.Status
stageList[0].RealCompletedAt = val.TaskStageCheck.RealCompletedAt
taskStages = append(taskStages, stageList[0])
}
}
err := taskStageRepo.Save(taskStages)
if err != nil {
return application.ThrowError(application.INTERNAL_SERVER_ERROR, "保存任务里程碑数据"+err.Error())
}
for _, val := range taskList {
err = taskRepo.Save(val)
if err != nil {
return application.ThrowError(application.INTERNAL_SERVER_ERROR, "保存任务数据"+err.Error())
}
}
return nil
}
... ...
... ... @@ -26,7 +26,7 @@ type Task struct {
RelatedUser []int `json:"relatedUser"` // 相关的员工id
RunAt int64 `json:"runAt"` // 启动的时间戳,秒
StopAt int64 `json:"stopAt"` // 停止的时间戳,秒
Anomaly int `json:"anomaly"` //异常反馈的次数
Anomaly int `json:"anomaly"` // 异常反馈的次数
}
type TaskLeader struct {
... ...
... ... @@ -6,8 +6,7 @@ type TaskStageState int
const (
TaskStageUncompleted TaskStageState = 1 //里程碑未完成
// TaskStageCompletedOverdue TaskStageState = 2 //里程碑逾期完成
TaskStageCompleted TaskStageState = 2 //里程碑完成
TaskStageCompleted TaskStageState = 2 //里程碑完成
)
... ...
... ... @@ -71,8 +71,10 @@ type ListTaskCondition struct {
// 任务和里程碑列表
type ListTaskStage struct {
TaskId string `pg:"task_id"`
TaskId int `pg:"task_id"`
TaskName string `pg:"task_name"`
TaskStatus int `pg:"task_status"`
TaskAliasName string `pg:"task_alias_name"`
LeaderName string `pg:"leader_name"`
LeaderId string `pg:"leader_id"`
LevelName string `pg:"level_name"`
... ... @@ -80,6 +82,7 @@ type ListTaskStage struct {
Anomaly int `pg:"anomaly"`
UpdatedAt time.Time `pg:"updated_at"`
CreatedAt time.Time `pg:"created_at"`
StageId int `pg:"stage_id"`
StageName string `pg:"stage_name"`
StageSortBy int `pg:"stage_sort_by"`
StageStatus int `pg:"stage_status"`
... ... @@ -98,6 +101,7 @@ func (d *TaskDao) ListTaskStageNotHrbp(param ListTaskCondition) ([]ListTaskStage
select
task.id as task_id,
task."name" as task_name,
task."alias" as task_alias_name,
task.leader ->>'name' as leader_name,
task.leader ->>'id' as leader_id,
task.level_name ,
... ... @@ -105,6 +109,8 @@ func (d *TaskDao) ListTaskStageNotHrbp(param ListTaskCondition) ([]ListTaskStage
task.updated_at ,
task.created_at ,
task."level" ,
task."status" as task_status,
task_stage."id" as stage_id,
task_stage."name" as stage_name,
task_stage.sort_by as stage_sort_by,
task_stage.status as stage_status,
... ... @@ -131,6 +137,8 @@ func (d *TaskDao) ListTaskStageNotHrbp(param ListTaskCondition) ([]ListTaskStage
select
t_task_tage_1.task_id,
t_task_tage_1.task_name,
t_task_tage_1.task_alias_name,
t_task_tage_1.task_status,
t_task_tage_1.leader_name,
t_task_tage_1.level_name ,
t_task_tage_1.anomaly ,
... ... @@ -139,8 +147,9 @@ func (d *TaskDao) ListTaskStageNotHrbp(param ListTaskCondition) ([]ListTaskStage
t_task_tage_1."level" ,
t_task_tage_1.plan_completed_at,
t_task_tage_1.stage_name,
t_task_tage_1.stage_id,
t_task_tage_1.stage_sort_by,
t_task_tage_1.stage_status,
t_task_tage_1.stage_status
from t_task_tage_1
where t_task_tage_1.task_id in(
select t_task_page.task_id from t_task_page
... ... @@ -214,6 +223,8 @@ func (d *TaskDao) ListTaskStageByHrbp(param ListTaskCondition) ([]ListTaskStage,
select
task.id as task_id,
task."name" as task_name,
task."alias" as task_alias_name,
task."status" as task_status,
task.leader ->>'name' as leader_name,
task.leader ->>'id' as leader_id,
task.level_name ,
... ... @@ -221,6 +232,7 @@ func (d *TaskDao) ListTaskStageByHrbp(param ListTaskCondition) ([]ListTaskStage,
task.updated_at ,
task.created_at ,
task."level" ,
task_stage."id" as stage_id,
task_stage."name" as stage_name,
task_stage.sort_by as stage_sort_by,
task_stage.status as stage_status,
... ... @@ -247,6 +259,8 @@ func (d *TaskDao) ListTaskStageByHrbp(param ListTaskCondition) ([]ListTaskStage,
select
t_task_tage_1.task_id,
t_task_tage_1.task_name,
t_task_tage_1.task_alias_name,
t_task_tage_1.task_status,
t_task_tage_1.leader_name,
t_task_tage_1.level_name ,
t_task_tage_1.anomaly ,
... ... @@ -255,8 +269,9 @@ func (d *TaskDao) ListTaskStageByHrbp(param ListTaskCondition) ([]ListTaskStage,
t_task_tage_1."level" ,
t_task_tage_1.plan_completed_at,
t_task_tage_1.stage_name,
t_task_tage_1.stage_id,
t_task_tage_1.stage_sort_by,
t_task_tage_1.stage_status,
t_task_tage_1.stage_status
from t_task_tage_1
where t_task_tage_1.task_id in(
select t_task_page.task_id from t_task_page
... ...
... ... @@ -110,7 +110,9 @@ func (repo *TaskStageRepository) Find(queryOptions map[string]interface{}) (int,
if val, ok := queryOptions["taskId"]; ok {
query.Where("task_stage.task_id = ?", val)
}
if val, ok := queryOptions["ids"]; ok {
query.Where("task_stage.id in(?)", pg.In(val))
}
if val, ok := queryOptions["taskIdList"]; ok {
query.Where("task_stage.task_id in(?)", pg.In(val))
}
... ...
... ... @@ -107,7 +107,7 @@ func (c *TaskController) ListTask() {
c.Response(data, err)
}
// CancelAttention 取消关注的任务
// CancelAttention 员工绩效-任务管理列表-取消关注的任务
func (c *TaskController) CancelAttention() {
srv := service.NewTaskService()
paramReq := &command.CancelAttentionCommand{}
... ... @@ -122,3 +122,20 @@ func (c *TaskController) CancelAttention() {
err = srv.CancelAttention(paramReq)
c.Response(nil, err)
}
// ListTask2 员工绩效-任务管理列表
func (c *TaskController) ListTask2() {
srv := service.NewTaskService()
paramReq := &command.SearchTaskCommand{}
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.UserId = int(userReq.UserId)
result, err := srv.ListTask2(paramReq)
c.Response(result, err)
}
... ...
... ... @@ -18,11 +18,11 @@ func init() {
web.NSCtrlPost("/list", (*controllers.TaskController).ListTask),
)
web.AddNamespace(taskAdminNS)
// 员工绩效模块
taskFontNS := web.NewNamespace("/v1/font/task",
web.NSBefore(filters.AllowCors(), middlewares.CheckFontToken()),
web.NSCtrlPost("/attention/cancel", (*controllers.TaskController).CancelAttention),
web.NSCtrlPost("/list", (*controllers.TaskController).ListTask), //TODO
web.NSCtrlPost("/list", (*controllers.TaskController).ListTask2),
)
web.AddNamespace(taskFontNS)
... ...