Browse Source

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

administrator 11 years ago
parent
commit
8d71fb357f

+ 6 - 2
src/main/java/com/uas/platform/b2b/erp/model/SaleOut.java

@@ -150,11 +150,15 @@ public class SaleOut {
 		send.setRate(this.pi_rate);
 		send.setRate(this.pi_rate);
 		send.setRemark(this.pi_remark);
 		send.setRemark(this.pi_remark);
 		send.setRecorder(this.pi_recordman);
 		send.setRecorder(this.pi_recordman);
-		send.setSendStatus((short) Status.NOT_UPLOAD.value());
+		send.setSendStatus((short) Status.DOWNLOADED.value());// 先暂置为已下载
 		Set<SaleSendItem> items = new HashSet<SaleSendItem>();
 		Set<SaleSendItem> items = new HashSet<SaleSendItem>();
 		if (!CollectionUtils.isEmpty(this.details)) {
 		if (!CollectionUtils.isEmpty(this.details)) {
 			for (SaleOutDetail detail : this.details) {
 			for (SaleOutDetail detail : this.details) {
-				items.add(detail.convert());
+				SaleSendItem item = detail.convert();
+				// 如果存在关联的送货提醒,则需要下达到买家
+				if (item.getNoticeId() != null)
+					send.setSendStatus((short) Status.NOT_UPLOAD.value());
+				items.add(item);
 			}
 			}
 		}
 		}
 		send.setSendItems(items);
 		send.setSendItems(items);

+ 27 - 5
src/main/java/com/uas/platform/b2b/erp/model/SaleOutDetail.java

@@ -1,6 +1,7 @@
 package com.uas.platform.b2b.erp.model;
 package com.uas.platform.b2b.erp.model;
 
 
 import com.uas.platform.b2b.model.PurchaseNotice;
 import com.uas.platform.b2b.model.PurchaseNotice;
+import com.uas.platform.b2b.model.PurchaseOrderItem;
 import com.uas.platform.b2b.model.SaleSendItem;
 import com.uas.platform.b2b.model.SaleSendItem;
 
 
 /**
 /**
@@ -15,7 +16,11 @@ public class SaleOutDetail {
 	private Double pd_outqty;
 	private Double pd_outqty;
 	private Double pd_sendprice;
 	private Double pd_sendprice;
 	/**
 	/**
-	 * 关联的送货提醒单ID
+	 * 关联的平台客户采购明细ID
+	 */
+	private Long pd_orderid;
+	/**
+	 * 关联的平台送货提醒单ID
 	 */
 	 */
 	private Long b2b_pn_id;
 	private Long b2b_pn_id;
 
 
@@ -51,6 +56,14 @@ public class SaleOutDetail {
 		this.b2b_pn_id = b2b_pn_id;
 		this.b2b_pn_id = b2b_pn_id;
 	}
 	}
 
 
+	public Long getPd_orderid() {
+		return pd_orderid;
+	}
+
+	public void setPd_orderid(Long pd_orderid) {
+		this.pd_orderid = pd_orderid;
+	}
+
 	public SaleOutDetail() {
 	public SaleOutDetail() {
 	}
 	}
 
 
