Browse Source

委外加工单结案、反结案

git-svn-id: svn+ssh://10.10.101.21/source/platform/platform-b2b@1609 f3bf4e98-0cf0-11e4-a00c-a99a8b9d557d
suntg 10 years ago
parent
commit
88e639177a

+ 4 - 3
src/main/java/com/uas/platform/b2b/dao/MakeOrderDao.java

@@ -46,10 +46,11 @@ public interface MakeOrderDao extends JpaSpecificationExecutor<MakeOrder>, JpaRe
 	public void updateByReply(@Param("delivery") Date delivery, @Param("remark") String remark, @Param("id") long id);
 	
 	/**
-	 * 根据id查找委加工单
-	 * @param id
+	 * 根据供应商UU号和结案传输状态获取委外加工单
+	 * @param end
+	 * @param endSendStatus
 	 * @return
 	 */
-	public List<MakeOrder> findById(Long id);
+	public List<MakeOrder> findByVendUUAndEndSendStatus(Long vendUU, Short endSendStatus);
 
 }

+ 17 - 1
src/main/java/com/uas/platform/b2b/erp/controller/MakeController.java

@@ -12,6 +12,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 
 import com.uas.platform.b2b.erp.model.Make;
+import com.uas.platform.b2b.erp.model.MakeEnd;
 import com.uas.platform.b2b.erp.model.MakeReply;
 import com.uas.platform.b2b.erp.service.MakeService;
 import com.uas.platform.b2b.erp.support.ErpBufferedLogger;
@@ -84,7 +85,7 @@ public class MakeController {
 	}
 
 	/**
-	 * 平台的单回复传到ERP之后,修改平台里面的回复记录的状态
+	 * 平台的委外加工单回复传到ERP之后,修改平台里面的回复记录的状态
 	 * 
 	 * @return
 	 * @throws UnsupportedEncodingException
@@ -95,5 +96,20 @@ public class MakeController {
 		makeOrderService.onReplySendSuccess(URLDecoder.decode(data, "UTF-8").split(","));
 	}
 
+	/**
+	 * 买家结案、反结案委外加工单,传到平台
+	 * 
+	 * @return
+	 * @throws UnsupportedEncodingException
+	 */
+	@RequestMapping(value = "/end", method = RequestMethod.POST)
+	@ResponseBody
+	public void end(@RequestParam("data") String data) throws UnsupportedEncodingException {
+		String jsonStr = URLDecoder.decode(data, "UTF-8");
+		List<MakeEnd> ends = FlexJsonUtils.fromJsonArray(jsonStr, MakeEnd.class);
+		makeOrderService.saveOrders(makeService.convertMakeEnd(ends));
+		logger.log("委外加工单", "上传结案、反结案委外加工单", ends.size());
+	}
+
 
 }

+ 26 - 0
src/main/java/com/uas/platform/b2b/erp/controller/OutsourceController.java

@@ -12,6 +12,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 
 import com.uas.platform.b2b.erp.model.SaleDown;
+import com.uas.platform.b2b.erp.model.SaleDownDetailEnd;
 import com.uas.platform.b2b.erp.model.SaleReply;
 import com.uas.platform.b2b.erp.service.OutsourceService;
 import com.uas.platform.b2b.erp.support.ErpBufferedLogger;
@@ -103,5 +104,30 @@ public class OutsourceController {
 		makeOrderService.onReplyBackSuccess(URLDecoder.decode(data, "UTF-8").split(","));
 	}
 
+	/**
+	 * 卖家ERP从平台获取结案、反结案客户采购单
+	 * 
+	 * @return
+	 */
+	@RequestMapping(value = "/end", method = RequestMethod.GET)
+	@ResponseBody
+	public List<SaleDownDetailEnd> getSaleEnd() {
+		List<SaleDownDetailEnd> ends = outsourceService.convertMakeOrderEnd(makeOrderService.findNotSendEnd());
+		logger.log("客户委外加工单", "下载结案、反结案的客户委外加工单", ends.size());
+		return ends;
+	}
+
+	/**
+	 * 平台的结案、反结案客户采购单传到供应商ERP之后,修改平台里面的上传状态
+	 * 
+	 * @return
+	 * @throws UnsupportedEncodingException
+	 */
+	@RequestMapping(value = "/end/back", method = RequestMethod.POST)
+	@ResponseBody
+	public void onEndDownSuccess(@RequestParam("data") String data) throws UnsupportedEncodingException {
+		makeOrderService.onEndDownSuccess(URLDecoder.decode(data, "UTF-8").split(","));
+	}
+
 
 }

