Browse Source

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

administrator 11 years ago
parent
commit
52dd7e70a9

+ 11 - 0
src/main/java/com/uas/platform/b2b/dao/PurchaseOrderAllDao.java

@@ -27,4 +27,15 @@ public interface PurchaseOrderAllDao extends JpaSpecificationExecutor<PurchaseOr
 	 */
 	 */
 	public List<PurchaseOrderAll> findById(Long id);
 	public List<PurchaseOrderAll> findById(Long id);
 
 
+	/**
+	 * 卖家按上传状态查找订单
+	 * 
+	 * @param vendUU
+	 *            卖方企业ID
+	 * @param status
+	 *            状态
+	 * @return
+	 */
+	public List<PurchaseOrderAll> findByVendUUAndSendStatus(long vendUU, short sendStatus);
+
 }
 }

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

@@ -21,4 +21,16 @@ public interface PurchaseOrderItemDao extends JpaSpecificationExecutor<PurchaseO
 	 */
 	 */
 	@Query("from PurchaseOrderItem d where d.order.id = :orderId and d.status = :status")
 	@Query("from PurchaseOrderItem d where d.order.id = :orderId and d.status = :status")
 	public List<PurchaseOrderItem> findByOrderIdAndStatus(@Param("orderId") long orderId, @Param("status") short status);
 	public List<PurchaseOrderItem> findByOrderIdAndStatus(@Param("orderId") long orderId, @Param("status") short status);
+
+	/**
+	 * 按订单单号和序号查找订单明细
+	 * 
+	 * @param enUU
+	 * @param orderCode
+	 * @param number
+	 * @return
+	 */
+	@Query("from PurchaseOrderItem d where d.order.vendUU = :vendUU and d.order.code = :orderCode and d.number = :number")
+	public List<PurchaseOrderItem> findByVendUUAndOrderCodeAndNumber(@Param("vendUU") long vendUU, @Param("orderCode") String orderCode,
+			@Param("number") int number);
 }
 }

+ 62 - 0
src/main/java/com/uas/platform/b2b/erp/controller/SaleController.java

@@ -0,0 +1,62 @@
+package com.uas.platform.b2b.erp.controller;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.uas.platform.b2b.erp.model.PurchaseReply;
+import com.uas.platform.b2b.erp.model.SaleDown;
+import com.uas.platform.b2b.erp.service.SaleService;
+import com.uas.platform.b2b.service.PurchaseOrderService;
+import com.uas.platform.core.util.serializer.FlexJsonUtils;
+
+/**
+ * 对卖家ERP的数据接口
+ * 
+ * @author yingp
+ *
+ */
+@Controller
+@RequestMapping("/erp/sale")
+public class SaleController {
+	
+	@Autowired
+	private SaleService saleService;
+	
+	@Autowired
+	private PurchaseOrderService purchaseOrderService;
+	
+	/**
+	 * 卖家ERP从平台获取未回复的订单
+	 * 
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.GET)
+	@ResponseBody
+	public List<SaleDown> getOrders() {
+		return saleService.convertPurchaseOrder(purchaseOrderService.findNotUploadOrder());
+	}
+	
+	/**
+	 * 将卖家ERP的订单回复写到平台
+	 * 
+	 * @param data
+	 * @return
+	 * @throws UnsupportedEncodingException
+	 */
+	@RequestMapping(value = "/reply", method = RequestMethod.POST)
+	@ResponseBody
+	public void saveReplies(@RequestParam("data") String data) throws UnsupportedEncodingException {
+		String jsonStr = URLDecoder.decode(data, "UTF-8");
+		List<PurchaseReply> replies = FlexJsonUtils.fromJsonArray(jsonStr, PurchaseReply.class);
+		purchaseOrderService.reply(saleService.convertPurchaseReply(replies));
+	}
+
+}

+ 19 - 1
src/main/java/com/uas/platform/b2b/erp/model/PurchaseReply.java

@@ -3,6 +3,7 @@ package com.uas.platform.b2b.erp.model;
 import java.util.Date;
 import java.util.Date;
 
 
 import com.uas.platform.b2b.model.PurchaseOrderReply;
 import com.uas.platform.b2b.model.PurchaseOrderReply;
