Browse Source

git-svn-id: svn+ssh://10.10.101.21/source/platform/platform-b2b@578 f3bf4e98-0cf0-11e4-a00c-a99a8b9d557d

administrator 11 years ago
parent
commit
38b4baf679

+ 16 - 0
src/main/java/com/uas/platform/b2b/controller/SaleOrderController.java

@@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
 
 
 import com.uas.platform.b2b.model.PurchaseOrder;
 import com.uas.platform.b2b.model.PurchaseOrder;
 import com.uas.platform.b2b.model.PurchaseOrderAll;
 import com.uas.platform.b2b.model.PurchaseOrderAll;
+import com.uas.platform.b2b.model.PurchaseOrderDone;
 import com.uas.platform.b2b.model.PurchaseOrderEnd;
 import com.uas.platform.b2b.model.PurchaseOrderEnd;
 import com.uas.platform.b2b.model.PurchaseOrderItem;
 import com.uas.platform.b2b.model.PurchaseOrderItem;
 import com.uas.platform.b2b.model.PurchaseOrderReply;
 import com.uas.platform.b2b.model.PurchaseOrderReply;
@@ -95,6 +96,21 @@ public class SaleOrderController {
 		info.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
 		info.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
 		return purchaseOrderService.findTodoByPageInfo(info);
 		return purchaseOrderService.findTodoByPageInfo(info);
 	}
 	}
+	
+	/**
+	 * 作为卖家,收到的采购订单(含明细)(已回复)
+	 * 
+	 * @param params
+	 * @return
+	 */
+	@RequestMapping(value = "/items", params = RequestState.DONE, method = RequestMethod.GET)
+	@ResponseBody
+	public Page<PurchaseOrderDone> getDonePurchaseOrderItems(PageParams params) {
+		PageInfo info = new PageInfo(params);
+		// 我作为卖家,把我的企业ID作为供应商ID传入
+		info.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
+		return purchaseOrderService.findDoneByPageInfo(info);
+	}
 
 
 	/**
 	/**
 	 * 作为卖家,收到的采购订单(含明细)(已回复)
 	 * 作为卖家,收到的采购订单(含明细)(已回复)

+ 0 - 18
src/main/java/com/uas/platform/b2b/core/bind/DataZone.java

@@ -1,18 +0,0 @@
-package com.uas.platform.b2b.core.bind;
-
-/**
- * 数据区间
- * @author yingp
- *
- */
-public class DataZone {
-	/**
-	 * 
-	 */
-	public static final String NORMAL = "_datazone=normal";
-	
-	/**
-	 * 历史数据
-	 */
-	public static final String HISTORY = "_datazone=history";
-}

+ 12 - 0
src/main/java/com/uas/platform/b2b/dao/PurchaseOrderDoneDao.java

@@ -0,0 +1,12 @@
+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.PurchaseOrderDone;
+
+@Repository
+public interface PurchaseOrderDoneDao extends JpaSpecificationExecutor<PurchaseOrderDone>, JpaRepository<PurchaseOrderDone, Long> {
+
+}

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

@@ -139,6 +139,12 @@ public class PurchaseOrder implements Serializable {
 	 */
 	 */
 	@Column(name = "pu_sendstatus")
 	@Column(name = "pu_sendstatus")
 	private Short sendStatus;
 	private Short sendStatus;
+	
+	/**
+	 * 1表示该采购单的明细有回复的情况
+	 */
+	@Column(name = "pu_reply")
+	private Short reply;
 
 
 	public Long getId() {
 	public Long getId() {
 		return id;
 		return id;
@@ -292,4 +298,12 @@ public class PurchaseOrder implements Serializable {
 		this.user = user;
 		this.user = user;
 	}
 	}
 
 
+	public Short getReply() {
+		return reply;
+	}
+
+	public void setReply(Short reply) {
+		this.reply = reply;
+	}
+
 }
 }

+ 327 - 0
src/main/java/com/uas/platform/b2b/model/PurchaseOrderDone.java

