|
@@ -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 (
|