|
@@ -10,6 +10,7 @@ import (
|
|
|
"qfw/common/src/qfw/util"
|
|
|
qu "qfw/util"
|
|
|
"strconv"
|
|
|
+ "sync"
|
|
|
"time"
|
|
|
)
|
|
|
|
|
@@ -78,13 +79,9 @@ func mainT() {
|
|
|
|
|
|
//快速测试使用
|
|
|
func main() {
|
|
|
- // 602685a6f021652bdea41e37 602686f5f021652bdea41ea1
|
|
|
- //sid := "602685a6f021652bdea41e30"
|
|
|
- //eid := "602685a6f021652bdea41e37"
|
|
|
-
|
|
|
- sid := "602685a6f021652bdea41e39"
|
|
|
- eid := "602686f5f021652bdea41ea1"
|
|
|
|
|
|
+ sid := "100000000000000000000000"
|
|
|
+ eid := "900000000000000000000000"
|
|
|
//log.Println(sid, "---", eid)
|
|
|
mapinfo := map[string]interface{}{}
|
|
|
if sid == "" || eid == "" {
|
|
@@ -123,7 +120,8 @@ func startTask(data []byte, mapInfo map[string]interface{}) {
|
|
|
//编译不同的融合组,如何划分组
|
|
|
/***********************/
|
|
|
/***********************/
|
|
|
- /***********************/
|
|
|
+ /***y
|
|
|
+ ********************/
|
|
|
/***********************/
|
|
|
fusionDataGroupArr := make([][]string,0) //待融合组
|
|
|
addOrUpdateArr := make([]bool,0) //新增-bool-记录-组新增,组更新
|
|
@@ -203,47 +201,70 @@ func startTask(data []byte, mapInfo map[string]interface{}) {
|
|
|
log.Println("开始处理新增分组... ...")
|
|
|
start := int(time.Now().Unix())
|
|
|
//进行分组融合
|
|
|
+ pool := make(chan bool, 1)
|
|
|
+ wg := &sync.WaitGroup{}
|
|
|
+
|
|
|
for i:=0;i<len(fusionDataGroupArr);i++ {
|
|
|
fusionArr := fusionDataGroupArr[i]
|
|
|
//构建数据
|
|
|
- log.Println("构建第",i+1,"组数据...",fusionArr)
|
|
|
- weight :=NewWeightData(fusionArr)
|
|
|
- ////整理数据-筛选排名,模板
|
|
|
- weight.analyzeBuildStandardData()
|
|
|
- if len(fusionArr)<=1 {
|
|
|
- log.Println("单组生成... ...")
|
|
|
- saveFusionData,saveRecordData := weight.dealWithAddFusionStruct()
|
|
|
- saveid:=mgo.Save(fusion_coll_name,saveFusionData)
|
|
|
- saveRecordData["_id"] = saveid
|
|
|
- log.Println(saveRecordData["_id"])
|
|
|
- mgo.Save(record_coll_name,saveRecordData)
|
|
|
- }else {
|
|
|
- if addOrUpdateArr[i] {
|
|
|
- log.Println("多组更新... ...")
|
|
|
- tmpdata:=infoFusionArr[i]
|
|
|
- updateFusionData,updateRecordData := weight.dealWithMultipleUpdateFusionStruct(tmpdata)
|
|
|
-
|
|
|
- UpdateFusion.updatePool <- []map[string]interface{}{
|
|
|
- map[string]interface{}{
|
|
|
- "_id": tmpdata["_id"],
|
|
|
- },
|
|
|
- updateFusionData,
|
|
|
- }
|
|
|
- UpdateRecord.updatePool <- []map[string]interface{}{
|
|
|
- map[string]interface{}{
|
|
|
- "_id": tmpdata["_id"],
|
|
|
- },
|
|
|
- updateRecordData,
|
|
|
- }
|
|
|
- }else {
|
|
|
- log.Println("多组生成... ...")
|
|
|
- saveFusionData,saveRecordData := weight.dealWithMultipleAddFusionStruct()
|
|
|
+ log.Println("构建第",i+1,"组数据...","数量:",len(fusionArr),fusionArr)
|
|
|
+ //多线程 - 处理数据
|
|
|
+
|
|
|
+ pool <- true
|
|
|
+ wg.Add(1)
|
|
|
+ go func(fusionArr []string,i int) {
|
|
|
+ defer func() {
|
|
|
+ <-pool
|
|
|
+ wg.Done()
|
|
|
+ }()
|
|
|
+
|
|
|
+
|
|
|
+ weight :=NewWeightData(fusionArr)
|
|
|
+ ////整理数据-筛选排名,模板
|
|
|
+ weight.analyzeBuildStandardData()
|
|
|
+
|
|
|
+ if len(fusionArr)<=1 {
|
|
|
+ //log.Println("单组生成... ...")
|
|
|
+ saveFusionData,saveRecordData := weight.dealWithAddFusionStruct()
|
|
|
saveid:=mgo.Save(fusion_coll_name,saveFusionData)
|
|
|
saveRecordData["_id"] = saveid
|
|
|
mgo.Save(record_coll_name,saveRecordData)
|
|
|
+ }else {
|
|
|
+ if addOrUpdateArr[i] {
|
|
|
+ //log.Println("多组更新... ...")
|
|
|
+ tmpdata:=infoFusionArr[i]
|
|
|
+ updateFusionData,updateRecordData := weight.dealWithMultipleUpdateFusionStruct(tmpdata)
|
|
|
+
|
|
|
+ UpdateFusion.updatePool <- []map[string]interface{}{
|
|
|
+ map[string]interface{}{
|
|
|
+ "_id": tmpdata["_id"],
|
|
|
+ },
|
|
|
+ updateFusionData,
|
|
|
+ }
|
|
|
+ UpdateRecord.updatePool <- []map[string]interface{}{
|
|
|
+ map[string]interface{}{
|
|
|
+ "_id": tmpdata["_id"],
|
|
|
+ },
|
|
|
+ updateRecordData,
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ //log.Println("多组生成... ...")
|
|
|
+ saveFusionData,saveRecordData := weight.dealWithMultipleAddFusionStruct()
|
|
|
+ saveid:=mgo.Save(fusion_coll_name,saveFusionData)
|
|
|
+ saveRecordData["_id"] = saveid
|
|
|
+ mgo.Save(record_coll_name,saveRecordData)
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
+
|
|
|
+
|
|
|
+ }(fusionArr,i)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
+
|
|
|
+ wg.Wait()
|
|
|
+
|
|
|
log.Println("新增融合over :",len(fusionDataGroupArr),"用时:",int(time.Now().Unix())-start,"秒")
|
|
|
|
|
|
time.Sleep(30 * time.Second)
|