maxiaoshan 3 éve
szülő
commit
a6cd93568f

+ 1 - 1
src/front/group.go

@@ -31,7 +31,7 @@ func (f *Front) GroupTaskListByGroup() {
 				map[string]interface{}{"s_projectname": map[string]interface{}{"$regex": search}},
 			}
 		}
-		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)
 		f.ServeJson(map[string]interface{}{"draw": draw, "data": *list, "recordsFiltered": count, "recordsTotal": count})
 	} else {

+ 86 - 96
src/front/project.go

@@ -425,50 +425,39 @@ func (f *Front) ProjectTaskRepulse() {
 	msg := ""
 	user := f.GetSession("user").(map[string]interface{})
 	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")
-	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{}{
-				"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{}{
-				"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)
 	f.ServeJson(map[string]interface{}{"success": success, "msg": msg})
@@ -481,14 +470,13 @@ func (f *Front) ProjectTaskRetrieve() {
 	username := qu.ObjToString(user["s_login"])
 	groupTaskId := f.GetString("taskid")
 	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 := ""
 	success := false
 	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 {
@@ -496,7 +484,7 @@ func (f *Front) ProjectTaskRetrieve() {
 				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})
+					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
@@ -507,13 +495,10 @@ func (f *Front) ProjectTaskRetrieve() {
 				}
 				qu.Debug("userTaskIdStatus:", len(userTaskIdStatus))
 				if len(userTaskIdStatus) > 0 { //收回用户组下所有用户信息
+					//用户组收回时,若已有用户任务在未开始时收回或关闭,调用RetrieveTaskByUser返回的总收回量count就遗漏了用户收回或关闭任务的量
 					msg, _, success = RetrieveCloseTaskByUser(sourceInfo, username, userTaskIdStatus) //用户信息收回
-					//用户组收回时,若已有用户任务再未开始时收回或关闭,调用RetrieveTaskByUser返回的总收回量count就遗漏了用户收回或关闭任务的量
-					qu.Debug(msg, count, success)
-					giveNum = count
 				} else { //用户组下所有用户任务都已完成
 					success = true
-					giveNum = 0 //分发数据量不变
 				}
 			} else { //没有分配给用户任务
 				success = true
@@ -523,7 +508,11 @@ func (f *Front) ProjectTaskRetrieve() {
 		}
 	}
 	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)
 	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"])
 	groupTaskId := f.GetString("taskid")
 	sourceInfo := f.GetString("s_sourceinfo")
-	status := f.GetString("s_status")       //未开始、进行中
-	giveNum, _ := f.GetInteger("i_givenum") //收回时要更新的分发数据量
+	status := f.GetString("s_status") //未开始、进行中
 	msg := ""
 	success := false
 	count := 0
 	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{} //封装要关闭的用户任务信息
-				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 { //所有用户信息关闭成功后,更新用户组任务相关信息
-		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)
 	f.ServeJson(map[string]interface{}{"success": success, "msg": msg, "count": count})
 }
 
 // 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()
-	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 {
 		taskSet := map[string]interface{}{
-			"s_status":       stype,
+			"s_status":       "已完成",
 			"s_updateperson": username,
 			"i_updatetime":   time.Now().Unix(),
 			"i_completetime": time.Now().Unix(),
@@ -612,6 +601,7 @@ func UpdateGroupTaskAndSourceInfo(groupTaskId, sourceInfo, username, status, sty
 
 		if status == "未开始" {
 			taskSet["i_starttime"] = time.Now().Unix()
+			taskSet["s_status"] = "已关闭"
 		}
 		inc := map[string]interface{}{
 			"i_givenum": -count,

+ 7 - 7
src/web/templates/project/project_clear.html

@@ -241,10 +241,10 @@
                     "data": "_id", width: "11%", render: function (val, a, row, pos) {
                         tmp = '<div>' +
                             '<a class="btn btn-sm btn-primary" href="/front/user/task/list?grouptaskid=' + val + '&s_sourceinfo='+row.s_sourceinfo+'">查看</a>&nbsp;&nbsp;' +
-                            '<a class="btn btn-sm btn-warning" onclick="retrieveTask(\''+val+'\',\''+row.s_sourceinfo+'\',\''+row.s_status+'\',\''+row.i_givenum+'\')">收回</a>&nbsp;&nbsp;' +
+                            '<a class="btn btn-sm btn-warning" onclick="retrieveTask(\''+val+'\',\''+row.s_sourceinfo+'\',\''+row.s_status+'\')">收回</a>&nbsp;&nbsp;' +
                             '<a class="btn btn-sm btn-info">质检</a>&nbsp;&nbsp;' +
-                            '<a class="btn btn-sm btn-info" onclick="repulseTask(\''+val+'\',\''+row.s_sourceinfo+'\',\''+row.s_status+'\',\''+row.i_givenum+'\')">打回</a>&nbsp;&nbsp;' +
-                            '<a class="btn btn-sm btn-default" onclick="closeTask(\'' + val + '\',\''+row.s_sourceinfo+'\',\'' + row.s_status + '\',\''+row.i_givenum+'\')">关闭</a>&nbsp;&nbsp;' +
+                            '<a class="btn btn-sm btn-info" onclick="repulseTask(\''+val+'\',\''+row.s_sourceinfo+'\',\''+row.s_status+'\')">打回</a>&nbsp;&nbsp;' +
+                            '<a class="btn btn-sm btn-default" onclick="closeTask(\'' + val + '\',\''+row.s_sourceinfo+'\',\'' + row.s_status + '\')">关闭</a>&nbsp;&nbsp;' +
                             '</div>';
                         return tmp
                     }
@@ -373,12 +373,12 @@
     }
 
     // 打回
-    function repulseTask(id, sourceinfo,status,givenum) {
+    function repulseTask(id, sourceinfo,status) {
         if (status === "已完成") {
             $.ajax({
                 url: "/front/project/task/repulse",
                 type: 'POST',
-                data: {"s_sourceinfo": sourceinfo, "taskid": id, "s_tatus": status,"i_givenum" :givenum},
+                data: {"s_sourceinfo": sourceinfo, "taskid": id, "s_tatus": status},
                 success: function (r) {
                     if (r.success) {
                         location.reload()
@@ -392,13 +392,13 @@
         }
     }
 
-    function closeTask(id, sourceinfo,status,givenum) {
+    function closeTask(id, sourceinfo,status) {
         if (status === "未开始") {
             showConfirm("确认要关闭当前任务吗?", function () {
                 $.ajax({
                     url: "/front/project/task/close",
                     type: 'POST',
-                    data: {"s_sourceinfo": sourceinfo, "s_status": status, "taskid": id,"i_givenum":givenum},
+                    data: {"s_sourceinfo": sourceinfo, "s_status": status, "taskid": id},
                     success: function (r) {
                         if (r.success) {
                             location.reload()

+ 1 - 1
src/web/templates/project/task_detail.html

@@ -397,7 +397,7 @@
         if (status === "未开始") {
             showConfirm("确认要关闭当前任务吗?", function () {
                 $.ajax({
-                    url: "",
+                    url: "/front/user/task/close",
                     type: 'POST',
                     data: {"s_sourceinfo": sourceinfo, "taskid": id, "s_status": status},
                     success: function (r) {