Browse Source

增加创建单据索引的接口

sunyj 9 years ago
parent
commit
f83ab536e7

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

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

+ 8 - 0
search-console/src/main/java/com/uas/search/console/model/OrderInvoiceDetailSimpleInfo.java

@@ -63,6 +63,14 @@ public class OrderInvoiceDetailSimpleInfo {
 		this.id = id;
 	}
 
+	public Long getInvoiceid() {
+		return invoiceid;
+	}
+
+	public void setInvoiceid(Long invoiceid) {
+		this.invoiceid = invoiceid;
+	}
+
 	public Short getDetno() {
 		return detno;
 	}

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

@@ -27,7 +27,7 @@ public class OrderInvoiceSimpleInfo implements Serializable {
 	private Long id;
 
 	/**
-	 * 发货单号,因数据库id与or_id命名混乱,其他类、lucenne建索引时该字段容易混淆,特以此命名
+	 * 发货单号,因易与id命名混淆,其他类、lucenne建索引时该字段难以区分,特以此命名
 	 */
 	@Column(name = "in_id", unique = true)
 	private String code;
@@ -59,7 +59,7 @@ public class OrderInvoiceSimpleInfo implements Serializable {
 	 * 单生成时间
 	 */
 	@Column(name = "in_creattime")
-	private Date creattime;
+	private Date createtime;
 
 	public Long getId() {
 		return id;
@@ -93,12 +93,12 @@ public class OrderInvoiceSimpleInfo implements Serializable {
 		this.buyername = buyername;
 	}
 
-	public Date getCreattime() {
-		return creattime;
+	public Date getCreatetime() {
+		return createtime;
 	}
 
-	public void setCreattime(Date creattime) {
-		this.creattime = creattime;
+	public void setCreatetime(Date createtime) {
+		this.createtime = createtime;
 	}
 
 	public EnterpriseSimpleInfo getBuyerEnterprise() {
@@ -112,7 +112,7 @@ public class OrderInvoiceSimpleInfo implements Serializable {
 	@Override
 	public String toString() {
 		return "OrderInvoiceSimpleInfo [id=" + id + ", code=" + code + ", buyeruu=" + buyeruu + ", buyername="
-				+ buyername + ", buyerEnterprise=" + buyerEnterprise + ", creattime=" + creattime + "]";
+				+ buyername + ", buyerEnterprise=" + buyerEnterprise + ", createtime=" + createtime + "]";
 	}
 
 }

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

@@ -68,7 +68,7 @@ public class OrderSimpleInfo implements Serializable {
 	 * 订单生成时间
 	 */
 	@Column(name = "or_creattime")
-	private Date creattime;
+	private Date createtime;
 
 	public Long getId() {
 		return id;
@@ -118,19 +118,19 @@ public class OrderSimpleInfo implements Serializable {
 		this.sellerEnterprise = sellerEnterprise;
 	}
 
-	public Date getCreattime() {
-		return creattime;
+	public Date getCreatetime() {
+		return createtime;
 	}
 
-	public void setCreattime(Date creattime) {
-		this.creattime = creattime;
+	public void setCreatetime(Date createtime) {
+		this.createtime = createtime;
 	}
 
 	@Override
 	public String toString() {
 		return "OrderSimpleInfo [id=" + id + ", code=" + code + ", buyeruu=" + buyeruu + ", buyername=" + buyername
-				+ ", buyerEnterprise=" + buyerEnterprise + ", sellerEnterprise=" + sellerEnterprise + ", creattime="
-				+ creattime + "]";
+				+ ", buyerEnterprise=" + buyerEnterprise + ", sellerEnterprise=" + sellerEnterprise + ", createtime="
+				+ createtime + "]";
 	}
 
 }

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

@@ -42,13 +42,13 @@ public class PurchaseInvoiceSimpleInfo implements Serializable {
 	 * 卖方企业名称
 	 */
 	@Column(name = "in_sellername")
-	private String sellername;
+	private String sellerenname;
 
 	/**
 	 * 单生成时间
 	 */
 	@Column(name = "in_creattime")
-	private Date creattime;
+	private Date createtime;
 
 	public Long getId() {
 		return id;
@@ -74,26 +74,26 @@ public class PurchaseInvoiceSimpleInfo implements Serializable {
 		this.sellerenuu = sellerenuu;
 	}
 
-	public String getSellername() {
-		return sellername;
+	public String getSellerenname() {
+		return sellerenname;
 	}
 
-	public void setSellername(String sellername) {
-		this.sellername = sellername;
+	public void setSellerenname(String sellerenname) {
+		this.sellerenname = sellerenname;
 	}
 
-	public Date getCreattime() {
-		return creattime;
+	public Date getCreatetime() {
+		return createtime;
 	}
 
-	public void setCreattime(Date creattime) {
-		this.creattime = creattime;
+	public void setCreatetime(Date createtime) {
+		this.createtime = createtime;
 	}
 
 	@Override
 	public String toString() {
-		return "PurchaseInvoiceSimpleInfo [id=" + id + ", code=" + code + ", sellerenuu=" + sellerenuu + ", sellername="
-				+ sellername + ", creattime=" + creattime + "]";
+		return "PurchaseInvoiceSimpleInfo [id=" + id + ", code=" + code + ", sellerenuu=" + sellerenuu + ", sellerenname="
+				+ sellerenname + ", createtime=" + createtime + "]";
 	}
 
 }

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

@@ -41,7 +41,7 @@ public class PurchaseSimpleInfo implements Serializable {
 	 * 卖方企业名称
 	 */
 	@Column(name = "pu_sellername")
-	private String sellername;
+	private String sellerenname;
 
 	/**
 	 * 单生成时间
@@ -73,12 +73,12 @@ public class PurchaseSimpleInfo implements Serializable {
 		this.sellerenuu = sellerenuu;
 	}
 
-	public String getSellername() {
-		return sellername;
+	public String getSellerenname() {
+		return sellerenname;
 	}
 
-	public void setSellername(String sellername) {
-		this.sellername = sellername;
+	public void setSellerenname(String sellerenname) {
+		this.sellerenname = sellerenname;
 	}
 
 	public Date getCreatetime() {
@@ -91,8 +91,8 @@ public class PurchaseSimpleInfo implements Serializable {
 
 	@Override
 	public String toString() {
-		return "PurchaseSimpleInfo [id=" + id + ", code=" + code + ", sellerenuu=" + sellerenuu + ", sellername="
-				+ sellername + ", createtime=" + createtime + "]";
+		return "PurchaseSimpleInfo [id=" + id + ", code=" + code + ", sellerenuu=" + sellerenuu + ", sellerenname="
+				+ sellerenname + ", createtime=" + createtime + "]";
 	}
 
 }

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

@@ -39,4 +39,20 @@ public interface IndexService {
 	 */
 	public void delete(Object obj);
 
+	public Long createOrderIndexes();
+
+	public Long createOrderDetailIndexes();
+
+	public Long createOrderInvoiceIndexes();
+
+	public Long createOrderInvoiceDetailIndexes();
+
+	public Long createPurchaseIndexes();
+
+	public Long createPurchaseDetailIndexes();
+
+	public Long createPurchaseInvoiceIndexes();
+
+	public Long createPurchaseInvoiceDetailIndexes();
+
 }

+ 164 - 0
search-console/src/main/java/com/uas/search/console/service/impl/IndexServiceImpl.java

@@ -30,13 +30,30 @@ 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.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.PropertyValue;
+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;
 import com.uas.search.console.support.IndexWriterManager;
 import com.uas.search.console.util.MergeComponentData;
+import com.uas.search.console.util.ObjectToDocumentUtils;
 import com.uas.search.console.util.SearchConstants;
 
 /**
@@ -57,6 +74,30 @@ public class IndexServiceImpl implements IndexService {
 	@Autowired
 	private ComponentSimpleInfoDao componentDao;
 
+	@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;
@@ -109,6 +150,41 @@ public class IndexServiceImpl implements IndexService {
 			Long componentTime = new Date().getTime();
 			logger.info("创建器件索引: " + componentSize + "条,耗时 " + (componentTime - brandTime) + " ms\n");
 
+			Long orderSize = createOrderIndexes();
+			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");
+
+			Long purchaseSize = createPurchaseIndexes();
+			Long purchaseTime = new Date().getTime();
+			logger.info("创建采购单索引: " + purchaseSize + "条,耗时 " + (purchaseTime - orderInvoiceDetailTime) + " ms\n");
+
+			Long purchaseDetailSize = createPurchaseDetailIndexes();
+			Long purchaseDetailTime = new Date().getTime();
+			logger.info("创建采购单明细索引: " + purchaseDetailSize + "条,耗时 " + (purchaseDetailTime - purchaseTime) + " ms\n");
+
+			Long purchaseInvoiceSize = createPurchaseInvoiceIndexes();
+			Long purchaseInvoiceTime = new Date().getTime();
+			logger.info("创建采购单发货单索引: " + purchaseInvoiceSize + "条,耗时 " + (purchaseInvoiceTime - purchaseDetailTime)
+					+ " ms\n");
+
+			Long purchaseInvoiceDetailSize = createPurchaseInvoiceDetailIndexes();
+			Long purchaseInvoiceDetailTime = new Date().getTime();
+			logger.info("创建采购单发货单明细索引: " + purchaseInvoiceDetailSize + "条,耗时 "
+					+ (purchaseInvoiceDetailTime - purchaseInvoiceTime) + " ms\n");
+
 			logger.info("索引创建成功, 共用时间 " + (componentTime - startTime) + " ms");
 
 			return componentTime - startTime;
@@ -256,6 +332,93 @@ public class IndexServiceImpl implements IndexService {
 		return size;
 	}
 
+	/**
+	 * 利用对象数组创建索引
+	 * 
+	 * @param objects
+	 *            对象数组,可为OrderSimpleInfo、OrderDetailSimpleInfo、
+	 *            OrderInvoiceSimpleInfo、OrderInvoiceDetailSimpleInfo、
+	 *            PurchaseSimpleInfo、PurchaseDetailSimpleInfo、
+	 *            PurchaseInvoiceSimpleInfo、PurchaseInvoiceDetailSimpleInfo
+	 * @return 对象数组的数量
+	 */
+	public Long createIndexesWithObjects(Object[] objects) {
+		if (objects == null || objects.length < 1)
+			return 0L;
+
+		try {
+			indexWriter = indexWriterManager.get();
+			for (Object object : objects) {
+				Document document = ObjectToDocumentUtils.toDocument(object);
+				if (document != null) {
+					indexWriter.addDocument(document);
+				}
+			}
+			indexWriter.commit();
+		} catch (IOException | InterruptedException e) {
+			e.printStackTrace();
+		} finally {
+			indexWriterManager.release();
+		}
+		return (long) objects.length;
+	}
+
+	@Override
+	public Long createOrderIndexes() {
+		logger.info("正在创建销售单索引...");
+		List<OrderSimpleInfo> orders = orderDao.findAll();
+		return createIndexesWithObjects(orders.toArray());
+	}
+
+	@Override
+	public Long createOrderDetailIndexes() {
+		logger.info("正在创建销售单明细索引...");
+		List<OrderDetailSimpleInfo> orderDetails = orderDetailDao.findAll();
+		return createIndexesWithObjects(orderDetails.toArray());
+	}
+
+	@Override
+	public Long createOrderInvoiceIndexes() {
+		logger.info("正在创建销售单发货单索引...");
+		List<OrderInvoiceSimpleInfo> orderInvoices = orderInvoiceDao.findAll();
+		return createIndexesWithObjects(orderInvoices.toArray());
+	}
+
+	@Override
+	public Long createOrderInvoiceDetailIndexes() {
+		logger.info("正在创建销售单发货单明细索引...");
+		List<OrderInvoiceDetailSimpleInfo> orderInvoiceDetails = orderInvoiceDetailDao.findAll();
+		return createIndexesWithObjects(orderInvoiceDetails.toArray());
+	}
+
+	@Override
+	public Long createPurchaseIndexes() {
+		logger.info("正在创建采购单索引...");
+		List<PurchaseSimpleInfo> purchases = purchaseDao.findAll();
+		return createIndexesWithObjects(purchases.toArray());
+	}
+
+	@Override
+	public Long createPurchaseDetailIndexes() {
+		logger.info("正在创建采购单明细索引...");
+		List<PurchaseDetailSimpleInfo> purchaseDetails = purchaseDetailDao.findAll();
+		return createIndexesWithObjects(purchaseDetails.toArray());
+	}
+
+	@Override
+	public Long createPurchaseInvoiceIndexes() {
+		logger.info("正在创建采购单发货单索引...");
+		List<PurchaseInvoiceSimpleInfo> purchaseInvoices = purchaseInvoiceDao.findAll();
+		return createIndexesWithObjects(purchaseInvoices.toArray());
+	}
+
+	@Override
+	public Long createPurchaseInvoiceDetailIndexes() {
+		logger.info("正在创建采购单发货单明细索引...");
+		List<PurchaseInvoiceDetailSimpleInfo> purchaseInvoiceDetails = purchaseInvoiceDetailDao.findAll();
+		return createIndexesWithObjects(purchaseInvoiceDetails.toArray());
+	}
+
 	/**
 	 * KindSimpleInfo对象转为Document
 	 * 
@@ -468,4 +631,5 @@ public class IndexServiceImpl implements IndexService {
 		}
 		logger.info("Deleted... " + obj + "\n");
 	}
+
 }

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

@@ -0,0 +1,297 @@
+package com.uas.search.console.util;
+
+import org.apache.log4j.Logger;
+import org.apache.lucene.document.Document;
+import org.apache.lucene.document.Field.Store;
+import org.apache.lucene.document.StringField;
+import org.apache.lucene.document.TextField;
+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;
+
+/**
+ * 将对象转换为Document的工具类
+ * 
+ * @author sunyj
+ * @since 2016年10月17日 上午11:32:19
+ */
+public class ObjectToDocumentUtils {
+
+	private static Logger logger = Logger.getLogger(ObjectToDocumentUtils.class);
+
+	/**
+	 * 将对象转为Document
+	 * 
+	 * @param object
+	 *            对象,可为OrderSimpleInfo、OrderDetailSimpleInfo、
+	 *            OrderInvoiceSimpleInfo、OrderInvoiceDetailSimpleInfo、
+	 *            PurchaseSimpleInfo、PurchaseDetailSimpleInfo、
+	 *            PurchaseInvoiceSimpleInfo、PurchaseInvoiceDetailSimpleInfo
+	 * @return 转换的Document
+	 */
+	public static Document toDocument(Object object) {
+		if (object == null) {
+			return null;
+		}
+		logger.info(object);
+		if (object instanceof OrderSimpleInfo) {
+			return toDocument((OrderSimpleInfo) object);
+		} else if (object instanceof OrderDetailSimpleInfo) {
+			return toDocument((OrderDetailSimpleInfo) object);
+		} else if (object instanceof OrderInvoiceSimpleInfo) {
+			return toDocument((OrderInvoiceSimpleInfo) object);
+		} else if (object instanceof OrderInvoiceDetailSimpleInfo) {
+			return toDocument((OrderInvoiceDetailSimpleInfo) object);
+		} else if (object instanceof PurchaseSimpleInfo) {
+			return toDocument((PurchaseSimpleInfo) object);
+		} else if (object instanceof PurchaseDetailSimpleInfo) {
+			return toDocument((PurchaseDetailSimpleInfo) object);
+		} else if (object instanceof PurchaseInvoiceSimpleInfo) {
+			return toDocument((PurchaseInvoiceSimpleInfo) object);
+		} else if (object instanceof PurchaseInvoiceDetailSimpleInfo) {
+			return toDocument((PurchaseInvoiceDetailSimpleInfo) object);
+		}
+
+		return null;
+	}
+
+	/**
+	 * OrderSimpleInfo对象转为Document
+	 * 
+	 * @param order
+	 *            OrderSimpleInfo对象
+	 * @return 转换的Document
+	 */
+	public static Document toDocument(OrderSimpleInfo order) {
+		if (order == null || order.getId() == null || StringUtils.isEmpty(order.getCode()) || order.getBuyeruu() == null
+				|| StringUtils.isEmpty(order.getBuyername()) || order.getBuyerEnterprise() == null
+				|| order.getBuyerEnterprise().getUu() == null
+				|| StringUtils.isEmpty(order.getBuyerEnterprise().getEnName()) || order.getSellerEnterprise() == null
+				|| order.getSellerEnterprise().getUu() == null
+				|| StringUtils.isEmpty(order.getSellerEnterprise().getEnName()) || order.getCreatetime() == null) {
+			return null;
+		}
+		Document document = new Document();
+		document.add(new StringField(SearchConstants.ORDER_ID_FIELD, String.valueOf(order.getId()), Store.YES));
+		document.add(new TextField(SearchConstants.ORDER_CODE_FIELD, order.getCode(), Store.YES));
+		document.add(new StringField(SearchConstants.ORDER_BUYERUSERUU_FIELD, String.valueOf(order.getBuyeruu()),
+				Store.YES));
+		document.add(new TextField(SearchConstants.ORDER_BUYERUSERNAME_FIELD, order.getBuyername(), Store.YES));
+		document.add(new StringField(SearchConstants.ORDER_BUYERENUU_FIELD,
+				String.valueOf(order.getBuyerEnterprise().getUu()), Store.YES));
+		document.add(new TextField(SearchConstants.ORDER_BUYERENNAME_FIELD, order.getBuyerEnterprise().getEnName(),
+				Store.YES));
+		document.add(new StringField(SearchConstants.ORDER_SELLERENUU_FIELD,
+				String.valueOf(order.getSellerEnterprise().getUu()), Store.YES));
+		document.add(new TextField(SearchConstants.ORDER_SELLERENNAME_FIELD, order.getSellerEnterprise().getEnName(),
+				Store.YES));
+		document.add(
+				new StringField(SearchConstants.ORDER_CREATETIME_FIELD, order.getCreatetime().toString(), 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 || StringUtils.isEmpty(orderDetail.getCmpCode())
+				|| StringUtils.isEmpty(orderDetail.getKiName()) || StringUtils.isEmpty(orderDetail.getBrName())) {
+			return null;
+		}
+		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 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));
+		return document;
+	}
+
+	/**
+	 * OrderInvoiceSimpleInfo对象转为Document
+	 * 
+	 * @param orderInvoice
+	 *            OrderInvoiceSimpleInfo对象
+	 * @return 转换的Document
+	 */
+	public static Document toDocument(OrderInvoiceSimpleInfo orderInvoice) {
+		if (orderInvoice == null || orderInvoice.getId() == null || StringUtils.isEmpty(orderInvoice.getCode())
+				|| orderInvoice.getBuyeruu() == null || StringUtils.isEmpty(orderInvoice.getBuyername())
+				|| orderInvoice.getBuyerEnterprise() == null || orderInvoice.getBuyerEnterprise().getUu() == null
+				|| StringUtils.isEmpty(orderInvoice.getBuyerEnterprise().getEnName())
+				|| orderInvoice.getCreatetime() == null) {
+			return null;
+		}
+		Document document = new Document();
+		document.add(new StringField(SearchConstants.ORDER_INVOICE_ID_FIELD, String.valueOf(orderInvoice.getId()),
+				Store.YES));
+		document.add(new TextField(SearchConstants.ORDER_INVOICE_CODE_FIELD, orderInvoice.getCode(), Store.YES));
+		document.add(new StringField(SearchConstants.ORDER_INVOICE_BUYERUSERUU_FIELD,
+				String.valueOf(orderInvoice.getBuyeruu()), Store.YES));
+		document.add(new TextField(SearchConstants.ORDER_INVOICE_BUYERUSERNAME_FIELD, orderInvoice.getBuyername(),
+				Store.YES));
+		document.add(new StringField(SearchConstants.ORDER_INVOICE_BUYERENUU_FIELD,
+				String.valueOf(orderInvoice.getBuyerEnterprise().getUu()), Store.YES));
+		document.add(new TextField(SearchConstants.ORDER_INVOICE_BUYERENNAME_FIELD,
+				orderInvoice.getBuyerEnterprise().getEnName(), Store.YES));
+		document.add(new StringField(SearchConstants.ORDER_INVOICE_CREATETIME_FIELD,
+				orderInvoice.getCreatetime().toString(), 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
+				|| StringUtils.isEmpty(orderInvoiceDetail.getCmpCode())
+				|| StringUtils.isEmpty(orderInvoiceDetail.getKiName())
+				|| StringUtils.isEmpty(orderInvoiceDetail.getBrName())) {
+			return null;
+		}
+		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 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));
+		return document;
+	}
+
+	/**
+	 * PurchaseSimpleInfo对象转为Document
+	 * 
+	 * @param order
+	 *            PurchaseSimpleInfo对象
+	 * @return 转换的Document
+	 */
+	public static Document toDocument(PurchaseSimpleInfo purchase) {
+		if (purchase == null || purchase.getId() == null || StringUtils.isEmpty(purchase.getCode())
+				|| purchase.getSellerenuu() == null || StringUtils.isEmpty(purchase.getSellerenname())
+				|| purchase.getCreatetime() == null) {
+			return null;
+		}
+		Document document = new Document();
+		document.add(new StringField(SearchConstants.PURCHASE_ID_FIELD, String.valueOf(purchase.getId()), Store.YES));
+		document.add(new TextField(SearchConstants.PURCHASE_CODE_FIELD, purchase.getCode(), Store.YES));
+		document.add(new StringField(SearchConstants.PURCHASE_SELLERENUU_FIELD,
+				String.valueOf(purchase.getSellerenuu()), Store.YES));
+		document.add(new TextField(SearchConstants.PURCHASE_SELLERENNAME_FIELD, purchase.getSellerenname(), Store.YES));
+		document.add(new StringField(SearchConstants.PURCHASE_CREATETIME_FIELD, purchase.getCreatetime().toString(),
+				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 || StringUtils.isEmpty(purchaseDetail.getCmpCode())
+				|| StringUtils.isEmpty(purchaseDetail.getKiName()) || StringUtils.isEmpty(purchaseDetail.getBrName())) {
+			return null;
+		}
+		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 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));
+		return document;
+	}
+
+	/**
+	 * PurchaseInvoiceSimpleInfo对象转为Document
+	 * 
+	 * @param purchaseInvoice
+	 *            PurchaseInvoiceSimpleInfo对象
+	 * @return 转换的Document
+	 */
+	public static Document toDocument(PurchaseInvoiceSimpleInfo purchaseInvoice) {
+		if (purchaseInvoice == null || purchaseInvoice.getId() == null || StringUtils.isEmpty(purchaseInvoice.getCode())
+				|| purchaseInvoice.getSellerenuu() == null || StringUtils.isEmpty(purchaseInvoice.getSellerenname())
+				|| purchaseInvoice.getCreatetime() == null) {
+			return null;
+		}
+		Document document = new Document();
+		document.add(new StringField(SearchConstants.PURCHASE_INVOICE_ID_FIELD, String.valueOf(purchaseInvoice.getId()),
+				Store.YES));
+		document.add(new TextField(SearchConstants.PURCHASE_INVOICE_CODE_FIELD, purchaseInvoice.getCode(), Store.YES));
+		document.add(new StringField(SearchConstants.PURCHASE_INVOICE_SELLERENUU_FIELD,
+				String.valueOf(purchaseInvoice.getSellerenuu()), Store.YES));
+		document.add(new TextField(SearchConstants.PURCHASE_INVOICE_SELLERENNAME_FIELD,
+				purchaseInvoice.getSellerenname(), Store.YES));
+		document.add(new StringField(SearchConstants.PURCHASE_INVOICE_CREATETIME_FIELD,
+				purchaseInvoice.getCreatetime().toString(), 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
+				|| StringUtils.isEmpty(purchaseInvoiceDetail.getCmpCode())
+				|| StringUtils.isEmpty(purchaseInvoiceDetail.getKiName())
+				|| StringUtils.isEmpty(purchaseInvoiceDetail.getBrName())) {
+			return null;
+		}
+		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 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));
+		return document;
+	}
+}

+ 149 - 24
search-console/src/main/java/com/uas/search/console/util/SearchConstants.java

@@ -53,21 +53,41 @@ 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";
+
 	/**
 	 * 索引文件存储路径
 	 */
@@ -78,26 +98,20 @@ public class SearchConstants {
 	 */
 	public static final String COMPONENT_WITH_PROPERTY_DIR = PathUtils.getFilePath() + "components";
 
-	/**
-	 * 类目索引字段的key
-	 */
+	// 类目索引字段的key
 	public static final String KIND_ID_FIELD = "ki_id";
 	public static final String KIND_NAMECN_FIELD = "ki_name_cn";
 	public static final String KIND_LEVEL_FIELD = "ki_level";
 	public static final String KIND_ISLEAF_FIELD = "ki_isleaf";
 
-	/**
-	 * 品牌索引字段的key
-	 */
+	// 品牌索引字段的key
 	public static final String BRAND_ID_FIELD = "br_id";
 	public static final String BRAND_NAMECN_FIELD = "br_name_cn";
 	public static final String BRAND_NAMEEN_FIELD = "br_name_en";
 	public static final String BRAND_UUID_FIELD = "br_uuid";
 	public static final String BRAND_WEIGHT_FIELD = "br_weight";
 
-	/**
-	 * 器件索引字段的key
-	 */
+	// 器件索引字段的key
 	public static final String COMPONENT_ID_FIELD = "cmp_id";
 	public static final String COMPONENT_UUID_FIELD = "cmp_uuid";
 	public static final String COMPONENT_CODE_FIELD = "cmp_code";
@@ -115,20 +129,131 @@ public class SearchConstants {
 	 * 另外创建的经过分词的属性值,添加后缀作为Field的键
 	 */
 	public static final String COMPONENT_PROPERTY_TOKENIZED_SUFFIX = "_tokenized";
-	
-	
-	/**
-	 * 商城销售订单索引字段的key
-	 */
-	 
-	public static final String ORDER_ID_FIELD = "or_id";// 对应销售单id(数据库id字段)
-	public static final String ORDER_ORDER_ID_FIELD = "or_orid";// 对应销售单号(数据库or_id字段)
-	public static final String ORDER_BUYER_USERUU_FIELD = "or_buyeruu";
-	public static final String ORDER_BUYER_USERNAME_FIELD = "or_buyername";
-	public static final String ORDER_BUYER_ENUU_FIELD = "or_buyerenuu";
-	public static final String ORDER_BUYER_ENNAME_FIELD = "or_buyerenname";
-	public static final String ORDER_SELLER_ENUU_FIELD = "or_sellerenuu";
-	public static final String ORDER_SELLER_ENNAME_FIELD = "or_sellerenname";
-	public static final String ORDER_CREATE_TIME_FIELD = "or_creattime";
+
+	// 商城销售订单索引字段的key
+	/**
+	 * 对应销售单id(数据库id字段)
+	 */
+	public static final String ORDER_ID_FIELD = "or_id";
+	/**
+	 * 对应销售单号(数据库or_id字段),因易与id命名混淆,其他类、lucenne建索引时该字段难以区分,特以此命名
+	 */
+	public static final String ORDER_CODE_FIELD = "or_code";
+	public static final String ORDER_BUYERUSERUU_FIELD = "or_buyeruu";
+	public static final String ORDER_BUYERUSERNAME_FIELD = "or_buyername";
+	public static final String ORDER_BUYERENUU_FIELD = "or_buyerenuu";
+	public static final String ORDER_BUYERENNAME_FIELD = "or_buyerenname";
+	public static final String ORDER_SELLERENUU_FIELD = "or_sellerenuu";
+	public static final String ORDER_SELLERENNAME_FIELD = "or_sellerenname";
+	public static final String ORDER_CREATETIME_FIELD = "or_createtime";
+
+	// 商城销售订单明细索引字段的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_COMPONENTCODE_FIELD = "od_cmpcode";
+	public static final String ORDER_DETAIL_KINDNAME_FIELD = "od_kiname";
+	public static final String ORDER_DETAIL_BRANDNAME_FIELD = "od_brname";
+
+	// 商城销售订单的发货单索引字段的key
+	/**
+	 * 对应商城销售订单的发货单id(数据库id字段)
+	 */
+	public static final String ORDER_INVOICE_ID_FIELD = "oi_id";
+	/**
+	 * 对应销售单发货单号(数据库in_id字段),因易与id命名混淆,其他类、lucenne建索引时该字段难以区分,特以此命名
+	 */
+	public static final String ORDER_INVOICE_CODE_FIELD = "oi_code";
+	public static final String ORDER_INVOICE_BUYERUSERUU_FIELD = "oi_buyeruu";
+	public static final String ORDER_INVOICE_BUYERUSERNAME_FIELD = "oi_buyername";
+	public static final String ORDER_INVOICE_BUYERENUU_FIELD = "oi_buyerenuu";
+	public static final String ORDER_INVOICE_BUYERENNAME_FIELD = "oi_buyerenname";
+	public static final String ORDER_INVOICE_CREATETIME_FIELD = "oi_createtime";
+
+	// 商城销售订单的发货单明细索引字段的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_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";
+
+	// 商城采购订单索引字段的key
+	/**
+	 * 对应采购单id(数据库id字段)
+	 */
+	public static final String PURCHASE_ID_FIELD = "pu_id";
+	/**
+	 * 对应采购单号(数据库pu_id字段),因易与id命名混淆,其他类、lucenne建索引时该字段难以区分,特以此命名
+	 */
+	public static final String PURCHASE_CODE_FIELD = "pu_code";
+	public static final String PURCHASE_SELLERENUU_FIELD = "pu_sellerenuu";
+	public static final String PURCHASE_SELLERENNAME_FIELD = "pu_sellerenname";
+	public static final String PURCHASE_CREATETIME_FIELD = "pu_createtime";
+
+	// 商城采购订单明细索引字段的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_COMPONENTCODE_FIELD = "pd_cmpcode";
+	public static final String PURCHASE_DETAIL_KINDNAME_FIELD = "pd_kiname";
+	public static final String PURCHASE_DETAIL_BRANDNAME_FIELD = "pd_brname";
+
+	// 商城采购订单的发货单索引字段的key
+	/**
+	 * 对应商城采购订单的发货单id(数据库id字段)
+	 */
+	public static final String PURCHASE_INVOICE_ID_FIELD = "pi_id";
+	/**
+	 * 对应采购单发货单号(数据库in_id字段),因易与id命名混淆,其他类、lucenne建索引时该字段难以区分,特以此命名
+	 */
+	public static final String PURCHASE_INVOICE_CODE_FIELD = "pi_code";
+	public static final String PURCHASE_INVOICE_SELLERENUU_FIELD = "pi_sellerenuu";
+	public static final String PURCHASE_INVOICE_SELLERENNAME_FIELD = "pi_sellerenname";
+	public static final String PURCHASE_INVOICE_CREATETIME_FIELD = "pi_createtime";
+
+	// 商城采购订单的发货单明细索引字段的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_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";
 
 }