Quellcode durchsuchen

搜索接口增加对排除过滤的支持

sunyj vor 9 Jahren
Ursprung
Commit
21ec03b172

+ 11 - 1
search-api-b2b/src/main/java/com/uas/search/b2b/model/PageParams.java

@@ -19,6 +19,7 @@ public class PageParams implements Serializable {
 	private int page;
 	private int size;
 	private Map<String, Object> filters;
+	private Map<String, Object> notEqualFilters;
 
 	public PageParams() {
 
@@ -67,9 +68,18 @@ public class PageParams implements Serializable {
 		}
 	}
 
+	public Map<String, Object> getNotEqualFilters() {
+		return notEqualFilters;
+	}
+
+	public void setNotEqualFilters(Map<String, Object> notEqualFilters) {
+		this.notEqualFilters = notEqualFilters;
+	}
+
 	@Override
 	public String toString() {
-		return "PageParams [page=" + page + ", size=" + size + ", filters=" + filters + "]";
+		return "PageParams [page=" + page + ", size=" + size + ", filters=" + filters + ", notEqualFilters="
+				+ notEqualFilters + "]";
 	}
 
 }

+ 3 - 2
search-api-b2b/src/main/java/com/uas/search/b2b/service/SearchService.java

@@ -182,7 +182,7 @@ public interface SearchService {
 		 * 品牌表
 		 */
 		PRODUCT$BRAND("PRODUCT$BRAND"),
-		
+
 		/**
 		 * 企业圈表
 		 */
@@ -236,7 +236,8 @@ public interface SearchService {
 	 *            {@link com.uas.search.b2b.util.SearchConstants}
 	 *            中的常量;3.排序方式(ArrayList(Sort)),键为
 	 *            {@link com.uas.search.b2b.util.SearchConstants}中的常量,值为List(
-	 *            {@link com.uas.search.b2b.model.Sort})
+	 *            {@link com.uas.search.b2b.model.Sort}
+	 *            )。notEqualFilters中进行排除过滤,键为数据库表中相应的字段名称,值为需排除的值
 	 * @return 单据id
 	 * @throws SearchException
 	 */

+ 10 - 1
search-console-b2b/src/main/java/com/uas/search/console/b2b/controller/SearchController.java

@@ -43,7 +43,7 @@ public class SearchController {
 	@RequestMapping("")
 	@ResponseBody
 	public SPage<Long> searchIds(String keyword, String tableName, Integer page, Integer size, String filters,
-			String multiValueField, String sort) {
+			String multiValueField, String sort, String notEqualFilters) {
 		Table_name tbName = null;
 		if (!StringUtils.isEmpty(tableName)) {
 			tbName = Table_name.valueOf(tableName.toUpperCase());
@@ -74,6 +74,15 @@ public class SearchController {
 		if (!CollectionUtils.isEmpty(filtersMap)) {
 			pageParams.setFilters(filtersMap);
 		}
+
+		Map<String, Object> notEqualFiltersMap = new HashMap<>();
+		if (!StringUtils.isEmpty(notEqualFilters)) {
+			notEqualFiltersMap.putAll(JSONObject.parseObject(notEqualFilters));
+		}
+		if (!CollectionUtils.isEmpty(notEqualFiltersMap)) {
+			pageParams.setNotEqualFilters(notEqualFiltersMap);
+		}
+
 		return searchService.searchIds(keyword, tbName, pageParams);
 	}
 

+ 14 - 0
search-console-b2b/src/main/java/com/uas/search/console/b2b/service/impl/SearchServiceImpl.java

@@ -287,6 +287,20 @@ public class SearchServiceImpl implements SearchService, InnerSearchService {
 
 				}
 			}
+
+			// 排除过滤
+			Map<String, Object> notEqualFilters = pageParams.getNotEqualFilters();
+			if (!CollectionUtils.isEmpty(notEqualFilters)) {
+				Set<Entry<String, Object>> entrySet = notEqualFilters.entrySet();
+				for (Entry<String, Object> entry : entrySet) {
+					String key = entry.getKey();
+					Object value = entry.getValue();
+					String field = ClassAndTableNameUtils.combineField(tableName, key);
+					if (value != null) {
+						booleanQuery.add(SearchUtils.regexpQuery(field, String.valueOf(value), false), Occur.MUST_NOT);
+					}
+				}
+			}
 		}
 		logger.info(booleanQuery.toString());
 

+ 2 - 1
search-console-b2b/src/main/webapp/WEB-INF/views/console.html

@@ -10,7 +10,8 @@
 		<ol>
 			<strong><li class="title">搜索</li></strong>
 			<ol>
-				<li>search?keyword=P&tableName=PURC$ORDERS&filters={"pu_enuu":10041166,"fromDate":1435680000000,"endDate":1479214994000}&multiValueField=[{"field":"pu_status","multiValue":{"or":true,"values":[200,201]}}]&sort=[{"field":"pu_id","reverse":1,"type":"LONG"},{"field":"pu_date","reverse":true,"type":"LONG","missingValue":2433211087000}]</li>
+			<!-- 此处"&not;"为字符"¬",于是使用 "&amp;"表示"&"-->
+				<li>search?keyword=P&tableName=PURC$ORDERS&filters={"pu_enuu":10041166,"fromDate":1435680000000,"endDate":1479214994000}&multiValueField=[{"field":"pu_status","multiValue":{"or":true,"values":[200,201]}}]&sort=[{"field":"pu_id","reverse":1,"type":"LONG"},{"field":"pu_date","reverse":true,"type":"LONG","missingValue":2433211087000}]&amp;notEqualFilters={"pu_status":"200","pu_end":1}</li>
 				<li><a target="_blank">search?keyword=PMP1506000&tableName=PURC$ORDERS</a></li>
 				<li><a target="_blank">search?keyword=MSQ150800&tableName=MAKE$ORDERS</a></li>
 			</ol>