+import com.uas.platform.core.model.Status;
 
 
 /**
 /**
  * ERP系统的采购订单明细回复记录
  * ERP系统的采购订单明细回复记录
@@ -19,6 +20,9 @@ public class PurchaseReply {
 	private int pr_pddetno;
 	private int pr_pddetno;
 	private Date pr_date;
 	private Date pr_date;
 	private String pr_recorder;
 	private String pr_recorder;
+	/**
+	 * 平台回复记录ID,传入买家的ERP。可供写入时检测,防止重复传的问题
+	 */
 	private long b2b_pr_id;
 	private long b2b_pr_id;
 
 
 	public PurchaseReply() {
 	public PurchaseReply() {
@@ -89,7 +93,7 @@ public class PurchaseReply {
 	}
 	}
 
 
 	/**
 	/**
-	 * 从平台的回复记录转到ERP的回复记录
+	 * 从平台的回复记录转到买家ERP的回复记录
 	 * 
 	 * 
 	 * @param reply
 	 * @param reply
 	 * @return
 	 * @return
@@ -105,4 +109,18 @@ public class PurchaseReply {
 		setPr_recorder(orderReply.getRecorder());
 		setPr_recorder(orderReply.getRecorder());
 	}
 	}
 
 
+	/**
+	 * 从卖家ERP的回复记录转到平台的回复记录
+	 */
+	public PurchaseOrderReply convert() {
+		PurchaseOrderReply reply = new PurchaseOrderReply();
+		reply.setDate(this.pr_date);
+		reply.setDelivery(this.pr_delivery);
+		reply.setQty(this.pr_qty);
+		reply.setRecorder(this.pr_recorder);
+		reply.setRemark(this.pr_remark);
+		reply.setStatus((short) Status.NOT_UPLOAD.value());
+		return reply;
+	}
+
 }
 }

+ 126 - 0
src/main/java/com/uas/platform/b2b/erp/model/SaleDown.java

@@ -0,0 +1,126 @@
+package com.uas.platform.b2b.erp.model;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import org.springframework.util.CollectionUtils;
+
+import com.uas.platform.b2b.model.PurchaseOrderAll;
+import com.uas.platform.b2b.model.PurchaseOrderAllItem;
+
+public class SaleDown {
+
+	/**
+	 * 平台订单ID,传入供应商的ERP。可供写入时检测,防止重复传的问题
+	 */
+	private long b2b_pu_id;
+	private String sa_code;
+	private String sa_pocode;
+	private long cu_uu;
+	private Date sa_date;
+	private Date sa_recorddate;
+	private String sa_currency;
+	private String sa_shipby;
+	private List<SaleDownDetail> saleDownDetails;
+
+	public long getB2b_pu_id() {
+		return b2b_pu_id;
+	}
+
+	public void setB2b_pu_id(long b2b_pu_id) {
+		this.b2b_pu_id = b2b_pu_id;
+	}
+
+	public String getSa_code() {
+		return sa_code;
+	}
+
+	public void setSa_code(String sa_code) {
+		this.sa_code = sa_code;
+	}
+
+	public String getSa_pocode() {
+		return sa_pocode;
+	}
+
+	public void setSa_pocode(String sa_pocode) {
+		this.sa_pocode = sa_pocode;
+	}
+
+	public long getCu_uu() {
+		return cu_uu;
+	}
+
+	public void setCu_uu(long cu_uu) {
+		this.cu_uu = cu_uu;
+	}
+
+	public Date getSa_date() {
+		return sa_date;
+	}
+
+	public void setSa_date(Date sa_date) {
+		this.sa_date = sa_date;
+	}
+
+	public Date getSa_recorddate() {
+		return sa_recorddate;
+	}
+
+	public void setSa_recorddate(Date sa_recorddate) {
+		this.sa_recorddate = sa_recorddate;
+	}
+
+	public String getSa_currency() {
+		return sa_currency;
+	}
+
+	public void setSa_currency(String sa_currency) {
+		this.sa_currency = sa_currency;
+	}
+
+	public String getSa_shipby() {
+		return sa_shipby;
+	}
+
+	public void setSa_shipby(String sa_shipby) {
+		this.sa_shipby = sa_shipby;
+	}
+
+	public List<SaleDownDetail> getSaleDownDetails() {
+		return saleDownDetails;
+	}
+
+	public void setSaleDownDetails(List<SaleDownDetail> saleDownDetails) {
+		this.saleDownDetails = saleDownDetails;
+	}
+
+	public SaleDown() {
+	}
+
+	/**
+	 * 从平台的采购订单,转到卖家ERP的订单下达
+	 * 
+	 * @param order
+	 *            平台的采购订单
+	 */
+	public SaleDown(PurchaseOrderAll order) {
+		this.b2b_pu_id = order.getId();
+		this.sa_code = order.getCode();
+		this.cu_uu = order.getEnUU();
+		this.sa_currency = order.getCurrency();
+		this.sa_date = order.getDate();
+		this.sa_pocode = order.getCode();
+		this.sa_shipby = order.getShipAddress();
+		this.sa_recorddate = new Date();
+		if (!CollectionUtils.isEmpty(order.getOrderItems())) {
+			List<SaleDownDetail> details = new ArrayList<SaleDownDetail>();
+			for (PurchaseOrderAllItem item : order.getOrderItems()) {
+				details.add(new SaleDownDetail(item));
+			}
+			this.saleDownDetails = details;
+		}
+	}
+
+}

