Browse Source

送样认定单

git-svn-id: svn+ssh://10.10.101.21/source/platform/platform-b2b@675 f3bf4e98-0cf0-11e4-a00c-a99a8b9d557d
suntg 11 years ago
parent
commit
8e70ca2cf2

+ 17 - 0
src/main/java/com/uas/platform/b2b/dao/PurchaseProofingApprovalDao.java

@@ -0,0 +1,17 @@
+package com.uas.platform.b2b.dao;
+
+import java.util.List;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+import com.uas.platform.b2b.model.PurchaseProofingApproval;
+
+@Repository
+public interface PurchaseProofingApprovalDao extends JpaSpecificationExecutor<PurchaseProofingApproval>, JpaRepository<PurchaseProofingApproval, Long> {
+
+	List<PurchaseProofingApproval> findByVendUUAndSendStatus(Long vendUU, Short sendStatus);
+	
+	List<PurchaseProofingApproval> findByVendUUAndSscode(Long vendUU, String sscode);
+}

+ 18 - 0
src/main/java/com/uas/platform/b2b/dao/PurchaseProofingSendDao.java

@@ -1,5 +1,7 @@
 package com.uas.platform.b2b.dao;
 
+import java.util.List;
+
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.stereotype.Repository;
@@ -9,5 +11,21 @@ import com.uas.platform.b2b.model.PurchaseProofingSend;
 @Repository
 public interface PurchaseProofingSendDao extends JpaSpecificationExecutor<PurchaseProofingSend>, JpaRepository<PurchaseProofingSend, Long> {
 
+	/**
+	 * 
+	 * @param backStatus
+	 * @param vendUU
+	 * @return
+	 */
+	public List<PurchaseProofingSend> findByBackStatusAndProofingItemVendUU(Short backStatus, Long vendUU);
+	
+	/**
+	 * 
+	 * @param sendStatus
+	 * @param enUU
+	 * @return
+	 */
+	public List<PurchaseProofingSend> findBySendStatusAndProofingItemProofingEnUU(Short sendStatus, Long enUU);
 	
+	public List<PurchaseProofingSend> findByProofingItemVendUUAndCode(Long vendUU, String code);
 }

+ 49 - 2
src/main/java/com/uas/platform/b2b/erp/controller/ProductSampleController.java

@@ -13,8 +13,11 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 
 import com.uas.platform.b2b.erp.model.ProductSample;
+import com.uas.platform.b2b.erp.model.ProductSampleApproval;
+import com.uas.platform.b2b.erp.model.SaleSampleSend;
 import com.uas.platform.b2b.erp.service.InquiryService;
 import com.uas.platform.b2b.erp.service.PurchaseSampleService;
+import com.uas.platform.b2b.erp.service.SaleSampleDownService;
 import com.uas.platform.b2b.model.Attach;
 import com.uas.platform.b2b.model.FileUpload;
 import com.uas.platform.b2b.service.AttachService;
@@ -41,13 +44,18 @@ public class ProductSampleController {
 
 	@Autowired
 	private AttachService attachService;
+	
 	@Autowired
 	private PurchaseSampleService purchaseSampleService;
+	
 	@Autowired
 	private PurchaseProofingService purchaseProofingService;
+	
+	@Autowired
+	private SaleSampleDownService saleSampleDownService;
 
 	/**
-	 * 将买家ERP的采购询价写到平台
+	 * 将买家ERP的打样申请写到平台
 	 * 
 	 * @param data
 	 * @return
@@ -62,7 +70,7 @@ public class ProductSampleController {
 	}
 
 	/**
-	 * 买家ERP的附件
+	 * 买家ERP的打样申请附件
 	 * 
 	 * @return
 	 */
@@ -74,5 +82,44 @@ public class ProductSampleController {
 		List<Attach> attachs = attachService.uploadZipAndSave(uploadItem, "purchaseProofing", "客户打样申请单附件", fileList);
 		purchaseProofingService.saveAttach(attachs);
 	}
+	
+
+	/**
+	 * 卖家ERP从平台获取在平台送样的送样单
+	 * 
+	 * @return
+	 */
+	@RequestMapping(value = "/sampleSend", method = RequestMethod.GET)
+	@ResponseBody
+	public List<SaleSampleSend> getSampleSend() {
+		return saleSampleDownService.convertSaleSampleSends(purchaseProofingService.findNotSendSampleSend());
+	}
+
+	/**
+	 * 平台的送样单传到供应商ERP之后,修改平台里面的送样单的上传状态
+	 * 
+	 * @return
+	 * @throws UnsupportedEncodingException
+	 */
+	@RequestMapping(value = "/sampleSend/back", method = RequestMethod.POST)
+	@ResponseBody
+	public void onSampleSendDownSuccess(@RequestParam("data") String data) throws UnsupportedEncodingException {
+		purchaseProofingService.sendSampleSendSuccess(URLDecoder.decode(data, "UTF-8").split(","));
+	}
+	
+	/**
+	 * 将买家ERP的打样申请写到平台
+	 * 
+	 * @param data
+	 * @return
+	 * @throws UnsupportedEncodingException
+	 */
+	@RequestMapping(value = "/approval", method = RequestMethod.POST)
+	@ResponseBody
+	public void saveProductSampleApprovals(@RequestParam("data") String data) throws UnsupportedEncodingException {
+		String jsonStr = URLDecoder.decode(data, "UTF-8");
+		List<ProductSampleApproval> sampleApprovals = FlexJsonUtils.fromJsonArray(jsonStr, ProductSampleApproval.class);
+		purchaseProofingService.saveSampleApproval(purchaseSampleService.convertApproval(sampleApprovals));
+	}
 
 }

+ 66 - 1
src/main/java/com/uas/platform/b2b/erp/controller/SaleSampleDownController.java

@@ -11,9 +11,12 @@ 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.SaleSampleApproval;
 import com.uas.platform.b2b.erp.model.SaleSampleDown;
+import com.uas.platform.b2b.erp.model.SaleSampleSend;
 import com.uas.platform.b2b.erp.service.SaleSampleDownService;
 import com.uas.platform.b2b.service.PurchaseProofingService;
+import com.uas.platform.core.util.serializer.FlexJsonUtils;
 
 /**
  * 对卖家ERP的数据接口<br>
@@ -51,8 +54,70 @@ public class SaleSampleDownController {
 	 */
 	@RequestMapping(method = RequestMethod.POST)
 	@ResponseBody
-	public void onSaleNotifyDownSuccess(@RequestParam("data") String data) throws UnsupportedEncodingException {
+	public void onSampleDownSuccess(@RequestParam("data") String data) throws UnsupportedEncodingException {
 		purchaseProofingService.uploadProofingSuccess(URLDecoder.decode(data, "UTF-8").split(","));
 	}
+	
+	/**
+	 * 将卖家ERP的送样单写到平台
+	 * 
+	 * @param data
+	 * @return
+	 * @throws UnsupportedEncodingException
+	 */
+	@RequestMapping(value = "/sampleSend", method = RequestMethod.POST)
+	@ResponseBody
+	public void saveSampleSend(@RequestParam("data") String data) throws UnsupportedEncodingException {
+		String jsonStr = URLDecoder.decode(data, "UTF-8");
+		List<SaleSampleSend> sampleSends = FlexJsonUtils.fromJsonArray(jsonStr, SaleSampleSend.class);
+		purchaseProofingService.send(saleSampleDownService.convertProofingSends(sampleSends));
+	}
+
+	/**
+	 * 卖家ERP从平台获取在平台送样的送样单
+	 * 
+	 * @return
+	 */
+	@RequestMapping(value = "/sampleSend", method = RequestMethod.GET)
+	@ResponseBody
+	public List<SaleSampleSend> getSampleSend() {
+		return saleSampleDownService.convertSaleSampleSends(purchaseProofingService.findNotBackSampleSend());
+	}
+
+	/**
+	 * 平台的送样单传到供应商ERP之后,修改平台里面的送样单的上传状态
+	 * 
+	 * @return
+	 * @throws UnsupportedEncodingException
+	 */
+	@RequestMapping(value = "/sampleSend/back", method = RequestMethod.POST)
+	@ResponseBody
+	public void onSampleSendDownSuccess(@RequestParam("data") String data) throws UnsupportedEncodingException {
+		purchaseProofingService.backSampleSendSuccess(URLDecoder.decode(data, "UTF-8").split(","));
+	}
+	
+	/**
+	 * 卖家ERP从平台获取在平台的送样认定单
+	 * 
+	 * @return
+	 */
+	@RequestMapping(value = "/sampleApproval", method = RequestMethod.GET)
+	@ResponseBody
+	public List<SaleSampleApproval> getSampleApproval() {
+		return saleSampleDownService.covertSampleApprovals(purchaseProofingService.findNotUploadApprovals());
+	}
+	
+
+	/**
+	 * 平台的送样认定单传到供应商ERP之后,修改平台里面的送样认定单的上传状态
+	 * 
+	 * @return
+	 * @throws UnsupportedEncodingException
+	 */
+	@RequestMapping(value = "/sampleApproval", method = RequestMethod.POST)
+	@ResponseBody
+	public void onSampleApprovalDownSuccess(@RequestParam("data") String data) throws UnsupportedEncodingException {
+		purchaseProofingService.uploadApprovalsSuccess(URLDecoder.decode(data, "UTF-8").split(","));
+	}
 
 }

