|
@@ -88,8 +88,8 @@ func (f *Front) JyMarkList() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// DataMark 数据标注
|
|
|
-func (f *Front) DataMark() {
|
|
|
+// UserDataMark 标注人员数据标注(基于任务的标注)
|
|
|
+func (f *Front) UserDataMark() {
|
|
|
qu.Debug("------------------")
|
|
|
defer qu.Catch()
|
|
|
success := false
|
|
@@ -246,9 +246,160 @@ func (f *Front) DataMark() {
|
|
|
}, false, false)
|
|
|
qu.Debug("Update UserTask:", b)
|
|
|
//4、保存标注日志
|
|
|
- b = SaveLog(infoId, userTaskId, username, userid, "标注", baseInfo, allTagFields, *userTask)
|
|
|
+ b = SaveLog(infoId, userTaskId, username, userid, qu.ObjToString((*userTask)["s_projectname"]), "标注", baseInfo, allTagFields)
|
|
|
qu.Debug("Save Log:", b)
|
|
|
+ f.ServeJson(map[string]interface{}{"success": success, "msg": msg})
|
|
|
+}
|
|
|
|
|
|
+// JyUserDataMark 剑鱼管理人员数据标注
|
|
|
+func (f *Front) JyUserDataMark() {
|
|
|
+ defer qu.Catch()
|
|
|
+ success := false
|
|
|
+ msg := ""
|
|
|
+ user := f.GetSession("user").(map[string]interface{})
|
|
|
+ username := qu.ObjToString(user["s_login"]) //当前登录用户
|
|
|
+ groupId := qu.ObjToString(user["s_groupid"])
|
|
|
+ userId := qu.ObjToString(user["id"])
|
|
|
+ userid := qu.ObjToString(user["id"]) //当前登录用户标识
|
|
|
+ obj := []map[string]interface{}{}
|
|
|
+ infoId := f.GetString("s_infoid")
|
|
|
+ sourceInfo := f.GetString("s_sourceinfo")
|
|
|
+ pid := f.GetString("pid")
|
|
|
+ qu.Debug("Data ID:", infoId)
|
|
|
+ data := f.GetString("data")
|
|
|
+ err := json.Unmarshal([]byte(data), &obj)
|
|
|
+ if err != nil {
|
|
|
+ qu.Debug("Json Unmarshal Error")
|
|
|
+ f.ServeJson(map[string]interface{}{"success": success, "msg": "解析数据失败"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ tagSet := map[string]interface{}{} //被标注字段状态
|
|
|
+ baseSet := map[string]interface{}{} //要修改的字段信息
|
|
|
+ baseUnset := map[string]interface{}{} //要删除的字段信息
|
|
|
+ if len(obj) == 1 { //单独保存某个一级
|
|
|
+ content, ok := obj[0]["content"].([]interface{})
|
|
|
+ if !ok || len(content) == 0 {
|
|
|
+ f.ServeJson(map[string]interface{}{"success": success, "msg": "解析数据失败"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ title := qu.ObjToString(obj[0]["title"])
|
|
|
+ istag, _ := obj[0]["checkAllTag"].(bool)
|
|
|
+ status := qu.IntAll(obj[0]["status"])
|
|
|
+ switch title {
|
|
|
+ case "基本字段":
|
|
|
+ MarkBase(content, tagSet, baseSet, baseUnset)
|
|
|
+ case "时间地点":
|
|
|
+ MarkTimePlace(content, tagSet, baseSet, baseUnset)
|
|
|
+ case "标的信息":
|
|
|
+ MarkPurchasinglist(content, tagSet, baseSet, baseUnset, istag, status)
|
|
|
+ case "多包信息":
|
|
|
+ MarkPackage(content, tagSet, baseSet, baseUnset, status)
|
|
|
+ case "中标候选人信息":
|
|
|
+ MarkWonderorder(content, tagSet, baseSet, baseUnset, status)
|
|
|
+ case "其余信息":
|
|
|
+ MarkOther(content, tagSet, baseSet, baseUnset)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ for j, val := range obj {
|
|
|
+ content, ok := val["content"].([]interface{})
|
|
|
+ status := qu.IntAll(val["status"])
|
|
|
+ if !ok {
|
|
|
+ qu.Debug("Content Error")
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ istag, _ := val["checkAllTag"].(bool)
|
|
|
+ if j == 0 { //基本信息
|
|
|
+ MarkBase(content, tagSet, baseSet, baseUnset)
|
|
|
+ } else if j == 1 { //时间地点
|
|
|
+ MarkTimePlace(content, tagSet, baseSet, baseUnset)
|
|
|
+ } else if j == 2 { //标的物
|
|
|
+ MarkPurchasinglist(content, tagSet, baseSet, baseUnset, istag, status)
|
|
|
+ } else if j == 3 { //多包
|
|
|
+ MarkPackage(content, tagSet, baseSet, baseUnset, status)
|
|
|
+ } else if j == 4 { //候选人
|
|
|
+ MarkWonderorder(content, tagSet, baseSet, baseUnset, status)
|
|
|
+ } else { //其余信息
|
|
|
+ MarkOther(content, tagSet, baseSet, baseUnset)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ 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)
|
|
|
+ //}
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //
|
|
|
+ allTagFields := map[string]interface{}{} //记录此此标注所有标注信息,用于日志记录
|
|
|
+ for k, _ := range tagSet {
|
|
|
+ allTagFields[k] = true
|
|
|
+ }
|
|
|
+ for k, v := range baseSet {
|
|
|
+ allTagFields[k] = v
|
|
|
+ }
|
|
|
+ for k, _ := range baseUnset {
|
|
|
+ allTagFields[k] = nil
|
|
|
+ }
|
|
|
+ qu.Debug("allTagFields===", allTagFields)
|
|
|
+ qu.Debug("tagSet===", tagSet)
|
|
|
+ if len(tagSet) > 0 || baseInfo["purchasinglist_alltag"] != nil { //purchasinglist_alltag特殊处理
|
|
|
+ //1、更新数据源信息
|
|
|
+ setResult := map[string]interface{}{ //更新字段集
|
|
|
+ "i_updatetime": time.Now().Unix(),
|
|
|
+ "i_ckdata": 2,
|
|
|
+ "b_istag": true,
|
|
|
+ "s_userid": userId,
|
|
|
+ "s_groupid": groupId,
|
|
|
+ "b_isgiveuser": true,
|
|
|
+ "b_isgivegroup": 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})
|
|
|
+ qu.Debug("infoId:", infoId)
|
|
|
+ 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、保存标注日志
|
|
|
+ project, _ := util.Mgo.FindById(util.PROJECTCOLLNAME, pid, map[string]interface{}{"s_name": 1})
|
|
|
+ b := SaveLog(infoId, "", username, userid, qu.ObjToString((*project)["s_name"]), "标注", baseInfo, allTagFields)
|
|
|
+ qu.Debug("Save Log:", b)
|
|
|
f.ServeJson(map[string]interface{}{"success": success, "msg": msg})
|
|
|
}
|
|
|
|
|
@@ -584,7 +735,7 @@ func MarkOther(content []interface{}, tagSet, baseSet, baseUnset map[string]inte
|
|
|
}
|
|
|
|
|
|
// SaveLog 标注日志保存
|
|
|
-func SaveLog(s_infoid, s_usertaskid, username, userid, s_stype string, baseInfo, allTagFields, userTask map[string]interface{}) (success bool) {
|
|
|
+func SaveLog(s_infoid, s_usertaskid, username, userid, projectname, s_stype string, baseInfo, allTagFields map[string]interface{}) (success bool) {
|
|
|
defer qu.Debug()
|
|
|
v_before := map[string]interface{}{}
|
|
|
for f, v := range allTagFields {
|
|
@@ -594,7 +745,7 @@ func SaveLog(s_infoid, s_usertaskid, username, userid, s_stype string, baseInfo,
|
|
|
v_before[f] = baseInfo[f]
|
|
|
}
|
|
|
save := map[string]interface{}{
|
|
|
- "s_projectname": qu.ObjToString(userTask["s_projectname"]),
|
|
|
+ "s_projectname": projectname,
|
|
|
"s_taskid": s_usertaskid,
|
|
|
"s_infoid": s_infoid,
|
|
|
"s_stype": s_stype,
|