maxiaoshan 3 年之前
父节点
当前提交
c5cff4d752
共有 3 个文件被更改,包括 134 次插入106 次删除
  1. 0 29
      src/front/front.go
  2. 126 70
      src/front/mark.go
  3. 8 7
      src/front/project.go

+ 0 - 29
src/front/front.go

@@ -6,7 +6,6 @@ import (
 	"mongodb"
 	qu "qfw/util"
 	"strconv"
-	"time"
 	. "util"
 )
 
@@ -132,31 +131,3 @@ func GetUserMenu(role int) []map[string]interface{} {
 	}
 	return list
 }
-
-// SaveLog 标注日志保存
-func SaveLog(s_infoid, s_usertaskid, s_stype string, tagFields map[string]interface{}) (success bool) {
-	defer qu.Debug()
-	task, _ := Mgo.FindById(TASKCOLLNAME, s_usertaskid, nil)
-	if task != nil && len(*task) > 0 {
-		v_before := map[string]interface{}{}
-		v_after := map[string]interface{}{}
-		save := map[string]interface{}{
-			"s_projectname": qu.ObjToString((*task)["s_projectname"]),
-			"s_taskid":      s_usertaskid,
-			"s_infoid":      s_infoid,
-			"s_stype":       s_stype,
-			"s_userid":      qu.ObjToString((*task)["s_personid"]),
-			"s_username":    qu.ObjToString((*task)["s_personname"]),
-			"i_createtime":  time.Now().Unix(),
-			"v_before":      v_before,
-			"v_after":       v_after,
-		}
-		id := Mgo.Save(LOGCOLLNAME, save)
-		if id != "" {
-			success = true
-		}
-	} else {
-		qu.Debug("Find Data Failed:", s_infoid)
-	}
-	return
-}

+ 126 - 70
src/front/mark.go