+ 345 - 0
src/main/java/com/uas/platform/b2b/erp/model/ProductSampleApproval.java

@@ -0,0 +1,345 @@
+package com.uas.platform.b2b.erp.model;
+
+import java.util.Date;
+
+import com.uas.platform.b2b.model.PurchaseProofingApproval;
+import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.core.model.Status;
+
+/**
+ * 买家ERP系统的采购询价单
+ * 
+ * @author yingp
+ * 
+ */
+public class ProductSampleApproval{
+
+	private Long pa_id;
+	private String pa_code;
+	private String pa_pscode;
+	private String pa_sscode;
+	private Long pa_venduu;
+	private String pa_prodcode;
+	private String pr_detail;
+	private String pr_spec;
+	private String pr_unit;
+	private Double pa_sampleqty;
+	private Double pa_height;
+	private String pa_material;
+	private String pa_materialquality;
+	private String pa_address;
+	private String pa_addressmark;
+	private String pa_recordor;
+	private Date pa_inDate;
+	private String pa_remark;
+	private String pa_attach;
+	private Date pa_prdtime;
+	private Double pa_prdypsl;
+	private String pa_prdresult;
+	private String pa_prdadvice;
+	private String pa_prdremark;
+	private String pa_prdattach;
+	private Date pa_padtime;
+	private Double pa_padypsl;
+	private String pa_padresult;
+	private String pa_padadvice;
+	private String pa_padremark;
+	private String pa_padattach;
+	private Date pa_ppdtime;
+	private Double pa_ppdypsl;
+	private String pa_ppdresult;
+	private String pa_ppdadvice;
+	private String pa_ppdremark;
+	private String pa_ppdattach;
+	private String pa_finalresult;
+	private String pa_finalresultremark;
+ 
+	public Long getPa_id() {
+		return pa_id;
+	}
+	public void setPa_id(Long pa_id) {
+		this.pa_id = pa_id;
+	}
+	public String getPa_code() {
+		return pa_code;
+	}
+	public void setPa_code(String pa_code) {
+		this.pa_code = pa_code;
+	}
+	public String getPa_pscode() {
+		return pa_pscode;
+	}
+	public void setPa_pscode(String pa_pscode) {
+		this.pa_pscode = pa_pscode;
+	}
+	public String getPa_sscode() {
+		return pa_sscode;
+	}
+	public void setPa_sscode(String pa_sscode) {
+		this.pa_sscode = pa_sscode;
+	}
+	public Long getPa_venduu() {
+		return pa_venduu;
+	}
+	public void setPa_venduu(Long pa_venduu) {
+		this.pa_venduu = pa_venduu;
+	}
+	public String getPa_prodcode() {
+		return pa_prodcode;
+	}
+	public void setPa_prodcode(String pa_prodcode) {
+		this.pa_prodcode = pa_prodcode;
+	}
+	public String getPr_detail() {
+		return pr_detail;
+	}
+	public void setPr_detail(String pr_detail) {
+		this.pr_detail = pr_detail;
+	}
+	public String getPr_spec() {
+		return pr_spec;
+	}
+	public void setPr_spec(String pr_spec) {
+		this.pr_spec = pr_spec;
+	}
+	public String getPr_unit() {
+		return pr_unit;
+	}
+	public void setPr_unit(String pr_unit) {
+		this.pr_unit = pr_unit;
+	}
+	public Double getPa_sampleqty() {
+		return pa_sampleqty;
+	}
+	public void setPa_sampleqty(Double pa_sampleqty) {
+		this.pa_sampleqty = pa_sampleqty;
+	}
+	public Double getPa_height() {
+		return pa_height;
+	}
+	public void setPa_height(Double pa_height) {
+		this.pa_height = pa_height;
+	}
+	public String getPa_material() {
+		return pa_material;
+	}
+	public void setPa_material(String pa_material) {
+		this.pa_material = pa_material;
+	}
+	public String getPa_materialquality() {
+		return pa_materialquality;
+	}
+	public void setPa_materialquality(String pa_materialquality) {
+		this.pa_materialquality = pa_materialquality;
+	}
+	public String getPa_address() {
+		return pa_address;
+	}
+	public void setPa_address(String pa_address) {
+		this.pa_address = pa_address;
+	}
+	public String getPa_addressmark() {
+		return pa_addressmark;
+	}
+	public void setPa_addressmark(String pa_addressmark) {
+		this.pa_addressmark = pa_addressmark;
+	}
+	public String getPa_recordor() {
+		return pa_recordor;
+	}
+	public void setPa_recordor(String pa_recordor) {
+		this.pa_recordor = pa_recordor;
+	}
+	public Date getPa_inDate() {
+		return pa_inDate;
+	}
+	public void setPa_inDate(Date pa_inDate) {
+		this.pa_inDate = pa_inDate;
+	}
+	public String getPa_remark() {
+		return pa_remark;
+	}
+	public void setPa_remark(String pa_remark) {
+		this.pa_remark = pa_remark;
+	}
+	public String getPa_attach() {
+		return pa_attach;
+	}
+	public void setPa_attach(String pa_attach) {
+		this.pa_attach = pa_attach;
+	}
+	public Date getPa_prdtime() {
+		return pa_prdtime;
+	}
+	public void setPa_prdtime(Date pa_prdtime) {
+		this.pa_prdtime = pa_prdtime;
+	}
+	public Double getPa_prdypsl() {
+		return pa_prdypsl;
+	}
+	public void setPa_prdypsl(Double pa_prdypsl) {
+		this.pa_prdypsl = pa_prdypsl;
+	}
+	public String getPa_prdresult() {
+		return pa_prdresult;
+	}
+	public void setPa_prdresult(String pa_prdresult) {
+		this.pa_prdresult = pa_prdresult;
+	}
+	public String getPa_prdadvice() {
+		return pa_prdadvice;
+	}
+	public void setPa_prdadvice(String pa_prdadvice) {
+		this.pa_prdadvice = pa_prdadvice;
+	}
+	public String getPa_prdremark() {
+		return pa_prdremark;
+	}
+	public void setPa_prdremark(String pa_prdremark) {
+		this.pa_prdremark = pa_prdremark;
+	}
+	public String getPa_prdattach() {
+		return pa_prdattach;
+	}
+	public void setPa_prdattach(String pa_prdattach) {
+		this.pa_prdattach = pa_prdattach;
+	}
+	public Date getPa_padtime() {
+		return pa_padtime;
+	}
+	public void setPa_padtime(Date pa_padtime) {
+		this.pa_padtime = pa_padtime;
+	}
+	public Double getPa_padypsl() {
+		return pa_padypsl;
+	}
+	public void setPa_padypsl(Double pa_padypsl) {
+		this.pa_padypsl = pa_padypsl;
+	}
+	public String getPa_padresult() {
+		return pa_padresult;
+	}
+	public void setPa_padresult(String pa_padresult) {
+		this.pa_padresult = pa_padresult;
+	}
+	public String getPa_padadvice() {
+		return pa_padadvice;
+	}
+	public void setPa_padadvice(String pa_padadvice) {
+		this.pa_padadvice = pa_padadvice;
+	}
+	public String getPa_padremark() {
+		return pa_padremark;
+	}
+	public void setPa_padremark(String pa_padremark) {
+		this.pa_padremark = pa_padremark;
+	}
+	public String getPa_padattach() {
+		return pa_padattach;
+	}
+	public void setPa_padattach(String pa_padattach) {
+		this.pa_padattach = pa_padattach;
+	}
+	public Date getPa_ppdtime() {
+		return pa_ppdtime;
+	}
+	public void setPa_ppdtime(Date pa_ppdtime) {
+		this.pa_ppdtime = pa_ppdtime;
+	}
+	public Double getPa_ppdypsl() {
+		return pa_ppdypsl;
+	}
+	public void setPa_ppdypsl(Double pa_ppdypsl) {
+		this.pa_ppdypsl = pa_ppdypsl;
+	}
+	public String getPa_ppdresult() {
+		return pa_ppdresult;
+	}
+	public void setPa_ppdresult(String pa_ppdresult) {
+		this.pa_ppdresult = pa_ppdresult;
+	}
+	public String getPa_ppdadvice() {
+		return pa_ppdadvice;
+	}
+	public void setPa_ppdadvice(String pa_ppdadvice) {
+		this.pa_ppdadvice = pa_ppdadvice;
+	}
+	public String getPa_ppdremark() {
+		return pa_ppdremark;
+	}
+	public void setPa_ppdremark(String pa_ppdremark) {
+		this.pa_ppdremark = pa_ppdremark;
+	}
+	public String getPa_ppdattach() {
+		return pa_ppdattach;
+	}
+	public void setPa_ppdattach(String pa_ppdattach) {
+		this.pa_ppdattach = pa_ppdattach;
+	}
+	public String getPa_finalresult() {
+		return pa_finalresult;
+	}
+	public void setPa_finalresult(String pa_finalresult) {
+		this.pa_finalresult = pa_finalresult;
+	}
+	public String getPa_finalresultremark() {
+		return pa_finalresultremark;
+	}
+	public void setPa_finalresultremark(String pa_finalresultremark) {
+		this.pa_finalresultremark = pa_finalresultremark;
+	}
+	
+	public PurchaseProofingApproval convert() {
+		PurchaseProofingApproval approval = new PurchaseProofingApproval();
+		approval.setAddress(pa_address);
+		approval.setAddressmark(pa_addressmark);
+		approval.setCode(pa_code);
+		approval.setEnterprise(SystemSession.getUser().getEnterprise());
+		approval.setEnUU(SystemSession.getUser().getEnterprise().getUu());
+		approval.setFinalresult(pa_finalresult);
+		approval.setFinalresultremark(pa_finalresultremark);
+		approval.setHeight(pa_height);
+		approval.setInDate(pa_inDate);
+		approval.setMaterial(pa_material);
+		approval.setMaterialquality(pa_materialquality);
+		approval.setPadadvice(pa_padadvice);
+		approval.setPadremark(pa_padremark);
+		approval.setPadresult(pa_padresult);
+		approval.setPadtime(pa_padtime);
+		approval.setPadypsl(pa_padypsl);
+		approval.setPpdadvice(pa_ppdadvice);
+		approval.setPpdremark(pa_ppdremark);
+		approval.setPpdresult(pa_ppdresult);
+		approval.setPpdtime(pa_ppdtime);
+		approval.setPpdypsl(pa_ppdypsl);
+		approval.setPrdadvice(pa_prdadvice);
+		approval.setPrdremark(pa_prdremark);
+		approval.setPrdresult(pa_prdresult);
+		approval.setPrdtime(pa_prdtime);
+		approval.setPrdypsl(pa_prdypsl);
+		approval.setProdcode(pa_prodcode);
+		approval.setProdDetail(pr_detail);
+		approval.setProdSpec(pr_spec);
+		approval.setProdUnit(pr_unit);
+		approval.setPscode(pa_pscode);
+		approval.setRecordor(pa_recordor);
+		approval.setRemark(pa_remark);
+		approval.setSampleqty(pa_sampleqty);
+		approval.setSendStatus((short) Status.NOT_UPLOAD.value());
+		approval.setSscode(pa_sscode);
+		approval.setVendUU(pa_venduu);
+		return approval;
+	}
+
+	
+	
+	
+	
+	
+	
+	
+	
+	
+
+
+}

