diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go index 14bd2e2d1..5cd84760b 100755 --- a/routers/api/v1/api.go +++ b/routers/api/v1/api.go @@ -557,7 +557,7 @@ func RegisterRoutes(m *macaron.Macaron) { m.Get("/query_user_all", operationReq, repo_ext.QueryUserStaticAll) //cloudbrain board m.Group("/cloudbrainboard", func() { - m.Get("/downloadStatistics", repo.ServeCloudbrainPeriodStatisticsFile) + // m.Get("/downloadStatistics", repo.ServeCloudbrainPeriodStatisticsFile) m.Get("/downloadAll", repo.DownloadCloudBrainBoard) m.Group("/cloudbrain", func() { m.Get("/trend", repo.GetAllCloudbrainsTrend) diff --git a/routers/api/v1/repo/cloudbrain_dashboard.go b/routers/api/v1/repo/cloudbrain_dashboard.go index ab26d7dfc..ca7368a24 100644 --- a/routers/api/v1/repo/cloudbrain_dashboard.go +++ b/routers/api/v1/repo/cloudbrain_dashboard.go @@ -195,7 +195,7 @@ func GetAllCloudbrainsTrend(ctx *context.Context) { func GetAllCloudbrainsPeriodStatistics(ctx *context.Context) { - recordBeginTime, err := getRecordBeginTime() + recordBeginTime, err := getBrainRecordBeginTime() if err != nil { log.Error("Can not get record begin time", err) ctx.Error(http.StatusBadRequest, ctx.Tr("repo.record_begintime_get_err")) @@ -272,83 +272,84 @@ func GetAllCloudbrainsPeriodStatistics(ctx *context.Context) { ctx.JSON(http.StatusOK, cloudbrainsPeriodData) } -func getCloudbrainTimePeroid(ctx *context.Context, recordBeginTime time.Time) (time.Time, time.Time, error) { - queryType := ctx.QueryTrim("type") - now := time.Now() - recordBeginTimeTemp := recordBeginTime.AddDate(0, 0, 1) - beginTimeStr := ctx.QueryTrim("beginTime") - endTimeStr := ctx.QueryTrim("endTime") - var beginTime time.Time - var endTime time.Time - var err error - if queryType != "" { +// func getCloudbrainTimePeroid(ctx *context.Context, recordBeginTime time.Time) (time.Time, time.Time, error) { +// queryType := ctx.QueryTrim("type") +// now := time.Now() +// recordBeginTimeTemp := recordBeginTime.AddDate(0, 0, 1) - if queryType == "all" { - beginTime = recordBeginTimeTemp - endTime = now - } else if queryType == "yesterday" { - endTime = now - beginTime = time.Date(endTime.Year(), endTime.Month(), endTime.Day(), 0, 0, 0, 0, now.Location()) +// beginTimeStr := ctx.QueryTrim("beginTime") +// endTimeStr := ctx.QueryTrim("endTime") +// var beginTime time.Time +// var endTime time.Time +// var err error +// if queryType != "" { - } else if queryType == "current_week" { - beginTime = now.AddDate(0, 0, -int(time.Now().Weekday())+2) //begin from monday - beginTime = time.Date(beginTime.Year(), beginTime.Month(), beginTime.Day(), 0, 0, 0, 0, now.Location()) - endTime = now - } else if queryType == "current_month" { - endTime = now - beginTime = time.Date(endTime.Year(), endTime.Month(), 2, 0, 0, 0, 0, now.Location()) - } else if queryType == "monthly" { - endTime = now - beginTime = now.AddDate(0, -1, 1) - beginTime = time.Date(beginTime.Year(), beginTime.Month(), beginTime.Day(), 0, 0, 0, 0, now.Location()) +// if queryType == "all" { +// beginTime = recordBeginTimeTemp +// endTime = now +// } else if queryType == "yesterday" { +// endTime = now +// beginTime = time.Date(endTime.Year(), endTime.Month(), endTime.Day(), 0, 0, 0, 0, now.Location()) - } else if queryType == "current_year" { - endTime = now - beginTime = time.Date(endTime.Year(), 1, 2, 0, 0, 0, 0, now.Location()) +// } else if queryType == "current_week" { +// beginTime = now.AddDate(0, 0, -int(time.Now().Weekday())+2) //begin from monday +// beginTime = time.Date(beginTime.Year(), beginTime.Month(), beginTime.Day(), 0, 0, 0, 0, now.Location()) +// endTime = now +// } else if queryType == "current_month" { +// endTime = now +// beginTime = time.Date(endTime.Year(), endTime.Month(), 2, 0, 0, 0, 0, now.Location()) +// } else if queryType == "monthly" { +// endTime = now +// beginTime = now.AddDate(0, -1, 1) +// beginTime = time.Date(beginTime.Year(), beginTime.Month(), beginTime.Day(), 0, 0, 0, 0, now.Location()) - } else if queryType == "last_month" { +// } else if queryType == "current_year" { +// endTime = now +// beginTime = time.Date(endTime.Year(), 1, 2, 0, 0, 0, 0, now.Location()) - lastMonthTime := now.AddDate(0, -1, 0) - beginTime = time.Date(lastMonthTime.Year(), lastMonthTime.Month(), 2, 0, 0, 0, 0, now.Location()) - endTime = time.Date(now.Year(), now.Month(), 2, 0, 0, 0, 0, now.Location()) +// } else if queryType == "last_month" { - } else { - return now, now, fmt.Errorf("The value of type parameter is wrong.") +// lastMonthTime := now.AddDate(0, -1, 0) +// beginTime = time.Date(lastMonthTime.Year(), lastMonthTime.Month(), 2, 0, 0, 0, 0, now.Location()) +// endTime = time.Date(now.Year(), now.Month(), 2, 0, 0, 0, 0, now.Location()) - } +// } else { +// return now, now, fmt.Errorf("The value of type parameter is wrong.") - } else { - if beginTimeStr == "" || endTimeStr == "" { - //如果查询类型和开始时间结束时间都未设置,按queryType=all处理 - beginTime = recordBeginTimeTemp - endTime = now +// } - } else { +// } else { +// if beginTimeStr == "" || endTimeStr == "" { +// //如果查询类型和开始时间结束时间都未设置,按queryType=all处理 +// beginTime = recordBeginTimeTemp +// endTime = now - beginTime, err = time.ParseInLocation("2006-01-02", beginTimeStr, time.Local) - if err != nil { - return now, now, err - } +// } else { - endTime, err = time.ParseInLocation("2006-01-02", endTimeStr, time.Local) - if err != nil { - return now, now, err - } +// beginTime, err = time.ParseInLocation("2006-01-02", beginTimeStr, time.Local) +// if err != nil { +// return now, now, err +// } - beginTime = beginTime.AddDate(0, 0, 1) - endTime = endTime.AddDate(0, 0, 1) - } +// endTime, err = time.ParseInLocation("2006-01-02", endTimeStr, time.Local) +// if err != nil { +// return now, now, err +// } - } +// beginTime = beginTime.AddDate(0, 0, 1) +// endTime = endTime.AddDate(0, 0, 1) +// } - if beginTime.Before(recordBeginTimeTemp) { - beginTime = recordBeginTimeTemp - } +// } - return beginTime, endTime, nil +// if beginTime.Before(recordBeginTimeTemp) { +// beginTime = recordBeginTimeTemp +// } -} +// return beginTime, endTime, nil + +// } func getCloudbrainCount(beginTime time.Time, endTime time.Time) (int64, int64, int64, int64, int64, int64, int64, int64, int64, error) { debugOneCount, err := models.GenerateDebugOneCount(beginTime, endTime) @@ -465,78 +466,78 @@ func getBrainRecordBeginTime() (time.Time, error) { return time.ParseInLocation(DATE_FORMAT, setting.BrainRecordBeginTime, time.Local) } -func ServeCloudbrainPeriodStatisticsFile(ctx *context.Context) { - - recordBeginTime, err := getRecordBeginTime() - if err != nil { - log.Error("Can not get record begin time", err) - ctx.Error(http.StatusBadRequest, ctx.Tr("repo.record_begintime_get_err")) - return - } - beginTime, endTime, err := getCloudbrainTimePeroid(ctx, recordBeginTime) - if err != nil { - log.Error("Parameter is wrong", err) - ctx.Error(http.StatusBadRequest, ctx.Tr("repo.parameter_is_wrong")) - return - } - q := ctx.QueryTrim("q") - page := ctx.QueryInt("page") - if page <= 0 { - page = 1 - } - pageSize := 1000 - orderBy := getOrderBy(ctx) - - _, latestDate, err := models.GetRepoStatLastUpdatedTime() - if err != nil { - log.Error("Can not query the last updated time.", err) - ctx.Error(http.StatusBadRequest, ctx.Tr("repo.last_update_time_error")) - return - } - - countSql := generateCountSql(beginTime, endTime, latestDate, q) - total, err := models.CountRepoStatByRawSql(countSql) - if err != nil { - log.Error("Can not query total count.", err) - ctx.Error(http.StatusBadRequest, ctx.Tr("repo.total_count_get_error")) - return - } - var projectAnalysis = ctx.Tr("repo.repo_stat_inspect") - fileName := getFileName(ctx, beginTime, endTime, projectAnalysis) - - totalPage := getTotalPage(total, pageSize) - - f := excelize.NewFile() - - index := f.NewSheet(projectAnalysis) - f.DeleteSheet("Sheet1") - - for k, v := range allProjectsPeroidHeader(ctx) { - f.SetCellValue(projectAnalysis, k, v) - } - - var row = 2 - for i := 0; i <= totalPage; i++ { - - pageRecords := models.GetRepoStatisticByRawSql(generateSqlByType(ctx, beginTime, endTime, latestDate, q, orderBy, i+1, pageSize)) - for _, record := range pageRecords { - - for k, v := range allProjectsPeroidValues(row, record, ctx) { - f.SetCellValue(projectAnalysis, k, v) - } - row++ - - } - - } - f.SetActiveSheet(index) - - ctx.Resp.Header().Set("Content-Disposition", "attachment; filename="+url.QueryEscape(fileName)) - ctx.Resp.Header().Set("Content-Type", "application/octet-stream") - - f.WriteTo(ctx.Resp) - -} +// func ServeCloudbrainPeriodStatisticsFile(ctx *context.Context) { + +// recordBeginTime, err := getRecordBeginTime() +// if err != nil { +// log.Error("Can not get record begin time", err) +// ctx.Error(http.StatusBadRequest, ctx.Tr("repo.record_begintime_get_err")) +// return +// } +// beginTime, endTime, err := getCloudbrainTimePeroid(ctx, recordBeginTime) +// if err != nil { +// log.Error("Parameter is wrong", err) +// ctx.Error(http.StatusBadRequest, ctx.Tr("repo.parameter_is_wrong")) +// return +// } +// q := ctx.QueryTrim("q") +// page := ctx.QueryInt("page") +// if page <= 0 { +// page = 1 +// } +// pageSize := 1000 +// orderBy := getOrderBy(ctx) + +// _, latestDate, err := models.GetRepoStatLastUpdatedTime() +// if err != nil { +// log.Error("Can not query the last updated time.", err) +// ctx.Error(http.StatusBadRequest, ctx.Tr("repo.last_update_time_error")) +// return +// } + +// countSql := generateCountSql(beginTime, endTime, latestDate, q) +// total, err := models.CountRepoStatByRawSql(countSql) +// if err != nil { +// log.Error("Can not query total count.", err) +// ctx.Error(http.StatusBadRequest, ctx.Tr("repo.total_count_get_error")) +// return +// } +// var projectAnalysis = ctx.Tr("repo.repo_stat_inspect") +// fileName := getFileName(ctx, beginTime, endTime, projectAnalysis) + +// totalPage := getTotalPage(total, pageSize) + +// f := excelize.NewFile() + +// index := f.NewSheet(projectAnalysis) +// f.DeleteSheet("Sheet1") + +// for k, v := range allProjectsPeroidHeader(ctx) { +// f.SetCellValue(projectAnalysis, k, v) +// } + +// var row = 2 +// for i := 0; i <= totalPage; i++ { + +// pageRecords := models.GetRepoStatisticByRawSql(generateSqlByType(ctx, beginTime, endTime, latestDate, q, orderBy, i+1, pageSize)) +// for _, record := range pageRecords { + +// for k, v := range allProjectsPeroidValues(row, record, ctx) { +// f.SetCellValue(projectAnalysis, k, v) +// } +// row++ + +// } + +// } +// f.SetActiveSheet(index) + +// ctx.Resp.Header().Set("Content-Disposition", "attachment; filename="+url.QueryEscape(fileName)) +// ctx.Resp.Header().Set("Content-Type", "application/octet-stream") + +// f.WriteTo(ctx.Resp) + +// } func DownloadCloudBrainBoard(ctx *context.Context) { page := 1 @@ -570,7 +571,7 @@ func DownloadCloudBrainBoard(ctx *context.Context) { index := f.NewSheet(cloudBrain) f.DeleteSheet("Sheet1") - for k, v := range allHeader(ctx) { + for k, v := range allCloudbrainHeader(ctx) { f.SetCellValue(cloudBrain, k, v) } @@ -591,7 +592,7 @@ func DownloadCloudBrainBoard(ctx *context.Context) { } for _, record := range pageRecords { - for k, v := range allValues(row, record, ctx) { + for k, v := range allCloudbrainValues(row, record, ctx) { f.SetCellValue(cloudBrain, k, v) } row++ @@ -612,23 +613,25 @@ func getCloudbrainFileName(baseName string) string { return baseName + "_" + time.Now().Format(EXCEL_DATE_FORMAT) + ".xlsx" } -func allHeader(ctx *context.Context) map[string]string { +func allCloudbrainHeader(ctx *context.Context) map[string]string { return map[string]string{"A1": ctx.Tr("repo.cloudbrain_task"), "B1": ctx.Tr("repo.cloudbrain_task_type"), "C1": ctx.Tr("repo.modelarts.status"), - "D1": ctx.Tr("repo.modelarts.createtime"), "E1": ctx.Tr("repo.modelarts.train_job.dura_time"), "F1": ctx.Tr("repo.modelarts.computing_resources"), - "G1": ctx.Tr("repo.cloudbrain_creator"), "H1": ctx.Tr("repo.repo_name"), "I1": ctx.Tr("repo.cloudbrain_task_name"), "J1": ctx.Tr("repo.modelarts.train_job.start_time"), - "K1": ctx.Tr("repo.modelarts.train_job.end_time"), "L1": ctx.Tr("repo.modelarts.train_job.wait_time")} + "D1": ctx.Tr("repo.modelarts.createtime"), "E1": ctx.Tr("repo.modelarts.train_job.wait_time"), "F1": ctx.Tr("repo.modelarts.train_job.dura_time"), + "G1": ctx.Tr("repo.modelarts.train_job.start_time"), + "H1": ctx.Tr("repo.modelarts.train_job.end_time"), "I1": ctx.Tr("repo.modelarts.computing_resources"), + "J1": ctx.Tr("repo.cloudbrain_creator"), "K1": ctx.Tr("repo.repo_name"), "L1": ctx.Tr("repo.cloudbrain_task_name")} } -func allValues(row int, rs *models.CloudbrainInfo, ctx *context.Context) map[string]string { +func allCloudbrainValues(row int, rs *models.CloudbrainInfo, ctx *context.Context) map[string]string { return map[string]string{getCellName("A", row): rs.DisplayJobName, getCellName("B", row): rs.JobType, getCellName("C", row): rs.Status, - getCellName("D", row): time.Unix(int64(rs.Cloudbrain.CreatedUnix), 0).Format(CREATE_TIME_FORMAT), getCellName("E", row): rs.TrainJobDuration, - getCellName("F", row): rs.ComputeResource, getCellName("G", row): rs.Name, getCellName("H", row): getRepoPathName(rs), - getCellName("I", row): rs.JobName, getCellName("J", row): getBrainStartTime(rs), - getCellName("K", row): getBrainEndTime(rs), getCellName("L", row): getBrainWaitTime(rs), + getCellName("D", row): time.Unix(int64(rs.Cloudbrain.CreatedUnix), 0).Format(CREATE_TIME_FORMAT), getCellName("E", row): getBrainWaitTime(rs), + getCellName("F", row): rs.TrainJobDuration, getCellName("G", row): getBrainStartTime(rs), + getCellName("H", row): getBrainEndTime(rs), + getCellName("I", row): rs.ComputeResource, getCellName("J", row): rs.Name, getCellName("K", row): getBrainRepo(rs), + getCellName("L", row): rs.JobName, } } -func getRepoPathName(rs *models.CloudbrainInfo) string { +func getBrainRepo(rs *models.CloudbrainInfo) string { if rs.Repo != nil { return rs.Repo.OwnerName + "/" + rs.Repo.Alias }