123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216 |
- //任务管理
- //编辑、启动、停止、测试
- package task
- import (
- . "jy/admin"
- "jy/extract"
- . "jy/mongodbutil"
- "net/http"
- qu "qfw/util"
- "strings"
- "time"
- "github.com/gin-contrib/sessions"
- "github.com/gin-gonic/gin"
- )
- func init() {
- //首页
- Admin.GET("/task", func(c *gin.Context) {
- c.HTML(200, "task_list.html", nil)
- })
- Admin.GET("/taskclear", func(c *gin.Context) {
- c.HTML(200, "task_clearlist.html", nil)
- })
- //获取任务列表
- Admin.POST("/task/list", func(c *gin.Context) {
- data, _ := Mgo.Find("task", ``, `{"_id":-1}`, nil, false, -1, -1)
- for _, v := range *data {
- _id := qu.BsonIdToSId(v["_id"])
- tmp := extract.TaskList[_id]
- if tmp != nil {
- v["runstatus"] = tmp.IsRun
- } else {
- v["runstatus"] = false
- }
- }
- c.JSON(200, gin.H{"data": data})
- })
- //新增任务、编辑任务
- Admin.POST("/task/save", func(c *gin.Context) {
- //判断存储配置是否完整
- s_mgosavecoll, _ := c.GetPostForm("s_mgosavecoll")
- strs := strings.Split(s_mgosavecoll, "/")
- if len(strs) < 3 {
- c.JSON(200, gin.H{"rep": false, "msg": "保存表输入地址不正确!"})
- return
- }
- data := GetPostForm(c)
- _id, _ := c.GetPostForm("_id")
- b := false
- if _id == "" {
- data["l_createtime"] = time.Now().Unix()
- data["s_username"] = sessions.Default(c).Get("username")
- b = Mgo.Save("task", data) != ""
- } else {
- data["l_lasttime"] = time.Now().Unix()
- b = Mgo.Update("task", `{"_id":"`+_id+`"}`, map[string]interface{}{
- "$set": data,
- }, false, false)
- }
- c.JSON(200, gin.H{"rep": b})
- })
- //获取版本列表
- Admin.POST("/task/getversion", func(c *gin.Context) {
- list, b := Mgo.Find("version", `{"delete":false}`, `{"_id":-1}`, `{"version":1}`, false, -1, -1)
- if b && list != nil {
- for _, v := range *list {
- v["_id"] = v["version"]
- v["s_name"] = v["version"]
- }
- }
- c.JSON(200, gin.H{"data": list})
- })
- //获取清理版本列表
- Admin.POST("/task/getclearversions", func(c *gin.Context) {
- list, b := Mgo.Find("clearversion", `{"delete":false}`, `{"_id":-1}`, `{"clearversion":1}`, false, -1, -1)
- if b && list != nil {
- for _, v := range *list {
- v["_id"] = v["clearversion"]
- v["s_name"] = v["clearversion"]
- }
- }
- c.JSON(200, gin.H{"data": list})
- })
- //获取任务名称
- Admin.POST("/task/gettaskname", func(c *gin.Context) {
- list, b := Mgo.Find("task", `{}`, `{"_id":-1}`, `{"s_taskname":1}`, false, -1, -1)
- if b && list != nil {
- for _, v := range *list {
- v["s_name"] = v["s_taskname"]
- }
- }
- c.JSON(200, gin.H{"data": list})
- })
- //任务测试
- Admin.POST("/task/test", func(c *gin.Context) {
- startid := strings.TrimSpace(c.PostForm("startid"))
- num := strings.TrimSpace(c.PostForm("num"))
- taskid := strings.TrimSpace(c.PostForm("taskid"))
- resultcoll := strings.TrimSpace(c.PostForm("resultcoll"))
- trackcoll := strings.TrimSpace(c.PostForm("trackcoll"))
- version, _ := Mgo.FindById("task", taskid, `{"s_version":1}`)
- b := extract.StartExtractTestTask(taskid, startid, num, resultcoll, trackcoll)
- if b { //保存结果表和日志表
- data := make(map[string]interface{})
- data["resultcoll"] = resultcoll
- data["trackcoll"] = trackcoll
- data["version"] = (*version)["s_version"]
- Mgo.Update("tasktestlog", `{"resultcoll":"`+resultcoll+`","trackcoll":"`+trackcoll+`"}`, map[string]interface{}{
- "$set": data,
- }, true, false)
- }
- c.JSON(200, gin.H{"rep": b, "version": (*version)["s_version"]})
- })
- //启动任务
- Admin.POST("/task/start", func(c *gin.Context) {
- _id, _ := c.GetPostForm("_id")
- b := extract.StartExtractTaskId(_id)
- c.JSON(200, gin.H{"rep": b})
- })
- //停止任务
- Admin.POST("/task/stop", func(c *gin.Context) {
- _id, _ := c.GetPostForm("_id")
- b := extract.StopExtractTaskId(_id)
- c.JSON(200, gin.H{"rep": b})
- })
- //查询任务测试的表信息
- Admin.POST("/task/gettasktestlog", func(c *gin.Context) {
- data, _ := Mgo.Find("tasktestlog", nil, `{"_id":-1}`, nil, false, -1, -1)
- c.JSON(200, gin.H{"data": data})
- })
- //抽取导出相关
- Admin.GET("/task/export", func(c *gin.Context) {
- list, b := Mgo.Find("version", `{"delete":false}`, `{"_id":-1}`, `{"version":1}`, false, -1, -1)
- if b && list != nil {
- for _, v := range *list {
- v["_id"] = qu.BsonIdToSId(v["_id"])
- v["s_name"] = v["version"]
- }
- }
- c.HTML(
- http.StatusOK, "task_export.html",
- gin.H{"vlist": list},
- )
- })
- Admin.POST("/task/export/data", func(c *gin.Context) {
- data, _ := Mgo.Find("task_export", `{}`, `{"_id":-1}`, nil, false, -1, -1)
- c.JSON(200, gin.H{"data": data})
- })
- Admin.POST("task/export/save", func(c *gin.Context) {
- _id, _ := c.GetPostForm("_id")
- name, _ := c.GetPostForm("name")
- v1id, _ := c.GetPostForm("v1")
- v2id, _ := c.GetPostForm("v2")
- v1name, _ := c.GetPostForm("v1name")
- v2name, _ := c.GetPostForm("v2name")
- dbaddr, _ := c.GetPostForm("dbaddr")
- dbname, _ := c.GetPostForm("dbname")
- query, _ := c.GetPostForm("query")
- table, _ := c.GetPostForm("table")
- limit, _ := c.GetPostForm("limit")
- tmpfields, _ := c.GetPostFormMap("fields")
- fields := []string{}
- for _, v := range tmpfields {
- fields = append(fields, v)
- }
- data := map[string]interface{}{
- "name": name,
- "v1id": v1id, "v1name": v1name, "v2id": v2id, "v2name": v2name,
- "dbaddr": dbaddr, "dbname": dbname, "table": table,
- "query": query, "limit": limit, "fields": fields,
- }
- if _id != "" {
- Mgo.UpdateById("task_export", _id, map[string]interface{}{"$set": data})
- } else {
- data["state"] = 0 //0待执行,1已完成
- data["intime"] = time.Now().Unix()
- Mgo.Save("task_export", data)
- }
- c.JSON(200, gin.H{"rep": true})
- })
- Admin.POST("/task/export/del", func(c *gin.Context) {
- _id, _ := c.GetPostForm("_id")
- b := Mgo.Del("task_export", `{"_id":"`+_id+`"}`)
- c.JSON(200, gin.H{"rep": b})
- })
- //清理任务相关
- //获取任务列表
- Admin.POST("/cleartask/list", func(c *gin.Context) {
- data, _ := Mgo.Find("cleartask", ``, `{"_id":-1}`, nil, false, -1, -1)
- c.JSON(200, gin.H{"data": data})
- })
- //新增任务、编辑任务
- Admin.POST("/cleartask/save", func(c *gin.Context) {
- //判断存储配置是否完整
- data := GetPostForm(c)
- _id, _ := c.GetPostForm("_id")
- b := false
- if _id == "" {
- data["l_createtime"] = time.Now().Unix()
- data["s_username"] = sessions.Default(c).Get("username")
- b = Mgo.Save("cleartask", data) != ""
- } else {
- data["l_lasttime"] = time.Now().Unix()
- b = Mgo.Update("cleartask", `{"_id":"`+_id+`"}`, map[string]interface{}{
- "$set": data,
- }, false, false)
- }
- c.JSON(200, gin.H{"rep": b})
- })
- }
|