Browse Source

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

administrator 11 years ago
parent
commit
1a323929eb

+ 0 - 5
src/main/java/com/uas/platform/b2b/controller/SaleChangeController.java

@@ -1,5 +0,0 @@
-package com.uas.platform.b2b.controller;
-
-public class SaleChangeController {
-
-}

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

@@ -0,0 +1,62 @@
+package com.uas.platform.b2b.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.uas.platform.b2b.model.PurchaseOrderChange;
+import com.uas.platform.b2b.service.PurchaseOrderChangeService;
+import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.core.model.PageInfo;
+import com.uas.platform.core.util.serializer.FlexJsonUtils;
+
+/**
+ * 卖家对变更单的操作
+ * 
+ * @author yingp
+ * 
+ */
+@Controller
+@RequestMapping("/sale/changes")
+public class SaleOrderChangeController {
+
+	@Autowired
+	private PurchaseOrderChangeService purchaseOrderChangeService;
+
+	/**
+	 * 作为卖家,收到的采购变更单
+	 * 
+	 * @param json
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST)
+	@ResponseBody
+	public Page<PurchaseOrderChange> getReceivedPurchaseOrders(@RequestBody String json) {
+		PageInfo info = new PageInfo(json);
+		// 我作为卖家,把我的企业ID作为供应商ID传入
+		info.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
+		return purchaseOrderChangeService.findAllByPageInfo(info);
+	}
+
+	/**
+	 * 作为卖家,回复收到的采购变更单
+	 * 
+	 * @param json
+	 * @param changeId
+	 * @return
+	 */
+	@RequestMapping(value = "/{changeId}/reply", method = RequestMethod.POST)
+	public ResponseEntity<String> replyOrderItem(@RequestBody String json, @PathVariable("changeId") Long changeId) {
+		PurchaseOrderChange change = FlexJsonUtils.fromJson(json, PurchaseOrderChange.class);
+		purchaseOrderChangeService.reply(change);
+		return new ResponseEntity<String>(HttpStatus.OK);
+	}
+
+}

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

@@ -26,11 +26,11 @@ import com.uas.platform.core.util.serializer.FlexJsonUtils;
 /**
  * 卖家对订单的操作
  * 
- * @author Administrator
+ * @author yingp
  * 
  */
 @Controller
