|
|
@@ -868,15 +868,16 @@ func GetCloudbrainsCreateHoursData(ctx *context.Context) { |
|
|
|
endTimeStr := ctx.QueryTrim("endTime") |
|
|
|
var beginTime time.Time |
|
|
|
var endTime time.Time |
|
|
|
createHourPeriodCount := make(map[string]interface{}) |
|
|
|
if queryType != "" { |
|
|
|
if queryType == "all" { |
|
|
|
beginTime = recordBeginTime |
|
|
|
beginTime = time.Date(beginTime.Year(), beginTime.Month(), beginTime.Day(), 0, 0, 0, 0, now.Location()) |
|
|
|
endTime = now.AddDate(0, 0, 1) |
|
|
|
endTime = time.Date(endTime.Year(), endTime.Month(), endTime.Day(), 0, 0, 0, 0, now.Location()) |
|
|
|
} else if queryType == "today" { |
|
|
|
beginTime = time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location()) |
|
|
|
endTime = now.AddDate(0, 0, 1) |
|
|
|
endTime = beginTime.AddDate(0, 0, 1) |
|
|
|
endTime = time.Date(endTime.Year(), endTime.Month(), endTime.Day(), 0, 0, 0, 0, now.Location()) |
|
|
|
} else if queryType == "yesterday" { |
|
|
|
beginTime = now.AddDate(0, 0, -1) |
|
|
|
beginTime = time.Date(beginTime.Year(), beginTime.Month(), beginTime.Day(), 0, 0, 0, 0, now.Location()) |
|
|
@@ -933,26 +934,90 @@ func GetCloudbrainsCreateHoursData(ctx *context.Context) { |
|
|
|
endTime = time.Date(endTime.Year(), endTime.Month(), endTime.Day(), 0, 0, 0, 0, now.Location()) |
|
|
|
} |
|
|
|
} |
|
|
|
dateBeginTime := beginTime.Format("2006-01-02") |
|
|
|
dateEndTime := endTime.Format("2006-01-02") |
|
|
|
createHourPeriodCount, err = models.GetCreateHourPeriodCount(dateBeginTime, dateEndTime) |
|
|
|
if err != nil { |
|
|
|
log.Error("Can not query hourPeriodCount.", err) |
|
|
|
ctx.Error(http.StatusBadRequest, ctx.Tr("hourPeriodCount_get_error")) |
|
|
|
return |
|
|
|
runPeriodCount := make(map[string]int64) |
|
|
|
createPeriodCount := make(map[string]int64) |
|
|
|
page := 1 |
|
|
|
pagesize := 10000 |
|
|
|
createCounts := pagesize |
|
|
|
//Each time a maximum of 10000 pieces of data are detected to the memory, batch processing |
|
|
|
for createCounts == pagesize && createCounts != 0 { |
|
|
|
createCloudbrains, _, err := models.CloudbrainAllStatic(&models.CloudbrainsOptions{ |
|
|
|
ListOptions: models.ListOptions{ |
|
|
|
Page: page, |
|
|
|
PageSize: pagesize, |
|
|
|
}, |
|
|
|
Type: models.TypeCloudBrainAll, |
|
|
|
BeginTimeUnix: beginTime.Unix(), |
|
|
|
EndTimeUnix: endTime.Unix(), |
|
|
|
}) |
|
|
|
if err != nil { |
|
|
|
log.Error("Can not query cloudbrain.", err) |
|
|
|
ctx.Error(http.StatusBadRequest, ctx.Tr("cloudbrain_get_error")) |
|
|
|
return |
|
|
|
} |
|
|
|
dateBegin := endTime.AddDate(0, 0, -1) |
|
|
|
dateEnd := endTime |
|
|
|
for beginTime.Before(dateBegin) || beginTime.Equal(dateBegin) { |
|
|
|
createHourPeriodCount, err := models.GetCreateHourPeriodCount(createCloudbrains, dateBegin, dateEnd) |
|
|
|
if err != nil { |
|
|
|
log.Error("Can not query runHourPeriodCount.", err) |
|
|
|
ctx.Error(http.StatusBadRequest, ctx.Tr("runHourPeriodCount_get_error")) |
|
|
|
return |
|
|
|
} |
|
|
|
var slice = []string{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23"} |
|
|
|
for _, v := range slice { |
|
|
|
createPeriodCount[v] = createPeriodCount[v] + createHourPeriodCount[v] |
|
|
|
} |
|
|
|
dateEnd = dateBegin |
|
|
|
dateBegin = dateEnd.AddDate(0, 0, -1) |
|
|
|
} |
|
|
|
createCounts = len(createCloudbrains) |
|
|
|
page += 1 |
|
|
|
} |
|
|
|
|
|
|
|
runHourPeriodCount, err := models.GetRunHourPeriodCount(dateBeginTime, dateEndTime) |
|
|
|
if err != nil { |
|
|
|
log.Error("Can not query runHourPeriodCount.", err) |
|
|
|
ctx.Error(http.StatusBadRequest, ctx.Tr("runHourPeriodCount_get_error")) |
|
|
|
return |
|
|
|
runPage := 1 |
|
|
|
runCounts := pagesize |
|
|
|
for runCounts == pagesize && runCounts != 0 { |
|
|
|
var jobStatuses []string |
|
|
|
jobStatuses = append(jobStatuses, string(models.JobRunning)) |
|
|
|
runCloudbrains, _, err := models.CloudbrainAllStatic(&models.CloudbrainsOptions{ |
|
|
|
ListOptions: models.ListOptions{ |
|
|
|
Page: runPage, |
|
|
|
PageSize: pagesize, |
|
|
|
}, |
|
|
|
Type: models.TypeCloudBrainAll, |
|
|
|
DateBeginTimeUnix: beginTime.Unix(), |
|
|
|
JobStatus: jobStatuses, |
|
|
|
}) |
|
|
|
if err != nil { |
|
|
|
log.Error("Can not query cloudbrain.", err) |
|
|
|
ctx.Error(http.StatusBadRequest, ctx.Tr("cloudbrain_get_error")) |
|
|
|
return |
|
|
|
} |
|
|
|
dateBegin := endTime.AddDate(0, 0, -1) |
|
|
|
dateEnd := endTime |
|
|
|
for beginTime.Before(dateBegin) || beginTime.Equal(dateBegin) { |
|
|
|
runHourPeriodCount, err := models.GetRunHourPeriodCount(runCloudbrains, dateBegin, dateEnd) |
|
|
|
if err != nil { |
|
|
|
log.Error("Can not query runHourPeriodCount.", err) |
|
|
|
ctx.Error(http.StatusBadRequest, ctx.Tr("runHourPeriodCount_get_error")) |
|
|
|
return |
|
|
|
} |
|
|
|
var slice = []string{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23"} |
|
|
|
for _, v := range slice { |
|
|
|
runPeriodCount[v] = runPeriodCount[v] + runHourPeriodCount[v] |
|
|
|
} |
|
|
|
dateEnd = dateBegin |
|
|
|
dateBegin = dateEnd.AddDate(0, 0, -1) |
|
|
|
} |
|
|
|
runCounts = len(runCloudbrains) |
|
|
|
runPage += 1 |
|
|
|
} |
|
|
|
|
|
|
|
ctx.JSON(http.StatusOK, map[string]interface{}{ |
|
|
|
"recordBeginTime": recordCloudbrain[0].Cloudbrain.CreatedUnix, |
|
|
|
"updateTime": now.Unix(), |
|
|
|
"createHourPeriodCount": createHourPeriodCount, |
|
|
|
"runHourPeriodCount": runHourPeriodCount, |
|
|
|
"createHourPeriodCount": createPeriodCount, |
|
|
|
"runHourPeriodCount": runPeriodCount, |
|
|
|
}) |
|
|
|
|
|
|
|
} |
|
|
|