فهرست منبع

更新ERP询价单上传保存方法,以前的方法出现了问题

hejq 7 سال پیش
والد
کامیت
d66b6c0ef0

+ 15 - 0
src/main/java/com/uas/platform/b2b/dao/PurchaseInquiryItemTempDao.java

@@ -0,0 +1,15 @@
+package com.uas.platform.b2b.dao;
+
+import com.uas.platform.b2b.model.PurchaseInquiryItemTemp;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+/**
+ * ERP保存询价单操作
+ *
+ * Created by hejq on 2018-04-12.
+ */
+@Repository
+public interface PurchaseInquiryItemTempDao extends JpaRepository<PurchaseInquiryItemTemp, Long>, JpaSpecificationExecutor<PurchaseInquiryItemTemp> {
+}

+ 22 - 0
src/main/java/com/uas/platform/b2b/dao/PurchaseInquiryTempDao.java

@@ -0,0 +1,22 @@
+package com.uas.platform.b2b.dao;
+
+import com.uas.platform.b2b.model.PurchaseInquiryTemp;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+/**
+ * ERP保存询价单操作
+ * Created by hejq on 2018-04-12.
+ */
+@Repository
+public interface PurchaseInquiryTempDao extends JpaSpecificationExecutor<PurchaseInquiryTemp>, JpaRepository<PurchaseInquiryTemp, Long> {
+
+    /**
+     * 通过企业UU和单据编号查询是询价单是否已存在
+     * @param code 单据编号
+     * @param enUU 企业UU
+     * @return
+     */
+    PurchaseInquiryTemp findByCodeAndEnUU(String code, Long enUU);
+}

+ 2 - 3
src/main/java/com/uas/platform/b2b/erp/controller/InquiryController.java

@@ -1,7 +1,6 @@
 
 package com.uas.platform.b2b.erp.controller;
 
-import com.alibaba.fastjson.JSON;
 import com.uas.platform.b2b.erp.model.Inquiry;
 import com.uas.platform.b2b.erp.model.InquiryDecide;
 import com.uas.platform.b2b.erp.model.InquiryDetail;
