maxiaoshan před 3 roky
rodič
revize
d57e8f6cae
2 změnil soubory, kde provedl 21 přidání a 15 odebrání
  1. 9 4
      src/front/project.go
  2. 12 11
      src/front/user.go

+ 9 - 4
src/front/project.go

@@ -6,11 +6,11 @@ import (
 	"github.com/tealeg/xlsx"
 	"go.mongodb.org/mongo-driver/bson/primitive"
 	"io/ioutil"
-	"math"
 	"mime/multipart"
 	"mongodb"
 	qu "qfw/util"
 	"sort"
+	"strconv"
 	"strings"
 	"sync"
 	"sync/atomic"
@@ -242,15 +242,20 @@ func (f *Front) ProjectTaskList() {
 				map[string]interface{}{"s_groupname": map[string]interface{}{"$regex": search}},
 			}
 		}
+		qu.Debug("Query:", query)
 		list, _ := util.Mgo.Find(util.TASKCOLLNAME, query, nil, nil, false, start, limit)
 		count := util.Mgo.Count(util.TASKCOLLNAME, query)
 		for _, l := range *list {
 			if status := qu.ObjToString(l["s_status"]); status == "进行中" { //更新任务进度
-				groupId := qu.ObjToString(l["s_groupid"])
+				//groupId := qu.ObjToString(l["s_groupid"])
+				groupTaskId := mongodb.BsonIdToSId(l["_id"])
 				giveNum := qu.IntAll(l["i_givenum"])
 				sourceinfo := qu.ObjToString(l["s_sourceinfo"])
-				tagNum := util.Mgo.Count(sourceinfo, map[string]interface{}{"b_isgivegroup": true, "s_groupid": groupId, "b_istag": true})
-				progress := fmt.Sprint(math.Ceil(float64(tagNum)/float64(giveNum))*100) + "%"
+				//tagNum := util.Mgo.Count(sourceinfo, map[string]interface{}{"b_isgivegroup": true, "s_grouptaskid": groupTaskId, "b_istag": true})
+				tagNum := util.Mgo.Count(sourceinfo, map[string]interface{}{"s_grouptaskid": groupTaskId, "b_istag": true})
+				progressFloat := float64(tagNum) / float64(giveNum)
+				value, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", progressFloat), 64)
+				progress := fmt.Sprint(value*100) + "%"
 				l["s_progress"] = progress
 				//同步数据库
 				util.Mgo.UpdateById(util.TASKCOLLNAME, l["_id"], map[string]interface{}{"$set": map[string]interface{}{"s_progress": progress}})

+ 12 - 11
src/front/user.go

@@ -7,7 +7,6 @@ import (
 	"github.com/gorilla/sessions"
 	"go.mongodb.org/mongo-driver/bson"
 	"go.mongodb.org/mongo-driver/bson/primitive"
-	"math"
 	mgo "mongodb"
 	qu "qfw/util"
 	"strconv"
@@ -474,7 +473,9 @@ func (f *Front) UserTaskList() {
 				giveNum := qu.IntAll(l["i_givenum"])
 				sourceinfo := qu.ObjToString(l["s_sourceinfo"])
 				tagNum := Mgo.Count(sourceinfo, map[string]interface{}{"s_userid": personid, "b_istag": true})
-				progress := fmt.Sprint(math.Ceil(float64(tagNum)/float64(giveNum))*100) + "%"
+				progressFloat := float64(tagNum) / float64(giveNum)
+				value, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", progressFloat), 64)
+				progress := fmt.Sprint(value*100) + "%"
 				l["s_progress"] = progress
 				//同步数据库
 				Mgo.UpdateById(TASKCOLLNAME, l["_id"], map[string]interface{}{"$set": map[string]interface{}{"s_progress": progress}})
@@ -506,9 +507,10 @@ func (f *Front) UserTaskRetrieve() {
 	defer qu.Catch()
 	user := f.GetSession("user").(map[string]interface{})
 	username := qu.ObjToString(user["s_login"])
-	userTaskId := f.GetString("taskid")               //用户任务id
-	sourceTaskInfo := f.GetString("s_sourcetaskinfo") //临时表
-	msg, count, success := RetrieveTaskByUser(sourceTaskInfo, username, userTaskId)
+	userTaskId := f.GetString("taskid") //用户任务id
+	qu.Debug("User Task Id:", userTaskId)
+	sourceInfo := f.GetString("s_sourceinfo") //数据源表
+	msg, count, success := RetrieveTaskByUser(sourceInfo, username, userTaskId)
 	//userTask, _ := Mgo.FindById(TASKCOLLNAME, userTaskId, nil)
 	f.ServeJson(map[string]interface{}{"success": success, "count": count, "msg": msg})
 }
@@ -574,28 +576,27 @@ func UpdateSourceInfo(sourceinfo, groupTaskId string, userTaskIdInfo map[string]
 }
 
 // RetrieveTaskByUser 用户收回任务
-func RetrieveTaskByUser(sourceTaskInfo, username string, userTaskIds ...string) (allMsg string, allCount int, allSuccess bool) {
+func RetrieveTaskByUser(sourceInfo, username string, userTaskIds ...string) (allMsg string, allCount int, allSuccess bool) {
 	defer qu.Catch()
 	allSuccess = true
 	for _, taskId := range userTaskIds {
 		query := map[string]interface{}{
 			"s_usertaskid": taskId,
-			"b_isgiveuser": true,
-			"b_iscomplete": false,
+			"b_istag":      false,
 		}
-		count := Mgo.Count(sourceTaskInfo, query)
+		count := Mgo.Count(sourceInfo, query)
 		success := false
 		qu.Debug("Find Task Id:", taskId, " Retrieve Count:", count)
 		if count > 0 {
 			set := map[string]interface{}{
-				"b_isgiveuser": false,
 				"i_updatetime": time.Now().Unix(),
 			}
 			unset := map[string]interface{}{
 				"s_usertaskid": "",
 				"s_userid":     "",
+				"b_isgiveuser": "",
 			}
-			success = Mgo.Update(sourceTaskInfo, query, map[string]interface{}{"$set": set, "$unset": unset}, false, false)
+			success = Mgo.Update(sourceInfo, query, map[string]interface{}{"$set": set, "$unset": unset}, false, false)
 			qu.Debug("User Task", taskId, "Retrieve Data:", success)
 			if success {
 				allCount += count