Forráskód Böngészése

抽取测试展示在追踪界面

unknown 6 éve
szülő
commit
e71b969dbc

+ 38 - 4
src/jy/admin/resulttrack.go

@@ -5,6 +5,7 @@ import (
 	"jy/admin/track"
 	"jy/extract"
 	. "jy/mongodbutil"
+	qutil "qfw/util"
 	"strconv"
 	"strings"
 
@@ -21,12 +22,15 @@ func init() {
 	Admin.GET("/resulttrack/trackData", func(c *gin.Context) {
 		_id := c.Query("trackId")
 		field := c.Query("field")
-		//tracks := track.GetTrackPath("5b8dd276a5cb26b9b7faaa7c", "projectname", "v3_track")
-		tracks := track.GetTrackPath(_id, field, "v3_track")
+		trackcoll := c.Query("trackcoll")
+		resultcoll := c.Query("resultcoll")
+		//tracks := track.GetTrackPath("5b8dce7fa5cb26b9b7f7bd51", "projectname", "track_v3")
+		tracks := track.GetTrackPath(_id, field, trackcoll, resultcoll)
 		c.HTML(200, "track.html", map[string]interface{}{"tracks": tracks})
 	})
 	//查询所有的抽取结果
 	Admin.POST("/resulttrack/list", ResultData)
+	Admin.POST("/resulttrack/clearcoll", ClearColl)
 
 }
 
@@ -35,6 +39,7 @@ func ResultData(c *gin.Context) {
 	search, _ := c.GetPostForm("search[value]")
 	startstr, _ := c.GetPostForm("start")
 	limitstr, _ := c.GetPostForm("length")
+	resultcoll, _ := c.GetPostForm("resultcoll")
 	start, _ := strconv.Atoi(startstr)
 	limit, _ := strconv.Atoi(limitstr)
 	id := strings.TrimSpace(search)
@@ -47,8 +52,8 @@ func ResultData(c *gin.Context) {
 			}
 		}
 	}
-	data, _ := Mgo.Find("extract_result", query, `{"_id":-1}`, nil, false, start, limit)
-	count := Mgo.Count("extract_result", query)
+	data, _ := Mgo.Find(resultcoll, query, `{"_id":-1}`, nil, false, start, limit)
+	count := Mgo.Count(resultcoll, query)
 	for _, d := range *data {
 		if d["budget"] == nil {
 			d["budget"] = 0
@@ -56,3 +61,32 @@ func ResultData(c *gin.Context) {
 	}
 	c.JSON(200, gin.H{"data": data, "recordsFiltered": count, "recordsTotal": count})
 }
+
+//清理测试表
+func ClearColl(c *gin.Context) {
+	id, _ := c.GetPostForm("id")
+	resultcoll, _ := c.GetPostForm("resultcoll")
+	trackcoll, _ := c.GetPostForm("trackcoll")
+	b := false
+	b4 := true
+	b1 := Mgo.DelColl(resultcoll) //删除结果表
+	b2 := Mgo.DelColl(trackcoll)  //删除日志表
+	query := make(map[string]interface{})
+	query["$or"] = []interface{}{
+		bson.M{"resultcoll": resultcoll},
+		bson.M{"trackcoll": trackcoll},
+		bson.M{"_id": id},
+	}
+	data, _ := Mgo.Find("tasktestlog", query, nil, nil, false, -1, -1)
+	for _, d := range *data {
+		_id := qutil.BsonIdToSId(d["_id"])
+		b3 := Mgo.Del("tasktestlog", `{"_id":"`+_id+`"}`) //删除测试任务的信息
+		if !b3 {
+			b4 = false
+		}
+	}
+	if b1 && b2 && b4 {
+		b = true
+	}
+	c.JSON(200, gin.H{"rep": b})
+}

+ 23 - 0
src/jy/admin/task/task.go

@@ -64,6 +64,16 @@ func init() {
 		}
 		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, _ := c.GetPostForm("startid")
@@ -72,6 +82,14 @@ func init() {
 		resultcoll, _ := c.GetPostForm("resultcoll")
 		trackcoll, _ := c.GetPostForm("trackcoll")
 		b := extract.StartExtractTestTask(taskid, startid, num, resultcoll, trackcoll)
+		if b { //保存结果表和日志表
+			data := make(map[string]interface{})
+			data["resultcoll"] = resultcoll
+			data["trackcoll"] = trackcoll
+			Mgo.Update("tasktestlog", `{"resultcoll":"`+resultcoll+`","trackcoll":"`+trackcoll+`"}`, map[string]interface{}{
+				"$set": data,
+			}, true, false)
+		}
 		c.JSON(200, gin.H{"rep": b})
 	})
 	//启动任务
