Selaa lähdekoodia

fix:数据导出优化

duxin 2 vuotta sitten
vanhempi
commit
9c04fc1625

+ 1 - 11
src/jfw/front/dataExport.go

@@ -544,17 +544,7 @@ func (d *DataExport) PreviewData(source, _id string) error {
 	//格式化字段
 	res_screen := dataexport.ScreenData(res, dataType, 20, kws)
 	list := dataexport.FormatExportData(public.Mgo_Ent, &res_screen, config.Sysconfig["webdomain"].(string), dataType, true)
-	//if len(kws) > 0 && kws[0].Keyword != "" {
-	//	var keys []string
-	//	//统计关键词
-	//	for _, vk := range kws {
-	//		keys = append(keys, strings.Replace(vk.Keyword, "+", ",", -1))
-	//	}
-	//	//二次匹配
-	//	for _, vs := range *list {
-	//		vs["keyword"] = dataexport.GetMatchKey(strings.Join(keys, ","), scd.SelectType, vs)
-	//	}
-	//}
+	dataexport.GetMatchKey(scd, list)
 
 	d.T["data"] = subUrl(list, dataType)
 	d.T["dataType"] = dataType

+ 56 - 43
src/jfw/modules/common/src/qfw/util/dataexport/common.go

@@ -7,7 +7,7 @@ import (
 	"strings"
 )
 
-//GetLastExportPhoneAndMail 数据导出联想上次导出手机号和邮箱查询
+// GetLastExportPhoneAndMail 数据导出联想上次导出手机号和邮箱查询
 func GetLastExportPhoneAndMail(mysqlSess *mysql.Mysql, userId, entUserId string) (phone, email string) {
 	var searchSql []string
 	var searchValue []interface{}
@@ -40,49 +40,62 @@ func GetLastExportPhoneAndMail(mysqlSess *mysql.Mysql, userId, entUserId string)
 
 // GetMatchKey key 关键词 逗号分隔 或的关系进行关联  types 匹配类型  data数据
 // title 标题,detail 正文,filetext 附件,purchasing 标的物,projectname.pname 项目命,mbuyer 采购单位,mwinner 中标单位,magency 代理机构
-func GetMatchKey(key, types string, data map[string]interface{}) string {
-	keyWord := []string{}
-	if strings.Contains(types, "title") {
-		title := qutil.ObjToString(data["title"])
-		keyWord = KeyWordToDatas(title, key, keyWord)
-	}
-	if strings.Contains(types, "detail") {
-		detail := qutil.ObjToString(data["detail"])
-		keyWord = KeyWordToDatas(detail, key, keyWord)
-	}
-	if strings.Contains(types, "purchasing") {
-		purchasing := qutil.ObjToString(data["purchasing"])
-		keyWord = KeyWordToDatas(purchasing, key, keyWord)
-	}
-	if strings.Contains(types, "filetext") {
-		filetext := qutil.ObjToString(data["filetext"])
-		keyWord = KeyWordToDatas(filetext, key, keyWord)
-	}
-	if strings.Contains(types, "projectname.pname") {
-		projectname := qutil.ObjToString(data["projectname"])
-		keyWord = KeyWordToDatas(projectname, key, keyWord)
-	}
-	if strings.Contains(types, "mbuyer") {
-		buyer := qutil.ObjToString(data["buyer"])
-		keyWord = KeyWordToDatas(buyer, key, keyWord)
-	}
-	if strings.Contains(types, "mwinner") {
-		winner := qutil.ObjToString(data["s_winner"])
-		keyWord = KeyWordToDatas(winner, key, keyWord)
-	}
-	if strings.Contains(types, "magency") {
-		winner := qutil.ObjToString(data["agency"])
-		keyWord = KeyWordToDatas(winner, key, keyWord)
-	}
-	keyMap := map[string]bool{}
-	keyArr := []string{}
-	for _, key := range keyWord {
-		keyMap[key] = true
-	}
-	for k, _ := range keyMap {
-		keyArr = append(keyArr, k)
+func GetMatchKey(scd *SieveCondition, list *[]map[string]interface{}) {
+	types := scd.SelectType
+	kws := scd.Keyword
+	if len(kws) > 0 && kws[0].Keyword != "" {
+		var keys []string
+		//统计关键词
+		for _, vk := range kws {
+			keys = append(keys, strings.Replace(vk.Keyword, "+", ",", -1))
+		}
+		key := strings.Join(keys, ",")
+		//二次匹配
+		for _, data := range *list {
+			keyWord := []string{}
+			if strings.Contains(types, "title") {
+				title := qutil.ObjToString(data["title"])
+				keyWord = KeyWordToDatas(title, key, keyWord)
+			}
+			if strings.Contains(types, "detail") {
+				detail := qutil.ObjToString(data["detail"])
+				keyWord = KeyWordToDatas(detail, key, keyWord)
+			}
+			if strings.Contains(types, "purchasing") {
+				purchasing := qutil.ObjToString(data["purchasing"])
+				keyWord = KeyWordToDatas(purchasing, key, keyWord)
+			}
+			if strings.Contains(types, "filetext") {
+				filetext := qutil.ObjToString(data["filetext"])
+				keyWord = KeyWordToDatas(filetext, key, keyWord)
+			}
+			if strings.Contains(types, "projectname.pname") {
+				projectname := qutil.ObjToString(data["projectname"])
+				keyWord = KeyWordToDatas(projectname, key, keyWord)
+			}
+			if strings.Contains(types, "mbuyer") {
+				buyer := qutil.ObjToString(data["buyer"])
+				keyWord = KeyWordToDatas(buyer, key, keyWord)
+			}
+			if strings.Contains(types, "mwinner") {
+				winner := qutil.ObjToString(data["s_winner"])
+				keyWord = KeyWordToDatas(winner, key, keyWord)
+			}
+			if strings.Contains(types, "magency") {
+				winner := qutil.ObjToString(data["agency"])
+				keyWord = KeyWordToDatas(winner, key, keyWord)
+			}
+			keyMap := map[string]bool{}
+			keyArr := []string{}
+			for _, key1 := range keyWord {
+				keyMap[key1] = true
+			}
+			for k, _ := range keyMap {
+				keyArr = append(keyArr, k)
+			}
+			data["keyword"] = strings.Join(keyArr, ",")
+		}
 	}
-	return strings.Join(keyArr, ",")
 }
 
 func KeyWordToDatas(item, key string, keyWord []string) []string {

+ 1 - 7
src/jfw/modules/common/src/qfw/util/dataexport/dataexport.go

@@ -506,13 +506,7 @@ func GetDataExportSearchResultByScdId(sim, bid mg.MongodbSim, bidMgoDBName, elas
 	if list == nil || err != nil {
 		return nil, err
 	}
-	var keys = []string{}
-	for _, vk := range scd.Keyword {
-		keys = append(keys, strings.Replace(vk.Keyword, "+", ",", -1))
-	}
-	for _, v := range *list {
-		v["keyword"] = jy.GetMatchKey(strings.Join(keys, ","), scd.SelectType, v)
-	}
+	GetMatchKey(scd, list)
 	return list, nil
 }