@@ -0,0 +1,327 @@
+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.Id;
+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;
+
+/**
+ * 平台里面,以供应商的角度来查看采购订单 <br>
+ * 级联采购明细<br>
+ * 已回复采购单
+ * 
+ * @author yingp
+ * 
+ */
+@Table(name = "purc$orders")
+@Where(clause = "pu_reply=1")
+@Entity
+public class PurchaseOrderDone {
+
+	@Id
+	@Column(name = "pu_id")
+	private Long id;
+
+	/**
+	 * 采购企业UU
+	 */
+	@Column(name = "pu_enuu")
+	private Long enUU;
+
+	/**
+	 * 采购企业
+	 */
+	@OneToOne(cascade = { CascadeType.MERGE })
+	@JoinColumn(name = "pu_enuu", insertable = false, updatable = false)
+	private Enterprise 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_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)
+	@Where(clause = "pd_status = 201 and (pd_end is null or pd_end = 0)")
+	@OrderBy("number")
+	private Set<PurchaseOrderDoneItem> orderItems;
+
+	/**
+	 * 1表示该采购单的明细有回复的情况
+	 */
+	@Column(name = "pu_reply")
+	private Short reply;
+
+	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 Enterprise getEnterprise() {
+		return enterprise;
+	}
+
+	public void setEnterprise(Enterprise 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 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<PurchaseOrderDoneItem> getOrderItems() {
+		return orderItems;
+	}
+
+	public void setOrderItems(Set<PurchaseOrderDoneItem> orderItems) {
+		this.orderItems = orderItems;
+	}
+
+	public Short getReply() {
+		return reply;
+	}
+
+	public void setReply(Short reply) {
+		this.reply = reply;
+	}
+}

+ 258 - 0
src/main/java/com/uas/platform/b2b/model/PurchaseOrderDoneItem.java

@@ -0,0 +1,258 @@
+package com.uas.platform.b2b.model;
+
+import java.util.Date;
+
+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.Where;
+
+@Table(name = "purc$orderitems")
+@Entity
+@Where(clause = "pd_status = 201 and (pd_end is null or pd_end = 0)")
+public class PurchaseOrderDoneItem {
+
+	@Id
+	@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 PurchaseOrderDone 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_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;
+
+	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;
+	}
+
+	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 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 PurchaseOrderDone getOrder() {
+		return order;
+	}
+
+	public void setOrder(PurchaseOrderDone order) {
+		this.order = order;
+	}
+}

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

@@ -7,6 +7,7 @@ import org.springframework.data.domain.Page;
 import com.uas.platform.b2b.model.PurchaseOrder;
 import com.uas.platform.b2b.model.PurchaseOrder;
 import com.uas.platform.b2b.model.PurchaseOrderAll;
 import com.uas.platform.b2b.model.PurchaseOrderAll;
 import com.uas.platform.b2b.model.PurchaseOrderAllItem;
 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.PurchaseOrderEnd;
 import com.uas.platform.b2b.model.PurchaseOrderItem;
 import com.uas.platform.b2b.model.PurchaseOrderItem;
 import com.uas.platform.b2b.model.PurchaseOrderReply;
 import com.uas.platform.b2b.model.PurchaseOrderReply;