@@ -86,4 +104,9 @@ func init() {
 		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})
+	})
 }

+ 2 - 2
src/jy/admin/track/track.go

@@ -7,10 +7,10 @@ import (
 )
 
 //获取抽取路径
-func GetTrackPath(_id, field, table string) map[string]interface{} {
+func GetTrackPath(_id, field, table, resultcoll string) map[string]interface{} {
 	tracks := map[string]interface{}{}      //返回对象
 	fieldvals := []map[string]interface{}{} //抽取结果数组
-	info, _ := db.Mgo.FindById("extract_result", _id, `{"result":1}`)
+	info, _ := db.Mgo.FindById(resultcoll, _id, `{"result":1}`)
 	if result, ok := (*info)["result"].(map[string]interface{}); ok {
 		for k, v := range result {
 			if k == field {

+ 18 - 0
src/jy/mongodbutil/mongodbutil.go

@@ -358,3 +358,21 @@ func ObjToArr(obj interface{}) []string {
 		return []string{}
 	}
 }
+
+//删除表
+func (m *Pool) DelColl(c string) bool {
+	defer util.Catch()
+	sess := m.Get()
+	b := true
+	if sess != nil {
+		defer m.Close(sess)
+		coll := sess.DB(m.DB).C(c)
+		err := coll.DropCollection()
+		if err != nil {
+			b = false
+		}
+	} else {
+		b = false
+	}
+	return b
+}

+ 177 - 7
src/web/templates/admin/result_list.html

@@ -4,10 +4,15 @@
 <!-- Left side column. 权限菜单 -->
 {{template "memu"}}
 <link href="../res/other/css/other.css" rel="stylesheet" type="text/css">
+<style>
+	#dataTable_filter div{
+		padding:0px 10px;
+	}
+</style>
 <div class="content-wrapper">
 	<section class="content-header" style="padding: 49px 15px 0 15px;">
 		<h1>
-			<small><a class="btn btn-primary opr" opr="new">抽取测试</a></small>
+			<small><a class="btn btn-primary opr" opr="test">抽取测试</a></small>
 		</h1>
 		<ol class="breadcrumb">
 		  <li><a href="#"><i class="fa fa-dashboard"></i> 结果追踪</a></li>		  
@@ -105,14 +110,13 @@ $(function () {
 		"paging"      : true,
 		"lengthChange": false,
 		"searching"   : true,
-		"ordering"    : true,
+		"ordering"    : false,
 		"info"        : true,
 		"autoWidth"   : false,
 		"serverSide"  : true,
 		"ajax": {
 			"url": "/admin/resulttrack/list",
-			"type": "post",
-			"data":{}
+			"type": "post"
 		 },
 		"language": {
             "url": "/res/dist/js/dataTables.chinese.lang"
@@ -141,12 +145,97 @@ $(function () {
 			{ "data": "_id",render:function(val,a,row){
 				return "测试"
 			}},
-			{ "data": "toptype"},
+			{ "data": "toptype",render:function(val,a,row){
+				
+				if(val == undefined){
+					return "";
+				}
+				return val
+			}},
 			{ "data": "_id",render:function(val,a,row){
 				rowdata[val]= row;
 				return  "<a class='btn btn-primary' onclick='trackShow(\""+val+"\")'>详细</a>"
 			}}			
-       	]
+       	],
+		"fnServerParams": function (e) {  
+			var resultcoll = sessionStorage.getItem("resultcoll");
+			e.resultcoll = resultcoll;
+      	}
+	});
+	ttable.on('init.dt', function () {
+		/*查询所有结果表和对应的日志表*/
+		gettasktestlog();
+		/*抽取测试*/
+		$(".opr").click(function(){
+			var n=$(this).attr("opr");
+			var htmlObj={},obj,tag=[],bts=[];
+			var _tit="";
+			switch(n){
+			case "test":
+				testtask=[
+						{label:"任务名称",s_label:"s_taskname",type:"tpl_list_local",must:true,url:"/admin/task/gettaskname"},
+						{label:"起始id",s_label:"s_startid",must:true},
+						{label:"抽取数量",s_label:"s_datanum",placeholder:"5",must:true},
+						{label:"结果表",s_label:"s_resultcoll",must:true},
+						{label:"日志表",s_label:"s_trackcoll",must:true},
+						
+				]
+				//测试启动按钮
+				testtaskbtn=[
+					{label:"Run",class:"btn-danger",
+						fun:function(){
+							var reg = /^[0-9]*$/;
+							var id = $("#s_startid").val();
+							var num = $("#s_datanum").val();
+							var taskid = $("#s_taskname").val();
+							var resultcoll = $("#s_resultcoll").val();
+							var trackcoll = $("#s_trackcoll").val();
+							sessionStorage.setItem("resultcoll",resultcoll);
+							sessionStorage.setItem("trackcoll",trackcoll);
+							var bcon = true;
+							if(id == "" || resultcoll == "" || trackcoll == ""){
+								bcon = false;
+								alert("红色标签的表单不能为空!");
+								return
+							}
+							if(num != ""){//验证数字
+								if(!reg.test(num)){
+									bcon = false;
+									alert("抽取数量填写错误!");
+									return
+								}
+							}else{
+								num = "5";
+							}
+							if(bcon){								
+								$.post("/admin/task/test",{"startid":id,"num":num,"taskid":taskid,"resultcoll":resultcoll,"trackcoll":trackcoll},function(data){
+									if(data&&data.rep){
+										$("#myModal").modal("hide");
+										alert("测试完成!");
+										tablereload();						
+									}else{
+										alert("起始id输入错误!");	
+									}
+								},'json')
+								
+							}else{
+								alert("红色标签的表单不能为空!")
+							}
+						}
+					}
+				];
+				_tit="抽取测试";
+				tag = com.pushArry(tag,testtask);
+				bts = com.pushArry(bts,testtaskbtn);
+				htmlObj={
+					title:_tit,
+					tag:tag,
+					bts:bts
+				}
+				OpenDialog(htmlObj,obj)
+				break;
+			}
+		});
 	});
 })
 
@@ -164,9 +253,90 @@ function trackShow(_id){
 
 $("#modal-info-resulttrack .track").click(function(){
 	var field = $(this).prev().attr("id");
-	window.open("/admin/resulttrack/trackData/?trackId="+trackId+"&field="+field);
+	var trackcoll = sessionStorage.getItem("trackcoll");
+	var resultcoll = sessionStorage.getItem("resultcoll");
+	window.open("/admin/resulttrack/trackData/?trackId="+trackId+"&field="+field+"&trackcoll="+trackcoll+"&resultcoll="+resultcoll);
 });
 
+function checkclick(log){
+	var logarr = log.split("+");
+	var trackcoll = logarr[2];
+	sessionStorage.setItem("resultcoll",logarr[1]);
+	sessionStorage.setItem("trackcoll",trackcoll);
+	$("#tracklog").html("");
+	if(trackcoll != "" && trackcoll != undefined){
+		$("#tracklog").append("<option value=''>"+trackcoll+"</option>");
+	}else{
+		$("#tracklog").append("<option value='-1'>全部</option>");
+	}
+	ttable.ajax.reload();
+}
+
+function tablereload(){
+	gettasktestlog();
+	ttable.ajax.reload();
+}
 
+function gettasktestlog(){
+	$("#dataTable_filter div").remove();
+	clearcoll();
+	var opt2="<option value='-1'>全部</option>";
+	var select2="<div class='form-group'><label for='name'>日志表:</label>"+
+		"<select disabled id='tracklog' class='form-control input-sm'>"+
+		opt2+
+		"</select></div>"
+	$("#dataTable_filter").prepend(select2);
+	$.ajax({
+		url:"/admin/task/gettasktestlog",
+		type:"post",
+		async:false,
+		success:function(s){
+			var resultselect = "<option value='-1'>全部</option>";
+			if(s && s.data.length > 0){
+				var r = s.data;
+				for(var i in r){
+					var opt1 = "<option value='"+r[i]["_id"]+"+"+r[i]["resultcoll"]+"+"+r[i]["trackcoll"]+"'>"+r[i]["resultcoll"]+"</option>"
+					resultselect = resultselect + opt1;
+				}
+			}
+			var select1="<div class='form-group'><label for='name'>结果表:</label>"+
+					"<select id='resultlog' onchange='checkclick(this.value)' class='form-control input-sm'>"+
+					resultselect+
+				"</select></div>"
+			$("#dataTable_filter").prepend(select1);
+		}
+	})
+	$("#dataTable_wrapper .col-sm-6").css({width:"100%"});
+}
+
+function clearcoll(){
+	var clear = "<div class='form-group'>"+
+					"<a class='btn btn-primary' onclick='cleardata()'style='padding: 2px 5px;'>清理</a>"+				
+				"</div>";
+	$("#dataTable_filter").prepend(clear);
+}
+
+function cleardata(){
+	var val = $("#resultlog").val();
+		if(val == "-1"){
+			return
+		}
+	showConfirm("确定删除?", function() {
+		var logarr = $("#resultlog").val().split("+");
+		$.ajax({
+			url:"/admin/resulttrack/clearcoll",
+			type:"post",
+			data:{"id":logarr[0],"resultcoll":logarr[1],"trackcoll":logarr[2]},
+			success:function(r){
+				if(r.rep){		
+					tablereload();
+				}else{
+					showTip("删除失败", 1000, function() {});
+				}
+			}
+		})
+	});
+	
+}
 
 </script>

+ 9 - 9
src/web/templates/admin/task_list.html

@@ -74,7 +74,7 @@ $(function () {
 					'<a class="btn btn-sm btn-primary opr" opr="edit" row="'+pos.row+'" >编辑</a> '+
 					'<a class="btn btn-sm btn-success opr" opr="start" onclick="start(\''+row._id+'\')">启动</a> '+
 					'<a class="btn btn-sm btn-info opr" opr="stop" onclick="stop(\''+row._id+'\')">停止</a> '+
-					'<a class="btn btn-sm btn-warning opr" opr="test" taskid="'+val+'">测试</a>'+
+					//'<a class="btn btn-sm btn-warning opr" opr="test" taskid="'+val+'">测试</a>'+
 					'</div>';
 				return  tmp
 			}}
@@ -119,10 +119,10 @@ $(function () {
 					{s_label:"_id",type:"tpl_hidden"},
 					{label:"起始id",s_label:"s_extlastid",must:true}
 				];
-				testtask=[
+				/*testtask=[
 					{label:"起始id",s_label:"s_startid",must:true},
 					{label:"数据数量",s_label:"s_datanum",placeholder:"5",must:true}
-				];
+				];*/
 				/*按钮*/
 				//新增保存按钮
 				addtaskbtn=[
@@ -153,7 +153,7 @@ $(function () {
 					}
 				];
 				//测试启动按钮
-				testtaskbtn=[
+				/*testtaskbtn=[
 					{label:"Run",class:"btn-danger",
 						fun:function(){
 							var reg = /^[0-9]*$/;
@@ -189,16 +189,16 @@ $(function () {
 							}
 						}
 					}
-				];
+				];*/
 				
 				if(n == "new"){
 					_tit="新增抽取任务";
 					tag = com.pushArry(tag,addtask);
 					bts = com.pushArry(bts,addtaskbtn);
-				}else if(n == "test"){
-					_tit="测试任务";
-					tag = com.pushArry(tag,testtask);
-					bts = com.pushArry(bts,testtaskbtn);
+				//}else if(n == "test"){
+				//	_tit="测试任务";
+				//	tag = com.pushArry(tag,testtask);
+				//	bts = com.pushArry(bts,testtaskbtn);
 				}else if(n == "edit"){
 					_tit="编辑-"+obj.s_taskname;
 					tag = com.pushArry(tag,addtask);