+ 330 - 0
src/main/java/com/uas/platform/b2b/erp/model/SaleSampleApproval.java

@@ -0,0 +1,330 @@
+package com.uas.platform.b2b.erp.model;
+
+import java.util.Date;
+
+import com.uas.platform.b2b.model.PurchaseProofingApproval;
+
+/**
+ * 卖家ERP系统的客户样品认定单
+ * 
+ * @author suntg
+ * 
+ */
+public class SaleSampleApproval{
+
+	private Long pa_b2bid;
+	private String pa_code;
+	private String pa_pscode;
+	private String pa_sscode;
+	private Long pa_custuu;
+	private String pa_custprodcode;
+	private String pr_custproddetail;
+	private String pr_custprodspec;
+	private String pr_custprodunit;
+	private Double pa_sampleqty;
+	private Double pa_height;
+	private String pa_material;
+	private String pa_materialquality;
+	private String pa_address;
+	private String pa_addressmark;
+	private String pa_recordor;
+	private Date pa_inDate;
+	private String pa_remark;
+	private String pa_attach;
+	private Date pa_prdtime;
+	private Double pa_prdypsl;
+	private String pa_prdresult;
+	private String pa_prdadvice;
+	private String pa_prdremark;
+	private String pa_prdattach;
+	private Date pa_padtime;
+	private Double pa_padypsl;
+	private String pa_padresult;
+	private String pa_padadvice;
+	private String pa_padremark;
+	private String pa_padattach;
+	private Date pa_ppdtime;
+	private Double pa_ppdypsl;
+	private String pa_ppdresult;
+	private String pa_ppdadvice;
+	private String pa_ppdremark;
+	private String pa_ppdattach;
+	private String pa_finalresult;
+	private String pa_finalresultremark;
+	public String getPa_code() {
+		return pa_code;
+	}
+	public void setPa_code(String pa_code) {
+		this.pa_code = pa_code;
+	}
+	public String getPa_pscode() {
+		return pa_pscode;
+	}
+	public void setPa_pscode(String pa_pscode) {
+		this.pa_pscode = pa_pscode;
+	}
+	public String getPa_sscode() {
+		return pa_sscode;
+	}
+	public void setPa_sscode(String pa_sscode) {
+		this.pa_sscode = pa_sscode;
+	}
+	public Double getPa_sampleqty() {
+		return pa_sampleqty;
+	}
+	public void setPa_sampleqty(Double pa_sampleqty) {
+		this.pa_sampleqty = pa_sampleqty;
+	}
+	public Double getPa_height() {
+		return pa_height;
+	}
+	public void setPa_height(Double pa_height) {
+		this.pa_height = pa_height;
+	}
+	public String getPa_material() {
+		return pa_material;
+	}
+	public void setPa_material(String pa_material) {
+		this.pa_material = pa_material;
+	}
+	public String getPa_materialquality() {
+		return pa_materialquality;
+	}
+	public void setPa_materialquality(String pa_materialquality) {
+		this.pa_materialquality = pa_materialquality;
+	}
+	public String getPa_address() {
+		return pa_address;
+	}
+	public void setPa_address(String pa_address) {
+		this.pa_address = pa_address;
+	}
+	public String getPa_addressmark() {
+		return pa_addressmark;
+	}
+	public void setPa_addressmark(String pa_addressmark) {
+		this.pa_addressmark = pa_addressmark;
+	}
+	public String getPa_recordor() {
+		return pa_recordor;
+	}
+	public void setPa_recordor(String pa_recordor) {
+		this.pa_recordor = pa_recordor;
+	}
+	public Date getPa_inDate() {
+		return pa_inDate;
+	}
+	public void setPa_inDate(Date pa_inDate) {
+		this.pa_inDate = pa_inDate;
+	}
+	public String getPa_remark() {
+		return pa_remark;
+	}
+	public void setPa_remark(String pa_remark) {
+		this.pa_remark = pa_remark;
+	}
+	public String getPa_attach() {
+		return pa_attach;
+	}
+	public void setPa_attach(String pa_attach) {
+		this.pa_attach = pa_attach;
+	}
+	public Date getPa_prdtime() {
+		return pa_prdtime;
+	}
+	public void setPa_prdtime(Date pa_prdtime) {
+		this.pa_prdtime = pa_prdtime;
+	}
+	public Double getPa_prdypsl() {
+		return pa_prdypsl;
+	}
+	public void setPa_prdypsl(Double pa_prdypsl) {
+		this.pa_prdypsl = pa_prdypsl;
+	}
+	public String getPa_prdresult() {
+		return pa_prdresult;
+	}
+	public void setPa_prdresult(String pa_prdresult) {
+		this.pa_prdresult = pa_prdresult;
+	}
+	public String getPa_prdadvice() {
+		return pa_prdadvice;
+	}
+	public void setPa_prdadvice(String pa_prdadvice) {
+		this.pa_prdadvice = pa_prdadvice;
+	}
+	public String getPa_prdremark() {
+		return pa_prdremark;
+	}
+	public void setPa_prdremark(String pa_prdremark) {
+		this.pa_prdremark = pa_prdremark;
+	}
+	public String getPa_prdattach() {
+		return pa_prdattach;
+	}
+	public void setPa_prdattach(String pa_prdattach) {
+		this.pa_prdattach = pa_prdattach;
+	}
+	public Date getPa_padtime() {
+		return pa_padtime;
+	}
+	public void setPa_padtime(Date pa_padtime) {
+		this.pa_padtime = pa_padtime;
+	}
+	public Double getPa_padypsl() {
+		return pa_padypsl;
+	}
+	public void setPa_padypsl(Double pa_padypsl) {
+		this.pa_padypsl = pa_padypsl;
+	}
+	public String getPa_padresult() {
+		return pa_padresult;
+	}
+	public void setPa_padresult(String pa_padresult) {
+		this.pa_padresult = pa_padresult;
+	}
+	public String getPa_padadvice() {
+		return pa_padadvice;
+	}
+	public void setPa_padadvice(String pa_padadvice) {
+		this.pa_padadvice = pa_padadvice;
+	}
+	public String getPa_padremark() {
+		return pa_padremark;
+	}
+	public void setPa_padremark(String pa_padremark) {
+		this.pa_padremark = pa_padremark;
+	}
+	public String getPa_padattach() {
+		return pa_padattach;
+	}
+	public void setPa_padattach(String pa_padattach) {
+		this.pa_padattach = pa_padattach;
+	}
+	public Date getPa_ppdtime() {
+		return pa_ppdtime;
+	}
+	public void setPa_ppdtime(Date pa_ppdtime) {
+		this.pa_ppdtime = pa_ppdtime;
+	}
+	public Double getPa_ppdypsl() {
+		return pa_ppdypsl;
+	}
+	public void setPa_ppdypsl(Double pa_ppdypsl) {
+		this.pa_ppdypsl = pa_ppdypsl;
+	}
+	public String getPa_ppdresult() {
+		return pa_ppdresult;
+	}
+	public void setPa_ppdresult(String pa_ppdresult) {
+		this.pa_ppdresult = pa_ppdresult;
+	}
+	public String getPa_ppdadvice() {
+		return pa_ppdadvice;
+	}
+	public void setPa_ppdadvice(String pa_ppdadvice) {
+		this.pa_ppdadvice = pa_ppdadvice;
+	}
+	public String getPa_ppdremark() {
+		return pa_ppdremark;
+	}
+	public void setPa_ppdremark(String pa_ppdremark) {
+		this.pa_ppdremark = pa_ppdremark;
+	}
+	public String getPa_ppdattach() {
+		return pa_ppdattach;
+	}
+	public void setPa_ppdattach(String pa_ppdattach) {
+		this.pa_ppdattach = pa_ppdattach;
+	}
+	public String getPa_finalresult() {
+		return pa_finalresult;
+	}
+	public void setPa_finalresult(String pa_finalresult) {
+		this.pa_finalresult = pa_finalresult;
+	}
+	public String getPa_finalresultremark() {
+		return pa_finalresultremark;
+	}
+	public void setPa_finalresultremark(String pa_finalresultremark) {
+		this.pa_finalresultremark = pa_finalresultremark;
+	}
+	public Long getPa_b2bid() {
+		return pa_b2bid;
+	}
+	public void setPa_b2bid(Long pa_b2bid) {
+		this.pa_b2bid = pa_b2bid;
+	}
+	public Long getPa_custuu() {
+		return pa_custuu;
+	}
+	public void setPa_custuu(Long pa_custuu) {
+		this.pa_custuu = pa_custuu;
+	}
+	public String getPa_custprodcode() {
+		return pa_custprodcode;
+	}
+	public void setPa_custprodcode(String pa_custprodcode) {
+		this.pa_custprodcode = pa_custprodcode;
+	}
+	public String getPr_custproddetail() {
+		return pr_custproddetail;
+	}
+	public void setPr_custproddetail(String pr_custproddetail) {
+		this.pr_custproddetail = pr_custproddetail;
+	}
+	public String getPr_custprodspec() {
+		return pr_custprodspec;
+	}
+	public void setPr_custprodspec(String pr_custprodspec) {
+		this.pr_custprodspec = pr_custprodspec;
+	}
+	public String getPr_custprodunit() {
+		return pr_custprodunit;
+	}
+	public void setPr_custprodunit(String pr_custprodunit) {
+		this.pr_custprodunit = pr_custprodunit;
+	}
+	
+	public SaleSampleApproval(PurchaseProofingApproval approval) {
+		this.pa_address = approval.getAddress();
+		this.pa_addressmark = approval.getAddressmark();
+		this.pa_attach = approval.getAttach();
+		this.pa_b2bid = approval.getId();
+		this.pa_code = approval.getCode();
+		this.pa_custprodcode = approval.getProdcode();
+		this.pa_custuu = approval.getEnUU();
+		this.pa_finalresult = approval.getFinalresult();
+		this.pa_finalresultremark = approval.getFinalresultremark();
+		this.pa_height = approval.getHeight();
+		this.pa_inDate = approval.getInDate();
+		this.pa_material = approval.getMaterial();
+		this.pa_materialquality = approval.getMaterialquality();
+		this.pa_padadvice = approval.getPadadvice();
+		this.pa_padattach = approval.getPadattach();
+		this.pa_padremark = approval.getPpdremark();
+		this.pa_padresult = approval.getPpdresult();
+		this.pa_padtime = approval.getPadtime();
+		this.pa_padypsl = approval.getPadypsl();
+		this.pa_ppdadvice = approval.getPpdadvice();
+		this.pa_ppdattach = approval.getPpdattach();
+		this.pa_ppdremark = approval.getPpdremark();
+		this.pa_ppdresult = approval.getPpdresult();
+		this.pa_ppdtime = approval.getPpdtime();
+		this.pa_ppdypsl = approval.getPpdypsl();
+		this.pa_prdadvice = approval.getPrdadvice();
+		this.pa_prdattach = approval.getPrdattach();
+		this.pa_prdremark = approval.getPrdremark();
+		this.pa_prdresult = approval.getPrdresult();
+		this.pa_prdtime = approval.getPrdtime();
+		this.pa_prdypsl = approval.getPrdypsl();
+		this.pa_pscode = approval.getPscode();
+		this.pa_recordor = approval.getRecordor();
+		this.pa_remark = approval.getRemark();
+		this.pa_sampleqty = approval.getSampleqty();
+		this.pa_sscode = approval.getSscode();
+	}
+
+
+
+}

