作者 tangxvhui

添加 异常详情接口

... ... @@ -2,6 +2,7 @@ package service
import (
"fmt"
"sort"
"strconv"
"strings"
"time"
... ... @@ -732,7 +733,7 @@ func (srv TaskService) ListTreeTaskAnomaly3(param *command.ListTaskAnomalyComman
}
// 异常任务记录的详情
func (srv TaskService) TaskAnomalyInfo(param command.GetTaskAnomalyCommand) (*adapter.TaskAnomalyInfo, error) {
func (srv TaskService) TaskAnomalyInfo(param *command.GetTaskAnomalyCommand) (*adapter.TaskAnomalyInfo, error) {
transactionContext, err := factory.CreateTransactionContext(nil)
if err != nil {
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
... ... @@ -823,14 +824,97 @@ func (srv TaskService) TaskAnomalyInfo(param command.GetTaskAnomalyCommand) (*ad
TaskSortBy: int(taskData.SortBy),
RecordBegin: anomalyData.RecordBegin,
CreatedAt: anomalyData.CreatedAt.Local().Format("066-017"),
MarkA: "",
MarkB: "",
MarkC: "",
MarkD: "",
MarkA: anomalyData.Marks["a"],
MarkB: anomalyData.Marks["b"],
MarkC: anomalyData.Marks["c"],
MarkD: anomalyData.Marks["d"],
AnomalyDesc: "",
AnomalyDesc2: map[string]string{
"": "",
},
}
noticeWho := []string{}
for _, val2 := range anomalyData.NoticeWho {
if name, ok := val2["name"]; ok {
noticeWho = append(noticeWho, name)
}
}
switch anomalyData.Category {
case domain.AnomalyCategoryType1:
{
//里程碑异常
if anomalyData.TaskStageCheck.RealCompletedAt == 0 && anomalyData.TaskStageCheck.Id > 0 {
//逾期未完成
planCompletedAt := time.Unix(anomalyData.TaskStageCheck.PlanCompletedAt, 0)
subDay := xtime.SubDayAbs(anomalyData.CreatedAt, planCompletedAt)
result.AnomalyDesc = fmt.Sprintf("里程碑%s已逾期%d天", anomalyData.TaskStageCheck.Name, subDay)
result.AnomalyDesc2 = map[string]string{
"types": "10",
"stageName": anomalyData.TaskStageCheck.Name,
"interval": strconv.Itoa(subDay),
"noticeWho": strings.Join(noticeWho, ","),
}
} else if anomalyData.TaskStageCheck.RealCompletedAt > 0 && anomalyData.TaskStageCheck.Id > 0 {
//逾期完成
planCompletedAt := time.Unix(anomalyData.TaskStageCheck.PlanCompletedAt, 0)
realCompletedAt := time.Unix(anomalyData.TaskStageCheck.RealCompletedAt, 0)
subDay := xtime.SubDayAbs(realCompletedAt, planCompletedAt)
result.AnomalyDesc = fmt.Sprintf("里程碑%s逾期%d天完成", anomalyData.TaskStageCheck.Name, subDay)
result.AnomalyDesc2 = map[string]string{
"types": "11",
"stageName": anomalyData.TaskStageCheck.Name,
"interval": strconv.Itoa(subDay),
"noticeWho": strings.Join(noticeWho, ","),
}
}
}
case domain.AnomalyCategoryType2:
//反馈异常
{
recordBegin := time.Unix(anomalyData.RecordBegin, 0)
subDay := xtime.SubDayAbs(anomalyData.CreatedAt, recordBegin)
result.AnomalyDesc = fmt.Sprintf(
"本任务自%s未正常反馈项目进度,已异常%d天",
recordBegin.Local().Format("2006-01-02"),
subDay,
)
result.AnomalyDesc2 = map[string]string{
"types": "2",
"dayTime": recordBegin.Local().Format("2006-01-02"),
"interval": strconv.Itoa(subDay),
"noticeWho": strings.Join(noticeWho, ","),
}
}
case domain.AnomalyCategoryType3:
//辅导异常
{
recordBegin := time.Unix(anomalyData.RecordBegin, 0)
subDay := xtime.SubDayAbs(anomalyData.CreatedAt, recordBegin)
result.AnomalyDesc = fmt.Sprintf(
"本任务计划于%s完成辅导,已逾期%d天",
recordBegin.Local().Format("2006-01-02"),
subDay,
)
result.AnomalyDesc2 = map[string]string{
"types": "3",
"dayTime": recordBegin.Local().Format("2006-01-02"),
"interval": strconv.Itoa(subDay),
"noticeWho": strings.Join(noticeWho, ","),
}
}
}
sort.Slice(stageList, func(i, j int) bool {
return stageList[i].SortBy < stageList[j].SortBy
})
for _, val := range stageList {
result.ListStage = append(result.ListStage, adapter.TaskStage{
Id: val.Id,
Name: val.Name,
StatusDescription: val.StatusDescription(),
SortBy: val.SortBy,
PlanCompletedAt: time.Unix(val.PlanCompletedAt, 0).Format("2006-01-02"),
})
}
return result, nil
}
... ...
... ... @@ -370,3 +370,19 @@ func (c *TaskController) TaskAnomalyList3Tree() {
resp, err := srv.ListTreeTaskAnomaly2(paramReq)
c.Response(resp, err)
}
// TaskAnomalyInfo 任务异常记录详情
func (c *TaskController) TaskAnomalyInfo() {
srv := service.NewTaskService()
paramReq := &command.GetTaskAnomalyCommand{}
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)
resp, err := srv.TaskAnomalyInfo(paramReq)
c.Response(resp, err)
}
... ...
... ... @@ -34,15 +34,16 @@ func init() {
web.NSCtrlPost("/ignore/cancel", (*controllers.TaskController).CancelIgnore),
)
web.AddNamespace(taskFontNS)
taskAnomalyNS := web.NewNamespace("/v1/font",
taskAnomalyNS := web.NewNamespace("/v1/font/task_anomaly",
web.NSBefore(filters.AllowCors(), middlewares.CheckFontToken()),
web.NSCtrlPost("/task_anomaly/my_task", (*controllers.TaskController).TaskAnomalyList1), //我负责的任务
web.NSCtrlPost("/task_anomaly/my_relation", (*controllers.TaskController).TaskAnomalyList3), //和我有关的任务
web.NSCtrlPost("/task_anomaly/my_relation_1", (*controllers.TaskController).TaskAnomalyList3Tree), //和我有关的任务
web.NSCtrlPost("/task_anomaly/my_sub", (*controllers.TaskController).TaskAnomalyList2), //我的下级负责的任务
web.NSCtrlPost("/task_anomaly/my_sub_1", (*controllers.TaskController).TaskAnomalyList2Tree), //我的下级负责的任务
web.NSCtrlPost("/task_anomaly/select/user", (*controllers.TaskController).UserSelect), //人员下拉选择列表
web.NSCtrlPost("/task_anomaly/marks", (*controllers.TaskController).TaskAnomalyMark),
web.NSCtrlPost("/my_task", (*controllers.TaskController).TaskAnomalyList1), //我负责的任务
web.NSCtrlPost("/my_relation", (*controllers.TaskController).TaskAnomalyList3), //和我有关的任务
web.NSCtrlPost("/my_relation_1", (*controllers.TaskController).TaskAnomalyList3Tree), //和我有关的任务
web.NSCtrlPost("/my_sub", (*controllers.TaskController).TaskAnomalyList2), //我的下级负责的任务
web.NSCtrlPost("/my_sub_1", (*controllers.TaskController).TaskAnomalyList2Tree), //我的下级负责的任务
web.NSCtrlPost("/select/user", (*controllers.TaskController).UserSelect), //人员下拉选择列表
web.NSCtrlPost("/marks", (*controllers.TaskController).TaskAnomalyMark), //
web.NSCtrlPost("/info", (*controllers.TaskController).TaskAnomalyInfo), //异常记录详情
)
web.AddNamespace(taskAnomalyNS)
}
... ...