+ 172 - 0
src/main/java/com/uas/platform/b2b/erp/model/SaleDownDetail.java

@@ -0,0 +1,172 @@
+package com.uas.platform.b2b.erp.model;
+
+import java.util.Date;
+
+import com.uas.platform.b2b.model.PurchaseOrderAllItem;
+
+public class SaleDownDetail {
+
+	private String sd_code;
+	private int sd_detno;
+	private String sd_custprodcode;
+	private String sd_custproddetail;
+	private String sd_custprodspec;
+	private String sd_custprodunit;
+	private Double sd_replyqty;
+	private Date sd_replydate;
+	private String sd_replydetail;
+	private Double sd_customprice;
+	private Double sd_price;
+	private Double sd_qty;
+	private Double sd_total;
+	private Float sd_taxrate;
+	private Double sd_taxtotal;
+
+	public String getSd_code() {
+		return sd_code;
+	}
+
+	public void setSd_code(String sd_code) {
+		this.sd_code = sd_code;
+	}
+
+	public int getSd_detno() {
+		return sd_detno;
+	}
+
+	public void setSd_detno(int sd_detno) {
+		this.sd_detno = sd_detno;
+	}
+
+	public String getSd_custprodcode() {
+		return sd_custprodcode;
+	}
+
+	public void setSd_custprodcode(String sd_custprodcode) {
+		this.sd_custprodcode = sd_custprodcode;
+	}
+
+	public String getSd_custproddetail() {
+		return sd_custproddetail;
+	}
+
+	public void setSd_custproddetail(String sd_custproddetail) {
+		this.sd_custproddetail = sd_custproddetail;
+	}
+
+	public String getSd_custprodspec() {
+		return sd_custprodspec;
+	}
+
+	public void setSd_custprodspec(String sd_custprodspec) {
+		this.sd_custprodspec = sd_custprodspec;
+	}
+
+	public String getSd_custprodunit() {
+		return sd_custprodunit;
+	}
+
+	public void setSd_custprodunit(String sd_custprodunit) {
+		this.sd_custprodunit = sd_custprodunit;
+	}
+
+	public Double getSd_replyqty() {
+		return sd_replyqty;
+	}
+
+	public void setSd_replyqty(Double sd_replyqty) {
+		this.sd_replyqty = sd_replyqty;
+	}
+
+	public Date getSd_replydate() {
+		return sd_replydate;
+	}
+
+	public void setSd_replydate(Date sd_replydate) {
+		this.sd_replydate = sd_replydate;
+	}
+
+	public String getSd_replydetail() {
+		return sd_replydetail;
+	}
+
+	public void setSd_replydetail(String sd_replydetail) {
+		this.sd_replydetail = sd_replydetail;
+	}
+
+	public Double getSd_customprice() {
+		return sd_customprice;
+	}
+
+	public void setSd_customprice(Double sd_customprice) {
+		this.sd_customprice = sd_customprice;
+	}
+
+	public Double getSd_price() {
+		return sd_price;
+	}
+
+	public void setSd_price(Double sd_price) {
+		this.sd_price = sd_price;
+	}
+
+	public Double getSd_qty() {
+		return sd_qty;
+	}
+
+	public void setSd_qty(Double sd_qty) {
+		this.sd_qty = sd_qty;
+	}
+
+	public Double getSd_total() {
+		return sd_total;
+	}
+
+	public void setSd_total(Double sd_total) {
+		this.sd_total = sd_total;
+	}
+
+	public Float getSd_taxrate() {
+		return sd_taxrate;
+	}
+
+	public void setSd_taxrate(Float sd_taxrate) {
+		this.sd_taxrate = sd_taxrate;
+	}
+
+	public Double getSd_taxtotal() {
+		return sd_taxtotal;
+	}
+
+	public void setSd_taxtotal(Double sd_taxtotal) {
+		this.sd_taxtotal = sd_taxtotal;
+	}
+
+	public SaleDownDetail() {
+
+	}
+
+	/**
+	 * 从平台的采购订单明细,转到卖家ERP的订单下达明细
+	 * 
+	 * @param orderItem
+	 */
+	public SaleDownDetail(PurchaseOrderAllItem orderItem) {
+		this.sd_code = orderItem.getOrder().getCode();
+		this.sd_customprice = orderItem.getPrice();
+		this.sd_custprodcode = orderItem.getProduct().getCode();
+		this.sd_custproddetail = orderItem.getProduct().getTitle();
+		this.sd_custprodspec = orderItem.getProduct().getSpec();
+		this.sd_custprodunit = orderItem.getProduct().getUnit();
+		this.sd_detno = orderItem.getNumber();
+		this.sd_price = orderItem.getPrice();
+		this.sd_qty = orderItem.getQty();
+		this.sd_replydate = orderItem.getReplyDelivery();
+		this.sd_replydetail = orderItem.getReplyRemark();
+		this.sd_replyqty = orderItem.getReplyQty();
+		this.sd_taxrate = orderItem.getTaxrate();
+		this.sd_total = orderItem.getAmount();
+		this.sd_taxtotal = orderItem.getNoTaxAmount();
+	}
+
+}

