Browse Source

update

tags/v1.22.6.1^2
liuzx 3 years ago
parent
commit
17a1960158
2 changed files with 149 additions and 146 deletions
  1. +1
    -1
      routers/api/v1/api.go
  2. +148
    -145
      routers/api/v1/repo/cloudbrain_dashboard.go

+ 1
- 1
routers/api/v1/api.go View File

@@ -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)


+ 148
- 145
routers/api/v1/repo/cloudbrain_dashboard.go View File

@@ -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
}


Loading…
Cancel
Save