|
@@ -1,16 +1,19 @@
|
|
-package highMark
|
|
|
|
|
|
+package main
|
|
|
|
|
|
import (
|
|
import (
|
|
"fmt"
|
|
"fmt"
|
|
|
|
+ "github.com/cron"
|
|
"mongodb"
|
|
"mongodb"
|
|
"os"
|
|
"os"
|
|
"qfw/util"
|
|
"qfw/util"
|
|
|
|
+ "strings"
|
|
"time"
|
|
"time"
|
|
)
|
|
)
|
|
|
|
|
|
var (
|
|
var (
|
|
- Mgo, MgoH *mongodb.MongodbSim
|
|
|
|
|
|
+ Mgo, MgoH, MgoB *mongodb.MongodbSim
|
|
Sysconfig, bidddingConf, biddingHConf map[string]interface{}
|
|
Sysconfig, bidddingConf, biddingHConf map[string]interface{}
|
|
|
|
+ noFields string
|
|
)
|
|
)
|
|
|
|
|
|
func Init() {
|
|
func Init() {
|
|
@@ -41,23 +44,34 @@ func Init() {
|
|
|
|
|
|
MgoH.InitPool()
|
|
MgoH.InitPool()
|
|
|
|
|
|
|
|
+ //bidding
|
|
|
|
+ MgoB = &mongodb.MongodbSim{
|
|
|
|
+ MongodbAddr: biddingHConf["addr"].(string),
|
|
|
|
+ Size: util.IntAllDef(biddingHConf["size"], 5),
|
|
|
|
+ DbName: "qfw",
|
|
|
|
+ UserName: biddingHConf["username"].(string),
|
|
|
|
+ Password: biddingHConf["password"].(string),
|
|
|
|
+ //Direct: true,
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ MgoB.InitPool()
|
|
|
|
+ noFields = util.ObjToString(Sysconfig["no_fields"])
|
|
}
|
|
}
|
|
|
|
|
|
-//func main() {
|
|
|
|
-// Init()
|
|
|
|
-// c := cron.New()
|
|
|
|
-// err := c.AddFunc(Sysconfig["spec"].(string), Mark)
|
|
|
|
-// if err != nil {
|
|
|
|
-// util.Debug("err", err)
|
|
|
|
-// }
|
|
|
|
-//
|
|
|
|
-// c.Start()
|
|
|
|
-// defer c.Stop()
|
|
|
|
-//
|
|
|
|
-// select {}
|
|
|
|
-//
|
|
|
|
-// //highMark()
|
|
|
|
-//}
|
|
|
|
|
|
+func main() {
|
|
|
|
+ Init()
|
|
|
|
+ c := cron.New()
|
|
|
|
+ err := c.AddFunc(Sysconfig["spec"].(string), Mark)
|
|
|
|
+ if err != nil {
|
|
|
|
+ util.Debug("err", err)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ c.Start()
|
|
|
|
+ defer c.Stop()
|
|
|
|
+
|
|
|
|
+ select {}
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
|
|
func Mark() {
|
|
func Mark() {
|
|
go highMark()
|
|
go highMark()
|
|
@@ -86,7 +100,7 @@ func highMark() {
|
|
util.Debug("本次处理任务总数:", len(*tasks))
|
|
util.Debug("本次处理任务总数:", len(*tasks))
|
|
|
|
|
|
for _, task := range *tasks {
|
|
for _, task := range *tasks {
|
|
- util.Debug("开始处理任务数据:", task["s_groupname"], task["s_entname"])
|
|
|
|
|
|
+ util.Debug("开始处理任务数据:", task["s_groupname"], task["s_entname"], task["s_sourceinfo"])
|
|
taskID := mongodb.BsonIdToSId(task["_id"])
|
|
taskID := mongodb.BsonIdToSId(task["_id"])
|
|
//任务对应的数据表
|
|
//任务对应的数据表
|
|
s_sourceinfo := util.ObjToString(task["s_sourceinfo"])
|
|
s_sourceinfo := util.ObjToString(task["s_sourceinfo"])
|
|
@@ -98,6 +112,7 @@ func highMark() {
|
|
|
|
|
|
query := sess.DB(bidddingConf["db"].(string)).C(s_sourceinfo).Find(&q).Select(nil).Iter()
|
|
query := sess.DB(bidddingConf["db"].(string)).C(s_sourceinfo).Find(&q).Select(nil).Iter()
|
|
count := 0
|
|
count := 0
|
|
|
|
+ taskFinish := false
|
|
for tmp := make(map[string]interface{}); query.Next(tmp); count++ {
|
|
for tmp := make(map[string]interface{}); query.Next(tmp); count++ {
|
|
infoID := mongodb.BsonIdToSId(tmp["_id"])
|
|
infoID := mongodb.BsonIdToSId(tmp["_id"])
|
|
if count%1000 == 0 {
|
|
if count%1000 == 0 {
|
|
@@ -115,20 +130,40 @@ func highMark() {
|
|
res := calculateFlag(taginfo, *fields) //返回标注的十进制数字
|
|
res := calculateFlag(taginfo, *fields) //返回标注的十进制数字
|
|
|
|
|
|
if data, ok := markedData["v_baseinfo"].(map[string]interface{}); ok {
|
|
if data, ok := markedData["v_baseinfo"].(map[string]interface{}); ok {
|
|
- data["_id"] = tmp["_id"]
|
|
|
|
|
|
+ delete(data, "_id")
|
|
|
|
+ where := make(map[string]interface{})
|
|
|
|
+ if _, ok := data["id"]; ok {
|
|
|
|
+ bidd, _ := MgoB.FindById("bidding", util.ObjToString(data["id"]), nil)
|
|
|
|
+ if len(*bidd) > 0 {
|
|
|
|
+ where["_id"] = mongodb.StringTOBsonId(util.ObjToString(data["id"]))
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ bidd, _ := MgoB.FindById("bidding", mongodb.BsonIdToSId(markedData["_id"]), nil)
|
|
|
|
+ if len(*bidd) > 0 {
|
|
|
|
+ where["_id"] = mongodb.StringTOBsonId(util.ObjToString(data["id"]))
|
|
|
|
+ } else {
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
|
|
+ }
|
|
data["field_bitvalue"] = res
|
|
data["field_bitvalue"] = res
|
|
data["i_comeintime"] = time.Now().Unix()
|
|
data["i_comeintime"] = time.Now().Unix()
|
|
data["i_updatetime"] = time.Now().Unix()
|
|
data["i_updatetime"] = time.Now().Unix()
|
|
|
|
+ //删除多余无用字段
|
|
|
|
+ noField := strings.Split(noFields, ",")
|
|
|
|
+ if len(noField) > 0 {
|
|
|
|
+ for _, field := range noField {
|
|
|
|
+ delete(data, field)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
update := make(map[string]interface{})
|
|
update := make(map[string]interface{})
|
|
update["$set"] = data
|
|
update["$set"] = data
|
|
- where := map[string]interface{}{
|
|
|
|
- "_id": tmp["_id"],
|
|
|
|
- }
|
|
|
|
|
|
|
|
if !MgoH.Update(util.ObjToString(biddingHConf["coll"]), where, update, true, false) {
|
|
if !MgoH.Update(util.ObjToString(biddingHConf["coll"]), where, update, true, false) {
|
|
- util.Debug("任务 ", task["s_groupname"], infoID, "入库错误,请检查")
|
|
|
|
|
|
+ taskFinish = false
|
|
|
|
+ util.Debug("任务 ", task["s_groupname"], task["s_sourceinfo"], infoID, "入库错误,请检查")
|
|
} else {
|
|
} else {
|
|
|
|
+ taskFinish = true
|
|
//1、更新数据源信息
|
|
//1、更新数据源信息
|
|
setResult := map[string]interface{}{ //更新字段集
|
|
setResult := map[string]interface{}{ //更新字段集
|
|
"is_return_highdata": 1,
|
|
"is_return_highdata": 1,
|
|
@@ -144,7 +179,7 @@ func highMark() {
|
|
}
|
|
}
|
|
util.Debug("任务: ", task["s_entname"], "数据表: ", s_sourceinfo, " 处理总数为: ", count, "分配的数据总量为: ", task["i_givenum"])
|
|
util.Debug("任务: ", task["s_entname"], "数据表: ", s_sourceinfo, " 处理总数为: ", count, "分配的数据总量为: ", task["i_givenum"])
|
|
|
|
|
|
- if count > 0 {
|
|
|
|
|
|
+ if count > 0 && taskFinish {
|
|
//当前任务结束
|
|
//当前任务结束
|
|
//3.更新任务表,
|
|
//3.更新任务表,
|
|
taskSetResult := map[string]interface{}{ //更新字段集
|
|
taskSetResult := map[string]interface{}{ //更新字段集
|
|
@@ -174,7 +209,7 @@ func highMark() {
|
|
util.Debug("所有任务处理完毕")
|
|
util.Debug("所有任务处理完毕")
|
|
}
|
|
}
|
|
|
|
|
|
-//calculateFlag 根据数据,返回被标注的字段数字
|
|
|
|
|
|
+// calculateFlag 根据数据,返回被标注的字段数字
|
|
func calculateFlag(marked map[string]interface{}, data []map[string]interface{}) uint64 {
|
|
func calculateFlag(marked map[string]interface{}, data []map[string]interface{}) uint64 {
|
|
var result uint64
|
|
var result uint64
|
|
for _, item := range data {
|
|
for _, item := range data {
|