Selaa lähdekoodia

更新ERP订单传入平台的存储方法

git-svn-id: svn+ssh://10.10.101.21/source/platform/platform-b2b@10194 f3bf4e98-0cf0-11e4-a00c-a99a8b9d557d
hejq 8 vuotta sitten
vanhempi
commit
30a94f71ed

+ 13 - 0
src/main/java/com/uas/platform/b2b/dao/PurcOrderInfoItemDao.java

@@ -0,0 +1,13 @@
+package com.uas.platform.b2b.dao;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+import com.uas.platform.b2b.model.PurcOrderInfoItem;
+
+@Repository
+public interface PurcOrderInfoItemDao
+		extends JpaRepository<PurcOrderInfoItem, Long>, JpaSpecificationExecutor<PurcOrderInfoItem> {
+
+}

+ 12 - 11
src/main/java/com/uas/platform/b2b/erp/model/Purchase.java

@@ -1,18 +1,19 @@
 package com.uas.platform.b2b.erp.model;
 
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.springframework.util.CollectionUtils;
+
 import com.uas.platform.b2b.model.EnterpriseInfo;
-import com.uas.platform.b2b.model.PurchaseOrderAll;
-import com.uas.platform.b2b.model.PurchaseOrderAllItem;
+import com.uas.platform.b2b.model.PurcOrderInfoItem;
+import com.uas.platform.b2b.model.PurchaseOrderInfo;
 import com.uas.platform.b2b.model.User;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.core.model.Constant;
 import com.uas.platform.core.model.Status;
-import org.springframework.util.CollectionUtils;
-
-import java.util.Date;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
 
 /**
  * ERP系统的采购订单
@@ -298,8 +299,8 @@ public class Purchase {
 	 * 
 	 * @return
 	 */