+ 273 - 0
src/main/java/com/uas/platform/b2b/erp/model/SaleSampleSend.java

@@ -0,0 +1,273 @@
+package com.uas.platform.b2b.erp.model;
+
+import java.util.Date;
+
+import com.uas.platform.b2b.model.PurchaseProofingItem;
+import com.uas.platform.b2b.model.PurchaseProofingSend;
+import com.uas.platform.core.model.Status;
+
+/**
+ * 卖家ERP系统的客户送货提醒单
+ * 
+ * @author yingp
+ * 
+ */
+public class SaleSampleSend {
+
+	private Long b2b_ss_id;//送样单b2b Id
+	private Long b2b_ps_id;//客户送样申请b2b Id
+	private String ss_code;
+	private Double ss_sendnum;
+	private Double ss_ratio;
+	private Double ss_height;
+	private String ss_material;
+	private String ss_materialquality;
+	private String ss_address;
+	private String ss_addressmark;
+	private Date ss_indate;
+	private Double ss_puprice;
+	private Double ss_spare;
+	private String ss_brand;
+	private Double ss_minqty;
+	private Double ss_minbuyqty;
+	private Double ss_delivery;
+	private String ss_attach;
+	private String ss_recorder;
+	private String ss_pscode;
+	private Short ss_pddetno;
+	private Long ss_useruu;
+
+	public Long getSs_useruu() {
+		return ss_useruu;
+	}
+	public void setSs_useruu(Long ss_useruu) {
+		this.ss_useruu = ss_useruu;
+	}
+	public String getSs_pscode() {
+		return ss_pscode;
+	}
+
+	public void setSs_pscode(String ss_pscode) {
+		this.ss_pscode = ss_pscode;
+	}
+
+	public Long getB2b_ss_id() {
+		return b2b_ss_id;
+	}
+
+	public void setB2b_ss_id(Long b2b_ss_id) {
+		this.b2b_ss_id = b2b_ss_id;
+	}
+
+	public Long getB2b_ps_id() {
+		return b2b_ps_id;
+	}
+
+	public void setB2b_ps_id(Long b2b_ps_id) {
+		this.b2b_ps_id = b2b_ps_id;
+	}
+
+	public String getSs_code() {
+		return ss_code;
+	}
+
+	public void setSs_code(String ss_code) {
+		this.ss_code = ss_code;
+	}
+
+	public Double getSs_sendnum() {
+		return ss_sendnum;
+	}
+
+	public void setSs_sendnum(Double ss_sendnum) {
+		this.ss_sendnum = ss_sendnum;
+	}
+
+	public Double getSs_ratio() {
+		return ss_ratio;
+	}
+
+	public void setSs_ratio(Double ss_ratio) {
+		this.ss_ratio = ss_ratio;
+	}
+
+	public Double getSs_height() {
+		return ss_height;
+	}
+
+	public void setSs_height(Double ss_height) {
+		this.ss_height = ss_height;
+	}
+
+	public String getSs_material() {
+		return ss_material;
+	}
+
+	public void setSs_material(String ss_material) {
+		this.ss_material = ss_material;
+	}
+
+	public String getSs_materialquality() {
+		return ss_materialquality;
+	}
+
+	public void setSs_materialquality(String ss_materialquality) {
+		this.ss_materialquality = ss_materialquality;
+	}
+
+	public String getSs_address() {
+		return ss_address;
+	}
+
+	public void setSs_address(String ss_address) {
+		this.ss_address = ss_address;
+	}
+
+	public String getSs_addressmark() {
+		return ss_addressmark;
+	}
+
+	public void setSs_addressmark(String ss_addressmark) {
+		this.ss_addressmark = ss_addressmark;
+	}
+
+	public Date getSs_indate() {
+		return ss_indate;
+	}
+
+	public void setSs_indate(Date ss_indate) {
+		this.ss_indate = ss_indate;
+	}
+
+	public Double getSs_puprice() {
+		return ss_puprice;
+	}
+
+	public void setSs_puprice(Double ss_puprice) {
+		this.ss_puprice = ss_puprice;
+	}
+
+	public Double getSs_spare() {
+		return ss_spare;
+	}
+
+	public void setSs_spare(Double ss_spare) {
+		this.ss_spare = ss_spare;
+	}
+
+	public String getSs_brand() {
+		return ss_brand;
+	}
+
+	public void setSs_brand(String ss_brand) {
+		this.ss_brand = ss_brand;
+	}
+
+	public Double getSs_minqty() {
+		return ss_minqty;
+	}
+
+	public void setSs_minqty(Double ss_minqty) {
+		this.ss_minqty = ss_minqty;
+	}
+
+	public Double getSs_minbuyqty() {
+		return ss_minbuyqty;
+	}
+
+	public void setSs_minbuyqty(Double ss_minbuyqty) {
+		this.ss_minbuyqty = ss_minbuyqty;
+	}
+
+	public Double getSs_delivery() {
+		return ss_delivery;
+	}
+
+	public void setSs_delivery(Double ss_delivery) {
+		this.ss_delivery = ss_delivery;
+	}
+
+	public String getSs_attach() {
+		return ss_attach;
+	}
+
+	public void setSs_attach(String ss_attach) {
+		this.ss_attach = ss_attach;
+	}
+
+	public String getSs_recorder() {
+		return ss_recorder;
+	}
+
+	public void setSs_recorder(String ss_recorder) {
+		this.ss_recorder = ss_recorder;
+	}
+
+	public Short getSs_pddetno() {
+		return ss_pddetno;
+	}
+
+	public void setSs_pddetno(Short ss_pddetno) {
+		this.ss_pddetno = ss_pddetno;
+	}
+	
+	/**
+	 * no-arg constructor
+	 * 空构造函数
+	 */
+	public SaleSampleSend(){}
+
+	public SaleSampleSend(PurchaseProofingSend proofingSend){
+		this.b2b_ps_id = proofingSend.getProofingItem().getId();
+		this.b2b_ss_id = proofingSend.getId();
+		this.ss_address = proofingSend.getAdress();
+		this.ss_addressmark = proofingSend.getAddressMark();
+		this.ss_attach = proofingSend.getAttach();
+		this.ss_brand = proofingSend.getBrand();
+		this.ss_code = proofingSend.getCode();
+		this.ss_delivery = proofingSend.getDelivery();
+		this.ss_height = proofingSend.getWeight();
+		this.ss_indate = proofingSend.getDate();
+		this.ss_material = proofingSend.getMaterial();
+		this.ss_materialquality = proofingSend.getMaterialQuality();
+		this.ss_minbuyqty = proofingSend.getMinBuyQty();
+		this.ss_minqty = proofingSend.getMinQty();
+		this.ss_ratio = proofingSend.getRatio();
+		this.ss_recorder = proofingSend.getRecorder();
+		this.ss_sendnum = proofingSend.getSendQty();
+		this.ss_spare = proofingSend.getSpare();
+		this.ss_puprice = proofingSend.getPuprice();
+		this.ss_pscode = proofingSend.getProofingItem().getProofing().getCode();
+		this.ss_pddetno = proofingSend.getProofingItem().getNumber();
+		this.ss_useruu = proofingSend.getProofingItem().getProofing().getUserUU();
+	}
+	
+	public PurchaseProofingSend convert(){
+		PurchaseProofingSend proofingSend = new PurchaseProofingSend();
+		proofingSend.setAddressMark(ss_addressmark);
+		proofingSend.setAdress(ss_address);
+		proofingSend.setAttach(ss_attach);
+		proofingSend.setBackStatus((short) Status.DOWNLOADED.value());//传输到卖家ERP的状态为已上传
+		proofingSend.setBrand(ss_brand);
+		proofingSend.setCode(ss_code);
+		proofingSend.setDate(ss_indate);
+		proofingSend.setDelivery(ss_delivery);
+		proofingSend.setItemId(b2b_ps_id);
+		proofingSend.setMaterial(ss_material);
+		proofingSend.setMaterialQuality(ss_materialquality);
+		proofingSend.setMinBuyQty(ss_minbuyqty);
+		proofingSend.setMinQty(ss_minqty);
+		PurchaseProofingItem proofingItem = new PurchaseProofingItem();
+		proofingItem.setId(b2b_ps_id);
+		proofingSend.setProofingItem(proofingItem);
+		proofingSend.setPuprice(ss_puprice);
+		proofingSend.setRatio(ss_ratio);
+		proofingSend.setRecorder(ss_recorder);
+		proofingSend.setSendStatus((short) Status.NOT_UPLOAD.value());//传输到买家ERP的状态为未上传
+		proofingSend.setSpare(ss_spare);
+		proofingSend.setWeight(ss_height);
+		return proofingSend;
+	}
+
+
+}