-@RequestMapping("/sale")
+@RequestMapping("/sale/orders")
 public class SaleOrderController {
 
 	@Autowired
@@ -42,7 +42,7 @@ public class SaleOrderController {
 	 * @param json
 	 * @return
 	 */
-	@RequestMapping(value = "/orders", method = RequestMethod.POST)
+	@RequestMapping(method = RequestMethod.POST)
 	@ResponseBody
 	public Page<PurchaseOrder> getReceivedPurchaseOrders(@RequestBody String json) {
 		PageInfo info = new PageInfo(json);
@@ -57,7 +57,7 @@ public class SaleOrderController {
 	 * @param id
 	 * @return
 	 */
-	@RequestMapping(value = "/orders/{id}", method = RequestMethod.GET)
+	@RequestMapping(value = "/{id}", method = RequestMethod.GET)
 	@ResponseBody
 	public PurchaseOrderAll getReceivedPurchaseOrderItemById(@PathVariable("id") Long id) {
 		return purchaseOrderService.findById(id);
@@ -69,7 +69,7 @@ public class SaleOrderController {
 	 * @param params
 	 * @return
 	 */
-	@RequestMapping(value = "/orders/items", method = RequestMethod.GET)
+	@RequestMapping(value = "/items", method = RequestMethod.GET)
 	@ResponseBody
 	public Page<PurchaseOrderAll> getReceivedPurchaseOrderItems(PageParams params) {
 		PageInfo info = new PageInfo(params);
@@ -85,7 +85,7 @@ public class SaleOrderController {
 	 * @param orderItemId
 	 * @return
 	 */
-	@RequestMapping(value = "/orders/items/{orderItemId}/reply", method = RequestMethod.POST)
+	@RequestMapping(value = "/items/{orderItemId}/reply", method = RequestMethod.POST)
 	public ResponseEntity<String> replyOrderItem(@RequestBody String json, @PathVariable("orderItemId") Long orderItemId) {
 		PurchaseOrderReply reply = FlexJsonUtils.fromJson(json, PurchaseOrderReply.class);
 		PurchaseOrderItem orderItem = new PurchaseOrderItem();
@@ -102,7 +102,7 @@ public class SaleOrderController {
 	 *            订单明细行ID
 	 * @return
 	 */
-	@RequestMapping(value = "/orders/items/{orderItemId}/reply", method = RequestMethod.GET)
+	@RequestMapping(value = "/items/{orderItemId}/reply", method = RequestMethod.GET)
 	public List<PurchaseOrderReply> getPurchaseReply(@PathVariable("orderItemId") Long orderItemId) {
 		return purchaseOrderService.findReplyByOrderItem(orderItemId);
 	}
@@ -113,7 +113,7 @@ public class SaleOrderController {
 	 * @param idString
 	 * @return
 	 */
-	@RequestMapping(value = "/orders/items/reply", method = RequestMethod.POST)
+	@RequestMapping(value = "/items/reply", method = RequestMethod.POST)
 	public ResponseEntity<String> replyOrderItems(@RequestBody String idString) {
 		purchaseOrderService.reply(idString.split(","));
 		return new ResponseEntity<String>(HttpStatus.OK);

+ 0 - 2
src/main/java/com/uas/platform/b2b/dao/EnterpriseDao.java

@@ -8,6 +8,4 @@ import com.uas.platform.b2b.model.Enterprise;
 @Repository
 public interface EnterpriseDao extends JpaRepository<Enterprise, Long> {
 	
-	public Enterprise findEnterpriseByUu(long uu);
-
 }

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

@@ -5,7 +5,9 @@ import java.util.List;
 import javax.persistence.QueryHint;
 
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.jpa.repository.QueryHints;
+import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
 import com.uas.platform.b2b.model.User;
@@ -22,4 +24,14 @@ public interface UserDao extends JpaRepository<User, Long> {
 	@QueryHints({ @QueryHint(name = "org.hibernate.cacheable", value = "true") })
 	public List<User> findUserByUserTel(String userTel);
 
+	/**
+	 * 按企业ID和个人ID查找个人
+	 * 
+	 * @param enUU
+	 * @param userUU
+	 * @return
+	 */
+	@Query("from User u inner join u.enterprises as e where e.uu = :enUU and u.userUU = :userUU")
+	public List<User> findByEnUUAndUserUU(@Param("enUU") long enUU, @Param("userUU") long userUU);
+
 }

+ 25 - 0
src/main/java/com/uas/platform/b2b/dao/VendorDao.java

@@ -0,0 +1,25 @@
+package com.uas.platform.b2b.dao;
+
+import java.util.List;
+
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+import com.uas.platform.b2b.model.Vendor;
+import com.uas.platform.core.data.repository.GenericRepository;
+
+@Repository
+public interface VendorDao extends JpaSpecificationExecutor<Vendor>, GenericRepository<Vendor, Long> {
+
+	/**
+	 * @param myEnUU
+	 *            我的企业ID
+	 * @param vendUU
+	 *            供应商企业ID
+	 * @return
+	 */
+	@Query("from Vendor v where v.myEnUU = :myEnUU and v.vendorEnterprise.uu = :vendUU")
+	public List<Vendor> findByMyEnUUAndVendUU(long myEnUU, long vendUU);
+
+}

+ 32 - 1
src/main/java/com/uas/platform/b2b/erp/model/Purchase.java

@@ -22,7 +22,10 @@ public class Purchase {
 
 	private String pu_code;
 	private Date pu_date;
+	private Long em_uu;
 	private Long ve_uu;
+	private Long ve_contactuu;
+	private String ve_contact;
 	private String pu_currency;
 	private Float pu_rate;
 	private String pu_kind;
@@ -50,6 +53,14 @@ public class Purchase {
 		this.pu_date = pu_date;
 	}
 
+	public Long getEm_uu() {
+		return em_uu;
+	}
+
+	public void setEm_uu(Long em_uu) {
+		this.em_uu = em_uu;
+	}
+
 	public Long getVe_uu() {
 		return ve_uu;
 	}
@@ -58,6 +69,22 @@ public class Purchase {
 		this.ve_uu = ve_uu;
 	}
 
+	public Long getVe_contactuu() {
+		return ve_contactuu;
+	}
+
+	public void setVe_contactuu(Long ve_contactuu) {
+		this.ve_contactuu = ve_contactuu;
+	}
+
+	public String getVe_contact() {
+		return ve_contact;
+	}
+
+	public void setVe_contact(String ve_contact) {
+		this.ve_contact = ve_contact;
+	}
+
 	public String getPu_currency() {
 		return pu_currency;
 	}
@@ -150,7 +177,10 @@ public class Purchase {
 		order.setRate(this.pu_rate);
 		order.setDate(this.pu_date);
 		order.setEnUU(SystemSession.getUser().getEnterprise().getUu());
-		order.setUserUU(SystemSession.getUser().getUserUU());
+		if (this.em_uu != null)
+			order.setUserUU(this.em_uu);
+		else
+			order.setUserUU(SystemSession.getUser().getUserUU());
 		order.setPayments(this.pu_payments);
 		order.setRemark(this.pu_remark);
 		order.setShipAddress(this.pu_shipaddresscode);
@@ -159,6 +189,7 @@ public class Purchase {
 		order.setSendStatus((short) Status.NOT_UPLOAD.value());
 		order.setType(this.pu_kind);
 		order.setVendUU(this.ve_uu);
+		order.setVendUserUU(this.ve_contactuu);
 		order.setAuditor(this.pu_auditman);
 		if (!CollectionUtils.isEmpty(this.purchaseDetails)) {
 			Set<PurchaseOrderAllItem> items = new HashSet<PurchaseOrderAllItem>();

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

@@ -7,26 +7,56 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
+import com.uas.platform.b2b.dao.EnterpriseDao;
 import com.uas.platform.b2b.dao.ProductDao;
+import com.uas.platform.b2b.dao.UserDao;
+import com.uas.platform.b2b.dao.VendorDao;
 import com.uas.platform.b2b.erp.model.Purchase;
 import com.uas.platform.b2b.erp.model.PurchaseReply;
 import com.uas.platform.b2b.erp.service.PurchaseService;
+import com.uas.platform.b2b.model.Enterprise;
 import com.uas.platform.b2b.model.Product;
 import com.uas.platform.b2b.model.PurchaseOrderAll;
 import com.uas.platform.b2b.model.PurchaseOrderAllItem;
 import com.uas.platform.b2b.model.PurchaseOrderReply;
+import com.uas.platform.b2b.model.User;
+import com.uas.platform.b2b.model.Vendor;
+import com.uas.platform.b2b.support.SystemSession;
 
 @Service
 public class PurchaseServiceImpl implements PurchaseService {
 
 	@Autowired
 	private ProductDao productDao;
+	@Autowired
+	private VendorDao vendorDao;
+	@Autowired
+	private EnterpriseDao enterpriseDao;
+	@Autowired
+	private UserDao userDao;
 
 	@Override
 	public List<PurchaseOrderAllItem> convertPurchase(List<Purchase> purchases) {
 		List<PurchaseOrderAllItem> orderItems = new ArrayList<PurchaseOrderAllItem>();
 		for (Purchase purchase : purchases) {
-			PurchaseOrderAll order = purchase.convert();
+			PurchaseOrderAll order = checkVendor(purchase.convert());
+			List<Vendor> vendors = vendorDao.findByMyEnUUAndVendUU(order.getEnUU(), order.getVendUU());
+			if (vendors.size() == 0) {
+				Vendor vendor = new Vendor();
+				vendor.setMyEnUU(order.getEnUU());
+				vendor.setMyUserUU(SystemSession.getUser().getUserUU());
+				Enterprise enterprise = enterpriseDao.findOne(order.getVendUU());
+				vendor.setVendorEnterprise(enterprise);
+				if (order.getVendUserUU() != null) {
+					List<User> users = userDao.findByEnUUAndUserUU(enterprise.getUu(), order.getVendUserUU());
+					if (users.size() > 0)
+						vendor.setVendorUser(users.get(0));
+				}
+				vendorDao.save(vendor);
+			} else {
+				if (order.getVendUserUU() == null)
+					order.setVendUserUU(vendors.get(0).getVendorUser().getUserUU());
+			}
 			if (!CollectionUtils.isEmpty(order.getOrderItems())) {
 				for (PurchaseOrderAllItem item : order.getOrderItems()) {
 					item.setOrder(order);
@@ -51,4 +81,30 @@ public class PurchaseServiceImpl implements PurchaseService {
 			replies.add(new PurchaseReply(orderReply));
 		return replies;
 	}
+
+	/**
+	 * 判断供应商资料、联系人资料是否有效
+	 * 
+	 * @param order
+	 */
+	private PurchaseOrderAll checkVendor(PurchaseOrderAll order) {
+		List<Vendor> vendors = vendorDao.findByMyEnUUAndVendUU(order.getEnUU(), order.getVendUU());
+		if (vendors.size() == 0) {
+			Vendor vendor = new Vendor();
+			vendor.setMyEnUU(order.getEnUU());
+			vendor.setMyUserUU(SystemSession.getUser().getUserUU());
+			Enterprise enterprise = enterpriseDao.findOne(order.getVendUU());
+			vendor.setVendorEnterprise(enterprise);
+			if (order.getVendUserUU() != null) {
+				List<User> users = userDao.findByEnUUAndUserUU(enterprise.getUu(), order.getVendUserUU());
+				if (users.size() > 0)
+					vendor.setVendorUser(users.get(0));
+			}
+			vendorDao.save(vendor);
+		} else {
+			if (order.getVendUserUU() == null && vendors.get(0).getVendorUser() != null)
+				order.setVendUserUU(vendors.get(0).getVendorUser().getUserUU());
+		}
+		return order;
+	}
 }

+ 18 - 0
src/main/java/com/uas/platform/b2b/service/PurchaseOrderChangeService.java

@@ -2,9 +2,12 @@ package com.uas.platform.b2b.service;
 
 import java.util.List;
 
+import org.springframework.data.domain.Page;
+
 import com.uas.platform.b2b.erp.model.SaleDownChangeReply;
 import com.uas.platform.b2b.model.PurchaseOrderChange;
 import com.uas.platform.b2b.model.PurchaseOrderChangeItem;
+import com.uas.platform.core.model.PageInfo;
 
 public interface PurchaseOrderChangeService {
 
@@ -65,4 +68,19 @@ public interface PurchaseOrderChangeService {
 	 */
 	public void onSaleDownChangeReplySuccess(String[] idArray);
 
+	/**
+	 * 分页查找变更单,包括明细
+	 * 
+	 * @param pageInfo
+	 * @return
+	 */
+	public Page<PurchaseOrderChange> findAllByPageInfo(PageInfo pageInfo);
+	
+	/**
+	 * 回复单个明细
+	 * 
+	 * @param reply
+	 */
+	public void reply(PurchaseOrderChange change);
+
 }

+ 48 - 8
src/main/java/com/uas/platform/b2b/service/impl/PurchaseOrderChangeServiceImpl.java

@@ -4,9 +4,17 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+
 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 com.uas.platform.b2b.dao.EnterpriseDao;
 import com.uas.platform.b2b.dao.PurchaseOrderChangeDao;
 import com.uas.platform.b2b.dao.PurchaseOrderChangeItemDao;
 import com.uas.platform.b2b.erp.model.SaleDownChangeReply;
@@ -16,6 +24,7 @@ import com.uas.platform.b2b.model.PurchaseOrderChangeItem;
 import com.uas.platform.b2b.service.PurchaseOrderChangeService;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.b2b.support.XingePusher;
+import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.Status;
 
 @Service
@@ -27,6 +36,9 @@ public class PurchaseOrderChangeServiceImpl implements PurchaseOrderChangeServic
 	@Autowired
 	private PurchaseOrderChangeItemDao purchaseOrderChangeItemDao;
 
+	@Autowired
+	private EnterpriseDao enterpriseDao;
+
 	@Override
 	public void save(List<PurchaseOrderChangeItem> changeItems) {
 		purchaseOrderChangeItemDao.save(changeItems);
@@ -35,12 +47,14 @@ public class PurchaseOrderChangeServiceImpl implements PurchaseOrderChangeServic
 		for (PurchaseOrderChangeItem orderItem : changeItems) {
 			if (!orderId.contains(orderItem.getOrderChange().getId())) {
 				PurchaseOrder order = orderItem.getOrderChange().getOrder();
-				// Android
-				XingePusher.pushSingleAccountAndroid(order.getVendUserUU().toString(), "新增一条客户采购变更单-", "单号:"
-						+ orderItem.getOrderChange().getCode() + ",客户:" + order.getEnterprise().getEnName());
-				// IOS
-				XingePusher.pushSingleAccountIOS(order.getVendUserUU().toString(), "新增一条客户采购变更单-" + "单号:"
-						+ orderItem.getOrderChange().getCode() + ",客户:" + order.getEnterprise().getEnName());
+				if (order.getVendUserUU() != null) {
+					// Android
+					XingePusher.pushSingleAccountAndroid(order.getVendUserUU().toString(), "新增一条客户采购变更单-", "单号:"
+							+ orderItem.getOrderChange().getCode() + ",客户:" + order.getEnterprise().getEnName());
+					// IOS
+					XingePusher.pushSingleAccountIOS(order.getVendUserUU().toString(), "新增一条客户采购变更单-" + "单号:"
+							+ orderItem.getOrderChange().getCode() + ",客户:" + order.getEnterprise().getEnName());
+				}
 				orderId.add(orderItem.getOrderChange().getId());
 			}
 		}
@@ -87,9 +101,8 @@ public class PurchaseOrderChangeServiceImpl implements PurchaseOrderChangeServic
 			if (orderChange != null) {
 				orderChange.setAgreed(reply.getSc_agreed());
 				orderChange.setReplyRemark(reply.getSc_replyremark());
-				orderChange.setStatus((short) Status.REPLIED.value());
 				orderChange.setReplySendStatus((short) Status.DOWNLOADED.value());
-				purchaseOrderChangeDao.save(orderChange);
+				reply(orderChange);
 			}
 		}
 	}
@@ -111,4 +124,31 @@ public class PurchaseOrderChangeServiceImpl implements PurchaseOrderChangeServic
 		}
 	}
 
+	@Override
+	public Page<PurchaseOrderChange> findAllByPageInfo(final PageInfo pageInfo) {
+		return purchaseOrderChangeDao.findAll(new Specification<PurchaseOrderChange>() {
+
+			public Predicate toPredicate(Root<PurchaseOrderChange> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
+				query.where(pageInfo.getPredicates(root, builder));
+				return null;
+			}
+		}, pageInfo);
+	}
+
+	@Override
+	public void reply(PurchaseOrderChange change) {
+		change.setStatus((short) Status.REPLIED.value());
+		purchaseOrderChangeDao.save(change);
+		// 将回复信息推送给采购企业采购员(或管理员)
+		PurchaseOrder order = change.getOrder();
+		if (order.getUserUU() != null) {
+			// Android
+			XingePusher.pushSingleAccountAndroid(order.getUserUU().toString(), "新增采购单回复", "单号:" + order.getCode() + ",供应商:"
+					+ enterpriseDao.findOne(order.getVendUU()).getEnName());
+			// IOS
+			XingePusher.pushSingleAccountIOS(order.getUserUU().toString(), "新增采购单回复" + "单号:" + order.getCode() + ",供应商:"
+					+ enterpriseDao.findOne(order.getVendUU()).getEnName());
+		}
+	}
+
 }

+ 25 - 23
src/main/java/com/uas/platform/b2b/service/impl/PurchaseOrderServiceImpl.java

@@ -52,24 +52,24 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 
 	@Autowired
 	private PurchaseOrderAllItemDao purchaseOrderAllItemDao;
-	
+
 	@Autowired
 	private EnterpriseDao enterpriseDao;
 
 	public void save(List<PurchaseOrderAllItem> orderItems) {
 		purchaseOrderAllItemDao.save(orderItems);
-		//将采购单信息推送通知供应商管理员UU号
+		// 将采购单信息推送通知供应商管理员UU号
 		Set<Long> orderId = new HashSet<Long>();
-		for(PurchaseOrderAllItem orderItem : orderItems) {
-			if(!orderId.contains(orderItem.getOrder().getId())) {
-				//Android
-				XingePusher.pushSingleAccountAndroid(orderItem.getOrder().getVendUserUU().toString(), 
-						"新增一条客户采购单", 
-						"单号:" + orderItem.getOrder().getCode() + ",客户:" + orderItem.getOrder().getEnterprise().getEnName());
-				//IOS
-				XingePusher.pushSingleAccountIOS(orderItem.getOrder().getVendUserUU().toString(), 
-						"新增一条客户采购单-" +  
-						"单号:" + orderItem.getOrder().getCode() + ",客户:" + orderItem.getOrder().getEnterprise().getEnName());
+		for (PurchaseOrderAllItem orderItem : orderItems) {
+			if (!orderId.contains(orderItem.getOrder().getId())) {
+				if (orderItem.getOrder().getVendUserUU() != null) {
+					// Android
+					XingePusher.pushSingleAccountAndroid(orderItem.getOrder().getVendUserUU().toString(), "新增一条客户采购单", "单号:"
+							+ orderItem.getOrder().getCode() + ",客户:" + orderItem.getOrder().getEnterprise().getEnName());
+					// IOS
+					XingePusher.pushSingleAccountIOS(orderItem.getOrder().getVendUserUU().toString(), "新增一条客户采购单-" + "单号:"
+							+ orderItem.getOrder().getCode() + ",客户:" + orderItem.getOrder().getEnterprise().getEnName());
+				}
 				orderId.add(orderItem.getOrder().getId());
 			}
 		}
@@ -134,13 +134,15 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 		PurchaseOrder order = purchaseOrderDao.findOne(item.getOrder().getId());
 		order.setStatus((short) (notReply.size() > 0 ? Status.NOT_REPLY.value() : Status.REPLIED.value()));
 		purchaseOrderDao.save(order);
-		//将恢复信息推送通知采购企业管理员UU
-		//Android
-		XingePusher.pushSingleAccountAndroid(order.getUserUU().toString(), "新增采购单回复", 
-				"单号:" + order.getCode() + ",供应商:" + enterpriseDao.findEnterpriseByUu(order.getVendUU()).getEnName());
-		//IOS
-		XingePusher.pushSingleAccountIOS(order.getUserUU().toString(), "新增采购单回复" + 
-				"单号:" + order.getCode() + ",供应商:" + enterpriseDao.findEnterpriseByUu(order.getVendUU()).getEnName());
+		// 将回复信息推送给采购企业采购员(或管理员)
+		if (order.getUserUU() != null) {
+			// Android
+			XingePusher.pushSingleAccountAndroid(order.getUserUU().toString(), "新增采购单回复", "单号:" + order.getCode() + ",供应商:"
+					+ enterpriseDao.findOne(order.getVendUU()).getEnName());
+			// IOS
+			XingePusher.pushSingleAccountIOS(order.getUserUU().toString(), "新增采购单回复" + "单号:" + order.getCode() + ",供应商:"
+					+ enterpriseDao.findOne(order.getVendUU()).getEnName());
+		}
 	}
 
 	@Override
@@ -187,11 +189,11 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 		return purchaseOrderReplyDao
 				.findByEnUUAndStatus(SystemSession.getUser().getEnterprise().getUu(), (short) Status.NOT_UPLOAD.value());
 	}
-	
+
 	@Override
 	public List<PurchaseOrderReply> findNotSendReply() {
-		return purchaseOrderReplyDao
-				.findByVendUUAndSendStatus(SystemSession.getUser().getEnterprise().getUu(), (short) Status.NOT_UPLOAD.value());
+		return purchaseOrderReplyDao.findByVendUUAndSendStatus(SystemSession.getUser().getEnterprise().getUu(),
+				(short) Status.NOT_UPLOAD.value());
 	}
 
 	@Override
@@ -204,7 +206,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 			}
 		}
 	}
-	
+
 	@Override
 	public void onReplyDownSuccess(String[] idArray) {
 		for (String id : idArray) {