|
@@ -192,6 +192,7 @@ func (f *Front) ProjectClear() {
|
|
|
f.ServeJson("查询项目信息失败")
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
sourceinfo := qu.ObjToString((*project)["s_sourceinfo"]) //数据源表
|
|
|
noTagAllDataNum := util.Mgo.Count(sourceinfo, map[string]interface{}{"b_istagging": false}) //达标数据总量
|
|
|
noTagGiveDataNum := util.Mgo.Count(sourceinfo, map[string]interface{}{"b_istagging": false, "b_isgive": true}) //达标数据已分发量
|
|
@@ -227,40 +228,74 @@ func (f *Front) ProjectClear() {
|
|
|
// ProjectTaskList 用户组任务分发列表
|
|
|
func (f *Front) ProjectTaskList() {
|
|
|
defer qu.Catch()
|
|
|
- projectid := f.GetString("s_projectid") //项目id
|
|
|
- status := f.GetString("s_status") //任务状态
|
|
|
- searchStr := f.GetString("search[value]")
|
|
|
- search := strings.TrimSpace(searchStr)
|
|
|
- start, _ := f.GetInteger("start")
|
|
|
- limit, _ := f.GetInteger("length")
|
|
|
- draw, _ := f.GetInteger("draw")
|
|
|
- query := map[string]interface{}{ //查找用户组任务
|
|
|
- "s_projectid": projectid,
|
|
|
- "s_stype": "group",
|
|
|
- }
|
|
|
- if status != "-1" {
|
|
|
- query["s_status"] = status
|
|
|
- }
|
|
|
- if search != "" {
|
|
|
- query["$or"] = []interface{}{
|
|
|
- map[string]interface{}{"s_groupname": map[string]interface{}{"$regex": search}},
|
|
|
- }
|
|
|
- }
|
|
|
- list, _ := util.Mgo.Find(util.TASKCOLLNAME, query, nil, nil, false, start, limit)
|
|
|
- count := util.Mgo.Count(util.TASKCOLLNAME, query)
|
|
|
- for _, l := range *list {
|
|
|
- if status := qu.ObjToString(l["s_status"]); status == "进行中" { //更新任务进度
|
|
|
- groupId := qu.ObjToString(l["s_groupid"])
|
|
|
- giveNum := qu.IntAll(l["i_givenum"])
|
|
|
- sourceinfo := qu.ObjToString(l["s_sourceinfo"])
|
|
|
- tagNum := util.Mgo.Count(sourceinfo, map[string]interface{}{"s_groupid": groupId, "b_istag": true})
|
|
|
- progress := fmt.Sprint(math.Ceil(float64(tagNum)/float64(giveNum))) + "%"
|
|
|
- l["s_progress"] = progress
|
|
|
- //同步数据库
|
|
|
- util.Mgo.UpdateById(util.TASKCOLLNAME, l["_id"], map[string]interface{}{"$set": map[string]interface{}{"s_progress": progress}})
|
|
|
- }
|
|
|
- }
|
|
|
- f.ServeJson(map[string]interface{}{"draw": draw, "data": *list, "recordsFiltered": count, "recordsTotal": count})
|
|
|
+ projectid := f.GetString("pid") //项目id
|
|
|
+ if f.Method() == "POST" {
|
|
|
+ status := f.GetString("s_status") //任务状态
|
|
|
+ searchStr := f.GetString("search[value]")
|
|
|
+ search := strings.TrimSpace(searchStr)
|
|
|
+ start, _ := f.GetInteger("start")
|
|
|
+ limit, _ := f.GetInteger("length")
|
|
|
+ draw, _ := f.GetInteger("draw")
|
|
|
+ query := map[string]interface{}{ //查找用户组任务
|
|
|
+ "s_projectid": projectid,
|
|
|
+ "s_stype": "group",
|
|
|
+ }
|
|
|
+ if status != "-1" {
|
|
|
+ query["s_status"] = status
|
|
|
+ }
|
|
|
+ if search != "" {
|
|
|
+ query["$or"] = []interface{}{
|
|
|
+ map[string]interface{}{"s_groupname": map[string]interface{}{"$regex": search}},
|
|
|
+ }
|
|
|
+ }
|
|
|
+ list, _ := util.Mgo.Find(util.TASKCOLLNAME, query, nil, nil, false, start, limit)
|
|
|
+ count := util.Mgo.Count(util.TASKCOLLNAME, query)
|
|
|
+ for _, l := range *list {
|
|
|
+ if status := qu.ObjToString(l["s_status"]); status == "进行中" { //更新任务进度
|
|
|
+ groupId := qu.ObjToString(l["s_groupid"])
|
|
|
+ giveNum := qu.IntAll(l["i_givenum"])
|
|
|
+ sourceinfo := qu.ObjToString(l["s_sourceinfo"])
|
|
|
+ tagNum := util.Mgo.Count(sourceinfo, map[string]interface{}{"s_groupid": groupId, "b_istag": true})
|
|
|
+ progress := fmt.Sprint(math.Ceil(float64(tagNum)/float64(giveNum))) + "%"
|
|
|
+ l["s_progress"] = progress
|
|
|
+ //同步数据库
|
|
|
+ util.Mgo.UpdateById(util.TASKCOLLNAME, l["_id"], map[string]interface{}{"$set": map[string]interface{}{"s_progress": progress}})
|
|
|
+ }
|
|
|
+ }
|
|
|
+ f.ServeJson(map[string]interface{}{"draw": draw, "data": *list, "recordsFiltered": count, "recordsTotal": count})
|
|
|
+ } else {
|
|
|
+ project, _ := util.Mgo.FindById(util.PROJECTCOLLNAME, projectid, map[string]interface{}{"s_status": 1, "s_sourceinfo": 1})
|
|
|
+ if project != nil && len(*project) > 0 {
|
|
|
+ if status := qu.ObjToString((*project)["s_status"]); status == "未开始" {
|
|
|
+ //TODO:调用数据质量评估接口
|
|
|
+ //点击清洗更新项目状态为进行中
|
|
|
+ b := util.Mgo.UpdateById(util.PROJECTCOLLNAME, projectid, map[string]interface{}{"$set": map[string]interface{}{"s_status": "进行中", "i_starttime": time.Now().Unix()}})
|
|
|
+ qu.Debug("Update Porject:"+projectid+" Status Success:", b)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ sourceinfo := qu.ObjToString((*project)["s_sourceinfo"]) //数据源表
|
|
|
+ noTagAllDataNum := util.Mgo.Count(sourceinfo, map[string]interface{}{"b_istagging": false}) //达标数据总量
|
|
|
+ noTagGiveDataNum := util.Mgo.Count(sourceinfo, map[string]interface{}{"b_istagging": false, "b_isgive": true}) //达标数据已分发量
|
|
|
+ noTagNoGiveDataNum := noTagAllDataNum - noTagGiveDataNum //达标待分发量
|
|
|
+ tagAllDataNum := util.Mgo.Count(sourceinfo, map[string]interface{}{"b_istagging": true}) //未达标数据总量
|
|
|
+ tagGiveDataNum := util.Mgo.Count(sourceinfo, map[string]interface{}{"b_istagging": true, "b_isgive": true}) //未达标数据已分发量
|
|
|
+ tagNoGiveDataNum := tagAllDataNum - tagGiveDataNum //未达标待分发量
|
|
|
+ allGiveDataNum := noTagGiveDataNum + tagGiveDataNum //总分发量
|
|
|
+ allNoGiveDataNum := noTagNoGiveDataNum + tagNoGiveDataNum //总待分发量
|
|
|
+ allDataNum := allGiveDataNum + allNoGiveDataNum
|
|
|
+ f.T["s_projectid"] = projectid
|
|
|
+ f.T["allDataNum"] = allDataNum
|
|
|
+ f.T["noTagAllDataNum"] = noTagAllDataNum
|
|
|
+ f.T["noTagGiveDataNum"] = noTagGiveDataNum
|
|
|
+ f.T["noTagNoGiveDataNum"] = noTagNoGiveDataNum
|
|
|
+ f.T["tagAllDataNum"] = tagAllDataNum
|
|
|
+ f.T["tagGiveDataNum"] = tagGiveDataNum
|
|
|
+ f.T["tagNoGiveDataNum"] = tagNoGiveDataNum
|
|
|
+ f.T["allGiveDataNum"] = allGiveDataNum
|
|
|
+ f.T["allNoGiveDataNum"] = allNoGiveDataNum
|
|
|
+ _ = f.Render("project/project_clear.html", &f.T)
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
// ProjectTaskSave 用户组任务分发
|
|
@@ -281,7 +316,7 @@ func (f *Front) ProjectTaskSave() {
|
|
|
group := f.GetString("s_group")
|
|
|
stype := f.GetString("s_type")
|
|
|
if err := json.Unmarshal([]byte(group), &groupArr); err != nil {
|
|
|
- qu.Debug("V_Filelds Unmarshal Failed:", err)
|
|
|
+ qu.Debug("GroupInfo Unmarshal Failed:", err)
|
|
|
msg = "用户组信息解析失败"
|
|
|
} else {
|
|
|
if stype == "notag" { //如果分发的是达标数据且进行了初步质检,将没有质检记录的字段从v_taginfo标注记录中删除
|
|
@@ -291,16 +326,15 @@ func (f *Front) ProjectTaskSave() {
|
|
|
groupId := qu.ObjToString(groupInfo["s_groupid"])
|
|
|
groupIdArr = append(groupIdArr, groupId)
|
|
|
givenum := qu.IntAll(groupInfo["i_givenum"])
|
|
|
- //groupIdMap[groupId] = givenum
|
|
|
- _id := primitive.NewObjectID()
|
|
|
- sid := mongodb.BsonIdToSId(_id)
|
|
|
+ groupTaskId := primitive.NewObjectID()
|
|
|
+ groupTaskIdStr := mongodb.BsonIdToSId(groupTaskId)
|
|
|
gt := util.Task{
|
|
|
- GroupId: groupId,
|
|
|
+ UserId: groupId,
|
|
|
GiveNum: givenum,
|
|
|
}
|
|
|
- groupIdTask[sid] = gt
|
|
|
+ groupIdTask[groupTaskIdStr] = gt
|
|
|
groupTask := map[string]interface{}{
|
|
|
- "_id": _id, //生成任务id
|
|
|
+ "_id": groupTaskId, //生成任务id
|
|
|
"s_projectid": projectid, //项目标识
|
|
|
"s_projectname": projectname, //项目名称
|
|
|
"s_status": "未开始", //任务状态
|
|
@@ -432,7 +466,7 @@ func (f *Front) ProjectTaskRetrieve() {
|
|
|
sourcetaskinfo := f.GetString("s_sourcetaskinfo")
|
|
|
if status == "已完成" {
|
|
|
count1 := util.Mgo.Count(sourceinfo, map[string]interface{}{"s_groupid": groupId, "b_istag": false})
|
|
|
- count2 := util.Mgo.Count(sourcetaskinfo, map[string]interface{}{"s_groupid": groupId, "s_complete": false})
|
|
|
+ count2 := util.Mgo.Count(sourcetaskinfo, map[string]interface{}{"s_groupid": groupId, "b_iscomplete": false})
|
|
|
if count1 != count2 { //数据源表和临时表数量不一致
|
|
|
qu.Debug("Count Is Not Same:", sourceinfo+":", count1, sourceinfo+":", count2)
|
|
|
}
|
|
@@ -456,15 +490,15 @@ func (f *Front) ProjectTaskRetrieve() {
|
|
|
//1、更新源数据表
|
|
|
success1 := util.Mgo.Update(sourceinfo, map[string]interface{}{"s_groupid": groupId, "b_istag": false}, map[string]interface{}{
|
|
|
"$set": map[string]interface{}{
|
|
|
- "b_isgive": false,
|
|
|
- "i_updatetime": time.Now().Unix(),
|
|
|
+ "b_isgivegroup": false,
|
|
|
+ "i_updatetime": time.Now().Unix(),
|
|
|
},
|
|
|
"$unset": map[string]interface{}{
|
|
|
"s_groupid": "",
|
|
|
},
|
|
|
}, false, true)
|
|
|
//2、删除临时任务表中对应未完成数据
|
|
|
- success2 := util.Mgo.Del(sourcetaskinfo, map[string]interface{}{"s_groupid": groupId, "s_complete": false})
|
|
|
+ success2 := util.Mgo.Del(sourcetaskinfo, map[string]interface{}{"s_groupid": groupId, "b_iscomplete": false})
|
|
|
if success1 && success2 {
|
|
|
//更新任务状态、完成时间
|
|
|
success = util.Mgo.UpdateById(util.TASKCOLLNAME, taskId, map[string]interface{}{
|
|
@@ -588,7 +622,7 @@ func DeleleDataTagInfo(sourceinfo string) {
|
|
|
func UpdateSourceinfo(sourceinfo, sourcetaskinfo, stype string, groupIdInfo map[string]util.Task) {
|
|
|
defer qu.Catch()
|
|
|
for groupTaskId, tInfo := range groupIdInfo {
|
|
|
- groupid := tInfo.GroupId
|
|
|
+ groupId := tInfo.UserId
|
|
|
num := tInfo.GiveNum
|
|
|
sess := util.Mgo.GetMgoConn()
|
|
|
defer util.Mgo.DestoryMongoConn(sess)
|
|
@@ -596,7 +630,7 @@ func UpdateSourceinfo(sourceinfo, sourcetaskinfo, stype string, groupIdInfo map[
|
|
|
wg := &sync.WaitGroup{}
|
|
|
lock := &sync.Mutex{}
|
|
|
query := map[string]interface{}{ //查找未分配对应stype的数据分发
|
|
|
- "b_isgive": false,
|
|
|
+ "b_isgivegroup": false,
|
|
|
}
|
|
|
if stype == "notag" { //达标数据
|
|
|
query["b_istagging"] = false
|
|
@@ -625,18 +659,19 @@ func UpdateSourceinfo(sourceinfo, sourcetaskinfo, stype string, groupIdInfo map[
|
|
|
update = append(update, map[string]interface{}{"_id": tmp["_id"]})
|
|
|
update = append(update, map[string]interface{}{
|
|
|
"$set": map[string]interface{}{
|
|
|
- "s_groupid": groupid,
|
|
|
- "b_isgive": true,
|
|
|
- "i_updatetime": time.Now().Unix(),
|
|
|
+ "s_groupid": groupId,
|
|
|
+ "b_isgivegroup": true,
|
|
|
+ "i_updatetime": time.Now().Unix(),
|
|
|
},
|
|
|
})
|
|
|
save := map[string]interface{}{
|
|
|
"s_infoid": id,
|
|
|
"s_infotitle": title,
|
|
|
- "s_groupid": groupid,
|
|
|
+ "s_groupid": groupId,
|
|
|
"i_createtime": time.Now().Unix(),
|
|
|
- "s_complete": false,
|
|
|
+ "b_iscomplete": false,
|
|
|
"s_grouptaskid": groupTaskId,
|
|
|
+ "b_isgiveuser": false,
|
|
|
}
|
|
|
lock.Lock()
|
|
|
updateArr = append(updateArr, update)
|
|
@@ -946,9 +981,9 @@ func GetDataById(idsInfo map[string]map[string]interface{}, importType, s_source
|
|
|
baseInfoMap["v_taginfo"] = tagInfoMap
|
|
|
}
|
|
|
baseInfoMap["i_createtime"] = time.Now().Unix()
|
|
|
- baseInfoMap["b_isgive"] = false //是否分配
|
|
|
- baseInfoMap["b_istag"] = false //是否已标注
|
|
|
- baseInfoMap["b_cleartag"] = false //是否清理标注信息
|
|
|
+ baseInfoMap["b_isgivegroup"] = false //是否分配
|
|
|
+ baseInfoMap["b_istag"] = false //是否已标注
|
|
|
+ baseInfoMap["b_cleartag"] = false //是否清理标注信息
|
|
|
|
|
|
if util.Mgo.SaveByOriID(s_sourceinfo, baseInfoMap) {
|
|
|
atomic.AddInt64(successNum, 1) //保存成功计数
|