+ 9 - 0
src/main/java/com/uas/platform/b2b/erp/service/PurchaseSampleService.java

@@ -3,6 +3,8 @@ package com.uas.platform.b2b.erp.service;
 import java.util.List;
 
 import com.uas.platform.b2b.erp.model.ProductSample;
+import com.uas.platform.b2b.erp.model.ProductSampleApproval;
+import com.uas.platform.b2b.model.PurchaseProofingApproval;
 import com.uas.platform.b2b.model.PurchaseProofingItem;
 
 public interface PurchaseSampleService {
@@ -14,6 +16,13 @@ public interface PurchaseSampleService {
 	 * @return
 	 */
 	List<PurchaseProofingItem> convertProofing(List<ProductSample> samples);
+	
+	/**
+	 * 将ERP系统的送样认定单,转为平台的认定单
+	 * @param sampleApprovals
+	 * @return
+	 */
+	List<PurchaseProofingApproval> convertApproval(List<ProductSampleApproval> sampleApprovals);
 
 
 }

+ 25 - 0
src/main/java/com/uas/platform/b2b/erp/service/SaleSampleDownService.java

@@ -2,8 +2,12 @@ package com.uas.platform.b2b.erp.service;
 
 import java.util.List;
 
+import com.uas.platform.b2b.erp.model.SaleSampleApproval;
 import com.uas.platform.b2b.erp.model.SaleSampleDown;
+import com.uas.platform.b2b.erp.model.SaleSampleSend;
+import com.uas.platform.b2b.model.PurchaseProofingApproval;
 import com.uas.platform.b2b.model.PurchaseProofingItem;
+import com.uas.platform.b2b.model.PurchaseProofingSend;
 
 public interface SaleSampleDownService {
 
@@ -15,5 +19,26 @@ public interface SaleSampleDownService {
 	 */
 	List<SaleSampleDown> convertPurchaseProofingItems(List<PurchaseProofingItem> proofingItems);
 
+	/**
+	 * 将平台中未传输到卖方ERP的送样单,转化为卖方ERP的送样单
+	 * 将平台中未传输到买方ERP的送样单,转化为买方ERP的送样单
+	 * @param proofingSends
+	 * @return
+	 */
+	List<SaleSampleSend> convertSaleSampleSends(List<PurchaseProofingSend> proofingSends);
+	
+	/**
+	 * 将卖家ERP中未上传到平台的送样单,转化为平台的送样单
+	 * @param saleSampleSends
+	 * @return
+	 */
+	List<PurchaseProofingSend> convertProofingSends(List<SaleSampleSend> saleSampleSends);
+	
+	/**
+	 * 将平台上的送样客户认定单转化为(卖方)ERP的认定单
+	 * @param proofingApprovals
+	 * @return
+	 */
+	List<SaleSampleApproval> covertSampleApprovals(List<PurchaseProofingApproval> proofingApprovals);
 
 }

+ 17 - 0
src/main/java/com/uas/platform/b2b/erp/service/impl/PurchaseSampleServiceImpl.java

@@ -13,10 +13,12 @@ import com.uas.platform.b2b.dao.PurchaseProofingDao;
 import com.uas.platform.b2b.dao.UserDao;
 import com.uas.platform.b2b.dao.VendorDao;
 import com.uas.platform.b2b.erp.model.ProductSample;
+import com.uas.platform.b2b.erp.model.ProductSampleApproval;
 import com.uas.platform.b2b.erp.service.PurchaseSampleService;
 import com.uas.platform.b2b.model.Enterprise;
 import com.uas.platform.b2b.model.Product;
 import com.uas.platform.b2b.model.PurchaseProofing;
+import com.uas.platform.b2b.model.PurchaseProofingApproval;
 import com.uas.platform.b2b.model.PurchaseProofingItem;
 import com.uas.platform.b2b.model.User;
 import com.uas.platform.b2b.model.Vendor;
@@ -111,4 +113,19 @@ public class PurchaseSampleServiceImpl implements PurchaseSampleService {
 		return null;
 	}
 
+	@Override
+	public List<PurchaseProofingApproval> convertApproval(
+			List<ProductSampleApproval> sampleApprovals) {
+		List<PurchaseProofingApproval> proofingApprovals = new ArrayList<PurchaseProofingApproval>();
+		for(ProductSampleApproval sampleApproval : sampleApprovals) {
+			if(sampleApproval.getPa_venduu() != null){
+				List<Vendor> vendors = vendorDao.findByMyEnUUAndVendUU(SystemSession.getUser().getEnterprise().getUu(),
+						sampleApproval.getPa_venduu());
+				if(vendors.size() > 0) 
+					proofingApprovals.add(sampleApproval.convert());
+			}
+		}
+		return proofingApprovals;
+	}
+
 }

+ 40 - 0
src/main/java/com/uas/platform/b2b/erp/service/impl/SaleSampleDownServiceImpl.java

@@ -6,9 +6,13 @@ import java.util.List;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.stereotype.Service;
 
+import com.uas.platform.b2b.erp.model.SaleSampleApproval;
 import com.uas.platform.b2b.erp.model.SaleSampleDown;
+import com.uas.platform.b2b.erp.model.SaleSampleSend;
 import com.uas.platform.b2b.erp.service.SaleSampleDownService;
+import com.uas.platform.b2b.model.PurchaseProofingApproval;
 import com.uas.platform.b2b.model.PurchaseProofingItem;
+import com.uas.platform.b2b.model.PurchaseProofingSend;
 
 @Service
 public class SaleSampleDownServiceImpl implements SaleSampleDownService {
@@ -25,5 +29,41 @@ public class SaleSampleDownServiceImpl implements SaleSampleDownService {
 		return saleSampleDowns;
 	}
 
+	@Override
+	public List<SaleSampleSend> convertSaleSampleSends(
+			List<PurchaseProofingSend> proofingSends) {
+		List<SaleSampleSend> saleSampleSends = new ArrayList<SaleSampleSend>();
+		if(!CollectionUtils.isEmpty(proofingSends)) {
+			for(PurchaseProofingSend proofingSend : proofingSends){
+				saleSampleSends.add(new SaleSampleSend(proofingSend));
+			}
+		}
+		return saleSampleSends;
+	}
+
+	@Override
+	public List<PurchaseProofingSend> convertProofingSends(
+			List<SaleSampleSend> saleSampleSends) {
+		List<PurchaseProofingSend> proofingSends = new ArrayList<PurchaseProofingSend>();
+		if(!CollectionUtils.isEmpty(saleSampleSends)) {
+			for(SaleSampleSend saleSampleSend : saleSampleSends){
+				proofingSends.add(saleSampleSend.convert());
+			}
+		}
+		return proofingSends;
+	}
+
+	@Override
+	public List<SaleSampleApproval> covertSampleApprovals(
+			List<PurchaseProofingApproval> proofingApprovals) {
+		List<SaleSampleApproval> saleSampleApprovals = new ArrayList<SaleSampleApproval>();
+		if(!CollectionUtils.isEmpty(proofingApprovals)) {
+			for(PurchaseProofingApproval proofingApproval : proofingApprovals) {
+				saleSampleApprovals.add(new SaleSampleApproval(proofingApproval));
+			}
+		}
+		return saleSampleApprovals;
+	}
+
 
 }

+ 497 - 0
src/main/java/com/uas/platform/b2b/model/PurchaseProofingApproval.java

@@ -0,0 +1,497 @@
+package com.uas.platform.b2b.model;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToOne;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+
+/**
+ * 平台里面,供应商针对客户打样申请的送样单
+ * 
+ * @author suntg
+ *
+ */
+@Table(name = "purc$proofingapproval")
+@Entity
+public class PurchaseProofingApproval implements Serializable {
+
+	/**
+	 * 序列号
+	 */
+	private static final long serialVersionUID = 2147648497108840786L;
+
+	@Id
+	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "purc$proofingapproval_gen")
+	@SequenceGenerator(name = "purc$proofingapproval_gen", sequenceName = "purc$proofingapproval_seq", allocationSize = 1)
+	@Column(name = "psa_id")
+	private Long id;
+	/**
+	 * 所属企业UU(买方)
+	 */
+	@Column(name = "psa_enuu")
+	private Long enUU;
+	/**
+	 * 企业(买方)
+	 */
+	@OneToOne(cascade = { CascadeType.MERGE })
+	@JoinColumn(name = "psa_enuu", insertable = false, updatable = false)
+	private Enterprise enterprise;
+	/**
+	 * 认定单号编号
+	 */
+	@Column(name = "psa_code")
+	private String code;
+	/**
+	 * 打样申请单号
+	 */
+	@Column(name = "psa_pscode")
+	private String pscode;
+	/**
+	 * 送样单号
+	 */
+	@Column(name = "psa_sscode")
+	private String sscode;
+	/**
+	 * 供应商UU
+	 */
+	@Column(name = "psa_vendUU")
+	private Long vendUU;
+	/**
+	 * 物料编号
+	 */
+	@Column(name = "psa_prodcode")
+	private String prodcode;
+	/**
+	 * 物料名称
+	 */
+	@Column(name = "psa_proddetail")
+	private String prodDetail;
+	/**
+	 * 物料规格
+	 */
+	@Column(name = "psa_prodspec")
+	private String prodSpec;
+	/**
+	 * 物料单位
+	 */
+	@Column(name = "psa_produnit")
+	private String prodUnit;
+	/**
+	 * 数量
+	 */
+	@Column(name = "psa_sampleqty")
+	private Double sampleqty;
+	/**
+	 * 单重(g)
+	 */
+	@Column(name = "psa_height")
+	private Double height;
+	/**
+	 * 材料
+	 */
+	@Column(name = "psa_material")
+	private String material;
+	/**
+	 * 材质
+	 */
+	@Column(name = "psa_materialquality")
+	private String materialquality;
+	/**
+	 * 产地
+	 */
+	@Column(name = "psa_address")
+	private String address;
+	/**
+	 * 产地标示
+	 */
+	@Column(name = "psa_addressmark")
+	private String addressmark;
+	/**
+	 * 录入人
+	 */
+	@Column(name = "psa_recordor")
+	private String recordor;
+	/**
+	 * 录入日期
+	 */
+	@Column(name = "psa_inDate")
+	private Date inDate;
+	/**
+	 * 备注
+	 */
+	@Column(name = "psa_remark")
+	private String remark;
+	/**
+	 * 样品附件
+	 */
+	@Column(name = "psa_attach")
+	private String attach;
+	/**
+	 * 收到样品时间 - 研发认定
+	 */
+	@Column(name = "psa_prdtime")
+	private Date prdtime;
+	/**
+	 * 收到样品数量 - 研发认定
+	 */
+	@Column(name = "psa_prdypsl")
+	private Double prdypsl;
+	/**
+	 * 综合判定 - 研发认定
+	 */
+	@Column(name = "psa_prdresult")
+	private String prdresult;
+	/**
+	 * 建议 - 研发判定
+	 */
+	@Column(name = "psa_prdadvice")
+	private String prdadvice;
+	/**
+	 * 描述 - 研发认定
+	 */
+	@Column(name = "psa_prdremark")
+	private String prdremark;
+	/**
+	 * 附件 - 研发认定
+	 */
+	@Column(name = "psa_prdattach")
+	private String prdattach;
+	/**
+	 * 收到样品时间 - IQC认定
+	 */
+	@Column(name = "psa_padtime")
+	private Date padtime;
+	/**
+	 * 收到样品数量 - IQC认定
+	 */
+	@Column(name = "psa_padypsl")
+	private Double padypsl;
+	/**
+	 * 综合判定 - IQC认定
+	 */
+	@Column(name = "psa_padresult")
+	private String padresult;
+	/**
+	 * 建议 - IQC认定
+	 */
+	@Column(name = "psa_padadvice")
+	private String padadvice;
+	/**
+	 * 描述 - IQC认定
+	 */
+	@Column(name = "psa_padremark")
+	private String padremark;
+	/**
+	 * 附件 - IQC认定
+	 */
+	@Column(name = "psa_padattach")
+	private String padattach;
+	/**
+	 * 收到样品时间 - 工程认定
+	 */
+	@Column(name = "psa_ppdtime")
+	private Date ppdtime;
+	/**
+	 * 收到样品数量 - 工程认定
+	 */
+	@Column(name = "psa_ppdypsl")
+	private Double ppdypsl;
+	/**
+	 * 综合判定 - 工程认定
+	 */
+	@Column(name = "psa_ppdresult")
+	private String ppdresult;
+	/**
+	 * 建议 - 工程认定
+	 */
+	@Column(name = "psa_ppdadvice")
+	private String ppdadvice;
+	/**
+	 * 描述 - 工程认定
+	 */
+	@Column(name = "psa_ppdremark")
+	private String ppdremark;
+	/**
+	 * 附件 - 工程认定
+	 */
+	@Column(name = "psa_ppdattach")
+	private String ppdattach;
+	/**
+	 * 认定结果
+	 */
+	@Column(name = "psa_finalresult")
+	private String finalresult;
+	/**
+	 * 原因
+	 */
+	@Column(name = "psa_finalresultremark")
+	private String finalresultremark;
+	/**
+	 * 传输状态(到卖方)
+	 */
+	@Column(name = "psa_sendstatus")
+	private Short sendStatus;
+	public Long getId() {
+		return id;
+	}
+	public void setId(Long id) {
+		this.id = id;
+	}
+	public Long getEnUU() {
+		return enUU;
+	}
+	public void setEnUU(Long enUU) {
+		this.enUU = enUU;
+	}
+	public Enterprise getEnterprise() {
+		return enterprise;
+	}
+	public void setEnterprise(Enterprise enterprise) {
+		this.enterprise = enterprise;
+	}
+	public String getCode() {
+		return code;
+	}
+	public void setCode(String code) {
+		this.code = code;
+	}
+	public String getPscode() {
+		return pscode;
+	}
+	public void setPscode(String pscode) {
+		this.pscode = pscode;
+	}
+	public String getSscode() {
+		return sscode;
+	}
+	public void setSscode(String sscode) {
+		this.sscode = sscode;
+	}
+	public Long getVendUU() {
+		return vendUU;
+	}
+	public void setVendUU(Long vendUU) {
+		this.vendUU = vendUU;
+	}
+	public String getProdcode() {
+		return prodcode;
+	}
+	public void setProdcode(String prodcode) {
+		this.prodcode = prodcode;
+	}
+	public String getProdDetail() {
+		return prodDetail;
+	}
+	public void setProdDetail(String prodDetail) {
+		this.prodDetail = prodDetail;
+	}
+	public String getProdSpec() {
+		return prodSpec;
+	}
+	public void setProdSpec(String prodSpec) {
+		this.prodSpec = prodSpec;
+	}
+	public String getProdUnit() {
+		return prodUnit;
+	}
+	public void setProdUnit(String prodUnit) {
+		this.prodUnit = prodUnit;
+	}
+	public Double getSampleqty() {
+		return sampleqty;
+	}
+	public void setSampleqty(Double sampleqty) {
+		this.sampleqty = sampleqty;
+	}
+	public Double getHeight() {
+		return height;
+	}
+	public void setHeight(Double height) {
+		this.height = height;
+	}
+	public String getMaterial() {
+		return material;
+	}
+	public void setMaterial(String material) {
+		this.material = material;
+	}
+	public String getMaterialquality() {
+		return materialquality;
+	}
+	public void setMaterialquality(String materialquality) {
+		this.materialquality = materialquality;
+	}
+	public String getAddress() {
+		return address;
+	}
+	public void setAddress(String address) {
+		this.address = address;
+	}
+	public String getAddressmark() {
+		return addressmark;
+	}
+	public void setAddressmark(String addressmark) {
+		this.addressmark = addressmark;
+	}
+	public String getRecordor() {
+		return recordor;
+	}
+	public void setRecordor(String recordor) {
+		this.recordor = recordor;
+	}
+	public Date getInDate() {
+		return inDate;
+	}
+	public void setInDate(Date inDate) {
+		this.inDate = inDate;
+	}
+	public String getRemark() {
+		return remark;
+	}
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+	public String getAttach() {
+		return attach;
+	}
+	public void setAttach(String attach) {
+		this.attach = attach;
+	}
+	public Date getPrdtime() {
+		return prdtime;
+	}
+	public void setPrdtime(Date prdtime) {
+		this.prdtime = prdtime;
+	}
+	public Double getPrdypsl() {
+		return prdypsl;
+	}
+	public void setPrdypsl(Double prdypsl) {
+		this.prdypsl = prdypsl;
+	}
+	public String getPrdresult() {
+		return prdresult;
+	}
+	public void setPrdresult(String prdresult) {
+		this.prdresult = prdresult;
+	}
+	public String getPrdadvice() {
+		return prdadvice;
+	}
+	public void setPrdadvice(String prdadvice) {
+		this.prdadvice = prdadvice;
+	}
+	public String getPrdremark() {
+		return prdremark;
+	}
+	public void setPrdremark(String prdremark) {
+		this.prdremark = prdremark;
+	}
+	public String getPrdattach() {
+		return prdattach;
+	}
+	public void setPrdattach(String prdattach) {
+		this.prdattach = prdattach;
+	}
+	public Date getPadtime() {
+		return padtime;
+	}
+	public void setPadtime(Date padtime) {
+		this.padtime = padtime;
+	}
+	public Double getPadypsl() {
+		return padypsl;
+	}
+	public void setPadypsl(Double padypsl) {
+		this.padypsl = padypsl;
+	}
+	public String getPadresult() {
+		return padresult;
+	}
+	public void setPadresult(String padresult) {
+		this.padresult = padresult;
+	}
+	public String getPadadvice() {
+		return padadvice;
+	}
+	public void setPadadvice(String padadvice) {
+		this.padadvice = padadvice;
+	}
+	public String getPadremark() {
+		return padremark;
+	}
+	public void setPadremark(String padremark) {
+		this.padremark = padremark;
+	}
+	public String getPadattach() {
+		return padattach;
+	}
+	public void setPadattach(String padattach) {
+		this.padattach = padattach;
+	}
+	public Date getPpdtime() {
+		return ppdtime;
+	}
+	public void setPpdtime(Date ppdtime) {
+		this.ppdtime = ppdtime;
+	}
+	public Double getPpdypsl() {
+		return ppdypsl;
+	}
+	public void setPpdypsl(Double ppdypsl) {
+		this.ppdypsl = ppdypsl;
+	}
+	public String getPpdresult() {
+		return ppdresult;
+	}
+	public void setPpdresult(String ppdresult) {
+		this.ppdresult = ppdresult;
+	}
+	public String getPpdadvice() {
+		return ppdadvice;
+	}
+	public void setPpdadvice(String ppdadvice) {
+		this.ppdadvice = ppdadvice;
+	}
+	public String getPpdremark() {
+		return ppdremark;
+	}
+	public void setPpdremark(String ppdremark) {
+		this.ppdremark = ppdremark;
+	}
+	public String getPpdattach() {
+		return ppdattach;
+	}
+	public void setPpdattach(String ppdattach) {
+		this.ppdattach = ppdattach;
+	}
+	public String getFinalresult() {
+		return finalresult;
+	}
+	public void setFinalresult(String finalresult) {
+		this.finalresult = finalresult;
+	}
+	public String getFinalresultremark() {
+		return finalresultremark;
+	}
+	public void setFinalresultremark(String finalresultremark) {
+		this.finalresultremark = finalresultremark;
+	}
+	public Short getSendStatus() {
+		return sendStatus;
+	}
+	public void setSendStatus(Short sendStatus) {
+		this.sendStatus = sendStatus;
+	}
+	
+
+}

