Browse Source

修复单据搜索时,时间过滤无效的问题

sunyj 8 years ago
parent
commit
c524bcb473

+ 43 - 27
search-console/src/main/java/com/uas/search/console/service/impl/OrderSearchServiceImpl.java

@@ -35,9 +35,9 @@ import com.uas.search.exception.SearchException;
 import com.uas.search.model.BaseOrder;
 import com.uas.search.model.BaseOrderDetail;
 import com.uas.search.model.PageParams;
+import com.uas.search.model.PageParams.FilterField;
 import com.uas.search.model.SPage;
 import com.uas.search.service.OrderSearchService;
-import com.uas.search.utils.OrderSearchConstants;
 
 /**
  * 单据搜索实现
@@ -147,12 +147,12 @@ public class OrderSearchServiceImpl implements OrderSearchService, InnerOrderSea
 				sPage.setSize(PAGE_SIZE);
 			}
 
-			Map<String, Object> filters = params.getFilters();
+			Map<FilterField, Object> filters = params.getFilters();
 			if (!CollectionUtils.isEmpty(filters)) {
 				// 如果filter中有订单状态
-				if (!StringUtils.isEmpty(filters.get(OrderSearchConstants.STATUS_KEY))) {
+				if (!StringUtils.isEmpty(filters.get(FilterField.ORDER_STATUS))) {
 					@SuppressWarnings("unchecked")
-					List<Integer> statusList = (List<Integer>) filters.get(OrderSearchConstants.STATUS_KEY);
+					List<Integer> statusList = (List<Integer>) filters.get(FilterField.ORDER_STATUS);
 					BooleanQuery booleanQuery2 = new BooleanQuery();
 					for (Integer status : statusList) {
 						booleanQuery2.add(
@@ -163,43 +163,37 @@ public class OrderSearchServiceImpl implements OrderSearchService, InnerOrderSea
 					booleanQuery.add(booleanQuery2, BooleanClause.Occur.MUST);
 				}
 				// 如果filter中有买方个人uu
-				if (!StringUtils.isEmpty(filters.get(OrderSearchConstants.BUYER_UU_KEY))) {
-					booleanQuery.add(
-							new TermQuery(new Term(OrderSearchUtils.getBuyeruuField(tableName),
-									filters.get(OrderSearchConstants.BUYER_UU_KEY).toString())),
-							BooleanClause.Occur.MUST);
+				if (!StringUtils.isEmpty(filters.get(FilterField.ORDER_BUYER_UU))) {
+					booleanQuery.add(new TermQuery(new Term(OrderSearchUtils.getBuyeruuField(tableName),
+							filters.get(FilterField.ORDER_BUYER_UU).toString())), BooleanClause.Occur.MUST);
 				}
 				// 如果filter中有买方企业uu
-				if (!StringUtils.isEmpty(filters.get(OrderSearchConstants.BUYER_EN_UU_KEY))) {
-					booleanQuery.add(
-							new TermQuery(new Term(OrderSearchUtils.getBuyerenuuField(tableName),
-									filters.get(OrderSearchConstants.BUYER_EN_UU_KEY).toString())),
-							BooleanClause.Occur.MUST);
+				if (!StringUtils.isEmpty(filters.get(FilterField.ORDER_BUYER_EN_UU))) {
+					booleanQuery.add(new TermQuery(new Term(OrderSearchUtils.getBuyerenuuField(tableName),
+							filters.get(FilterField.ORDER_BUYER_EN_UU).toString())), BooleanClause.Occur.MUST);
 				}
 				// 如果filter中有卖方企业uu
-				if (!StringUtils.isEmpty(filters.get(OrderSearchConstants.SELLER_EN_UU_KEY))) {
-					booleanQuery.add(
-							new TermQuery(new Term(OrderSearchUtils.getSellerenuuField(tableName),
-									filters.get(OrderSearchConstants.SELLER_EN_UU_KEY).toString())),
-							BooleanClause.Occur.MUST);
+				if (!StringUtils.isEmpty(filters.get(FilterField.ORDER_SELLER_EN_UU))) {
+					booleanQuery.add(new TermQuery(new Term(OrderSearchUtils.getSellerenuuField(tableName),
+							filters.get(FilterField.ORDER_SELLER_EN_UU).toString())), BooleanClause.Occur.MUST);
 				}
 				// 如果最小时间和最大时间至少传了一个参数,说明需要对时间范围进行限定
-				if (!StringUtils.isEmpty(filters.get(SearchConstants.MIN_TIME_KEY))
-						|| !StringUtils.isEmpty(filters.get(SearchConstants.MAX_TIME_KEY))) {
+				if (!StringUtils.isEmpty(filters.get(FilterField.ORDER_MIN_TIME))
+						|| !StringUtils.isEmpty(filters.get(FilterField.ORDER_MAX_TIME))) {
 					// 最小日期初始化为2016.1.1
 					Calendar calendar = Calendar.getInstance();
 					calendar.set(2016, 0, 1);
 					// 最大日期初始化为现在
 					long minTime = calendar.getTimeInMillis();
 					long maxTime = new Date().getTime();
-					if (!StringUtils.isEmpty(filters.get(SearchConstants.MIN_TIME_KEY))) {
-						minTime = Long.parseLong(filters.get(SearchConstants.MIN_TIME_KEY).toString());
+					if (!StringUtils.isEmpty(filters.get(FilterField.ORDER_MIN_TIME))) {
+						minTime = Long.parseLong(filters.get(FilterField.ORDER_MIN_TIME).toString());
 					}
-					if (!StringUtils.isEmpty(filters.get(SearchConstants.MAX_TIME_KEY))) {
-						maxTime = Long.parseLong(filters.get(SearchConstants.MAX_TIME_KEY).toString());
+					if (!StringUtils.isEmpty(filters.get(FilterField.ORDER_MAX_TIME))) {
+						maxTime = Long.parseLong(filters.get(FilterField.ORDER_MAX_TIME).toString());
 					}
-					booleanQuery.add(NumericRangeQuery.newLongRange(SearchConstants.ORDER_CREATETIME_FIELD, minTime,
-							maxTime, true, true), BooleanClause.Occur.MUST);
+					booleanQuery.add(NumericRangeQuery.newLongRange(SearchConstants.CREATETIME_FIELD, minTime, maxTime,
+							true, true), BooleanClause.Occur.MUST);
 				}
 			}
 		}
@@ -310,6 +304,28 @@ public class OrderSearchServiceImpl implements OrderSearchService, InnerOrderSea
 			} else {
 				sPage.setSize(PAGE_SIZE);
 			}
+
+			Map<FilterField, Object> filters = params.getFilters();
+			if (!CollectionUtils.isEmpty(filters)) {
+				// 如果最小时间和最大时间至少传了一个参数,说明需要对时间范围进行限定
+				if (!StringUtils.isEmpty(filters.get(FilterField.ORDER_MIN_TIME))
+						|| !StringUtils.isEmpty(filters.get(FilterField.ORDER_MAX_TIME))) {
+					// 最小日期初始化为2016.1.1
+					Calendar calendar = Calendar.getInstance();
+					calendar.set(2016, 0, 1);
+					// 最大日期初始化为现在
+					long minTime = calendar.getTimeInMillis();
+					long maxTime = new Date().getTime();
+					if (!StringUtils.isEmpty(filters.get(FilterField.ORDER_MIN_TIME))) {
+						minTime = Long.parseLong(filters.get(FilterField.ORDER_MIN_TIME).toString());
+					}
+					if (!StringUtils.isEmpty(filters.get(FilterField.ORDER_MAX_TIME))) {
+						maxTime = Long.parseLong(filters.get(FilterField.ORDER_MAX_TIME).toString());
+					}
+					booleanQuery.add(NumericRangeQuery.newLongRange(SearchConstants.CREATETIME_FIELD, minTime, maxTime,
+							true, true), BooleanClause.Occur.MUST);
+				}
+			}
 		}
 		logger.info(booleanQuery.toString());