Browse Source

物料信息搜索创建索引

dongbw 9 years ago
parent
commit
20ede5450b

+ 13 - 0
search-console-b2b/src/main/java/com/uas/search/console/b2b/dao/ProdSimpleInfoDao.java

@@ -0,0 +1,13 @@
+package com.uas.search.console.b2b.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.b2b.model.ProdSimpleInfo;
+
+@Repository
+public interface ProdSimpleInfoDao
+		extends JpaRepository<ProdSimpleInfo, Long>, JpaSpecificationExecutor<ProdSimpleInfo> {
+
+}

+ 140 - 0
search-console-b2b/src/main/java/com/uas/search/console/b2b/model/ProdSimpleInfo.java

@@ -0,0 +1,140 @@
+package com.uas.search.console.b2b.model;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToOne;
+import javax.persistence.Table;
+
+/**
+ * 物品信息表(用于建立物料搜索索引)
+ * 
+ */
+@Entity
+@Table(name = ProdSimpleInfo.TABLE_NAME)
+public class ProdSimpleInfo {
+
+	public static final String TABLE_NAME = "PRODUCTS";
+
+	public static final String ID_FIELD = "pr_id";
+
+	public static final String ENTERPRISE_FIELD = "pr_enuu";
+
+	public static final String CODE_FIELD = "pr_code";
+
+	public static final String TITLE_FIELD = "pr_title";
+
+	public static final String SPEC_FIELD = "pr_spec";
+
+	public static final String BRAND_FIELD = "pr_brand";
+
+	@Id
+	@Column(name = ID_FIELD)
+	private Long id;
+
+	/**
+	 * 物料所属企业UU
+	 */
+	@OneToOne
+	@JoinColumn(name = ENTERPRISE_FIELD, insertable = false, updatable = false)
+	private EnterpriseSimpleInfo enterprise;
+
+	/**
+	 * 物料编号
+	 * 
+	 */
+	@Column(name = CODE_FIELD)
+	private String prodCode;
+
+	/**
+	 * 物料名称
+	 */
+	@Column(name = TITLE_FIELD)
+	private String prodTitle;
+
+	/**
+	 * 物料规格
+	 */
+	@Column(name = SPEC_FIELD)
+	private String prodSpec;
+
+	/**
+	 * 物料品牌
+	 */
+	@Column(name = BRAND_FIELD)
+	private String brand;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public EnterpriseSimpleInfo getEnterprise() {
+		return enterprise;
+	}
+
+	public void setEnterprise(EnterpriseSimpleInfo enterprise) {
+		this.enterprise = enterprise;
+	}
+
+	public String getProdCode() {
+		return prodCode;
+	}
+
+	public void setProdCode(String prodCode) {
+		this.prodCode = prodCode;
+	}
+
+	public String getProdTitle() {
+		return prodTitle;
+	}
+
+	public void setProdTitle(String prodTitle) {
+		this.prodTitle = prodTitle;
+	}
+
+	public String getProdSpec() {
+		return prodSpec;
+	}
+
+	public void setProdSpec(String prodSpec) {
+		this.prodSpec = prodSpec;
+	}
+
+	public String getBrand() {
+		return brand;
+	}
+
+	public void setBrand(String brand) {
+		this.brand = brand;
+	}
+
+	/**
+	 * 获取所有可以搜索的字段列名(索引的field名)
+	 * 
+	 * @return 可以搜索的字段列名
+	 */
+	public static List<String> getKeywordFields() {
+		List<String> fields = new ArrayList<>();
+		fields.add(CODE_FIELD);
+		fields.add(ENTERPRISE_FIELD);
+		fields.add(TITLE_FIELD);
+		fields.add(SPEC_FIELD);
+		fields.add(BRAND_FIELD);
+		return fields;
+	}
+
+	@Override
+	public String toString() {
+		return "ProdSimpleInfo [id=" + id + ", enterprise=" + enterprise + ", prodCode=" + prodCode + ", prodTitle="
+				+ prodTitle + ", prodSpec=" + prodSpec + ", brand=" + brand + "]";
+	}
+
+}