+ 39 - 0
src/main/java/com/uas/platform/b2b/service/PurchaseProofingService.java

@@ -5,6 +5,7 @@ import java.util.List;
 import org.springframework.data.domain.Page;
 
 import com.uas.platform.b2b.model.Attach;
+import com.uas.platform.b2b.model.PurchaseProofingApproval;
 import com.uas.platform.b2b.model.PurchaseProofingItem;
 import com.uas.platform.b2b.model.PurchaseProofingSend;
 import com.uas.platform.core.model.PageInfo;
@@ -65,4 +66,42 @@ public interface PurchaseProofingService {
 	 * @param proofingSend
 	 */
 	public void send(List<PurchaseProofingSend> proofingSend);
+	
+	/**
+	 * 获取没有传输到卖家ERP的送样单
+	 * @return
+	 */
+	public List<PurchaseProofingSend> findNotBackSampleSend();
+	
+	/**
+	 * 
+	 * @param idArray
+	 */
+	public void backSampleSendSuccess(String[] idArray);
+	
+	/**
+	 * 获取没有传输到买方ERP的送样单
+	 * @return
+	 */
+	public List<PurchaseProofingSend> findNotSendSampleSend();
+	
+	/**
+	 * 
+	 * @param idArray
+	 */
+	public void sendSampleSendSuccess(String[] idArray);
+	
+	/**
+	 * 保存送样认定单
+	 * @param proofingApprovals
+	 */
+	public void saveSampleApproval(List<PurchaseProofingApproval> proofingApprovals);
+	
+	/**
+	 * 获取未上传(到卖方)的认定单
+	 * @return
+	 */
+	public List<PurchaseProofingApproval> findNotUploadApprovals();
+	
+	public void uploadApprovalsSuccess(String[] idArray);
 }

