Ver código fonte

单据明细数据索引不再单独存放,而是以json格式存储在单据主表对应的索引中;修改属性实体类名;

sunyj 9 anos atrás
pai
commit
14b4713082
28 arquivos alterados com 384 adições e 1297 exclusões
  1. 0 6
      search-console/src/main/java/com/uas/search/console/controller/IndexController.java
  2. 10 125
      search-console/src/main/java/com/uas/search/console/controller/OrderSearchController.java
  3. 22 22
      search-console/src/main/java/com/uas/search/console/controller/SearchController.java
  4. 0 23
      search-console/src/main/java/com/uas/search/console/dao/OrderDetailSimpleInfoDao.java
  5. 0 23
      search-console/src/main/java/com/uas/search/console/dao/OrderInvoiceDetailSimpleInfoDao.java
  6. 0 23
      search-console/src/main/java/com/uas/search/console/dao/PurchaseDetailSimpleInfoDao.java
  7. 0 23
      search-console/src/main/java/com/uas/search/console/dao/PurchaseInvoiceDetailSimpleInfoDao.java
  8. 6 182
      search-console/src/main/java/com/uas/search/console/jms/QueueMessageParser.java
  9. 73 0
      search-console/src/main/java/com/uas/search/console/model/BaseOrderDetailSimpleInfo.java
  10. 3 3
      search-console/src/main/java/com/uas/search/console/model/ComponentSimpleInfo.java
  11. 9 24
      search-console/src/main/java/com/uas/search/console/model/OrderDetailSimpleInfo.java
  12. 9 25
      search-console/src/main/java/com/uas/search/console/model/OrderInvoiceDetailSimpleInfo.java
  13. 24 2
      search-console/src/main/java/com/uas/search/console/model/OrderInvoiceSimpleInfo.java
  14. 24 2
      search-console/src/main/java/com/uas/search/console/model/OrderSimpleInfo.java
  15. 1 1
      search-console/src/main/java/com/uas/search/console/model/PropertySimpleInfo.java
  16. 5 4
      search-console/src/main/java/com/uas/search/console/model/PropertyValueSimpleInfo.java
  17. 9 25
      search-console/src/main/java/com/uas/search/console/model/PurchaseDetailSimpleInfo.java
  18. 9 25
      search-console/src/main/java/com/uas/search/console/model/PurchaseInvoiceDetailSimpleInfo.java
  19. 26 2
      search-console/src/main/java/com/uas/search/console/model/PurchaseInvoiceSimpleInfo.java
  20. 25 2
      search-console/src/main/java/com/uas/search/console/model/PurchaseSimpleInfo.java
  21. 0 35
      search-console/src/main/java/com/uas/search/console/service/InnerOrderSearchService.java
  22. 5 105
      search-console/src/main/java/com/uas/search/console/service/impl/IndexServiceImpl.java
  23. 27 140
      search-console/src/main/java/com/uas/search/console/service/impl/OrderSearchServiceImpl.java
  24. 44 81
      search-console/src/main/java/com/uas/search/console/util/DocumentToObjectUtils.java
  25. 5 5
      search-console/src/main/java/com/uas/search/console/util/MergeComponentData.java
  26. 19 134
      search-console/src/main/java/com/uas/search/console/util/ObjectToDocumentUtils.java
  27. 25 159
      search-console/src/main/java/com/uas/search/console/util/OrderSearchUtils.java
  28. 4 96
      search-console/src/main/java/com/uas/search/console/util/SearchConstants.java

+ 0 - 6
search-console/src/main/java/com/uas/search/console/controller/IndexController.java

@@ -30,12 +30,6 @@ public class IndexController {
 		return "Indexes created success in " + indexService.createIndexs() + " ms.";
 	}
 