+ 28 - 0
src/main/java/com/uas/platform/b2b/erp/service/SaleService.java

@@ -0,0 +1,28 @@
+package com.uas.platform.b2b.erp.service;
+
+import java.util.List;
+
+import com.uas.platform.b2b.erp.model.PurchaseReply;
+import com.uas.platform.b2b.erp.model.SaleDown;
+import com.uas.platform.b2b.model.PurchaseOrderAll;
+import com.uas.platform.b2b.model.PurchaseOrderReply;
+
+public interface SaleService {
+
+	/**
+	 * 将平台里面的采购订单,转为供应商ERP的订单下达
+	 * 
+	 * @param orders
+	 * @return
+	 */
+	List<SaleDown> convertPurchaseOrder(List<PurchaseOrderAll> orders);
+
+	/**
+	 * 将供应商在ERP的订单回复,转为平台的回复
+	 * 
+	 * @param replies
+	 * @return
+	 */
+	List<PurchaseOrderReply> convertPurchaseReply(List<PurchaseReply> replies);
+
+}

+ 49 - 0
src/main/java/com/uas/platform/b2b/erp/service/impl/SaleServiceImpl.java

@@ -0,0 +1,49 @@
+package com.uas.platform.b2b.erp.service.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import com.uas.platform.b2b.dao.PurchaseOrderItemDao;
+import com.uas.platform.b2b.erp.model.PurchaseReply;
+import com.uas.platform.b2b.erp.model.SaleDown;
+import com.uas.platform.b2b.erp.service.SaleService;
+import com.uas.platform.b2b.model.PurchaseOrderAll;
+import com.uas.platform.b2b.model.PurchaseOrderItem;
+import com.uas.platform.b2b.model.PurchaseOrderReply;
+import com.uas.platform.b2b.support.SystemSession;
+
+@Service
+public class SaleServiceImpl implements SaleService {
+
+	@Autowired
+	private PurchaseOrderItemDao purchaseOrderItemDao;
+	
+	@Override
+	public List<SaleDown> convertPurchaseOrder(List<PurchaseOrderAll> orders) {
+		List<SaleDown> sales = new ArrayList<SaleDown>();
+		for(PurchaseOrderAll order:orders)
+			sales.add(new SaleDown(order));
+		return sales;
+	}
+
+	@Override
+	public List<PurchaseOrderReply> convertPurchaseReply(List<PurchaseReply> replies) {
+		List<PurchaseOrderReply> orderReplies = new ArrayList<PurchaseOrderReply>();
+		long enUU = SystemSession.getUser().getEnterprise().getUu();
+		for (PurchaseReply reply : replies) {
+			List<PurchaseOrderItem> items = purchaseOrderItemDao.findByVendUUAndOrderCodeAndNumber(enUU, reply.getPr_pucode(),
+					reply.getPr_pddetno());
+			if (!CollectionUtils.isEmpty(items)) {
+				PurchaseOrderReply orderReply = reply.convert();
+				orderReply.setOrderItem(items.get(0));
+				orderReplies.add(orderReply);
+			}
+		}
+		return orderReplies;
+	}
+
+}

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

