|
@@ -243,7 +243,7 @@ func (f *Front) ProjectTaskList() {
|
|
|
}
|
|
|
}
|
|
|
qu.Debug("Query:", query)
|
|
|
- list, _ := util.Mgo.Find(util.TASKCOLLNAME, query, nil, nil, false, start, limit)
|
|
|
+ list, _ := util.Mgo.Find(util.TASKCOLLNAME, query, map[string]interface{}{"_id": -1}, nil, false, start, limit)
|
|
|
count := util.Mgo.Count(util.TASKCOLLNAME, query)
|
|
|
for _, l := range *list {
|
|
|
if status := qu.ObjToString(l["s_status"]); status == "进行中" { //更新任务进度
|
|
@@ -330,7 +330,7 @@ func (f *Front) ProjectTaskSave() {
|
|
|
msg = "用户组信息解析失败"
|
|
|
} else {
|
|
|
qu.Debug("用户组信息:", groupArr, stype)
|
|
|
- if stype == "notag" { //如果分发的是达标数据且进行了初步质检,将没有质检记录的字段从v_taginfo标注记录中删除
|
|
|
+ if stype != "tag" { //如果分发的是达标数据或者全部数据且进行了初步质检,将没有质检记录的字段从v_taginfo标注记录中删除
|
|
|
DeleleDataTagInfo(sourceinfo)
|
|
|
}
|
|
|
for _, groupInfo := range groupArr {
|
|
@@ -488,6 +488,7 @@ func (f *Front) ProjectTaskRetrieve() {
|
|
|
count := 0
|
|
|
if status == "未开始" { //未开始的用户组任务,暂未给用户分发任务
|
|
|
success = true
|
|
|
+ count = giveNum
|
|
|
} else { //进行中的用户组任务需更新其下用户信息
|
|
|
groupTask, _ := util.Mgo.FindById(util.TASKCOLLNAME, groupTaskId, map[string]interface{}{"v_sonids": 1})
|
|
|
if groupTask != nil && len(*groupTask) > 0 {
|
|
@@ -504,8 +505,11 @@ func (f *Front) ProjectTaskRetrieve() {
|
|
|
qu.Debug("Find User Task:", userTaskId, "Error")
|
|
|
}
|
|
|
}
|
|
|
+ qu.Debug("userTaskIdStatus:", len(userTaskIdStatus))
|
|
|
if len(userTaskIdStatus) > 0 { //收回用户组下所有用户信息
|
|
|
- msg, count, success = RetrieveTaskByUser(sourceInfo, username, "已完成", userTaskIdStatus) //用户信息收回
|
|
|
+ msg, _, success = RetrieveCloseTaskByUser(sourceInfo, username, userTaskIdStatus) //用户信息收回
|
|
|
+ //用户组收回时,若已有用户任务再未开始时收回或关闭,调用RetrieveTaskByUser返回的总收回量count就遗漏了用户收回或关闭任务的量
|
|
|
+ qu.Debug(msg, count, success)
|
|
|
giveNum = count
|
|
|
} else { //用户组下所有用户任务都已完成
|
|
|
success = true
|
|
@@ -519,7 +523,7 @@ func (f *Front) ProjectTaskRetrieve() {
|
|
|
}
|
|
|
}
|
|
|
if success { //所有用户信息收回成功后,更新用户组任务相关信息
|
|
|
- UpdateGroupTaskAndSourceInfo(groupTaskId, sourceInfo, username, status, giveNum, &msg, &success)
|
|
|
+ UpdateGroupTaskAndSourceInfo(groupTaskId, sourceInfo, username, status, "已完成", giveNum, &msg, &success)
|
|
|
}
|
|
|
qu.Debug(success, count, msg)
|
|
|
f.ServeJson(map[string]interface{}{"success": success, "msg": msg, "count": count})
|
|
@@ -537,28 +541,31 @@ func (f *Front) ProjectTaskClose() {
|
|
|
msg := ""
|
|
|
success := false
|
|
|
count := 0
|
|
|
- if status == "未开始" { //未开始的用户组任务,暂未给用户分发任务
|
|
|
+ if status == "未开始" { //未开始的用户组任务,暂未给用户分发任务;已完成只更新用户组任务
|
|
|
+ success = true
|
|
|
+ } else if status == "已完成" {
|
|
|
success = true
|
|
|
+ giveNum = 0
|
|
|
} else { //进行中的用户组任务需更新其下用户信息
|
|
|
groupTask, _ := util.Mgo.FindById(util.TASKCOLLNAME, groupTaskId, map[string]interface{}{"v_sonids": 1})
|
|
|
if groupTask != nil && len(*groupTask) > 0 {
|
|
|
if sonIds, ok := (*groupTask)["v_sonids"].([]interface{}); ok && len(sonIds) > 0 { //更新所有用户任务信息
|
|
|
- userTaskIdStatus := map[string]string{} //封装要回收的用户任务信息
|
|
|
+ userTaskIdStatus := map[string]string{} //封装要关闭的用户任务信息
|
|
|
for _, sId := range sonIds {
|
|
|
userTaskId := qu.ObjToString(sId)
|
|
|
userTask, _ := util.Mgo.FindById(util.TASKCOLLNAME, userTaskId, map[string]interface{}{"s_tatus": 1})
|
|
|
if userTask != nil && len(*userTask) > 0 {
|
|
|
- if statusTmp := qu.ObjToString((*userTask)["s_status"]); statusTmp != "已完成" && statusTmp != "已关闭" { //已完成和已关闭的任务不收回
|
|
|
+ if statusTmp := qu.ObjToString((*userTask)["s_status"]); statusTmp != "已关闭" { //已关闭的任务不更新
|
|
|
userTaskIdStatus[userTaskId] = statusTmp
|
|
|
}
|
|
|
} else {
|
|
|
qu.Debug("Find User Task:", userTaskId, "Error")
|
|
|
}
|
|
|
}
|
|
|
- if len(userTaskIdStatus) > 0 { //收回用户组下所有用户信息
|
|
|
- msg, count, success = RetrieveTaskByUser(sourceInfo, username, "已关闭", userTaskIdStatus) //用户信息收回
|
|
|
+ if len(userTaskIdStatus) > 0 { //关闭用户组下所有用户信息
|
|
|
+ msg, count, success = RetrieveCloseTaskByUser(sourceInfo, username, userTaskIdStatus) //用户信息收回
|
|
|
giveNum = count
|
|
|
- } else { //用户组下所有用户任务都已完成
|
|
|
+ } else { //用户组下所有用户任务都已关闭
|
|
|
success = true
|
|
|
giveNum = 0 //分发数据量不变
|
|
|
}
|
|
@@ -569,16 +576,17 @@ func (f *Front) ProjectTaskClose() {
|
|
|
msg = "用户组任务查找失败"
|
|
|
}
|
|
|
}
|
|
|
- if success { //所有用户信息收回成功后,更新用户组任务相关信息
|
|
|
- UpdateGroupTaskAndSourceInfo(groupTaskId, sourceInfo, username, status, giveNum, &msg, &success)
|
|
|
+ if success { //所有用户信息关闭成功后,更新用户组任务相关信息
|
|
|
+ UpdateGroupTaskAndSourceInfo(groupTaskId, sourceInfo, username, status, "已关闭", giveNum, &msg, &success)
|
|
|
}
|
|
|
qu.Debug(success, count, msg)
|
|
|
f.ServeJson(map[string]interface{}{"success": success, "msg": msg, "count": count})
|
|
|
}
|
|
|
|
|
|
// UpdateGroupTaskAndSourceInfo 更新用户组任务相关信息
|
|
|
-func UpdateGroupTaskAndSourceInfo(groupTaskId, sourceInfo, username, status string, count int, msg *string, success *bool) {
|
|
|
+func UpdateGroupTaskAndSourceInfo(groupTaskId, sourceInfo, username, status, stype string, count int, msg *string, success *bool) {
|
|
|
defer qu.Catch()
|
|
|
+ qu.Debug("GroupTaskStatus:", status, " Act:", stype)
|
|
|
//更新数据源
|
|
|
query := map[string]interface{}{
|
|
|
"s_grouptaskid": groupTaskId,
|
|
@@ -591,16 +599,17 @@ func UpdateGroupTaskAndSourceInfo(groupTaskId, sourceInfo, username, status stri
|
|
|
"s_groupid": "",
|
|
|
"s_grouptaskid": "",
|
|
|
}
|
|
|
- *success = util.Mgo.Update(sourceInfo, query, map[string]interface{}{"$set": set, "$unset": unset}, false, false)
|
|
|
+ *success = util.Mgo.Update(sourceInfo, query, map[string]interface{}{"$set": set, "$unset": unset}, false, true)
|
|
|
//更新用户组任务
|
|
|
if *success {
|
|
|
taskSet := map[string]interface{}{
|
|
|
- "s_status": "已完成",
|
|
|
+ "s_status": stype,
|
|
|
"s_updateperson": username,
|
|
|
"i_updatetime": time.Now().Unix(),
|
|
|
"i_completetime": time.Now().Unix(),
|
|
|
"s_progress": "100%",
|
|
|
}
|
|
|
+
|
|
|
if status == "未开始" {
|
|
|
taskSet["i_starttime"] = time.Now().Unix()
|
|
|
}
|