maxiaoshan 3 years ago
parent
commit
1e2507ca40
3 changed files with 52 additions and 13 deletions
  1. 1 0
      src/front/front.go
  2. 23 13
      src/front/mark.go
  3. 28 0
      src/front/user.go

+ 1 - 0
src/front/front.go

@@ -70,6 +70,7 @@ type Front struct {
 	userTaskSave     xweb.Mapper `xweb:"/front/user/task/save"`     //用户任务分发
 	userTaskList     xweb.Mapper `xweb:"/front/user/task/list"`     //用户任务列表
 	userTaskRetrieve xweb.Mapper `xweb:"/front/user/task/retrieve"` //用户任务收回
+	userTaskDeliver  xweb.Mapper `xweb:"/front/user/task/deliver"`  //用户任务交付
 	userTaskClose    xweb.Mapper `xweb:"/front/user/task/close"`    //用户任务关闭
 
 	//group task

+ 23 - 13
src/front/mark.go

@@ -12,12 +12,12 @@ import (
 
 // DataMark 数据标注
 func (f *Front) DataMark() {
-	qu.Debug("-----------------")
 	defer qu.Catch()
 	success := false
 	msg := ""
 	user := f.GetSession("user").(map[string]interface{})
 	username := qu.ObjToString(user["s_login"]) //当前登录用户
+	userid := qu.ObjToString(user["id"])        //当前登录用户标识
 	obj := []map[string]interface{}{}
 	infoId := f.GetString("s_infoid")
 	userTaskId := f.GetString("s_usertaskid")
@@ -65,6 +65,7 @@ func (f *Front) DataMark() {
 				continue
 			}
 			istag, _ := val["checkAllTag"].(bool)
+			qu.Debug(istag)
 			if j == 0 { //基本信息
 				MarkBase(content, tagSet, baseSet, baseUnset)
 			} else if j == 1 { //时间地点
@@ -80,7 +81,11 @@ func (f *Front) DataMark() {
 			}
 		}
 	}
+	//
 	allTagFields := map[string]interface{}{} //记录此此标注所有标注信息,用于日志记录
+	for k, _ := range tagSet {
+		allTagFields[k] = true
+	}
 	for k, v := range baseSet {
 		allTagFields[k] = v
 	}
@@ -88,6 +93,7 @@ func (f *Front) DataMark() {
 		allTagFields[k] = nil
 	}
 	qu.Debug("allTagFields===", allTagFields)
+	//
 	userTask, _ := util.Mgo.FindById(util.TASKCOLLNAME, userTaskId, map[string]interface{}{"s_personid": 1, "s_personname": 1, "s_projectname": 1, "s_sourceinfo": 1})
 	if userTask == nil || len(*userTask) == 0 {
 		f.ServeJson(map[string]interface{}{"success": success, "msg": "查询用户任务失败"})
@@ -99,19 +105,23 @@ func (f *Front) DataMark() {
 	baseInfo, _ := (*dataInfo)["v_baseinfo"].(map[string]interface{})
 	if tagInfo != nil && len(tagInfo) > 0 {
 		for field, tmpStatus := range tagSet { //比对本次标注信息和历史标注信息
+			if field == "purchasinglist_alltag" {
+				continue
+			}
 			status := qu.IntAll(tmpStatus)            //此次被标注字段的状态
 			markedStatus := qu.IntAll(tagInfo[field]) //历史标注状态
 			if status == 1 && markedStatus != 0 {     //此次标注结果为正确,且有历史标注记录,不做修改
 				qu.Debug("已标注字段field---", field)
 				delete(tagSet, field)
 				delete(baseSet, field)
-				continue
-			} else {
-				qu.Debug("未标注字段field---", field, status)
+				//continue
 			}
+			//else {
+			//	qu.Debug("未标注字段field---", field, status)
+			//}
 		}
 	}
-	qu.Debug("2222222222222")
+	qu.Debug("tagSet===", tagSet)
 	if len(tagSet) > 0 {
 		//1、更新数据源信息
 		setResult := map[string]interface{}{ //更新字段集
@@ -136,15 +146,12 @@ func (f *Front) DataMark() {
 			set["$unset"] = baseUnsetResult
 		}
 		qu.Debug("set---", set)
-		qu.Debug("3333333")
 		success = util.Mgo.UpdateById(sourceInfo, infoId, set)
-		qu.Debug("444444")
 		//2、更新marked表
 		tmp, _ := util.Mgo.FindById(sourceInfo, infoId, map[string]interface{}{"v_baseinfo": 1, "v_taginfo": 1, "i_ckdata": 1})
 		qu.Debug("infoId:", infoId)
 		delete((*tmp), "_id")
 		(*tmp)["updatetime"] = time.Now().Unix()
-		qu.Debug("5555555555555")
 		b := util.Mgo.Update(util.AllToColl, map[string]interface{}{"_id": mongodb.StringTOBsonId(infoId)}, map[string]interface{}{"$set": tmp}, true, false)
 		qu.Debug("Update Marked:", b)
 	}
@@ -164,7 +171,7 @@ func (f *Front) DataMark() {
 	}, false, false)
 	qu.Debug("Update UserTask:", b)
 	//4、保存标注日志
-	b = SaveLog(infoId, userTaskId, "标注", baseInfo, allTagFields, *userTask)
+	b = SaveLog(infoId, userTaskId, username, userid, "标注", baseInfo, allTagFields, *userTask)
 	qu.Debug("Save Log:", b)
 
 	f.ServeJson(map[string]interface{}{"success": success, "msg": msg})
@@ -502,10 +509,13 @@ func MarkOther(content []interface{}, tagSet, baseSet, baseUnset map[string]inte
 }
 
 // SaveLog 标注日志保存
-func SaveLog(s_infoid, s_usertaskid, s_stype string, baseInfo, allTagFields, userTask map[string]interface{}) (success bool) {
+func SaveLog(s_infoid, s_usertaskid, username, userid, s_stype string, baseInfo, allTagFields, userTask map[string]interface{}) (success bool) {
 	defer qu.Debug()
 	v_before := map[string]interface{}{}
-	for f, _ := range allTagFields {
+	for f, v := range allTagFields {
+		if _, ok := v.(bool); ok { //表示此次标注status=1的字段
+			allTagFields[f] = baseInfo[f]
+		}
 		v_before[f] = baseInfo[f]
 	}
 	save := map[string]interface{}{
@@ -513,8 +523,8 @@ func SaveLog(s_infoid, s_usertaskid, s_stype string, baseInfo, allTagFields, use
 		"s_taskid":      s_usertaskid,
 		"s_infoid":      s_infoid,
 		"s_stype":       s_stype,
-		"s_userid":      qu.ObjToString(userTask["s_personid"]),
-		"s_username":    qu.ObjToString(userTask["s_personname"]),
+		"s_userid":      userid,
+		"s_username":    username,
 		"i_createtime":  time.Now().Unix(),
 		"v_before":      v_before,
 		"v_after":       allTagFields,

+ 28 - 0
src/front/user.go

@@ -542,6 +542,34 @@ func (f *Front) UserTaskRetrieve() {
 	f.ServeJson(map[string]interface{}{"success": success, "count": count, "msg": msg})
 }
 
+// UserTaskDeliver 标注完成交付任务
+func (f *Front) UserTaskDeliver() {
+	defer qu.Catch()
+	success := true
+	msg := ""
+	user := f.GetSession("user").(map[string]interface{})
+	username := qu.ObjToString(user["s_login"])
+	userTaskId := f.GetString("taskid") //用户任务id
+	qu.Debug("User Task Id:", userTaskId)
+	sourceInfo := f.GetString("s_sourceinfo")                                                            //数据源表
+	count := Mgo.Count(sourceInfo, map[string]interface{}{"s_usertaskid": userTaskId, "b_istag": false}) //查询是否含有未标注数据
+	if count == 0 {                                                                                      //标注完成更新任务状态
+		set := map[string]interface{}{
+			"s_status":       "已完成", //收回、关闭时默认任务状态已完成
+			"i_updatetime":   time.Now().Unix(),
+			"s_updateperson": username,
+			"i_completetime": time.Now().Unix(),
+		}
+		success = Mgo.UpdateById(TASKCOLLNAME, userTaskId, map[string]interface{}{"$set": set})
+		if !success {
+			msg = "更新任务信息失败"
+		}
+	} else {
+		msg = "数据未标注完成"
+	}
+	f.ServeJson(map[string]interface{}{"success": success, "msg": msg})
+}
+
 // UserTaskClose 用户任务关闭
 func (f *Front) UserTaskClose() {
 	defer qu.Catch()