فهرست منبع

Merge branch 'dev2.0' of http://192.168.3.207:8080/data_processing/data_validation into dev2.0

* 'dev2.0' of http://192.168.3.207:8080/data_processing/data_validation:
  xg

# Conflicts:
#	src/web/templates/project/project_clear.html
#	src/web/templates/project/task_detail.html
Jianghan 3 سال پیش
والد
کامیت
2076d0fb9d
5فایلهای تغییر یافته به همراه131 افزوده شده و 72 حذف شده
  1. 1 1
      src/front/front.go
  2. 115 51
      src/front/project.go
  3. 4 9
      src/front/user.go
  4. 9 9
      src/web/templates/project/project_clear.html
  5. 2 2
      src/web/templates/project/task_detail.html

+ 1 - 1
src/front/front.go

@@ -68,7 +68,7 @@ type Front struct {
 	userTaskSave     xweb.Mapper `xweb:"/front/user/task/save"`     //用户任务分发
 	userTaskList     xweb.Mapper `xweb:"/front/user/task/list"`     //用户任务列表
 	userTaskRetrieve xweb.Mapper `xweb:"/front/user/task/retrieve"` //用户任务收回
-	userTaskClose    xweb.Mapper `xweb:"/front/user/task/close"`    //用户任务收回
+	userTaskClose    xweb.Mapper `xweb:"/front/user/task/close"`    //用户任务关闭
 
 	groupTaskListByAdmin xweb.Mapper `xweb:"/front/group/admin/task/list"` //用户组任务列表(系统管理员权限)
 	groupTaskListByGroup xweb.Mapper `xweb:"/front/group/task/list"`       //用户组任务列表(用户组权限)

+ 115 - 51
src/front/project.go

@@ -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 删除标注记录

+ 4 - 9
src/front/user.go

@@ -549,7 +549,7 @@ func (f *Front) UserTaskRetrieve() {
 	sourceInfo := f.GetString("s_sourceinfo") //数据源表
 	status := f.GetString("s_status")
 	userTaskIdStatus := map[string]string{userTaskId: status}
-	msg, count, success := RetrieveTaskByUser(sourceInfo, username, "已完成", "user", userTaskIdStatus)
+	msg, count, success := RetrieveTaskByUser(sourceInfo, username, "已完成", userTaskIdStatus)
 	//userTask, _ := Mgo.FindById(TASKCOLLNAME, userTaskId, nil)
 	f.ServeJson(map[string]interface{}{"success": success, "count": count, "msg": msg})
 }
@@ -564,7 +564,7 @@ func (f *Front) UserTaskClose() {
 	sourceInfo := f.GetString("s_sourceinfo") //数据源表
 	status := f.GetString("s_status")
 	userTaskIdStatus := map[string]string{userTaskId: status}
-	msg, count, success := RetrieveTaskByUser(sourceInfo, username, "已关闭", "user", userTaskIdStatus)
+	msg, count, success := RetrieveTaskByUser(sourceInfo, username, "已关闭", userTaskIdStatus)
 	f.ServeJson(map[string]interface{}{"success": success, "count": count, "msg": msg})
 }
 
@@ -628,8 +628,8 @@ func UpdateSourceInfo(sourceinfo, groupTaskId string, userTaskIdInfo map[string]
 	}
 }
 
-// RetrieveTaskByUser 用户收回任务
-func RetrieveTaskByUser(sourceInfo, username, stype, updateByWhom string, userTaskIdStatus map[string]string) (allMsg string, allCount int, allSuccess bool) {
+// RetrieveTaskByUser 用户收回任务,更新数据源
+func RetrieveTaskByUser(sourceInfo, username, stype string, userTaskIdStatus map[string]string) (allMsg string, allCount int, allSuccess bool) {
 	defer qu.Catch()
 	allSuccess = true
 	for taskId, status := range userTaskIdStatus {
@@ -660,11 +660,6 @@ func RetrieveTaskByUser(sourceInfo, username, stype, updateByWhom string, userTa
 				"s_usertaskid": "",
 				"s_userid":     "",
 			}
-			if updateByWhom == "group" { //通过用户组收回,更新用户组相关信息
-				set["b_isgivegroup"] = false
-				unset["s_groupid"] = ""
-				unset["s_grouptaskid"] = ""
-			}
 			success := Mgo.Update(sourceInfo, query, map[string]interface{}{"$set": set, "$unset": unset}, false, false)
 			qu.Debug("Update SourceInfo:", success)
 			if success {

+ 9 - 9
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.s_groupid+'\')">收回</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-info">质检</a>&nbsp;&nbsp;' +
-                            '<a class="btn btn-sm btn-info" onclick="repulseTask(\''+val+'\',\''+row.s_sourceinfo+'\',\''+row.s_status+'\',\''+row.s_groupid +'\')">打回</a>&nbsp;&nbsp;' +
-                            '<a class="btn btn-sm btn-default" onclick="closeTask(\'' + val + '\',\'' + row.s_status + '\')">关闭</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
                     }
@@ -353,12 +353,12 @@
     }
 
     // 收回
-    function retrieveTask(id, sourceinfo, status, groupid) {
+    function retrieveTask(id, sourceinfo, status,givenum) {
         if (status === "未开始" || status === "进行中") {
             $.ajax({
                 url: "/front/project/task/retrieve",
                 type: 'POST',
-                data: {"s_groupid": groupid, "s_sourceinfo": sourceinfo, "taskid": id, "s_status": status},
+                data: { "s_sourceinfo": sourceinfo, "taskid": id, "s_tatus": status,"i_givenum" :givenum},
                 success: function (r) {
                     if (r.success) {
                         location.reload()
@@ -373,12 +373,12 @@
     }
 
     // 打回
-    function repulseTask(id, sourceinfo, status, groupid) {
+    function repulseTask(id, sourceinfo,status) {
         if (status === "已完成") {
             $.ajax({
                 url: "/front/project/task/repulse",
                 type: 'POST',
-                data: {"s_groupid": groupid, "s_sourceinfo": sourceinfo, "taskid": id},
+                data: {"s_sourceinfo": sourceinfo, "taskid": id},
                 success: function (r) {
                     if (r.success) {
                         location.reload()
@@ -392,13 +392,13 @@
         }
     }
 
-    function closeTask(val, status) {
+    function closeTask(val, sourceinfo, status) {
         if (status === "未开始") {
             showConfirm("确认要关闭当前任务吗?", function () {
                 $.ajax({
                     url: "/front/project/task/close",
                     type: 'POST',
-                    data: {"s_status": status, "id": val},
+                    data: {"s_sourceinfo": sourceinfo, "s_status": status, "taskid": id},
                     success: function (r) {
                         if (r.success) {
                             location.reload()

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

@@ -393,7 +393,7 @@
             showTip("操作不允许")
         }
     }
-    function closeTask(val, status, sourceinfo) {
+    function closeTask(id, status, sourceinfo) {
         if (status === "未开始") {
             showConfirm("确认要关闭当前任务吗?", function () {
                 $.ajax({
@@ -402,7 +402,7 @@
                     data: {"s_sourceinfo": sourceinfo, "taskid": id, "s_status": status},
                     success: function (r) {
                         if (r.success) {
-                            ttable.api().ajax.reload()
+                            location.reload()
                         } else {
                             showTip(r.msg);
                         }