@@ -104,6 +104,12 @@ public class PurchaseOrder implements Serializable {
 	@Column(name = "pu_status")
 	@Column(name = "pu_status")
 	private Short status;
 	private Short status;
 
 
+	/**
+	 * 从平台传到供应商ERP的状态
+	 */
+	@Column(name = "pu_sendstatus")
+	private Short sendStatus;
+
 	public Long getId() {
 	public Long getId() {
 		return id;
 		return id;
 	}
 	}
@@ -224,4 +230,12 @@ public class PurchaseOrder implements Serializable {
 		this.status = status;
 		this.status = status;
 	}
 	}
 
 
+	public Short getSendStatus() {
+		return sendStatus;
+	}
+
+	public void setSendStatus(Short sendStatus) {
+		this.sendStatus = sendStatus;
+	}
+
 }
 }

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

@@ -126,6 +126,12 @@ public class PurchaseOrderAll {
 	 */
 	 */
 	@Column(name = "pu_status")
 	@Column(name = "pu_status")
 	private Short status;
 	private Short status;
+	
+	/**
+	 * 从平台传到供应商ERP的状态
+	 */
+	@Column(name = "pu_sendstatus")
+	private Short sendStatus;
 
 
 	/**
 	/**
 	 * 采购单明细
 	 * 采购单明细
@@ -264,6 +270,14 @@ public class PurchaseOrderAll {
 		this.status = status;
 		this.status = status;
 	}
 	}
 
 
+	public Short getSendStatus() {
+		return sendStatus;
+	}
+
+	public void setSendStatus(Short sendStatus) {
+		this.sendStatus = sendStatus;
+	}
+
 	public Set<PurchaseOrderAllItem> getOrderItems() {
 	public Set<PurchaseOrderAllItem> getOrderItems() {
 		return orderItems;
 		return orderItems;
 	}
 	}

+ 15 - 1
src/main/java/com/uas/platform/b2b/model/PurchaseOrderAllItem.java

@@ -65,10 +65,16 @@ public class PurchaseOrderAllItem {
 	private Double replyQty;
 	private Double replyQty;
 
 
 	/**
 	/**
-	 * 回复的交期
+	 * (最近一次)回复的交期
 	 */
 	 */
 	@Column(name = "pd_replydelivery")
 	@Column(name = "pd_replydelivery")
 	private Date replyDelivery;
 	private Date replyDelivery;
+	
+	/**
+	 * (最近一次)回复的备注
+	 */
+	@Column(name = "pd_replyremark")
+	private String replyRemark;
 
 
 	/**
 	/**
 	 * 备注
 	 * 备注
@@ -236,6 +242,14 @@ public class PurchaseOrderAllItem {
 		this.replyDelivery = replyDelivery;
 		this.replyDelivery = replyDelivery;
 	}
 	}
 
 
+	public String getReplyRemark() {
+		return replyRemark;
+	}
+
+	public void setReplyRemark(String replyRemark) {
+		this.replyRemark = replyRemark;
+	}
+
 	public Short getStatus() {
 	public Short getStatus() {
 		return status;
 		return status;
 	}
 	}

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

@@ -58,11 +58,17 @@ public class PurchaseOrderItem {
 	private Double replyQty;
 	private Double replyQty;
 	
 	
 	/**
 	/**
-	 * 回复的交期
+	 * (最近一次)回复的交期
 	 */
 	 */
 	@Column(name = "pd_replydelivery")
 	@Column(name = "pd_replydelivery")
 	private Date replyDelivery;
 	private Date replyDelivery;
 	
 	
+	/**
+	 * (最近一次)回复的备注
+	 */
+	@Column(name = "pd_replyremark")
+	private String replyRemark;
+	
 	/**
 	/**
 	 * 备注
 	 * 备注
 	 */
 	 */
@@ -215,6 +221,14 @@ public class PurchaseOrderItem {
 		this.replyQty = replyQty;
 		this.replyQty = replyQty;
 	}
 	}
 
 
+	public String getReplyRemark() {
+		return replyRemark;
+	}
+
+	public void setReplyRemark(String replyRemark) {
+		this.replyRemark = replyRemark;
+	}
+
 	public Date getDelivery() {
 	public Date getDelivery() {
 		return delivery;
 		return delivery;
 	}
 	}

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