@@ -55,6 +56,14 @@ public interface PurchaseOrderService {
 	 */
 	 */
 	public Page<PurchaseOrderTodo> findTodoByPageInfo(PageInfo pageInfo);
 	public Page<PurchaseOrderTodo> findTodoByPageInfo(PageInfo pageInfo);
 	
 	
+	/**
+	 * 分页查找已回复订单,包括明细
+	 * 
+	 * @param pageInfo
+	 * @return
+	 */
+	public Page<PurchaseOrderDone> findDoneByPageInfo(PageInfo pageInfo);
+	
 	/**
 	/**
 	 * 分页查找已结案订单明细
 	 * 分页查找已结案订单明细
 	 * 
 	 * 

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

@@ -20,6 +20,7 @@ import com.uas.platform.b2b.dao.EnterpriseDao;
 import com.uas.platform.b2b.dao.PurchaseOrderAllDao;
 import com.uas.platform.b2b.dao.PurchaseOrderAllDao;
 import com.uas.platform.b2b.dao.PurchaseOrderAllItemDao;
 import com.uas.platform.b2b.dao.PurchaseOrderAllItemDao;
 import com.uas.platform.b2b.dao.PurchaseOrderDao;
 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.PurchaseOrderEndDao;
 import com.uas.platform.b2b.dao.PurchaseOrderItemDao;
 import com.uas.platform.b2b.dao.PurchaseOrderItemDao;
 import com.uas.platform.b2b.dao.PurchaseOrderReplyDao;
 import com.uas.platform.b2b.dao.PurchaseOrderReplyDao;
@@ -27,6 +28,7 @@ import com.uas.platform.b2b.dao.PurchaseOrderTodoDao;
 import com.uas.platform.b2b.model.PurchaseOrder;
 import com.uas.platform.b2b.model.PurchaseOrder;
 import com.uas.platform.b2b.model.PurchaseOrderAll;
 import com.uas.platform.b2b.model.PurchaseOrderAll;
 import com.uas.platform.b2b.model.PurchaseOrderAllItem;
 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.PurchaseOrderEnd;
 import com.uas.platform.b2b.model.PurchaseOrderItem;
 import com.uas.platform.b2b.model.PurchaseOrderItem;
 import com.uas.platform.b2b.model.PurchaseOrderReply;
 import com.uas.platform.b2b.model.PurchaseOrderReply;
@@ -36,6 +38,7 @@ import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.b2b.support.XingePusher;
 import com.uas.platform.b2b.support.XingePusher;
 import com.uas.platform.core.exception.IllegalOperatorException;
 import com.uas.platform.core.exception.IllegalOperatorException;
 import com.uas.platform.core.exception.NotFoundException;
 import com.uas.platform.core.exception.NotFoundException;
+import com.uas.platform.core.model.Constant;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.Status;
 import com.uas.platform.core.model.Status;
 
 
@@ -51,6 +54,9 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 	@Autowired
 	@Autowired
 	private PurchaseOrderTodoDao purchaseOrderTodoDao;
 	private PurchaseOrderTodoDao purchaseOrderTodoDao;
 
 
+	@Autowired
+	private PurchaseOrderDoneDao purchaseOrderDoneDao;
+
 	@Autowired
 	@Autowired
 	private PurchaseOrderEndDao purchaseOrderEndDao;
 	private PurchaseOrderEndDao purchaseOrderEndDao;
 
 
@@ -141,7 +147,11 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 		purchaseOrderItemDao.updateByReply(reply.getDelivery(), reply.getRemark(), item.getId());
 		purchaseOrderItemDao.updateByReply(reply.getDelivery(), reply.getRemark(), item.getId());
 		PurchaseOrder order = item.getOrder();
 		PurchaseOrder order = item.getOrder();
 		// 订单主记录状态
 		// 订单主记录状态
-		updateOrderStatus(order.getId());
+		order = updateOrderStatus(order.getId());
+		if (order.getReply() == null) {
+			order.setReply(Constant.YES);
+			purchaseOrderDao.save(order);
+		}
 		// 将回复信息推送给采购企业采购员(或管理员)
 		// 将回复信息推送给采购企业采购员(或管理员)
 		if (order.getUserUU() != null) {
 		if (order.getUserUU() != null) {
 			// Android
 			// Android
@@ -156,11 +166,11 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 	/**
 	/**
 	 * 修改客户采购单的回复状态
 	 * 修改客户采购单的回复状态
 	 */
 	 */
-	private void updateOrderStatus(long orderId) {
+	private PurchaseOrder updateOrderStatus(long orderId) {
 		List<PurchaseOrderItem> notReply = purchaseOrderItemDao.findByOrderIdAndStatus(orderId, (short) Status.NOT_REPLY.value());
 		List<PurchaseOrderItem> notReply = purchaseOrderItemDao.findByOrderIdAndStatus(orderId, (short) Status.NOT_REPLY.value());
 		PurchaseOrder order = purchaseOrderDao.findOne(orderId);
 		PurchaseOrder order = purchaseOrderDao.findOne(orderId);
 		order.setStatus((short) (notReply.size() > 0 ? Status.NOT_REPLY.value() : Status.REPLIED.value()));
 		order.setStatus((short) (notReply.size() > 0 ? Status.NOT_REPLY.value() : Status.REPLIED.value()));
-		purchaseOrderDao.save(order);
+		return purchaseOrderDao.save(order);
 	}
 	}
 
 
 	@Override
 	@Override
@@ -299,6 +309,17 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 		}, pageInfo);
 		}, pageInfo);
 	}
 	}
 
 
