taskinfo.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package info
  2. import (
  3. "config"
  4. "fmt"
  5. "gopkg.in/mgo.v2/bson"
  6. "qfw/util"
  7. "qfw/util/mongodb"
  8. "time"
  9. )
  10. func QueryInfo() map[string]interface{} {
  11. now := time.Now()
  12. data := make(map[string]interface{})
  13. taskArr := mongodb.Find("ocr_task", bson.M{}, `{_id:1}`, nil, false, -1, -1)
  14. taskNum := len(*taskArr)
  15. if taskNum == 0 {
  16. return data
  17. }
  18. data["taskNum"] = taskNum
  19. sumNum := 0
  20. nowSumNum := 0
  21. var stime time.Time
  22. resultInfos := make([]map[string]interface{}, 0)
  23. for i, v := range *taskArr {
  24. sid := bson.ObjectIdHex(util.ObjToString(v["start"]))
  25. eid := bson.ObjectIdHex(util.ObjToString(v[util.ObjToString(config.EidField)]))
  26. tmpSumNum := mongodb.Count("bidding", bson.M{"_id": bson.M{
  27. "$gte": sid,
  28. "$lte": eid,
  29. }})
  30. v["sub"] = tmpSumNum
  31. v["i_time"] = time.Unix(util.Int64All(v["import_time"]),0).String()
  32. resultInfos = append(resultInfos, v)
  33. sumNum += tmpSumNum
  34. if i == 0 {
  35. nowSumNum = sumNum
  36. tmptime := util.Int64All(v["import_time"])
  37. stime = time.Unix(tmptime,0)
  38. }
  39. }
  40. data["sumNum"] = sumNum
  41. data["nowSumNum"] = nowSumNum
  42. tmpsid := bson.ObjectIdHex(util.ObjToString((*taskArr)[0]["start"]))
  43. over := (*taskArr)[0][util.ObjToString(config.SidField)]
  44. overNum := mongodb.Count("bidding", bson.M{"_id": bson.M{
  45. "$gte": tmpsid,
  46. "$lt": bson.ObjectIdHex(util.ObjToString(over)),
  47. }})
  48. data["overNum"] = overNum
  49. undoneNum := sumNum - overNum
  50. data["undoneNum"] = undoneNum
  51. nowUnDoneNum := nowSumNum - overNum
  52. data["nowUnDoneNum"] = nowUnDoneNum
  53. since := time.Since(stime)
  54. data["executionTime"] = since.String()
  55. //log.Println(now.Sub(stime).Seconds())
  56. mtmm := float64(overNum) / now.Sub(stime).Seconds() / float64(3+len(config.CID))
  57. //log.Println(overNum ,now.Sub(stime).Seconds(),3+len(config.CID),mtmm)
  58. tmpf := float64(nowSumNum) / mtmm / float64(3+len(config.CID))
  59. //log.Println(nowSumNum,mtmm,tmpf)
  60. data["estimatedFinishTime"] = now.Add(time.Second*time.Duration(tmpf)).String()
  61. data["esc"] = fmt.Sprint(3 ,"+", len(config.CID))
  62. data["resultInfos"] = resultInfos
  63. //log.Println(resultInfos)
  64. return data
  65. }