Browse Source

增加人工维护单据索引的接口

sunyj 9 years ago
parent
commit
2e5b3ea168

+ 1 - 1
search-console/src/main/java/com/uas/search/console/service/IndexService.java

@@ -43,7 +43,7 @@ public interface IndexService {
 	 * 用于维护出问题的索引
 	 * 
 	 * @param tableName
-	 *            需维护的表名
+	 *            需维护的表名(如product$kind)
 	 * @param ids
 	 *            需维护的id,多个id以英文逗号隔开,如:321,988
 	 * @return 维护的结果

+ 70 - 29
search-console/src/main/java/com/uas/search/console/service/impl/IndexServiceImpl.java

@@ -448,6 +448,31 @@ public class IndexServiceImpl implements IndexService {
 				} else if (obj instanceof ComponentSimpleInfo) {
 					indexWriter.updateDocument(new Term(SearchConstants.COMPONENT_ID_FIELD,
 							String.valueOf(((ComponentSimpleInfo) obj).getId())), document);
+				} else if (obj instanceof OrderSimpleInfo) {
+					indexWriter.updateDocument(
+							new Term(SearchConstants.ORDER_ID_FIELD, String.valueOf(((OrderSimpleInfo) obj).getId())),
+							document);
+				} else if (obj instanceof OrderDetailSimpleInfo) {
+					indexWriter.updateDocument(new Term(SearchConstants.ORDER_DETAIL_ID_FIELD,
+							String.valueOf(((OrderDetailSimpleInfo) obj).getId())), document);
+				} else if (obj instanceof OrderInvoiceSimpleInfo) {
+					indexWriter.updateDocument(new Term(SearchConstants.ORDER_INVOICE_ID_FIELD,
+							String.valueOf(((OrderInvoiceSimpleInfo) obj).getId())), document);
+				} else if (obj instanceof OrderInvoiceDetailSimpleInfo) {
+					indexWriter.updateDocument(new Term(SearchConstants.ORDER_INVOICE_DETAIL_ID_FIELD,
+							String.valueOf(((OrderInvoiceDetailSimpleInfo) obj).getId())), document);
+				} else if (obj instanceof PurchaseSimpleInfo) {
+					indexWriter.updateDocument(new Term(SearchConstants.PURCHASE_ID_FIELD,
+							String.valueOf(((PurchaseSimpleInfo) obj).getId())), document);
+				} else if (obj instanceof PurchaseDetailSimpleInfo) {
+					indexWriter.updateDocument(new Term(SearchConstants.PURCHASE_DETAIL_ID_FIELD,
+							String.valueOf(((PurchaseDetailSimpleInfo) obj).getId())), document);
+				} else if (obj instanceof PurchaseInvoiceSimpleInfo) {
+					indexWriter.updateDocument(new Term(SearchConstants.PURCHASE_INVOICE_ID_FIELD,
+							String.valueOf(((PurchaseInvoiceSimpleInfo) obj).getId())), document);
+				} else if (obj instanceof PurchaseInvoiceDetailSimpleInfo) {
+					indexWriter.updateDocument(new Term(SearchConstants.PURCHASE_INVOICE_DETAIL_ID_FIELD,
+							String.valueOf(((PurchaseInvoiceDetailSimpleInfo) obj).getId())), document);
 				} else {
 					logger.error("Message parsing failed!");
 				}
@@ -472,37 +497,37 @@ public class IndexServiceImpl implements IndexService {
 			indexWriter = indexWriterManager.get();
 			if (obj instanceof KindSimpleInfo) {
 				indexWriter.deleteDocuments(
-						new Term(SearchConstants.KIND_ID_FIELD, ((KindSimpleInfo) obj).getId().toString()));
+						new Term(SearchConstants.KIND_ID_FIELD, String.valueOf(((KindSimpleInfo) obj).getId())));
 			} else if (obj instanceof BrandSimpleInfo) {
 				indexWriter.deleteDocuments(
-						new Term(SearchConstants.BRAND_ID_FIELD, ((BrandSimpleInfo) obj).getId().toString()));
+						new Term(SearchConstants.BRAND_ID_FIELD, String.valueOf(((BrandSimpleInfo) obj).getId())));
 			} else if (obj instanceof ComponentSimpleInfo) {
-				indexWriter.deleteDocuments(
-						new Term(SearchConstants.COMPONENT_ID_FIELD, ((ComponentSimpleInfo) obj).getId().toString()));
+				indexWriter.deleteDocuments(new Term(SearchConstants.COMPONENT_ID_FIELD,
+						String.valueOf(((ComponentSimpleInfo) obj).getId())));
 			} else if (obj instanceof OrderSimpleInfo) {
 				indexWriter.deleteDocuments(
-						new Term(SearchConstants.ORDER_ID_FIELD, ((OrderSimpleInfo) obj).getId().toString()));
+						new Term(SearchConstants.ORDER_ID_FIELD, String.valueOf(((OrderSimpleInfo) obj).getId())));
 			} else if (obj instanceof OrderDetailSimpleInfo) {
 				indexWriter.deleteDocuments(new Term(SearchConstants.ORDER_DETAIL_ID_FIELD,
-						((OrderDetailSimpleInfo) obj).getId().toString()));
+						String.valueOf(((OrderDetailSimpleInfo) obj).getId())));
 			} else if (obj instanceof OrderInvoiceSimpleInfo) {
 				indexWriter.deleteDocuments(new Term(SearchConstants.ORDER_INVOICE_ID_FIELD,
-						((OrderInvoiceSimpleInfo) obj).getId().toString()));
+						String.valueOf(((OrderInvoiceSimpleInfo) obj).getId())));
 			} else if (obj instanceof OrderInvoiceDetailSimpleInfo) {
 				indexWriter.deleteDocuments(new Term(SearchConstants.ORDER_INVOICE_DETAIL_ID_FIELD,
-						((OrderInvoiceDetailSimpleInfo) obj).getId().toString()));
+						String.valueOf(((OrderInvoiceDetailSimpleInfo) obj).getId())));
 			} else if (obj instanceof PurchaseSimpleInfo) {
-				indexWriter.deleteDocuments(
-						new Term(SearchConstants.PURCHASE_ID_FIELD, ((PurchaseSimpleInfo) obj).getId().toString()));
+				indexWriter.deleteDocuments(new Term(SearchConstants.PURCHASE_ID_FIELD,
+						String.valueOf(((PurchaseSimpleInfo) obj).getId())));
 			} else if (obj instanceof PurchaseDetailSimpleInfo) {
 				indexWriter.deleteDocuments(new Term(SearchConstants.PURCHASE_DETAIL_ID_FIELD,
-						((PurchaseDetailSimpleInfo) obj).getId().toString()));
+						String.valueOf(((PurchaseDetailSimpleInfo) obj).getId())));
 			} else if (obj instanceof PurchaseInvoiceSimpleInfo) {
 				indexWriter.deleteDocuments(new Term(SearchConstants.PURCHASE_INVOICE_ID_FIELD,
-						((PurchaseInvoiceSimpleInfo) obj).getId().toString()));
+						String.valueOf(((PurchaseInvoiceSimpleInfo) obj).getId())));
 			} else if (obj instanceof PurchaseInvoiceDetailSimpleInfo) {
 				indexWriter.deleteDocuments(new Term(SearchConstants.PURCHASE_INVOICE_DETAIL_ID_FIELD,
-						((PurchaseInvoiceDetailSimpleInfo) obj).getId().toString()));
+						String.valueOf(((PurchaseInvoiceDetailSimpleInfo) obj).getId())));
 			} else {
 				logger.error("Message parsing failed!");
 			}
