...
|
...
|
@@ -3,6 +3,7 @@ package domain |
|
|
import (
|
|
|
"errors"
|
|
|
"sort"
|
|
|
"strings"
|
|
|
"time"
|
|
|
)
|
|
|
|
...
|
...
|
@@ -58,30 +59,30 @@ func (t TaskSortBy) Named() string { |
|
|
|
|
|
// 任务
|
|
|
type Task struct {
|
|
|
Id int `json:"id"`
|
|
|
CreatedAt time.Time `json:"createdAt"`
|
|
|
UpdatedAt time.Time `json:"updatedAt"`
|
|
|
DeletedAt *time.Time `json:"deletedAt"`
|
|
|
CompanyId int `json:"companyId,string"`
|
|
|
Name string `json:"name"` // 任务名称
|
|
|
Alias string `json:"alias"` // 任务别名
|
|
|
Leader TaskLeader `json:"leader"` // 任务负责人
|
|
|
Status TaskState `json:"status"` // 任务的状态
|
|
|
Level int `json:"level"` // 优先级 (优先级字段表示的意义变更,不再需要这个字段,仅数据保留)
|
|
|
LevelName string `json:"levelName"` // 字段表示的意义变更; 原来 (“优先级名称“)=> 现在 (“任务类型“)
|
|
|
SortBy TaskSortBy `json:"sortBy"` // 优先级排序;值越小优先级越高
|
|
|
EndTime int64 `json:"endTime"` // 任务截止的时间戳,单位:秒;等于0时表示未设置时间
|
|
|
UseEndTime int `json:"useEndTime"` // 是否应用任务截止的时间;默认值0:不应用,1:应用
|
|
|
RelatedUser []int `json:"relatedUser"` // 相关的员工id
|
|
|
RunAt int64 `json:"runAt"` // 启动的时间戳,单位:秒
|
|
|
StopAt int64 `json:"stopAt"` // 停止的时间戳,单位:秒
|
|
|
Anomaly int `json:"anomaly"` // 异常反馈的次数
|
|
|
WarnFlag TaskWarnFlag `json:"warnFlag"` // 里程碑异常标记
|
|
|
AssistFlag int `json:"assistFlag"` // 辅导异常标记
|
|
|
AssistFlagMax int `json:"assistFlagMax"` // 辅导异常标记最大值
|
|
|
CurrentStage TaskStage `json:"currentStage"` // 当前执行的里程碑
|
|
|
LastStage TaskStage `json:"lastStage"` // 上一个完成的里程碑
|
|
|
CreatedBy int `json:"createdBy"` // 任务的创建方式 0: 根据模板中的任务创建,1:页面主动直接创建
|
|
|
Id int `json:"id"`
|
|
|
CreatedAt time.Time `json:"createdAt"`
|
|
|
UpdatedAt time.Time `json:"updatedAt"`
|
|
|
DeletedAt *time.Time `json:"deletedAt"`
|
|
|
CompanyId int `json:"companyId,string"`
|
|
|
Name string `json:"name"` // 任务名称
|
|
|
Alias string `json:"alias"` // 任务别名
|
|
|
Leader TaskLeader `json:"leader"` // 任务负责人
|
|
|
Status TaskState `json:"status"` // 任务的状态
|
|
|
Level int `json:"level"` // 优先级 (优先级字段表示的意义变更,不再需要这个字段,仅数据保留)
|
|
|
LevelName string `json:"levelName"` // 字段表示的意义变更; 原来 (“优先级名称“)=> 现在 (“任务类型“)
|
|
|
SortBy TaskSortBy `json:"sortBy"` // 优先级排序;值越小优先级越高
|
|
|
EndTime int64 `json:"endTime"` // 任务截止的时间戳,单位:秒;等于0时表示未设置时间
|
|
|
UseEndTime int `json:"useEndTime"` // 是否应用任务截止的时间;默认值0:不应用,1:应用
|
|
|
RelatedUser []int `json:"relatedUser"` // 相关的员工id
|
|
|
RunAt int64 `json:"runAt"` // 启动的时间戳,单位:秒
|
|
|
StopAt int64 `json:"stopAt"` // 停止的时间戳,单位:秒
|
|
|
Anomaly int `json:"anomaly"` // 异常反馈的次数
|
|
|
WarnFlag int `json:"warnFlag"` // 里程碑异常标记
|
|
|
AssistFlag int `json:"assistFlag"` // 辅导异常标记
|
|
|
AssistFlagMax int `json:"assistFlagMax"` // 辅导异常标记最大值
|
|
|
CurrentStage TaskStage `json:"currentStage"` // 当前执行的里程碑
|
|
|
LastStage TaskStage `json:"lastStage"` // 上一个完成的里程碑
|
|
|
CreatedBy int `json:"createdBy"` // 任务的创建方式 0: 根据模板中的任务创建,1:页面主动直接创建
|
|
|
}
|
|
|
|
|
|
type TaskLeader struct {
|
...
|
...
|
@@ -160,7 +161,7 @@ func (t *Task) DescriptTaskStatus() string { |
|
|
if t.Status == TaskStop {
|
|
|
statusNamed = "已停止"
|
|
|
}
|
|
|
if t.WarnFlag == TaskWarn {
|
|
|
if t.WarnFlag > 0 {
|
|
|
statusNamed = "里程碑异常"
|
|
|
}
|
|
|
if t.Anomaly > 0 {
|
...
|
...
|
@@ -176,6 +177,51 @@ func (t *Task) Copy() Task { |
|
|
return t2
|
|
|
}
|
|
|
|
|
|
// 检查每日任务是否异常,并记录异常情况
|
|
|
func (t *Task) CheckAndRecordAnomaly(taskRecordData *TaskRecord) {
|
|
|
nowTime := time.Now().Unix()
|
|
|
// 检查是否是里程碑异常
|
|
|
{
|
|
|
if taskRecordData.TaskStageCheck.Id > 0 {
|
|
|
if taskRecordData.TaskStageCheck.RealCompletedAt == 0 && taskRecordData.TaskStageCheck.PlanCompletedAt < nowTime {
|
|
|
// 超期未完成
|
|
|
t.WarnFlag += 1
|
|
|
} else if taskRecordData.TaskStageCheck.RealCompletedAt > 0 {
|
|
|
// 里程碑完成, 重置计数
|
|
|
t.WarnFlag = 0
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
// 检查反馈异常
|
|
|
{
|
|
|
t.Anomaly += 1
|
|
|
for _, val := range taskRecordData.RemarkContent {
|
|
|
txt := strings.TrimSpace(val.RemarkText)
|
|
|
if len(txt) == 0 || txt == "无" {
|
|
|
continue
|
|
|
}
|
|
|
//反馈正常,重置计数
|
|
|
t.Anomaly = 0
|
|
|
break
|
|
|
}
|
|
|
}
|
|
|
// 检查辅导异常
|
|
|
{
|
|
|
taskRecordData.AssistContent = strings.TrimSpace(taskRecordData.AssistContent)
|
|
|
if t.Anomaly == 0 && t.WarnFlag == 0 {
|
|
|
//里程碑正常,反馈正常, 设定为已辅导
|
|
|
t.AssistFlag = 0
|
|
|
} else {
|
|
|
//里程碑和反馈 其中一个不正常,记录一次辅导异常
|
|
|
t.AssistFlag += 1
|
|
|
}
|
|
|
if taskRecordData.AssistLevel != AssistLevel1 && !(taskRecordData.AssistContent == "无" || len(taskRecordData.AssistContent) == 0) {
|
|
|
//只要正常填写的辅导都设定为已辅导
|
|
|
t.AssistFlag = 0
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
type TaskRepository interface {
|
|
|
Save(param *Task) error
|
|
|
Remove(id int) error
|
...
|
...
|
|