Files
ppgo_job/controllers/home.go
2018-08-13 17:17:53 +08:00

123 lines
3.2 KiB
Go

/**********************************************
** @Des: This file ...
** @Author: haodaquan
** @Date: 2017-09-08 10:21:13
** @Last Modified by: haodaquan
** @Last Modified time: 2017-09-09 18:04:41
***********************************************/
package controllers
import (
"github.com/astaxie/beego"
"github.com/george518/PPGo_Job/jobs"
"github.com/george518/PPGo_Job/libs"
"github.com/george518/PPGo_Job/models"
"runtime"
//"strconv"
"time"
)
type HomeController struct {
BaseController
}
func (self *HomeController) Index() {
self.Data["pageTitle"] = "系统首页"
//self.display()
self.TplName = "public/main.html"
}
func (self *HomeController) Help() {
self.Data["pageTitle"] = "Cron表达式说明"
//self.display()
self.TplName = "public/help.html"
}
func (self *HomeController) Start() {
groups_map := serverGroupLists(self.serverGroups, self.userId)
//计算总任务数量
_, count := models.TaskGetList(1, 300)
// 即将执行的任务
entries := jobs.GetEntries(30)
jobList := make([]map[string]interface{}, len(entries))
startJob := 0 //即将执行的任务
for k, v := range entries {
row := make(map[string]interface{})
job := v.Job.(*jobs.Job)
task, _ := models.TaskGetById(job.GetId())
row["task_id"] = job.GetId()
row["task_name"] = job.GetName()
row["task_group"] = groups_map[task.GroupId]
row["next_time"] = beego.Date(v.Next, "Y-m-d H:i:s")
jobList[k] = row
startJob++
}
// 最近执行的日志
logs, _ := models.TaskLogGetList(1, 20)
recentLogs := make([]map[string]interface{}, len(logs))
failJob := 0 //最近失败的数量
okJob := 0 //最近成功的数量
for k, v := range logs {
task, err := models.TaskGetById(v.TaskId)
taskName := ""
if err == nil {
taskName = task.TaskName
}
row := make(map[string]interface{})
row["task_name"] = taskName
row["id"] = v.Id
row["start_time"] = beego.Date(time.Unix(v.CreateTime, 0), "Y-m-d H:i:s")
row["process_time"] = float64(v.ProcessTime) / 1000
row["ouput_size"] = libs.SizeFormat(float64(len(v.Output)))
row["output"] = beego.Substr(v.Output, 0, 100)
row["status"] = v.Status
recentLogs[k] = row
if v.Status != 0 {
failJob++
} else {
okJob++
}
}
// 最近执行失败的日志
logs, _ = models.TaskLogGetList(1, 20, "status__lt", 0)
errLogs := make([]map[string]interface{}, len(logs))
for k, v := range logs {
task, err := models.TaskGetById(v.TaskId)
taskName := ""
if err == nil {
taskName = task.TaskName
}
row := make(map[string]interface{})
row["task_name"] = taskName
row["id"] = v.Id
row["start_time"] = beego.Date(time.Unix(v.CreateTime, 0), "Y-m-d H:i:s")
row["process_time"] = float64(v.ProcessTime) / 1000
row["ouput_size"] = libs.SizeFormat(float64(len(v.Output)))
row["error"] = beego.Substr(v.Error, 0, 100)
row["status"] = v.Status
errLogs[k] = row
}
self.Data["startJob"] = startJob
self.Data["okJob"] = okJob
self.Data["failJob"] = failJob
self.Data["totalJob"] = count
self.Data["recentLogs"] = recentLogs
// this.Data["errLogs"] = errLogs
self.Data["jobs"] = jobList
self.Data["cpuNum"] = runtime.NumCPU()
//系统运行信息
info := libs.SystemInfo(models.StartTime)
self.Data["sysInfo"] = info
self.Data["pageTitle"] = "系统概况"
self.display()
}