|
@@ -479,77 +479,141 @@ func (f *Front) ProjectTaskRetrieve() {
|
|
|
defer qu.Catch()
|
|
|
user := f.GetSession("user").(map[string]interface{})
|
|
|
username := qu.ObjToString(user["s_login"])
|
|
|
- status := f.GetString("s_status")
|
|
|
groupTaskId := f.GetString("taskid")
|
|
|
- //groupId := f.GetString("s_groupid")
|
|
|
sourceInfo := f.GetString("s_sourceinfo")
|
|
|
- //sourcetaskinfo := f.GetString("s_sourcetaskinfo")
|
|
|
+ status := f.GetString("s_status") //未开始、进行中
|
|
|
+ giveNum, _ := f.GetInteger("i_givenum") //收回时要更新的分发数据量
|
|
|
msg := ""
|
|
|
success := false
|
|
|
count := 0
|
|
|
- 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{} //封装要回收的用户任务信息
|
|
|
- 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 != "已关闭" { //已完成和已关闭的任务不收回
|
|
|
- userTaskIdStatus[userTaskId] = status
|
|
|
+ if status == "未开始" { //未开始的用户组任务,暂未给用户分发任务
|
|
|
+ success = true
|
|
|
+ } 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{} //封装要回收的用户任务信息
|
|
|
+ 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 != "已关闭" { //已完成和已关闭的任务不收回
|
|
|
+ userTaskIdStatus[userTaskId] = statusTmp
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ qu.Debug("Find User Task:", userTaskId, "Error")
|
|
|
}
|
|
|
- } else {
|
|
|
- qu.Debug("Find User Task:", userTaskId, "Error")
|
|
|
}
|
|
|
- }
|
|
|
- if len(userTaskIdStatus) > 0 {
|
|
|
- msg, count, success = RetrieveTaskByUser(sourceInfo, username, "已完成", "group", userTaskIdStatus) //用户信息收回
|
|
|
- if success { //所有用户信息收回成功后,更新用户组任务相关信息
|
|
|
- set := map[string]interface{}{
|
|
|
- "s_status": "已完成",
|
|
|
- "s_updateperson": username,
|
|
|
- "i_updatetime": time.Now().Unix(),
|
|
|
- "i_completetime": time.Now().Unix(),
|
|
|
- "s_progress": "100%",
|
|
|
- }
|
|
|
- inc := map[string]interface{}{
|
|
|
- "i_givenum": -count,
|
|
|
- }
|
|
|
- success := util.Mgo.UpdateById(util.TASKCOLLNAME, groupTaskId, map[string]interface{}{"$set": set, "$inc": inc})
|
|
|
- if !success {
|
|
|
- msg = "用户组任务更新失败"
|
|
|
- }
|
|
|
+ if len(userTaskIdStatus) > 0 { //收回用户组下所有用户信息
|
|
|
+ msg, count, success = RetrieveTaskByUser(sourceInfo, username, "已完成", userTaskIdStatus) //用户信息收回
|
|
|
+ giveNum = count
|
|
|
+ } else { //用户组下所有用户任务都已完成
|
|
|
+ success = true
|
|
|
+ giveNum = 0 //分发数据量不变
|
|
|
}
|
|
|
+ } else { //没有分配给用户任务
|
|
|
+ success = true
|
|
|
}
|
|
|
- } else { //没有分配给用户任务
|
|
|
- success = true
|
|
|
+ } else {
|
|
|
+ msg = "用户组任务查找失败"
|
|
|
}
|
|
|
- } else {
|
|
|
- msg = "用户组任务查找失败"
|
|
|
}
|
|
|
+ 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})
|
|
|
}
|
|
|
|
|
|
// ProjectTaskClose 用户组任务关闭
|
|
|
func (f *Front) ProjectTaskClose() {
|
|
|
defer qu.Catch()
|
|
|
- success := false
|
|
|
user := f.GetSession("user").(map[string]interface{})
|
|
|
username := qu.ObjToString(user["s_login"])
|
|
|
- status := f.GetString("s_status")
|
|
|
- taskId := f.GetString("id")
|
|
|
- if status == "已完成" {
|
|
|
- //更新任务状态
|
|
|
- success = util.Mgo.UpdateById(util.TASKCOLLNAME, taskId, map[string]interface{}{
|
|
|
- "$set": map[string]interface{}{
|
|
|
- "s_status": "已关闭",
|
|
|
- "s_updateperson": username,
|
|
|
- "i_updatetime": time.Now().Unix(),
|
|
|
- "s_progress": "100%",
|
|
|
- },
|
|
|
- })
|
|
|
+ groupTaskId := f.GetString("taskid")
|
|
|
+ sourceInfo := f.GetString("s_sourceinfo")
|
|
|
+ status := f.GetString("s_status") //未开始、进行中
|
|
|
+ giveNum, _ := f.GetInteger("i_givenum") //收回时要更新的分发数据量
|
|
|
+ msg := ""
|
|
|
+ success := false
|
|
|
+ count := 0
|
|
|
+ if status == "未开始" { //未开始的用户组任务,暂未给用户分发任务
|
|
|
+ success = true
|
|
|
+ } 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{} //封装要回收的用户任务信息
|
|
|
+ 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 != "已关闭" { //已完成和已关闭的任务不收回
|
|
|
+ userTaskIdStatus[userTaskId] = statusTmp
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ qu.Debug("Find User Task:", userTaskId, "Error")
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if len(userTaskIdStatus) > 0 { //收回用户组下所有用户信息
|
|
|
+ msg, count, success = RetrieveTaskByUser(sourceInfo, username, "已关闭", userTaskIdStatus) //用户信息收回
|
|
|
+ giveNum = count
|
|
|
+ } else { //用户组下所有用户任务都已完成
|
|
|
+ success = true
|
|
|
+ giveNum = 0 //分发数据量不变
|
|
|
+ }
|
|
|
+ } else { //没有分配给用户任务
|
|
|
+ success = true
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ msg = "用户组任务查找失败"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ 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) {
|
|
|
+ defer qu.Catch()
|
|
|
+ //更新数据源
|
|
|
+ query := map[string]interface{}{
|
|
|
+ "s_grouptaskid": groupTaskId,
|
|
|
+ }
|
|
|
+ set := map[string]interface{}{
|
|
|
+ "b_isgivegroup": false,
|
|
|
+ "i_updatetime": time.Now().Unix(),
|
|
|
+ }
|
|
|
+ unset := map[string]interface{}{
|
|
|
+ "s_groupid": "",
|
|
|
+ "s_grouptaskid": "",
|
|
|
+ }
|
|
|
+ *success = util.Mgo.Update(sourceInfo, query, map[string]interface{}{"$set": set, "$unset": unset}, false, false)
|
|
|
+ //更新用户组任务
|
|
|
+ if *success {
|
|
|
+ taskSet := map[string]interface{}{
|
|
|
+ "s_status": "已完成",
|
|
|
+ "s_updateperson": username,
|
|
|
+ "i_updatetime": time.Now().Unix(),
|
|
|
+ "i_completetime": time.Now().Unix(),
|
|
|
+ "s_progress": "100%",
|
|
|
+ }
|
|
|
+ if status == "未开始" {
|
|
|
+ taskSet["i_starttime"] = time.Now().Unix()
|
|
|
+ }
|
|
|
+ inc := map[string]interface{}{
|
|
|
+ "i_givenum": -count,
|
|
|
+ }
|
|
|
+ *success = util.Mgo.UpdateById(util.TASKCOLLNAME, groupTaskId, map[string]interface{}{"$set": taskSet, "$inc": inc})
|
|
|
+ if !*success {
|
|
|
+ *msg = "更新用户组任务失败"
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ *msg = "更新数据源信息失败"
|
|
|
}
|
|
|
- f.ServeJson(map[string]interface{}{"success": success})
|
|
|
}
|
|
|
|
|
|
// DeleleDataTagInfo 删除标注记录
|