+ 35 - 0
src/main/java/com/uas/platform/b2b/erp/model/MakeEnd.java

@@ -0,0 +1,35 @@
+package com.uas.platform.b2b.erp.model;
+
+/**
+ * ERP系统的采购订单明细(针对结案、反结案)
+ * 
+ * @author suntg
+ * @date 2015年9月13日15:00:27
+ * 
+ */
+public class MakeEnd {
+
+	private String ma_code;
+	private Long ma_id;
+	private short ma_ended;
+	
+	public String getMa_code() {
+		return ma_code;
+	}
+	public void setMa_code(String ma_code) {
+		this.ma_code = ma_code;
+	}
+	public Long getMa_id() {
+		return ma_id;
+	}
+	public void setMa_id(Long ma_id) {
+		this.ma_id = ma_id;
+	}
+	public short getMa_ended() {
+		return ma_ended;
+	}
+	public void setMa_ended(short ma_ended) {
+		this.ma_ended = ma_ended;
+	}
+
+}

+ 13 - 0
src/main/java/com/uas/platform/b2b/erp/model/SaleDownDetailEnd.java

@@ -1,5 +1,6 @@
 package com.uas.platform.b2b.erp.model;
 
+import com.uas.platform.b2b.model.MakeOrder;
 import com.uas.platform.b2b.model.PurchaseOrderItem;
 
 /**
@@ -71,5 +72,17 @@ public class SaleDownDetailEnd {
 		this.sd_detno = orderItem.getNumber();
 		this.sd_ended = orderItem.getEnd();
 	}
+	
+	/**
+	 * 委外加工单转为卖家ERP的结案、反结案客户采购明细
+	 * @param makeOrder
+	 */
+	public SaleDownDetailEnd(MakeOrder makeOrder) {
+		this.b2b_pd_id = makeOrder.getId();
+		this.cu_uu = makeOrder.getEnUU();
+		this.sd_code = makeOrder.getCode();
+		this.sd_detno = 1;
+		this.sd_ended = makeOrder.getEnd();
+	}
 
 }

+ 8 - 0
src/main/java/com/uas/platform/b2b/erp/service/MakeService.java

@@ -3,6 +3,7 @@ package com.uas.platform.b2b.erp.service;
 import java.util.List;
 
 import com.uas.platform.b2b.erp.model.Make;
+import com.uas.platform.b2b.erp.model.MakeEnd;
 import com.uas.platform.b2b.erp.model.MakeReply;
 import com.uas.platform.b2b.model.MakeOrder;
 import com.uas.platform.b2b.model.MakeOrderReply;
@@ -24,5 +25,12 @@ public interface MakeService {
 	 * @return
 	 */
 	List<MakeReply> convertMakeOrderReply(List<MakeOrderReply> replies);
+	
+	/**
+	 * 转化ERP的结案、反结案委外加工单
+	 * @param ends
+	 * @return
+	 */
+	List<MakeOrder> convertMakeEnd(List<MakeEnd> ends);
 
 }

+ 8 - 0
src/main/java/com/uas/platform/b2b/erp/service/OutsourceService.java

@@ -3,6 +3,7 @@ package com.uas.platform.b2b.erp.service;
 import java.util.List;
 
 import com.uas.platform.b2b.erp.model.SaleDown;
+import com.uas.platform.b2b.erp.model.SaleDownDetailEnd;
 import com.uas.platform.b2b.erp.model.SaleReply;
 import com.uas.platform.b2b.model.MakeOrder;
 import com.uas.platform.b2b.model.MakeOrderReply;
@@ -32,5 +33,12 @@ public interface OutsourceService {
 	 * @return
 	 */
 	List<SaleReply> convertMakeOrderReply(List<MakeOrderReply> replies);
+	
+	/**
+	 * 将结案、反结案的委外加工单转化为卖方ERP的客户委外结案、反结案状态
+	 * @param orders
+	 * @return
+	 */
+	List<SaleDownDetailEnd> convertMakeOrderEnd(List<MakeOrder> orders);
 
 }

