|
@@ -1045,3 +1045,109 @@ func (f *Front) GroupImportData() {
|
|
}
|
|
}
|
|
f.ServeJson(map[string]interface{}{"success": true, "msg": "数据导入成功", "count": count})
|
|
f.ServeJson(map[string]interface{}{"success": true, "msg": "数据导入成功", "count": count})
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+func (f *Front) StatsTasData() {
|
|
|
|
+ tid := f.GetString("tid")
|
|
|
|
+ sourceinfo := f.GetString("s_sourceinfo")
|
|
|
|
+ if f.Method() == "POST" {
|
|
|
|
+ stype := f.GetString("stype")
|
|
|
|
+ sctype := f.GetString("sctype")
|
|
|
|
+ n1, n2, n3 := countFuc(stype, sourceinfo, tid, sctype)
|
|
|
|
+ f.ServeJson(map[string]interface{}{"success": true, "data": bson.M{"num": n1, "pCount": n2, "cCount": n3}})
|
|
|
|
+ } else {
|
|
|
|
+ f.T["taskid"] = tid
|
|
|
|
+ f.T["s_sourceinfo"] = sourceinfo
|
|
|
|
+ if f.GetString("stype") == "user" {
|
|
|
|
+ f.T["user"] = "user"
|
|
|
|
+ isTagNum := util.Mgo.Count(sourceinfo, map[string]interface{}{"s_usertaskid": tid, "b_istag": true}) //已标注数量
|
|
|
|
+ allNum := util.Mgo.Count(sourceinfo, map[string]interface{}{"s_usertaskid": tid}) //数据总量
|
|
|
|
+ effNum1 := util.Mgo.Count(sourceinfo, map[string]interface{}{"s_usertaskid": tid, "v_baseinfo.is_efficient": "是"}) // 有效数据 是
|
|
|
|
+ effNum2 := util.Mgo.Count(sourceinfo, map[string]interface{}{"s_usertaskid": tid, "v_baseinfo.is_efficient": "否"}) // 有效数据 否
|
|
|
|
+ effNum3 := util.Mgo.Count(sourceinfo, map[string]interface{}{"s_usertaskid": tid, "v_baseinfo.is_efficient": nil}) // 有效数据 空
|
|
|
|
+ qu.Debug("数据总量:", allNum, "已标注量:", isTagNum)
|
|
|
|
+ f.T["allNum"] = allNum
|
|
|
|
+ f.T["isTagNum"] = isTagNum
|
|
|
|
+ f.T["effNum1"] = effNum1
|
|
|
|
+ f.T["effNum2"] = effNum2
|
|
|
|
+ f.T["effNum3"] = effNum3
|
|
|
|
+ } else if f.GetString("stype") == "group" {
|
|
|
|
+ f.T["group"] = "group"
|
|
|
|
+ //统计数据量
|
|
|
|
+ isTagNum := util.Mgo.Count(sourceinfo, map[string]interface{}{"s_grouptaskid": tid, "b_istag": true}) //已标注数量
|
|
|
|
+ allNum := util.Mgo.Count(sourceinfo, map[string]interface{}{"s_grouptaskid": tid}) //数据总量``
|
|
|
|
+ effNum1 := util.Mgo.Count(sourceinfo, map[string]interface{}{"s_grouptaskid": tid, "v_baseinfo.is_efficient": "是"}) // 有效数据 是
|
|
|
|
+ effNum2 := util.Mgo.Count(sourceinfo, map[string]interface{}{"s_grouptaskid": tid, "v_baseinfo.is_efficient": "否"}) // 有效数据 否
|
|
|
|
+ effNum3 := util.Mgo.Count(sourceinfo, map[string]interface{}{"s_grouptaskid": tid, "v_baseinfo.is_efficient": nil}) // 有效数据 空
|
|
|
|
+ qu.Debug("数据总量:", allNum, "已标注量:", isTagNum)
|
|
|
|
+ f.T["allNum"] = allNum
|
|
|
|
+ f.T["isTagNum"] = isTagNum
|
|
|
|
+ f.T["effNum1"] = effNum1
|
|
|
|
+ f.T["effNum2"] = effNum2
|
|
|
|
+ f.T["effNum3"] = effNum3
|
|
|
|
+ } else {
|
|
|
|
+ f.T["project"] = "project"
|
|
|
|
+ //统计数据量
|
|
|
|
+ isTagNum := util.Mgo.Count(sourceinfo, map[string]interface{}{"s_grouptaskid": tid, "b_istag": true}) //已标注数量
|
|
|
|
+ allNum := util.Mgo.Count(sourceinfo, map[string]interface{}{"s_grouptaskid": tid}) //数据总量
|
|
|
|
+ effNum1 := util.Mgo.Count(sourceinfo, map[string]interface{}{"s_grouptaskid": tid, "v_baseinfo.is_efficient": "是"}) // 有效数据 是
|
|
|
|
+ effNum2 := util.Mgo.Count(sourceinfo, map[string]interface{}{"s_grouptaskid": tid, "v_baseinfo.is_efficient": "否"}) // 有效数据 否
|
|
|
|
+ effNum3 := util.Mgo.Count(sourceinfo, map[string]interface{}{"s_grouptaskid": tid, "v_baseinfo.is_efficient": nil}) // 有效数据 空
|
|
|
|
+ qu.Debug("数据总量:", allNum, "已标注量:", isTagNum)
|
|
|
|
+ f.T["allNum"] = allNum
|
|
|
|
+ f.T["isTagNum"] = isTagNum
|
|
|
|
+ f.T["effNum1"] = effNum1
|
|
|
|
+ f.T["effNum2"] = effNum2
|
|
|
|
+ f.T["effNum3"] = effNum3
|
|
|
|
+ }
|
|
|
|
+ _ = f.Render("project/task_stats.html", &f.T)
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func countFuc(stype, coll, tid, sctype string) (int, int, int) {
|
|
|
|
+ field := "" //
|
|
|
|
+ q := make(map[string]interface{})
|
|
|
|
+ f := make(map[string]interface{})
|
|
|
|
+ if sctype == "group" {
|
|
|
|
+ q["s_grouptaskid"] = tid
|
|
|
|
+ } else {
|
|
|
|
+ q["s_usertaskid"] = tid
|
|
|
|
+ }
|
|
|
|
+ q["b_istag"] = true
|
|
|
|
+ f["v_baseinfo.is_efficient"] = 1
|
|
|
|
+ if stype == "1" {
|
|
|
|
+ f["v_baseinfo.purchasinglist"] = 1
|
|
|
|
+ field = "purchasinglist"
|
|
|
|
+ } else if stype == "2" {
|
|
|
|
+ f["v_baseinfo.procurementlist"] = 1
|
|
|
|
+ field = "procurementlist"
|
|
|
|
+ } else if stype == "3" {
|
|
|
|
+ f["v_baseinfo.package"] = 1
|
|
|
|
+ field = "v_baseinfo.package"
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ sess := util.Mgo.GetMgoConn()
|
|
|
|
+ defer util.Mgo.DestoryMongoConn(sess)
|
|
|
|
+
|
|
|
|
+ qu.Debug(q)
|
|
|
|
+ query := sess.DB(util.Mgo.DbName).C(coll).Find(q).Select(f).Iter()
|
|
|
|
+ count := 0
|
|
|
|
+ size, pCount, cCount := 0, 0, 0 //标讯数量, 标的物/多包/意向 累加数量,有效数量
|
|
|
|
+ for tmp := make(map[string]interface{}); query.Next(tmp); count++ {
|
|
|
|
+ if count%2000 == 0 {
|
|
|
|
+ qu.Debug("current ---", count)
|
|
|
|
+ }
|
|
|
|
+ if binfo, ok := tmp["v_baseinfo"].(map[string]interface{}); ok {
|
|
|
|
+ if binfo["is_efficient"] == nil || qu.ObjToString(binfo["is_efficient"]) == "是" {
|
|
|
|
+ if binfo[field] != nil {
|
|
|
|
+ size++
|
|
|
|
+ if field == "package" {
|
|
|
|
+ pCount += len(binfo[field].(map[string]interface{}))
|
|
|
|
+ } else {
|
|
|
|
+ pCount += len(binfo[field].([]interface{}))
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return size, pCount, cCount
|
|
|
|
+}
|