Browse Source

【出入库单模型】+【上传出入库单据到平台】+【无Po的采购验退单处理】+【没有订单号时不关联采购单】

git-svn-id: svn+ssh://10.10.101.21/source/platform/platform-b2b@2689 f3bf4e98-0cf0-11e4-a00c-a99a8b9d557d
shenj 10 years ago
parent
commit
9906b4ff83

+ 65 - 37
src/main/java/com/uas/platform/b2b/service/impl/PurchaseReturnServiceImpl.java

@@ -42,36 +42,47 @@ public class PurchaseReturnServiceImpl implements PurchaseReturnService {
 
 	@Autowired
 	private PurchaseReturnIndexDao purchaseReturnIndexDao;
-	
+
 	@Autowired
 	private PurchaseOrderItemDao purchaseOrderItemDao;
 
 	@Override
 	public void save(List<PurchaseReturnItem> returnItems) {
 		returnItems = purchaseReturnItemDao.save(returnItems);
-		ContextUtils.publishEvent(new PurchaseReturnSaveEvent(PurchaseReturnItem.distinct(returnItems)));
-		//关联订单的验退数量
-		for(PurchaseReturnItem returnItem : returnItems) {
-			List<PurchaseOrderItem> orderItems = purchaseOrderItemDao.findByEnUUAndOrderCodeAndNumber(returnItem.getOrderItem().getOrder().getEnUU(), 
-					returnItem.getOrderItem().getOrder().getCode(), returnItem.getOrderItem().getNumber());
-			if(orderItems.size() > 0) {
-				PurchaseOrderItem orderItem = orderItems.get(0);
-				orderItem.setReturnQty((orderItem.getReturnQty() == null ? 0 : orderItems.get(0).getReturnQty()) + returnItem.getQty());
-				purchaseOrderItemDao.save(orderItem);
+		ContextUtils.publishEvent(new PurchaseReturnSaveEvent(
+				PurchaseReturnItem.distinct(returnItems)));
+		// 关联订单的验退数量
+		for (PurchaseReturnItem returnItem : returnItems) {
+			if (returnItem.getOrderItem() != null) {
+				List<PurchaseOrderItem> orderItems = purchaseOrderItemDao
+						.findByEnUUAndOrderCodeAndNumber(returnItem
+								.getOrderItem().getOrder().getEnUU(),
+								returnItem.getOrderItem().getOrder().getCode(),
+								returnItem.getOrderItem().getNumber());
+				if (orderItems.size() > 0) {
+					PurchaseOrderItem orderItem = orderItems.get(0);
+					orderItem
+							.setReturnQty((orderItem.getReturnQty() == null ? 0
+									: orderItems.get(0).getReturnQty())
+									+ returnItem.getQty());
+					purchaseOrderItemDao.save(orderItem);
+				}
 			}
 		}
 	}
 
 	@Override
 	public List<PurchaseReturn> findNotUpload() {
-		return purchaseReturnDao.findByVendUUAndSendStatus(SystemSession.getUser().getEnterprise()
-				.getUu(), (short) Status.NOT_UPLOAD.value());
+		return purchaseReturnDao.findByVendUUAndSendStatus(SystemSession
+				.getUser().getEnterprise().getUu(),
+				(short) Status.NOT_UPLOAD.value());
 	}
 
 	@Override
 	public void onUploadSuccess(String[] idArray) {
 		for (String id : idArray) {
-			PurchaseReturn return1 = purchaseReturnDao.findOne(Long.parseLong(id));
+			PurchaseReturn return1 = purchaseReturnDao.findOne(Long
+					.parseLong(id));
 			if (return1 != null) {
 				return1.setSendStatus((short) Status.DOWNLOADED.value());
 				purchaseReturnDao.save(return1);
@@ -80,17 +91,23 @@ public class PurchaseReturnServiceImpl implements PurchaseReturnService {
 	}
 
 	@Override
-	public Page<PurchaseReturn> findAllByPageInfo(final PageInfo pageInfo, final String keyword, final SearchFilter filter) {
+	public Page<PurchaseReturn> findAllByPageInfo(final PageInfo pageInfo,
+			final String keyword, final SearchFilter filter) {
 		return purchaseReturnDao.findAll(new Specification<PurchaseReturn>() {
 
-			public Predicate toPredicate(Root<PurchaseReturn> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
+			public Predicate toPredicate(Root<PurchaseReturn> root,
+					CriteriaQuery<?> query, CriteriaBuilder builder) {
 				if (filter != null) {
 					if (!CollectionUtils.isEmpty(filter.getDistribute()))
-						pageInfo.expression(PredicateUtils.in("enUU", filter.getDistribute(), false));
+						pageInfo.expression(PredicateUtils.in("enUU",
+								filter.getDistribute(), false));
 				}
 				if (StringUtils.hasText(keyword))
-					pageInfo.expression(PredicateUtils.in("id", purchaseReturnIndexDao.findByKeyword(SystemSession
-							.getUser().getEnterprise().getUu(), keyword), false));
+					pageInfo.expression(PredicateUtils.in("id",
+							purchaseReturnIndexDao
+									.findByKeyword(SystemSession.getUser()
+											.getEnterprise().getUu(), keyword),
+							false));
 				query.where(pageInfo.getPredicates(root, query, builder));
 				return null;
 			}
@@ -104,28 +121,36 @@ public class PurchaseReturnServiceImpl implements PurchaseReturnService {
 
 	@Override
 	public void nonPosting(List<PurchaseReturn> purchaseReturns) {
-		if(!CollectionUtils.isEmpty(purchaseReturns)) {
-			for(PurchaseReturn purchaseReturn : purchaseReturns) {
-				if(purchaseReturn.getSendStatus() == Status.DOWNLOADED.value()) {
-					//已传输到供应商ERP,修改单据反过账状态
+		if (!CollectionUtils.isEmpty(purchaseReturns)) {
+			for (PurchaseReturn purchaseReturn : purchaseReturns) {
+				if (purchaseReturn.getSendStatus() == Status.DOWNLOADED.value()) {
+					// 已传输到供应商ERP,修改单据反过账状态
 					purchaseReturn.setNonPosting(Constant.YES);
 					purchaseReturnDao.save(purchaseReturn);
 				} else {
-					//未传输到供应商ERP,直接删除平台上的单据
+					// 未传输到供应商ERP,直接删除平台上的单据
 					purchaseReturnDao.delete(purchaseReturn);
 				}
-				//关联订单的验退数量
-				if(! CollectionUtils.isEmpty(purchaseReturn.getReturnItems())) {
-					for(PurchaseReturnItem returnItem : purchaseReturn.getReturnItems()) {
-						List<PurchaseOrderItem> orderItems = purchaseOrderItemDao.findByEnUUAndOrderCodeAndNumber(returnItem.getOrderItem().getOrder().getEnUU(), 
-								returnItem.getOrderItem().getOrder().getCode(), returnItem.getOrderItem().getNumber());
-						if(orderItems.size() > 0) {
+				// 关联订单的验退数量
+				if (!CollectionUtils.isEmpty(purchaseReturn.getReturnItems())) {
+					for (PurchaseReturnItem returnItem : purchaseReturn
+							.getReturnItems()) {
+						List<PurchaseOrderItem> orderItems = purchaseOrderItemDao
+								.findByEnUUAndOrderCodeAndNumber(returnItem
+										.getOrderItem().getOrder().getEnUU(),
+										returnItem.getOrderItem().getOrder()
+												.getCode(), returnItem
+												.getOrderItem().getNumber());
+						if (orderItems.size() > 0) {
 							PurchaseOrderItem orderItem = orderItems.get(0);
-							//已接受数未空或小于本次验收单数目,设为0
-							if(orderItem.getReturnQty() == null || orderItem.getReturnQty() < returnItem.getQty()) {
+							// 已接受数未空或小于本次验收单数目,设为0
+							if (orderItem.getReturnQty() == null
+									|| orderItem.getReturnQty() < returnItem
+											.getQty()) {
 								orderItem.setReturnQty((double) 0);
-							} else {//否则减去本次的验收数量
-								orderItem.setReturnQty(orderItem.getReturnQty() - returnItem.getQty());
+							} else {// 否则减去本次的验收数量
+								orderItem.setReturnQty(orderItem.getReturnQty()
+										- returnItem.getQty());
 							}
 							purchaseOrderItemDao.save(orderItem);
 						}
@@ -137,13 +162,15 @@ public class PurchaseReturnServiceImpl implements PurchaseReturnService {
 
 	@Override
 	public List<PurchaseReturn> getNonPosting() {
-		return purchaseReturnDao.findByVendUUAndNonPosting(SystemSession.getUser().getEnterprise().getUu(), Constant.YES);
+		return purchaseReturnDao.findByVendUUAndNonPosting(SystemSession
+				.getUser().getEnterprise().getUu(), Constant.YES);
 	}
 
 	@Override
 	public void onNonPostingUploadSuccess(String[] idArray) {
-		for(String id : idArray) {
-			PurchaseReturn purchaseReturn = purchaseReturnDao.findOne(Long.parseLong(id));
+		for (String id : idArray) {
+			PurchaseReturn purchaseReturn = purchaseReturnDao.findOne(Long
+					.parseLong(id));
 			if (purchaseReturn != null) {
 				purchaseReturnDao.delete(purchaseReturn);
 			}
@@ -152,7 +179,8 @@ public class PurchaseReturnServiceImpl implements PurchaseReturnService {
 
 	@Override
 	public Long getAllCount() {
-		return purchaseReturnDao.countByVendUU(SystemSession.getUser().getEnterprise().getUu());
+		return purchaseReturnDao.countByVendUU(SystemSession.getUser()
+				.getEnterprise().getUu());
 	}
 
 }