-	@RequestMapping("/listen")
-	@ResponseBody
-	public String listen() {
-		return aqListener.start();
-	}
-
 	@RequestMapping("/listen/start")
 	@ResponseBody
 	public String startListen() {

+ 10 - 125
search-console/src/main/java/com/uas/search/console/controller/OrderSearchController.java

@@ -9,24 +9,13 @@ import java.util.Map;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 
 import com.uas.search.console.core.util.ContextUtils;
-import com.uas.search.console.dao.OrderDetailSimpleInfoDao;
-import com.uas.search.console.dao.OrderInvoiceDetailSimpleInfoDao;
-import com.uas.search.console.dao.OrderInvoiceSimpleInfoDao;
-import com.uas.search.console.dao.OrderSimpleInfoDao;
-import com.uas.search.console.dao.PurchaseDetailSimpleInfoDao;
-import com.uas.search.console.dao.PurchaseInvoiceDetailSimpleInfoDao;
-import com.uas.search.console.dao.PurchaseInvoiceSimpleInfoDao;
-import com.uas.search.console.dao.PurchaseSimpleInfoDao;
-import com.uas.search.console.model.OrderDetailSimpleInfo;
-import com.uas.search.console.model.OrderInvoiceDetailSimpleInfo;
 import com.uas.search.console.model.OrderInvoiceSimpleInfo;
 import com.uas.search.console.model.OrderSimpleInfo;
-import com.uas.search.console.model.PurchaseDetailSimpleInfo;
-import com.uas.search.console.model.PurchaseInvoiceDetailSimpleInfo;
 import com.uas.search.console.model.PurchaseInvoiceSimpleInfo;
 import com.uas.search.console.model.PurchaseSimpleInfo;
 import com.uas.search.console.service.InnerOrderSearchService;
@@ -55,30 +44,6 @@ public class OrderSearchController {
 	private InnerOrderSearchService innerOrderSearchService = ContextUtils.getApplicationContext()
 			.getBean("orderSearchServiceImpl", InnerOrderSearchService.class);
 
-	@Autowired
-	private OrderSimpleInfoDao orderDao;
-
-	@Autowired
-	private OrderDetailSimpleInfoDao orderDetailDao;
-
-	@Autowired
-	private OrderInvoiceSimpleInfoDao orderInvoiceDao;
-
-	@Autowired
-	private OrderInvoiceDetailSimpleInfoDao orderInvoiceDetailDao;
-
-	@Autowired
-	private PurchaseSimpleInfoDao purchaseDao;
-
-	@Autowired
-	private PurchaseDetailSimpleInfoDao purchaseDetailDao;
-
-	@Autowired
-	private PurchaseInvoiceSimpleInfoDao purchaseInvoiceDao;
-
-	@Autowired
-	private PurchaseInvoiceDetailSimpleInfoDao purchaseInvoiceDetailDao;
-
 	@RequestMapping("orderIds")
 	@ResponseBody
 	public SPage<BaseOrder> getOrderIdsWithDetail(String keyword, String tableName, Integer page, Integer size,
@@ -99,7 +64,7 @@ public class OrderSearchController {
 		if (!StringUtils.isEmpty(status)) {
 			String[] strs = status.split(",");
 			List<Integer> statusList = new ArrayList<>();
-			for(String str : strs){
+			for (String str : strs) {
 				statusList.add(Integer.valueOf(str));
 			}
 			filters.put(OrderSearchConstants.STATUS_KEY, statusList);
@@ -144,114 +109,34 @@ public class OrderSearchController {
 			Calendar calendar = Calendar.getInstance();
 			// 月份减1
 			calendar.set(year, month, date, hour, minute, second);
-			System.out.println(calendar.getTime().toString());
 			return calendar.getTimeInMillis();
 		} catch (Exception e) {
 			throw new SearchException("时间格式错误,示例:'2016-10-10 1:12:20'," + e);
 		}
 	}
 
-	@RequestMapping("findAllOrders")
-	@ResponseBody
-	public List<OrderSimpleInfo> orders(String ids) {
-		if (StringUtils.isEmpty(ids)) {
-			return orderDao.findAll();
-		}
-		String[] strs = ids.split(",");
-		List<Long> longIds = new ArrayList<>();
-		for (String str : strs) {
-			longIds.add(Long.valueOf(str));
-		}
-		return orderDao.findAll(longIds);
-	}
-
-	@RequestMapping("findAllOrderDetails")
-	@ResponseBody
-	public List<OrderDetailSimpleInfo> orderDetails() {
-		return orderDetailDao.findAll();
-	}
-
-	@RequestMapping("findAllOrderInvoices")
-	@ResponseBody
-	public List<OrderInvoiceSimpleInfo> orderInvoices() {
-		return orderInvoiceDao.findAll();
-	}
-
-	@RequestMapping("findAllOrderInvoiceDetails")
+	@RequestMapping("/order/{id}")
 	@ResponseBody
-	public List<OrderInvoiceDetailSimpleInfo> orderInvoiceDetails() {
-		return orderInvoiceDetailDao.findAll();
-	}
-
-	@RequestMapping("findAllPurchases")
-	@ResponseBody
-	public List<PurchaseSimpleInfo> purchases() {
-		return purchaseDao.findAll();
-	}
-
-	@RequestMapping("findAllPurchaseDetails")
-	@ResponseBody
-	public List<PurchaseDetailSimpleInfo> purchaseDetails() {
-		return purchaseDetailDao.findAll();
-	}
-
-	@RequestMapping("findAllPurchaseInvoices")
-	@ResponseBody
-	public List<PurchaseInvoiceSimpleInfo> purchaseInvoices() {
-		return purchaseInvoiceDao.findAll();
-	}
-
-	@RequestMapping("findAllPurchaseInvoiceDetails")
-	@ResponseBody
-	public List<PurchaseInvoiceDetailSimpleInfo> purchaseInvoiceDetails() {
-		return purchaseInvoiceDetailDao.findAll();
-	}
-
-	@RequestMapping("/order")
-	@ResponseBody
-	public OrderSimpleInfo getOrder(Long id) {
+	public OrderSimpleInfo getOrder(@PathVariable Long id) {
 		return innerOrderSearchService.getOrder(id);
 	}
 
-	@RequestMapping("/orderDetail")
+	@RequestMapping("/orderInvoice/{id}")
 	@ResponseBody
-	public OrderDetailSimpleInfo getOrderDetail(Long id) {
-		return innerOrderSearchService.getOrderDetail(id);
-	}
-
-	@RequestMapping("/orderInvoice")
-	@ResponseBody
-	public OrderInvoiceSimpleInfo getOrderInvoice(Long id) {
+	public OrderInvoiceSimpleInfo getOrderInvoice(@PathVariable Long id) {
 		return innerOrderSearchService.getOrderInvoice(id);
 	}
 
-	@RequestMapping("/orderInvoiceDetail")
+	@RequestMapping("/purchase/{id}")
 	@ResponseBody
-	public OrderInvoiceDetailSimpleInfo getOrderDetailInvoice(Long id) {
-		return innerOrderSearchService.getOrderInvoiceDetail(id);
-	}
-
-	@RequestMapping("/purchase")
-	@ResponseBody
-	public PurchaseSimpleInfo getPurchase(Long id) {
+	public PurchaseSimpleInfo getPurchase(@PathVariable Long id) {
 		return innerOrderSearchService.getPurchase(id);
 	}
 
-	@RequestMapping("/purchaseDetail")
-	@ResponseBody
-	public PurchaseDetailSimpleInfo getPurchaseDetail(Long id) {
-		return innerOrderSearchService.getPurchaseDetail(id);
-	}
-
-	@RequestMapping("/purchaseInvoice")
+	@RequestMapping("/purchaseInvoice/{id}")
 	@ResponseBody
-	public PurchaseInvoiceSimpleInfo getPurchaseInvoice(Long id) {
+	public PurchaseInvoiceSimpleInfo getPurchaseInvoice(@PathVariable Long id) {
 		return innerOrderSearchService.getPurchaseInvoice(id);
 	}
 
-	@RequestMapping("/purchaseInvoiceDetail")
-	@ResponseBody
-	public PurchaseInvoiceDetailSimpleInfo getPurchaseDetailInvoice(Long id) {
-		return innerOrderSearchService.getPurchaseInvoiceDetail(id);
-	}
 }

+ 22 - 22
search-console/src/main/java/com/uas/search/console/controller/SearchController.java

@@ -38,42 +38,42 @@ public class SearchController {
 	private InnerSearchService innerSearchService = ContextUtils.getApplicationContext().getBean("searchServiceImpl",
 			InnerSearchService.class);
 
-	@RequestMapping("/kindIds")
+	@RequestMapping("/kindIds/{keyword}")
 	@ResponseBody
-	public List<Long> seachKindIds(String keyword) {
+	public List<Long> seachKindIds(@PathVariable String keyword) {
 		return searchService.getKindIds(keyword);
 	}
 
-	@RequestMapping("/kinds")
+	@RequestMapping("/kinds/{keyword}")
 	@ResponseBody
-	public List<Map<String, Object>> seachKinds(String keyword) {
+	public List<Map<String, Object>> seachKinds(@PathVariable String keyword) {
 		return searchService.getKinds(keyword);
 	}
 
-	@RequestMapping("/brandIds")
+	@RequestMapping("/brandIds/{keyword}")
 	@ResponseBody
-	public List<Long> searchBrandIds(String keyword) {
+	public List<Long> searchBrandIds(@PathVariable String keyword) {
 		return searchService.getBrandIds(keyword);
 	}
 
-	@RequestMapping("/brands")
+	@RequestMapping("/brands/{keyword}")
 	@ResponseBody
-	public List<Map<String, Object>> searchBrand(String keyword) {
+	public List<Map<String, Object>> searchBrand(@PathVariable String keyword) {
 		return searchService.getBrands(keyword);
 	}
 
-	@RequestMapping("/componentIds")
+	@RequestMapping("/componentIds/{keyword}")
 	@ResponseBody
-	public Map<String, Object> searchComponentIds(String keyword) {
+	public Map<String, Object> searchComponentIds(@PathVariable String keyword) {
 		return searchService.getComponentIds(keyword, new PageParams());
 	}
 
 	@Autowired
 	private ComponentSimpleInfoDao componentDao;
 
-	@RequestMapping("/components")
+	@RequestMapping("/components/{keyword}")
 	@ResponseBody
-	public List<ComponentSimpleInfo> searchComponents(String keyword) {
+	public List<ComponentSimpleInfo> searchComponents(@PathVariable String keyword) {
 		PageParams pageParams = new PageParams();
 		Map<String, Object> filters = new HashMap<>();
 		// filters.put("pr_329", "HRC");
@@ -117,33 +117,33 @@ public class SearchController {
 		return searchService.getBrandsBySearchComponent(keyword, kindId);
 	}
 
-	@RequestMapping("/similarKeywords")
+	@RequestMapping("/similarKeywords/{keyword}")
 	@ResponseBody
-	public List<String> getSimilarKeywords(String keyword) {
+	public List<String> getSimilarKeywords(@PathVariable String keyword) {
 		return searchService.getSimilarKeywords(keyword);
 	}
 
-	@RequestMapping("/similarComponents")
+	@RequestMapping("/similarComponents/{componentCode}")
 	@ResponseBody
-	public List<Map<String, Object>> getSimilarComponents(String componentCode) {
+	public List<Map<String, Object>> getSimilarComponents(@PathVariable String componentCode) {
 		return searchService.getSimilarComponents(componentCode);
 	}
 
-	@RequestMapping("/similarBrands")
+	@RequestMapping("/similarBrands/{brandName}")
 	@ResponseBody
-	public List<Map<String, Object>> getSimilarBrands(String brandName) {
+	public List<Map<String, Object>> getSimilarBrands(@PathVariable String brandName) {
 		return searchService.getSimilarBrands(brandName);
 	}
 
-	@RequestMapping("/similarKinds")
+	@RequestMapping("/similarKinds/{kindName}")
 	@ResponseBody
-	public List<Map<String, Object>> getSimilarKinds(String kindName) {
+	public List<Map<String, Object>> getSimilarKinds(@PathVariable String kindName) {
 		return searchService.getSimilarKinds(kindName);
 	}
 
-	@RequestMapping("/similarLeafKinds")
+	@RequestMapping("/similarLeafKinds/{kindName}")
 	@ResponseBody
-	public List<Map<String, Object>> getSimilarLeafKinds(String kindName) {
+	public List<Map<String, Object>> getSimilarLeafKinds(@PathVariable String kindName) {
 		return searchService.getSimilarLeafKinds(kindName);
 	}
 

+ 0 - 23
search-console/src/main/java/com/uas/search/console/dao/OrderDetailSimpleInfoDao.java

@@ -1,23 +0,0 @@
-package com.uas.search.console.dao;
-
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
-import org.springframework.stereotype.Repository;
-
-import com.uas.search.console.model.OrderDetailSimpleInfo;
-
-/**
- * @author sunyj
- * @since 2016年10月14日 上午11:58:50
- */
-@Repository
-public interface OrderDetailSimpleInfoDao
-		extends JpaSpecificationExecutor<OrderDetailSimpleInfo>, JpaRepository<OrderDetailSimpleInfo, Long> {
-	/**
-	 * 根据id获取销售明细
-	 * 
-	 * @param id
-	 * @return
-	 */
-	public OrderDetailSimpleInfo findById(Long id);
-}

+ 0 - 23
search-console/src/main/java/com/uas/search/console/dao/OrderInvoiceDetailSimpleInfoDao.java

@@ -1,23 +0,0 @@
-package com.uas.search.console.dao;
-
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
-import org.springframework.stereotype.Repository;
-
-import com.uas.search.console.model.OrderInvoiceDetailSimpleInfo;
-
-/**
- * @author sunyj
- * @since 2016年10月14日 上午11:58:50
- */
-@Repository
-public interface OrderInvoiceDetailSimpleInfoDao extends JpaSpecificationExecutor<OrderInvoiceDetailSimpleInfo>,
-		JpaRepository<OrderInvoiceDetailSimpleInfo, Long> {
-	/**
-	 * 根据id获取销售发货单明细
-	 * 
-	 * @param id
-	 * @return
-	 */
-	public OrderInvoiceDetailSimpleInfo findById(Long id);
-}

+ 0 - 23
search-console/src/main/java/com/uas/search/console/dao/PurchaseDetailSimpleInfoDao.java

@@ -1,23 +0,0 @@
-package com.uas.search.console.dao;
-
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
-import org.springframework.stereotype.Repository;
-
-import com.uas.search.console.model.PurchaseDetailSimpleInfo;
-
-/**
- * @author sunyj
- * @since 2016年10月14日 上午11:58:50
- */
-@Repository
-public interface PurchaseDetailSimpleInfoDao
-		extends JpaSpecificationExecutor<PurchaseDetailSimpleInfo>, JpaRepository<PurchaseDetailSimpleInfo, Long> {
-	/**
-	 * 根据id获取采购单明细
-	 * 
-	 * @param id
-	 * @return
-	 */
-	public PurchaseDetailSimpleInfo findById(Long id);
-}

+ 0 - 23
search-console/src/main/java/com/uas/search/console/dao/PurchaseInvoiceDetailSimpleInfoDao.java

@@ -1,23 +0,0 @@
-package com.uas.search.console.dao;
-
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
-import org.springframework.stereotype.Repository;
-
-import com.uas.search.console.model.PurchaseInvoiceDetailSimpleInfo;
-
-/**
- * @author sunyj
- * @since 2016年10月14日 上午11:58:50
- */
-@Repository
-public interface PurchaseInvoiceDetailSimpleInfoDao extends JpaSpecificationExecutor<PurchaseInvoiceDetailSimpleInfo>,
-		JpaRepository<PurchaseInvoiceDetailSimpleInfo, Long> {
-	/**
-	 * 根据id获取采购发货单明细
-	 * 
-	 * @param id
-	 * @return
-	 */
-	public PurchaseInvoiceDetailSimpleInfo findById(Long id);
-}

+ 6 - 182
search-console/src/main/java/com/uas/search/console/jms/QueueMessageParser.java

@@ -10,24 +10,16 @@ import com.uas.search.console.core.util.ContextUtils;
 import com.uas.search.console.dao.BrandSimpleInfoDao;
 import com.uas.search.console.dao.ComponentSimpleInfoDao;
 import com.uas.search.console.dao.KindSimpleInfoDao;
-import com.uas.search.console.dao.OrderDetailSimpleInfoDao;
-import com.uas.search.console.dao.OrderInvoiceDetailSimpleInfoDao;
 import com.uas.search.console.dao.OrderInvoiceSimpleInfoDao;
 import com.uas.search.console.dao.OrderSimpleInfoDao;
-import com.uas.search.console.dao.PurchaseDetailSimpleInfoDao;
-import com.uas.search.console.dao.PurchaseInvoiceDetailSimpleInfoDao;
 import com.uas.search.console.dao.PurchaseInvoiceSimpleInfoDao;
 import com.uas.search.console.dao.PurchaseSimpleInfoDao;
 import com.uas.search.console.model.BrandSimpleInfo;
 import com.uas.search.console.model.ComponentSimpleInfo;
 import com.uas.search.console.model.KindSimpleInfo;
-import com.uas.search.console.model.OrderDetailSimpleInfo;
-import com.uas.search.console.model.OrderInvoiceDetailSimpleInfo;
 import com.uas.search.console.model.OrderInvoiceSimpleInfo;
 import com.uas.search.console.model.OrderSimpleInfo;
 import com.uas.search.console.model.ParsedQueueMessage;
-import com.uas.search.console.model.PurchaseDetailSimpleInfo;
-import com.uas.search.console.model.PurchaseInvoiceDetailSimpleInfo;
 import com.uas.search.console.model.PurchaseInvoiceSimpleInfo;
 import com.uas.search.console.model.PurchaseSimpleInfo;
 import com.uas.search.console.service.InnerOrderSearchService;
@@ -55,27 +47,15 @@ public class QueueMessageParser {
 	@Autowired
 	private OrderSimpleInfoDao orderDao;
 
-	@Autowired
-	private OrderDetailSimpleInfoDao orderDetailDao;
-
 	@Autowired
 	private OrderInvoiceSimpleInfoDao orderInvoiceDao;
 
-	@Autowired
-	private OrderInvoiceDetailSimpleInfoDao orderInvoiceDetailDao;
-
 	@Autowired
 	private PurchaseSimpleInfoDao purchaseDao;
 
-	@Autowired
-	private PurchaseDetailSimpleInfoDao purchaseDetailDao;
-
 	@Autowired
 	private PurchaseInvoiceSimpleInfoDao purchaseInvoiceDao;
 
-	@Autowired
-	private PurchaseInvoiceDetailSimpleInfoDao purchaseInvoiceDetailDao;
-
 	private InnerSearchService innerSearchService = ContextUtils.getApplicationContext().getBean("searchServiceImpl",
 			InnerSearchService.class);
 
@@ -124,20 +104,12 @@ public class QueueMessageParser {
 			objects = parseComponent(jsonObject);
 		} else if (table.equals(SearchConstants.ORDER_TABLE_NAME)) {
 			objects = parseOrder(jsonObject);
-		} else if (table.equals(SearchConstants.ORDER_DETAIL_TABLE_NAME)) {
-			objects = parseOrderDetail(jsonObject);
 		} else if (table.equals(SearchConstants.ORDER_INVOICE_TABLE_NAME)) {
 			objects = parseOrderInvoice(jsonObject);
-		} else if (table.equals(SearchConstants.ORDER_INVOICE_DETAIL_TABLE_NAME)) {
-			objects = parseOrderInvoiceDetail(jsonObject);
 		} else if (table.equals(SearchConstants.PURCHASE_TABLE_NAME)) {
 			objects = parsePurchase(jsonObject);
-		} else if (table.equals(SearchConstants.PURCHASE_DETAIL_TABLE_NAME)) {
-			objects = parsePurchaseDetail(jsonObject);
 		} else if (table.equals(SearchConstants.PURCHASE_INVOICE_TABLE_NAME)) {
 			objects = parsePurchaseInvoice(jsonObject);
-		} else if (table.equals(SearchConstants.PURCHASE_INVOICE_DETAIL_TABLE_NAME)) {
-			objects = parsePurchaseInvoiceDetail(jsonObject);
 		} else {
 			return null;
 		}
@@ -273,8 +245,12 @@ public class QueueMessageParser {
 			Long id = Long.parseLong(ids[i].toString());
 			OrderSimpleInfo order = orderDao.findById(id);
 			OrderSimpleInfo localOrder = innerOrderSearchService.getOrder(id);
+			System.out.println(order);
+			System.out.println(localOrder);
 			// 删除操作
 			if (jsonObject.getString("method").equals("delete")) {
+				System.out.println("localOrder == null || localOrder.equals(order) " + localOrder == null
+						|| localOrder.equals(order));
 				if (order != null) {
 					// 删除之后,数据还存在,并且与本地索引数据一样,说明是进行了回退,或者重新插入了相同的数据,不对索引进行更新
 					if (localOrder == null || localOrder.equals(order)) {
@@ -286,6 +262,8 @@ public class QueueMessageParser {
 			}
 			// 更新或者插入操作
 			else {
+				System.out.println("localOrder != null && localOrder.equals(order) " + localOrder != null
+						&& localOrder.equals(order));
 				// 本地有相同的数据,不更新索引
 				if (localOrder != null && localOrder.equals(order)) {
 					order = null;
@@ -296,44 +274,6 @@ public class QueueMessageParser {
 		return orders;
 	}
 
-	/**
-	 * 对销售单明细进行解析
-	 * 
-	 * @param jsonObject
-	 * @return 销售单对象数组
-	 * @throws JSONException
-	 */
-	// {"method":"insert","table":"trade$order_detail","ids":[124]}
-	private OrderDetailSimpleInfo[] parseOrderDetail(JSONObject jsonObject) throws JSONException {
-		Object[] ids = jsonObject.getJSONArray("ids").toArray();
-		OrderDetailSimpleInfo[] orderDetails = new OrderDetailSimpleInfo[ids.length];
-		for (int i = 0; i < ids.length; i++) {
-			Long id = Long.parseLong(ids[i].toString());
-			OrderDetailSimpleInfo orderDetail = orderDetailDao.findById(id);
-			OrderDetailSimpleInfo localOrderDetail = innerOrderSearchService.getOrderDetail(id);
-			// 删除操作
-			if (jsonObject.getString("method").equals("delete")) {
-				if (orderDetail != null) {
-					// 删除之后,数据还存在,并且与本地索引数据一样,说明是进行了回退,或者重新插入了相同的数据,不对索引进行更新
-					if (localOrderDetail == null || localOrderDetail.equals(orderDetail)) {
-						orderDetail = null;
-					}
-				} else {
-					orderDetail = localOrderDetail;
-				}
-			}
-			// 更新或者插入操作
-			else {
-				// 本地有相同的数据,不更新索引
-				if (localOrderDetail != null && localOrderDetail.equals(orderDetail)) {
-					orderDetail = null;
-				}
-			}
-			orderDetails[i] = orderDetail;
-		}
-		return orderDetails;
-	}
-
 	/**
 	 * 对销售发货单进行解析
 	 * 
@@ -372,44 +312,6 @@ public class QueueMessageParser {
 		return orderInvoices;
 	}
 
-	/**
-	 * 对销售发货单明细进行解析
-	 * 
-	 * @param jsonObject
-	 * @return 销售发货单明细对象数组
-	 * @throws JSONException
-	 */
-	// {"method":"insert","table":"trade$invoice_fmor_dt","ids":[124]}
-	private OrderInvoiceDetailSimpleInfo[] parseOrderInvoiceDetail(JSONObject jsonObject) throws JSONException {
-		Object[] ids = jsonObject.getJSONArray("ids").toArray();
-		OrderInvoiceDetailSimpleInfo[] orderInvoiceDetails = new OrderInvoiceDetailSimpleInfo[ids.length];
-		for (int i = 0; i < ids.length; i++) {
-			Long id = Long.parseLong(ids[i].toString());
-			OrderInvoiceDetailSimpleInfo orderInvoiceDetail = orderInvoiceDetailDao.findById(id);
-			OrderInvoiceDetailSimpleInfo localOrderInvoiceDetail = innerOrderSearchService.getOrderInvoiceDetail(id);
-			// 删除操作
-			if (jsonObject.getString("method").equals("delete")) {
-				if (orderInvoiceDetail != null) {
-					// 删除之后,数据还存在,并且与本地索引数据一样,说明是进行了回退,或者重新插入了相同的数据,不对索引进行更新
-					if (localOrderInvoiceDetail == null || localOrderInvoiceDetail.equals(orderInvoiceDetail)) {
-						orderInvoiceDetail = null;
-					}
-				} else {
-					orderInvoiceDetail = localOrderInvoiceDetail;
-				}
-			}
-			// 更新或者插入操作
-			else {
-				// 本地有相同的数据,不更新索引
-				if (localOrderInvoiceDetail != null && localOrderInvoiceDetail.equals(orderInvoiceDetail)) {
-					orderInvoiceDetail = null;
-				}
-			}
-			orderInvoiceDetails[i] = orderInvoiceDetail;
-		}
-		return orderInvoiceDetails;
-	}
-
 	/**
 	 * 对采购单进行解析
 	 * 
@@ -448,44 +350,6 @@ public class QueueMessageParser {
 		return purchases;
 	}
 
-	/**
-	 * 对采购单明细进行解析
-	 * 
-	 * @param jsonObject
-	 * @return 采购单对象数组
-	 * @throws JSONException
-	 */
-	// {"method":"insert","table":"trade$purchase_detail","ids":[124]}
-	private PurchaseDetailSimpleInfo[] parsePurchaseDetail(JSONObject jsonObject) throws JSONException {
-		Object[] ids = jsonObject.getJSONArray("ids").toArray();
-		PurchaseDetailSimpleInfo[] purchaseDetails = new PurchaseDetailSimpleInfo[ids.length];
-		for (int i = 0; i < ids.length; i++) {
-			Long id = Long.parseLong(ids[i].toString());
-			PurchaseDetailSimpleInfo purchaseDetail = purchaseDetailDao.findById(id);
-			PurchaseDetailSimpleInfo localPurchaseDetail = innerOrderSearchService.getPurchaseDetail(id);
-			// 删除操作
-			if (jsonObject.getString("method").equals("delete")) {
-				if (purchaseDetail != null) {
-					// 删除之后,数据还存在,并且与本地索引数据一样,说明是进行了回退,或者重新插入了相同的数据,不对索引进行更新
-					if (localPurchaseDetail == null || localPurchaseDetail.equals(purchaseDetail)) {
-						purchaseDetail = null;
-					}
-				} else {
-					purchaseDetail = localPurchaseDetail;
-				}
-			}
-			// 更新或者插入操作
-			else {
-				// 本地有相同的数据,不更新索引
-				if (localPurchaseDetail != null && localPurchaseDetail.equals(purchaseDetail)) {
-					purchaseDetail = null;
-				}
-			}
-			purchaseDetails[i] = purchaseDetail;
-		}
-		return purchaseDetails;
-	}
-
 	/**
 	 * 对采购发货单进行解析
 	 * 
@@ -524,44 +388,4 @@ public class QueueMessageParser {
 		return purchaseInvoices;
 	}
 
-	/**
-	 * 对采购发货单明细进行解析
-	 * 
-	 * @param jsonObject
-	 * @return 采购发货单明细对象数组
-	 * @throws JSONException
-	 */
-	// {"method":"insert","table":"trade$invoice_fmpu_dt","ids":[124]}
-	private PurchaseInvoiceDetailSimpleInfo[] parsePurchaseInvoiceDetail(JSONObject jsonObject) throws JSONException {
-		Object[] ids = jsonObject.getJSONArray("ids").toArray();
-		PurchaseInvoiceDetailSimpleInfo[] purchaseInvoiceDetails = new PurchaseInvoiceDetailSimpleInfo[ids.length];
-		for (int i = 0; i < ids.length; i++) {
-			Long id = Long.parseLong(ids[i].toString());
-			PurchaseInvoiceDetailSimpleInfo purchaseInvoiceDetail = purchaseInvoiceDetailDao.findById(id);
-			PurchaseInvoiceDetailSimpleInfo localPurchaseInvoiceDetail = innerOrderSearchService
-					.getPurchaseInvoiceDetail(id);
-			// 删除操作
-			if (jsonObject.getString("method").equals("delete")) {
-				if (purchaseInvoiceDetail != null) {
-					// 删除之后,数据还存在,并且与本地索引数据一样,说明是进行了回退,或者重新插入了相同的数据,不对索引进行更新
-					if (localPurchaseInvoiceDetail == null
-							|| localPurchaseInvoiceDetail.equals(purchaseInvoiceDetail)) {
-						purchaseInvoiceDetail = null;
-					}
-				} else {
-					purchaseInvoiceDetail = localPurchaseInvoiceDetail;
-				}
-			}
-			// 更新或者插入操作
-			else {
-				// 本地有相同的数据,不更新索引
-				if (localPurchaseInvoiceDetail != null && localPurchaseInvoiceDetail.equals(purchaseInvoiceDetail)) {
-					purchaseInvoiceDetail = null;
-				}
-			}
-			purchaseInvoiceDetails[i] = purchaseInvoiceDetail;
-		}
-		return purchaseInvoiceDetails;
-	}
-
 }

+ 73 - 0
search-console/src/main/java/com/uas/search/console/model/BaseOrderDetailSimpleInfo.java

@@ -0,0 +1,73 @@
+package com.uas.search.console.model;
+
+/**
+ * 单据明细基类
+ * 
+ * @author sunyj
+ * @since 2016年10月31日 上午11:30:35
+ */
+public class BaseOrderDetailSimpleInfo {
+	private Long id;
+	private String code;
+	private Short detno;
+	private String cmpCode;
+	private String kiName;
+	private String brName;
+	private Integer status;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	public Short getDetno() {
+		return detno;
+	}
+
+	public void setDetno(Short detno) {
+		this.detno = detno;
+	}
+
+	public String getCmpCode() {
+		return cmpCode;
+	}
+
+	public void setCmpCode(String cmpCode) {
+		this.cmpCode = cmpCode;
+	}
+
+	public String getKiName() {
+		return kiName;
+	}
+
+	public void setKiName(String kiName) {
+		this.kiName = kiName;
+	}
+
+	public String getBrName() {
+		return brName;
+	}
+
+	public void setBrName(String brName) {
+		this.brName = brName;
+	}
+
+	public Integer getStatus() {
+		return status;
+	}
+
+	public void setStatus(Integer status) {
+		this.status = status;
+	}
+}

+ 3 - 3
search-console/src/main/java/com/uas/search/console/model/ComponentSimpleInfo.java

@@ -66,7 +66,7 @@ public class ComponentSimpleInfo implements Serializable {
 	@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER)
 	@JoinColumn(name = "pv_componentid", updatable = false, insertable = false)
 	@OrderBy("detno")
-	private Set<PropertyValue> properties;
+	private Set<PropertyValueSimpleInfo> properties;
 
 	public Long getId() {
 		return id;
@@ -108,11 +108,11 @@ public class ComponentSimpleInfo implements Serializable {
 		this.brandid = brandid;
 	}
 
-	public Set<PropertyValue> getProperties() {
+	public Set<PropertyValueSimpleInfo> getProperties() {
 		return properties;
 	}
 
-	public void setProperties(Set<PropertyValue> properties) {
+	public void setProperties(Set<PropertyValueSimpleInfo> properties) {
 		this.properties = properties;
 	}
 

+ 9 - 24
search-console/src/main/java/com/uas/search/console/model/OrderDetailSimpleInfo.java

@@ -21,12 +21,6 @@ public class OrderDetailSimpleInfo {
 	@Column(name = "id")
 	private Long id;
 
-	/**
-	 * 销售单id,对应数据库trade$order表中id字段,而非or_id字段
-	 */
-	@Column(name = "order_id")
-	private Long orderid;
-
 	/**
 	 * 明细序号
 	 */
@@ -71,12 +65,12 @@ public class OrderDetailSimpleInfo {
 		this.id = id;
 	}
 
-	public Long getOrderid() {
-		return orderid;
+	public String getCode() {
+		return code;
 	}
 
-	public void setOrderid(Long orderid) {
-		this.orderid = orderid;
+	public void setCode(String code) {
+		this.code = code;
 	}
 
 	public Short getDetno() {
@@ -87,14 +81,6 @@ public class OrderDetailSimpleInfo {
 		this.detno = detno;
 	}
 
-	public String getCode() {
-		return code;
-	}
-
-	public void setCode(String code) {
-		this.code = code;
-	}
-
 	public String getCmpCode() {
 		return cmpCode;
 	}
@@ -137,15 +123,14 @@ public class OrderDetailSimpleInfo {
 		}
 		OrderDetailSimpleInfo other = (OrderDetailSimpleInfo) otherObject;
 		return Objects.equals(id, other.getId()) && Objects.equals(code, other.getCode())
-				&& Objects.equals(orderid, other.getOrderid()) && Objects.equals(detno, other.getDetno())
-				&& Objects.equals(cmpCode, other.getCmpCode()) && Objects.equals(kiName, other.getKiName())
-				&& Objects.equals(brName, other.getBrName()) && Objects.equals(status, other.getStatus());
+				&& Objects.equals(detno, other.getDetno()) && Objects.equals(cmpCode, other.getCmpCode())
+				&& Objects.equals(kiName, other.getKiName()) && Objects.equals(brName, other.getBrName())
+				&& Objects.equals(status, other.getStatus());
 	}
 
 	@Override
 	public String toString() {
-		return "OrderDetailSimpleInfo [id=" + id + ", orderid=" + orderid + ", detno=" + detno + ", code=" + code
-				+ ", cmpCode=" + cmpCode + ", kiName=" + kiName + ", brName=" + brName + ", status=" + status + "]";
+		return "OrderDetailSimpleInfo [id=" + id + ", detno=" + detno + ", code=" + code + ", cmpCode=" + cmpCode
+				+ ", kiName=" + kiName + ", brName=" + brName + ", status=" + status + "]";
 	}
-
 }

+ 9 - 25
search-console/src/main/java/com/uas/search/console/model/OrderInvoiceDetailSimpleInfo.java

@@ -21,12 +21,6 @@ public class OrderInvoiceDetailSimpleInfo {
 	@Column(name = "id")
 	private Long id;
 
-	/**
-	 * 发货单id,对应数据库trade$invoice_fmor表中id字段,而非in_id字段
-	 */
-	@Column(name = "invoice_id")
-	private Long invoiceid;
-
 	/**
 	 * 明细序号 detail NO.
 	 */
@@ -71,12 +65,12 @@ public class OrderInvoiceDetailSimpleInfo {
 		this.id = id;
 	}
 
-	public Long getInvoiceid() {
-		return invoiceid;
+	public String getCode() {
+		return code;
 	}
 
-	public void setInvoiceid(Long invoiceid) {
-		this.invoiceid = invoiceid;
+	public void setCode(String code) {
+		this.code = code;
 	}
 
 	public Short getDetno() {
@@ -87,14 +81,6 @@ public class OrderInvoiceDetailSimpleInfo {
 		this.detno = detno;
 	}
 
-	public String getCode() {
-		return code;
-	}
-
-	public void setCode(String code) {
-		this.code = code;
-	}
-
 	public String getCmpCode() {
 		return cmpCode;
 	}
@@ -137,16 +123,14 @@ public class OrderInvoiceDetailSimpleInfo {
 		}
 		OrderInvoiceDetailSimpleInfo other = (OrderInvoiceDetailSimpleInfo) otherObject;
 		return Objects.equals(id, other.getId()) && Objects.equals(code, other.getCode())
-				&& Objects.equals(invoiceid, other.getInvoiceid()) && Objects.equals(detno, other.getDetno())
-				&& Objects.equals(cmpCode, other.getCmpCode()) && Objects.equals(kiName, other.getKiName())
-				&& Objects.equals(brName, other.getBrName()) && Objects.equals(status, other.getStatus());
+				&& Objects.equals(detno, other.getDetno()) && Objects.equals(cmpCode, other.getCmpCode())
+				&& Objects.equals(kiName, other.getKiName()) && Objects.equals(brName, other.getBrName())
+				&& Objects.equals(status, other.getStatus());
 	}
 
 	@Override
 	public String toString() {
-		return "OrderInvoiceDetailSimpleInfo [id=" + id + ", invoiceid=" + invoiceid + ", detno=" + detno + ", code="
-				+ code + ", cmpCode=" + cmpCode + ", kiName=" + kiName + ", brName=" + brName + ", status=" + status
-				+ "]";
+		return "OrderInvoiceDetailSimpleInfo [id=" + id + ", detno=" + detno + ", code=" + code + ", cmpCode=" + cmpCode
+				+ ", kiName=" + kiName + ", brName=" + brName + ", status=" + status + "]";
 	}
-
 }

+ 24 - 2
search-console/src/main/java/com/uas/search/console/model/OrderInvoiceSimpleInfo.java

@@ -3,12 +3,17 @@ package com.uas.search.console.model;
 import java.io.Serializable;
 import java.util.Date;
 import java.util.Objects;
+import java.util.Set;
 
+import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
+import javax.persistence.FetchType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
 import javax.persistence.OneToOne;
+import javax.persistence.OrderBy;
 import javax.persistence.Table;
 
 /**
@@ -70,6 +75,14 @@ public class OrderInvoiceSimpleInfo implements Serializable {
 	@Column(name = "in_status")
 	private Integer status;
 
+	/**
+	 * 发货单明细
+	 */
+	@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER)
+	@JoinColumn(name = "invoice_id", updatable = false, insertable = false)
+	@OrderBy("detno")
+	private Set<OrderInvoiceDetailSimpleInfo> details;
+
 	public Long getId() {
 		return id;
 	}
@@ -126,6 +139,14 @@ public class OrderInvoiceSimpleInfo implements Serializable {
 		this.status = status;
 	}
 
+	public Set<OrderInvoiceDetailSimpleInfo> getDetails() {
+		return details;
+	}
+
+	public void setDetails(Set<OrderInvoiceDetailSimpleInfo> details) {
+		this.details = details;
+	}
+
 	public boolean equals(Object otherObject) {
 		if (this == otherObject) {
 			return true;
@@ -138,14 +159,15 @@ public class OrderInvoiceSimpleInfo implements Serializable {
 		return Objects.equals(id, other.getId()) && Objects.equals(code, other.getCode())
 				&& Objects.equals(buyeruu, other.getBuyeruu()) && Objects.equals(buyername, other.getBuyername())
 				&& Objects.equals(buyerEnterprise, other.getBuyerEnterprise())
-				&& Objects.equals(createtime, other.getCreatetime()) && Objects.equals(status, other.getStatus());
+				&& Objects.equals(createtime, other.getCreatetime()) && Objects.equals(status, other.getStatus())
+				&& Objects.equals(details, other.getDetails());
 	}
 
 	@Override
 	public String toString() {
 		return "OrderInvoiceSimpleInfo [id=" + id + ", code=" + code + ", buyeruu=" + buyeruu + ", buyername="
 				+ buyername + ", buyerEnterprise=" + buyerEnterprise + ", createtime=" + createtime + ", status="
-				+ status + "]";
+				+ status + ", details=" + details + "]";
 	}
 
 }

+ 24 - 2
search-console/src/main/java/com/uas/search/console/model/OrderSimpleInfo.java

@@ -3,12 +3,17 @@ package com.uas.search.console.model;
 import java.io.Serializable;
 import java.util.Date;
 import java.util.Objects;
+import java.util.Set;
 
+import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
+import javax.persistence.FetchType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
 import javax.persistence.OneToOne;
+import javax.persistence.OrderBy;
 import javax.persistence.Table;
 
 /**
@@ -82,6 +87,14 @@ public class OrderSimpleInfo implements Serializable {
 	@Column(name = "or_status")
 	private Integer status;
 
+	/**
+	 * 订单明细
+	 */
+	@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER)
+	@JoinColumn(name = "order_id", updatable = false, insertable = false)
+	@OrderBy("detno")
+	private Set<OrderDetailSimpleInfo> details;
+
 	public Long getId() {
 		return id;
 	}
@@ -146,6 +159,14 @@ public class OrderSimpleInfo implements Serializable {
 		this.status = status;
 	}
 
+	public Set<OrderDetailSimpleInfo> getDetails() {
+		return details;
+	}
+
+	public void setDetails(Set<OrderDetailSimpleInfo> details) {
+		this.details = details;
+	}
+
 	public boolean equals(Object otherObject) {
 		if (this == otherObject) {
 			return true;
@@ -158,14 +179,15 @@ public class OrderSimpleInfo implements Serializable {
 				&& Objects.equals(buyeruu, other.getBuyeruu()) && Objects.equals(buyername, other.getBuyername())
 				&& Objects.equals(buyerEnterprise, other.getBuyerEnterprise())
 				&& Objects.equals(sellerEnterprise, other.getSellerEnterprise())
-				&& Objects.equals(createtime, other.getCreatetime()) && Objects.equals(status, other.getStatus());
+				&& Objects.equals(createtime, other.getCreatetime()) && Objects.equals(status, other.getStatus())
+				&& Objects.equals(details, other.getDetails());
 	}
 
 	@Override
 	public String toString() {
 		return "OrderSimpleInfo [id=" + id + ", code=" + code + ", buyeruu=" + buyeruu + ", buyername=" + buyername
 				+ ", buyerEnterprise=" + buyerEnterprise + ", sellerEnterprise=" + sellerEnterprise + ", createtime="
-				+ createtime + ", status=" + status + "]";
+				+ createtime + ", status=" + status + ", details=" + details + "]";
 	}
 
 }

+ 1 - 1
search-console/src/main/java/com/uas/search/console/model/Property.java → search-console/src/main/java/com/uas/search/console/model/PropertySimpleInfo.java

@@ -15,7 +15,7 @@ import javax.persistence.Table;
  */
 @Entity
 @Table(name = "product$property")
-public class Property implements Serializable {
+public class PropertySimpleInfo implements Serializable {
 
 	/**
 	 * 序列号

+ 5 - 4
search-console/src/main/java/com/uas/search/console/model/PropertyValue.java → search-console/src/main/java/com/uas/search/console/model/PropertyValueSimpleInfo.java

@@ -18,7 +18,7 @@ import javax.persistence.Table;
  */
 @Entity
 @Table(name = "product$propertyvalue")
-public class PropertyValue implements Serializable {
+public class PropertyValueSimpleInfo implements Serializable {
 
 	/**
 	 * 序列号
@@ -47,9 +47,10 @@ public class PropertyValue implements Serializable {
 	/**
 	 * 属性
 	 */
+	// TODO 索引未用到,确认无用后删除
 	@OneToOne(cascade = { CascadeType.REFRESH })
 	@JoinColumn(name = "pv_propertyid", insertable = false, updatable = false)
-	private Property property;
+	private PropertySimpleInfo property;
 
 	/**
 	 * 排序 TODO jpa使用,之后换为jdbc后,需要删除
@@ -79,11 +80,11 @@ public class PropertyValue implements Serializable {
 		this.componentid = componentid;
 	}
 
-	public Property getProperty() {
+	public PropertySimpleInfo getProperty() {
 		return property;
 	}
 
-	public void setProperty(Property property) {
+	public void setProperty(PropertySimpleInfo property) {
 		this.property = property;
 	}
 

+ 9 - 25
search-console/src/main/java/com/uas/search/console/model/PurchaseDetailSimpleInfo.java

@@ -21,12 +21,6 @@ public class PurchaseDetailSimpleInfo {
 	@Column(name = "id")
 	private Long id;
 
-	/**
-	 * 采购单id,对应数据库trade$purchase表中id字段,而非pu_id字段
-	 */
-	@Column(name = "purchase_id")
-	private Long purchaseid;
-
 	/**
 	 * 明细序号 detailNO
 	 */
@@ -71,12 +65,12 @@ public class PurchaseDetailSimpleInfo {
 		this.id = id;
 	}
 
-	public Long getPurchaseid() {
-		return purchaseid;
+	public String getCode() {
+		return code;
 	}
 
-	public void setPurchaseid(Long purchaseid) {
-		this.purchaseid = purchaseid;
+	public void setCode(String code) {
+		this.code = code;
 	}
 
 	public Short getDetno() {
@@ -87,14 +81,6 @@ public class PurchaseDetailSimpleInfo {
 		this.detno = detno;
 	}
 
-	public String getCode() {
-		return code;
-	}
-
-	public void setCode(String code) {
-		this.code = code;
-	}
-
 	public String getCmpCode() {
 		return cmpCode;
 	}
@@ -137,16 +123,14 @@ public class PurchaseDetailSimpleInfo {
 		}
 		PurchaseDetailSimpleInfo other = (PurchaseDetailSimpleInfo) otherObject;
 		return Objects.equals(id, other.getId()) && Objects.equals(code, other.getCode())
-				&& Objects.equals(purchaseid, other.getPurchaseid()) && Objects.equals(detno, other.getDetno())
-				&& Objects.equals(cmpCode, other.getCmpCode()) && Objects.equals(kiName, other.getKiName())
-				&& Objects.equals(brName, other.getBrName()) && Objects.equals(status, other.getStatus());
+				&& Objects.equals(detno, other.getDetno()) && Objects.equals(cmpCode, other.getCmpCode())
+				&& Objects.equals(kiName, other.getKiName()) && Objects.equals(brName, other.getBrName())
+				&& Objects.equals(status, other.getStatus());
 	}
 
 	@Override
 	public String toString() {
-		return "PurchaseDetailSimpleInfo [id=" + id + ", purchaseid=" + purchaseid + ", detno=" + detno + ", code="
-				+ code + ", cmpCode=" + cmpCode + ", kiName=" + kiName + ", brName=" + brName + ", status=" + status
-				+ "]";
+		return "PurchaseDetailSimpleInfo [id=" + id + ", detno=" + detno + ", code=" + code + ", cmpCode=" + cmpCode
+				+ ", kiName=" + kiName + ", brName=" + brName + ", status=" + status + "]";
 	}
-
 }

+ 9 - 25
search-console/src/main/java/com/uas/search/console/model/PurchaseInvoiceDetailSimpleInfo.java

@@ -21,12 +21,6 @@ public class PurchaseInvoiceDetailSimpleInfo {
 	@Column(name = "id")
 	private Long id;
 
-	/**
-	 * 发货单id,对应数据库trade$invoice_fmpu表中id字段,而非pu_id字段
-	 */
-	@Column(name = "invoice_id")
-	private Long invoiceid;
-
 	/**
 	 * 明细序号 detail NO.(保存ERP的序号)
 	 */
@@ -71,12 +65,12 @@ public class PurchaseInvoiceDetailSimpleInfo {
 		this.id = id;
 	}
 
-	public Long getInvoiceid() {
-		return invoiceid;
+	public String getCode() {
+		return code;
 	}
 
-	public void setInvoiceid(Long invoiceid) {
-		this.invoiceid = invoiceid;
+	public void setCode(String code) {
+		this.code = code;
 	}
 
 	public Short getDetno() {
@@ -87,14 +81,6 @@ public class PurchaseInvoiceDetailSimpleInfo {
 		this.detno = detno;
 	}
 
-	public String getCode() {
-		return code;
-	}
-
-	public void setCode(String code) {
-		this.code = code;
-	}
-
 	public String getCmpCode() {
 		return cmpCode;
 	}
@@ -137,16 +123,14 @@ public class PurchaseInvoiceDetailSimpleInfo {
 		}
 		PurchaseInvoiceDetailSimpleInfo other = (PurchaseInvoiceDetailSimpleInfo) otherObject;
 		return Objects.equals(id, other.getId()) && Objects.equals(code, other.getCode())
-				&& Objects.equals(invoiceid, other.getInvoiceid()) && Objects.equals(detno, other.getDetno())
-				&& Objects.equals(cmpCode, other.getCmpCode()) && Objects.equals(kiName, other.getKiName())
-				&& Objects.equals(brName, other.getBrName()) && Objects.equals(status, other.getStatus());
+				&& Objects.equals(detno, other.getDetno()) && Objects.equals(cmpCode, other.getCmpCode())
+				&& Objects.equals(kiName, other.getKiName()) && Objects.equals(brName, other.getBrName())
+				&& Objects.equals(status, other.getStatus());
 	}
 
 	@Override
 	public String toString() {
-		return "PurchaseInvoiceDetailSimpleInfo [id=" + id + ", invoiceid=" + invoiceid + ", detno=" + detno + ", code="
-				+ code + ", cmpCode=" + cmpCode + ", kiName=" + kiName + ", brName=" + brName + ", status=" + status
-				+ "]";
+		return "PurchaseInvoiceDetailSimpleInfo [id=" + id + ", detno=" + detno + ", code=" + code + ", cmpCode="
+				+ cmpCode + ", kiName=" + kiName + ", brName=" + brName + ", status=" + status + "]";
 	}
-
 }

+ 26 - 2
search-console/src/main/java/com/uas/search/console/model/PurchaseInvoiceSimpleInfo.java

@@ -3,10 +3,16 @@ package com.uas.search.console.model;
 import java.io.Serializable;
 import java.util.Date;
 import java.util.Objects;
+import java.util.Set;
 
+import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
+import javax.persistence.FetchType;
 import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
+import javax.persistence.OrderBy;
 import javax.persistence.Table;
 
 /**
@@ -61,6 +67,14 @@ public class PurchaseInvoiceSimpleInfo implements Serializable {
 	@Column(name = "in_status")
 	private Integer status;
 
+	/**
+	 * 发货单明细
+	 */
+	@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER)
+	@JoinColumn(name = "invoice_id", updatable = false, insertable = false)
+	@OrderBy("detno")
+	private Set<PurchaseInvoiceDetailSimpleInfo> details;
+
 	public Long getId() {
 		return id;
 	}
@@ -109,6 +123,14 @@ public class PurchaseInvoiceSimpleInfo implements Serializable {
 		this.status = status;
 	}
 
+	public Set<PurchaseInvoiceDetailSimpleInfo> getDetails() {
+		return details;
+	}
+
+	public void setDetails(Set<PurchaseInvoiceDetailSimpleInfo> details) {
+		this.details = details;
+	}
+
 	public boolean equals(Object otherObject) {
 		if (this == otherObject) {
 			return true;
@@ -121,13 +143,15 @@ public class PurchaseInvoiceSimpleInfo implements Serializable {
 		return Objects.equals(id, other.getId()) && Objects.equals(code, other.getCode())
 				&& Objects.equals(sellerenuu, other.getSellerenuu())
 				&& Objects.equals(sellerenname, other.getSellerenname())
-				&& Objects.equals(createtime, other.getCreatetime()) && Objects.equals(status, other.getStatus());
+				&& Objects.equals(createtime, other.getCreatetime()) && Objects.equals(status, other.getStatus())
+				&& Objects.equals(details, other.getDetails());
 	}
 
 	@Override
 	public String toString() {
 		return "PurchaseInvoiceSimpleInfo [id=" + id + ", code=" + code + ", sellerenuu=" + sellerenuu
-				+ ", sellerenname=" + sellerenname + ", createtime=" + createtime + ", status=" + status + "]";
+				+ ", sellerenname=" + sellerenname + ", createtime=" + createtime + ", status=" + status + ", details="
+				+ details + "]";
 	}
 
 }

+ 25 - 2
search-console/src/main/java/com/uas/search/console/model/PurchaseSimpleInfo.java

@@ -3,10 +3,16 @@ package com.uas.search.console.model;
 import java.io.Serializable;
 import java.util.Date;
 import java.util.Objects;
+import java.util.Set;
 
+import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
+import javax.persistence.FetchType;
 import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
+import javax.persistence.OrderBy;
 import javax.persistence.Table;
 
 /**
@@ -59,6 +65,14 @@ public class PurchaseSimpleInfo implements Serializable {
 	@Column(name = "pu_status")
 	private Integer status;
 
+	/**
+	 * 采购单明细
+	 */
+	@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER)
+	@JoinColumn(name = "purchase_id", updatable = false, insertable = false)
+	@OrderBy("detno")
+	private Set<PurchaseDetailSimpleInfo> details;
+
 	public Long getId() {
 		return id;
 	}
@@ -107,6 +121,14 @@ public class PurchaseSimpleInfo implements Serializable {
 		this.status = status;
 	}
 
+	public Set<PurchaseDetailSimpleInfo> getDetails() {
+		return details;
+	}
+
+	public void setDetails(Set<PurchaseDetailSimpleInfo> details) {
+		this.details = details;
+	}
+
 	public boolean equals(Object otherObject) {
 		if (this == otherObject) {
 			return true;
@@ -119,13 +141,14 @@ public class PurchaseSimpleInfo implements Serializable {
 		return Objects.equals(id, other.getId()) && Objects.equals(code, other.getCode())
 				&& Objects.equals(sellerenuu, other.getSellerenuu())
 				&& Objects.equals(sellerenname, other.getSellerenname())
-				&& Objects.equals(createtime, other.getCreatetime()) && Objects.equals(status, other.getStatus());
+				&& Objects.equals(createtime, other.getCreatetime()) && Objects.equals(status, other.getStatus())
+				&& Objects.equals(details, other.getDetails());
 	}
 
 	@Override
 	public String toString() {
 		return "PurchaseSimpleInfo [id=" + id + ", code=" + code + ", sellerenuu=" + sellerenuu + ", sellerenname="
-				+ sellerenname + ", createtime=" + createtime + ", status=" + status + "]";
+				+ sellerenname + ", createtime=" + createtime + ", status=" + status + ", details=" + details + "]";
 	}
 
 }

+ 0 - 35
search-console/src/main/java/com/uas/search/console/service/InnerOrderSearchService.java

@@ -1,11 +1,7 @@
 package com.uas.search.console.service;
 
-import com.uas.search.console.model.OrderDetailSimpleInfo;
-import com.uas.search.console.model.OrderInvoiceDetailSimpleInfo;
 import com.uas.search.console.model.OrderInvoiceSimpleInfo;
 import com.uas.search.console.model.OrderSimpleInfo;
-import com.uas.search.console.model.PurchaseDetailSimpleInfo;
-import com.uas.search.console.model.PurchaseInvoiceDetailSimpleInfo;
 import com.uas.search.console.model.PurchaseInvoiceSimpleInfo;
 import com.uas.search.console.model.PurchaseSimpleInfo;
 import com.uas.search.model.BaseOrder;
@@ -89,14 +85,6 @@ public interface InnerOrderSearchService {
 	 */
 	public OrderSimpleInfo getOrder(Long id);
 
-	/**
-	 * 根据id获取索引中的销售单明细数据
-	 * 
-	 * @param id
-	 * @return
-	 */
-	public OrderDetailSimpleInfo getOrderDetail(Long id);
-
 	/**
 	 * 根据id获取索引中的销售发货单数据
 	 * 
@@ -105,14 +93,6 @@ public interface InnerOrderSearchService {
 	 */
 	public OrderInvoiceSimpleInfo getOrderInvoice(Long id);
 
-	/**
-	 * 根据id获取索引中的销售发货单明细数据
-	 * 
-	 * @param id
-	 * @return
-	 */
-	public OrderInvoiceDetailSimpleInfo getOrderInvoiceDetail(Long id);
-
 	/**
 	 * 根据id获取索引中的采购单数据
 	 * 
@@ -121,14 +101,6 @@ public interface InnerOrderSearchService {
 	 */
 	public PurchaseSimpleInfo getPurchase(Long id);
 
-	/**
-	 * 根据id获取索引中的采购单明细数据
-	 * 
-	 * @param id
-	 * @return
-	 */
-	public PurchaseDetailSimpleInfo getPurchaseDetail(Long id);
-
 	/**
 	 * 根据id获取索引中的采购发货单数据
 	 * 
@@ -137,11 +109,4 @@ public interface InnerOrderSearchService {
 	 */
 	public PurchaseInvoiceSimpleInfo getPurchaseInvoice(Long id);
 
-	/**
-	 * 根据id获取索引中的采购发货单明细数据
-	 * 
-	 * @param id
-	 * @return
-	 */
-	public PurchaseInvoiceDetailSimpleInfo getPurchaseInvoiceDetail(Long id);
 }

+ 5 - 105
search-console/src/main/java/com/uas/search/console/service/impl/IndexServiceImpl.java

@@ -26,24 +26,16 @@ import com.uas.platform.core.model.PageParams;
 import com.uas.search.console.dao.BrandSimpleInfoDao;
 import com.uas.search.console.dao.ComponentSimpleInfoDao;
 import com.uas.search.console.dao.KindSimpleInfoDao;
-import com.uas.search.console.dao.OrderDetailSimpleInfoDao;
-import com.uas.search.console.dao.OrderInvoiceDetailSimpleInfoDao;
 import com.uas.search.console.dao.OrderInvoiceSimpleInfoDao;
 import com.uas.search.console.dao.OrderSimpleInfoDao;
-import com.uas.search.console.dao.PurchaseDetailSimpleInfoDao;
-import com.uas.search.console.dao.PurchaseInvoiceDetailSimpleInfoDao;
 import com.uas.search.console.dao.PurchaseInvoiceSimpleInfoDao;
 import com.uas.search.console.dao.PurchaseSimpleInfoDao;
 import com.uas.search.console.jms.AQListener;
 import com.uas.search.console.model.BrandSimpleInfo;
 import com.uas.search.console.model.ComponentSimpleInfo;
 import com.uas.search.console.model.KindSimpleInfo;
-import com.uas.search.console.model.OrderDetailSimpleInfo;
-import com.uas.search.console.model.OrderInvoiceDetailSimpleInfo;
 import com.uas.search.console.model.OrderInvoiceSimpleInfo;
 import com.uas.search.console.model.OrderSimpleInfo;
-import com.uas.search.console.model.PurchaseDetailSimpleInfo;
-import com.uas.search.console.model.PurchaseInvoiceDetailSimpleInfo;
 import com.uas.search.console.model.PurchaseInvoiceSimpleInfo;
 import com.uas.search.console.model.PurchaseSimpleInfo;
 import com.uas.search.console.service.IndexService;
@@ -74,27 +66,15 @@ public class IndexServiceImpl implements IndexService {
 	@Autowired
 	private OrderSimpleInfoDao orderDao;
 
-	@Autowired
-	private OrderDetailSimpleInfoDao orderDetailDao;
-
 	@Autowired
 	private OrderInvoiceSimpleInfoDao orderInvoiceDao;
 
-	@Autowired
-	private OrderInvoiceDetailSimpleInfoDao orderInvoiceDetailDao;
-
 	@Autowired
 	private PurchaseSimpleInfoDao purchaseDao;
 
-	@Autowired
-	private PurchaseDetailSimpleInfoDao purchaseDetailDao;
-
 	@Autowired
 	private PurchaseInvoiceSimpleInfoDao purchaseInvoiceDao;
 
-	@Autowired
-	private PurchaseInvoiceDetailSimpleInfoDao purchaseInvoiceDetailDao;
-
 	private IndexWriter indexWriter;
 
 	private static IndexWriterManager indexWriterManager;
@@ -158,40 +138,20 @@ public class IndexServiceImpl implements IndexService {
 			Long orderTime = new Date().getTime();
 			logger.info("创建销售单索引: " + orderSize + "条,耗时 " + (orderTime - componentTime) + " 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");
+			logger.info("创建销售发货单索引: " + orderInvoiceSize + "条,耗时 " + (orderInvoiceTime - orderTime) + " 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");
+			logger.info("创建采购单索引: " + purchaseSize + "条,耗时 " + (purchaseTime - orderInvoiceTime) + " ms\n");
 
 			Long purchaseInvoiceSize = createPurchaseInvoiceIndexes();
 			Long purchaseInvoiceTime = new Date().getTime();
-			logger.info("创建采购发货单索引: " + purchaseInvoiceSize + "条,耗时 " + (purchaseInvoiceTime - purchaseDetailTime)
-					+ " ms\n");
+			logger.info("创建采购发货单索引: " + purchaseInvoiceSize + "条,耗时 " + (purchaseInvoiceTime - purchaseTime) + " 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;
+			logger.info("索引创建成功, 共用时间 " + (purchaseInvoiceTime - startTime) + " ms");
+			return purchaseInvoiceTime - startTime;
 		} catch (IOException e) {
 			e.printStackTrace();
 		} catch (InterruptedException e) {
@@ -326,13 +286,6 @@ public class IndexServiceImpl implements IndexService {
 		return createIndexesWithObjects(orders.toArray());
 	}
 
-	private Long createOrderDetailIndexes() {
-		logger.info("正在创建销售单明细索引...");
-		List<OrderDetailSimpleInfo> orderDetails = orderDetailDao.findAll();
-		logger.info("发现数据:" + orderDetails.size() + "条");
-		return createIndexesWithObjects(orderDetails.toArray());
-	}
-
 	private Long createOrderInvoiceIndexes() {
 		logger.info("正在创建销售发货单索引...");
 		List<OrderInvoiceSimpleInfo> orderInvoices = orderInvoiceDao.findAll();
@@ -340,13 +293,6 @@ public class IndexServiceImpl implements IndexService {
 		return createIndexesWithObjects(orderInvoices.toArray());
 	}
 
-	private Long createOrderInvoiceDetailIndexes() {
-		logger.info("正在创建销售发货单明细索引...");
-		List<OrderInvoiceDetailSimpleInfo> orderInvoiceDetails = orderInvoiceDetailDao.findAll();
-		logger.info("发现数据:" + orderInvoiceDetails.size() + "条");
-		return createIndexesWithObjects(orderInvoiceDetails.toArray());
-	}
-
 	private Long createPurchaseIndexes() {
 		logger.info("正在创建采购单索引...");
 		List<PurchaseSimpleInfo> purchases = purchaseDao.findAll();
@@ -354,13 +300,6 @@ public class IndexServiceImpl implements IndexService {
 		return createIndexesWithObjects(purchases.toArray());
 	}
 
-	private Long createPurchaseDetailIndexes() {
-		logger.info("正在创建采购单明细索引...");
-		List<PurchaseDetailSimpleInfo> purchaseDetails = purchaseDetailDao.findAll();
-		logger.info("发现数据:" + purchaseDetails.size() + "条");
-		return createIndexesWithObjects(purchaseDetails.toArray());
-	}
-
 	private Long createPurchaseInvoiceIndexes() {
 		logger.info("正在创建采购发货单索引...");
 		List<PurchaseInvoiceSimpleInfo> purchaseInvoices = purchaseInvoiceDao.findAll();
@@ -368,13 +307,6 @@ public class IndexServiceImpl implements IndexService {
 		return createIndexesWithObjects(purchaseInvoices.toArray());
 	}
 
-	private Long createPurchaseInvoiceDetailIndexes() {
-		logger.info("正在创建采购发货单明细索引...");
-		List<PurchaseInvoiceDetailSimpleInfo> purchaseInvoiceDetails = purchaseInvoiceDetailDao.findAll();
-		logger.info("发现数据:" + purchaseInvoiceDetails.size() + "条");
-		return createIndexesWithObjects(purchaseInvoiceDetails.toArray());
-	}
-
 	/**
 	 * 利用对象数组创建索引
 	 * 
@@ -452,27 +384,15 @@ public class IndexServiceImpl implements IndexService {
 					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!");
 				}
@@ -507,27 +427,15 @@ public class IndexServiceImpl implements IndexService {
 			} else if (obj instanceof OrderSimpleInfo) {
 				indexWriter.deleteDocuments(
 						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,
-						String.valueOf(((OrderDetailSimpleInfo) obj).getId())));
 			} else if (obj instanceof OrderInvoiceSimpleInfo) {
 				indexWriter.deleteDocuments(new Term(SearchConstants.ORDER_INVOICE_ID_FIELD,
 						String.valueOf(((OrderInvoiceSimpleInfo) obj).getId())));
-			} else if (obj instanceof OrderInvoiceDetailSimpleInfo) {
-				indexWriter.deleteDocuments(new Term(SearchConstants.ORDER_INVOICE_DETAIL_ID_FIELD,
-						String.valueOf(((OrderInvoiceDetailSimpleInfo) obj).getId())));
 			} else if (obj instanceof PurchaseSimpleInfo) {
 				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,
-						String.valueOf(((PurchaseDetailSimpleInfo) obj).getId())));
 			} else if (obj instanceof PurchaseInvoiceSimpleInfo) {
 				indexWriter.deleteDocuments(new Term(SearchConstants.PURCHASE_INVOICE_ID_FIELD,
 						String.valueOf(((PurchaseInvoiceSimpleInfo) obj).getId())));
-			} else if (obj instanceof PurchaseInvoiceDetailSimpleInfo) {
-				indexWriter.deleteDocuments(new Term(SearchConstants.PURCHASE_INVOICE_DETAIL_ID_FIELD,
-						String.valueOf(((PurchaseInvoiceDetailSimpleInfo) obj).getId())));
 			} else {
 				logger.error("Message parsing failed!");
 			}
@@ -564,20 +472,12 @@ public class IndexServiceImpl implements IndexService {
 			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("暂时不支持该表的索引进行维护:" + tableName);
 		}

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

@@ -4,10 +4,8 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 import org.apache.log4j.Logger;
 import org.apache.lucene.document.Document;
@@ -23,12 +21,8 @@ import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
-import com.uas.search.console.model.OrderDetailSimpleInfo;
-import com.uas.search.console.model.OrderInvoiceDetailSimpleInfo;
 import com.uas.search.console.model.OrderInvoiceSimpleInfo;
 import com.uas.search.console.model.OrderSimpleInfo;
-import com.uas.search.console.model.PurchaseDetailSimpleInfo;
-import com.uas.search.console.model.PurchaseInvoiceDetailSimpleInfo;
 import com.uas.search.console.model.PurchaseInvoiceSimpleInfo;
 import com.uas.search.console.model.PurchaseSimpleInfo;
 import com.uas.search.console.service.InnerOrderSearchService;
@@ -81,26 +75,26 @@ public class OrderSearchServiceImpl implements OrderSearchService, InnerOrderSea
 
 	@Override
 	public SPage<BaseOrder> searchOrderIds(String keyword, PageParams params) {
-		return searchMainTable(keyword, params, SearchConstants.ORDER_TABLE_NAME);
+		return searchMainOrder(keyword, params, SearchConstants.ORDER_TABLE_NAME);
 	}
 
 	@Override
 	public SPage<BaseOrder> searchOrderInvoiceIds(String keyword, PageParams params) {
-		return searchMainTable(keyword, params, SearchConstants.ORDER_INVOICE_TABLE_NAME);
+		return searchMainOrder(keyword, params, SearchConstants.ORDER_INVOICE_TABLE_NAME);
 	}
 
 	@Override
 	public SPage<BaseOrder> searchPurchaseIds(String keyword, PageParams params) {
-		return searchMainTable(keyword, params, SearchConstants.PURCHASE_TABLE_NAME);
+		return searchMainOrder(keyword, params, SearchConstants.PURCHASE_TABLE_NAME);
 	}
 
 	@Override
 	public SPage<BaseOrder> searchPurchaseInvoiceIds(String keyword, PageParams params) {
-		return searchMainTable(keyword, params, SearchConstants.PURCHASE_INVOICE_TABLE_NAME);
+		return searchMainOrder(keyword, params, SearchConstants.PURCHASE_INVOICE_TABLE_NAME);
 	}
 
 	/**
-	 * 搜索主索引
+	 * 搜索主索引(相对于明细来说)
 	 * 
 	 * @param keyword
 	 *            关键词
@@ -110,7 +104,7 @@ public class OrderSearchServiceImpl implements OrderSearchService, InnerOrderSea
 	 *            主表名
 	 * @return 搜索结果
 	 */
-	private SPage<BaseOrder> searchMainTable(String keyword, PageParams params, String tableName) {
+	private SPage<BaseOrder> searchMainOrder(String keyword, PageParams params, String tableName) {
 		if (SearchUtils.isKeywordInvalid(keyword)) {
 			throw new SearchException("搜索关键词无效:" + keyword);
 		}
@@ -219,7 +213,7 @@ public class OrderSearchServiceImpl implements OrderSearchService, InnerOrderSea
 				ScoreDoc[] previousScoreDocs = previousTopDocs.scoreDocs;
 				// 如果主表中未匹配到结果,再搜索其明细表
 				if (totalHits == 0) {
-					return searchDetailTable(keyword, params, OrderSearchUtils.getDetailTableName(tableName));
+					return searchDetails(keyword, params, tableName);
 				} else {
 					if ((sPage.getPage() - 1) * sPage.getSize() >= totalHits) {
 						throw new SearchException("页码过大:元素总数量为" + totalHits);
@@ -234,7 +228,7 @@ public class OrderSearchServiceImpl implements OrderSearchService, InnerOrderSea
 			// 如果主表中未匹配到结果,再搜索其明细表
 			int totalHits = topDocs.totalHits;
 			if (totalHits < 1) {
-				return searchDetailTable(keyword, params, OrderSearchUtils.getDetailTableName(tableName));
+				return searchDetails(keyword, params, tableName);
 			}
 
 			// 设置总元素个数、页数等信息
@@ -252,8 +246,11 @@ public class OrderSearchServiceImpl implements OrderSearchService, InnerOrderSea
 				Long id = Long.valueOf(document.get(OrderSearchUtils.getIdField(tableName)));
 				String code = document.get(OrderSearchUtils.getCodeField(tableName));
 				BaseOrder baseOrder = new BaseOrder(id, code);
-				// 获取明细表的信息,汇合起来返回
-				baseOrder.setDetails(getDetails(id, OrderSearchUtils.getDetailTableName(tableName)));
+				List<BaseOrderDetail> details = DocumentToObjectUtils
+						.toDetailsList(document.get(OrderSearchUtils.getDetailsField(tableName)));
+				if (!CollectionUtils.isEmpty(details)) {
+					baseOrder.setDetails(details);
+				}
 				baseOrders.add(baseOrder);
 			}
 			sPage.setContent(baseOrders);
@@ -266,7 +263,7 @@ public class OrderSearchServiceImpl implements OrderSearchService, InnerOrderSea
 	}
 
 	/**
-	 * 搜索明细索引
+	 * 搜索明细索引
 	 * 
 	 * @param keyword
 	 *            关键词
@@ -276,12 +273,11 @@ public class OrderSearchServiceImpl implements OrderSearchService, InnerOrderSea
 	 *            明细表名
 	 * @return 搜索结果
 	 */
-	private SPage<BaseOrder> searchDetailTable(String keyword, PageParams params, String tableName) {
+	private SPage<BaseOrder> searchDetails(String keyword, PageParams params, String tableName) {
 		if (SearchUtils.isKeywordInvalid(keyword)) {
 			throw new SearchException("搜索关键词无效:" + keyword);
 		}
 		IndexSearcher indexSearcher = SearchUtils.getIndexSearcher();
-		List<String> keywordFields = OrderSearchUtils.getKeywordFields(tableName);
 
 		SPage<BaseOrder> sPage = new SPage<>();
 		BooleanQuery booleanQuery = new BooleanQuery();
@@ -289,12 +285,8 @@ public class OrderSearchServiceImpl implements OrderSearchService, InnerOrderSea
 		// 关键词带空格,进行与操作
 		String[] strs = keyword.split(" ");
 		for (String str : strs) {
-			// keyword可能是哪些域
-			BooleanQuery booleanQuery2 = new BooleanQuery();
-			for (String keywordField : keywordFields) {
-				booleanQuery2.add(SearchUtils.getBooleanQuery(keywordField, str), BooleanClause.Occur.SHOULD);
-			}
-			booleanQuery.add(booleanQuery2, BooleanClause.Occur.MUST);
+			booleanQuery.add(SearchUtils.getBooleanQuery(OrderSearchUtils.getDetailsField(tableName), str),
+					BooleanClause.Occur.MUST);
 		}
 
 		// 分页信息
@@ -316,22 +308,6 @@ public class OrderSearchServiceImpl implements OrderSearchService, InnerOrderSea
 			} else {
 				sPage.setSize(PAGE_SIZE);
 			}
-			Map<String, Object> filters = params.getFilters();
-			if (!CollectionUtils.isEmpty(filters)) {
-				// 如果filter中有订单状态
-				if (!StringUtils.isEmpty(filters.get(OrderSearchConstants.STATUS_KEY))) {
-					@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);
-				}
-			}
 		}
 		logger.info(booleanQuery);
 
@@ -369,24 +345,20 @@ public class OrderSearchServiceImpl implements OrderSearchService, InnerOrderSea
 			}
 
 			ScoreDoc[] scoreDocs = topDocs.scoreDocs;
-			// 多条明细数据可能同属于一条主表数据,因此先统计主表id(作为key,以免重复,值为其下的明细数据),最后再获取所有的主表数据
-			Map<Long, List<BaseOrderDetail>> map = new HashMap<>();
+			List<BaseOrder> baseOrders = new ArrayList<>();
 			for (ScoreDoc scoreDoc : scoreDocs) {
 				Document document = indexSearcher.doc(scoreDoc.doc);
-				Long orderId = Long.valueOf(document.get(OrderSearchUtils.getDetailTableForeignIdField(tableName)));
-				List<BaseOrderDetail> baseOrderDetails = map.get(orderId);
-				if (CollectionUtils.isEmpty(baseOrderDetails)) {
-					baseOrderDetails = new ArrayList<>();
+				Long id = Long.valueOf(document.get(OrderSearchUtils.getIdField(tableName)));
+				String code = document.get(OrderSearchUtils.getCodeField(tableName));
+				BaseOrder baseOrder = new BaseOrder(id, code);
+				List<BaseOrderDetail> details = DocumentToObjectUtils
+						.toDetailsList(document.get(OrderSearchUtils.getDetailsField(tableName)));
+				if (!CollectionUtils.isEmpty(details)) {
+					baseOrder.setDetails(details);
 				}
-
-				baseOrderDetails
-						.add(new BaseOrderDetail(Long.valueOf(document.get(OrderSearchUtils.getIdField(tableName))),
-								Short.valueOf(document.get(OrderSearchUtils.getDetnoField(tableName))),
-								document.get(OrderSearchUtils.getCodeField(tableName))));
-				map.put(orderId, baseOrderDetails);
+				baseOrders.add(baseOrder);
 			}
-			// 获取主表数据
-			sPage.setContent(getBaseOrdersByDetails(map, OrderSearchUtils.getMainTableName(tableName)));
+			sPage.setContent(baseOrders);
 		} catch (NumberFormatException | IOException e) {
 			throw new SearchException(e).setDetailedMessage(e);
 		} finally {
@@ -395,111 +367,26 @@ public class OrderSearchServiceImpl implements OrderSearchService, InnerOrderSea
 		return sPage;
 	}
 
-	/**
-	 * 明细表中根据主表单据id(外键)获取明细信息
-	 * 
-	 * @param id
-	 *            单据id
-	 * @param tableName
-	 *            明细表名
-	 * @return 对应的明细信息
-	 */
-	private List<BaseOrderDetail> getDetails(Long id, String tableName) {
-		if (id == null) {
-			return null;
-		}
-		List<Document> documents = SearchUtils.getDocuments(OrderSearchUtils.getDetailTableForeignIdField(tableName),
-				id.toString());
-		List<BaseOrderDetail> baseOrderDetails = new ArrayList<>();
-		for (Document document : documents) {
-			baseOrderDetails.add(new BaseOrderDetail(Long.valueOf(document.get(OrderSearchUtils.getIdField(tableName))),
-					Short.valueOf(document.get(OrderSearchUtils.getDetnoField(tableName))),
-					document.get(OrderSearchUtils.getCodeField(tableName))));
-		}
-		return baseOrderDetails;
-	}
-
-	/**
-	 * 主表中根据单据明细获取主表数据,汇总后返回
-	 * 
-	 * @param map
-	 *            明细数据,主表id(外键)为key,明细数据为value
-	 * @return 汇总后的数据
-	 */
-	private List<BaseOrder> getBaseOrdersByDetails(Map<Long, List<BaseOrderDetail>> map, String tableName) {
-		List<BaseOrder> baseOrders = new ArrayList<>();
-		if (CollectionUtils.isEmpty(map)) {
-			return baseOrders;
-		}
-		Set<Long> keySet = map.keySet();
-		for (Long key : keySet) {
-			BaseOrder baseOrder = new BaseOrder();
-			List<BaseOrderDetail> baseOrderDetails = map.get(key);
-			baseOrder.setDetails(baseOrderDetails);
-			List<Document> documents = SearchUtils.getDocuments(OrderSearchUtils.getIdField(tableName),
-					Long.toString(key));
-			if (CollectionUtils.isEmpty(documents)) {
-				logger.error("明细表中外键" + key + "对应的主表索引不存在");
-				continue;
-			} else {
-				if (documents.size() > 1) {
-					logger.error("明细表中外键" + key + "对应的主表索引不唯一");
-					continue;
-				} else {
-					Document document = documents.get(0);
-					baseOrder.setId(key);
-					baseOrder.setCode(document.get(OrderSearchUtils.getCodeField(tableName)));
-				}
-			}
-			baseOrders.add(baseOrder);
-		}
-		return baseOrders;
-	}
-
 	@Override
 	public OrderSimpleInfo getOrder(Long id) {
 		return DocumentToObjectUtils.toOrder(SearchUtils.getDocumentById(SearchConstants.ORDER_ID_FIELD, id));
 	}
 
-	@Override
-	public OrderDetailSimpleInfo getOrderDetail(Long id) {
-		return DocumentToObjectUtils
-				.toOrderDetail(SearchUtils.getDocumentById(SearchConstants.ORDER_DETAIL_ID_FIELD, id));
-	}
-
 	@Override
 	public OrderInvoiceSimpleInfo getOrderInvoice(Long id) {
 		return DocumentToObjectUtils
 				.toOrderInvoice(SearchUtils.getDocumentById(SearchConstants.ORDER_INVOICE_ID_FIELD, id));
 	}
 
-	@Override
-	public OrderInvoiceDetailSimpleInfo getOrderInvoiceDetail(Long id) {
-		return DocumentToObjectUtils
-				.toOrderInvoiceDetail(SearchUtils.getDocumentById(SearchConstants.ORDER_INVOICE_DETAIL_ID_FIELD, id));
-	}
-
 	@Override
 	public PurchaseSimpleInfo getPurchase(Long id) {
 		return DocumentToObjectUtils.toPurchase(SearchUtils.getDocumentById(SearchConstants.PURCHASE_ID_FIELD, id));
 	}
 
-	@Override
-	public PurchaseDetailSimpleInfo getPurchaseDetail(Long id) {
-		return DocumentToObjectUtils
-				.toPurchaseDetail(SearchUtils.getDocumentById(SearchConstants.PURCHASE_DETAIL_ID_FIELD, id));
-	}
-
 	@Override
 	public PurchaseInvoiceSimpleInfo getPurchaseInvoice(Long id) {
 		return DocumentToObjectUtils
 				.toPurchaseInvoice(SearchUtils.getDocumentById(SearchConstants.PURCHASE_INVOICE_ID_FIELD, id));
 	}
 
-	@Override
-	public PurchaseInvoiceDetailSimpleInfo getPurchaseInvoiceDetail(Long id) {
-		return DocumentToObjectUtils.toPurchaseInvoiceDetail(
-				SearchUtils.getDocumentById(SearchConstants.PURCHASE_INVOICE_DETAIL_ID_FIELD, id));
-	}
-
 }

+ 44 - 81
search-console/src/main/java/com/uas/search/console/util/DocumentToObjectUtils.java

@@ -1,9 +1,16 @@
 package com.uas.search.console.util;
 
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
 
 import org.apache.lucene.document.Document;
 
+import com.alibaba.dubbo.common.utils.StringUtils;
+import com.alibaba.fastjson.JSONObject;
+import com.uas.search.console.model.BaseOrderDetailSimpleInfo;
 import com.uas.search.console.model.BrandSimpleInfo;
 import com.uas.search.console.model.ComponentSimpleInfo;
 import com.uas.search.console.model.EnterpriseSimpleInfo;
@@ -16,6 +23,7 @@ import com.uas.search.console.model.PurchaseDetailSimpleInfo;
 import com.uas.search.console.model.PurchaseInvoiceDetailSimpleInfo;
 import com.uas.search.console.model.PurchaseInvoiceSimpleInfo;
 import com.uas.search.console.model.PurchaseSimpleInfo;
+import com.uas.search.model.BaseOrderDetail;
 
 /**
  * 将Document转换为对象的工具类
@@ -106,31 +114,10 @@ public class DocumentToObjectUtils {
 		Date createtime = new Date(Long.valueOf(document.get(SearchConstants.ORDER_CREATETIME_FIELD)));
 		order.setCreatetime(createtime);
 		order.setStatus(Integer.valueOf(document.get(SearchConstants.ORDER_STATUS_FIELD)));
+		order.setDetails(toDetailsSet(document.get(SearchConstants.ORDER_DETAILS_FIELD), OrderDetailSimpleInfo.class));
 		return order;
 	}
 
-	/**
-	 * 将Document转换为销售单明细对象
-	 * 
-	 * @param document
-	 * @return
-	 */
-	public static OrderDetailSimpleInfo toOrderDetail(Document document) {
-		if (document == null) {
-			return null;
-		}
-		OrderDetailSimpleInfo orderDetail = new OrderDetailSimpleInfo();
-		orderDetail.setId(Long.valueOf(document.get(SearchConstants.ORDER_DETAIL_ID_FIELD)));
-		orderDetail.setCode(document.get(SearchConstants.ORDER_DETAIL_CODE_FIELD));
-		orderDetail.setOrderid(Long.valueOf(document.get(SearchConstants.ORDER_DETAIL_ORDERID_FIELD)));
-		orderDetail.setDetno(Short.valueOf(document.get(SearchConstants.ORDER_DETAIL_DETNO_FIELD)));
-		orderDetail.setCmpCode(document.get(SearchConstants.ORDER_DETAIL_COMPONENTCODE_FIELD));
-		orderDetail.setKiName(document.get(SearchConstants.ORDER_DETAIL_KINDNAME_FIELD));
-		orderDetail.setBrName(document.get(SearchConstants.ORDER_DETAIL_BRANDNAME_FIELD));
-		orderDetail.setStatus(Integer.valueOf(document.get(SearchConstants.ORDER_DETAIL_STATUS_FIELD)));
-		return orderDetail;
-	}
-
 	/**
 	 * 将Document转换为销售发货单对象
 	 * 
@@ -153,31 +140,11 @@ public class DocumentToObjectUtils {
 		Date createtime = new Date(Long.valueOf(document.get(SearchConstants.ORDER_INVOICE_CREATETIME_FIELD)));
 		orderInvoice.setCreatetime(createtime);
 		orderInvoice.setStatus(Integer.valueOf(document.get(SearchConstants.ORDER_INVOICE_STATUS_FIELD)));
+		orderInvoice.setDetails(toDetailsSet(document.get(SearchConstants.ORDER_INVOICE_DETAILS_FIELD),
+				OrderInvoiceDetailSimpleInfo.class));
 		return orderInvoice;
 	}
 
-	/**
-	 * 将Document转换为销售发货单明细对象
-	 * 
-	 * @param document
-	 * @return
-	 */
-	public static OrderInvoiceDetailSimpleInfo toOrderInvoiceDetail(Document document) {
-		if (document == null) {
-			return null;
-		}
-		OrderInvoiceDetailSimpleInfo orderInvoiceDetail = new OrderInvoiceDetailSimpleInfo();
-		orderInvoiceDetail.setId(Long.valueOf(document.get(SearchConstants.ORDER_INVOICE_DETAIL_ID_FIELD)));
-		orderInvoiceDetail.setCode(document.get(SearchConstants.ORDER_INVOICE_DETAIL_CODE_FIELD));
-		orderInvoiceDetail.setInvoiceid(Long.valueOf(document.get(SearchConstants.ORDER_INVOICE_DETAIL_INVOICEID_FIELD)));
-		orderInvoiceDetail.setDetno(Short.valueOf(document.get(SearchConstants.ORDER_INVOICE_DETAIL_DETNO_FIELD)));
-		orderInvoiceDetail.setCmpCode(document.get(SearchConstants.ORDER_INVOICE_DETAIL_COMPONENTCODE_FIELD));
-		orderInvoiceDetail.setKiName(document.get(SearchConstants.ORDER_INVOICE_DETAIL_KINDNAME_FIELD));
-		orderInvoiceDetail.setBrName(document.get(SearchConstants.ORDER_INVOICE_DETAIL_BRANDNAME_FIELD));
-		orderInvoiceDetail.setStatus(Integer.valueOf(document.get(SearchConstants.ORDER_INVOICE_DETAIL_STATUS_FIELD)));
-		return orderInvoiceDetail;
-	}
-
 	/**
 	 * 将Document转换为采购单对象
 	 * 
@@ -196,31 +163,11 @@ public class DocumentToObjectUtils {
 		Date createtime = new Date(Long.valueOf(document.get(SearchConstants.PURCHASE_CREATETIME_FIELD)));
 		purchase.setCreatetime(createtime);
 		purchase.setStatus(Integer.valueOf(document.get(SearchConstants.PURCHASE_STATUS_FIELD)));
+		purchase.setDetails(
+				toDetailsSet(document.get(SearchConstants.PURCHASE_DETAILS_FIELD), PurchaseDetailSimpleInfo.class));
 		return purchase;
 	}
 
-	/**
-	 * 将Document转换为采购单明细对象
-	 * 
-	 * @param document
-	 * @return
-	 */
-	public static PurchaseDetailSimpleInfo toPurchaseDetail(Document document) {
-		if (document == null) {
-			return null;
-		}
-		PurchaseDetailSimpleInfo purchaseDetail = new PurchaseDetailSimpleInfo();
-		purchaseDetail.setId(Long.valueOf(document.get(SearchConstants.PURCHASE_DETAIL_ID_FIELD)));
-		purchaseDetail.setCode(document.get(SearchConstants.PURCHASE_DETAIL_CODE_FIELD));
-		purchaseDetail.setPurchaseid(Long.valueOf(document.get(SearchConstants.PURCHASE_DETAIL_PURCHASEID_FIELD)));
-		purchaseDetail.setDetno(Short.valueOf(document.get(SearchConstants.PURCHASE_DETAIL_DETNO_FIELD)));
-		purchaseDetail.setCmpCode(document.get(SearchConstants.PURCHASE_DETAIL_COMPONENTCODE_FIELD));
-		purchaseDetail.setKiName(document.get(SearchConstants.PURCHASE_DETAIL_KINDNAME_FIELD));
-		purchaseDetail.setBrName(document.get(SearchConstants.PURCHASE_DETAIL_BRANDNAME_FIELD));
-		purchaseDetail.setStatus(Integer.valueOf(document.get(SearchConstants.PURCHASE_DETAIL_STATUS_FIELD)));
-		return purchaseDetail;
-	}
-
 	/**
 	 * 将Document转换为采购发货单对象
 	 * 
@@ -239,29 +186,45 @@ public class DocumentToObjectUtils {
 		Date createtime = new Date(Long.valueOf(document.get(SearchConstants.PURCHASE_INVOICE_CREATETIME_FIELD)));
 		purchaseInvoice.setCreatetime(createtime);
 		purchaseInvoice.setStatus(Integer.valueOf(document.get(SearchConstants.PURCHASE_INVOICE_STATUS_FIELD)));
+		purchaseInvoice.setDetails(toDetailsSet(document.get(SearchConstants.PURCHASE_INVOICE_DETAILS_FIELD),
+				PurchaseInvoiceDetailSimpleInfo.class));
 		return purchaseInvoice;
 	}
 
 	/**
-	 * 将Document转换为采购发货单明细对象
+	 * 将json字符串转为明细对象
 	 * 
-	 * @param document
-	 * @return
+	 * @param <T>
+	 * 
+	 * @param jsonString
+	 *            索引中存储的明细数据
+	 * @return 明细对象
 	 */
-	public static PurchaseInvoiceDetailSimpleInfo toPurchaseInvoiceDetail(Document document) {
-		if (document == null) {
+	public static <T> Set<T> toDetailsSet(String jsonString, Class<T> clazz) {
+		if (StringUtils.isEmpty(jsonString)) {
 			return null;
 		}
-		PurchaseInvoiceDetailSimpleInfo purchaseInvoiceDetail = new PurchaseInvoiceDetailSimpleInfo();
-		purchaseInvoiceDetail.setId(Long.valueOf(document.get(SearchConstants.PURCHASE_INVOICE_DETAIL_ID_FIELD)));
-		purchaseInvoiceDetail.setCode(document.get(SearchConstants.PURCHASE_INVOICE_DETAIL_CODE_FIELD));
-		purchaseInvoiceDetail.setInvoiceid(Long.valueOf(document.get(SearchConstants.PURCHASE_INVOICE_DETAIL_INVOICEID_FIELD)));
-		purchaseInvoiceDetail.setDetno(Short.valueOf(document.get(SearchConstants.PURCHASE_INVOICE_DETAIL_DETNO_FIELD)));
-		purchaseInvoiceDetail.setCmpCode(document.get(SearchConstants.PURCHASE_INVOICE_DETAIL_COMPONENTCODE_FIELD));
-		purchaseInvoiceDetail.setKiName(document.get(SearchConstants.PURCHASE_INVOICE_DETAIL_KINDNAME_FIELD));
-		purchaseInvoiceDetail.setBrName(document.get(SearchConstants.PURCHASE_INVOICE_DETAIL_BRANDNAME_FIELD));
-		purchaseInvoiceDetail.setStatus(Integer.valueOf(document.get(SearchConstants.PURCHASE_INVOICE_DETAIL_STATUS_FIELD)));
-		return purchaseInvoiceDetail;
+		Set<T> details = new HashSet<>();
+		details.addAll(JSONObject.parseArray(jsonString, clazz));
+		return details;
 	}
 
+	/**
+	 * 将json字符串转为明细对象
+	 * 
+	 * @param jsonString
+	 *            索引中存储的明细数据
+	 * @return 明细对象
+	 */
+	public static List<BaseOrderDetail> toDetailsList(String jsonString) {
+		if (StringUtils.isEmpty(jsonString)) {
+			return null;
+		}
+		List<BaseOrderDetailSimpleInfo> details = JSONObject.parseArray(jsonString, BaseOrderDetailSimpleInfo.class);
+		List<BaseOrderDetail> result = new ArrayList<>();
+		for (BaseOrderDetailSimpleInfo detail : details) {
+			result.add(new BaseOrderDetail(detail.getId(), detail.getDetno(), detail.getCode()));
+		}
+		return result;
+	}
 }

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

@@ -13,7 +13,7 @@ import org.springframework.util.StringUtils;
 
 import com.alibaba.fastjson.JSONObject;
 import com.uas.search.console.model.ComponentSimpleInfo;
-import com.uas.search.console.model.PropertyValue;
+import com.uas.search.console.model.PropertyValueSimpleInfo;
 
 /**
  * 用于对从数据库导出的器件和属性值两个文本文件进行处理,将每个器件所拥有的属性值提取出来,之后每个器件作为一行,以json的形式写入多个文件中
@@ -56,8 +56,8 @@ public class MergeComponentData {
 	 *            "Copper Alloy"
 	 * @return
 	 */
-	private static PropertyValue parsePropertyValue(String data) {
-		PropertyValue propertyValue = new PropertyValue();
+	private static PropertyValueSimpleInfo parsePropertyValue(String data) {
+		PropertyValueSimpleInfo propertyValue = new PropertyValueSimpleInfo();
 		String[] strs = data.split("\t");
 		propertyValue.setComponentid(Long.parseLong(strs[0]));
 		propertyValue.setPropertyid(Long.parseLong(strs[1]));
@@ -84,7 +84,7 @@ public class MergeComponentData {
 			propertyValueReader.readLine();
 			String componentLine = null;
 			String propertyValueLine = null;
-			PropertyValue propertyValue = null;
+			PropertyValueSimpleInfo propertyValue = null;
 			int dataCount = 0;
 			while (!StringUtils.isEmpty(componentLine = componentReader.readLine())) {
 				dataCount++;
@@ -100,7 +100,7 @@ public class MergeComponentData {
 				}
 
 				ComponentSimpleInfo component = parseComponent(componentLine);
-				Set<PropertyValue> properties = new HashSet<>();
+				Set<PropertyValueSimpleInfo> properties = new HashSet<>();
 				if (propertyValue == null && !StringUtils.isEmpty(propertyValueLine = propertyValueReader.readLine())) {
 					propertyValue = parsePropertyValue(propertyValueLine);
 				}

+ 19 - 134
search-console/src/main/java/com/uas/search/console/util/ObjectToDocumentUtils.java

@@ -2,6 +2,7 @@ package com.uas.search.console.util;
 
 import java.util.Set;
 
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field.Store;
 import org.apache.lucene.document.LongField;
@@ -9,6 +10,7 @@ import org.apache.lucene.document.StringField;
 import org.apache.lucene.document.TextField;
 import org.springframework.util.StringUtils;
 
+import com.alibaba.fastjson.JSONObject;
 import com.uas.search.console.model.BrandSimpleInfo;
 import com.uas.search.console.model.ComponentSimpleInfo;
 import com.uas.search.console.model.KindSimpleInfo;
@@ -16,7 +18,7 @@ import com.uas.search.console.model.OrderDetailSimpleInfo;
 import com.uas.search.console.model.OrderInvoiceDetailSimpleInfo;
 import com.uas.search.console.model.OrderInvoiceSimpleInfo;
 import com.uas.search.console.model.OrderSimpleInfo;
-import com.uas.search.console.model.PropertyValue;
+import com.uas.search.console.model.PropertyValueSimpleInfo;
 import com.uas.search.console.model.PurchaseDetailSimpleInfo;
 import com.uas.search.console.model.PurchaseInvoiceDetailSimpleInfo;
 import com.uas.search.console.model.PurchaseInvoiceSimpleInfo;
@@ -141,8 +143,8 @@ public class ObjectToDocumentUtils {
 				Store.YES));
 
 		// 属性值加入索引,索引中field的键:"pr_"前缀连接属性的id
-		Set<PropertyValue> propertyValues = component.getProperties();
-		for (PropertyValue propertyValue : propertyValues) {
+		Set<PropertyValueSimpleInfo> propertyValues = component.getProperties();
+		for (PropertyValueSimpleInfo propertyValue : propertyValues) {
 			if (!StringUtils.isEmpty(propertyValue.getValue())) {
 				String fieldKey = SearchConstants.COMPONENT_PROPERTY_PREFIX + propertyValue.getPropertyid();
 				document.add(new StringField(fieldKey, propertyValue.getValue(), Store.YES));
@@ -188,37 +190,11 @@ public class ObjectToDocumentUtils {
 				Store.YES));
 		document.add(new LongField(SearchConstants.ORDER_CREATETIME_FIELD, order.getCreatetime().getTime(), Store.YES));
 		document.add(new StringField(SearchConstants.ORDER_STATUS_FIELD, String.valueOf(order.getStatus()), Store.YES));
-		return document;
-	}
-
-	/**
-	 * OrderDetailSimpleInfo对象转为Document
-	 * 
-	 * @param orderDetail
-	 *            OrderDetailSimpleInfo对象
-	 * @return 转换的Document
-	 */
-	public static Document toDocument(OrderDetailSimpleInfo orderDetail) {
-		if (orderDetail == null || orderDetail.getId() == null || StringUtils.isEmpty(orderDetail.getCode())
-				|| orderDetail.getOrderid() == null || orderDetail.getDetno() == null
-				|| StringUtils.isEmpty(orderDetail.getCmpCode()) || StringUtils.isEmpty(orderDetail.getKiName())
-				|| StringUtils.isEmpty(orderDetail.getBrName()) || orderDetail.getStatus() == null) {
-			return null;
+		// 明细以json的格式存储
+		if (!CollectionUtils.isEmpty(order.getDetails())) {
+			document.add(new TextField(SearchConstants.ORDER_DETAILS_FIELD, JSONObject.toJSONString(order.getDetails()),
+					Store.YES));
 		}
-		Document document = new Document();
-		document.add(
-				new StringField(SearchConstants.ORDER_DETAIL_ID_FIELD, String.valueOf(orderDetail.getId()), Store.YES));
-		document.add(new TextField(SearchConstants.ORDER_DETAIL_CODE_FIELD, orderDetail.getCode(), Store.YES));
-		document.add(new StringField(SearchConstants.ORDER_DETAIL_ORDERID_FIELD,
-				String.valueOf(orderDetail.getOrderid()), Store.YES));
-		document.add(new StringField(SearchConstants.ORDER_DETAIL_DETNO_FIELD, String.valueOf(orderDetail.getDetno()),
-				Store.YES));
-		document.add(
-				new TextField(SearchConstants.ORDER_DETAIL_COMPONENTCODE_FIELD, orderDetail.getCmpCode(), Store.YES));
-		document.add(new TextField(SearchConstants.ORDER_DETAIL_KINDNAME_FIELD, orderDetail.getKiName(), Store.YES));
-		document.add(new TextField(SearchConstants.ORDER_DETAIL_BRANDNAME_FIELD, orderDetail.getBrName(), Store.YES));
-		document.add(new StringField(SearchConstants.ORDER_DETAIL_STATUS_FIELD, String.valueOf(orderDetail.getStatus()),
-				Store.YES));
 		return document;
 	}
 
@@ -253,41 +229,10 @@ public class ObjectToDocumentUtils {
 				orderInvoice.getCreatetime().getTime(), Store.YES));
 		document.add(new StringField(SearchConstants.ORDER_INVOICE_STATUS_FIELD,
 				String.valueOf(orderInvoice.getStatus()), Store.YES));
-		return document;
-	}
-
-	/**
-	 * OrderInvoiceDetailSimpleInfo对象转为Document
-	 * 
-	 * @param orderInvoiceDetail
-	 *            OrderInvoiceDetailSimpleInfo对象
-	 * @return 转换的Document
-	 */
-	public static Document toDocument(OrderInvoiceDetailSimpleInfo orderInvoiceDetail) {
-		if (orderInvoiceDetail == null || orderInvoiceDetail.getId() == null
-				|| StringUtils.isEmpty(orderInvoiceDetail.getCode()) || orderInvoiceDetail.getInvoiceid() == null
-				|| orderInvoiceDetail.getDetno() == null || StringUtils.isEmpty(orderInvoiceDetail.getCmpCode())
-				|| StringUtils.isEmpty(orderInvoiceDetail.getKiName())
-				|| StringUtils.isEmpty(orderInvoiceDetail.getBrName()) || orderInvoiceDetail.getStatus() == null) {
-			return null;
+		if (!CollectionUtils.isEmpty(orderInvoice.getDetails())) {
+			document.add(new TextField(SearchConstants.ORDER_INVOICE_DETAILS_FIELD,
+					JSONObject.toJSONString(orderInvoice.getDetails()), Store.YES));
 		}
-		Document document = new Document();
-		document.add(new StringField(SearchConstants.ORDER_INVOICE_DETAIL_ID_FIELD,
-				String.valueOf(orderInvoiceDetail.getId()), Store.YES));
-		document.add(new TextField(SearchConstants.ORDER_INVOICE_DETAIL_CODE_FIELD, orderInvoiceDetail.getCode(),
-				Store.YES));
-		document.add(new StringField(SearchConstants.ORDER_INVOICE_DETAIL_INVOICEID_FIELD,
-				String.valueOf(orderInvoiceDetail.getInvoiceid()), Store.YES));
-		document.add(new StringField(SearchConstants.ORDER_INVOICE_DETAIL_DETNO_FIELD,
-				String.valueOf(orderInvoiceDetail.getDetno()), Store.YES));
-		document.add(new TextField(SearchConstants.ORDER_INVOICE_DETAIL_COMPONENTCODE_FIELD,
-				orderInvoiceDetail.getCmpCode(), Store.YES));
-		document.add(new TextField(SearchConstants.ORDER_INVOICE_DETAIL_KINDNAME_FIELD, orderInvoiceDetail.getKiName(),
-				Store.YES));
-		document.add(new TextField(SearchConstants.ORDER_INVOICE_DETAIL_BRANDNAME_FIELD, orderInvoiceDetail.getBrName(),
-				Store.YES));
-		document.add(new StringField(SearchConstants.ORDER_INVOICE_DETAIL_STATUS_FIELD,
-				String.valueOf(orderInvoiceDetail.getStatus()), Store.YES));
 		return document;
 	}
 
@@ -314,39 +259,10 @@ public class ObjectToDocumentUtils {
 				Store.YES));
 		document.add(new StringField(SearchConstants.PURCHASE_STATUS_FIELD, String.valueOf(purchase.getStatus()),
 				Store.YES));
-		return document;
-	}
-
-	/**
-	 * PurchaseDetailSimpleInfo对象转为Document
-	 * 
-	 * @param purchaseDetail
-	 *            PurchaseDetailSimpleInfo对象
-	 * @return 转换的Document
-	 */
-	public static Document toDocument(PurchaseDetailSimpleInfo purchaseDetail) {
-		if (purchaseDetail == null || purchaseDetail.getId() == null || StringUtils.isEmpty(purchaseDetail.getCode())
-				|| purchaseDetail.getPurchaseid() == null || purchaseDetail.getDetno() == null
-				|| StringUtils.isEmpty(purchaseDetail.getCmpCode()) || StringUtils.isEmpty(purchaseDetail.getKiName())
-				|| StringUtils.isEmpty(purchaseDetail.getBrName()) || purchaseDetail.getStatus() == null) {
-			return null;
+		if (!CollectionUtils.isEmpty(purchase.getDetails())) {
+			document.add(new TextField(SearchConstants.PURCHASE_DETAILS_FIELD,
+					JSONObject.toJSONString(purchase.getDetails()), Store.YES));
 		}
-		Document document = new Document();
-		document.add(new StringField(SearchConstants.PURCHASE_DETAIL_ID_FIELD, String.valueOf(purchaseDetail.getId()),
-				Store.YES));
-		document.add(new TextField(SearchConstants.PURCHASE_DETAIL_CODE_FIELD, purchaseDetail.getCode(), Store.YES));
-		document.add(new StringField(SearchConstants.PURCHASE_DETAIL_PURCHASEID_FIELD,
-				String.valueOf(purchaseDetail.getPurchaseid()), Store.YES));
-		document.add(new StringField(SearchConstants.PURCHASE_DETAIL_DETNO_FIELD,
-				String.valueOf(purchaseDetail.getDetno()), Store.YES));
-		document.add(new TextField(SearchConstants.PURCHASE_DETAIL_COMPONENTCODE_FIELD, purchaseDetail.getCmpCode(),
-				Store.YES));
-		document.add(
-				new TextField(SearchConstants.PURCHASE_DETAIL_KINDNAME_FIELD, purchaseDetail.getKiName(), Store.YES));
-		document.add(
-				new TextField(SearchConstants.PURCHASE_DETAIL_BRANDNAME_FIELD, purchaseDetail.getBrName(), Store.YES));
-		document.add(new StringField(SearchConstants.PURCHASE_DETAIL_STATUS_FIELD,
-				String.valueOf(purchaseDetail.getStatus()), Store.YES));
 		return document;
 	}
 
@@ -375,42 +291,11 @@ public class ObjectToDocumentUtils {
 				purchaseInvoice.getCreatetime().getTime(), Store.YES));
 		document.add(new StringField(SearchConstants.PURCHASE_INVOICE_STATUS_FIELD,
 				String.valueOf(purchaseInvoice.getStatus()), Store.YES));
-		return document;
-	}
-
-	/**
-	 * PurchaseInvoiceDetailSimpleInfo对象转为Document
-	 * 
-	 * @param purchaseInvoiceDetail
-	 *            PurchaseInvoiceDetailSimpleInfo对象
-	 * @return 转换的Document
-	 */
-	public static Document toDocument(PurchaseInvoiceDetailSimpleInfo purchaseInvoiceDetail) {
-		if (purchaseInvoiceDetail == null || purchaseInvoiceDetail.getId() == null
-				|| StringUtils.isEmpty(purchaseInvoiceDetail.getCode()) || purchaseInvoiceDetail.getInvoiceid() == null
-				|| purchaseInvoiceDetail.getDetno() == null || StringUtils.isEmpty(purchaseInvoiceDetail.getCmpCode())
-				|| StringUtils.isEmpty(purchaseInvoiceDetail.getKiName())
-				|| StringUtils.isEmpty(purchaseInvoiceDetail.getBrName())
-				|| purchaseInvoiceDetail.getStatus() == null) {
-			return null;
+		if (!CollectionUtils.isEmpty(purchaseInvoice.getDetails())) {
+			document.add(new TextField(SearchConstants.PURCHASE_INVOICE_DETAILS_FIELD,
+					JSONObject.toJSONString(purchaseInvoice.getDetails()), Store.YES));
 		}
-		Document document = new Document();
-		document.add(new StringField(SearchConstants.PURCHASE_INVOICE_DETAIL_ID_FIELD,
-				String.valueOf(purchaseInvoiceDetail.getId()), Store.YES));
-		document.add(new TextField(SearchConstants.PURCHASE_INVOICE_DETAIL_CODE_FIELD, purchaseInvoiceDetail.getCode(),
-				Store.YES));
-		document.add(new StringField(SearchConstants.PURCHASE_INVOICE_DETAIL_INVOICEID_FIELD,
-				String.valueOf(purchaseInvoiceDetail.getInvoiceid()), Store.YES));
-		document.add(new StringField(SearchConstants.PURCHASE_INVOICE_DETAIL_DETNO_FIELD,
-				String.valueOf(purchaseInvoiceDetail.getDetno()), Store.YES));
-		document.add(new TextField(SearchConstants.PURCHASE_INVOICE_DETAIL_COMPONENTCODE_FIELD,
-				purchaseInvoiceDetail.getCmpCode(), Store.YES));
-		document.add(new TextField(SearchConstants.PURCHASE_INVOICE_DETAIL_KINDNAME_FIELD,
-				purchaseInvoiceDetail.getKiName(), Store.YES));
-		document.add(new TextField(SearchConstants.PURCHASE_INVOICE_DETAIL_BRANDNAME_FIELD,
-				purchaseInvoiceDetail.getBrName(), Store.YES));
-		document.add(new StringField(SearchConstants.PURCHASE_INVOICE_DETAIL_STATUS_FIELD,
-				String.valueOf(purchaseInvoiceDetail.getStatus()), Store.YES));
 		return document;
 	}
+
 }

+ 25 - 159
search-console/src/main/java/com/uas/search/console/util/OrderSearchUtils.java

@@ -14,49 +14,7 @@ import com.uas.search.exception.SearchException;
 public class OrderSearchUtils {
 
 	/**
-	 * 获取主表对应的明细表名
-	 * 
-	 * @param tableName
-	 *            主表名
-	 * @return 明细表名
-	 */
-	public static String getDetailTableName(String tableName) {
-		if (tableName.equals(SearchConstants.ORDER_TABLE_NAME)) {
-			return SearchConstants.ORDER_DETAIL_TABLE_NAME;
-		} else if (tableName.equals(SearchConstants.ORDER_INVOICE_TABLE_NAME)) {
-			return SearchConstants.ORDER_INVOICE_DETAIL_TABLE_NAME;
-		} else if (tableName.equals(SearchConstants.PURCHASE_TABLE_NAME)) {
-			return SearchConstants.PURCHASE_DETAIL_TABLE_NAME;
-		} else if (tableName.equals(SearchConstants.PURCHASE_INVOICE_TABLE_NAME)) {
-			return SearchConstants.PURCHASE_INVOICE_DETAIL_TABLE_NAME;
-		} else {
-			throw new SearchException("表不存在或该表不是主表:" + tableName);
-		}
-	}
-
-	/**
-	 * 获取明细表对应的主表名
-	 * 
-	 * @param tableName
-	 *            明细表名
-	 * @return 主表名
-	 */
-	public static String getMainTableName(String tableName) {
-		if (tableName.equals(SearchConstants.ORDER_DETAIL_TABLE_NAME)) {
-			return SearchConstants.ORDER_TABLE_NAME;
-		} else if (tableName.equals(SearchConstants.ORDER_INVOICE_DETAIL_TABLE_NAME)) {
-			return SearchConstants.ORDER_INVOICE_TABLE_NAME;
-		} else if (tableName.equals(SearchConstants.PURCHASE_DETAIL_TABLE_NAME)) {
-			return SearchConstants.PURCHASE_TABLE_NAME;
-		} else if (tableName.equals(SearchConstants.PURCHASE_INVOICE_DETAIL_TABLE_NAME)) {
-			return SearchConstants.PURCHASE_INVOICE_TABLE_NAME;
-		} else {
-			throw new SearchException("表不存在或该表不是明细表:" + tableName);
-		}
-	}
-
-	/**
-	 * 获取表对应的关键词可以搜索的索引域
+	 * 获取每个表在搜索关键词时,所能搜索的索引域
 	 * 
 	 * @param tableName
 	 *            表名
@@ -69,69 +27,22 @@ public class OrderSearchUtils {
 			keywordFields.add(SearchConstants.ORDER_BUYERNAME_FIELD);
 			keywordFields.add(SearchConstants.ORDER_BUYERENNAME_FIELD);
 			keywordFields.add(SearchConstants.ORDER_SELLERENNAME_FIELD);
-		} else if (tableName.equals(SearchConstants.ORDER_DETAIL_TABLE_NAME)) {
-			keywordFields.add(SearchConstants.ORDER_DETAIL_CODE_FIELD);
-			keywordFields.add(SearchConstants.ORDER_DETAIL_COMPONENTCODE_FIELD);
-			keywordFields.add(SearchConstants.ORDER_DETAIL_KINDNAME_FIELD);
-			keywordFields.add(SearchConstants.ORDER_DETAIL_BRANDNAME_FIELD);
 		} else if (tableName.equals(SearchConstants.ORDER_INVOICE_TABLE_NAME)) {
 			keywordFields.add(SearchConstants.ORDER_INVOICE_CODE_FIELD);
 			keywordFields.add(SearchConstants.ORDER_INVOICE_BUYERNAME_FIELD);
 			keywordFields.add(SearchConstants.ORDER_INVOICE_BUYERENNAME_FIELD);
-		} else if (tableName.equals(SearchConstants.ORDER_INVOICE_DETAIL_TABLE_NAME)) {
-			keywordFields.add(SearchConstants.ORDER_INVOICE_DETAIL_CODE_FIELD);
-			keywordFields.add(SearchConstants.ORDER_INVOICE_DETAIL_COMPONENTCODE_FIELD);
-			keywordFields.add(SearchConstants.ORDER_INVOICE_DETAIL_KINDNAME_FIELD);
-			keywordFields.add(SearchConstants.ORDER_INVOICE_DETAIL_BRANDNAME_FIELD);
 		} else if (tableName.equals(SearchConstants.PURCHASE_TABLE_NAME)) {
 			keywordFields.add(SearchConstants.PURCHASE_CODE_FIELD);
 			keywordFields.add(SearchConstants.PURCHASE_SELLERENNAME_FIELD);
-		} else if (tableName.equals(SearchConstants.PURCHASE_DETAIL_TABLE_NAME)) {
-			keywordFields.add(SearchConstants.PURCHASE_DETAIL_CODE_FIELD);
-			keywordFields.add(SearchConstants.PURCHASE_DETAIL_COMPONENTCODE_FIELD);
-			keywordFields.add(SearchConstants.PURCHASE_DETAIL_KINDNAME_FIELD);
-			keywordFields.add(SearchConstants.PURCHASE_DETAIL_BRANDNAME_FIELD);
 		} else if (tableName.equals(SearchConstants.PURCHASE_INVOICE_TABLE_NAME)) {
 			keywordFields.add(SearchConstants.PURCHASE_INVOICE_CODE_FIELD);
 			keywordFields.add(SearchConstants.PURCHASE_INVOICE_SELLERENNAME_FIELD);
-		} else if (tableName.equals(SearchConstants.PURCHASE_INVOICE_DETAIL_TABLE_NAME)) {
-			keywordFields.add(SearchConstants.PURCHASE_INVOICE_DETAIL_CODE_FIELD);
-			keywordFields.add(SearchConstants.PURCHASE_INVOICE_DETAIL_COMPONENTCODE_FIELD);
-			keywordFields.add(SearchConstants.PURCHASE_INVOICE_DETAIL_KINDNAME_FIELD);
-			keywordFields.add(SearchConstants.PURCHASE_INVOICE_DETAIL_BRANDNAME_FIELD);
 		} else {
 			throw new SearchException("表不存在:" + tableName);
 		}
 		return keywordFields;
 	}
 
-	/**
-	 * 获取表对应的(非搜索词)可以过滤的索引域
-	 * 
-	 * @param tableName
-	 *            表名
-	 * @return 域的列表
-	 */
-	// TODO delete
-	public static List<String> getFilterFields(String tableName) {
-		List<String> filterFields = new ArrayList<>();
-		if (tableName.equals(SearchConstants.ORDER_TABLE_NAME)) {
-			filterFields.add(SearchConstants.ORDER_BUYERUU_FIELD);
-			filterFields.add(SearchConstants.ORDER_BUYERENUU_FIELD);
-			filterFields.add(SearchConstants.ORDER_SELLERENUU_FIELD);
-		} else if (tableName.equals(SearchConstants.ORDER_INVOICE_TABLE_NAME)) {
-			filterFields.add(SearchConstants.ORDER_INVOICE_BUYERUU_FIELD);
-			filterFields.add(SearchConstants.ORDER_INVOICE_BUYERENUU_FIELD);
-		} else if (tableName.equals(SearchConstants.PURCHASE_TABLE_NAME)) {
-			filterFields.add(SearchConstants.PURCHASE_SELLERENUU_FIELD);
-		} else if (tableName.equals(SearchConstants.PURCHASE_INVOICE_TABLE_NAME)) {
-			filterFields.add(SearchConstants.PURCHASE_INVOICE_SELLERENUU_FIELD);
-		} else {
-			throw new SearchException("表不存在或该表不能进行过滤:" + tableName);
-		}
-		return filterFields;
-	}
-
 	/**
 	 * 获取每个表在索引中的id域
 	 * 
@@ -142,20 +53,12 @@ public class OrderSearchUtils {
 	public static String getIdField(String tableName) {
 		if (tableName.equals(SearchConstants.ORDER_TABLE_NAME)) {
 			return SearchConstants.ORDER_ID_FIELD;
-		} else if (tableName.equals(SearchConstants.ORDER_DETAIL_TABLE_NAME)) {
-			return SearchConstants.ORDER_DETAIL_ID_FIELD;
 		} else if (tableName.equals(SearchConstants.ORDER_INVOICE_TABLE_NAME)) {
 			return SearchConstants.ORDER_INVOICE_ID_FIELD;
-		} else if (tableName.equals(SearchConstants.ORDER_INVOICE_DETAIL_TABLE_NAME)) {
-			return SearchConstants.ORDER_INVOICE_DETAIL_ID_FIELD;
 		} else if (tableName.equals(SearchConstants.PURCHASE_TABLE_NAME)) {
 			return SearchConstants.PURCHASE_ID_FIELD;
-		} else if (tableName.equals(SearchConstants.PURCHASE_DETAIL_TABLE_NAME)) {
-			return SearchConstants.PURCHASE_DETAIL_ID_FIELD;
 		} else if (tableName.equals(SearchConstants.PURCHASE_INVOICE_TABLE_NAME)) {
 			return SearchConstants.PURCHASE_INVOICE_ID_FIELD;
-		} else if (tableName.equals(SearchConstants.PURCHASE_INVOICE_DETAIL_TABLE_NAME)) {
-			return SearchConstants.PURCHASE_INVOICE_DETAIL_ID_FIELD;
 		} else {
 			throw new SearchException("表不存在:" + tableName);
 		}
@@ -171,20 +74,12 @@ public class OrderSearchUtils {
 	public static String getCodeField(String tableName) {
 		if (tableName.equals(SearchConstants.ORDER_TABLE_NAME)) {
 			return SearchConstants.ORDER_CODE_FIELD;
-		} else if (tableName.equals(SearchConstants.ORDER_DETAIL_TABLE_NAME)) {
-			return SearchConstants.ORDER_DETAIL_CODE_FIELD;
 		} else if (tableName.equals(SearchConstants.ORDER_INVOICE_TABLE_NAME)) {
 			return SearchConstants.ORDER_INVOICE_CODE_FIELD;
-		} else if (tableName.equals(SearchConstants.ORDER_INVOICE_DETAIL_TABLE_NAME)) {
-			return SearchConstants.ORDER_INVOICE_DETAIL_CODE_FIELD;
 		} else if (tableName.equals(SearchConstants.PURCHASE_TABLE_NAME)) {
 			return SearchConstants.PURCHASE_CODE_FIELD;
-		} else if (tableName.equals(SearchConstants.PURCHASE_DETAIL_TABLE_NAME)) {
-			return SearchConstants.PURCHASE_DETAIL_CODE_FIELD;
 		} else if (tableName.equals(SearchConstants.PURCHASE_INVOICE_TABLE_NAME)) {
 			return SearchConstants.PURCHASE_INVOICE_CODE_FIELD;
-		} else if (tableName.equals(SearchConstants.PURCHASE_INVOICE_DETAIL_TABLE_NAME)) {
-			return SearchConstants.PURCHASE_INVOICE_DETAIL_CODE_FIELD;
 		} else {
 			throw new SearchException("表不存在:" + tableName);
 		}
@@ -200,27 +95,40 @@ public class OrderSearchUtils {
 	public static String getStatusField(String tableName) {
 		if (tableName.equals(SearchConstants.ORDER_TABLE_NAME)) {
 			return SearchConstants.ORDER_STATUS_FIELD;
-		} else if (tableName.equals(SearchConstants.ORDER_DETAIL_TABLE_NAME)) {
-			return SearchConstants.ORDER_DETAIL_STATUS_FIELD;
 		} else if (tableName.equals(SearchConstants.ORDER_INVOICE_TABLE_NAME)) {
 			return SearchConstants.ORDER_INVOICE_STATUS_FIELD;
-		} else if (tableName.equals(SearchConstants.ORDER_INVOICE_DETAIL_TABLE_NAME)) {
-			return SearchConstants.ORDER_INVOICE_DETAIL_STATUS_FIELD;
 		} else if (tableName.equals(SearchConstants.PURCHASE_TABLE_NAME)) {
 			return SearchConstants.PURCHASE_STATUS_FIELD;
-		} else if (tableName.equals(SearchConstants.PURCHASE_DETAIL_TABLE_NAME)) {
-			return SearchConstants.PURCHASE_DETAIL_STATUS_FIELD;
 		} else if (tableName.equals(SearchConstants.PURCHASE_INVOICE_TABLE_NAME)) {
 			return SearchConstants.PURCHASE_INVOICE_STATUS_FIELD;
-		} else if (tableName.equals(SearchConstants.PURCHASE_INVOICE_DETAIL_TABLE_NAME)) {
-			return SearchConstants.PURCHASE_INVOICE_DETAIL_STATUS_FIELD;
 		} else {
 			throw new SearchException("表不存在:" + tableName);
 		}
 	}
 
 	/**
-	 * 获取主表在索引中的buyeruu域
+	 * 获取每个表在索引中的明细details域
+	 * 
+	 * @param tableName
+	 *            表名
+	 * @return details域
+	 */
+	public static String getDetailsField(String tableName) {
+		if (tableName.equals(SearchConstants.ORDER_TABLE_NAME)) {
+			return SearchConstants.ORDER_DETAILS_FIELD;
+		} else if (tableName.equals(SearchConstants.ORDER_INVOICE_TABLE_NAME)) {
+			return SearchConstants.ORDER_INVOICE_DETAILS_FIELD;
+		} else if (tableName.equals(SearchConstants.PURCHASE_TABLE_NAME)) {
+			return SearchConstants.PURCHASE_DETAILS_FIELD;
+		} else if (tableName.equals(SearchConstants.PURCHASE_INVOICE_TABLE_NAME)) {
+			return SearchConstants.PURCHASE_INVOICE_DETAILS_FIELD;
+		} else {
+			throw new SearchException("表不存在:" + tableName);
+		}
+	}
+
+	/**
+	 * 获取每个表在索引中的buyeruu域
 	 * 
 	 * @param tableName
 	 *            表名
@@ -235,7 +143,7 @@ public class OrderSearchUtils {
 	}
 
 	/**
-	 * 获取表在索引中的buyerenuu域
+	 * 获取每个表在索引中的buyerenuu域
 	 * 
 	 * @param tableName
 	 *            表名
@@ -252,7 +160,7 @@ public class OrderSearchUtils {
 	}
 
 	/**
-	 * 获取表在索引中的sellerenuu域
+	 * 获取每个表在索引中的sellerenuu域
 	 * 
 	 * @param tableName
 	 *            表名
@@ -270,46 +178,4 @@ public class OrderSearchUtils {
 		}
 	}
 
-	/**
-	 * 获取明细表在索引中的detno域
-	 * 
-	 * @param tableName
-	 *            表名
-	 * @return detno域
-	 */
-	public static String getDetnoField(String tableName) {
-		if (tableName.equals(SearchConstants.ORDER_DETAIL_TABLE_NAME)) {
-			return SearchConstants.ORDER_DETAIL_DETNO_FIELD;
-		} else if (tableName.equals(SearchConstants.ORDER_INVOICE_DETAIL_TABLE_NAME)) {
-			return SearchConstants.ORDER_INVOICE_DETAIL_DETNO_FIELD;
-		} else if (tableName.equals(SearchConstants.PURCHASE_DETAIL_TABLE_NAME)) {
-			return SearchConstants.PURCHASE_DETAIL_DETNO_FIELD;
-		} else if (tableName.equals(SearchConstants.PURCHASE_INVOICE_DETAIL_TABLE_NAME)) {
-			return SearchConstants.PURCHASE_INVOICE_DETAIL_DETNO_FIELD;
-		} else {
-			throw new SearchException("表不存在或该表不是明细表:" + tableName);
-		}
-	}
-
-	/**
-	 * 获取明细表中主表id(外键)在索引中的域
-	 * 
-	 * @param tableName
-	 *            表名
-	 * @return 主表id(外键)在索引中的域
-	 */
-	public static String getDetailTableForeignIdField(String tableName) {
-		if (tableName.equals(SearchConstants.ORDER_DETAIL_TABLE_NAME)) {
-			return SearchConstants.ORDER_DETAIL_ORDERID_FIELD;
-		} else if (tableName.equals(SearchConstants.ORDER_INVOICE_DETAIL_TABLE_NAME)) {
-			return SearchConstants.ORDER_INVOICE_DETAIL_INVOICEID_FIELD;
-		} else if (tableName.equals(SearchConstants.PURCHASE_DETAIL_TABLE_NAME)) {
-			return SearchConstants.PURCHASE_DETAIL_PURCHASEID_FIELD;
-		} else if (tableName.equals(SearchConstants.PURCHASE_INVOICE_DETAIL_TABLE_NAME)) {
-			return SearchConstants.PURCHASE_INVOICE_DETAIL_INVOICEID_FIELD;
-		} else {
-			throw new SearchException("表不存在或该表不是明细表:" + tableName);
-		}
-	}
-
 }

+ 4 - 96
search-console/src/main/java/com/uas/search/console/util/SearchConstants.java

@@ -58,41 +58,21 @@ public class SearchConstants {
 	 */
 	public static final String ORDER_TABLE_NAME = "trade$order";
 
-	/**
-	 * 商城销售订单明细表名
-	 */
-	public static final String ORDER_DETAIL_TABLE_NAME = "trade$order_detail";
-
 	/**
 	 * 商城销售订单的发货单表名
 	 */
 	public static final String ORDER_INVOICE_TABLE_NAME = "trade$invoice_fmor";
 
-	/**
-	 * 商城销售订单的发货单明细表名
-	 */
-	public static final String ORDER_INVOICE_DETAIL_TABLE_NAME = "trade$invoice_fmor_dt";
-
 	/**
 	 * 商城采购订单表名
 	 */
 	public static final String PURCHASE_TABLE_NAME = "trade$purchase";
 
-	/**
-	 * 商城采购订单明细表名
-	 */
-	public static final String PURCHASE_DETAIL_TABLE_NAME = "trade$purchase_detail";
-
 	/**
 	 * 商城采购订单的发货单表名
 	 */
 	public static final String PURCHASE_INVOICE_TABLE_NAME = "trade$invoice_fmpu";
 
-	/**
-	 * 商城采购订单的发货单明细表名
-	 */
-	public static final String PURCHASE_INVOICE_DETAIL_TABLE_NAME = "trade$invoice_fmpu_dt";
-
 	/**
 	 * 索引文件存储路径
 	 */
@@ -162,25 +142,7 @@ public class SearchConstants {
 	public static final String ORDER_SELLERENNAME_FIELD = "or_sellerenname";
 	public static final String ORDER_CREATETIME_FIELD = "or_createtime";
 	public static final String ORDER_STATUS_FIELD = "or_status";
-
-	// 商城销售订单明细索引字段的key
-	/**
-	 * 对应商城销售订单明细id(数据库id字段)
-	 */
-	public static final String ORDER_DETAIL_ID_FIELD = "od_id";
-	/**
-	 * 对应商城销售订单明细编号(数据库detail_id字段),因易与id命名混淆,其他类、lucenne建索引时该字段难以区分,特以此命名
-	 */
-	public static final String ORDER_DETAIL_CODE_FIELD = "od_code";
-	/**
-	 * 外键销售单id,对应数据库trade$order表中id字段,而非or_id字段
-	 */
-	public static final String ORDER_DETAIL_ORDERID_FIELD = "od_orderid";
-	public static final String ORDER_DETAIL_DETNO_FIELD = "od_detno";
-	public static final String ORDER_DETAIL_COMPONENTCODE_FIELD = "od_cmpcode";
-	public static final String ORDER_DETAIL_KINDNAME_FIELD = "od_kiname";
-	public static final String ORDER_DETAIL_BRANDNAME_FIELD = "od_brname";
-	public static final String ORDER_DETAIL_STATUS_FIELD = "od_status";
+	public static final String ORDER_DETAILS_FIELD = "or_details";
 
 	// 商城销售订单的发货单索引字段的key
 	/**
@@ -197,25 +159,7 @@ public class SearchConstants {
 	public static final String ORDER_INVOICE_BUYERENNAME_FIELD = "oi_buyerenname";
 	public static final String ORDER_INVOICE_CREATETIME_FIELD = "oi_createtime";
 	public static final String ORDER_INVOICE_STATUS_FIELD = "oi_status";
-
-	// 商城销售订单的发货单明细索引字段的key
-	/**
-	 * 对应商城销售订单的发货单明细id(数据库id字段)
-	 */
-	public static final String ORDER_INVOICE_DETAIL_ID_FIELD = "oid_id";
-	/**
-	 * 对应商城销售订单的发货单明细编号(数据库detail_id字段),因易与id命名混淆,其他类、lucenne建索引时该字段难以区分,特以此命名
-	 */
-	public static final String ORDER_INVOICE_DETAIL_CODE_FIELD = "oid_code";
-	/**
-	 * 外键商城销售订单的发货单id,对应数据库trade$invoice_fmor表中id字段,而非in_id字段
-	 */
-	public static final String ORDER_INVOICE_DETAIL_INVOICEID_FIELD = "oid_invoiceid";
-	public static final String ORDER_INVOICE_DETAIL_DETNO_FIELD = "oid_detno";
-	public static final String ORDER_INVOICE_DETAIL_COMPONENTCODE_FIELD = "oid_cmpcode";
-	public static final String ORDER_INVOICE_DETAIL_KINDNAME_FIELD = "oid_kiname";
-	public static final String ORDER_INVOICE_DETAIL_BRANDNAME_FIELD = "oid_brname";
-	public static final String ORDER_INVOICE_DETAIL_STATUS_FIELD = "oid_status";
+	public static final String ORDER_INVOICE_DETAILS_FIELD = "oi_details";
 
 	// 商城采购订单索引字段的key
 	/**
@@ -230,25 +174,7 @@ public class SearchConstants {
 	public static final String PURCHASE_SELLERENNAME_FIELD = "pu_sellerenname";
 	public static final String PURCHASE_CREATETIME_FIELD = "pu_createtime";
 	public static final String PURCHASE_STATUS_FIELD = "pu_status";
-
-	// 商城采购订单明细索引字段的key
-	/**
-	 * 对应商城采购订单明细id(数据库id字段)
-	 */
-	public static final String PURCHASE_DETAIL_ID_FIELD = "pd_id";
-	/**
-	 * 对应商城采购订单明细编号(数据库detail_id字段),因易与id命名混淆,其他类、lucenne建索引时该字段难以区分,特以此命名
-	 */
-	public static final String PURCHASE_DETAIL_CODE_FIELD = "pd_code";
-	/**
-	 * 外键采购单id,对应数据库trade$purchase表中id字段,而非pu_id字段
-	 */
-	public static final String PURCHASE_DETAIL_PURCHASEID_FIELD = "pd_purchaseid";
-	public static final String PURCHASE_DETAIL_DETNO_FIELD = "pd_detno";
-	public static final String PURCHASE_DETAIL_COMPONENTCODE_FIELD = "pd_cmpcode";
-	public static final String PURCHASE_DETAIL_KINDNAME_FIELD = "pd_kiname";
-	public static final String PURCHASE_DETAIL_BRANDNAME_FIELD = "pd_brname";
-	public static final String PURCHASE_DETAIL_STATUS_FIELD = "pd_status";
+	public static final String PURCHASE_DETAILS_FIELD = "pu_details";
 
 	// 商城采购订单的发货单索引字段的key
 	/**
@@ -263,24 +189,6 @@ public class SearchConstants {
 	public static final String PURCHASE_INVOICE_SELLERENNAME_FIELD = "pi_sellerenname";
 	public static final String PURCHASE_INVOICE_CREATETIME_FIELD = "pi_createtime";
 	public static final String PURCHASE_INVOICE_STATUS_FIELD = "pi_status";
-
-	// 商城采购订单的发货单明细索引字段的key
-	/**
-	 * 对应商城采购订单的发货单明细id(数据库id字段)
-	 */
-	public static final String PURCHASE_INVOICE_DETAIL_ID_FIELD = "pid_id";
-	/**
-	 * 对应商城采购订单的发货单明细编号(数据库detail_id字段),因易与id命名混淆,其他类、lucenne建索引时该字段难以区分,特以此命名
-	 */
-	public static final String PURCHASE_INVOICE_DETAIL_CODE_FIELD = "pid_code";
-	/**
-	 * 商城采购订单的发货单id(外键),对应数据库trade$invoice_fmpu_dt表中id字段,而非in_id字段
-	 */
-	public static final String PURCHASE_INVOICE_DETAIL_INVOICEID_FIELD = "pid_invoiceid";
-	public static final String PURCHASE_INVOICE_DETAIL_DETNO_FIELD = "pid_detno";
-	public static final String PURCHASE_INVOICE_DETAIL_COMPONENTCODE_FIELD = "pid_cmpcode";
-	public static final String PURCHASE_INVOICE_DETAIL_KINDNAME_FIELD = "pid_kiname";
-	public static final String PURCHASE_INVOICE_DETAIL_BRANDNAME_FIELD = "pid_brname";
-	public static final String PURCHASE_INVOICE_DETAIL_STATUS_FIELD = "pid_status";
+	public static final String PURCHASE_INVOICE_DETAILS_FIELD = "pi_details";
 
 }