@@ -57,7 +56,7 @@ public class InquiryController {
     public void saveInquiries(@RequestParam("data") String data) throws UnsupportedEncodingException {
         String jsonStr = URLDecoder.decode(data, "UTF-8");
         List<Inquiry> inquiries = FlexJsonUtils.fromJsonArray(jsonStr, Inquiry.class);
-        purchaseInquiryService.save(inquiryService.convertInquiry(inquiries));
+        purchaseInquiryService.saveList(inquiryService.convertInquiry(inquiries));
         logger.log("询价单", "上传询价单", inquiries.size());
     }
 
@@ -71,7 +70,7 @@ public class InquiryController {
 	@RequestMapping(value = "/v2", method = RequestMethod.POST)
 	@ResponseBody
 	public void saveInquiries(@RequestBody List<Inquiry> inquiries) {
-        purchaseInquiryService.save(inquiryService.convertInquiry(inquiries));
+//        purchaseInquiryService.save(inquiryService.convertInquiry(inquiries));
 		logger.log("询价单", "上传询价单", inquiries.size());
 	}
 

+ 2 - 1
src/main/java/com/uas/platform/b2b/erp/service/InquiryService.java

@@ -6,6 +6,7 @@ import com.uas.platform.b2b.erp.model.Inquiry;
 import com.uas.platform.b2b.erp.model.InquiryDecide;
 import com.uas.platform.b2b.erp.model.InquiryDetail;
 import com.uas.platform.b2b.model.PurchaseInquiryItem;
+import com.uas.platform.b2b.model.PurchaseInquiryItemTemp;
 import com.uas.platform.b2b.model.SaleQuotation;
 import com.uas.platform.b2b.model.SaleQuotationItem;
 
@@ -17,7 +18,7 @@ public interface InquiryService {
 	 * @param inquiries
 	 * @return
 	 */
-	List<PurchaseInquiryItem> convertInquiry(List<Inquiry> inquiries);
+	List<PurchaseInquiryItemTemp> convertInquiry(List<Inquiry> inquiries);
 
 	/**
 	 * 将平台的报价信息,转为买家ERP的报价信息

+ 20 - 5
src/main/java/com/uas/platform/b2b/erp/service/impl/InquiryServiceImpl.java

@@ -19,6 +19,7 @@ import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.model.Constant;
 import com.uas.platform.core.model.Status;
 import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.stereotype.Service;
@@ -62,13 +63,16 @@ public class InquiryServiceImpl implements InquiryService {
 	@Autowired
     private NotExistProductDao notExistProductDao;
 
+	@Autowired
+    private PurchaseInquiryTempDao tempDao;
+
     private final static ErpBufferedLogger logger = BufferedLoggerManager.getLogger(ErpBufferedLogger.class);
 
 	private final static UsageBufferedLogger usageLogger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
 
 	@Override
-	public List<PurchaseInquiryItem> convertInquiry(List<Inquiry> inquiries) {
-		List<PurchaseInquiryItem> inquiryItems = new ArrayList<PurchaseInquiryItem>();
+	public List<PurchaseInquiryItemTemp> convertInquiry(List<Inquiry> inquiries) {
+		List<PurchaseInquiryItemTemp> tempList = new ArrayList<PurchaseInquiryItemTemp>();
 		final String appId = "uas";// 应用来源
 		long enUU = SystemSession.getUser().getEnterprise().getUu();
 		for (Inquiry inquiry : inquiries) {
@@ -107,7 +111,6 @@ public class InquiryServiceImpl implements InquiryService {
 							}
 						}
 						if (vendor != null) {
-							item.setInquiry(purchaseInquiry);
 							// 取平台的产品ID
 							Product product = item.getProduct();
 							List<Product> products = productDao.findByEnUUAndCode(product.getEnUU(), product.getCode());
@@ -125,14 +128,26 @@ public class InquiryServiceImpl implements InquiryService {
                                 }
                                 throw new NotFoundException("企业UU【" + enUU + "】,物料编号【" + product.getCode() + "】,来源【" + inquiry.getIn_code() + "】");
 							}
-							inquiryItems.add(item);
+                            item.setInquiry(purchaseInquiry);
+							PurchaseInquiryTemp temp = new PurchaseInquiryTemp();
+                            BeanUtils.copyProperties(purchaseInquiry, temp, PurchaseInquiryTemp.class);
+                            PurchaseInquiryTemp inquiryTemp = tempDao.findByCodeAndEnUU(temp.getCode(), temp.getEnUU());
+                            PurchaseInquiryItemTemp itemTemp = new PurchaseInquiryItemTemp();
+                            BeanUtils.copyProperties(item, itemTemp, PurchaseInquiryItemTemp.class);
+                            if (inquiryTemp == null) {
+                                temp = tempDao.save(temp);
+                                itemTemp.setInId(temp.getId());
+                            } else {
+                                itemTemp.setInId(inquiryTemp.getId());
+                            }
+                            tempList.add(itemTemp);
 						}
 					}
 
 				}
 			}
 		}
-		return inquiryItems;
+		return tempList;
 	}
 
 	@Override

+ 601 - 0
src/main/java/com/uas/platform/b2b/model/PurchaseInquiryItemTemp.java

@@ -0,0 +1,601 @@
+package com.uas.platform.b2b.model;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.uas.platform.b2b.core.util.DateUtils;
+import com.uas.platform.core.model.Constant;
+import com.uas.platform.core.model.Status;
+import org.codehaus.jackson.annotate.JsonIgnore;
+import org.springframework.util.CollectionUtils;
+
+import javax.persistence.*;
+import java.util.*;
+
+/**
+ * 平台里面,以供应商的角度来查看采购询价单明细
+ * 
+ * @author yingp
+ *
+ */
+@Table(name = "purc$inquiryitems")
+@Entity
+public class PurchaseInquiryItemTemp {
+
+	@Id
+	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "purc$inquiryitems_gen")
+	@SequenceGenerator(name = "purc$inquiryitems_gen", sequenceName = "purc$inquiryitems_seq", allocationSize = 1)
+	@Column(name = "id_id")
+	private Long id;
+
+	/**
+	 * 来源(买家ERP采购询价明细)的ID
+	 */
+	@Column(name = "id_sourceid", updatable = false)
+	private Long sourceId;
+
+	/**
+	 * 序号
+	 */
+	@Column(name = "id_number")
+	private Short number;
+
+	/**
+	 * 询价单
+	 */
+	@Column(name = "id_inid", nullable = false)
+	private Long inId;
+
+	/**
+	 * 买家采购员UU
+	 */
+	@Column(name = "id_useruu")
+	private Long userUU;
+
+	/**
+	 * 联系人姓名
+	 */
+	@Column(name = "id_username")
+	private String userName;
+
+	/**
+	 * 联系人电话
+	 */
+	@Column(name = "id_usertel")
+	private String userTel;
+
+	/**
+	 * 联系人编号
+	 */
+	@Column(name = "id_usercode")
+	private String userCode;
+
+	@Column(name = "id_prid")
+	private Long productId;
+
+	/**
+	 * 币种
+	 */
+	@Column(name = "id_currency")
+	private String currency;
+
+	/**
+	 * 税率
+	 */
+	@Column(name = "id_taxrate")
+	private Float taxrate;
+
+	/**
+	 * 备注
+	 */
+	@Column(name = "id_remark")
+	private String remark;
+
+	/**
+	 * 供应商UU
+	 */
+	@Column(name = "id_venduu")
+	private Long vendUU;
+
+	/**
+	 * 供应商联系人UU
+	 */
+	@Column(name = "id_venduseruu")
+	private Long vendUserUU;
+
+	/**
+	 * (买家预先提供的)有效期始
+	 */
+	@Column(name = "id_fromdate")
+	private Date fromDate;
+
+	/**
+	 * (买家预先提供的)有效期止
+	 */
+	@Column(name = "id_todate")
+	private Date toDate;
+
+	/**
+	 * (卖家报的)有效期始
+	 */
+	@Column(name = "id_vendfromdate")
+	private Date vendFromDate;
+
+	/**
+	 * (卖家报的)有效期止
+	 */
+	@Column(name = "id_vendtodate")
+	private Date vendToDate;
+
+	/**
+	 * (卖家报的)最小订购量
+	 */
+	@Column(name = "id_minorderqty")
+	private Double minOrderQty;
+
+	/**
+	 * (卖家报的)最小包装量
+	 */
+	@Column(name = "id_minpackqty")
+	private Double minPackQty;
+
+	/**
+	 * (卖家报的)物料品牌
+	 */
+	@Column(name = "id_brand")
+	private String brand;
+
+	/**
+	 * (卖家报的)供应商物料编号
+	 */
+	@Column(name = "id_vendorprodcode")
+	private String vendorprodcode;
+
+	/**
+	 * (卖家报的)交货周期(天数)
+	 */
+	@Column(name = "id_leadtime")
+	private Long leadtime;
+
+	/**
+	 * 分段报价明细
+	 */
+	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
+	@JoinColumn(name = "ir_idid")
+	@OrderBy("lapQty")
+	private Set<PurchaseInquiryReply> replies;
+
+	/**
+	 * {未回复、已回复}
+	 */
+	@Column(name = "id_status")
+	private Short status;
+
+	/**
+	 * (针对卖家的)询价传输状态{待上传、已下载}
+	 */
+	@Column(name = "id_sendstatus")
+	private Short sendStatus;
+
+	/**
+	 * (针对买家的)报价信息传输状态{待上传、已下载}
+	 */
+	@Column(name = "id_backstatus")
+	private Short backStatus;
+
+	/**
+	 * (针对卖家的)报价信息传输状态{待上传、已下载}
+	 */
+	@Column(name = "id_replysendstatus")
+	private Short replySendStatus;
+
+	/**
+	 * 是否采纳
+	 */
+	@Column(name = "id_agreed")
+	private Short agreed;
+
+	/**
+	 * (针对卖家的)是否采纳信息传输状态{待上传、已下载}
+	 */
+	@Column(name = "id_decidestatus")
+	private Short decideStatus;
+
+	/**
+	 * (针对卖家的)作废信息传输状态{待上传、已下载}
+	 */
+	@Column(name = "id_invalidstatus")
+	private Short invalidStatus;
+
+	/**
+	 * 是否买家已设置分段数
+	 */
+	@Column(name = "id_custlap")
+	private Short custLap;
+
+	/**
+	 * 保存erp传入数据的时间
+	 * 
+	 * @return
+	 */
+	@Column(name = "id_erpdate")
+	private Date erpDate;
+
+	/**
+	 * 录入时间(取主表日期字段)
+	 *
+	 * @return
+	 */
+	@Column(name = "id_date", insertable = false, updatable = false)
+	private Date date;
+
+	/**
+	 * search项目进行单据是否已过期时实际根据主表中enddate与当前时间的比较获取,但是数据库无字段会报“标识符无效”的错误
+	 * 所以建立此字段,但是此字段不会赋值。
+	 *   在建立索引时,overdue的值加入到了invalid(已失效)的判断条件中,所以此字段的值无实际意义,
+	 *   UAS询价单提交或反提交时,更新此字段,来使询价单明细更新触发器生效,更新询价单明细索引,
+	 *   才能使未过期未报价已提交单据进入失效列表,未过期未报价反提交单据从已失效列表回到待报价列表。
+	 *
+	 *   (1为已提交, 0为被反提交, null为未提交)
+	 */
+	@Column(name = "id_overdue", insertable = false, updatable = false)
+	private Short overdue;
+
+	/**
+	 * 报价是否已过期  根据vendToDate与当前时间的比较获取,但是数据库无字段会报“标识符无效”的错误
+	 * 所以建立此字段,此字段在视图中赋值。
+	 *
+	 */
+	@Column(name = "id_invalid", insertable = false, updatable = false)
+	private Short invalid;
+
+	/**
+	 * 应用来源ERP、B2B
+	 */
+	@Column(name = "id_sourceapp")
+	private String sourceApp;
+
+	/**
+	 * 需求数量
+	 */
+	@Column(name = "id_needquantity")
+	private Double needquantity;
+
+    /**
+     * erp传输状态
+     *
+     * <pre>erp发出数据传输请求时,赋给状态,完成后更新状态</pre>
+     *
+     * 1、 传输完成<br>
+     * 0、 正在传输
+     *
+     */
+	@Column(name = "id_erpstatus")
+    private Short erpstatus;
+
+	/**
+	 * 询价种类
+	 */
+	@Column(name = "id_kind")
+	private String kind;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	@JsonIgnore
+	@JSONField(serialize = false)
+	public Long getSourceId() {
+		return sourceId;
+	}
+
+	public void setSourceId(Long sourceId) {
+		this.sourceId = sourceId;
+	}
+
+	public Short getNumber() {
+		return number;
+	}
+
+	public void setNumber(Short number) {
+		this.number = number;
+	}
+
+	public Long getInId() {
+		return inId;
+	}
+
+	public void setInId(Long inId) {
+		this.inId = inId;
+	}
+
+	public Long getUserUU() {
+		return userUU;
+	}
+
+	public void setUserUU(Long userUU) {
+		this.userUU = userUU;
+	}
+
+	public String getUserName() {
+		return userName;
+	}
+
+	public void setUserName(String userName) {
+		this.userName = userName;
+	}
+
+	public String getUserTel() {
+		return userTel;
+	}
+
+	public void setUserTel(String userTel) {
+		this.userTel = userTel;
+	}
+
+	public String getUserCode() {
+		return userCode;
+	}
+
+	public void setUserCode(String userCode) {
+		this.userCode = userCode;
+	}
+
+	public Long getProductId() {
+		return productId;
+	}
+
+	public void setProductId(Long productId) {
+		this.productId = productId;
+	}
+
+	public String getCurrency() {
+		return currency;
+	}
+
+	public void setCurrency(String currency) {
+		this.currency = currency;
+	}
+
+	public Float getTaxrate() {
+		return taxrate;
+	}
+
+	public void setTaxrate(Float taxrate) {
+		this.taxrate = taxrate;
+	}
+
+	public String getRemark() {
+		return remark;
+	}
+
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+
+	public Long getVendUU() {
+		return vendUU;
+	}
+
+	public void setVendUU(Long vendUU) {
+		this.vendUU = vendUU;
+	}
+
+	public Long getVendUserUU() {
+		return vendUserUU;
+	}
+
+	public void setVendUserUU(Long vendUserUU) {
+		this.vendUserUU = vendUserUU;
+	}
+
+	public Date getFromDate() {
+		return fromDate;
+	}
+
+	public void setFromDate(Date fromDate) {
+		this.fromDate = fromDate;
+	}
+
+	public Date getToDate() {
+		return toDate;
+	}
+
+	public void setToDate(Date toDate) {
+		this.toDate = toDate;
+	}
+
+	public Date getVendFromDate() {
+		return vendFromDate;
+	}
+
+	public void setVendFromDate(Date vendFromDate) {
+		this.vendFromDate = vendFromDate;
+	}
+
+	public Date getVendToDate() {
+		return vendToDate;
+	}
+
+	public void setVendToDate(Date vendToDate) {
+		this.vendToDate = vendToDate;
+	}
+
+	public Double getMinOrderQty() {
+		return minOrderQty;
+	}
+
+	public void setMinOrderQty(Double minOrderQty) {
+		this.minOrderQty = minOrderQty;
+	}
+
+	public Double getMinPackQty() {
+		return minPackQty;
+	}
+
+	public void setMinPackQty(Double minPackQty) {
+		this.minPackQty = minPackQty;
+	}
+
+	public String getBrand() {
+		return brand;
+	}
+
+	public void setBrand(String brand) {
+		this.brand = brand;
+	}
+
+	public String getVendorprodcode() {
+		return vendorprodcode;
+	}
+
+	public void setVendorprodcode(String vendorprodcode) {
+		this.vendorprodcode = vendorprodcode;
+	}
+
+	public Long getLeadtime() {
+		return leadtime;
+	}
+
+	public void setLeadtime(Long leadtime) {
+		this.leadtime = leadtime;
+	}
+
+	public Set<PurchaseInquiryReply> getReplies() {
+		return replies;
+	}
+
+	public void setReplies(Set<PurchaseInquiryReply> replies) {
+		this.replies = replies;
+	}
+
+	public Short getStatus() {
+		return status;
+	}
+
+	public void setStatus(Short status) {
+		this.status = status;
+	}
+
+	public Short getSendStatus() {
+		return sendStatus;
+	}
+
+	public void setSendStatus(Short sendStatus) {
+		this.sendStatus = sendStatus;
+	}
+
+	public Short getBackStatus() {
+		return backStatus;
+	}
+
+	public void setBackStatus(Short backStatus) {
+		this.backStatus = backStatus;
+	}
+
+	public Short getReplySendStatus() {
+		return replySendStatus;
+	}
+
+	public void setReplySendStatus(Short replySendStatus) {
+		this.replySendStatus = replySendStatus;
+	}
+
+	public Short getAgreed() {
+		return agreed;
+	}
+
+	public void setAgreed(Short agreed) {
+		this.agreed = agreed;
+	}
+
+	public Short getDecideStatus() {
+		return decideStatus;
+	}
+
+	public void setDecideStatus(Short decideStatus) {
+		this.decideStatus = decideStatus;
+	}
+
+	public Short getInvalidStatus() {
+		return invalidStatus;
+	}
+
+	public void setInvalidStatus(Short invalidStatus) {
+		this.invalidStatus = invalidStatus;
+	}
+
+	public Short getCustLap() {
+		return custLap;
+	}
+
+	public void setCustLap(Short custLap) {
+		this.custLap = custLap;
+	}
+
+	public Date getErpDate() {
+		return erpDate;
+	}
+
+	public void setErpDate(Date erpDate) {
+		this.erpDate = erpDate;
+	}
+
+	public Date getDate() {
+		return date;
+	}
+
+	public void setDate(Date date) {
+		this.date = date;
+	}
+
+	public Short getOverdue() {
+		return overdue;
+	}
+
+	public void setOverdue(Short overdue) {
+		this.overdue = overdue;
+	}
+
+	public Short getInvalid() {
+		return invalid;
+	}
+
+	public void setInvalid(Short invalid) {
+		this.invalid = invalid;
+	}
+
+	public String getSourceApp() {
+		return sourceApp;
+	}
+
+	public void setSourceApp(String sourceApp) {
+		this.sourceApp = sourceApp;
+	}
+
+	public Double getNeedquantity() {
+		return needquantity;
+	}
+
+	public void setNeedquantity(Double needquantity) {
+		this.needquantity = needquantity;
+	}
+
+	public Short getErpstatus() {
+		return erpstatus;
+	}
+
+	public void setErpstatus(Short erpstatus) {
+		this.erpstatus = erpstatus;
+	}
+
+	public String getKind() {
+		return kind;
+	}
+
+	public void setKind(String kind) {
+		this.kind = kind;
+	}
+}

+ 330 - 0
src/main/java/com/uas/platform/b2b/model/PurchaseInquiryTemp.java

@@ -0,0 +1,330 @@
+package com.uas.platform.b2b.model;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import org.codehaus.jackson.annotate.JsonIgnore;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Set;
+
+/**
+ * 平台里面,以供应商的角度来查看采购询价单
+ * 
+ * <pre>
+ * 数据库虚拟列里面用到的函数,是不允许操作动态数据的;原over_sysdate函数用法存在问题;
+ * 改用视图{@code v$purc$inquiry}处理
+ * </pre>
+ * 
+ * @author yingp
+ * 
+ */
+@Table(name = "purc$inquiry")
+@Entity
+public class PurchaseInquiryTemp implements Serializable {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	@Id
+	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "purc$inquiry_gen")
+	@SequenceGenerator(name = "purc$inquiry_gen", sequenceName = "purc$inquiry_seq", allocationSize = 1)
+	@Column(name = "in_id")
+	private Long id;
+
+	/**
+	 * 询价单所属企业UU
+	 */
+	@Column(name = "in_enuu")
+	private Long enUU;
+
+	/**
+	 * 询价单所属用户UU
+	 */
+	@Column(name = "in_recorderuu")
+	private Long recorderUU;
+
+	/**
+	 * 流水号
+	 */
+	@Column(name = "in_code")
+	private String code;
+
+	/**
+	 * 单据归属日期
+	 */
+	@Column(name = "in_date")
+	private Date date;
+
+	/**
+	 * 录入人
+	 */
+	@Column(name = "in_recorder")
+	private String recorder;
+
+	/**
+	 * 审核人
+	 */
+	@Column(name = "in_auditor")
+	private String auditor;
+
+	/**
+	 * 报价截止日期
+	 */
+	@Column(name = "in_enddate")
+	private Date endDate;
+
+	/**
+	 * 备注
+	 */
+	@Column(name = "in_remark")
+	private String remark;
+
+	/**
+	 * 环保要求
+	 */
+	@Column(name = "in_environment")
+	private String environment;
+
+	/**
+	 * 价格类型
+	 */
+	@Column(name = "in_pricetype")
+	private String priceType;
+
+	/**
+	 * 来源系统单据ID
+	 */
+	@Column(name = "in_sourceid")
+	private Long sourceId;
+
+	/**
+	 * 附件
+	 */
+	@OneToMany(fetch = FetchType.EAGER, cascade = {CascadeType.ALL})
+	@JoinTable(name = "purc$inquiryattach", joinColumns = @JoinColumn(name = "in_id", referencedColumnName = "in_id"), inverseJoinColumns = @JoinColumn(name="at_id", referencedColumnName = "at_id"))
+	private Set<Attach> attachs;
+
+	/**
+	 * 客户已提交
+	 */
+	@Column(name = "in_checked")
+	private Short check;
+
+	/**
+	 * 是否过期
+	 */
+	@Column(name = "in_overdue", insertable = false, updatable = false)
+	private Short overdue;
+
+	/**
+	 * 是否公开<br>
+	 * 1、 公共<br>
+	 * 0、 不用开
+	 */
+	@Column(name = "in_isopen")
+	private Short isOpen;
+
+	/**
+	 * 应用来源,主要是为了平台公共询价做处理
+	 */
+	@Column(name = "in_sourceapp")
+	private String sourceApp;
+
+	/**
+	 * 收货地址
+	 */
+	@Column(name = "in_ship")
+	private String ship;
+
+	/**
+	 * 是否开票<br>
+	 * 1. 是<br>
+	 * 0. 否
+	 */
+	@Column(name = "in_invoice")
+	private Short invoice;
+
+	/**
+	 * 询价类型
+	 */
+	@Column(name = "in_inquirytype")
+	private String inquirytype;
+
+	/**
+	 * 询价种类(公共或其他)
+	 */
+	@Column(name = "in_kind")
+	private String kind;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public String getCode() {
+		return code;
+	}
+
+	public String getPriceType() {
+		return priceType;
+	}
+
+	public void setPriceType(String priceType) {
+		this.priceType = priceType;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	public Date getDate() {
+		return date;
+	}
+
+	public void setDate(Date date) {
+		this.date = date;
+	}
+
+	public String getRecorder() {
+		return recorder;
+	}
+
+	public void setRecorder(String recorder) {
+		this.recorder = recorder;
+	}
+
+	public String getAuditor() {
+		return auditor;
+	}
+
+	public void setAuditor(String auditor) {
+		this.auditor = auditor;
+	}
+
+	public Date getEndDate() {
+		return endDate;
+	}
+
+	public void setEndDate(Date endDate) {
+		this.endDate = endDate;
+	}
+
+	public String getRemark() {
+		return remark;
+	}
+
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+
+	public Long getEnUU() {
+		return enUU;
+	}
+
+	public void setEnUU(Long enUU) {
+		this.enUU = enUU;
+	}
+
+	public Long getRecorderUU() {
+		return recorderUU;
+	}
+
+	public void setRecorderUU(Long recorderUU) {
+		this.recorderUU = recorderUU;
+	}
+
+	public Long getSourceId() {
+		return sourceId;
+	}
+
+	public void setSourceId(Long sourceId) {
+		this.sourceId = sourceId;
+	}
+
+	public Set<Attach> getAttachs() {
+		return attachs;
+	}
+
+	public void setAttachs(Set<Attach> attachs) {
+		this.attachs = attachs;
+	}
+
+	public String getEnvironment() {
+		return environment;
+	}
+
+	public void setEnvironment(String environment) {
+		this.environment = environment;
+	}
+
+	public Short getCheck() {
+		return check;
+	}
+
+	public void setCheck(Short check) {
+		this.check = check;
+	}
+
+	public Short getOverdue() {
+		return overdue;
+	}
+
+	public void setOverdue(Short overdue) {
+		this.overdue = overdue;
+	}
+
+	public Short getIsOpen() {
+		return isOpen;
+	}
+
+	public void setIsOpen(Short isOpen) {
+		this.isOpen = isOpen;
+	}
+
+	public String getSourceApp() {
+		return sourceApp;
+	}
+
+	public void setSourceApp(String sourceApp) {
+		this.sourceApp = sourceApp;
+	}
+
+	public String getShip() {
+		return ship;
+	}
+
+	public void setShip(String ship) {
+		this.ship = ship;
+	}
+
+	public Short getInvoice() {
+		return invoice;
+	}
+
+	public void setInvoice(Short invoice) {
+		this.invoice = invoice;
+	}
+
+	public String getInquirytype() {
+		return inquirytype;
+	}
+
+	public void setInquirytype(String inquirytype) {
+		this.inquirytype = inquirytype;
+	}
+
+	public String getKind() {
+		return kind;
+	}
+
+	public void setKind(String kind) {
+		this.kind = kind;
+	}
+
+}

+ 3 - 14
src/main/java/com/uas/platform/b2b/service/PurchaseInquiryService.java

@@ -2,11 +2,7 @@ package com.uas.platform.b2b.service;
 
 import com.uas.platform.b2b.erp.model.Inquiry;
 import com.uas.platform.b2b.erp.model.QuotationDown;
-import com.uas.platform.b2b.model.Attach;
-import com.uas.platform.b2b.model.FileUpload;
-import com.uas.platform.b2b.model.PurchaseInquiry;
-import com.uas.platform.b2b.model.PurchaseInquiryItem;
-import com.uas.platform.b2b.model.SearchFilter;
+import com.uas.platform.b2b.model.*;
 import com.uas.platform.b2b.temporary.model.InquiryMessage;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.search.b2b.model.SPage;
@@ -19,15 +15,6 @@ import java.util.Map;
 
 public interface PurchaseInquiryService {
 
-	/**
-	 * 批量保存、修改采购询价
-	 * 
-	 * @param inquiryItems
-	 *            询价明细
-	 * @return
-	 */
-	public void save(List<PurchaseInquiryItem> inquiryItems);
-
 	/**
 	 * 附件ID写到询价单
 	 * 
@@ -315,4 +302,6 @@ public interface PurchaseInquiryService {
 	 * @param enUU 采购方企业UU
 	 */
     void coverInquiryItemProdToUser(Long enUU) throws Exception;
+
+    void saveList(List<PurchaseInquiryItemTemp> purchaseInquiryItemTemps);
 }

+ 37 - 27
src/main/java/com/uas/platform/b2b/service/impl/PurchaseInquiryServiceImpl.java

@@ -35,6 +35,7 @@ import com.uas.platform.core.model.Status;
 import com.uas.platform.core.persistence.criteria.PredicateUtils;
 import com.uas.search.b2b.model.PageParams;
 import com.uas.search.b2b.model.SPage;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Sort.Direction;
@@ -83,9 +84,6 @@ public class PurchaseInquiryServiceImpl implements PurchaseInquiryService {
 	@Autowired
 	private ProductDao productDao;
 
-	@Autowired
-	private PurcInquiryItemDao purcInquiryItemDao;
-
 	@Autowired
 	private UserOrderDao userOrderDao;
 
@@ -116,6 +114,9 @@ public class PurchaseInquiryServiceImpl implements PurchaseInquiryService {
 	@Autowired
 	private ProductTempDao productTempDao;
 
+	@Autowired
+    private PurchaseInquiryItemTempDao tempDao;
+
 	private final static ErpBufferedLogger logger = BufferedLoggerManager.getLogger(ErpBufferedLogger.class);
 
     static final String TEL_REGEXP = "^((\\(\\d{3}\\))|(\\d{3}\\-))?(13|15|18|17)\\d{9}$";
@@ -125,31 +126,40 @@ public class PurchaseInquiryServiceImpl implements PurchaseInquiryService {
     @Autowired
     private ProductUsersService productUsersService;
 
-	@Override
-	public void save(List<PurchaseInquiryItem> inquiryItems) {
-        inquiryItems = purchaseInquiryItemDao.save(inquiryItems);
-        saveUserOrders(inquiryItems);
-        Long userUU = SystemSession.getUser().getUserUU();
-        Long enUU = SystemSession.getUser().getEnterprise().getUu();
-        String userIp = SystemSession.getUser().getIp();
-        String userName = SystemSession.getUser().getUserName();
-		sendRemind(PurchaseInquiryItem.distinct(inquiryItems), userUU, userName, userIp, enUU);
-		// 产生消息
-		List<PurchaseInquiry> inquiries = PurchaseInquiryItem.distinct(inquiryItems);
-		List<PurchaseInquiryItem> items = new ArrayList<>();
-		for (PurchaseInquiry inquiry : inquiries) {
-			Set<Long> enUUs = new HashSet<>();
-			for (PurchaseInquiryItem inquiryItem : inquiry.getInquiryItems()) {
-				if (!enUUs.contains(inquiryItem.getVendUU())) {
-					items.add(inquiryItem);
-					enUUs.add(inquiryItem.getVendUU());
-				}
-			}
-		}
-		ContextUtils.publishEvent(new PurchaseInquiryItemSaveReleaseEvent(items));
-	}
+    @Override
+    public void saveList(List<PurchaseInquiryItemTemp> purchaseInquiryItemTemps) {
+        purchaseInquiryItemTemps = tempDao.save(purchaseInquiryItemTemps);
+        List<PurchaseInquiryItem> inquiryItems = new ArrayList<PurchaseInquiryItem>();
+        if (!CollectionUtils.isEmpty(purchaseInquiryItemTemps)) {
+            for (PurchaseInquiryItemTemp temp : purchaseInquiryItemTemps) {
+                PurchaseInquiryItem item = new PurchaseInquiryItem();
+                BeanUtils.copyProperties(temp, item, PurchaseInquiryItem.class);
+                item.setInquiry(purchaseInquiryDao.findOne(temp.getInId()));
+                item.setProduct(productDao.findOne(temp.getProductId()));
+            }
+            saveUserOrders(inquiryItems);
+            Long userUU = SystemSession.getUser().getUserUU();
+            Long enUU = SystemSession.getUser().getEnterprise().getUu();
+            String userIp = SystemSession.getUser().getIp();
+            String userName = SystemSession.getUser().getUserName();
+            sendRemind(PurchaseInquiryItem.distinct(inquiryItems), userUU, userName, userIp, enUU);
+            // 产生消息
+            List<PurchaseInquiry> inquiries = PurchaseInquiryItem.distinct(inquiryItems);
+            List<PurchaseInquiryItem> items = new ArrayList<>();
+            for (PurchaseInquiry inquiry : inquiries) {
+                Set<Long> enUUs = new HashSet<>();
+                for (PurchaseInquiryItem inquiryItem : inquiry.getInquiryItems()) {
+                    if (!enUUs.contains(inquiryItem.getVendUU())) {
+                        items.add(inquiryItem);
+                        enUUs.add(inquiryItem.getVendUU());
+                    }
+                }
+            }
+            ContextUtils.publishEvent(new PurchaseInquiryItemSaveReleaseEvent(items));
+        }
+    }
 
-	/**
+    /**
 	 * 产生消息
 	 * @param inquiryItems
 	 */