@@ -64,6 +77,7 @@ public class SaleOutDetail {
 		this.pd_outqty = item.getQty();
 		this.pd_outqty = item.getQty();
 		this.pd_pdno = item.getNumber();
 		this.pd_pdno = item.getNumber();
 		this.pd_sendprice = item.getPrice();
 		this.pd_sendprice = item.getPrice();
+		this.pd_orderid = item.getOrderItem().getId();
 	}
 	}
 
 
 	public SaleSendItem convert() {
 	public SaleSendItem convert() {
@@ -71,10 +85,18 @@ public class SaleOutDetail {
 		item.setNumber(this.pd_pdno);
 		item.setNumber(this.pd_pdno);
 		item.setPrice(this.pd_sendprice);
 		item.setPrice(this.pd_sendprice);
 		item.setQty(this.pd_outqty);
 		item.setQty(this.pd_outqty);
-		PurchaseNotice notice = new PurchaseNotice();
-		notice.setId(this.b2b_pn_id);
-		item.setNotice(notice);
-		item.setNoticeId(this.b2b_pn_id);
+		if (this.b2b_pn_id != null) {
+			PurchaseNotice notice = new PurchaseNotice();
+			notice.setId(this.b2b_pn_id);
+			item.setNotice(notice);
+			item.setNoticeId(this.b2b_pn_id);
+		}
+		if (this.pd_orderid != null) {
+			PurchaseOrderItem orderItem = new PurchaseOrderItem();
+			orderItem.setId(this.pd_orderid);
+			item.setOrderItem(orderItem);
+			item.setOrderItemId(this.pd_orderid);
+		}
 		return item;
 		return item;
 	}
 	}
 
 

+ 19 - 4
src/main/java/com/uas/platform/b2b/erp/service/impl/SaleNotifyDownServiceImpl.java

@@ -8,11 +8,13 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 import com.uas.platform.b2b.dao.PurchaseNoticeDao;
 import com.uas.platform.b2b.dao.PurchaseNoticeDao;
+import com.uas.platform.b2b.dao.PurchaseOrderItemDao;
 import com.uas.platform.b2b.erp.model.SaleNotifyDown;
 import com.uas.platform.b2b.erp.model.SaleNotifyDown;
 import com.uas.platform.b2b.erp.model.SaleNotifyDownEnd;
 import com.uas.platform.b2b.erp.model.SaleNotifyDownEnd;
 import com.uas.platform.b2b.erp.model.SaleOut;
 import com.uas.platform.b2b.erp.model.SaleOut;
 import com.uas.platform.b2b.erp.service.SaleNotifyDownService;
 import com.uas.platform.b2b.erp.service.SaleNotifyDownService;
 import com.uas.platform.b2b.model.PurchaseNotice;
 import com.uas.platform.b2b.model.PurchaseNotice;
+import com.uas.platform.b2b.model.PurchaseOrderItem;
 import com.uas.platform.b2b.model.SaleSend;
 import com.uas.platform.b2b.model.SaleSend;
 import com.uas.platform.b2b.model.SaleSendItem;
 import com.uas.platform.b2b.model.SaleSendItem;
 
 
@@ -22,6 +24,9 @@ public class SaleNotifyDownServiceImpl implements SaleNotifyDownService {
 	@Autowired
 	@Autowired
 	private PurchaseNoticeDao purchaseNoticeDao;
 	private PurchaseNoticeDao purchaseNoticeDao;
 
 
+	@Autowired
+	private PurchaseOrderItemDao purchaseOrderItemDao;
+
 	@Override
 	@Override
 	public List<SaleNotifyDown> convertPurchaseNotice(List<PurchaseNotice> notices) {
 	public List<SaleNotifyDown> convertPurchaseNotice(List<PurchaseNotice> notices) {
 		List<SaleNotifyDown> downs = new ArrayList<SaleNotifyDown>();
 		List<SaleNotifyDown> downs = new ArrayList<SaleNotifyDown>();
@@ -43,11 +48,21 @@ public class SaleNotifyDownServiceImpl implements SaleNotifyDownService {
 				if (!CollectionUtils.isEmpty(send.getSendItems())) {
 				if (!CollectionUtils.isEmpty(send.getSendItems())) {
 					for (SaleSendItem item : send.getSendItems()) {
 					for (SaleSendItem item : send.getSendItems()) {
 						item.setSend(send);
 						item.setSend(send);
-						PurchaseNotice notice = purchaseNoticeDao.findOne(item.getNoticeId());
-						if (notice != null) {
-							item.setNotice(notice);
-							sendItems.add(item);
+						PurchaseOrderItem orderItem = null;
+						if (item.getNoticeId() != null) {
+							PurchaseNotice notice = purchaseNoticeDao.findOne(item.getNoticeId());
+							if (notice != null) {// 按送货提醒发货
+								item.setNotice(notice);
+								orderItem = notice.getOrderItem();
+								item.setOrderItemId(orderItem.getId());
+								item.setOrderItem(orderItem);
+							}
+						} else if (item.getOrderItemId() != null) {// 直接按客户采购订单转的销售单出货
+							orderItem = purchaseOrderItemDao.findOne(item.getOrderItemId());
+							item.setOrderItem(orderItem);
 						}
 						}
+						if (orderItem != null)
+							sendItems.add(item);
 					}
 					}
 				}
 				}
 			}
 			}

+ 26 - 0
src/main/java/com/uas/platform/b2b/model/SaleSendItem.java

@@ -45,6 +45,16 @@ public class SaleSendItem {
 
 
 	@Column(name = "si_noticeid")
 	@Column(name = "si_noticeid")
 	private Long noticeId;
 	private Long noticeId;
+	
+	/**
+	 * 客户采购单明细(可能存在不通过送货提醒发货的情况,所以需要能直接关联客户采购单明细)
+	 */
+	@OneToOne(cascade = { CascadeType.REFRESH })
+	@JoinColumn(name = "si_pdid", insertable = false, updatable = false, nullable = false)
+	private PurchaseOrderItem orderItem;
+	
+	@Column(name = "si_pdid")
+	private Long orderItemId;
 
 
 	/**
 	/**
 	 * 数量
 	 * 数量
@@ -136,4 +146,20 @@ public class SaleSendItem {
 		this.noticeId = noticeId;
 		this.noticeId = noticeId;
 	}
 	}
 
 
+	public PurchaseOrderItem getOrderItem() {
+		return orderItem;
+	}
+
+	public void setOrderItem(PurchaseOrderItem orderItem) {
+		this.orderItem = orderItem;
+	}
+
+	public Long getOrderItemId() {
+		return orderItemId;
+	}
+
+	public void setOrderItemId(Long orderItemId) {
+		this.orderItemId = orderItemId;
+	}
+
 }
 }

+ 17 - 9
src/main/java/com/uas/platform/b2b/service/impl/PurchaseNoticeServiceImpl.java

@@ -92,8 +92,10 @@ public class PurchaseNoticeServiceImpl implements PurchaseNoticeService {
 	@Override
 	@Override
 	public void send(List<SaleSendItem> sendItems) {
 	public void send(List<SaleSendItem> sendItems) {
 		saleSendItemDao.save(sendItems);
 		saleSendItemDao.save(sendItems);
-		for (SaleSendItem item : sendItems)
-			purchaseNoticeDao.updateBySend(item.getNoticeId());
+		for (SaleSendItem item : sendItems) {
+			if (item.getNoticeId() != null)
+				purchaseNoticeDao.updateBySend(item.getNoticeId());
+		}
 	}
 	}
 
 
 	@Override
 	@Override
@@ -214,6 +216,8 @@ public class PurchaseNoticeServiceImpl implements PurchaseNoticeService {
 				item.setNoticeId(noticeId);
 				item.setNoticeId(noticeId);
 				item.setNotice(notice);
 				item.setNotice(notice);
 				item.setNumber(++number);
 				item.setNumber(++number);
+				item.setOrderItem(notice.getOrderItem());
+				item.setOrderItemId(notice.getOrderItem().getId());
 				item.setPrice(notice.getOrderItem().getPrice());
 				item.setPrice(notice.getOrderItem().getPrice());
 				item.setSend(send);
 				item.setSend(send);
 			}
 			}
@@ -221,8 +225,10 @@ public class PurchaseNoticeServiceImpl implements PurchaseNoticeService {
 			notice.setEndQty(endQty);
 			notice.setEndQty(endQty);
 			notice.setStatus((short) (endQty == notice.getQty() ? Status.REPLIED.value() : Status.NOT_REPLY.value()));
 			notice.setStatus((short) (endQty == notice.getQty() ? Status.REPLIED.value() : Status.NOT_REPLY.value()));
 			purchaseNoticeDao.save(notice);
 			purchaseNoticeDao.save(notice);
-			XingePusher.pushSingleAccountAndroid(send.getCustUserUU().toString(), "供应商发货了", "供应商:" + SystemSession.getUser().getEnterprise().getEnName(), null);
-			XingePusher.pushSingleAccountIOS(send.getCustUserUU().toString(), "供应商发货了" + "  供应商:" + SystemSession.getUser().getEnterprise().getEnName());
+			XingePusher.pushSingleAccountAndroid(send.getCustUserUU().toString(), "供应商发货了", "供应商:"
+					+ SystemSession.getUser().getEnterprise().getEnName(), null);
+			XingePusher.pushSingleAccountIOS(send.getCustUserUU().toString(), "供应商发货了" + "  供应商:"
+					+ SystemSession.getUser().getEnterprise().getEnName());
 		}
 		}
 	}
 	}
 
 
@@ -242,7 +248,7 @@ public class PurchaseNoticeServiceImpl implements PurchaseNoticeService {
 			short number = 0;
 			short number = 0;
 			for (SaleSendItem item : saleSend.getSendItems()) {
 			for (SaleSendItem item : saleSend.getSendItems()) {
 				PurchaseNotice notice = purchaseNoticeDao.findOne(item.getNoticeId());
 				PurchaseNotice notice = purchaseNoticeDao.findOne(item.getNoticeId());
-				if(notice != null) {
+				if (notice != null) {
 					double thisQty = item.getQty();
 					double thisQty = item.getQty();
 					double endQty = (notice.getEndQty() == null ? 0.0 : notice.getEndQty()) + thisQty;
 					double endQty = (notice.getEndQty() == null ? 0.0 : notice.getEndQty()) + thisQty;
 					if (endQty > notice.getQty())
 					if (endQty > notice.getQty())
@@ -254,18 +260,20 @@ public class PurchaseNoticeServiceImpl implements PurchaseNoticeService {
 				} else {
 				} else {
 					throw new IllegalArgumentException("参数错误,无效的客户送货提醒单!");
 					throw new IllegalArgumentException("参数错误,无效的客户送货提醒单!");
 				}
 				}
-				
+
 			}
 			}
 			List<SaleSendItem> sendItems = saleSendItemDao.save(saleSend.getSendItems());
 			List<SaleSendItem> sendItems = saleSendItemDao.save(saleSend.getSendItems());
-			for(SaleSendItem sendItem : sendItems) {
+			for (SaleSendItem sendItem : sendItems) {
 				PurchaseNotice notice = purchaseNoticeDao.findOne(sendItem.getNoticeId());
 				PurchaseNotice notice = purchaseNoticeDao.findOne(sendItem.getNoticeId());
 				double endQty = (notice.getEndQty() == null ? 0.0 : notice.getEndQty()) + sendItem.getQty();
 				double endQty = (notice.getEndQty() == null ? 0.0 : notice.getEndQty()) + sendItem.getQty();
 				notice.setEndQty(endQty);
 				notice.setEndQty(endQty);
 				notice.setStatus((short) (endQty == notice.getQty() ? Status.REPLIED.value() : Status.NOT_REPLY.value()));
 				notice.setStatus((short) (endQty == notice.getQty() ? Status.REPLIED.value() : Status.NOT_REPLY.value()));
 				purchaseNoticeDao.save(notice);
 				purchaseNoticeDao.save(notice);
 			}
 			}
-			XingePusher.pushSingleAccountAndroid(saleSend.getCustUserUU().toString(), "供应商发货了", "供应商:" + SystemSession.getUser().getEnterprise().getEnName(), null);
-			XingePusher.pushSingleAccountIOS(saleSend.getCustUserUU().toString(), "供应商发货了" + "  供应商:" + SystemSession.getUser().getEnterprise().getEnName());
+			XingePusher.pushSingleAccountAndroid(saleSend.getCustUserUU().toString(), "供应商发货了", "供应商:"
+					+ SystemSession.getUser().getEnterprise().getEnName(), null);
+			XingePusher.pushSingleAccountIOS(saleSend.getCustUserUU().toString(), "供应商发货了" + "  供应商:"
+					+ SystemSession.getUser().getEnterprise().getEnName());
 		}
 		}
 		return null;
 		return null;
 	}
 	}