فهرست منبع

增加单独创建单据索引的接口

sunyj 9 سال پیش
والد
کامیت
234b20b656

+ 2 - 43
search-console/src/main/java/com/uas/search/console/controller/IndexController.java

@@ -48,51 +48,10 @@ public class IndexController {
 		return aqListener.stop();
 	}
 
-	@RequestMapping("/create/orders")
+	@RequestMapping("/create/ordersAndPurchases")
 	@ResponseBody
 	public String createOrderIndexes() {
-		return "created " + indexService.createOrderIndexes();
+		return "created " + indexService.createOrderAndPurchaseIndexes();
 	}
 
-	@RequestMapping("/create/orderDetails")
-	@ResponseBody
-	public String createOrderDetailIndexes() {
-		return "created " + indexService.createOrderDetailIndexes();
-	}
-
-	@RequestMapping("/create/orderInvoices")
-	@ResponseBody
-	public String createOrderInvoiceIndexes() {
-		return "created " + indexService.createOrderInvoiceIndexes();
-	}
-
-	@RequestMapping("/create/orderInvoiceDetails")
-	@ResponseBody
-	public String createOrderInvoiceDetailIndexes() {
-		return "created " + indexService.createOrderInvoiceDetailIndexes();
-	}
-
-	@RequestMapping("/create/purchases")
-	@ResponseBody
-	public String createPurchaseIndexes() {
-		return "created " + indexService.createPurchaseIndexes();
-	}
-
-	@RequestMapping("/create/purchaseDetails")
-	@ResponseBody
-	public String createPurchaseDetailIndexes() {
-		return "created " + indexService.createPurchaseDetailIndexes();
-	}
-
-	@RequestMapping("/create/purchaseInvoices")
-	@ResponseBody
-	public String createPurchaseInvoiceIndexes() {
-		return "created " + indexService.createPurchaseInvoiceIndexes();
-	}
-
-	@RequestMapping("/create/purchaseInvoiceDetails")
-	@ResponseBody
-	public String createPurchaseInvoiceDetailIndexes() {
-		return "created " + indexService.createPurchaseInvoiceDetailIndexes();
-	}
 }

+ 6 - 1
search-console/src/main/java/com/uas/search/console/core/advice/ExceptionHandlerAdvice.java

@@ -9,6 +9,7 @@ import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.ui.ModelMap;
+import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.ControllerAdvice;
 import org.springframework.web.bind.annotation.ExceptionHandler;
 
