浏览代码

投标单新增索引,用于客户招标搜索

dongbw 8 年之前
父节点
当前提交
fddca9e29a

+ 6 - 1
search-api-b2b/src/main/java/com/uas/search/b2b/service/SearchService.java

@@ -224,10 +224,15 @@ public interface SearchService {
 		 */
 		INVITATIONRECORDS("INVITATIONRECORDS"),
 		/**
-		 * 投标表
+		 * 投标表 (ERP搜索)
 		 */
 		SALE$TENDER("SALE$TENDER"),
 
+		/**
+		 * 投标表(B2B待投标和已投标)
+		 */
+		SALE$TENDER_B2B("SALE$TENDER_B2B"),
+
 		/**
 		 * 购物车
 		 */

+ 7 - 0
search-console-b2b/src/main/java/com/uas/search/console/b2b/Application.java

@@ -15,6 +15,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
 import org.springframework.web.servlet.config.annotation.EnableWebMvc;
 
 import com.uas.search.console.b2b.core.util.ContextUtils;
+import com.uas.search.console.b2b.model.B2BSaleTenderSimpleInfo;
 import com.uas.search.console.b2b.model.PurchaseInquiryItemSimpleInfo;
 import com.uas.search.console.b2b.model.PurchaseInquiryMouldSimpleInfo;
 import com.uas.search.console.b2b.model.PurchaseTenderSimpleInfo;
@@ -86,6 +87,12 @@ public class Application {
 		updateVirtualColumnService.newDailyTask(PurchaseTenderSimpleInfo.class, purchaseTenderFields, hour, minute,
 				second);
 
+		// 定时更新投标单虚拟列索引
+		Map<String, Class<?>> saleTenderFields = new HashMap<>();
+		saleTenderFields.put("overdue", Short.class);
+		saleTenderFields.put("result", Short.class);
+		updateVirtualColumnService.newDailyTask(B2BSaleTenderSimpleInfo.class, saleTenderFields, hour, minute, second);
+
 		// 定时监控实时更新异常情况
 		new RealTimeUpdateMonitor(DataSourceQualifier.PLATFORMB2B_DATASOURCE).newTask();
 		new RealTimeUpdateMonitor(DataSourceQualifier.PLATFORMMANAGER_DATASOURCE).newTask();

+ 11 - 0
search-console-b2b/src/main/java/com/uas/search/console/b2b/dao/B2BSaleTenderSimpleInfoDao.java

@@ -0,0 +1,11 @@
+package com.uas.search.console.b2b.dao;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+
+import com.uas.search.console.b2b.model.B2BSaleTenderSimpleInfo;
+
+public interface B2BSaleTenderSimpleInfoDao
+		extends JpaRepository<B2BSaleTenderSimpleInfo, Long>, JpaSpecificationExecutor<B2BSaleTenderSimpleInfo> {
+
+}

+ 72 - 0
search-console-b2b/src/main/java/com/uas/search/console/b2b/model/B2BPurchaseTenderProdSimpleInfo.java

@@ -0,0 +1,72 @@
+package com.uas.search.console.b2b.model;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+@Table(name = "purc$tenderprod")
+@Entity
+public class B2BPurchaseTenderProdSimpleInfo {
+
+	@Id
+	@Column(name = "tp_id")
+	private Long id;
+
+	/**
+	 * 品牌
+	 */
+	@Column(name = "tp_brand")
+	private String brand;
+
+	/**
+	 * 物料名称
+	 */
+	@Column(name = "tp_prodtitle")
+	private String prodTitle;
+
+	/**
+	 * 物料型号
+	 */
+	@Column(name = "tp_prodcode")
+	private String prodCode;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public String getBrand() {
+		return brand;
+	}
+
+	public void setBrand(String brand) {
+		this.brand = brand;
+	}
+
+	public String getProdTitle() {
+		return prodTitle;
+	}
+
+	public void setProdTitle(String prodTitle) {
+		this.prodTitle = prodTitle;
+	}
+
+	public String getProdCode() {
+		return prodCode;
+	}
+
+	public void setProdCode(String prodCode) {
+		this.prodCode = prodCode;
+	}
+
+	@Override
+	public String toString() {
+		return "B2BPurchaseTenderProdSimpleInfo [id=" + id + ", brand=" + brand + ", prodTitle=" + prodTitle
+				+ ", prodCode=" + prodCode + "]";
+	}
+
+}

+ 47 - 0
search-console-b2b/src/main/java/com/uas/search/console/b2b/model/B2BSaleTenderItemSimpleInfo.java

@@ -0,0 +1,47 @@
+package com.uas.search.console.b2b.model;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+
+@Table(name = "sale$tenderitem")
+@Entity
+public class B2BSaleTenderItemSimpleInfo {
+
+	@Id
+	@Column(name = "sti_id")
+	private Long id;
+
+	/**
+	 * 投标单主表
+	 */
+	@ManyToOne(cascade = { CascadeType.REFRESH })
+	@JoinColumn(name = "sti_tpid", insertable = false, updatable = false)
+	private B2BPurchaseTenderProdSimpleInfo tenderProd;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public B2BPurchaseTenderProdSimpleInfo getTenderProd() {
+		return tenderProd;
+	}
+
+	public void setTenderProd(B2BPurchaseTenderProdSimpleInfo tenderProd) {
+		this.tenderProd = tenderProd;
+	}
+
+	@Override
+	public String toString() {
+		return "B2BSaleTenderItemSimpleInfo [id=" + id + ", tenderProd=" + tenderProd + "]";
+	}
+
+}

+ 430 - 0
search-console-b2b/src/main/java/com/uas/search/console/b2b/model/B2BSaleTenderSimpleInfo.java

@@ -0,0 +1,430 @@
+package com.uas.search.console.b2b.model;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+import java.util.Set;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
+import javax.persistence.OneToOne;
+import javax.persistence.Table;
+
+@Table(name = "SALE$TENDER")
+@Entity
+public class B2BSaleTenderSimpleInfo {
+
+	/**
+	 * 表名
+	 */
+	public static final String TABLE_NAME = "SALE$TENDER_B2B";
+
+	/**
+	 * 各字段名
+	 */
+	public static final String ID_FIELD = "st_id";
+
+	public static final String CODE_FIELD = "st_code";
+
+	public static final String ENTERPRISE_FIELD = "st_enuu";
+
+	public static final String VEND_FIELD = "st_venduu";
+
+	public static final String TITLE_FIELD = "st_title";
+
+	public static final String DATE_FIELD = "st_date";
+
+	public static final String ENDDATE_FIELD = "st_enddate";
+
+	public static final String PUBLISHDATE_FIELD = "st_publishdate";
+
+	public static final String USERNAME_FIELD = "st_user";
+
+	public static final String USERTEL_FIELD = "st_usertel";
+
+	public static final String STATUS_FIELD = "st_status";
+
+	public static final String PAYMENT_FIELD = "st_payment";
+
+	public static final String SHIPADDRESS_FIELD = "st_shipaddress";
+
+	public static final String IFOPEN_FIELD = "st_ifopen";
+
+	public static final String ISPUBLISH_FIELD = "st_ispublish";
+
+	public static final String OVERDUE_FIELD = "st_overdue"; // 过了投标截止日期为1 ,未过是0
+
+	public static final String RESULT_FIELD = "st_result"; // 过了公布结果日期为1, 未过是0
+
+	public static final String AUDITSTATUS_FIELD = "st_auditstatus";
+
+	public static final String USER_FIELD = "st_useruu";
+
+	public static final String RECORDER_FIELD = "st_recorderuu";
+
+	public static final String ITEM_FIELD = "sti_stid";
+
+	@Id
+	@Column(name = ID_FIELD)
+	private Long id;
+
+	/**
+	 * 单号
+	 */
+	@Column(name = CODE_FIELD)
+	private String code;
+
+	/**
+	 * 单据状态
+	 */
+	@Column(name = STATUS_FIELD)
+	private String status;
+
+	/**
+	 * 录入日期
+	 */
+	@Column(name = DATE_FIELD)
+	private Date date;
+
+	/**
+	 * 投标截止日期
+	 */
+	@Column(name = ENDDATE_FIELD)
+	private Date endDate;
+
+	/**
+	 * 公布结果日期
+	 */
+	@Column(name = PUBLISHDATE_FIELD)
+	private Date publishDate;
+
+	/**
+	 * 送货地址
+	 */
+	@Column(name = SHIPADDRESS_FIELD)
+	private String shipAddress;
+
+	/**
+	 * 付款方式
+	 */
+	@Column(name = PAYMENT_FIELD)
+	private String payment;
+
+	/**
+	 * 招标标题
+	 */
+	@Column(name = TITLE_FIELD)
+	private String title;
+
+	/**
+	 * 用户
+	 */
+	@Column(name = USERNAME_FIELD)
+	private String user;
+
+	/**
+	 * 用户电话
+	 */
+	@Column(name = USERTEL_FIELD)
+	private String userTel;
+
+	/**
+	 * 是否开放(1为开放,0为针对专门供应商)
+	 */
+	@Column(name = IFOPEN_FIELD)
+	private Short ifOpen;
+
+	public Short getIsPublish() {
+		return isPublish;
+	}
+
+	public void setIsPublish(Short isPublish) {
+		this.isPublish = isPublish;
+	}
+
+	/**
+	 * 是否开放(1为已发布,0为已保存)
+	 */
+	@Column(name = ISPUBLISH_FIELD)
+	private Short isPublish;
+
+	/**
+	 * 审核状态(0为已提交,1为已审核, null为不在审批流)
+	 */
+	@Column(name = AUDITSTATUS_FIELD)
+	private Short auditStatus;
+
+	/**
+	 * 企业信息
+	 */
+	@OneToOne(cascade = { CascadeType.REFRESH })
+	@JoinColumn(name = ENTERPRISE_FIELD, insertable = false, updatable = false)
+	private EnterpriseSimpleInfo enterprise;
+
+	/**
+	 * 企业信息
+	 */
+	@OneToOne(cascade = { CascadeType.REFRESH })
+	@JoinColumn(name = VEND_FIELD, insertable = false, updatable = false)
+	private EnterpriseSimpleInfo vendor;
+
+	/**
+	 * 招标发起人信息
+	 */
+	@OneToOne(cascade = { CascadeType.REFRESH })
+	@JoinColumn(name = RECORDER_FIELD, insertable = false, updatable = false)
+	private UserSimpleInfo recorder;
+
+	/**
+	 * 供应商联系人信息
+	 */
+	@OneToOne(cascade = { CascadeType.REFRESH })
+	@JoinColumn(name = USER_FIELD, insertable = false, updatable = false)
+	private UserSimpleInfo vendUser;
+
+	/**
+	 * 投标明细记录
+	 */
+	@OneToMany(cascade = { CascadeType.REFRESH })
+	@JoinColumn(name = ITEM_FIELD, insertable = false, updatable = false)
+	private Set<B2BSaleTenderItemSimpleInfo> saleTenderItems;
+
+	/**
+	 * 是否截止投标
+	 */
+	private Short st_overdue;
+
+	/**
+	 * 是否公布结果
+	 */
+	private Short st_result;
+
+	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 String getStatus() {
+		return status;
+	}
+
+	public void setStatus(String status) {
+		this.status = status;
+	}
+
+	public void setIfOpen(Short ifOpen) {
+		this.ifOpen = ifOpen;
+	}
+
+	public Date getDate() {
+		return date;
+	}
+
+	public void setDate(Date date) {
+		this.date = date;
+	}
+
+	public Date getEndDate() {
+		return endDate;
+	}
+
+	public void setEndDate(Date endDate) {
+		this.endDate = endDate;
+	}
+
+	public Date getPublishDate() {
+		return publishDate;
+	}
+
+	public void setPublishDate(Date publishDate) {
+		this.publishDate = publishDate;
+	}
+
+	public String getShipAddress() {
+		return shipAddress;
+	}
+
+	public void setShipAddress(String shipAddress) {
+		this.shipAddress = shipAddress;
+	}
+
+	public String getTitle() {
+		return title;
+	}
+
+	public void setTitle(String title) {
+		this.title = title;
+	}
+
+	public String getPayment() {
+		return payment;
+	}
+
+	public EnterpriseSimpleInfo getVendor() {
+		return vendor;
+	}
+
+	public void setVendor(EnterpriseSimpleInfo vendor) {
+		this.vendor = vendor;
+	}
+
+	public void setPayment(String payment) {
+		this.payment = payment;
+	}
+
+	public String getUser() {
+		return user;
+	}
+
+	public void setUser(String user) {
+		this.user = user;
+	}
+
+	public String getUserTel() {
+		return userTel;
+	}
+
+	public void setUserTel(String userTel) {
+		this.userTel = userTel;
+	}
+
+	public Short getIfOpen() {
+		return ifOpen;
+	}
+
+	public EnterpriseSimpleInfo getEnterprise() {
+		return enterprise;
+	}
+
+	public void setEnterprise(EnterpriseSimpleInfo enterprise) {
+		this.enterprise = enterprise;
+	}
+
+	public Short getAuditStatus() {
+		return auditStatus;
+	}
+
+	public void setAuditStatus(Short auditStatus) {
+		this.auditStatus = auditStatus;
+	}
+
+	@SuppressWarnings("deprecation")
+	public Short getOverdue() {
+		if (endDate == null) {
+			return null;
+		}
+		Date before = new Date();
+		Date date = new Date(before.getTime());
+		Calendar now = Calendar.getInstance();
+		now.set(Calendar.YEAR, date.getYear());
+		now.set(Calendar.MONTH, date.getMonth());
+		now.set(Calendar.DAY_OF_MONTH, date.getDate());
+		Calendar end = Calendar.getInstance();
+		end.set(Calendar.YEAR, endDate.getYear());
+		end.set(Calendar.MONTH, endDate.getMonth());
+		end.set(Calendar.DAY_OF_MONTH, endDate.getDate());
+		if (now.compareTo(end) > 0) {
+			return 1;
+		} else {
+			return 0;
+		}
+	}
+
+	public void setOverdue(Short overdue) {
+		this.st_overdue = overdue;
+	}
+
+	@SuppressWarnings("deprecation")
+	public Short getResult() {
+		if (publishDate == null) {
+			return null;
+		}
+		Date date = new Date();
+		Calendar now = Calendar.getInstance();
+		now.set(Calendar.YEAR, date.getYear());
+		now.set(Calendar.MONTH, date.getMonth());
+		now.set(Calendar.DAY_OF_MONTH, date.getDate());
+		Calendar end = Calendar.getInstance();
+		end.set(Calendar.YEAR, publishDate.getYear());
+		end.set(Calendar.MONTH, publishDate.getMonth());
+		end.set(Calendar.DAY_OF_MONTH, publishDate.getDate());
+		if (now.compareTo(end) > 0) {
+			return 1;
+		} else {
+			return 0;
+		}
+	}
+
+	public void setResult(Short overdue) {
+		this.st_overdue = overdue;
+	}
+
+	public UserSimpleInfo getRecorder() {
+		return recorder;
+	}
+
+	public void setRecorder(UserSimpleInfo recorder) {
+		this.recorder = recorder;
+	}
+
+	public UserSimpleInfo getVendUser() {
+		return vendUser;
+	}
+
+	public void setVendUser(UserSimpleInfo vendUser) {
+		this.vendUser = vendUser;
+	}
+
+	public Set<B2BSaleTenderItemSimpleInfo> getSaleTenderItems() {
+		return saleTenderItems;
+	}
+
+	public void setSaleTenderItems(Set<B2BSaleTenderItemSimpleInfo> saleTenderItems) {
+		this.saleTenderItems = saleTenderItems;
+	}
+
+	/**
+	 * 获取所有可以搜索的字段列名(索引的field名)
+	 * 
+	 * @return 可以搜索的字段列名
+	 */
+	public static List<String> getKeywordFields() {
+		List<String> fields = new ArrayList<>();
+		fields.add(CODE_FIELD);
+		fields.add(TITLE_FIELD);
+		fields.add(USER_FIELD);
+		fields.add(SHIPADDRESS_FIELD);
+		fields.add(PAYMENT_FIELD);
+		fields.add(ENTERPRISE_FIELD);
+		fields.add(RECORDER_FIELD);
+		fields.add(ITEM_FIELD);
+		return fields;
+	}
+
+	@Override
+	public String toString() {
+		return "B2BSaleTenderSimpleInfo [id=" + id + ", code=" + code + ", status=" + status + ", date=" + date
+				+ ", endDate=" + endDate + ", publishDate=" + publishDate + ", shipAddress=" + shipAddress
+				+ ", payment=" + payment + ", title=" + title + ", user=" + user + ", userTel=" + userTel + ", ifOpen="
+				+ ifOpen + ", isPublish=" + isPublish + ", auditStatus=" + auditStatus + ", enterprise=" + enterprise
+				+ ", vendor=" + vendor + ", recorder=" + recorder + ", vendUser=" + vendUser + ", saleTenderItems="
+				+ saleTenderItems + ", st_overdue=" + st_overdue + ", st_result=" + st_result + "]";
+	}
+
+}

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

@@ -14,6 +14,7 @@ import org.springframework.data.jpa.repository.JpaRepository;
 import com.uas.search.b2b.exception.SearchException;
 import com.uas.search.b2b.service.SearchService.Table_name;
 import com.uas.search.console.b2b.core.util.ContextUtils;
+import com.uas.search.console.b2b.dao.B2BSaleTenderSimpleInfoDao;
 import com.uas.search.console.b2b.dao.CartSimpleInfoDao;
 import com.uas.search.console.b2b.dao.CustmerSimpleInfoDao;
 import com.uas.search.console.b2b.dao.DeputyOrderSimpleInfoDao;
@@ -54,6 +55,7 @@ import com.uas.search.console.b2b.dao.SaleArcheckSimpleInfoDao;
 import com.uas.search.console.b2b.dao.SaleQuotationSimpleInfoDao;
 import com.uas.search.console.b2b.dao.SaleSendSimpleInfoDao;
 import com.uas.search.console.b2b.dao.VendorSimpleInfoDao;
+import com.uas.search.console.b2b.model.B2BSaleTenderSimpleInfo;
 import com.uas.search.console.b2b.model.CartSimpleInfo;
 import com.uas.search.console.b2b.model.CustmerSimpleInfo;
 import com.uas.search.console.b2b.model.DeputyOrderSimpleInfo;
@@ -160,6 +162,7 @@ public class ClassAndTableNameUtils {
 		entityClasses.add(ProdNonStandardSimpleInfo.class);
 		entityClasses.add(ProdStandardSimpleInfo.class);
 		entityClasses.add(KindSimpleInfo.class);
+		entityClasses.add(B2BSaleTenderSimpleInfo.class);
 		// TODO 其他表
 
 		// entityClasses和entityDaoClasses对于表的添加顺序必须一致
@@ -205,6 +208,7 @@ public class ClassAndTableNameUtils {
 		entityDaoClasses.add(ProdNonStandardSimpleInfoDao.class);
 		entityDaoClasses.add(ProdStandardSimpleInfoDao.class);
 		entityDaoClasses.add(KindSimpleInfoDao.class);
+		entityDaoClasses.add(B2BSaleTenderSimpleInfoDao.class);
 		// TODO 其他表的Dao
 	}
 

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

@@ -10,6 +10,8 @@ import com.alibaba.dubbo.common.utils.StringUtils;
 import com.alibaba.fastjson.JSONObject;
 import com.uas.search.b2b.exception.SearchException;
 import com.uas.search.b2b.service.SearchService.Table_name;
+import com.uas.search.console.b2b.model.B2BSaleTenderItemSimpleInfo;
+import com.uas.search.console.b2b.model.B2BSaleTenderSimpleInfo;
 import com.uas.search.console.b2b.model.BrandSimpleInfo;
 import com.uas.search.console.b2b.model.CartSimpleInfo;
 import com.uas.search.console.b2b.model.CustmerSimpleInfo;
@@ -182,6 +184,8 @@ public class DocumentToObjectUtils {
 			return (T) toProdNonStandardSimpleInfo(document);
 		} else if (clazz == KindSimpleInfo.class) {
 			return (T) toKindSimpleInfo(document);
+		} else if (clazz == B2BSaleTenderSimpleInfo.class) {
+			return (T) toB2BSaleTenderSimpleInfo(document);
 		}
 
 		// TODO 其他表
@@ -2115,6 +2119,116 @@ public class DocumentToObjectUtils {
 		return saleTenderSimpleInfo;
 	}
 
+	/**
+	 * 将Document转换成B2BSaleTenderSimpleInfo对象
+	 * 
+	 * @param document
+	 * @return
+	 */
+	private static B2BSaleTenderSimpleInfo toB2BSaleTenderSimpleInfo(Document document) {
+		if (document == null) {
+			return null;
+		}
+		Table_name tableName = ClassAndTableNameUtils.toTableName(B2BSaleTenderSimpleInfo.class);
+		B2BSaleTenderSimpleInfo saleTenderSimpleInfo = new B2BSaleTenderSimpleInfo();
+		saleTenderSimpleInfo.setId(Long.valueOf(
+				document.get(ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.ID_FIELD))));
+		saleTenderSimpleInfo.setCode(
+				document.get(ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.CODE_FIELD)));
+		String title = document
+				.get(ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.TITLE_FIELD));
+		if (title != null) {
+			saleTenderSimpleInfo.setTitle(title);
+		}
+		String status = document
+				.get(ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.STATUS_FIELD));
+		if (status != null) {
+			saleTenderSimpleInfo.setStatus(status);
+		}
+		String date = document.get(ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.DATE_FIELD));
+		if (date != null) {
+			saleTenderSimpleInfo.setDate(new Date(Long.valueOf(date)));
+		}
+		String endDate = document
+				.get(ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.ENDDATE_FIELD));
+		if (endDate != null) {
+			saleTenderSimpleInfo.setEndDate(new Date(Long.valueOf(endDate)));
+		}
+		String publishDate = document
+				.get(ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.PUBLISHDATE_FIELD));
+		if (publishDate != null) {
+			saleTenderSimpleInfo.setPublishDate(new Date(Long.valueOf(publishDate)));
+		}
+		String payment = document
+				.get(ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.PAYMENT_FIELD));
+		if (payment != null) {
+			saleTenderSimpleInfo.setPayment(payment);
+		}
+		String shipAddress = document
+				.get(ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.SHIPADDRESS_FIELD));
+		if (shipAddress != null) {
+			saleTenderSimpleInfo.setShipAddress(shipAddress);
+		}
+		String userName = document
+				.get(ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.USERNAME_FIELD));
+		if (userName != null) {
+			saleTenderSimpleInfo.setUser(userName);
+		}
+		String userTel = document
+				.get(ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.USERTEL_FIELD));
+		if (userTel != null) {
+			saleTenderSimpleInfo.setUserTel(userTel);
+		}
+		String ifOpen = document
+				.get(ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.IFOPEN_FIELD));
+		if (ifOpen != null) {
+			saleTenderSimpleInfo.setIfOpen(Short.valueOf(ifOpen));
+		}
+		String isPublish = document
+				.get(ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.ISPUBLISH_FIELD));
+		if (isPublish != null) {
+			saleTenderSimpleInfo.setIsPublish(Short.valueOf(isPublish));
+		}
+		String auditStatus = document
+				.get(ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.AUDITSTATUS_FIELD));
+		if (auditStatus != null) {
+			saleTenderSimpleInfo.setAuditStatus(Short.valueOf(auditStatus));
+		}
+		String user = document.get(ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.USER_FIELD));
+		if (!StringUtils.isEmpty(user)) {
+			saleTenderSimpleInfo.setVendUser(JSONObject.parseObject(user, UserSimpleInfo.class));
+		}
+		String recorder = document
+				.get(ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.RECORDER_FIELD));
+		if (!StringUtils.isEmpty(recorder)) {
+			saleTenderSimpleInfo.setRecorder(JSONObject.parseObject(recorder, UserSimpleInfo.class));
+		}
+		String saleTenderItem = document
+				.get(ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.ITEM_FIELD));
+		if (null != saleTenderItem) {
+			saleTenderSimpleInfo.setSaleTenderItems(toSet(saleTenderItem, B2BSaleTenderItemSimpleInfo.class));
+		}
+		saleTenderSimpleInfo.setEnterprise(JSONObject.parseObject(
+				document.get(ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.ENTERPRISE_FIELD)),
+				EnterpriseSimpleInfo.class));
+		saleTenderSimpleInfo.setVendor(JSONObject.parseObject(
+				document.get(ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.VEND_FIELD)),
+				EnterpriseSimpleInfo.class));
+		String overdue = document
+				.get(ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.OVERDUE_FIELD));
+		if (overdue != null) {
+			saleTenderSimpleInfo.setOverdue(Short.valueOf(document
+					.get(ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.OVERDUE_FIELD))));
+		}
+		String result = document
+				.get(ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.RESULT_FIELD));
+		if (result != null) {
+			saleTenderSimpleInfo.setResult(Short.valueOf(document
+					.get(ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.RESULT_FIELD))));
+		}
+		return saleTenderSimpleInfo;
+	}
+
 	/**
 	 * 将Document转换成PagingReleaseDetailSimpleInfo对象
 	 * 

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

@@ -14,6 +14,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.uas.platform.core.model.Constant;
 import com.uas.search.b2b.service.SearchService.Table_name;
+import com.uas.search.console.b2b.model.B2BSaleTenderSimpleInfo;
 import com.uas.search.console.b2b.model.CartSimpleInfo;
 import com.uas.search.console.b2b.model.CustmerSimpleInfo;
 import com.uas.search.console.b2b.model.DeputyOrderSimpleInfo;
@@ -159,6 +160,8 @@ public class ObjectToDocumentUtils {
 			return toDocument((ProdNonStandardSimpleInfo) object);
 		} else if (object instanceof KindSimpleInfo) {
 			return toDocument((KindSimpleInfo) object);
+		} else if (object instanceof B2BSaleTenderSimpleInfo) {
+			return toDocument((B2BSaleTenderSimpleInfo) object);
 		}
 		// TODO 其他表
 		else {
@@ -2245,6 +2248,131 @@ public class ObjectToDocumentUtils {
 		return document;
 	}
 
+	/**
+	 * 将SaleTenderSimpleInfo转换为Document
+	 * 
+	 * @param saleTender
+	 * @return
+	 */
+	public static Document toDocument(B2BSaleTenderSimpleInfo saleTender) {
+		if (saleTender == null || saleTender.getId() == null) {
+			return null;
+		}
+		Table_name tableName = ClassAndTableNameUtils.toTableName(B2BSaleTenderSimpleInfo.class);
+		Document document = new Document();
+		// 不能用LongField,否则后续实时更新索引时,方法updateDocument(new Term("", ""),
+		// doc)无法根据id进行更新
+		document.add(new StringField(ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.ID_FIELD),
+				String.valueOf(saleTender.getId()), Store.YES));
+		if (null != saleTender.getCode()) {
+			document.add(
+					new TextField(ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.CODE_FIELD),
+							saleTender.getCode(), Store.YES));
+		}
+		if (null != saleTender.getStatus()) {
+			document.add(new StringField(
+					ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.STATUS_FIELD),
+					saleTender.getStatus(), Store.YES));
+		}
+		if (null != saleTender.getIfOpen()) {
+			document.add(new StringField(
+					ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.IFOPEN_FIELD),
+					String.valueOf(saleTender.getIfOpen()), Store.YES));
+		}
+		if (null != saleTender.getIsPublish()) {
+			document.add(new StringField(
+					ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.ISPUBLISH_FIELD),
+					String.valueOf(saleTender.getIsPublish()), Store.YES));
+		}
+		if (null != saleTender.getAuditStatus()) {
+			document.add(new StringField(
+					ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.AUDITSTATUS_FIELD),
+					String.valueOf(saleTender.getAuditStatus()), Store.YES));
+		}
+		if (null != saleTender.getDate()) {
+			document.add(
+					new LongField(ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.DATE_FIELD),
+							Long.valueOf(saleTender.getDate().getTime()), Store.YES));
+		}
+		if (null != saleTender.getEndDate()) {
+			document.add(
+					new LongField(ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.ENDDATE_FIELD),
+							Long.valueOf(saleTender.getEndDate().getTime()), Store.YES));
+		}
+		if (null != saleTender.getPublishDate()) {
+			document.add(new LongField(
+					ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.PUBLISHDATE_FIELD),
+					Long.valueOf(saleTender.getPublishDate().getTime()), Store.YES));
+		}
+		if (null != saleTender.getUser()) {
+			document.add(
+					new StringField(ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.USERNAME_FIELD),
+							saleTender.getUser(), Store.YES));
+		}
+		if (null != saleTender.getUserTel()) {
+			document.add(new StringField(
+					ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.USERTEL_FIELD),
+					saleTender.getUserTel(), Store.YES));
+		}
+		if (null != saleTender.getTitle()) {
+			document.add(
+					new StringField(ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.TITLE_FIELD),
+							saleTender.getTitle(), Store.YES));
+		}
+		if (null != saleTender.getShipAddress()) {
+			document.add(new StringField(
+					ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.SHIPADDRESS_FIELD),
+					saleTender.getShipAddress(), Store.YES));
+		}
+		if (null != saleTender.getPayment()) {
+			document.add(
+					new TextField(ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.PAYMENT_FIELD),
+							saleTender.getPayment(), Store.YES));
+		}
+		document.add(
+				new TextField(ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.ENTERPRISE_FIELD),
+						JSON.toJSONString(saleTender.getEnterprise()), Store.YES));
+		document.add(new TextField(ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.VEND_FIELD),
+				JSON.toJSONString(saleTender.getVendor()), Store.YES));
+		if (null != saleTender.getOverdue()) {
+			document.add(new StringField(
+					ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.OVERDUE_FIELD),
+					String.valueOf(saleTender.getOverdue()), Store.YES));
+		}
+		if (null != saleTender.getOverdue()) {
+			document.add(new StringField(
+					ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.OVERDUE_FIELD),
+					String.valueOf(saleTender.getOverdue()), Store.YES));
+		}
+		if (null != saleTender.getResult()) {
+			document.add(new StringField(
+					ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.RESULT_FIELD),
+					String.valueOf(saleTender.getResult()), Store.YES));
+		}
+		if (null != saleTender.getRecorder()) {
+			document.add(new TextField(
+					ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.RECORDER_FIELD),
+					JSON.toJSONString(saleTender.getRecorder()), Store.YES));
+		}
+
+		if (null != saleTender.getVendUser()) {
+			document.add(
+					new TextField(ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.USER_FIELD),
+							JSON.toJSONString(saleTender.getVendUser()), Store.YES));
+		}
+
+		if (null != saleTender.getSaleTenderItems()) {
+			document.add(
+					new TextField(ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.ITEM_FIELD),
+							JSON.toJSONString(saleTender.getSaleTenderItems()), Store.YES));
+		}
+
+		// 排序字段
+		document.add(new NumericDocValuesField(
+				ClassAndTableNameUtils.combineField(tableName, B2BSaleTenderSimpleInfo.ID_FIELD), saleTender.getId()));
+		return document;
+	}
+
 	/**
 	 * 将PagingReleaseDetailSimpleInfo 转换成Document
 	 *