+	@Override
+	public Page<PurchaseOrderDone> findDoneByPageInfo(final PageInfo pageInfo) {
+		return purchaseOrderDoneDao.findAll(new Specification<PurchaseOrderDone>() {
+
+			public Predicate toPredicate(Root<PurchaseOrderDone> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
+				query.where(pageInfo.getPredicates(root, builder));
+				return null;
+			}
+		}, pageInfo);
+	}
+
 	@Override
 	@Override
 	public Page<PurchaseOrderEnd> findEndByPageInfo(final PageInfo pageInfo) {
 	public Page<PurchaseOrderEnd> findEndByPageInfo(final PageInfo pageInfo) {
 		return purchaseOrderEndDao.findAll(new Specification<PurchaseOrderEnd>() {
 		return purchaseOrderEndDao.findAll(new Specification<PurchaseOrderEnd>() {

+ 1 - 1
src/main/resources/spring/context.xml

@@ -84,7 +84,7 @@
 			<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
 			<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
 				<property name="generateDdl" value="false" />
 				<property name="generateDdl" value="false" />
 				<property name="databasePlatform" value="org.hibernate.dialect.Oracle10gDialect" />
 				<property name="databasePlatform" value="org.hibernate.dialect.Oracle10gDialect" />
-				<property name="showSql" value="false" />
+				<property name="showSql" value="true" />
 			</bean>
 			</bean>
 		</property>
 		</property>
 		<property name="jpaDialect">
 		<property name="jpaDialect">

+ 25 - 6
src/main/webapp/resources/js/index/app.js

@@ -302,19 +302,38 @@ define([ 'toaster', 'charts', 'ngTable', 'common/services', 'service/Purc', 'ui.
 		});
 		});
 	});
 	});
 	app.controller('SaleOrderCtrl', function($scope, $rootScope, $filter, PurcOrderItem, ngTableParams, 
 	app.controller('SaleOrderCtrl', function($scope, $rootScope, $filter, PurcOrderItem, ngTableParams, 
-		toaster, ReportService, BaseService){
+		toaster, ReportService, BaseService, PurcOrderItemHis){
 		$rootScope.active = 'order';
 		$rootScope.active = 'order';
-		$scope.active = 'all';
+		$scope.active = 'todo';
 		$scope.dateZoneText = '一个月内';
 		$scope.dateZoneText = '一个月内';
-		$scope.condition = {};
+		$scope.condition = {dateZone: 1};
 		$scope.changeDateZone = function(zone) {
 		$scope.changeDateZone = function(zone) {
 			$scope.condition.dateZone = zone;
 			$scope.condition.dateZone = zone;
 			$scope.dateZoneText = typeof zone == 'undefined' ? '半年前' : (zone == 1 ? '一个月内' : '半年内');
 			$scope.dateZoneText = typeof zone == 'undefined' ? '半年前' : (zone == 1 ? '一个月内' : '半年内');
 			$scope.condition.$dateZoneOpen = false;
 			$scope.condition.$dateZoneOpen = false;
 		};
 		};
+		$scope.setActive = function(state) {
+			$scope.active = state;
+			$scope.tableParams.reload();
+		};
+		var getService = function() {
+			return $scope.condition.dateZone ? PurcOrderItem : PurcOrderItemHis;
+		};
+		var getState = function() {
+			var fn = 'get';
+			switch($scope.active) {
+			case 'done':
+				fn = 'getDone';break;
+			case 'todo':
+				fn = 'getTodo';break;
+			case 'end':	
+				fn = 'getEnd';break;
+			}
+			return fn;
+		};
 		$scope.tableParams = new ngTableParams({
 		$scope.tableParams = new ngTableParams({
-			page : 1, // show first page
-			count : 5, // count per page
+			page : 1,
+			count : 5,
 			sorting: {
 			sorting: {
                 date: 'desc'
                 date: 'desc'
             }
             }
@@ -323,7 +342,7 @@ define([ 'toaster', 'charts', 'ngTable', 'common/services', 'service/Purc', 'ui.
 			counts: [5, 10, 25, 50],
 			counts: [5, 10, 25, 50],
 			getData : function($defer, params) {
 			getData : function($defer, params) {
 				$scope.loading = true;
 				$scope.loading = true;
-				PurcOrderItem.getTodo(BaseService.parseParams(params.url()), function(page){
+				getService()[getState()].call(null, BaseService.parseParams(params.url()), function(page){
 					$scope.loading = false;
 					$scope.loading = false;
 					if(page) {
 					if(page) {
 						params.total(page.totalElements);
 						params.total(page.totalElements);

+ 80 - 0
src/main/webapp/resources/js/index/services/Purc.js

@@ -9,6 +9,11 @@ define([ 'ngResource' ], function() {
 					_state: 'todo'
 					_state: 'todo'
 				}
 				}
 			},
 			},
+			getDone: {
+				params: {
+					_state: 'done'
+				}
+			},
 			getEnd: {
 			getEnd: {
 				params: {
 				params: {
 					_state: 'end'
 					_state: 'end'
@@ -101,5 +106,80 @@ define([ 'ngResource' ], function() {
 				isArray: true
 				isArray: true
 			}
 			}
 		});
 		});
+	}).factory('PurcOrderItemHis', function($resource) {
+		return $resource('sale/orders/history/items', {}, {
+			getTodo: {
+				params: {
+					_state: 'todo'
+				}
+			},
+			getEnd: {
+				params: {
+					_state: 'end'
+				}
+			},
+			getReply: {
+				url: 'sale/orders/history/items/:orderItemId/reply',
+				method: 'GET',
+				isArray: true,
+				params: {
+					orderItemId: 'orderItemId'
+				}
+			}
+		});
+	}).factory('PurcChangeHis', function($resource) {
+		return $resource('sale/changes/history/:id', {}, {
+			getTodo: {
+				params: {
+					_state: 'todo'
+				}
+			}
+		});
+	}).factory('PurcInquiryHis', function($resource) {
+		return $resource('sale/inquiry/history/:id', {}, {
+			getTodo: {
+				params: {
+					_state: 'todo'
+				}
+			},
+			getItem: {
+				url: 'sale/inquiry/history/items/:itemId',
+				method: 'GET',
+				params: {
+					itemId: 'itemId'
+				}
+			},
+			getHistory: {
+				url: 'sale/inquiry/history/items/:itemId/history',
+				method: 'GET',
+				params: {
+					itemId: 'itemId'
+				},
+				isArray: true
+			}
+		});
+	}).factory('PurcNoticeHis', function($resource) {
+		return $resource('sale/notice/history/:id', {}, {
+			getTodo: {
+				params: {
+					_state: 'todo'
+				}
+			},
+			getDone: {
+				params: {
+					_state: 'done'
+				}
+			},
+			getEnd: {
+				params: {
+					_state: 'end'
+				}
+			},
+			getSends: {
+				url: 'sale/notice/history/:id/sendItems',
+				method: 'GET',
+				isArray: true
+			}
+		});
 	});
 	});
 });
 });

+ 4 - 4
src/main/webapp/resources/tpl/index/sale/order.html

@@ -116,19 +116,19 @@
 				<div class="btn-group btn-group-sm btn-group-justified">
 				<div class="btn-group btn-group-sm btn-group-justified">
 					<div class="btn-group btn-group-sm">
 					<div class="btn-group btn-group-sm">
 						<button type="button" class="btn btn-default btn-line"
 						<button type="button" class="btn btn-default btn-line"
-							ng-class="{'btn-info':active=='all'}" ng-click="active='all'">全部</button>
+							ng-class="{'btn-info':active=='all'}" ng-click="setActive('all')">全部</button>
 					</div>
 					</div>
 					<div class="btn-group btn-group-sm">
 					<div class="btn-group btn-group-sm">
 						<button type="button" class="btn btn-default btn-line"
 						<button type="button" class="btn btn-default btn-line"
-							ng-class="{'btn-info':active=='done'}" ng-click="active='done'">已回复</button>
+							ng-class="{'btn-info':active=='done'}" ng-click="setActive('done')">已回复</button>
 					</div>
 					</div>
 					<div class="btn-group btn-group-sm">
 					<div class="btn-group btn-group-sm">
 						<button type="button" class="btn btn-default btn-line"
 						<button type="button" class="btn btn-default btn-line"
-							ng-class="{'btn-info':active=='todo'}" ng-click="active='todo'">待回复</button>
+							ng-class="{'btn-info':active=='todo'}" ng-click="setActive('todo')">待回复</button>
 					</div>
 					</div>
 					<div class="btn-group btn-group-sm">
 					<div class="btn-group btn-group-sm">
 						<button type="button" class="btn btn-default btn-line"
 						<button type="button" class="btn btn-default btn-line"
-							ng-class="{'btn-info':active=='end'}" ng-click="active='end'">已结案</button>
+							ng-class="{'btn-info':active=='end'}" ng-click="setActive('end')">已结案</button>
 					</div>
 					</div>
 				</div>
 				</div>
 			</div>
 			</div>