@@ -94,7 +95,11 @@ public class ExceptionHandlerAdvice {
 	 */
 	@ExceptionHandler(SearchException.class)
 	public ResponseEntity<ModelMap> handleSystemError(SearchException ex) {
-		logger.error(ex.getDetailedMessage());
+		if (!StringUtils.isEmpty(ex.getDetailedMessage())) {
+			logger.error(ex.getDetailedMessage());
+		} else {
+			logger.error(ex.getMessage());
+		}
 		HttpHeaders headers = new HttpHeaders();
 		headers.add("Content-Type", "application/json; charset=utf-8");
 		ModelMap map = new ModelMap();

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

@@ -39,20 +39,10 @@ public interface IndexService {
 	 */
 	public void delete(Object obj);
 
-	public Long createOrderIndexes();
-
-	public Long createOrderDetailIndexes();
-
-	public Long createOrderInvoiceIndexes();
-
-	public Long createOrderInvoiceDetailIndexes();
-
-	public Long createPurchaseIndexes();
-
-	public Long createPurchaseDetailIndexes();
-
-	public Long createPurchaseInvoiceIndexes();
-
-	public Long createPurchaseInvoiceDetailIndexes();
-
+	/**
+	 * 创建销售单、采购单及相应的发货单、明细索引
+	 * 
+	 * @return 消耗的时间ms
+	 */
+	public Long createOrderAndPurchaseIndexes();
 }

+ 92 - 53
search-console/src/main/java/com/uas/search/console/service/impl/IndexServiceImpl.java

@@ -138,24 +138,21 @@ public class IndexServiceImpl implements IndexService {
 			indexWriter = indexWriterManager.get();
 			Long startTime = new Date().getTime();
 
-			// Long kindSize = createKindIndexs();
-			// Long kindTime = new Date().getTime();
-			// logger.info("创建类目索引: " + kindSize + "条,耗时 " + (kindTime -
-			// startTime) + " ms\n");
-			//
-			// Long brandSize = createBrandIndexs();
-			// Long brandTime = new Date().getTime();
-			// logger.info("创建品牌索引: " + brandSize + "条,耗时 " + (brandTime -
-			// kindTime) + " ms\n");
-			//
-			// Long componentSize = createComponentIndexesWithFiles();
-			// Long componentTime = new Date().getTime();
-			// logger.info("创建器件索引: " + componentSize + "条,耗时 " + (componentTime
-			// - brandTime) + " ms\n");
+			Long kindSize = createKindIndexs();
+			Long kindTime = new Date().getTime();
+			logger.info("创建类目索引: " + kindSize + "条,耗时 " + (kindTime - startTime) + " ms\n");
+
+			Long brandSize = createBrandIndexs();
+			Long brandTime = new Date().getTime();
+			logger.info("创建品牌索引: " + brandSize + "条,耗时 " + (brandTime - kindTime) + " ms\n");
+
+			Long componentSize = createComponentIndexesWithFiles();
+			Long componentTime = new Date().getTime();
+			logger.info("创建器件索引: " + componentSize + "条,耗时 " + (componentTime - brandTime) + " ms\n");
 
 			Long orderSize = createOrderIndexes();
 			Long orderTime = new Date().getTime();
-			logger.info("创建销售单索引: " + orderSize + "条,耗时 " + (orderTime - startTime) + " ms\n");
+			logger.info("创建销售单索引: " + orderSize + "条,耗时 " + (orderTime - componentTime) + " ms\n");
 
 			Long orderDetailSize = createOrderDetailIndexes();
 			Long orderDetailTime = new Date().getTime();
@@ -335,29 +332,50 @@ public class IndexServiceImpl implements IndexService {
 		return size;
 	}
 
-	/**
-	 * 利用对象数组创建索引
-	 * 
-	 * @param objects
-	 *            对象数组,可为OrderSimpleInfo、OrderDetailSimpleInfo、
-	 *            OrderInvoiceSimpleInfo、OrderInvoiceDetailSimpleInfo、
-	 *            PurchaseSimpleInfo、PurchaseDetailSimpleInfo、
-	 *            PurchaseInvoiceSimpleInfo、PurchaseInvoiceDetailSimpleInfo
-	 * @return 对象数组的数量
-	 */
-	public Long createIndexesWithObjects(Object[] objects) {
-		if (objects == null || objects.length < 1)
-			return 0L;
-
+	@Override
+	public Long createOrderAndPurchaseIndexes() {
 		try {
 			indexWriter = indexWriterManager.get();
-			for (Object object : objects) {
-				Document document = ObjectToDocumentUtils.toDocument(object);
-				if (document != null) {
-					indexWriter.addDocument(document);
-				}
-			}
-			indexWriter.commit();
+			Long startTime = new Date().getTime();
+
+			Long orderSize = createOrderIndexes();
+			Long orderTime = new Date().getTime();
+			logger.info("创建销售单索引: " + orderSize + "条,耗时 " + (orderTime - startTime) + " ms\n");
+
+			Long orderDetailSize = createOrderDetailIndexes();
+			Long orderDetailTime = new Date().getTime();
+			logger.info("创建销售单明细索引: " + orderDetailSize + "条,耗时 " + (orderDetailTime - orderTime) + " ms\n");
+
+			Long orderInvoiceSize = createOrderInvoiceIndexes();
+			Long orderInvoiceTime = new Date().getTime();
+			logger.info("创建销售单发货单索引: " + orderInvoiceSize + "条,耗时 " + (orderInvoiceTime - orderDetailTime) + " ms\n");
+
+			Long orderInvoiceDetailSize = createOrderInvoiceDetailIndexes();
+			Long orderInvoiceDetailTime = new Date().getTime();
+			logger.info("创建销售单发货单明细索引: " + orderInvoiceDetailSize + "条,耗时 "
+					+ (orderInvoiceDetailTime - orderInvoiceTime) + " ms\n");
+
+			Long purchaseSize = createPurchaseIndexes();
+			Long purchaseTime = new Date().getTime();
+			logger.info("创建采购单索引: " + purchaseSize + "条,耗时 " + (purchaseTime - orderInvoiceDetailTime) + " ms\n");
+
+			Long purchaseDetailSize = createPurchaseDetailIndexes();
+			Long purchaseDetailTime = new Date().getTime();
+			logger.info("创建采购单明细索引: " + purchaseDetailSize + "条,耗时 " + (purchaseDetailTime - purchaseTime) + " ms\n");
+
+			Long purchaseInvoiceSize = createPurchaseInvoiceIndexes();
+			Long purchaseInvoiceTime = new Date().getTime();
+			logger.info("创建采购单发货单索引: " + purchaseInvoiceSize + "条,耗时 " + (purchaseInvoiceTime - purchaseDetailTime)
+					+ " ms\n");
+
+			Long purchaseInvoiceDetailSize = createPurchaseInvoiceDetailIndexes();
+			Long purchaseInvoiceDetailTime = new Date().getTime();
+			logger.info("创建采购单发货单明细索引: " + purchaseInvoiceDetailSize + "条,耗时 "
+					+ (purchaseInvoiceDetailTime - purchaseInvoiceTime) + " ms\n");
+
+			logger.info("索引创建成功, 共用时间 " + (purchaseInvoiceDetailTime - startTime) + " ms");
+
+			return purchaseInvoiceDetailTime - startTime;
 		} catch (IOException e) {
 			e.printStackTrace();
 		} catch (InterruptedException e) {
@@ -365,65 +383,86 @@ public class IndexServiceImpl implements IndexService {
 		} finally {
 			indexWriterManager.release();
 		}
-		return (long) objects.length;
+
+		return null;
 	}
 
-	@Override
-	public Long createOrderIndexes() {
+	private Long createOrderIndexes() {
 		logger.info("正在创建销售单索引...");
 		List<OrderSimpleInfo> orders = orderDao.findAll();
 		return createIndexesWithObjects(orders.toArray());
 	}
 
-	@Override
-	public Long createOrderDetailIndexes() {
+	private Long createOrderDetailIndexes() {
 		logger.info("正在创建销售单明细索引...");
 		List<OrderDetailSimpleInfo> orderDetails = orderDetailDao.findAll();
 		return createIndexesWithObjects(orderDetails.toArray());
 	}
 
-	@Override
-	public Long createOrderInvoiceIndexes() {
+	private Long createOrderInvoiceIndexes() {
 		logger.info("正在创建销售单发货单索引...");
 		List<OrderInvoiceSimpleInfo> orderInvoices = orderInvoiceDao.findAll();
 		return createIndexesWithObjects(orderInvoices.toArray());
 	}
 
-	@Override
-	public Long createOrderInvoiceDetailIndexes() {
+	private Long createOrderInvoiceDetailIndexes() {
 		logger.info("正在创建销售单发货单明细索引...");
 		List<OrderInvoiceDetailSimpleInfo> orderInvoiceDetails = orderInvoiceDetailDao.findAll();
 		return createIndexesWithObjects(orderInvoiceDetails.toArray());
 	}
 
-	@Override
-	public Long createPurchaseIndexes() {
+	private Long createPurchaseIndexes() {
 		logger.info("正在创建采购单索引...");
 		List<PurchaseSimpleInfo> purchases = purchaseDao.findAll();
 		return createIndexesWithObjects(purchases.toArray());
 	}
 
-	@Override
-	public Long createPurchaseDetailIndexes() {
+	private Long createPurchaseDetailIndexes() {
 		logger.info("正在创建采购单明细索引...");
 		List<PurchaseDetailSimpleInfo> purchaseDetails = purchaseDetailDao.findAll();
 		return createIndexesWithObjects(purchaseDetails.toArray());
 	}
 
-	@Override
-	public Long createPurchaseInvoiceIndexes() {
+	private Long createPurchaseInvoiceIndexes() {
 		logger.info("正在创建采购单发货单索引...");
 		List<PurchaseInvoiceSimpleInfo> purchaseInvoices = purchaseInvoiceDao.findAll();
 		return createIndexesWithObjects(purchaseInvoices.toArray());
 	}
 
-	@Override
-	public Long createPurchaseInvoiceDetailIndexes() {
+	private Long createPurchaseInvoiceDetailIndexes() {
 		logger.info("正在创建采购单发货单明细索引...");
 		List<PurchaseInvoiceDetailSimpleInfo> purchaseInvoiceDetails = purchaseInvoiceDetailDao.findAll();
 		return createIndexesWithObjects(purchaseInvoiceDetails.toArray());
 	}
 
+	/**
+	 * 利用对象数组创建索引
+	 * 
+	 * @param objects
+	 *            对象数组,可为OrderSimpleInfo、OrderDetailSimpleInfo、
+	 *            OrderInvoiceSimpleInfo、OrderInvoiceDetailSimpleInfo、
+	 *            PurchaseSimpleInfo、PurchaseDetailSimpleInfo、
+	 *            PurchaseInvoiceSimpleInfo、PurchaseInvoiceDetailSimpleInfo
+	 * @return 对象数组的数量
+	 */
+	private Long createIndexesWithObjects(Object[] objects) {
+		if (objects == null || objects.length < 1)
+			return 0L;
+
+		try {
+			for (Object object : objects) {
+				Document document = ObjectToDocumentUtils.toDocument(object);
+				if (document != null) {
+					indexWriter.addDocument(document);
+				}
+			}
+			indexWriter.commit();
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		return (long) objects.length;
+	}
+
 	/**
 	 * KindSimpleInfo对象转为Document
 	 * 

+ 7 - 5
search-console/src/main/java/com/uas/search/console/service/impl/OrderSearchServiceImpl.java

@@ -195,14 +195,13 @@ public class OrderSearchServiceImpl implements OrderSearchService, InnerOrderSea
 				Document document = indexSearcher.doc(scoreDoc.doc);
 				Long id = Long.valueOf(document.get(SearchConstants.ORDER_ID_FIELD));
 				String code = document.get(SearchConstants.ORDER_CODE_FIELD);
-				logger.info(id + " " + document.get(SearchConstants.ORDER_CREATETIME_FIELD) + " " + new Date(Long.parseLong(document.get(SearchConstants.ORDER_CREATETIME_FIELD))));
 				BaseOrder baseOrder = new BaseOrder(id, code);
 				baseOrder.setDetails(getOrderDetails(id));
 				baseOrders.add(baseOrder);
 			}
 			sPage.setContent(baseOrders);
 		} catch (NumberFormatException | IOException e) {
-			throw new SearchException(e);
+			throw new SearchException(e).setDetailedMessage(e);
 		} finally {
 			searcherManager.release(indexSearcher);
 		}
@@ -225,9 +224,12 @@ public class OrderSearchServiceImpl implements OrderSearchService, InnerOrderSea
 		for (Document document : documents) {
 			Long id = Long.valueOf(document.get(SearchConstants.ORDER_DETAIL_ID_FIELD));
 			String code = document.get(SearchConstants.ORDER_DETAIL_CODE_FIELD);
-			// Short detno =
-			// Short.valueOf(document.get(SearchConstants.ORDER_DETAIL_DETNO_FIELD));
-			baseOrderDetails.add(new BaseOrderDetail(id, null, code));
+			String detno = document.get(SearchConstants.ORDER_DETAIL_DETNO_FIELD);
+			if (!StringUtils.isEmpty(detno)) {
+				baseOrderDetails.add(new BaseOrderDetail(id, Short.valueOf(detno), code));
+			} else {
+				baseOrderDetails.add(new BaseOrderDetail(id, null, code));
+			}
 		}
 		return baseOrderDetails;
 	}

+ 0 - 5
search-console/src/main/java/com/uas/search/console/util/ObjectToDocumentUtils.java

@@ -1,6 +1,5 @@
 package com.uas.search.console.util;
 
-import org.apache.log4j.Logger;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field.Store;
 import org.apache.lucene.document.LongField;
@@ -25,8 +24,6 @@ import com.uas.search.console.model.PurchaseSimpleInfo;
  */
 public class ObjectToDocumentUtils {
 
-	private static Logger logger = Logger.getLogger(ObjectToDocumentUtils.class);
-
 	/**
 	 * 将对象转为Document
 	 * 
@@ -41,7 +38,6 @@ public class ObjectToDocumentUtils {
 		if (object == null) {
 			return null;
 		}
-		logger.info(object);
 		if (object instanceof OrderSimpleInfo) {
 			return toDocument((OrderSimpleInfo) object);
 		} else if (object instanceof OrderDetailSimpleInfo) {
@@ -105,7 +101,6 @@ public class ObjectToDocumentUtils {
 	 * @return 转换的Document
 	 */
 	public static Document toDocument(OrderDetailSimpleInfo orderDetail) {
-		logger.info("idnex " + orderDetail);
 		if (orderDetail == null || orderDetail.getId() == null || StringUtils.isEmpty(orderDetail.getCode())
 				|| orderDetail.getOrderid() == null || StringUtils.isEmpty(orderDetail.getCmpCode())
 				|| StringUtils.isEmpty(orderDetail.getKiName()) || StringUtils.isEmpty(orderDetail.getBrName())) {