@@ -520,8 +545,7 @@ public class IndexServiceImpl implements IndexService {
 	@Override
 	public String maintainIndexes(String tableName, String ids) {
 		if (StringUtils.isEmpty(tableName)) {
-			throw new SearchException("需指定要维护的表名:" + SearchConstants.KIND_TABLE_NAME + "、"
-					+ SearchConstants.BRAND_TABLE_NAME + "、" + SearchConstants.COMPONENT_TABLE_NAME);
+			throw new SearchException("需指定要维护的表名,如:" + SearchConstants.KIND_TABLE_NAME);
 		}
 		if (StringUtils.isEmpty(ids)) {
 			throw new SearchException("需指定要维护的ids,多个id以英文逗号隔开,如:321,988");
@@ -533,25 +557,42 @@ public class IndexServiceImpl implements IndexService {
 			idList.add(Long.parseLong(str));
 		}
 		if (tableName.equals(SearchConstants.KIND_TABLE_NAME)) {
-			List<KindSimpleInfo> kinds = kindDao.findAll(idList);
-			for (KindSimpleInfo kind : kinds) {
-				update(kind);
-			}
+			update(kindDao.findAll(idList));
 		} else if (tableName.equals(SearchConstants.BRAND_TABLE_NAME)) {
-			List<BrandSimpleInfo> brands = brandDao.findAll(idList);
-			for (BrandSimpleInfo brand : brands) {
-				update(brand);
-			}
+			update(brandDao.findAll(idList));
 		} else if (tableName.equals(SearchConstants.COMPONENT_TABLE_NAME)) {
-			List<ComponentSimpleInfo> components = componentDao.findAll(idList);
-			for (ComponentSimpleInfo component : components) {
-				update(component);
-			}
+			update(componentDao.findAll(idList));
+		} else if (tableName.equals(SearchConstants.ORDER_TABLE_NAME)) {
+			update(orderDao.findAll(idList));
+		} else if (tableName.equals(SearchConstants.ORDER_DETAIL_TABLE_NAME)) {
+			update(orderDetailDao.findAll(idList));
+		} else if (tableName.equals(SearchConstants.ORDER_INVOICE_TABLE_NAME)) {
+			update(orderInvoiceDao.findAll(idList));
+		} else if (tableName.equals(SearchConstants.ORDER_INVOICE_DETAIL_TABLE_NAME)) {
+			update(orderInvoiceDetailDao.findAll(idList));
+		} else if (tableName.equals(SearchConstants.PURCHASE_TABLE_NAME)) {
+			update(purchaseDao.findAll(idList));
+		} else if (tableName.equals(SearchConstants.PURCHASE_DETAIL_TABLE_NAME)) {
+			update(purchaseDetailDao.findAll(idList));
+		} else if (tableName.equals(SearchConstants.PURCHASE_INVOICE_TABLE_NAME)) {
+			update(purchaseInvoiceDao.findAll(idList));
+		} else if (tableName.equals(SearchConstants.PURCHASE_INVOICE_DETAIL_TABLE_NAME)) {
+			update(purchaseInvoiceDetailDao.findAll(idList));
 		} else {
-			throw new SearchException("需指定要维护的表名:" + SearchConstants.KIND_TABLE_NAME + "、"
-					+ SearchConstants.BRAND_TABLE_NAME + "、" + SearchConstants.COMPONENT_TABLE_NAME);
+			throw new SearchException("暂时不支持该表的索引进行维护:" + tableName);
 		}
 		return "维护成功";
 	}
 
+	/**
+	 * 根据对象列表,对索引进行更新
+	 * 
+	 * @param list
+	 */
+	private <T> void update(List<T> list) {
+		for (T element : list) {
+			update(element);
+		}
+	}
+
 }

+ 1 - 4
search-console/src/main/java/com/uas/search/console/service/impl/SearchServiceImpl.java

@@ -283,11 +283,8 @@ public class SearchServiceImpl implements SearchService, InnerSearchService {
 
 	@Override
 	public Set<Long> getBrandIdsBySearchComponent(String keyword, String kindId) {
-		String message = "";
 		if (SearchUtils.isKeywordInvalid(keyword)) {
-			message = "搜索关键词无效:" + keyword;
-			logger.error(message);
-			throw new SearchException(message);
+			throw new SearchException("搜索关键词无效:" + keyword);
 		}
 		IndexSearcher indexSearcher = SearchUtils.getIndexSearcher();