Parcourir la source

wip:企业导出调整

fuwencai il y a 7 mois
Parent
commit
df8cfb51a2
1 fichiers modifiés avec 87 ajouts et 0 suppressions
  1. 87 0
      common/src/qfw/util/dataexport/entdataexport.go

+ 87 - 0
common/src/qfw/util/dataexport/entdataexport.go

@@ -139,7 +139,94 @@ func GetEntDataExportCount(sim, bid mg.MongodbSim, bidMgoDBName, elasticAddress,
 	data = res
 	return
 }
+func GetEntDataExportCountIdArr(sim, bid mg.MongodbSim, bidMgoDBName, elasticAddress, _id string, entId, entUserId int, url string, maxCount int) (count, newCount int, err error) {
+	log.Println(fmt.Sprintf("GetEntDataExportCountIdArr entId:%v,entUserId:%v", entId, entUserId))
+	start := time.Now()
+	defer func() {
+		util.Catch()
+		log.Printf("GetEntDataExportCountIdArr entId:%v,entUserId:%v 总耗时:%v\n", entId, entUserId, time.Since(start))
+	}()
+	var (
+		searchsWaitGroup = &sync.WaitGroup{}
+	)
+	count = GetDataExportSearchCountByScdId(sim, bid, bidMgoDBName, elasticAddress, _id)
+	log.Printf("耗时: GetEntDataExportCountIdArr-GetDataExportSearchCountByScdId entId:%v,entUserId:%v,Since:%v \n", entId, entUserId, time.Since(start))
+	if count > maxCount || count == -1 {
+		count = maxCount
+	}
+	log.Println("GetEntDataExportCountIdArr-count", entId, entUserId, count)
+	//数据导出数据查询
+	ids, err := GetDataExportIdArrByScdId(sim, elasticAddress, _id, count)
+	log.Printf("耗时: GetEntDataExportCountIdArr-GetDataExportSearchResultByScdId entId:%v,entUserId:%v,Since:%v \n", entId, entUserId, time.Since(start))
+	if err != nil {
+		log.Println("GetEntDataExportCountIdArr 企业数据导出错误 ", entId, entUserId, err)
+		return 0, 0, fmt.Errorf("企业数据导出错误")
+	}
+	//  20210716 由原来的redis判重改为调用判重中台接口进行判重
+	m := map[string]bool{}
+	infoIdList := []string{}
+	insertFlag := "false"
+	postStart := time.Now()
+	for i := 0; i < len(ids); i++ {
+		id := ids[i]
+		if m[id] {
+			continue
+		}
+		m[id] = true
+		//  20210716  redis判重调整为调用判重中台接口  每一千个调用一次
+		infoIdList = append(infoIdList, id)
+		if len(infoIdList) > 1000 {
+			//	 调接口
+			rs, err5 := Post(url, map[string]string{
+				"personId": "0", // 没有使用这个参数
+				"infoId":   strings.Join(infoIdList, ","),
+				"entId":    fmt.Sprintf("%d", entId),
+				"isInsert": insertFlag,
+				"isEnt":    "true",
+			})
+			log.Println("GetEntDataExportCountIdArr 响应结果:", entId, entUserId, rs)
+			if err5 != nil || util.IntAll(rs["code"]) != 0 {
+				log.Println("GetEntDataExportCountIdArr 企业订阅数据导出接口判重失败", entId, entUserId, err5, "rs:", rs, " rs[code]:", rs["code"], " ", util.IntAll(rs["code"]), "code是否为0", util.IntAll(rs["code"]) != 0)
+			} else {
+				log.Println("GetEntDataExportCountIdArr 企业订阅数据导出")
+				// 置空
+				infoIdList = []string{}
+				// 本次数据累计
+				returnData := rs["data"].(map[string]interface{})
+				log.Println(newCount, "GetEntDataExportCountIdArr 加之前")
+				newCount += util.IntAll(returnData["newCount"])
+				//newCount += int(returnData["newCount"].(float64))
+				log.Println(newCount, "GetEntDataExportCountIdArr 加之后")
+			}
 
+		}
+	}
+	if len(infoIdList) > 0 {
+		rs, err5 := Post(url, map[string]string{
+			"personId": "0", // 没有使用这个参数
+			"infoId":   strings.Join(infoIdList, ","),
+			"entId":    fmt.Sprintf("%d", entId),
+			"isInsert": insertFlag,
+			"isEnt":    "true",
+		})
+		log.Println(rs)
+		if err5 != nil || util.IntAll(rs["code"]) != 0 {
+			log.Println("GetEntDataExportCountIdArr 企业订阅数据导出接口判重失败", entId, entUserId, err5, "rs:", rs, " rs[code]:", rs["code"], " ", util.IntAll(rs["code"]), "code是否为0", util.IntAll(rs["code"]) != 0)
+		} else {
+			log.Println("GetEntDataExportCountIdArr 企业订阅数据导出")
+			// 置空
+			infoIdList = []string{}
+			// 本次数据累计
+			returnData := rs["data"].(map[string]interface{})
+			log.Println(newCount, "GetEntDataExportCountIdArr 加之前")
+			newCount += util.IntAll(returnData["newCount"])
+			log.Println(newCount, "GetEntDataExportCountIdArr 加之后")
+		}
+	}
+	searchsWaitGroup.Wait()
+	log.Printf("GetEntDataExportCountIdArr 企业数据导出--数据遍历完成:entId:%v,entUserId:%v,newCount:%v,Since:%v \n", entId, entUserId, newCount, time.Since(postStart))
+	return
+}
 func FormatExportDatas(Mgo_Ent mongodb.MongodbSim, data *[]map[string]interface{}, webdomain string, dataType string, entId int) *[]map[string]interface{} {
 	//格式化输出
 	var (