+ 20 - 0
src/main/java/com/uas/platform/b2b/erp/service/impl/MakeServiceImpl.java

@@ -14,6 +14,7 @@ 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.Make;
+import com.uas.platform.b2b.erp.model.MakeEnd;
 import com.uas.platform.b2b.erp.model.MakeReply;
 import com.uas.platform.b2b.erp.service.MakeService;
 import com.uas.platform.b2b.model.Enterprise;
@@ -22,6 +23,7 @@ import com.uas.platform.b2b.model.MakeOrderReply;
 import com.uas.platform.b2b.model.Product;
 import com.uas.platform.b2b.model.Vendor;
 import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.core.model.Status;
 
 @Service
 public class MakeServiceImpl implements MakeService{
@@ -103,5 +105,23 @@ public class MakeServiceImpl implements MakeService{
 		return makeReplies;
 	}
 
+	@Override
+	public List<MakeOrder> convertMakeEnd(List<MakeEnd> ends) {
+		List<MakeOrder> makeOrders = new ArrayList<MakeOrder>();
+		long enUU = SystemSession.getUser().getEnterprise().getUu();
+		if( ! CollectionUtils.isEmpty(ends)) {
+			for(MakeEnd end : ends) {
+				List<MakeOrder> existOrders = makeOrderDao.findByEnUUAndCode(enUU, end.getMa_code());
+				if( !CollectionUtils.isEmpty(existOrders)) {
+					MakeOrder makeOrder = existOrders.get(0);
+					makeOrder.setEnd(end.getMa_ended());
+					makeOrder.setEndSendStatus((short) Status.NOT_UPLOAD.value());
+					makeOrders.add(makeOrder);
+				}
+			}
+		}
+		return makeOrders;
+	}
+
 
 }

+ 16 - 2
src/main/java/com/uas/platform/b2b/erp/service/impl/OutsourceServiceImpl.java

@@ -9,6 +9,7 @@ import org.springframework.util.CollectionUtils;
 
 import com.uas.platform.b2b.dao.MakeOrderDao;
 import com.uas.platform.b2b.erp.model.SaleDown;
+import com.uas.platform.b2b.erp.model.SaleDownDetailEnd;
 import com.uas.platform.b2b.erp.model.SaleReply;
 import com.uas.platform.b2b.erp.service.OutsourceService;
 import com.uas.platform.b2b.model.MakeOrder;
