Browse Source

fix:数据导出优化

duxin 7 months ago
parent
commit
ffa9c97de7
1 changed files with 47 additions and 46 deletions
  1. 47 46
      common/src/qfw/util/dataexport/dataexport.go

+ 47 - 46
common/src/qfw/util/dataexport/dataexport.go

@@ -105,12 +105,12 @@ const (
 )
 
 var topType = map[string]string{
-	"招标预告":   "预告",
-	"招标公告":   "招标",
-	"招标结果":   "结果",
+	"招标预告":     "预告",
+	"招标公告":     "招标",
+	"招标结果":     "结果",
 	"招标信用信息": "其它",
-	"拟建项目":   "拟建",
-	"采购意向":   "采购意向",
+	"拟建项目":     "拟建",
+	"采购意向":     "采购意向",
 }
 
 // 包含正文或 附件 不包含标题
@@ -1102,8 +1102,8 @@ func FormatExportData(entmg mg.MongodbSim, data *[]map[string]interface{}, webdo
 	qyxyEsMap := make(map[string]*map[string]interface{})
 	projectsetMap := make(map[string]bool)
 	projectsetEsMap := make(map[string]*map[string]interface{})
-	for _, m := range *data {
-		if dataType == "2" {
+	if dataType == "2" {
+		for _, m := range *data {
 			entidlist, ok := m["entidlist"].([]interface{})
 			if ok && len(entidlist) > 0 {
 				//var winnerMaps []map[string]interface{}
@@ -1115,58 +1115,59 @@ func FormatExportData(entmg mg.MongodbSim, data *[]map[string]interface{}, webdo
 					qyxyMap[entId] = true
 				}
 			}
-		}
-		if m["toptype"] == "结果" && dataType == "2" && !(m["agency"] != nil && m["budget"] != nil && m["buyerperson"] != nil && m["buyertel"] != nil) {
-			projectsetMap[qutil.InterfaceToStr(m["_id"])] = true
-		}
-	}
 
-	if len(qyxyMap) > 0 { //查询企业
-		var (
-			qyxyArr []string
-			qCount  int
-		)
-		for s := range qyxyMap {
-			qCount++
-			qyxyArr = append(qyxyArr, fmt.Sprintf(`%s`, s))
-			if len(qyxyArr) == 100 || (qCount == len(qyxyMap) && len(qyxyArr) > 0) {
-				qyxyEsData := elastic.Get("qyxy", "qyxy", fmt.Sprintf(`{"query":{"bool":{"should":[{"terms":{"id":["%s"]}}]}},"size":%d,"_source":["company_name","company_email","company_phone","legal_person","id"]}`, strings.Join(qyxyArr, `","`), len(qyxyArr)))
-				if qyxyEsData != nil && len(*qyxyEsData) > 0 {
-					for _, m := range *qyxyEsData {
-						qyxyEsMap[qutil.InterfaceToStr(m["id"])] = &m
+			if m["toptype"] == "结果" && !(m["agency"] != nil && m["budget"] != nil && m["buyerperson"] != nil && m["buyertel"] != nil) {
+				projectsetMap[qutil.InterfaceToStr(m["_id"])] = true
+			}
+		}
+		if len(qyxyMap) > 0 { //查询企业
+			var (
+				qyxyArr []string
+				qCount  int
+			)
+			for s := range qyxyMap {
+				qCount++
+				qyxyArr = append(qyxyArr, fmt.Sprintf(`%s`, s))
+				if len(qyxyArr) == 100 || (qCount == len(qyxyMap) && len(qyxyArr) > 0) {
+					qyxyEsData := elastic.Get("qyxy", "qyxy", fmt.Sprintf(`{"query":{"bool":{"should":[{"terms":{"id":["%s"]}}]}},"size":%d,"_source":["company_name","company_email","company_phone","legal_person","id"]}`, strings.Join(qyxyArr, `","`), len(qyxyArr)))
+					if qyxyEsData != nil && len(*qyxyEsData) > 0 {
+						for _, m := range *qyxyEsData {
+							qyxyEsMap[qutil.InterfaceToStr(m["id"])] = &m
+						}
 					}
+					qyxyArr = []string{}
 				}
-				qyxyArr = []string{}
 			}
 		}
-	}
-	if len(projectsetMap) > 0 { //查询项目
-		var (
-			projectsetArr []string
-			pCount        int
-		)
-		for s := range projectsetMap {
-			pCount++
-			projectsetArr = append(projectsetArr, fmt.Sprintf(`%s`, s))
-			if len(projectsetArr) == 100 || (pCount == len(projectsetMap) && len(projectsetArr) > 0) {
-				projectsetEsData := elastic.Get("projectset", "projectset", fmt.Sprintf(`{"query": {"bool": {"should": [{"terms": {"list.infoid": ["%s"]}}]}},"_source": ["list"],"size": %d}`, strings.Join(projectsetArr, `","`), len(projectsetArr)*3)) //查询双倍数量 避免缺失数据
-				if projectsetEsData != nil && len(*projectsetEsData) > 0 {
-					for _, m := range *projectsetEsData {
-						MsgList := m["list"]
-						if MsgList != nil {
-							list := qutil.ObjArrToMapArr(MsgList.([]interface{}))
-							for _, m2 := range list {
-								if projectsetMap[qutil.InterfaceToStr(m2["infoid"])] {
-									projectsetEsMap[qutil.InterfaceToStr(m2["infoid"])] = &m
+		if len(projectsetMap) > 0 { //查询项目
+			var (
+				projectsetArr []string
+				pCount        int
+			)
+			for s := range projectsetMap {
+				pCount++
+				projectsetArr = append(projectsetArr, fmt.Sprintf(`%s`, s))
+				if len(projectsetArr) == 100 || (pCount == len(projectsetMap) && len(projectsetArr) > 0) {
+					projectsetEsData := elastic.Get("projectset", "projectset", fmt.Sprintf(`{"query": {"bool": {"should": [{"terms": {"list.infoid": ["%s"]}}]}},"_source": ["list"],"size": %d}`, strings.Join(projectsetArr, `","`), len(projectsetArr)*3)) //查询双倍数量 避免缺失数据
+					if projectsetEsData != nil && len(*projectsetEsData) > 0 {
+						for _, m := range *projectsetEsData {
+							MsgList := m["list"]
+							if MsgList != nil {
+								list := qutil.ObjArrToMapArr(MsgList.([]interface{}))
+								for _, m2 := range list {
+									if projectsetMap[qutil.InterfaceToStr(m2["infoid"])] {
+										projectsetEsMap[qutil.InterfaceToStr(m2["infoid"])] = &m
+									}
 								}
 							}
 						}
 					}
+					projectsetArr = []string{}
 				}
-				projectsetArr = []string{}
 			}
 		}
 	}
+
 	var entCacheMap = map[string]map[string]interface{}{}
 	pool := make(chan bool, 5)
 	wait := &sync.WaitGroup{}