Browse 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 3 years ago
parent
commit
36a8d7df79
2 changed files with 85 additions and 112 deletions
  1. 51 78
      src/front/project.go
  2. 34 34
      src/front/user.go

+ 51 - 78
src/front/project.go

@@ -98,18 +98,17 @@ func (f *Front) ProjectSave() {
 		}
 		//保存项目信息
 		set = map[string]interface{}{
-			"s_name":           s_name,                                //项目名称
-			"s_entname":        s_entname,                             //公司名称
-			"s_departname":     s_departname,                          //部门名称
-			"s_rulename":       strings.Join(s_rulename, ","),         //规则名称
-			"i_importnum":      importDataNum,                         //导入数量
-			"s_sourceinfo":     s_sourceinfo,                          //源数据表
-			"s_sourcetaskinfo": "s_sourcetaskinfo_" + s_sourceinfoTmp, //源数据表
-			"s_createname":     username,                              //创建人
-			"s_status":         "未开始",                                 //项目状态
-			"i_createtime":     time.Now().Unix(),                     //创建时间
-			"s_importtype":     "excel",                               //导入类型
-			"b_isassessment":   false,                                 //是否进行了质量评估
+			"s_name":         s_name,                        //项目名称
+			"s_entname":      s_entname,                     //公司名称
+			"s_departname":   s_departname,                  //部门名称
+			"s_rulename":     strings.Join(s_rulename, ","), //规则名称
+			"i_importnum":    importDataNum,                 //导入数量
+			"s_sourceinfo":   s_sourceinfo,                  //源数据表
+			"s_createname":   username,                      //创建人
+			"s_status":       "未开始",                         //项目状态
+			"i_createtime":   time.Now().Unix(),             //创建时间
+			"s_importtype":   "excel",                       //导入类型
+			"b_isassessment": false,                         //是否进行了质量评估
 		}
 	} else if stype == "coll" { //数据库导入
 		historyid := f.GetString("s_historyid")
@@ -121,19 +120,18 @@ func (f *Front) ProjectSave() {
 		qu.Debug(s_departname, s_entname, s_rulename, importDataNum)
 		//保存项目信息
 		set = map[string]interface{}{
-			"s_name":           s_name,                                //项目名称
-			"s_entname":        s_entname,                             //公司名称
-			"s_departname":     s_departname,                          //部门名称
-			"s_rulename":       strings.Join(s_rulename, ","),         //规则名称
-			"i_importnum":      importDataNum,                         //导入数量
-			"s_sourceinfo":     s_sourceinfo,                          //源数据表
-			"s_sourcetaskinfo": "s_sourcetaskinfo_" + s_sourceinfoTmp, //源数据表
-			"s_createname":     username,                              //创建人
-			"s_status":         "未开始",                                 //项目状态
-			"i_createtime":     time.Now().Unix(),                     //创建时间
-			"s_importtype":     "coll",                                //导入类型
-			"s_historyid":      historyid,                             //源数据集标识
-			"b_isassessment":   false,                                 //是否进行了质量评估
+			"s_name":         s_name,                        //项目名称
+			"s_entname":      s_entname,                     //公司名称
+			"s_departname":   s_departname,                  //部门名称
+			"s_rulename":     strings.Join(s_rulename, ","), //规则名称
+			"i_importnum":    importDataNum,                 //导入数量
+			"s_sourceinfo":   s_sourceinfo,                  //源数据表
+			"s_createname":   username,                      //创建人
+			"s_status":       "未开始",                         //项目状态
+			"i_createtime":   time.Now().Unix(),             //创建时间
+			"s_importtype":   "coll",                        //导入类型
+			"s_historyid":    historyid,                     //源数据集标识
+			"b_isassessment": false,                         //是否进行了质量评估
 		}
 	} else if stype == "edit" { //编辑保存
 		success = true
@@ -262,8 +260,7 @@ func (f *Front) ProjectTaskList() {
 	} else {
 		project, _ := util.Mgo.FindById(util.PROJECTCOLLNAME, projectid, map[string]interface{}{"s_sourceinfo": 1})
 		if project != nil && len(*project) > 0 {
-			sourceinfo := qu.ObjToString((*project)["s_sourceinfo"]) //数据源表
-			qu.Debug(sourceinfo)
+			sourceinfo := qu.ObjToString((*project)["s_sourceinfo"])                                                           //数据源表
 			okAllDataNum := util.Mgo.Count(sourceinfo, map[string]interface{}{"b_istagging": false})                           //达标数据总量
 			okIsGiveDataNum := util.Mgo.Count(sourceinfo, map[string]interface{}{"b_istagging": false, "b_isgivegroup": true}) //达标数据已分发量
 			okNotGiveDataNum := okAllDataNum - okIsGiveDataNum                                                                 //达标待分发量
@@ -317,13 +314,12 @@ func (f *Front) ProjectTaskSave() {
 	username := qu.ObjToString(user["s_login"]) //当前登录用户
 	projectid := f.GetString("s_projectid")     //项目标识
 	project, _ := util.Mgo.FindById(util.PROJECTCOLLNAME, projectid, nil)
-	projectname := qu.ObjToString((*project)["s_name"])              //项目名称
-	sourceinfo := qu.ObjToString((*project)["s_sourceinfo"])         //源数据表
-	sourcetaskinfo := qu.ObjToString((*project)["s_sourcetaskinfo"]) //任务日志表
+	projectname := qu.ObjToString((*project)["s_name"])      //项目名称
+	sourceinfo := qu.ObjToString((*project)["s_sourceinfo"]) //源数据表
 	group := f.GetString("s_group")
 	qu.Debug(group)
 	stype := f.GetString("s_type")
-	qu.Debug("项目id:", projectid, " 项目名称:", projectname, "sourcetaskinfo:", sourcetaskinfo)
+	qu.Debug("项目id:", projectid, " 项目名称:", projectname)
 	if err := json.Unmarshal([]byte(group), &groupArr); err != nil {
 		qu.Debug("GroupInfo Unmarshal Failed:", err)
 		msg = "用户组信息解析失败"
@@ -345,24 +341,23 @@ func (f *Front) ProjectTaskSave() {
 			}
 			groupIdTask[groupTaskIdStr] = gt
 			groupTask := map[string]interface{}{
-				"_id":              groupTaskId,                                //生成任务id
-				"s_projectid":      projectid,                                  //项目标识
-				"s_projectname":    projectname,                                //项目名称
-				"s_status":         "未开始",                                      //任务状态
-				"s_personid":       qu.ObjToString(groupInfo["s_personid"]),    //任务负责人标识
-				"s_personname":     qu.ObjToString(groupInfo["s_personname"]),  //任务负责人
-				"s_groupname":      qu.ObjToString(groupInfo["s_groupname"]),   //用户组名称
-				"s_groupid":        groupId,                                    //用户组标识
-				"i_givenum":        givenum,                                    //分发数据量
-				"s_createname":     username,                                   //创建人
-				"i_createtime":     time.Now().Unix(),                          //创建时间
-				"s_progress":       "0%",                                       //完成进度
-				"s_sourceinfo":     sourceinfo,                                 //源数据表
-				"s_sourcetaskinfo": sourcetaskinfo,                             //任务日志表
-				"s_stype":          "group",                                    //任务类型
-				"s_entname":        qu.ObjToString((*project)["s_entname"]),    //公司名称
-				"s_departname":     qu.ObjToString((*project)["s_departname"]), //部门名称
-				"s_rulename":       qu.ObjToString((*project)["s_rulename"]),   //规则名称
+				"_id":           groupTaskId,                                //生成任务id
+				"s_projectid":   projectid,                                  //项目标识
+				"s_projectname": projectname,                                //项目名称
+				"s_status":      "未开始",                                      //任务状态
+				"s_personid":    qu.ObjToString(groupInfo["s_personid"]),    //任务负责人标识
+				"s_personname":  qu.ObjToString(groupInfo["s_personname"]),  //任务负责人
+				"s_groupname":   qu.ObjToString(groupInfo["s_groupname"]),   //用户组名称
+				"s_groupid":     groupId,                                    //用户组标识
+				"i_givenum":     givenum,                                    //分发数据量
+				"s_createname":  username,                                   //创建人
+				"i_createtime":  time.Now().Unix(),                          //创建时间
+				"s_progress":    "0%",                                       //完成进度
+				"s_sourceinfo":  sourceinfo,                                 //源数据表
+				"s_stype":       "group",                                    //任务类型
+				"s_entname":     qu.ObjToString((*project)["s_entname"]),    //公司名称
+				"s_departname":  qu.ObjToString((*project)["s_departname"]), //部门名称
+				"s_rulename":    qu.ObjToString((*project)["s_rulename"]),   //规则名称
 			}
 			taskArr = append(taskArr, groupTask)
 		}
@@ -385,7 +380,7 @@ func (f *Front) ProjectTaskSave() {
 			success = util.Mgo.SaveBulk(util.TASKCOLLNAME, taskArr...)
 			if success {
 				msg = "任务分发成功"
-				UpdateSourceinfo(sourceinfo, sourcetaskinfo, stype, groupIdTask) //用户组分发任务成功后,给数据源打上用户组标识,同时生成任务临时表
+				UpdateSourceinfo(sourceinfo, stype, groupIdTask) //用户组分发任务成功后,给数据源打上用户组标识,同时生成任务临时表
 			} else {
 				msg = "任务分发失败"
 			}
@@ -647,8 +642,8 @@ func DeleleDataTagInfo(sourceinfo string) {
 	lock.Unlock()
 }
 
-// UpdateSourceinfo 用户组分发任务成功后,给数据源打上用户组标识,同时生成任务临时表
-func UpdateSourceinfo(sourceinfo, sourcetaskinfo, stype string, groupIdInfo map[string]util.Task) {
+// UpdateSourceinfo 用户组分发任务成功后,给数据源打上用户组标识
+func UpdateSourceinfo(sourceinfo, stype string, groupIdInfo map[string]util.Task) {
 	defer qu.Catch()
 	for groupTaskId, tInfo := range groupIdInfo {
 		groupId := tInfo.UserId
@@ -669,7 +664,6 @@ func UpdateSourceinfo(sourceinfo, sourcetaskinfo, stype string, groupIdInfo map[
 		fields := map[string]interface{}{
 			"v_baseinfo": 1,
 		}
-		saveArr := []map[string]interface{}{}
 		updateArr := [][]map[string]interface{}{}
 		qu.Debug("Query:", query)
 		it := sess.DB(util.Mgo.DbName).C(sourceinfo).Find(&query).Select(&fields).Limit(int64(num)).Iter()
@@ -682,40 +676,23 @@ func UpdateSourceinfo(sourceinfo, sourcetaskinfo, stype string, groupIdInfo map[
 					<-ch
 					wg.Done()
 				}()
-				id := mongodb.BsonIdToSId(tmp["_id"])
-				title := ""
-				if baseinfo, ok := tmp["v_baseinfo"].(map[string]interface{}); ok {
-					title = qu.ObjToString(baseinfo["title"])
-				}
 				update := []map[string]interface{}{}
 				update = append(update, map[string]interface{}{"_id": tmp["_id"]})
 				update = append(update, map[string]interface{}{
 					"$set": map[string]interface{}{
 						"s_groupid":     groupId,
+						"s_grouptaskid": groupTaskId,
 						"b_isgivegroup": true,
 						"i_updatetime":  time.Now().Unix(),
 					},
 				})
-				save := map[string]interface{}{
-					"s_infoid":      id,
-					"s_infotitle":   title,
-					"s_groupid":     groupId,
-					"i_createtime":  time.Now().Unix(),
-					"b_iscomplete":  false,
-					"s_grouptaskid": groupTaskId,
-					"b_isgiveuser":  false,
-				}
 				lock.Lock()
 				updateArr = append(updateArr, update)
-				saveArr = append(saveArr, save)
+				//saveArr = append(saveArr, save)
 				if len(updateArr) > 500 {
 					util.Mgo.UpdateBulk(sourceinfo, updateArr...)
 					updateArr = [][]map[string]interface{}{}
 				}
-				if len(saveArr) > 500 {
-					util.Mgo.SaveBulk(sourcetaskinfo, saveArr...)
-					saveArr = []map[string]interface{}{}
-				}
 				lock.Unlock()
 			}(tmp)
 			if n%100 == 0 {
@@ -729,10 +706,6 @@ func UpdateSourceinfo(sourceinfo, sourcetaskinfo, stype string, groupIdInfo map[
 			util.Mgo.UpdateBulk(sourceinfo, updateArr...)
 			updateArr = [][]map[string]interface{}{}
 		}
-		if len(saveArr) > 0 {
-			util.Mgo.SaveBulk(sourcetaskinfo, saveArr...)
-			saveArr = []map[string]interface{}{}
-		}
 		lock.Unlock()
 	}
 }
@@ -1013,10 +986,10 @@ func GetDataById(idsInfo map[string]map[string]interface{}, importType, s_source
 					baseInfoMap["v_taginfo"] = tagInfoMap
 				}
 				baseInfoMap["i_createtime"] = time.Now().Unix()
-				baseInfoMap["b_isgivegroup"] = false //是否分配
+				baseInfoMap["b_isgivegroup"] = false //是否分配给用户组
 				baseInfoMap["b_istag"] = false       //是否已标注
 				baseInfoMap["b_cleartag"] = false    //是否清理标注信息
-
+				baseInfoMap["b_isgiveuser"] = false  //是否分配给用户
 				if util.Mgo.SaveByOriID(s_sourceinfo, baseInfoMap) {
 					atomic.AddInt64(successNum, 1) //保存成功计数
 				} else {

+ 34 - 34
src/front/user.go

@@ -363,7 +363,7 @@ func (f *Front) UserTaskSave() {
 		f.ServeJson(map[string]interface{}{"success": false, "msg": msg})
 		return
 	}
-	sourcetaskinfo := qu.ObjToString((*groupTask)["s_sourcetaskinfo"])
+	sourceinfo := qu.ObjToString((*groupTask)["s_sourceinfo"])
 	userNums := f.GetString("usernums")
 	var userArr []map[string]interface{}
 	if err := json.Unmarshal([]byte(userNums), &userArr); err != nil {
@@ -384,26 +384,25 @@ func (f *Front) UserTaskSave() {
 			}
 			userTaskIdInfo[userTaskIdStr] = ut
 			userTask := map[string]interface{}{
-				"_id":              userTaskId,                                    //生成任务id
-				"s_projectid":      qu.ObjToString((*groupTask)["s_projectid"]),   //项目标识
-				"s_projectname":    qu.ObjToString((*groupTask)["s_projectname"]), //项目名称
-				"s_status":         "未开始",                                         //任务状态
-				"s_personid":       userid,                                        //任务负责人标识
-				"s_personname":     name,                                          //任务负责人
-				"s_login":          login,                                         //用户账号
-				"s_groupname":      qu.ObjToString((*groupTask)["s_groupname"]),   //用户组名称
-				"s_groupid":        qu.ObjToString((*groupTask)["s_groupid"]),     //用户组标识
-				"i_givenum":        givenum,                                       //分发数据量
-				"s_createname":     username,                                      //创建人
-				"i_createtime":     time.Now().Unix(),                             //创建时间
-				"s_progress":       "0%",                                          //完成进度
-				"s_sourceinfo":     qu.ObjToString((*groupTask)["s_sourceinfo"]),  //源数据表
-				"s_sourcetaskinfo": sourcetaskinfo,                                //任务日志表
-				"s_stype":          "user",                                        //任务类型
-				"s_parentid":       groupTaskId,                                   //父任务及用户组任务id
-				"s_entname":        qu.ObjToString((*groupTask)["s_entname"]),     //公司名称
-				"s_departname":     qu.ObjToString((*groupTask)["s_departname"]),  //部门名称
-				"s_rulename":       qu.ObjToString((*groupTask)["s_rulename"]),    //规则名称
+				"_id":           userTaskId,                                    //生成任务id
+				"s_projectid":   qu.ObjToString((*groupTask)["s_projectid"]),   //项目标识
+				"s_projectname": qu.ObjToString((*groupTask)["s_projectname"]), //项目名称
+				"s_status":      "未开始",                                         //任务状态
+				"s_personid":    userid,                                        //任务负责人标识
+				"s_personname":  name,                                          //任务负责人
+				"s_login":       login,                                         //用户账号
+				"s_groupname":   qu.ObjToString((*groupTask)["s_groupname"]),   //用户组名称
+				"s_groupid":     qu.ObjToString((*groupTask)["s_groupid"]),     //用户组标识
+				"i_givenum":     givenum,                                       //分发数据量
+				"s_createname":  username,                                      //创建人
+				"i_createtime":  time.Now().Unix(),                             //创建时间
+				"s_progress":    "0%",                                          //完成进度
+				"s_sourceinfo":  sourceinfo,                                    //源数据表
+				"s_stype":       "user",                                        //任务类型
+				"s_parentid":    groupTaskId,                                   //父任务及用户组任务id
+				"s_entname":     qu.ObjToString((*groupTask)["s_entname"]),     //公司名称
+				"s_departname":  qu.ObjToString((*groupTask)["s_departname"]),  //部门名称
+				"s_rulename":    qu.ObjToString((*groupTask)["s_rulename"]),    //规则名称
 			}
 			taskArr = append(taskArr, userTask)
 		}
@@ -435,7 +434,7 @@ func (f *Front) UserTaskSave() {
 						}},
 					false, false)
 				msg = "任务分发成功"
-				UpdateSourceTaskInfo(sourcetaskinfo, groupTaskId, userTaskIdInfo) //用户分发任务成功后,同时更新任务临时
+				UpdateSourceInfo(sourceinfo, groupTaskId, userTaskIdInfo) //用户分发任务成功后,同时更新任务数据源
 			}
 		}
 	}
@@ -482,13 +481,14 @@ func (f *Front) UserTaskList() {
 		}
 		f.ServeJson(map[string]interface{}{"draw": draw, "data": *list, "recordsFiltered": count, "recordsTotal": count})
 	} else {
-		sourcetaskinfo := f.GetString("s_sourcetaskinfo")
+		sourceinfo := f.GetString("s_sourceinfo")
+		qu.Debug(sourceinfo)
 		//统计数据量
-		isGiveNum := Mgo.Count(sourcetaskinfo, map[string]interface{}{"s_grouptaskid": groupTaskId, "b_isgiveuser": true})     //已分发量
-		isNotGiveNum := Mgo.Count(sourcetaskinfo, map[string]interface{}{"s_grouptaskid": groupTaskId, "b_isgiveuser": false}) //待分发量
-		isTagNum := Mgo.Count(sourcetaskinfo, map[string]interface{}{"s_grouptaskid": groupTaskId, "b_iscomplete": true})      //已标注数量
-		isNotTagNum := Mgo.Count(sourcetaskinfo, map[string]interface{}{"s_grouptaskid": groupTaskId, "b_iscomplete": false})  //未标注数量
-		allNum := Mgo.Count(sourcetaskinfo, map[string]interface{}{"s_grouptaskid": groupTaskId})                              //数据总量
+		isGiveNum := Mgo.Count(sourceinfo, map[string]interface{}{"s_grouptaskid": groupTaskId, "b_isgiveuser": true})     //已分发量
+		isNotGiveNum := Mgo.Count(sourceinfo, map[string]interface{}{"s_grouptaskid": groupTaskId, "b_isgiveuser": false}) //待分发量
+		isTagNum := Mgo.Count(sourceinfo, map[string]interface{}{"s_grouptaskid": groupTaskId, "b_iscomplete": true})      //已标注数量
+		isNotTagNum := Mgo.Count(sourceinfo, map[string]interface{}{"s_grouptaskid": groupTaskId, "b_iscomplete": false})  //未标注数量
+		allNum := Mgo.Count(sourceinfo, map[string]interface{}{"s_grouptaskid": groupTaskId})                              //数据总量
 		qu.Debug("数据总量:", allNum, "已分发量:", isGiveNum, "待分发量:", isNotGiveNum, "已标注量:", isTagNum, "未标注量:", isNotTagNum)
 		f.T["grouptaskid"] = groupTaskId
 		f.T["allNum"] = allNum
@@ -512,8 +512,8 @@ func (f *Front) UserTaskRetrieve() {
 	f.ServeJson(map[string]interface{}{"success": success, "count": count, "msg": msg})
 }
 
-// UpdateSourceTaskInfo 用户分发任务成功后更新临时任务
-func UpdateSourceTaskInfo(sourcetaskinfo, groupTaskId string, userTaskIdInfo map[string]Task) {
+// UpdateSourceInfo 用户分发任务成功后更新数据源
+func UpdateSourceInfo(sourceinfo, groupTaskId string, userTaskIdInfo map[string]Task) {
 	defer qu.Catch()
 	for userTaskId, tInfo := range userTaskIdInfo {
 		userId := tInfo.UserId
@@ -525,11 +525,11 @@ func UpdateSourceTaskInfo(sourcetaskinfo, groupTaskId string, userTaskIdInfo map
 		lock := &sync.Mutex{}
 		query := map[string]interface{}{ //查找用户组任务id关联的临时数据
 			"s_grouptaskid": groupTaskId,
-			"b_isgiveuser":  false,
+			"b_istag":       false,
 		}
 		updateArr := [][]map[string]interface{}{}
 		qu.Debug("Query:", query)
-		it := sess.DB(Mgo.DbName).C(sourcetaskinfo).Find(&query).Limit(int64(num)).Iter()
+		it := sess.DB(Mgo.DbName).C(sourceinfo).Find(&query).Limit(int64(num)).Iter()
 		n := 0
 		for tmp := make(map[string]interface{}); it.Next(tmp); n++ {
 			ch <- true
@@ -552,7 +552,7 @@ func UpdateSourceTaskInfo(sourcetaskinfo, groupTaskId string, userTaskIdInfo map
 				lock.Lock()
 				updateArr = append(updateArr, update)
 				if len(updateArr) > 500 {
-					Mgo.UpdateBulk(sourcetaskinfo, updateArr...)
+					Mgo.UpdateBulk(sourceinfo, updateArr...)
 					updateArr = [][]map[string]interface{}{}
 				}
 				lock.Unlock()
@@ -565,7 +565,7 @@ func UpdateSourceTaskInfo(sourcetaskinfo, groupTaskId string, userTaskIdInfo map
 		wg.Wait()
 		lock.Lock()
 		if len(updateArr) > 0 {
-			Mgo.UpdateBulk(sourcetaskinfo, updateArr...)
+			Mgo.UpdateBulk(sourceinfo, updateArr...)
 			updateArr = [][]map[string]interface{}{}
 		}
 		lock.Unlock()