+ 2 - 2
search-console-b2b/src/main/java/com/uas/search/console/b2b/model/ProductSimpleInfo.java

@@ -6,13 +6,13 @@ import javax.persistence.Id;
 import javax.persistence.Table;
 
 /**
- * 商品信息
+ * 商品信息(其他表关联的物料信息)
  * 
  * @author yingp
  *
  */
 @Entity
-@Table(name = "products")
+@Table(name = "PRODUCTS")
 public class ProductSimpleInfo {
 
 	@Id

+ 2 - 2
search-console-b2b/src/main/java/com/uas/search/console/b2b/model/PurchaseInquiryItemSimpleInfo.java

@@ -150,8 +150,8 @@ public class PurchaseInquiryItemSimpleInfo {
 		now.set(Calendar.SECOND, 0);
 		Calendar end = Calendar.getInstance();
 		end.setTime(this.getInquiry().getEndDate());
-		end.set(Calendar.HOUR, 0);
-		end.set(Calendar.MINUTE, 0);
+		end.set(Calendar.HOUR, 23);
+		end.set(Calendar.MINUTE, 59);
 		end.set(Calendar.SECOND, 0);
 		if (now.compareTo(end) > 0) {
 			return 1;

+ 2 - 2
search-console-b2b/src/main/java/com/uas/search/console/b2b/model/PurchaseInquiryMouldSimpleInfo.java

@@ -192,8 +192,8 @@ public class PurchaseInquiryMouldSimpleInfo {
 		now.set(Calendar.SECOND, 0);
 		Calendar end = Calendar.getInstance();
 		end.setTime(endDate);
-		end.set(Calendar.HOUR, 0);
-		end.set(Calendar.MINUTE, 0);
+		end.set(Calendar.HOUR, 23);
+		end.set(Calendar.MINUTE, 59);
 		end.set(Calendar.SECOND, 0);
 		if (now.compareTo(end) > 0) {
 			return 1;

+ 4 - 0
search-console-b2b/src/main/java/com/uas/search/console/b2b/util/ClassAndTableNameUtils.java

@@ -18,6 +18,7 @@ import com.uas.search.console.b2b.dao.MakeAcceptSimpleInfoDao;
 import com.uas.search.console.b2b.dao.MakeOrderChangeItemSimpleInfoDao;
 import com.uas.search.console.b2b.dao.MakeOrderSimpleInfoDao;
 import com.uas.search.console.b2b.dao.MakeReturnSimpleInfoDao;
+import com.uas.search.console.b2b.dao.ProdSimpleInfoDao;
 import com.uas.search.console.b2b.dao.PurcProofingapprovalSimpleInfoDao;
 import com.uas.search.console.b2b.dao.PurcProofingsendSimpleInfoDao;
 import com.uas.search.console.b2b.dao.PurchaseAcceptSimpleInfoDao;
@@ -41,6 +42,7 @@ import com.uas.search.console.b2b.model.MakeAcceptSimpleInfo;
 import com.uas.search.console.b2b.model.MakeOrderChangeItemSimpleInfo;
 import com.uas.search.console.b2b.model.MakeOrderSimpleInfo;
 import com.uas.search.console.b2b.model.MakeReturnSimpleInfo;
+import com.uas.search.console.b2b.model.ProdSimpleInfo;
 import com.uas.search.console.b2b.model.PurcProofingapprovalSimpleInfo;
 import com.uas.search.console.b2b.model.PurcProofingsendSimpleInfo;
 import com.uas.search.console.b2b.model.PurchaseAcceptSimpleInfo;
@@ -106,6 +108,7 @@ public class ClassAndTableNameUtils {
 		entityClasses.add(SaleQuotationSimpleInfo.class);
 		entityClasses.add(PurchaseInquiryItemSimpleInfo.class);
 		entityClasses.add(PurchaseInquiryMouldSimpleInfo.class);
+		entityClasses.add(ProdSimpleInfo.class);
 		// TODO 其他表
 
 		// entityClasses和entityDaoClasses对于表的添加顺序必须一致
@@ -133,6 +136,7 @@ public class ClassAndTableNameUtils {
 		entityDaoClasses.add(SaleQuotationSimpleInfoDao.class);
 		entityDaoClasses.add(PurchaseInquiryItemSimpleInfoDao.class);
 		entityDaoClasses.add(PurchaseInquiryMouldSimpleInfoDao.class);
+		entityDaoClasses.add(ProdSimpleInfoDao.class);
 		// TODO 其他表的Dao
 	}
 

+ 36 - 0
search-console-b2b/src/main/java/com/uas/search/console/b2b/util/DocumentToObjectUtils.java

@@ -18,6 +18,7 @@ import com.uas.search.console.b2b.model.MakeOrderChangeItemSimpleInfo;
 import com.uas.search.console.b2b.model.MakeOrderSimpleInfo;
 import com.uas.search.console.b2b.model.MakeReturnItemSimpleInfo;
 import com.uas.search.console.b2b.model.MakeReturnSimpleInfo;
+import com.uas.search.console.b2b.model.ProdSimpleInfo;
 import com.uas.search.console.b2b.model.ProductSimpleInfo;
 import com.uas.search.console.b2b.model.PurcProofingapprovalSimpleInfo;
 import com.uas.search.console.b2b.model.PurcProofingsendSimpleInfo;
@@ -122,6 +123,8 @@ public class DocumentToObjectUtils {
 			return (T) toPurchaseProofingItem(document);
 		} else if (clazz == PurchaseInquiryMouldSimpleInfo.class) {
 			return (T) toPurchaseInquiryMould(document);
+		} else if (clazz == ProdSimpleInfo.class) {
+			return (T) toProd(document);
 		}
 
 		// TODO 其他表
@@ -1060,6 +1063,39 @@ public class DocumentToObjectUtils {
 		return purchaseInquiryMould;
 	}
 
+	/**
+	 * 将Document转换成ProdSimpleInfo对象
+	 * 
+	 * @param document
+	 * @return
+	 */
+	private static ProdSimpleInfo toProd(Document document) {
+		if (document == null) {
+			return null;
+		}
+		Table_name tableName = ClassAndTableNameUtils.toTableName(ProductSimpleInfo.class);
+		ProdSimpleInfo prodSimpleInfo = new ProdSimpleInfo();
+		prodSimpleInfo.setId(
+				Long.valueOf(document.get(ClassAndTableNameUtils.combineField(tableName, ProdSimpleInfo.ID_FIELD))));
+		prodSimpleInfo
+				.setProdCode(document.get(ClassAndTableNameUtils.combineField(tableName, ProdSimpleInfo.CODE_FIELD)));
+		String title = document.get(ClassAndTableNameUtils.combineField(tableName, ProdSimpleInfo.TITLE_FIELD));
+		if (null != title) {
+			prodSimpleInfo.setProdTitle(title);
+		}
+		String spec = document.get(ClassAndTableNameUtils.combineField(tableName, ProdSimpleInfo.SPEC_FIELD));
+		if (null != spec) {
+			prodSimpleInfo.setProdSpec(spec);
+		}
+		String brand = document.get(ClassAndTableNameUtils.combineField(tableName, ProdSimpleInfo.BRAND_FIELD));
+		if (null != brand) {
+			prodSimpleInfo.setBrand(brand);
+		}
+		prodSimpleInfo.setEnterprise(JSONObject.parseObject(
+				document.get(ClassAndTableNameUtils.combineField(tableName, ProdSimpleInfo.ENTERPRISE_FIELD)),
+				EnterpriseSimpleInfo.class));
+		return prodSimpleInfo;
+	}
 
 	/**
 	 * 将json字符串转为Set<T>对象

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

@@ -17,6 +17,7 @@ import com.uas.search.console.b2b.model.MakeAcceptSimpleInfo;
 import com.uas.search.console.b2b.model.MakeOrderChangeItemSimpleInfo;
 import com.uas.search.console.b2b.model.MakeOrderSimpleInfo;
 import com.uas.search.console.b2b.model.MakeReturnSimpleInfo;
+import com.uas.search.console.b2b.model.ProdSimpleInfo;
 import com.uas.search.console.b2b.model.PurcProofingapprovalSimpleInfo;
 import com.uas.search.console.b2b.model.PurcProofingsendSimpleInfo;
 import com.uas.search.console.b2b.model.PurchaseAcceptSimpleInfo;
@@ -104,6 +105,8 @@ public class ObjectToDocumentUtils {
 			return toDocument((PurchaseInquiryItemSimpleInfo) object);
 		} else if (object instanceof PurchaseInquiryMouldSimpleInfo) {
 			return toDocument((PurchaseInquiryMouldSimpleInfo) object);
+		} else if (object instanceof ProdSimpleInfo) {
+			return toDocument((ProdSimpleInfo) object);
 		}
 		// TODO 其他表
 		else {
@@ -1341,4 +1344,44 @@ public class ObjectToDocumentUtils {
 				inquiryMould.getId()));
 		return document;
 	}
+
+	/**
+	 * 将ProdSimpleInfo转换成Document
+	 * 
+	 * @param saleArcheck
+	 * @return
+	 */
+	public static Document toDocument(ProdSimpleInfo prodSimpleInfo) {
+		if (prodSimpleInfo == null || prodSimpleInfo.getId() == null || prodSimpleInfo.getProdCode() == null
+				|| prodSimpleInfo.getEnterprise() == null || prodSimpleInfo.getEnterprise().getUu() == null
+				|| StringUtils.isEmpty(prodSimpleInfo.getEnterprise().getEnName())) {
+			return null;
+		}
+		Table_name tableName = ClassAndTableNameUtils.toTableName(ProdSimpleInfo.class);
+		Document document = new Document();
+		// 不能用LongField,否则后续实时更新索引时,方法updateDocument(new Term("", ""),
+		// doc)无法根据id进行更新
+		document.add(new StringField(ClassAndTableNameUtils.combineField(tableName, ProdSimpleInfo.ID_FIELD),
+				String.valueOf(prodSimpleInfo.getId()), Store.YES));
+		document.add(new TextField(ClassAndTableNameUtils.combineField(tableName, ProdSimpleInfo.CODE_FIELD),
+				prodSimpleInfo.getProdCode(), Store.YES));
+		if (null != prodSimpleInfo.getProdTitle()) {
+			document.add(new StringField(ClassAndTableNameUtils.combineField(tableName, ProdSimpleInfo.TITLE_FIELD),
+					String.valueOf(prodSimpleInfo.getProdTitle()), Store.YES));
+		}
+		if (null != prodSimpleInfo.getProdSpec()) {
+			document.add(new StringField(ClassAndTableNameUtils.combineField(tableName, ProdSimpleInfo.SPEC_FIELD),
+					String.valueOf(prodSimpleInfo.getProdSpec()), Store.YES));
+		}
+		if (null != prodSimpleInfo.getBrand()) {
+			document.add(new StringField(ClassAndTableNameUtils.combineField(tableName, ProdSimpleInfo.BRAND_FIELD),
+					String.valueOf(prodSimpleInfo.getBrand()), Store.YES));
+		}
+		document.add(new TextField(ClassAndTableNameUtils.combineField(tableName, ProdSimpleInfo.ENTERPRISE_FIELD),
+				JSON.toJSONString(prodSimpleInfo.getEnterprise()), Store.YES));
+		// 排序字段
+		document.add(new NumericDocValuesField(ClassAndTableNameUtils.combineField(tableName, ProdSimpleInfo.ID_FIELD),
+				prodSimpleInfo.getId()));
+		return document;
+	}
 }