+ 79 - 2
src/main/java/com/uas/platform/b2b/service/impl/PurchaseProofingServiceImpl.java

@@ -16,11 +16,13 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
+import com.uas.platform.b2b.dao.PurchaseProofingApprovalDao;
 import com.uas.platform.b2b.dao.PurchaseProofingDao;
 import com.uas.platform.b2b.dao.PurchaseProofingItemDao;
 import com.uas.platform.b2b.dao.PurchaseProofingSendDao;
 import com.uas.platform.b2b.model.Attach;
 import com.uas.platform.b2b.model.PurchaseProofing;
+import com.uas.platform.b2b.model.PurchaseProofingApproval;
 import com.uas.platform.b2b.model.PurchaseProofingItem;
 import com.uas.platform.b2b.model.PurchaseProofingSend;
 import com.uas.platform.b2b.service.PurchaseProofingService;
@@ -42,6 +44,9 @@ public class PurchaseProofingServiceImpl implements PurchaseProofingService{
 	@Autowired
 	private PurchaseProofingSendDao purchaseProofingSendDao;
 	
+	@Autowired
+	private PurchaseProofingApprovalDao purchaseProofingApprovalDao;
+	
 	@Override
 	public void save(List<PurchaseProofingItem> proofingItems) {
 		purchaseProofingItemDao.save(proofingItems);
@@ -138,8 +143,11 @@ public class PurchaseProofingServiceImpl implements PurchaseProofingService{
 		if(proofingItem == null) {
 			throw new IllegalOperatorException("不存在的客户打样申请");
 		}
-		if(proofingItem.getStatus() == Status.SEND.value()) {
-			throw new IllegalOperatorException("客户打样申请已送样,不可重复送样");
+		if(proofingItem.getStatus() == Status.SEND.value()) {//状态为已送样
+			if(isB2b)//b2B上操作,报错
+				throw new IllegalOperatorException("客户打样申请已送样,不可重复送样");
+			else //卖方ERP的操作数据上传过来,忽略
+				return;
 		}
 		proofingItem.setStatus((short) Status.SEND.value());
 		proofingSend.setProofingItem(proofingItem);
@@ -155,5 +163,74 @@ public class PurchaseProofingServiceImpl implements PurchaseProofingService{
 		}
 	}
 
+	@Override
+	public List<PurchaseProofingSend> findNotBackSampleSend() {
+		return purchaseProofingSendDao.findByBackStatusAndProofingItemVendUU((short) Status.NOT_UPLOAD.value(), 
+				SystemSession.getUser().getEnterprise().getUu());
+	}
+
+	@Override
+	public void backSampleSendSuccess(String[] idArray) {
+		for(String id : idArray) {
+			PurchaseProofingSend proofingSend = purchaseProofingSendDao.findOne(Long.parseLong(id));
+			if(proofingSend != null) {
+				proofingSend.setBackStatus((short) Status.DOWNLOADED.value());
+				purchaseProofingSendDao.save(proofingSend);
+			}
+		}
+	}
+
+	@Override
+	public List<PurchaseProofingSend> findNotSendSampleSend() {
+		return purchaseProofingSendDao.findBySendStatusAndProofingItemProofingEnUU((short) Status.NOT_UPLOAD.value(), 
+				SystemSession.getUser().getEnterprise().getUu());
+	}
+
+	@Override
+	public void sendSampleSendSuccess(String[] idArray) {
+		for(String id : idArray) {
+			PurchaseProofingSend proofingSend = purchaseProofingSendDao.findOne(Long.parseLong(id));
+			if(proofingSend != null) {
+				proofingSend.setSendStatus((short) Status.DOWNLOADED.value());
+				purchaseProofingSendDao.save(proofingSend);
+			}
+		}
+	}
+
+	@Override
+	public void saveSampleApproval(
+			List<PurchaseProofingApproval> proofingApprovals) {
+		purchaseProofingApprovalDao.save(proofingApprovals);
+		for(PurchaseProofingApproval approval : proofingApprovals) {
+			if(approval.getSscode() != null && approval.getVendUU() != null) {
+				List<PurchaseProofingSend> sends = purchaseProofingSendDao.findByProofingItemVendUUAndCode(approval.getVendUU(), approval.getSscode());
+				if(sends.size() > 0) {
+					PurchaseProofingSend send = sends.get(0);
+					XingePusher.pushSingleAccountAndroid(send.getProofingItem().getVendUserUU().toString(), "客户返回了送样认定单", 
+							"送样单号:" + approval.getSscode(), null);
+					XingePusher.pushSingleAccountIOS(send.getProofingItem().getVendUserUU().toString(), 
+							"客户返回了送样认定单  " + "送样单号:" + approval.getSscode());
+				}
+			}
+		}
+	}
+
+	@Override
+	public List<PurchaseProofingApproval> findNotUploadApprovals() {
+		return purchaseProofingApprovalDao.findByVendUUAndSendStatus(SystemSession.getUser().getEnterprise().getUu(),
+				(short) Status.NOT_UPLOAD.value());
+	}
+
+	@Override
+	public void uploadApprovalsSuccess(String[] idArray) {
+		for(String id : idArray) {
+			PurchaseProofingApproval approval = purchaseProofingApprovalDao.findOne(Long.parseLong(id));
+			if(approval != null) {
+				approval.setSendStatus((short) Status.DOWNLOADED.value());
+				purchaseProofingApprovalDao.save(approval);
+			}
+		}
+	}
+
 
 }