Parcourir la source

Merge branch 'dev2.0' of http://192.168.3.207:8080/data_processing/data_validation into dev2.0

* 'dev2.0' of http://192.168.3.207:8080/data_processing/data_validation:
  xg
Jianghan il y a 3 ans
Parent
commit
d0dee3c35a
4 fichiers modifiés avec 70 ajouts et 55 suppressions
  1. 5 5
      src/front/front.go
  2. 9 3
      src/front/group.go
  3. 55 46
      src/front/project.go
  4. 1 1
      src/front/quality.go

+ 5 - 5
src/front/front.go

@@ -59,11 +59,11 @@ type Front struct {
 	projectSave              xweb.Mapper `xweb:"/front/project/save"`              //新增项目
 	projectComplete          xweb.Mapper `xweb:"/front/project/complete"`          //项目完成
 	projectQualityAssessment xweb.Mapper `xweb:"/front/project/qualityAssessment"` //数据质量评估
-	projectTaskSave          xweb.Mapper `xweb:"/front/project/task/save"`         //用户组任务分发
-	projectTaskList          xweb.Mapper `xweb:"/front/project/task/list"`         //用户组任务分发列表
-	projectTaskRetrieve      xweb.Mapper `xweb:"/front/project/task/retrieve"`     //用户组任务收回
-	projectTaskRepulse       xweb.Mapper `xweb:"/front/project/task/repulse"`      //用户组任务打回
-	projectTaskClose         xweb.Mapper `xweb:"/front/project/task/close"`        //用户组任务关闭
+	projectGroupTaskSave     xweb.Mapper `xweb:"/front/project/task/save"`         //用户组任务分发
+	projectGroupTaskList     xweb.Mapper `xweb:"/front/project/task/list"`         //用户组任务分发列表
+	projectGroupTaskRetrieve xweb.Mapper `xweb:"/front/project/task/retrieve"`     //用户组任务收回
+	projectGroupTaskRepulse  xweb.Mapper `xweb:"/front/project/task/repulse"`      //用户组任务打回
+	projectGroupTaskClose    xweb.Mapper `xweb:"/front/project/task/close"`        //用户组任务关闭
 	projectGetEntnameList    xweb.Mapper `xweb:"/front/project/getEntnameList"`    //模糊查询公司名称
 
 	userTaskSave     xweb.Mapper `xweb:"/front/user/task/save"`     //用户任务分发

+ 9 - 3
src/front/group.go

@@ -15,6 +15,8 @@ import (
 // GroupTaskListByGroup 用户组权限用户组任务列表
 func (f *Front) GroupTaskListByGroup() {
 	defer qu.Catch()
+	user := f.GetSession("user").(map[string]interface{})
+	role := qu.ObjToString(user["i_role"]) //当前登录用户
 	if f.Method() == "POST" {
 		start, _ := f.GetInteger("start")
 		limit, _ := f.GetInteger("length")
@@ -23,10 +25,12 @@ func (f *Front) GroupTaskListByGroup() {
 		searchStr := f.GetString("search[value]")
 		search := strings.TrimSpace(searchStr)
 		user := f.GetSession("user").(map[string]interface{})
-		gid := qu.ObjToString(user["s_groupid"])
+		groupId := qu.ObjToString(user["s_groupid"])
 		query := map[string]interface{}{
-			"s_stype":   "group", //检索用户组任务
-			"s_groupid": gid,
+			"s_stype": "group", //检索用户组任务
+		}
+		if role != "0" {
+			query["s_groupid"] = groupId
 		}
 		if status != "-1" { //任务状态
 			query["s_status"] = status
@@ -36,6 +40,7 @@ func (f *Front) GroupTaskListByGroup() {
 				map[string]interface{}{"s_projectname": map[string]interface{}{"$regex": search}},
 			}
 		}
+		qu.Debug("Query:", query)
 		list, _ := util.Mgo.Find(util.TASKCOLLNAME, query, map[string]interface{}{"_id": -1}, nil, false, start, limit)
 		count := util.Mgo.Count(util.TASKCOLLNAME, query)
 		f.ServeJson(map[string]interface{}{"draw": draw, "data": *list, "recordsFiltered": count, "recordsTotal": count})
@@ -68,6 +73,7 @@ func (f *Front) GroupTaskListByAdmin() {
 				map[string]interface{}{"s_departname": map[string]interface{}{"$regex": search}},
 			}
 		}
+		qu.Debug("Query:", query)
 		count := util.Mgo.Count(util.TASKCOLLNAME, query)
 		list, _ := util.Mgo.Find(util.TASKCOLLNAME, query, map[string]interface{}{"_id": -1}, nil, false, start, limit)
 		for _, l := range *list {

+ 55 - 46
src/front/project.go

@@ -188,35 +188,40 @@ func (f *Front) ProjectComplete() {
 	msg := ""
 	projectId := f.GetString("s_projectid")
 	sourceInfo := f.GetString("s_sourceinfo")
-
-	query := map[string]interface{}{
-		"s_projectid": projectId,
-		"s_status": map[string]interface{}{
-			"$in": []string{"未开始", "进行中"},
-		},
-	}
-	taskCount := util.Mgo.Count(util.TASKCOLLNAME, query)                             //查询未完成的用户组和用户任务
-	dataCount := util.Mgo.Count(sourceInfo, map[string]interface{}{"b_istag": false}) //未标注数据个数
-	qu.Debug("No Tag Count:", dataCount)
-	if dataCount == 0 && taskCount == 0 { //全部完成
-		success = util.Mgo.UpdateById(util.PROJECTCOLLNAME, projectId, map[string]interface{}{
-			"$set": map[string]interface{}{
-				"s_status":       "已完成",
-				"i_completetime": time.Now().Unix(),
-				"s_updateperson": username,
-				"i_updatetime":   time.Now().Unix(),
+	status := f.GetString("s_status")
+	if status == "进行中" {
+		//查询该项目下未完成的用户组和用户任务
+		query := map[string]interface{}{
+			"s_projectid": projectId,
+			"s_status": map[string]interface{}{
+				"$in": []string{"未开始", "进行中"},
 			},
-		})
-		if !success {
-			msg = "更新项目失败"
-		}
-	} else {
-		if taskCount != 0 {
-			msg += "任务未全部完成;"
 		}
-		if dataCount != 0 {
-			msg += "数据未全部标注;"
+		taskCount := util.Mgo.Count(util.TASKCOLLNAME, query)
+		dataCount := util.Mgo.Count(sourceInfo, map[string]interface{}{"b_istag": false}) //未标注数据个数
+		qu.Debug("No Tag Count:", dataCount)
+		if dataCount == 0 && taskCount == 0 { //全部完成
+			success = util.Mgo.UpdateById(util.PROJECTCOLLNAME, projectId, map[string]interface{}{
+				"$set": map[string]interface{}{
+					"s_status":       "已完成",
+					"i_completetime": time.Now().Unix(),
+					"s_updateperson": username,
+					"i_updatetime":   time.Now().Unix(),
+				},
+			})
+			if !success {
+				msg = "更新项目失败"
+			}
+		} else {
+			if taskCount != 0 {
+				msg += "任务未全部完成;"
+			}
+			if dataCount != 0 {
+				msg += "数据未全部标注;"
+			}
 		}
+	} else {
+		msg = "项目未开始"
 	}
 	f.ServeJson(map[string]interface{}{"success": success, "msg": msg})
 }
@@ -228,7 +233,6 @@ func (f *Front) ProjectQualityAssessment() {
 	success := false
 	//质量评估
 	projectid := f.GetString("pid") //项目id
-	qu.Debug("Project Id:", projectid)
 	project, _ := util.Mgo.FindById(util.PROJECTCOLLNAME, projectid, map[string]interface{}{"b_isassessment": 1, "s_sourceinfo": 1, "v_fields": 1})
 	if project != nil && len(*project) > 0 {
 		if isAssessment, ok := (*project)["b_isassessment"].(bool); ok && !isAssessment {
@@ -260,8 +264,8 @@ func (f *Front) ProjectQualityAssessment() {
 	f.ServeJson(map[string]interface{}{"success": success, "msg": msg})
 }
 
-// ProjectTaskList 用户组任务分发列表
-func (f *Front) ProjectTaskList() {
+// ProjectGroupTaskList 用户组任务分发列表
+func (f *Front) ProjectGroupTaskList() {
 	defer qu.Catch()
 	projectid := f.GetString("pid") //项目id
 	qu.Debug("Project Id:", projectid)
@@ -347,8 +351,8 @@ func (f *Front) ProjectTaskList() {
 	}
 }
 
-// ProjectTaskSave 用户组任务分发
-func (f *Front) ProjectTaskSave() {
+// ProjectGroupTaskSave 用户组任务分发
+func (f *Front) ProjectGroupTaskSave() {
 	defer qu.Catch()
 	var groupArr []map[string]interface{}
 	var taskArr []map[string]interface{}
@@ -459,8 +463,8 @@ func (f *Front) ProjectGetEntnameList() {
 
 }
 
-// ProjectTaskRepulse 用户组任务打回
-func (f *Front) ProjectTaskRepulse() {
+// ProjectGroupTaskRepulse 用户组任务打回
+func (f *Front) ProjectGroupTaskRepulse() {
 	defer qu.Catch()
 	success := false
 	msg := ""
@@ -504,8 +508,8 @@ func (f *Front) ProjectTaskRepulse() {
 	f.ServeJson(map[string]interface{}{"success": success, "msg": msg})
 }
 
-// ProjectTaskRetrieve 用户组任务收回
-func (f *Front) ProjectTaskRetrieve() {
+// ProjectGroupTaskRetrieve 用户组任务收回
+func (f *Front) ProjectGroupTaskRetrieve() {
 	defer qu.Catch()
 	user := f.GetSession("user").(map[string]interface{})
 	username := qu.ObjToString(user["s_login"])
@@ -559,8 +563,8 @@ func (f *Front) ProjectTaskRetrieve() {
 	f.ServeJson(map[string]interface{}{"success": success, "msg": msg, "count": count})
 }
 
-// ProjectTaskClose 用户组任务关闭
-func (f *Front) ProjectTaskClose() {
+// ProjectGroupTaskClose 用户组任务关闭
+func (f *Front) ProjectGroupTaskClose() {
 	defer qu.Catch()
 	user := f.GetSession("user").(map[string]interface{})
 	username := qu.ObjToString(user["s_login"])
@@ -689,25 +693,30 @@ func DeleleDataTagInfo(sourceinfo string) {
 			update = append(update, map[string]interface{}{"_id": tmp["_id"]})
 			tagInfo, _ := tmp["v_taginfo"].(map[string]interface{})
 			checkInfo, _ := tmp["v_check"].(map[string]interface{})
-			id := mongodb.BsonIdToSId(tmp["_id"])
-			if id == "60b99c2d72c25c51c492af6a" {
-				qu.Debug(tagInfo, checkInfo)
-			}
 			set := map[string]interface{}{
 				"b_cleartag": true,
 			}
-			if len(tagInfo) != 0 && len(checkInfo) != 0 {
+			unset := map[string]interface{}{}
+			if len(tagInfo) != 0 && len(checkInfo) != 0 { //有质检信息,删除v_taginfo未质检的字段
 				for f, _ := range tagInfo {
 					if checkInfo[f] == nil {
 						delete(tagInfo, f)
 					}
 				}
 				set["v_taginfo"] = tagInfo
+			} else if len(tagInfo) != 0 && len(checkInfo) == 0 { //没有质检删除v_taginfo字段
+				unset["v_taginfo"] = ""
+			}
+			if len(unset) > 0 {
+				update = append(update, map[string]interface{}{
+					"$set":   set,
+					"$unset": unset,
+				})
+			} else {
+				update = append(update, map[string]interface{}{
+					"$set": set,
+				})
 			}
-
-			update = append(update, map[string]interface{}{
-				"$set": set,
-			})
 			lock.Lock()
 			updateArr = append(updateArr, update)
 			if len(updateArr) > 500 {

+ 1 - 1
src/front/quality.go

@@ -82,7 +82,7 @@ func calculateFieldScore(tmp map[string]interface{}, field_tag []string) map[str
 	isUse, v_taginfo := true, make(map[string]interface{}, 0)
 	b_isfield_tag := make(map[string]interface{}, 0)
 	for _, key := range field_tag {
-		v_taginfo[key] = int64(1)
+		v_taginfo[key] = 1
 		value := *qu.ObjToMap(update_dict[key])
 		score := qu.Int64All(value["score"])
 		if score < 99 {