|
@@ -425,50 +425,39 @@ func (f *Front) ProjectTaskRepulse() {
|
|
msg := ""
|
|
msg := ""
|
|
user := f.GetSession("user").(map[string]interface{})
|
|
user := f.GetSession("user").(map[string]interface{})
|
|
username := qu.ObjToString(user["s_login"])
|
|
username := qu.ObjToString(user["s_login"])
|
|
- status := f.GetString("s_status")
|
|
|
|
- taskId := f.GetString("id")
|
|
|
|
- groupId := f.GetString("s_groupid")
|
|
|
|
|
|
+ //status := f.GetString("s_status")
|
|
|
|
+ groupTaskId := f.GetString("taskid")
|
|
sourceinfo := f.GetString("s_sourceinfo")
|
|
sourceinfo := f.GetString("s_sourceinfo")
|
|
- sourcetaskinfo := f.GetString("s_sourcetaskinfo")
|
|
|
|
- if status == "已完成" {
|
|
|
|
- //更新数据状态
|
|
|
|
- //1、更新源数据表
|
|
|
|
- success1 := util.Mgo.Update(sourceinfo, map[string]interface{}{"s_groupid": groupId}, map[string]interface{}{
|
|
|
|
|
|
+ //更新数据源
|
|
|
|
+ success = util.Mgo.Update(sourceinfo, map[string]interface{}{"s_grouptaskid": groupTaskId}, map[string]interface{}{
|
|
|
|
+ "$set": map[string]interface{}{
|
|
|
|
+ "b_istag": false,
|
|
|
|
+ "b_isgiveuser": false,
|
|
|
|
+ "i_updatetime": time.Now().Unix(),
|
|
|
|
+ },
|
|
|
|
+ "$unset": map[string]interface{}{
|
|
|
|
+ "s_userid": "",
|
|
|
|
+ "s_usertaskid": "",
|
|
|
|
+ },
|
|
|
|
+ }, false, true)
|
|
|
|
+ if success {
|
|
|
|
+ //更新用户组任务 清除最迟完成时间,更新任务状态
|
|
|
|
+ success = util.Mgo.UpdateById(util.TASKCOLLNAME, groupTaskId, map[string]interface{}{
|
|
"$set": map[string]interface{}{
|
|
"$set": map[string]interface{}{
|
|
- "b_istag": false,
|
|
|
|
- "i_updatetime": time.Now().Unix(),
|
|
|
|
|
|
+ "s_status": "未开始",
|
|
|
|
+ "s_updateperson": username,
|
|
|
|
+ "i_updatetime": time.Now().Unix(),
|
|
|
|
+ "s_progress": "0%",
|
|
},
|
|
},
|
|
"$unset": map[string]interface{}{
|
|
"$unset": map[string]interface{}{
|
|
- "s_userid": "",
|
|
|
|
|
|
+ "i_completetime": "",
|
|
},
|
|
},
|
|
- }, false, true)
|
|
|
|
- //2、删除临时任务表中对应数据
|
|
|
|
- success2 := util.Mgo.Del(sourcetaskinfo, map[string]interface{}{"s_groupid": groupId})
|
|
|
|
- if success1 && success2 {
|
|
|
|
- //清除最迟完成时间,更新任务状态
|
|
|
|
- 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": "0%",
|
|
|
|
- },
|
|
|
|
- "$unset": map[string]interface{}{
|
|
|
|
- "i_completetime": "",
|
|
|
|
- },
|
|
|
|
- })
|
|
|
|
- if !success {
|
|
|
|
- msg += "更新任务:" + taskId + "失败"
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- qu.Debug("Update "+sourceinfo+":", success1, " Delete "+sourcetaskinfo+":", success2)
|
|
|
|
- if !success1 {
|
|
|
|
- msg += "更新" + sourceinfo + "数据失败;"
|
|
|
|
- }
|
|
|
|
- if !success2 {
|
|
|
|
- msg += "删除" + sourcetaskinfo + "数据失败;"
|
|
|
|
- }
|
|
|
|
|
|
+ })
|
|
|
|
+ if !success {
|
|
|
|
+ msg = "更新用户组任务失败"
|
|
}
|
|
}
|
|
|
|
+ } else {
|
|
|
|
+ msg = "更新数据源信息失败"
|
|
}
|
|
}
|
|
qu.Debug("Task Repulse:", success, " Msg:", msg)
|
|
qu.Debug("Task Repulse:", success, " Msg:", msg)
|
|
f.ServeJson(map[string]interface{}{"success": success, "msg": msg})
|
|
f.ServeJson(map[string]interface{}{"success": success, "msg": msg})
|
|
@@ -481,14 +470,13 @@ func (f *Front) ProjectTaskRetrieve() {
|
|
username := qu.ObjToString(user["s_login"])
|
|
username := qu.ObjToString(user["s_login"])
|
|
groupTaskId := f.GetString("taskid")
|
|
groupTaskId := f.GetString("taskid")
|
|
sourceInfo := f.GetString("s_sourceinfo")
|
|
sourceInfo := f.GetString("s_sourceinfo")
|
|
- status := f.GetString("s_status") //未开始、进行中
|
|
|
|
- giveNum, _ := f.GetInteger("i_givenum") //收回时要更新的分发数据量
|
|
|
|
|
|
+ status := f.GetString("s_status") //未开始、进行中
|
|
|
|
+ //giveNum, _ := f.GetInteger("i_givenum") //收回时要更新的分发数据量
|
|
msg := ""
|
|
msg := ""
|
|
success := false
|
|
success := false
|
|
count := 0
|
|
count := 0
|
|
if status == "未开始" { //未开始的用户组任务,暂未给用户分发任务
|
|
if status == "未开始" { //未开始的用户组任务,暂未给用户分发任务
|
|
success = true
|
|
success = true
|
|
- count = giveNum
|
|
|
|
} else { //进行中的用户组任务需更新其下用户信息
|
|
} else { //进行中的用户组任务需更新其下用户信息
|
|
groupTask, _ := util.Mgo.FindById(util.TASKCOLLNAME, groupTaskId, map[string]interface{}{"v_sonids": 1})
|
|
groupTask, _ := util.Mgo.FindById(util.TASKCOLLNAME, groupTaskId, map[string]interface{}{"v_sonids": 1})
|
|
if groupTask != nil && len(*groupTask) > 0 {
|
|
if groupTask != nil && len(*groupTask) > 0 {
|
|
@@ -496,7 +484,7 @@ func (f *Front) ProjectTaskRetrieve() {
|
|
userTaskIdStatus := map[string]string{} //封装要回收的用户任务信息
|
|
userTaskIdStatus := map[string]string{} //封装要回收的用户任务信息
|
|
for _, sId := range sonIds {
|
|
for _, sId := range sonIds {
|
|
userTaskId := qu.ObjToString(sId)
|
|
userTaskId := qu.ObjToString(sId)
|
|
- userTask, _ := util.Mgo.FindById(util.TASKCOLLNAME, userTaskId, map[string]interface{}{"s_tatus": 1})
|
|
|
|
|
|
+ userTask, _ := util.Mgo.FindById(util.TASKCOLLNAME, userTaskId, map[string]interface{}{"s_status": 1})
|
|
if userTask != nil && len(*userTask) > 0 {
|
|
if userTask != nil && len(*userTask) > 0 {
|
|
if statusTmp := qu.ObjToString((*userTask)["s_status"]); statusTmp != "已完成" && statusTmp != "已关闭" { //已完成和已关闭的任务不收回
|
|
if statusTmp := qu.ObjToString((*userTask)["s_status"]); statusTmp != "已完成" && statusTmp != "已关闭" { //已完成和已关闭的任务不收回
|
|
userTaskIdStatus[userTaskId] = statusTmp
|
|
userTaskIdStatus[userTaskId] = statusTmp
|
|
@@ -507,13 +495,10 @@ func (f *Front) ProjectTaskRetrieve() {
|
|
}
|
|
}
|
|
qu.Debug("userTaskIdStatus:", len(userTaskIdStatus))
|
|
qu.Debug("userTaskIdStatus:", len(userTaskIdStatus))
|
|
if len(userTaskIdStatus) > 0 { //收回用户组下所有用户信息
|
|
if len(userTaskIdStatus) > 0 { //收回用户组下所有用户信息
|
|
|
|
+ //用户组收回时,若已有用户任务在未开始时收回或关闭,调用RetrieveTaskByUser返回的总收回量count就遗漏了用户收回或关闭任务的量
|
|
msg, _, success = RetrieveCloseTaskByUser(sourceInfo, username, userTaskIdStatus) //用户信息收回
|
|
msg, _, success = RetrieveCloseTaskByUser(sourceInfo, username, userTaskIdStatus) //用户信息收回
|
|
- //用户组收回时,若已有用户任务再未开始时收回或关闭,调用RetrieveTaskByUser返回的总收回量count就遗漏了用户收回或关闭任务的量
|
|
|
|
- qu.Debug(msg, count, success)
|
|
|
|
- giveNum = count
|
|
|
|
} else { //用户组下所有用户任务都已完成
|
|
} else { //用户组下所有用户任务都已完成
|
|
success = true
|
|
success = true
|
|
- giveNum = 0 //分发数据量不变
|
|
|
|
}
|
|
}
|
|
} else { //没有分配给用户任务
|
|
} else { //没有分配给用户任务
|
|
success = true
|
|
success = true
|
|
@@ -523,7 +508,11 @@ func (f *Front) ProjectTaskRetrieve() {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if success { //所有用户信息收回成功后,更新用户组任务相关信息
|
|
if success { //所有用户信息收回成功后,更新用户组任务相关信息
|
|
- UpdateGroupTaskAndSourceInfo(groupTaskId, sourceInfo, username, status, "已完成", giveNum, &msg, &success)
|
|
|
|
|
|
+ count = util.Mgo.Count(sourceInfo, map[string]interface{}{ //统计该用户组任务下未标注的数据量
|
|
|
|
+ "s_grouptaskid": groupTaskId,
|
|
|
|
+ "b_istag": false,
|
|
|
|
+ })
|
|
|
|
+ UpdateGroupTaskAndSourceInfo(groupTaskId, sourceInfo, username, status, count, &msg, &success)
|
|
}
|
|
}
|
|
qu.Debug(success, count, msg)
|
|
qu.Debug(success, count, msg)
|
|
f.ServeJson(map[string]interface{}{"success": success, "msg": msg, "count": count})
|
|
f.ServeJson(map[string]interface{}{"success": success, "msg": msg, "count": count})
|
|
@@ -536,74 +525,74 @@ func (f *Front) ProjectTaskClose() {
|
|
username := qu.ObjToString(user["s_login"])
|
|
username := qu.ObjToString(user["s_login"])
|
|
groupTaskId := f.GetString("taskid")
|
|
groupTaskId := f.GetString("taskid")
|
|
sourceInfo := f.GetString("s_sourceinfo")
|
|
sourceInfo := f.GetString("s_sourceinfo")
|
|
- status := f.GetString("s_status") //未开始、进行中
|
|
|
|
- giveNum, _ := f.GetInteger("i_givenum") //收回时要更新的分发数据量
|
|
|
|
|
|
+ status := f.GetString("s_status") //未开始、进行中
|
|
msg := ""
|
|
msg := ""
|
|
success := false
|
|
success := false
|
|
count := 0
|
|
count := 0
|
|
if status == "未开始" { //未开始的用户组任务,暂未给用户分发任务;已完成只更新用户组任务
|
|
if status == "未开始" { //未开始的用户组任务,暂未给用户分发任务;已完成只更新用户组任务
|
|
success = true
|
|
success = true
|
|
- } else if status == "已完成" {
|
|
|
|
- success = true
|
|
|
|
- giveNum = 0
|
|
|
|
} else { //进行中的用户组任务需更新其下用户信息
|
|
} 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 != "已关闭" { //已关闭的任务不更新
|
|
|
|
- userTaskIdStatus[userTaskId] = statusTmp
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- qu.Debug("Find User Task:", userTaskId, "Error")
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- if len(userTaskIdStatus) > 0 { //关闭用户组下所有用户信息
|
|
|
|
- msg, count, success = RetrieveCloseTaskByUser(sourceInfo, username, userTaskIdStatus) //用户信息收回
|
|
|
|
- giveNum = count
|
|
|
|
- } else { //用户组下所有用户任务都已关闭
|
|
|
|
- success = true
|
|
|
|
- giveNum = 0 //分发数据量不变
|
|
|
|
- }
|
|
|
|
- } else { //没有分配给用户任务
|
|
|
|
- success = true
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- msg = "用户组任务查找失败"
|
|
|
|
- }
|
|
|
|
|
|
+ //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_status": 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, _, success = RetrieveCloseTaskByUser(sourceInfo, username, userTaskIdStatus) //用户信息收回
|
|
|
|
+ // } else { //用户组下所有用户任务都已关闭
|
|
|
|
+ // success = true
|
|
|
|
+ // }
|
|
|
|
+ // } else { //没有分配给用户任务
|
|
|
|
+ // success = true
|
|
|
|
+ // }
|
|
|
|
+ //} else {
|
|
|
|
+ // msg = "用户组任务查找失败"
|
|
|
|
+ //}
|
|
}
|
|
}
|
|
if success { //所有用户信息关闭成功后,更新用户组任务相关信息
|
|
if success { //所有用户信息关闭成功后,更新用户组任务相关信息
|
|
- UpdateGroupTaskAndSourceInfo(groupTaskId, sourceInfo, username, status, "已关闭", giveNum, &msg, &success)
|
|
|
|
|
|
+ count = util.Mgo.Count(sourceInfo, map[string]interface{}{ //统计该用户组任务下未标注的数据量
|
|
|
|
+ "s_grouptaskid": groupTaskId,
|
|
|
|
+ "b_istag": false,
|
|
|
|
+ })
|
|
|
|
+ UpdateGroupTaskAndSourceInfo(groupTaskId, sourceInfo, username, status, count, &msg, &success)
|
|
}
|
|
}
|
|
qu.Debug(success, count, msg)
|
|
qu.Debug(success, count, msg)
|
|
f.ServeJson(map[string]interface{}{"success": success, "msg": msg, "count": count})
|
|
f.ServeJson(map[string]interface{}{"success": success, "msg": msg, "count": count})
|
|
}
|
|
}
|
|
|
|
|
|
// UpdateGroupTaskAndSourceInfo 更新用户组任务相关信息
|
|
// UpdateGroupTaskAndSourceInfo 更新用户组任务相关信息
|
|
-func UpdateGroupTaskAndSourceInfo(groupTaskId, sourceInfo, username, status, stype string, count int, msg *string, success *bool) {
|
|
|
|
|
|
+func UpdateGroupTaskAndSourceInfo(groupTaskId, sourceInfo, username, status string, count int, msg *string, success *bool) {
|
|
defer qu.Catch()
|
|
defer qu.Catch()
|
|
- qu.Debug("GroupTaskStatus:", status, " Act:", stype)
|
|
|
|
- //更新数据源
|
|
|
|
- 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": "",
|
|
|
|
|
|
+ qu.Debug("GroupTaskStatus:", status, " Count:", count)
|
|
|
|
+ if count != 0 { //更新数据源
|
|
|
|
+ query := map[string]interface{}{
|
|
|
|
+ "s_grouptaskid": groupTaskId,
|
|
|
|
+ "b_istag": false,
|
|
|
|
+ }
|
|
|
|
+ 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, true)
|
|
}
|
|
}
|
|
- *success = util.Mgo.Update(sourceInfo, query, map[string]interface{}{"$set": set, "$unset": unset}, false, true)
|
|
|
|
//更新用户组任务
|
|
//更新用户组任务
|
|
if *success {
|
|
if *success {
|
|
taskSet := map[string]interface{}{
|
|
taskSet := map[string]interface{}{
|
|
- "s_status": stype,
|
|
|
|
|
|
+ "s_status": "已完成",
|
|
"s_updateperson": username,
|
|
"s_updateperson": username,
|
|
"i_updatetime": time.Now().Unix(),
|
|
"i_updatetime": time.Now().Unix(),
|
|
"i_completetime": time.Now().Unix(),
|
|
"i_completetime": time.Now().Unix(),
|
|
@@ -612,6 +601,7 @@ func UpdateGroupTaskAndSourceInfo(groupTaskId, sourceInfo, username, status, sty
|
|
|
|
|
|
if status == "未开始" {
|
|
if status == "未开始" {
|
|
taskSet["i_starttime"] = time.Now().Unix()
|
|
taskSet["i_starttime"] = time.Now().Unix()
|
|
|
|
+ taskSet["s_status"] = "已关闭"
|
|
}
|
|
}
|
|
inc := map[string]interface{}{
|
|
inc := map[string]interface{}{
|
|
"i_givenum": -count,
|
|
"i_givenum": -count,
|