@@ -45,11 +46,24 @@ public class OutsourceServiceImpl implements OutsourceService {
 	@Override
 	public List<SaleReply> convertMakeOrderReply(List<MakeOrderReply> replies) {
 		List<SaleReply> saleReplies = new ArrayList<SaleReply>();
-		for (MakeOrderReply reply : replies) {
-			saleReplies.add(new SaleReply(reply));
+		if( ! CollectionUtils.isEmpty(replies)) {
+			for (MakeOrderReply reply : replies) {
+				saleReplies.add(new SaleReply(reply));
+			}
 		}
 		return saleReplies;
 	}
 
+	@Override
+	public List<SaleDownDetailEnd> convertMakeOrderEnd(List<MakeOrder> orders) {
+		List<SaleDownDetailEnd> ends = new ArrayList<SaleDownDetailEnd>();
+		if( ! CollectionUtils.isEmpty(orders)) {
+			for(MakeOrder order : orders) {
+				ends.add(new SaleDownDetailEnd(order));
+			}
+		}
+		return ends;
+	}
+
 
 }

+ 11 - 3
src/main/java/com/uas/platform/b2b/event/MakeOrderSaveEvent.java

@@ -7,6 +7,7 @@ import com.uas.platform.b2b.core.util.SearchKeyUtils;
 import com.uas.platform.b2b.model.MakeOrder;
 import com.uas.platform.b2b.model.MakeOrderIndex;
 import com.uas.platform.b2b.support.XingePusher;
+import com.uas.platform.core.model.Constant;
 
 /**
  * 客户委外加工单保存事件
@@ -55,9 +56,16 @@ public class MakeOrderSaveEvent extends SaveEvent<MakeOrderIndex, MakeOrder> {
 				// 如果不存在,但是平台中企业供应商资料存在供应商联系人UU--->平台中供应商资料中的联系人UU
 				// 否则不推送
 				// Android
-				XingePusher.pushByUserUU(order.getVendUserUU(), "新增一条客户委外加工单", "客户:" + 
-						"单号:" + order.getCode() + ",客户:" + order.getEnterprise().getEnName(), "", 
-						"");
+				if(order.getEnd() == null || !order.getEnd().equals(Constant.YES)) {
+					XingePusher.pushByUserUU(order.getVendUserUU(), "新增一条客户委外加工单", "客户:" + 
+							"单号:" + order.getCode() + ",客户:" + order.getEnterprise().getEnName(), "", 
+							"");
+				} else { // 结案
+					XingePusher.pushByUserUU(order.getVendUserUU(), "客户已结案了委外加工单", "客户:" + 
+							"单号:" + order.getCode() + ",客户:" + order.getEnterprise().getEnName(), "", 
+							"");
+				}
+					
 			}
 		}
 	}

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

@@ -225,10 +225,16 @@ public class MakeOrder implements Serializable {
 	private Short sendStatus;
 	
 	/**
-	 * 1表示该采购单的明细至少有一条结案的情况
+	 * 1表示该采购单已结案
 	 */
 	@Column(name = "ma_end")
 	private Short end;
+	
+	/**
+	 * 结案、反结案状态传输到卖方ERP的传输状态
+	 */
+	@Column(name = "ma_endsendstatus")
+	private Short endSendStatus;
 
 	/**
 	 * 回复数量
@@ -564,6 +570,14 @@ public class MakeOrder implements Serializable {
 	public void setPrint(Short print) {
 		this.print = print;
 	}
+
+	public Short getEndSendStatus() {
+		return endSendStatus;
+	}
+
+	public void setEndSendStatus(Short endSendStatus) {
+		this.endSendStatus = endSendStatus;
+	}
 	
 	
 	

+ 13 - 1
src/main/java/com/uas/platform/b2b/service/MakeOrderService.java

@@ -24,7 +24,7 @@ public interface MakeOrderService {
 	public void saveItems(List<MakeOrderItem> items);
 
 	/**
-	 * 批量保存、修改委外加工单明细
+	 * 批量保存、修改委外加工单
 	 * 
 	 * @param items
 	 * @return
@@ -168,4 +168,16 @@ public interface MakeOrderService {
 	 */
 	public void print(Long id);
 	
+	/**
+	 * 获取未传输的结案、反结案单据
+	 * @return
+	 */
+	public List<MakeOrder> findNotSendEnd();
+	
+	/**
+	 * 结案、反结案委外加工单传输到卖方ERP成功之后,修改加工单的结案传输状态
+	 * @param ids
+	 */
+	public void onEndDownSuccess(String[] ids);
+	
 }

+ 18 - 5
src/main/java/com/uas/platform/b2b/service/impl/MakeOrderServiceImpl.java

@@ -39,7 +39,6 @@ import com.uas.platform.b2b.service.MakeOrderService;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.b2b.support.XingePusher;
 import com.uas.platform.core.exception.IllegalOperatorException;
-import com.uas.platform.core.exception.NotFoundException;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.Status;
 import com.uas.platform.core.persistence.criteria.PredicateUtils;
@@ -220,10 +219,7 @@ public class MakeOrderServiceImpl implements MakeOrderService {
 
 	@Override
 	public MakeOrder findById(Long id) {
-		List<MakeOrder> makeOrders = makeOrderDao.findById(id);
-		if (makeOrders.size() == 0)
-			throw new NotFoundException();
-		return makeOrders.get(0);
+		return makeOrderDao.findOne(id);
 	}
 
 	@Override
@@ -333,4 +329,21 @@ public class MakeOrderServiceImpl implements MakeOrderService {
 		makeOrderDao.save(order);
 	}
 
+	@Override
+	public List<MakeOrder> findNotSendEnd() {
+		long enUU = SystemSession.getUser().getEnterprise().getUu();
+		return makeOrderDao.findByVendUUAndEndSendStatus(enUU, (short) Status.NOT_UPLOAD.value());
+	}
+
+	@Override
+	public void onEndDownSuccess(String[] ids) {
+		for(String id : ids) {
+			MakeOrder order = makeOrderDao.findOne(Long.parseLong(id));
+			if(order != null) {
+				order.setEndSendStatus((short) Status.DOWNLOADED.value());
+				makeOrderDao.save(order);
+			}
+		}
+	}
+
 }