|
@@ -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
|
|
|
+}
|