@@ -59,6 +59,13 @@ public interface PurchaseOrderService {
 	 */
 	 */
 	public void reply(PurchaseOrderReply reply);
 	public void reply(PurchaseOrderReply reply);
 
 
+	/**
+	 * 批量回复
+	 * 
+	 * @param replies
+	 */
+	public void reply(List<PurchaseOrderReply> replies);
+
 	/**
 	/**
 	 * 批量回复
 	 * 批量回复
 	 * 
 	 * 
@@ -77,14 +84,21 @@ public interface PurchaseOrderService {
 	public List<PurchaseOrderReply> findReplyByOrderItem(long orderItemId);
 	public List<PurchaseOrderReply> findReplyByOrderItem(long orderItemId);
 
 
 	/**
 	/**
-	 * 查找所有待上传的回复记录
+	 * 查找所有待上传到供应商ERP的订单
+	 * 
+	 * @return
+	 */
+	public List<PurchaseOrderAll> findNotUploadOrder();
+
+	/**
+	 * 查找所有待上传到买家的回复记录
 	 * 
 	 * 
 	 * @return
 	 * @return
 	 */
 	 */
 	public List<PurchaseOrderReply> findNotUploadReply();
 	public List<PurchaseOrderReply> findNotUploadReply();
 
 
 	/**
 	/**
-	 * 回复记录成功传到ERP之后
+	 * 回复记录成功传到买家ERP之后
 	 * 
 	 * 
 	 * @param idArray
 	 * @param idArray
 	 */
 	 */

+ 30 - 6
src/main/java/com/uas/platform/b2b/service/impl/PurchaseOrderServiceImpl.java

@@ -75,17 +75,29 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 	}
 	}
 
 
 	@Override
 	@Override
-	@Transactional
 	public void reply(PurchaseOrderReply reply) {
 	public void reply(PurchaseOrderReply reply) {
-		reply.setDate(new Date());
-		// 作为B2B->ERP数据是否已传输的标志
-		reply.setStatus((short) Status.NOT_UPLOAD.value());
-		reply.setRecorder(SystemSession.getUser().getUserName());
+		reply(reply, true);
+	}
+
+	/**
+	 * @param reply
+	 * @param isB2b
+	 *            是否b2b新增
+	 */
+	@Transactional
+	private void reply(PurchaseOrderReply reply, boolean isB2b) {
+		if (isB2b) {
+			reply.setDate(new Date());
+			// 作为B2B->ERP数据是否已传输的标志
+			reply.setStatus((short) Status.NOT_UPLOAD.value());
+			reply.setRecorder(SystemSession.getUser().getUserName());
+		}
 		PurchaseOrderItem item = purchaseOrderItemDao.findOne(reply.getOrderItem().getId());
 		PurchaseOrderItem item = purchaseOrderItemDao.findOne(reply.getOrderItem().getId());
 		Double replyQty = item.getReplyQty();
 		Double replyQty = item.getReplyQty();
 		replyQty = replyQty == null ? 0 : replyQty;
 		replyQty = replyQty == null ? 0 : replyQty;
 		item.setReplyQty(replyQty + reply.getQty());
 		item.setReplyQty(replyQty + reply.getQty());
 		item.setReplyDelivery(reply.getDelivery());
 		item.setReplyDelivery(reply.getDelivery());
+		item.setReplyRemark(reply.getRemark());
 		if (item.getReplyQty() > item.getQty())
 		if (item.getReplyQty() > item.getQty())
 			throw new IllegalOperatorException("回复的数量合计超过了订单数量");
 			throw new IllegalOperatorException("回复的数量合计超过了订单数量");
 		// 该行回复状态
 		// 该行回复状态
@@ -129,7 +141,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 			if (orderItem.getReplyQty() == null)
 			if (orderItem.getReplyQty() == null)
 				orderItem.setReplyQty((double) 0);
 				orderItem.setReplyQty((double) 0);
 			reply.setQty(orderItem.getQty() - orderItem.getReplyQty());
 			reply.setQty(orderItem.getQty() - orderItem.getReplyQty());
-			reply(reply);
+			reply(reply, true);
 		}
 		}
 
 
 	}
 	}
@@ -156,4 +168,16 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 		}
 		}
 	}
 	}
 
 
+	@Override
+	public void reply(List<PurchaseOrderReply> replies) {
+		for (PurchaseOrderReply reply : replies)
+			reply(reply, false);
+	}
+
+	@Override
+	public List<PurchaseOrderAll> findNotUploadOrder() {
+		return purchaseOrderAllDao.findByVendUUAndSendStatus(SystemSession.getUser().getEnterprise().getUu(),
+				(short) Status.NOT_UPLOAD.value());
+	}
+
 }
 }