@@ -3,6 +3,7 @@ package front
 import (
 	"encoding/json"
 	"fmt"
+	"mongodb"
 	qu "qfw/util"
 	"strings"
 	"time"
@@ -14,8 +15,8 @@ func (f *Front) DataMark() {
 	defer qu.Catch()
 	success := false
 	msg := ""
-	//user := f.GetSession("user").(map[string]interface{})
-	//username := qu.ObjToString(user["s_login"]) //当前登录用户
+	user := f.GetSession("user").(map[string]interface{})
+	username := qu.ObjToString(user["s_login"]) //当前登录用户
 	obj := []map[string]interface{}{}
 	infoId := f.GetString("s_infoid")
 	userTaskId := f.GetString("s_usertaskid")
@@ -28,7 +29,6 @@ func (f *Front) DataMark() {
 	tagSet := map[string]interface{}{}    //被标注字段状态
 	baseSet := map[string]interface{}{}   //要修改的字段信息
 	baseUnset := map[string]interface{}{} //要删除的字段信息
-
 	//isSaveMarked := false
 	if len(obj) == 1 { //单独保存某个一级
 		content, ok := obj[0]["content"].([]interface{})
@@ -41,17 +41,17 @@ func (f *Front) DataMark() {
 		status := qu.IntAll(obj[0]["status"])
 		switch title {
 		case "基本字段":
-			BzJBZD_New(content, tagSet, baseSet, baseUnset)
+			MarkBase(content, tagSet, baseSet, baseUnset)
 		case "时间地点":
-			BzSJDD_New(content, tagSet, baseSet, baseUnset)
+			MarkTimePlace(content, tagSet, baseSet, baseUnset)
 		case "标的信息":
-			BzBDXX_New(content, tagSet, baseSet, baseUnset, istag, status)
+			MarkPurchasinglist(content, tagSet, baseSet, baseUnset, istag, status)
 		case "多包信息":
-			BzDBXX_New(content, tagSet, baseSet, baseUnset, status)
+			MarkPackage(content, tagSet, baseSet, baseUnset, status)
 		case "中标候选人信息":
-			BzZBHXRXX_New(content, tagSet, baseSet, baseUnset, status)
+			MarkWonderorder(content, tagSet, baseSet, baseUnset, status)
 		case "其余信息":
-			BzQYXX_New(content, tagSet, baseSet, baseUnset)
+			MarkOther(content, tagSet, baseSet, baseUnset)
 		}
 	} else {
 		for j, val := range obj {
@@ -63,72 +63,106 @@ func (f *Front) DataMark() {
 			}
 			istag, _ := val["checkAllTag"].(bool)
 			if j == 0 { //基本信息
-				BzJBZD_New(content, tagSet, baseSet, baseUnset)
+				MarkBase(content, tagSet, baseSet, baseUnset)
 			} else if j == 1 { //时间地点
-				BzSJDD_New(content, tagSet, baseSet, baseUnset)
+				MarkTimePlace(content, tagSet, baseSet, baseUnset)
 			} else if j == 2 { //标的物
-				BzBDXX_New(content, tagSet, baseSet, baseUnset, istag, status)
+				MarkPurchasinglist(content, tagSet, baseSet, baseUnset, istag, status)
 			} else if j == 3 { //多包
-				BzDBXX_New(content, tagSet, baseSet, baseUnset, status)
+				MarkPackage(content, tagSet, baseSet, baseUnset, status)
 			} else if j == 4 { //候选人
-				BzZBHXRXX_New(content, tagSet, baseSet, baseUnset, status)
+				MarkWonderorder(content, tagSet, baseSet, baseUnset, status)
 			} else { //其余信息
-				BzQYXX_New(content, tagSet, baseSet, baseUnset)
+				MarkOther(content, tagSet, baseSet, baseUnset)
 			}
 		}
 	}
+	allTagFields := map[string]interface{}{} //记录此此标注所有标注信息,用于日志记录
+	for k, v := range baseSet {
+		allTagFields[k] = v
+	}
+	for k, _ := range baseUnset {
+		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 sourceInfo := qu.ObjToString((*userTask)["s_sourceinfo"]); sourceInfo != "" { //数据源表
-		dataInfo, _ := util.Mgo.FindById(sourceInfo, infoId, map[string]interface{}{"v_baseinfo": 1, "v_taginfo": 1}) //查询标注保存前的原始信息
-		if tagInfo, ok := (*dataInfo)["v_taginfo"].(map[string]interface{}); ok && len(tagInfo) > 0 {
-			for field, tmpStatus := range tagSet { //比对本次标注信息和历史标注信息
-				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)
-				}
+	if userTask == nil || len(*userTask) == 0 {
+		f.ServeJson(map[string]interface{}{"success": success, "msg": "查询用户任务失败"})
+		return
+	}
+	sourceInfo := qu.ObjToString((*userTask)["s_sourceinfo"])                                                     //数据源表
+	dataInfo, _ := util.Mgo.FindById(sourceInfo, infoId, map[string]interface{}{"v_baseinfo": 1, "v_taginfo": 1}) //查询标注保存前的原始信息
+	tagInfo, _ := (*dataInfo)["v_taginfo"].(map[string]interface{})
+	baseInfo, _ := (*dataInfo)["v_baseinfo"].(map[string]interface{})
+	if tagInfo != nil && len(tagInfo) > 0 {
+		for field, tmpStatus := range tagSet { //比对本次标注信息和历史标注信息
+			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)
 			}
 		}
-		if len(tagSet) > 0 {
-			//1、更新数据源信息
-			setResult := map[string]interface{}{ //更新字段集
-				"i_updatetime": time.Now().Unix(),
-				"i_ckdata":     2,
-				"b_istag":      true,
-			}
-			for field, val := range tagSet { //更新标注字段
-				setResult["v_taginfo."+field] = val
-			}
-			for field, val := range baseSet { //更新基本字段
-				setResult["v_baseinfo."+field] = val
-			}
-			baseUnsetResult := map[string]interface{}{} //删除字段集
-			for field, _ := range baseUnset {           //删除基本字段
-				baseUnsetResult["v_baseinfo."+field] = ""
-			}
-			set := map[string]interface{}{
-				"$set": setResult,
-			}
-			if len(baseUnsetResult) > 0 {
-				set["$unset"] = baseUnsetResult
-			}
-			qu.Debug("set---", set)
-			//success = util.Mgo.UpdateById(sourceInfo, infoId, set)
-			//2、更新marked表
-
-			//3、保存标注记录
+	}
+	if len(tagSet) > 0 {
+		//1、更新数据源信息
+		setResult := map[string]interface{}{ //更新字段集
+			"i_updatetime": time.Now().Unix(),
+			"i_ckdata":     2,
+			"b_istag":      true,
 		}
-
+		for field, val := range tagSet { //更新标注字段
+			setResult["v_taginfo."+field] = val
+		}
+		for field, val := range baseSet { //更新基本字段
+			setResult["v_baseinfo."+field] = val
+		}
+		baseUnsetResult := map[string]interface{}{} //删除字段集
+		for field, _ := range baseUnset {           //删除基本字段
+			baseUnsetResult["v_baseinfo."+field] = ""
+		}
+		set := map[string]interface{}{
+			"$set": setResult,
+		}
+		if len(baseUnsetResult) > 0 {
+			set["$unset"] = baseUnsetResult
+		}
+		qu.Debug("set---", set)
+		success = util.Mgo.UpdateById(sourceInfo, infoId, set)
+		//2、更新marked表
+		tmp, _ := util.Mgo.FindById(sourceInfo, infoId, map[string]interface{}{"v_baseinfo": 1, "v_taginfo": 1, "i_ckdata": 1})
+		delete((*tmp), "_id")
+		(*tmp)["updatetime"] = time.Now().Unix()
+		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)
 	}
+	/*
+		} else {
+			表示页面标注时未做修改标注
+		}
+	*/
+	//3、修改任务状态
+	b := util.Mgo.Update(util.TASKCOLLNAME, map[string]interface{}{"_id": (*userTask)["_id"], "s_status": "未开始"}, map[string]interface{}{
+		"$set": map[string]interface{}{
+			"i_starttime":    time.Now().Unix(),
+			"i_updatetime":   time.Now().Unix(),
+			"s_updateperson": username,
+			"s_status":       "进行中",
+		},
+	}, false, false)
+	qu.Debug("Update UserTask:", b)
+	//4、保存标注日志
+	b = SaveLog(infoId, userTaskId, "标注", baseInfo, allTagFields, *userTask)
+	qu.Debug("Save Log:", b)
+
 	f.ServeJson(map[string]interface{}{"success": success, "msg": msg})
 }
 
-func BzJBZD_New(content []interface{}, tagSet, baseSet, baseUnset map[string]interface{}) {
+func MarkBase(content []interface{}, tagSet, baseSet, baseUnset map[string]interface{}) {
 	defer qu.Catch()
 	info, _ := content[0].(map[string]interface{})
 	if uInputs, ok := info["uInput"].([]interface{}); ok {
@@ -171,7 +205,7 @@ func BzJBZD_New(content []interface{}, tagSet, baseSet, baseUnset map[string]int
 	qu.Debug("baseUnset===", baseUnset)
 }
 
-func BzSJDD_New(content []interface{}, tagSet, baseSet, baseUnset map[string]interface{}) {
+func MarkTimePlace(content []interface{}, tagSet, baseSet, baseUnset map[string]interface{}) {
 	info, _ := content[0].(map[string]interface{})
 	if uInputs, ok := info["uInput"].([]interface{}); ok {
 		for _, tmp := range uInputs {
@@ -205,7 +239,7 @@ func BzSJDD_New(content []interface{}, tagSet, baseSet, baseUnset map[string]int
 	qu.Debug("baseUnset===", baseUnset)
 }
 
-func BzBDXX_New(content []interface{}, tagSet, baseSet, baseUnset map[string]interface{}, istag bool, status int) {
+func MarkPurchasinglist(content []interface{}, tagSet, baseSet, baseUnset map[string]interface{}, istag bool, status int) {
 	if status == -1 {
 		return
 	}
@@ -251,8 +285,7 @@ func BzBDXX_New(content []interface{}, tagSet, baseSet, baseUnset map[string]int
 	if len(purchasinglist)+delpclson == len(content) {
 		if len(purchasinglist) > 0 {
 			baseSet["purchasinglist"] = purchasinglist
-		}
-		if len(content) > 0 && delpclson == len(content) { //只有删除
+		} else if len(content) > 0 && delpclson == len(content) { //只有删除
 			baseUnset["purchasinglist"] = ""
 		}
 		tagSet["purchasinglist"] = status
@@ -264,7 +297,7 @@ func BzBDXX_New(content []interface{}, tagSet, baseSet, baseUnset map[string]int
 	qu.Debug("baseUnset===", baseUnset)
 }
 
-func BzDBXX_New(content []interface{}, tagSet, baseSet, baseUnset map[string]interface{}, status int) {
+func MarkPackage(content []interface{}, tagSet, baseSet, baseUnset map[string]interface{}, status int) {
 	if status == -1 {
 		return
 	}
@@ -355,8 +388,7 @@ func BzDBXX_New(content []interface{}, tagSet, baseSet, baseUnset map[string]int
 	if len(pkgs)+delpkgson == len(content) {
 		if len(pkgs) > 0 {
 			baseSet["package"] = pkgs
-		}
-		if len(content) > 0 && delpkgson == len(content) { //只有删除
+		} else if len(content) > 0 && delpkgson == len(content) { //只有删除
 			baseUnset["package"] = ""
 		}
 		tagSet["package"] = status
@@ -368,7 +400,7 @@ func BzDBXX_New(content []interface{}, tagSet, baseSet, baseUnset map[string]int
 	qu.Debug("baseUnset===", baseUnset)
 }
 
-func BzZBHXRXX_New(content []interface{}, tagSet, baseSet, baseUnset map[string]interface{}, status int) {
+func MarkWonderorder(content []interface{}, tagSet, baseSet, baseUnset map[string]interface{}, status int) {
 	if status == -1 {
 		return
 	}
@@ -411,8 +443,7 @@ func BzZBHXRXX_New(content []interface{}, tagSet, baseSet, baseUnset map[string]
 	if len(winnerorder)+delwodrson == len(content) {
 		if len(winnerorder) > 0 {
 			baseSet["winnerorder"] = winnerorder
-		}
-		if len(content) > 0 && delwodrson == len(content) { //只有删除
+		} else if len(content) > 0 && delwodrson == len(content) { //只有删除
 			baseUnset["winnerorder"] = ""
 		}
 		tagSet["winnerorder"] = status
@@ -424,7 +455,7 @@ func BzZBHXRXX_New(content []interface{}, tagSet, baseSet, baseUnset map[string]
 	qu.Debug("baseUnset===", baseUnset)
 }
 
-func BzQYXX_New(content []interface{}, tagSet, baseSet, baseUnset map[string]interface{}) {
+func MarkOther(content []interface{}, tagSet, baseSet, baseUnset map[string]interface{}) {
 	info, _ := content[0].(map[string]interface{})
 	if uInputs, ok := info["uInput"].([]interface{}); ok {
 		for _, tmp := range uInputs {
@@ -461,3 +492,28 @@ func BzQYXX_New(content []interface{}, tagSet, baseSet, baseUnset map[string]int
 	qu.Debug("baseSet===", baseSet)
 	qu.Debug("baseUnset===", baseUnset)
 }
+
+// SaveLog 标注日志保存
+func SaveLog(s_infoid, s_usertaskid, s_stype string, baseInfo, allTagFields, userTask map[string]interface{}) (success bool) {
+	defer qu.Debug()
+	v_before := map[string]interface{}{}
+	for f, _ := range allTagFields {
+		v_before[f] = baseInfo[f]
+	}
+	save := map[string]interface{}{
+		"s_projectname": qu.ObjToString(userTask["s_projectname"]),
+		"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"]),
+		"i_createtime":  time.Now().Unix(),
+		"v_before":      v_before,
+		"v_after":       allTagFields,
+	}
+	id := util.Mgo.Save(util.LOGCOLLNAME, save)
+	if id != "" {
+		success = true
+	}
+	return
+}

+ 8 - 7
src/front/project.go

@@ -187,7 +187,7 @@ func (f *Front) ProjectComplete() {
 	success := false
 	msg := ""
 	projectId := f.GetString("s_projectid")
-	sourceInfo := f.GetString("s_sourceinfo")
+	//sourceInfo := f.GetString("s_sourceinfo")
 	status := f.GetString("s_status")
 	if status == "进行中" {
 		//查询该项目下未完成的用户组和用户任务
@@ -198,9 +198,10 @@ func (f *Front) ProjectComplete() {
 			},
 		}
 		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 { //全部完成
+		//dataCount := util.Mgo.Count(sourceInfo, map[string]interface{}{"b_istag": false}) //未标注数据个数
+		//qu.Debug("No Tag Count:", dataCount)
+		//if dataCount == 0 && taskCount == 0 { //全部完成
+		if taskCount == 0 { //全部完成
 			success = util.Mgo.UpdateById(util.PROJECTCOLLNAME, projectId, map[string]interface{}{
 				"$set": map[string]interface{}{
 					"s_status":       "已完成",
@@ -216,9 +217,9 @@ func (f *Front) ProjectComplete() {
 			if taskCount != 0 {
 				msg += "任务未全部完成;"
 			}
-			if dataCount != 0 {
-				msg += "数据未全部标注;"
-			}
+			//if dataCount != 0 {
+			//	msg += "数据未全部标注;"
+			//}
 		}
 	} else {
 		msg = "项目未开始"