-	public PurchaseOrderAll convert() {
-		PurchaseOrderAll order = new PurchaseOrderAll();
+	public PurchaseOrderInfo convert() {
+		PurchaseOrderInfo order = new PurchaseOrderInfo();
 		order.setCode(this.pu_code);
 		order.setCurrency(this.pu_currency);
 		order.setRate(this.pu_rate);
@@ -352,7 +353,7 @@ public class Purchase {
 		order.setDisplay(Constant.YES);// 设为未查看
 		order.setErpId(this.pu_id);
 		if (!CollectionUtils.isEmpty(this.purchaseDetails)) {
-			Set<PurchaseOrderAllItem> items = new HashSet<PurchaseOrderAllItem>();
+			Set<PurcOrderInfoItem> items = new HashSet<PurcOrderInfoItem>();
 			for (PurchaseDetail detail : this.purchaseDetails) {
 				items.add(detail.convert());
 			}

+ 3 - 3
src/main/java/com/uas/platform/b2b/erp/model/PurchaseDetail.java

@@ -3,7 +3,7 @@ package com.uas.platform.b2b.erp.model;
 import java.util.Date;
 
 import com.uas.platform.b2b.model.Product;
-import com.uas.platform.b2b.model.PurchaseOrderAllItem;
+import com.uas.platform.b2b.model.PurcOrderInfoItem;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.core.model.Status;
 
@@ -111,8 +111,8 @@ public class PurchaseDetail {
 	 * 
 	 * @return
 	 */
-	public PurchaseOrderAllItem convert() {
-		PurchaseOrderAllItem item = new PurchaseOrderAllItem();
+	public PurcOrderInfoItem convert() {
+		PurcOrderInfoItem item = new PurcOrderInfoItem();
 		item.setDelivery(this.pd_delivery);
 		item.setNumber(this.pd_detno);
 		item.setPrice(this.pd_price);

+ 5 - 4
src/main/java/com/uas/platform/b2b/erp/service/PurchaseService.java

@@ -1,16 +1,16 @@
 package com.uas.platform.b2b.erp.service;
 
+import java.util.List;
+
 import com.uas.platform.b2b.erp.model.MessageLog;
 import com.uas.platform.b2b.erp.model.Purchase;
 import com.uas.platform.b2b.erp.model.PurchaseDetailEnd;
 import com.uas.platform.b2b.erp.model.PurchaseReply;
 import com.uas.platform.b2b.model.PrintLog;
-import com.uas.platform.b2b.model.PurchaseOrderAllItem;
+import com.uas.platform.b2b.model.PurcOrderInfoItem;
 import com.uas.platform.b2b.model.PurchaseOrderItem;
 import com.uas.platform.b2b.model.PurchaseOrderReply;
 
-import java.util.List;
-
 public interface PurchaseService {
 
 	/**
@@ -19,7 +19,7 @@ public interface PurchaseService {
 	 * @param purchases
 	 * @return
 	 */
-	List<PurchaseOrderAllItem> convertPurchase(List<Purchase> purchases);
+	List<PurcOrderInfoItem> convertPurchase(List<Purchase> purchases);
 
 	/**
 	 * 将平台的订单回复,转为ERP的回复
@@ -52,4 +52,5 @@ public interface PurchaseService {
 	 * @return
 	 */
 	List<MessageLog> convertMessageLog(List<PrintLog> printNotUploadReply);
+
 }

+ 8 - 8
src/main/java/com/uas/platform/b2b/erp/service/impl/PurchaseServiceImpl.java

@@ -22,9 +22,9 @@ import com.uas.platform.b2b.erp.service.PurchaseService;
 import com.uas.platform.b2b.model.Enterprise;
 import com.uas.platform.b2b.model.PrintLog;
 import com.uas.platform.b2b.model.Product;
+import com.uas.platform.b2b.model.PurcOrderInfoItem;
 import com.uas.platform.b2b.model.PurchaseOrder;
-import com.uas.platform.b2b.model.PurchaseOrderAll;
-import com.uas.platform.b2b.model.PurchaseOrderAllItem;
+import com.uas.platform.b2b.model.PurchaseOrderInfo;
 import com.uas.platform.b2b.model.PurchaseOrderItem;
 import com.uas.platform.b2b.model.PurchaseOrderReply;
 import com.uas.platform.b2b.model.User;
@@ -48,15 +48,15 @@ public class PurchaseServiceImpl implements PurchaseService {
 	@Autowired
 	private PurchaseOrderItemDao purchaseOrderItemDao;
 	@Override
-	public List<PurchaseOrderAllItem> convertPurchase(List<Purchase> purchases) {
-		List<PurchaseOrderAllItem> orderItems = new ArrayList<PurchaseOrderAllItem>();
+	public List<PurcOrderInfoItem> convertPurchase(List<Purchase> purchases) {
+		List<PurcOrderInfoItem> orderItems = new ArrayList<PurcOrderInfoItem>();
 		long enUU = SystemSession.getUser().getEnterprise().getUu();
 		for (Purchase purchase : purchases) {
 			// 先查看是否已存在
 			List<PurchaseOrder> orders = purchaseOrderDao.findByEnUUAndCode(enUU, purchase.getPu_code());
 			if (CollectionUtils.isEmpty(orders)) {
-				PurchaseOrderAll order = purchase.convert();// 将order的UserUU set
-															// 为em_uu
+				PurchaseOrderInfo order = purchase.convert();// 将order的UserUU
+																// set 为em_uu
 				List<Vendor> vendors = vendorDao.findByMyEnUUAndVendUU(order.getEnUU(), order.getVendUU());
 				Vendor vendor = null;
 				if (vendors.size() == 0) {// 供应商资料在平台上不存在
@@ -80,7 +80,7 @@ public class PurchaseServiceImpl implements PurchaseService {
 						}
 					}
 					order.setUser(null);
-					for (PurchaseOrderAllItem item : order.getOrderItems()) {
+					for (PurcOrderInfoItem item : order.getOrderItems()) {
 						item.setOrder(order);
 						// 取平台的产品ID
 						Product product = item.getProduct();
@@ -111,7 +111,7 @@ public class PurchaseServiceImpl implements PurchaseService {
 	 * 
 	 * @param order
 	 */
-	private Vendor addVendor(PurchaseOrderAll order) {
+	private Vendor addVendor(PurchaseOrderInfo order) {
 		Vendor vendor = new Vendor();
 		vendor.setMyEnUU(order.getEnUU());
 		// 买方用户(联系人)

+ 4 - 4
src/main/java/com/uas/platform/b2b/event/PurchaseOrderSaveReleaseEvent.java

@@ -5,7 +5,7 @@ import java.util.List;
 
 import com.uas.platform.b2b.model.PagingRelease;
 import com.uas.platform.b2b.model.PagingReleaseDetail;
-import com.uas.platform.b2b.model.PurchaseOrderAll;
+import com.uas.platform.b2b.model.PurchaseOrderInfo;
 import com.uas.platform.core.model.Constant;
 
 /**
@@ -13,14 +13,14 @@ import com.uas.platform.core.model.Constant;
  * Created by dongbw
  * 17/03/23 14:06.
  */
-public class PurchaseOrderSaveReleaseEvent extends SaveReleaseEvent<PagingReleaseDetail, PurchaseOrderAll> {
+public class PurchaseOrderSaveReleaseEvent extends SaveReleaseEvent<PagingReleaseDetail, PurchaseOrderInfo> {
 
 	/**
 	 * 
 	 */
 	private static final long serialVersionUID = 1L;
 
-	public PurchaseOrderSaveReleaseEvent(List<PurchaseOrderAll> savedList) {
+	public PurchaseOrderSaveReleaseEvent(List<PurchaseOrderInfo> savedList) {
         super(savedList);
     }
 
@@ -31,7 +31,7 @@ public class PurchaseOrderSaveReleaseEvent extends SaveReleaseEvent<PagingReleas
      * @return
      */
     @Override
-    public PagingReleaseDetail release(PurchaseOrderAll orderAll) {
+	public PagingReleaseDetail release(PurchaseOrderInfo orderAll) {
         //TODO 保存新订单之后,触发新增消息事件。
         Long emUU = orderAll.getUserUU();
         if (null == emUU) {

+ 386 - 0
src/main/java/com/uas/platform/b2b/model/PurcOrderInfoItem.java

@@ -0,0 +1,386 @@
+package com.uas.platform.b2b.model;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToOne;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
+@Table(name = "purc$orderitems")
+@Entity
+public class PurcOrderInfoItem {
+
+	@Id
+	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "purc$orderitems_gen")
+	@SequenceGenerator(name = "purc$orderitems_gen", sequenceName = "purc$orderitems_seq", allocationSize = 1)
+	@Column(name = "pd_id")
+	private Long id;
+
+	/**
+	 * 序号
+	 */
+	@Column(name = "pd_number")
+	private Short number;
+
+	/**
+	 * 采购订单
+	 */
+	@ManyToOne(cascade = CascadeType.ALL, optional = true)
+	@JoinColumn(name = "pd_puid", nullable = false)
+	private PurchaseOrderInfo order;
+
+	/**
+	 * 产品ID
+	 */
+	@Column(name = "pd_prid")
+	private Long productId;
+
+	/**
+	 * 产品
+	 */
+	@OneToOne(cascade = { CascadeType.REFRESH })
+	@JoinColumn(name = "pd_prid", insertable = false, updatable = false)
+	private Product product;
+
+	/**
+	 * 数量
+	 */
+	@Column(name = "pd_qty")
+	private Double qty;
+
+	/**
+	 * 已回复的数量
+	 */
+	@Column(name = "pd_replyqty")
+	private Double replyQty;
+
+	/**
+	 * (最近一次)回复的交期
+	 */
+	@Column(name = "pd_replydelivery")
+	private Date replyDelivery;
+
+	/**
+	 * (最近一次)回复的备注
+	 */
+	@Column(name = "pd_replyremark")
+	private String replyRemark;
+
+	/**
+	 * 备注
+	 */
+	@Column(name = "pd_remark")
+	private String remark;
+
+	/**
+	 * 送货工厂
+	 */
+	@Column(name = "pd_factory")
+	private String factory;
+
+	/**
+	 * 供应商规格
+	 */
+	@Column(name = "pd_vendspec")
+	private String vendspec;
+
+	public String getVendspec() {
+		return vendspec;
+	}
+
+	public void setVendspec(String vendspec) {
+		this.vendspec = vendspec;
+	}
+
+	/**
+	 * 含税单价
+	 */
+	@Column(name = "pd_price")
+	private Double price;
+
+	/**
+	 * 税率
+	 */
+	@Column(name = "pd_taxrate")
+	private Float taxrate;
+
+	/**
+	 * 处理状态(已回复、未回复),全部回复后改为已回复
+	 */
+	@Column(name = "pd_status", insertable = false, updatable = false)
+	private Short status;
+
+	/**
+	 * 含税金额
+	 */
+	@Column(name = "pd_amount", insertable = false, updatable = false)
+	private Double amount;
+
+	/**
+	 * 不含税单价
+	 */
+	@Column(name = "pd_notaxprice", insertable = false, updatable = false)
+	private Double noTaxPrice;
+
+	/**
+	 * 不含税金额
+	 */
+	@Column(name = "pd_notaxamount", insertable = false, updatable = false)
+	private Double noTaxAmount;
+
+	/**
+	 * 交货日期
+	 */
+	@Column(name = "pd_delivery")
+	private Date delivery;
+
+	/**
+	 * 是否已结案
+	 */
+	@Column(name = "pd_end")
+	private Short end;
+
+	/**
+	 * 客户已验收数量
+	 */
+	@Column(name = "pd_acceptqty")
+	private Double acceptQty;
+
+	/**
+	 * 客户验退数量
+	 */
+	@Column(name = "pd_returnqty")
+	private Double returnQty;
+
+	/**
+	 * 关键词查询相关
+	 */
+	@Transient
+	private Boolean key;
+
+	@Column(name = "pd_erpdate")
+	private Date erpDate;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Short getNumber() {
+		return number;
+	}
+
+	public void setNumber(Short number) {
+		this.number = number;
+	}
+
+	@JsonIgnore
+	@JSONField(serialize = false)
+	public PurchaseOrderInfo getOrder() {
+		return order;
+	}
+
+	public void setOrder(PurchaseOrderInfo order) {
+		this.order = order;
+	}
+
+	public Long getProductId() {
+		return productId;
+	}
+
+	public void setProductId(Long productId) {
+		this.productId = productId;
+	}
+
+	public Product getProduct() {
+		return product;
+	}
+
+	public void setProduct(Product product) {
+		this.product = product;
+	}
+
+	public Double getQty() {
+		return qty;
+	}
+
+	public void setQty(Double qty) {
+		this.qty = qty;
+	}
+
+	public Double getReplyQty() {
+		return replyQty;
+	}
+
+	public void setReplyQty(Double replyQty) {
+		this.replyQty = replyQty;
+	}
+
+	public String getRemark() {
+		return remark;
+	}
+
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+
+	public Double getPrice() {
+		return price;
+	}
+
+	public void setPrice(Double price) {
+		this.price = price;
+	}
+
+	public Float getTaxrate() {
+		return taxrate;
+	}
+
+	public void setTaxrate(Float taxrate) {
+		this.taxrate = taxrate;
+	}
+
+	public Double getAmount() {
+		return amount;
+	}
+
+	public void setAmount(Double amount) {
+		this.amount = amount;
+	}
+
+	public Double getNoTaxPrice() {
+		return noTaxPrice;
+	}
+
+	public void setNoTaxPrice(Double noTaxPrice) {
+		this.noTaxPrice = noTaxPrice;
+	}
+
+	public Double getNoTaxAmount() {
+		return noTaxAmount;
+	}
+
+	public void setNoTaxAmount(Double noTaxAmount) {
+		this.noTaxAmount = noTaxAmount;
+	}
+
+	public Date getDelivery() {
+		return delivery;
+	}
+
+	public void setDelivery(Date delivery) {
+		this.delivery = delivery;
+	}
+
+	public String getFactory() {
+		return factory;
+	}
+
+	public void setFactory(String factory) {
+		this.factory = factory;
+	}
+
+	public Date getReplyDelivery() {
+		return replyDelivery;
+	}
+
+	public void setReplyDelivery(Date replyDelivery) {
+		this.replyDelivery = replyDelivery;
+	}
+
+	public String getReplyRemark() {
+		return replyRemark;
+	}
+
+	public void setReplyRemark(String replyRemark) {
+		this.replyRemark = replyRemark;
+	}
+
+	public Short getStatus() {
+		return status;
+	}
+
+	public void setStatus(Short status) {
+		this.status = status;
+	}
+
+	public Short getEnd() {
+		return end;
+	}
+
+	public void setEnd(Short end) {
+		this.end = end;
+	}
+
+	public Double getAcceptQty() {
+		return acceptQty;
+	}
+
+	public void setAcceptQty(Double acceptQty) {
+		this.acceptQty = acceptQty;
+	}
+
+	public Double getReturnQty() {
+		return returnQty;
+	}
+
+	public void setReturnQty(Double returnQty) {
+		this.returnQty = returnQty;
+	}
+
+	public Boolean getKey() {
+		return key;
+	}
+
+	public void setKey(Boolean key) {
+		this.key = key;
+	}
+
+	public Date getErpDate() {
+		return erpDate;
+	}
+
+	public void setErpDate(Date erpDate) {
+		this.erpDate = erpDate;
+	}
+
+	public double getBalance() {
+		double qtyNum, returnQtyNum, acceptQtyNum;
+		qtyNum = qty == null ? 0 : qty;
+		returnQtyNum = returnQty == null ? 0 : returnQty;
+		acceptQtyNum = acceptQty == null ? 0 : acceptQty;
+		return qtyNum + returnQtyNum - acceptQtyNum;
+	}
+
+	public static List<PurchaseOrderInfo> distinct(List<PurcOrderInfoItem> items) {
+		List<PurchaseOrderInfo> orders = new ArrayList<PurchaseOrderInfo>();
+		Set<Long> keys = new HashSet<Long>();
+		for (PurcOrderInfoItem item : items) {
+			if (!keys.contains(item.getOrder().getId())) {
+				orders.add(item.getOrder());
+				keys.add(item.getOrder().getId());
+			}
+		}
+		return orders;
+	}
+
+}

+ 84 - 0
src/main/java/com/uas/platform/b2b/model/PurchaseOrder.java

@@ -13,6 +13,7 @@ import javax.persistence.Index;
 import javax.persistence.JoinColumn;
 import javax.persistence.OneToMany;
 import javax.persistence.OneToOne;
+import javax.persistence.OrderBy;
 import javax.persistence.Table;
 
 import org.hibernate.annotations.Where;
@@ -207,6 +208,14 @@ public class PurchaseOrder implements Serializable {
 	@Column(name = "pu_erpid")
 	private Long erpId;
 
+	/**
+	 * 采购单明细
+	 */
+	@OneToMany(mappedBy = "order", cascade = { CascadeType.REFRESH, CascadeType.PERSIST, CascadeType.REMOVE,
+			CascadeType.MERGE }, fetch = FetchType.EAGER)
+	@OrderBy("number")
+	private Set<PurchaseOrderItem> orderItems;
+
 	public Short getCustPrint() {
 		return custPrint;
 	}
@@ -457,4 +466,79 @@ public class PurchaseOrder implements Serializable {
 	public void setCop(String cop) {
 		this.cop = cop;
 	}
+
+	@Column(name = "pu_purpose")
+	private String purpose; // 用途,
+
+	@Column(name = "pu_arcustcode")
+	private String arCustCode; // 买家应收客户,
+
+	@Column(name = "pu_shcustcode")
+	private String shCustCode; // 收货客户,
+
+	@Column(name = "pu_refcode")
+	private String refCode; // 销售单号
+
+	@Column(name = "pu_custcode")
+	private String custCode; // 客户编号,
+
+	@Column(name = "pu_custname")
+	private String custName; // 客户名称。
+
+	public String getPurpose() {
+		return purpose;
+	}
+
+	public void setPurpose(String purpose) {
+		this.purpose = purpose;
+	}
+
+	public String getArCustCode() {
+		return arCustCode;
+	}
+
+	public void setArCustCode(String arCustCode) {
+		this.arCustCode = arCustCode;
+	}
+
+	public String getShCustCode() {
+		return shCustCode;
+	}
+
+	public void setShCustCode(String shCustCode) {
+		this.shCustCode = shCustCode;
+	}
+
+	public String getRefCode() {
+		return refCode;
+	}
+
+	public void setRefCode(String refCode) {
+		this.refCode = refCode;
+	}
+
+	public String getCustCode() {
+		return custCode;
+	}
+
+	public void setCustCode(String custCode) {
+		this.custCode = custCode;
+	}
+
+	public String getCustName() {
+		return custName;
+	}
+
+	public void setCustName(String custName) {
+		this.custName = custName;
+	}
+
+	public Set<PurchaseOrderItem> getOrderItems() {
+		return orderItems;
+	}
+
+	public void setOrderItems(Set<PurchaseOrderItem> orderItems) {
+		this.orderItems = orderItems;
+	}
+
 }

+ 547 - 0
src/main/java/com/uas/platform/b2b/model/PurchaseOrderInfo.java

@@ -0,0 +1,547 @@
+package com.uas.platform.b2b.model;
+
+import java.util.Date;
+import java.util.Set;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Index;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
+import javax.persistence.OneToOne;
+import javax.persistence.OrderBy;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+
+import org.hibernate.annotations.Where;
+
+/**
+ * 平台里面,以供应商的角度来查看采购订单 <br>
+ * 级联采购明细
+ * 
+ * @author yingp
+ * 
+ */
+@Table(name = "purc$orders", indexes = { @Index(name = "purc$orders_date", columnList = "pu_date") })
+@Entity
+public class PurchaseOrderInfo {
+
+	@Id
+	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "purc$orders_gen")
+	@SequenceGenerator(name = "purc$orders_gen", sequenceName = "purc$orders_seq", allocationSize = 1)
+	@Column(name = "pu_id")
+	private Long id;
+
+	/**
+	 * 采购企业UU
+	 */
+	@Column(name = "pu_enuu")
+	private Long enUU;
+
+	/**
+	 * 采购企业
+	 */
+	@OneToOne(cascade = { CascadeType.MERGE, CascadeType.REFRESH })
+	@JoinColumn(name = "pu_enuu", insertable = false, updatable = false)
+	private EnterpriseInfo enterprise;
+
+	/**
+	 * 采购单所属采购员
+	 */
+	@OneToOne(cascade = { CascadeType.REFRESH })
+	@JoinColumn(name = "pu_useruu", insertable = false, updatable = false)
+	private User user;
+
+	/**
+	 * 采购单所属采购员UU
+	 */
+	@Column(name = "pu_useruu")
+	private Long userUU;
+
+	/**
+	 * 采购单号
+	 */
+	@Column(name = "pu_code")
+	private String code;
+
+	/**
+	 * 采购类型
+	 */
+	@Column(name = "pu_type")
+	private String type;
+
+	/**
+	 * 单据归属日期
+	 */
+	@Column(name = "pu_date")
+	private Date date;
+
+	/**
+	 * 录单人
+	 */
+	@Column(name = "pu_recorder")
+	private String recorder;
+
+	/**
+	 * 审核人
+	 */
+	@Column(name = "pu_auditor")
+	private String auditor;
+
+	/**
+	 * 供应商UU
+	 */
+	@Column(name = "pu_venduu")
+	private Long vendUU;
+
+	/**
+	 * 供应商联系人UU
+	 */
+	@Column(name = "pu_venduseruu")
+	private Long vendUserUU;
+
+	/**
+	 * 供应商联系人
+	 */
+	@Column(name = "pu_venduser")
+	private String venduser;
+
+	/**
+	 * 供应商联系人电话
+	 */
+	@Column(name = "pu_vendusertel")
+	private String vendusertel;
+
+	/**
+	 * 收货地址
+	 */
+	@Column(name = "pu_shipaddress")
+	private String shipAddress;
+
+	/**
+	 * 备注
+	 */
+	@Column(name = "pu_remark")
+	private String remark;
+
+	/**
+	 * 付款币种
+	 */
+	@Column(name = "pu_currency")
+	private String currency;
+
+	/**
+	 * 汇率
+	 */
+	@Column(name = "pu_rate")
+	private Float rate;
+
+	/**
+	 * 付款方式
+	 */
+	@Column(name = "pu_payments")
+	private String payments;
+
+	/**
+	 * 处理状态(已回复、未回复),全部回复后改为已回复
+	 */
+	@Column(name = "pu_status")
+	private Short status;
+
+	/**
+	 * 从平台传到供应商ERP的状态
+	 */
+	@Column(name = "pu_sendstatus")
+	private Short sendStatus;
+
+	/**
+	 * 采购单明细
+	 */
+	@OneToMany(mappedBy = "order", cascade = { CascadeType.REFRESH, CascadeType.PERSIST, CascadeType.REMOVE,
+			CascadeType.MERGE }, fetch = FetchType.EAGER)
+	@OrderBy("number")
+	private Set<PurcOrderInfoItem> orderItems;
+
+	/**
+	 * 显示状态(0 已查看 , 1 未查看, 2 置顶)
+	 */
+	@Column(name = "pu_display")
+	private Short display;
+
+	/**
+	 * 打印次数(供应商)
+	 */
+	@Column(name = "pu_print")
+	private Short print;
+
+	/**
+	 * 打印次数(采购方)
+	 */
+	@Column(name = "pu_custprint")
+	private Short custPrint;
+
+	/**
+	 * 应付供应商名称
+	 */
+	@Column(name = "pu_receivename")
+	private String receiveName;
+
+	/**
+	 * 客户公司名称
+	 */
+	@Column(name = "pu_cop")
+	private String cop;
+
+	/**
+	 * 应付供应商编号
+	 */
+	@Column(name = "pu_receivecode")
+	private String receiveCode;
+
+	/**
+	 * 供应商名称
+	 */
+	@Transient
+	private String enName;
+
+	/**
+	 * 对应的erpid
+	 * 
+	 * @return
+	 */
+	@Column(name = "pu_erpid")
+	private Long erpId;
+
+	/**
+	 * 打印日志
+	 */
+	@SuppressWarnings("deprecation")
+	@OneToMany(fetch = FetchType.EAGER)
+	@JoinColumn(name = "pl_foreign", insertable = false, updatable = false)
+	@org.hibernate.annotations.ForeignKey(name = "none")
+	@Where(clause = "pl_table = 'purc$orders'")
+	private Set<PrintLog> printLogs;
+
+	@Column(name = "pu_purpose")
+	private String purpose; // 用途,
+
+	@Column(name = "pu_arcustcode")
+	private String arCustCode; // 买家应收客户,
+
+	@Column(name = "pu_shcustcode")
+	private String shCustCode; // 收货客户,
+
+	@Column(name = "pu_refcode")
+	private String refCode; // 销售单号
+
+	@Column(name = "pu_custcode")
+	private String custCode; // 客户编号,
+
+	@Column(name = "pu_custname")
+	private String custName; // 客户名称。
+
+	public String getPurpose() {
+		return purpose;
+	}
+
+	public void setPurpose(String purpose) {
+		this.purpose = purpose;
+	}
+
+	public String getArCustCode() {
+		return arCustCode;
+	}
+
+	public void setArCustCode(String arCustCode) {
+		this.arCustCode = arCustCode;
+	}
+
+	public String getShCustCode() {
+		return shCustCode;
+	}
+
+	public void setShCustCode(String shCustCode) {
+		this.shCustCode = shCustCode;
+	}
+
+	public String getRefCode() {
+		return refCode;
+	}
+
+	public void setRefCode(String refCode) {
+		this.refCode = refCode;
+	}
+
+	public String getCustCode() {
+		return custCode;
+	}
+
+	public void setCustCode(String custCode) {
+		this.custCode = custCode;
+	}
+
+	public String getCustName() {
+		return custName;
+	}
+
+	public void setCustName(String custName) {
+		this.custName = custName;
+	}
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Long getEnUU() {
+		return enUU;
+	}
+
+	public void setEnUU(Long enUU) {
+		this.enUU = enUU;
+	}
+
+	public EnterpriseInfo getEnterprise() {
+		return enterprise;
+	}
+
+	public Short getCustPrint() {
+		return custPrint;
+	}
+
+	public void setCustPrint(Short custPrint) {
+		this.custPrint = custPrint;
+	}
+
+	public void setEnterprise(EnterpriseInfo enterprise) {
+		this.enterprise = enterprise;
+	}
+
+	public User getUser() {
+		return user;
+	}
+
+	public void setUser(User user) {
+		this.user = user;
+	}
+
+	public Long getUserUU() {
+		return userUU;
+	}
+
+	public void setUserUU(Long userUU) {
+		this.userUU = userUU;
+	}
+
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	public String getCop() {
+		return cop;
+	}
+
+	public void setCop(String cop) {
+		this.cop = cop;
+	}
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	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 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 String getShipAddress() {
+		return shipAddress;
+	}
+
+	public void setShipAddress(String shipAddress) {
+		this.shipAddress = shipAddress;
+	}
+
+	public String getRemark() {
+		return remark;
+	}
+
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+
+	public String getCurrency() {
+		return currency;
+	}
+
+	public void setCurrency(String currency) {
+		this.currency = currency;
+	}
+
+	public Float getRate() {
+		return rate;
+	}
+
+	public void setRate(Float rate) {
+		this.rate = rate;
+	}
+
+	public String getPayments() {
+		return payments;
+	}
+
+	public void setPayments(String payments) {
+		this.payments = payments;
+	}
+
+	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 Set<PurcOrderInfoItem> getOrderItems() {
+		return orderItems;
+	}
+
+	public void setOrderItems(Set<PurcOrderInfoItem> orderItems) {
+		this.orderItems = orderItems;
+	}
+
+	public Short getDisplay() {
+		if (this.display == null)
+			this.display = 0;
+		return display;
+	}
+
+	public void setDisplay(Short display) {
+		this.display = display;
+	}
+
+	public Short getPrint() {
+		return print;
+	}
+
+	public void setPrint(Short print) {
+		this.print = print;
+	}
+
+	public String getReceiveName() {
+		return receiveName;
+	}
+
+	public void setReceiveName(String receiveName) {
+		this.receiveName = receiveName;
+	}
+
+	public String getReceiveCode() {
+		return receiveCode;
+	}
+
+	public void setReceiveCode(String receiveCode) {
+		this.receiveCode = receiveCode;
+	}
+
+	public String getEnName() {
+		return enName;
+	}
+
+	public void setEnName(String enName) {
+		this.enName = enName;
+	}
+
+	public Long getErpId() {
+		return erpId;
+	}
+
+	public void setErpId(Long erpId) {
+		this.erpId = erpId;
+	}
+
+	public Set<PrintLog> getPrintLogs() {
+		return printLogs;
+	}
+
+	public void setPrintLogs(Set<PrintLog> printLogs) {
+		this.printLogs = printLogs;
+	}
+
+	public String getVenduser() {
+		return venduser;
+	}
+
+	public void setVenduser(String venduser) {
+		this.venduser = venduser;
+	}
+
+	public String getVendusertel() {
+		return vendusertel;
+	}
+
+	public void setVendusertel(String vendusertel) {
+		this.vendusertel = vendusertel;
+	}
+
+}

+ 15 - 3
src/main/java/com/uas/platform/b2b/model/PurchaseOrderItem.java

@@ -1,12 +1,24 @@
 package com.uas.platform.b2b.model;
 
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashSet;
+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.ManyToOne;
+import javax.persistence.OneToOne;
+import javax.persistence.Table;
+
 import org.hibernate.annotations.DynamicUpdate;
 import org.hibernate.annotations.OptimisticLockType;
 import org.hibernate.annotations.OptimisticLocking;
 
-import javax.persistence.*;
-import java.util.*;
-
 /**
  * 平台里面,以供应商的角度来查看采购订单明细
  * 

+ 2 - 2
src/main/java/com/uas/platform/b2b/service/PurchaseOrderService.java

@@ -5,9 +5,9 @@ import java.util.List;
 import org.springframework.data.domain.Page;
 
 import com.uas.platform.b2b.model.PrintLog;
+import com.uas.platform.b2b.model.PurcOrderInfoItem;
 import com.uas.platform.b2b.model.PurchaseOrder;
 import com.uas.platform.b2b.model.PurchaseOrderAll;
-import com.uas.platform.b2b.model.PurchaseOrderAllItem;
 import com.uas.platform.b2b.model.PurchaseOrderDone;
 import com.uas.platform.b2b.model.PurchaseOrderEnd;
 import com.uas.platform.b2b.model.PurchaseOrderItem;
@@ -34,7 +34,7 @@ public interface PurchaseOrderService {
 	 * @param orders
 	 * @return
 	 */
-	public void save(List<PurchaseOrderAllItem> orders);
+	public void save(List<PurcOrderInfoItem> orders);
 
 	/**
 	 * 分页查找订单

+ 70 - 24
src/main/java/com/uas/platform/b2b/service/impl/PurchaseOrderServiceImpl.java

@@ -1,11 +1,68 @@
 package com.uas.platform.b2b.service.impl;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.JoinType;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import javax.persistence.criteria.SetJoin;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.ui.ModelMap;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
+
 import com.uas.platform.b2b.core.util.ContextUtils;
-import com.uas.platform.b2b.dao.*;
+import com.uas.platform.b2b.dao.EnterpriseDao;
+import com.uas.platform.b2b.dao.PagingReleaseCountDao;
+import com.uas.platform.b2b.dao.PagingReleaseDao;
+import com.uas.platform.b2b.dao.PagingReleaseDetailDao;
+import com.uas.platform.b2b.dao.PrintLogDao;
+import com.uas.platform.b2b.dao.PurcOrderInfoItemDao;
+import com.uas.platform.b2b.dao.PurchaseOrderAllDao;
+import com.uas.platform.b2b.dao.PurchaseOrderAllItemDao;
+import com.uas.platform.b2b.dao.PurchaseOrderDao;
+import com.uas.platform.b2b.dao.PurchaseOrderDoneDao;
+import com.uas.platform.b2b.dao.PurchaseOrderEndDao;
+import com.uas.platform.b2b.dao.PurchaseOrderItemDao;
+import com.uas.platform.b2b.dao.PurchaseOrderReplyDao;
+import com.uas.platform.b2b.dao.PurchaseOrderTodoDao;
+import com.uas.platform.b2b.dao.PurchaseOrderWaitingDao;
+import com.uas.platform.b2b.dao.UserBaseInfoDao;
+import com.uas.platform.b2b.dao.UserDao;
 import com.uas.platform.b2b.event.PurchaseOrderEndReleaseEvent;
 import com.uas.platform.b2b.event.PurchaseOrderReplyReleaseEvent;
 import com.uas.platform.b2b.event.PurchaseOrderSaveReleaseEvent;
-import com.uas.platform.b2b.model.*;
+import com.uas.platform.b2b.model.Enterprise;
+import com.uas.platform.b2b.model.PagingRelease;
+import com.uas.platform.b2b.model.PrintLog;
+import com.uas.platform.b2b.model.PurcOrderInfoItem;
+import com.uas.platform.b2b.model.PurchaseOrder;
+import com.uas.platform.b2b.model.PurchaseOrderAll;
+import com.uas.platform.b2b.model.PurchaseOrderAllItem;
+import com.uas.platform.b2b.model.PurchaseOrderDone;
+import com.uas.platform.b2b.model.PurchaseOrderDoneItem;
+import com.uas.platform.b2b.model.PurchaseOrderEnd;
+import com.uas.platform.b2b.model.PurchaseOrderEndItem;
+import com.uas.platform.b2b.model.PurchaseOrderInfo;
+import com.uas.platform.b2b.model.PurchaseOrderItem;
+import com.uas.platform.b2b.model.PurchaseOrderReply;
+import com.uas.platform.b2b.model.PurchaseOrderTodo;
+import com.uas.platform.b2b.model.PurchaseOrderTodoItem;
+import com.uas.platform.b2b.model.PurchaseOrderWaiting;
+import com.uas.platform.b2b.model.PurchaseOrderWaitingItem;
+import com.uas.platform.b2b.model.SearchFilter;
+import com.uas.platform.b2b.model.User;
+import com.uas.platform.b2b.model.UserBaseInfo;
 import com.uas.platform.b2b.search.SearchService;
 import com.uas.platform.b2b.service.PurchaseOrderService;
 import com.uas.platform.b2b.support.SystemSession;
@@ -19,20 +76,6 @@ import com.uas.platform.core.persistence.criteria.PredicateUtils;
 import com.uas.platform.core.util.serializer.FlexJsonUtils;
 import com.uas.search.b2b.model.PageParams;
 import com.uas.search.b2b.model.SPage;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
-import org.springframework.data.jpa.domain.Specification;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.ui.ModelMap;
-import org.springframework.util.CollectionUtils;
-import org.springframework.util.StringUtils;
-
-import javax.persistence.criteria.*;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
 
 @Service
 @Transactional
@@ -71,9 +114,6 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 	@Autowired
 	private UserBaseInfoDao userBaseInfoDao;
 
-	@Autowired
-	private UserDao userDao;
-
 	@Autowired
 	private SearchService searchService;
 
@@ -89,13 +129,19 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 	@Autowired
 	private PagingReleaseDao pagingReleaseDao;
 
+	@Autowired
+	private PurcOrderInfoItemDao purcOrderInfoItemDao;
+
+	@Autowired
+	private UserDao userDao;
+
 	@Override
-	public void save(List<PurchaseOrderAllItem> orderItems) {
-		List<PurchaseOrderAllItem> newOrderItems = purchaseOrderAllItemDao.save(orderItems);
+	public void save(List<PurcOrderInfoItem> orderItems) {
+		List<PurcOrderInfoItem> newOrderItems = purcOrderInfoItemDao.save(orderItems);
 //		ContextUtils.publishEvent(new PurchaseOrderSaveEvent(PurchaseOrderAllItem.distinct(newOrderItems)));
-		List<PurchaseOrderAll> orderAlls = PurchaseOrderAllItem.distinct(newOrderItems);
-		List<PurchaseOrderAll> newOrderAlls = new ArrayList<>();
-		for (PurchaseOrderAll orderAll : orderAlls) {
+		List<PurchaseOrderInfo> orderAlls = PurcOrderInfoItem.distinct(newOrderItems);
+		List<PurchaseOrderInfo> newOrderAlls = new ArrayList<>();
+		for (PurchaseOrderInfo orderAll : orderAlls) {
 			if (orderAll.getUser() == null) {
 				User user = userDao.findOne(orderAll.getUserUU());
 				if (user == null) {