Преглед изворни кода

单据搜索支持过滤多个状态

sunyj пре 9 година
родитељ
комит
52504cbaf0

+ 8 - 3
search-console/src/main/java/com/uas/search/console/controller/OrderSearchController.java

@@ -82,7 +82,7 @@ public class OrderSearchController {
 	@RequestMapping("orderIds")
 	@ResponseBody
 	public SPage<BaseOrder> getOrderIdsWithDetail(String keyword, String tableName, Integer page, Integer size,
-			Integer status, Long buyeruu, Long buyerenuu, Long sellerenuu, String mintime, String maxtime) {
+			String status, Long buyeruu, Long buyerenuu, Long sellerenuu, String mintime, String maxtime) {
 		Table_name tbName = null;
 		if (!StringUtils.isEmpty(tableName)) {
 			tbName = Table_name.valueOf(tableName);
@@ -96,8 +96,13 @@ public class OrderSearchController {
 			params.setSize(size);
 		}
 		Map<String, Object> filters = new HashMap<>();
-		if (status != null) {
-			filters.put(OrderSearchConstants.STATUS_KEY, status);
+		if (!StringUtils.isEmpty(status)) {
+			String[] strs = status.split(",");
+			List<Integer> statusList = new ArrayList<>();
+			for(String str : strs){
+				statusList.add(Integer.valueOf(str));
+			}
+			filters.put(OrderSearchConstants.STATUS_KEY, statusList);
 		}
 		if (buyeruu != null) {
 			filters.put(OrderSearchConstants.BUYER_UU_KEY, buyeruu);

+ 8 - 4
search-console/src/main/java/com/uas/search/console/service/InnerOrderSearchService.java

@@ -26,7 +26,8 @@ public interface InnerOrderSearchService {
 	 * @param keyword
 	 *            关键词,可以是:销售单号、买方个人姓名、买方企业名称、卖方企业名称、明细中的单号、器件型号、 器件品牌名称、器件类目名称
 	 * @param params
-	 *            其他信息,可能带有翻页信息,filter中可以有:买方个人UU号、买方企业UU号、卖方企业UU号、订单日期范围最大值、
+	 *            其他信息,可能带有翻页信息,filter中可以有:订单状态码(List
+	 *            <Integer>,多个状态之间取"或"的关系)、买方个人UU号、买方企业UU号、卖方企业UU号、订单日期范围最大值、
 	 *            订单日期最小值
 	 * @return 符合条件的单据。<br>
 	 *         如果关键词命中主表中的信息,结果有主表信息不带从表;<br>
@@ -41,7 +42,8 @@ public interface InnerOrderSearchService {
 	 * @param keyword
 	 *            关键词,可以是:发货单号、买方个人姓名、买方企业名称、明细中的单号、器件型号、 器件品牌名称、器件类目名称
 	 * @param params
-	 *            其他信息,可能带有翻页信息,filter中可以有:买方个人UU号、买方企业UU号、订单日期范围最大值、订单日期最小值
+	 *            其他信息,可能带有翻页信息,filter中可以有:订单状态码(List
+	 *            <Integer>,多个状态之间取"或"的关系)、买方个人UU号、买方企业UU号、订单日期范围最大值、订单日期最小值
 	 * @return 符合条件的单据。<br>
 	 *         如果关键词命中主表中的信息,结果有主表信息不带从表;<br>
 	 *         如果关键词没命中主表信息,命中了从表中的信息,结果有主表带被命中的从表信息;<br>
@@ -55,7 +57,8 @@ public interface InnerOrderSearchService {
 	 * @param keyword
 	 *            模糊搜索关键词,可以是:采购单号、卖方企业名称、明细中的单号、器件型号、器件品牌名称、 器件类目名称
 	 * @param params
-	 *            关键词,可能带有翻页信息,可以是:卖方企业UU号、订单日期范围最大值、订单日期最小值
+	 *            关键词,可能带有翻页信息,filter中可以有:订单状态码(List
+	 *            <Integer>,多个状态之间取"或"的关系)、卖方企业UU号、订单日期范围最大值、订单日期最小值
 	 * @return 符合条件的单据。<br>
 	 *         如果关键词命中主表中的信息,结果有主表信息不带从表;<br>
 	 *         如果关键词没命中主表信息,命中了从表中的信息,结果有主表带被命中的从表信息;<br>
@@ -69,7 +72,8 @@ public interface InnerOrderSearchService {
 	 * @param keyword
 	 *            关键词,可以是:发货单号、卖方企业名称、明细中的单号、器件型号、 器件品牌名称、器件类目名称
 	 * @param params
-	 *            其他信息,可能带有翻页信息,filter中可以有:卖方企业UU号、订单日期范围最大值、订单日期最小值
+	 *            其他信息,可能带有翻页信息,filter中可以有:订单状态码(List
+	 *            <Integer>,多个状态之间取"或"的关系)、卖方企业UU号、订单日期范围最大值、订单日期最小值
 	 * @return 符合条件的单据。<br>
 	 *         如果关键词命中主表中的信息,结果有主表信息不带从表;<br>
 	 *         如果关键词没命中主表信息,命中了从表中的信息,结果有主表带被命中的从表信息;<br>

+ 20 - 8
search-console/src/main/java/com/uas/search/console/service/impl/OrderSearchServiceImpl.java

@@ -156,10 +156,16 @@ public class OrderSearchServiceImpl implements OrderSearchService, InnerOrderSea
 			if (!CollectionUtils.isEmpty(filters)) {
 				// 如果filter中有订单状态
 				if (!StringUtils.isEmpty(filters.get(OrderSearchConstants.STATUS_KEY))) {
-					booleanQuery.add(
-							new TermQuery(new Term(OrderSearchUtils.getStatusField(tableName),
-									filters.get(OrderSearchConstants.STATUS_KEY).toString())),
-							BooleanClause.Occur.MUST);
+					@SuppressWarnings("unchecked")
+					List<Integer> statusList = (List<Integer>) filters.get(OrderSearchConstants.STATUS_KEY);
+					BooleanQuery booleanQuery2 = new BooleanQuery();
+					for (Integer status : statusList) {
+						booleanQuery2.add(
+								new TermQuery(
+										new Term(OrderSearchUtils.getStatusField(tableName), String.valueOf(status))),
+								BooleanClause.Occur.SHOULD);
+					}
+					booleanQuery.add(booleanQuery2, BooleanClause.Occur.MUST);
 				}
 				// 如果filter中有买方个人uu
 				if (!StringUtils.isEmpty(filters.get(OrderSearchConstants.BUYER_UU_KEY))) {
@@ -314,10 +320,16 @@ public class OrderSearchServiceImpl implements OrderSearchService, InnerOrderSea
 			if (!CollectionUtils.isEmpty(filters)) {
 				// 如果filter中有订单状态
 				if (!StringUtils.isEmpty(filters.get(OrderSearchConstants.STATUS_KEY))) {
-					booleanQuery.add(
-							new TermQuery(new Term(OrderSearchUtils.getStatusField(tableName),
-									filters.get(OrderSearchConstants.STATUS_KEY).toString())),
-							BooleanClause.Occur.MUST);
+					@SuppressWarnings("unchecked")
+					List<Integer> statusList = (List<Integer>) filters.get(OrderSearchConstants.STATUS_KEY);
+					BooleanQuery booleanQuery2 = new BooleanQuery();
+					for (Integer status : statusList) {
+						booleanQuery2.add(
+								new TermQuery(
+										new Term(OrderSearchUtils.getStatusField(tableName), String.valueOf(status))),
+								BooleanClause.Occur.SHOULD);
+					}
+					booleanQuery.add(booleanQuery2, BooleanClause.Occur.MUST);
 				}
 			}
 		}