Browse Source

ERP传输到公共询价单方法更新

hejq 8 years ago
parent
commit
00fd8c832b

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

@@ -63,8 +63,8 @@ public class InquiryController {
 
 	/**
 	 * 将买家ERP的采购询价写到平台(新方法)
-	 * 
-	 * @param data
+	 *
+	 * @param inquiries
 	 * @return
 	 * @throws UnsupportedEncodingException
 	 */

+ 78 - 4
src/main/java/com/uas/platform/b2b/erp/controller/PublicInquiryController.java

@@ -1,15 +1,17 @@
 package com.uas.platform.b2b.erp.controller;
 
 import com.uas.platform.b2b.erp.model.BatchInquiry;
+import com.uas.platform.b2b.erp.model.Inquiry;
+import com.uas.platform.b2b.erp.model.InquiryDecide;
+import com.uas.platform.b2b.erp.model.InquiryDetail;
 import com.uas.platform.b2b.erp.service.PublicInquiryService;
 import com.uas.platform.b2b.erp.support.ErpBufferedLogger;
+import com.uas.platform.b2b.service.PubInquiryService;
 import com.uas.platform.core.logging.BufferedLoggerManager;
+import com.uas.platform.core.util.ArrayUtils;
 import com.uas.platform.core.util.serializer.FlexJsonUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
@@ -28,6 +30,9 @@ public class PublicInquiryController {
     @Autowired
     private PublicInquiryService publicInquiryService;
 
+    @Autowired
+    private PubInquiryService pubInquiryService;
+
     private final static ErpBufferedLogger logger = BufferedLoggerManager.getLogger(ErpBufferedLogger.class);
 
     /**
@@ -58,4 +63,73 @@ public class PublicInquiryController {
         publicInquiryService.updateStatus(inquiries);
         logger.log("erp公共询价单", "erp关闭公共询价单", inquiries.size());
     }
+
+    /**
+     * (针对客户)获取平台供应商的报价信息
+     */
+    @RequestMapping(value = "/infos", method = RequestMethod.GET)
+    public List<InquiryDetail> getReply() {
+        List<InquiryDetail> details = publicInquiryService.convertPublicInquiryReply(pubInquiryService.findNotUploadReply());
+        logger.log("公共询价", "下载询价单报价结果", details.size());
+        return details;
+    }
+
+    /**
+     * 平台的报价信息传到买家ERP之后,修改平台里面的询价单明细的上传状态
+     *
+     * @param data 传回的id串
+     * @return
+     * @throws UnsupportedEncodingException
+     */
+    @RequestMapping(value = "/reply/back", method = RequestMethod.POST)
+    public void onReplySuccess(@RequestParam("data") String data) throws UnsupportedEncodingException {
+        String[] idArray = URLDecoder.decode(data, "UTF-8").split(",");
+        logger.log("公共询价单", "更新下载状态为已下载", idArray.length);
+        pubInquiryService.onReplyUploadSuccess(idArray);
+    }
+
+    /**
+     * 买家在收到报价信息后,点击提交按钮后,状态传至平台,至此平台的供应商不能再对这张询价单进行报价
+     *
+     * @param data
+     * @throws UnsupportedEncodingException
+     */
+    @RequestMapping(value = "/checking", method = RequestMethod.POST)
+    @ResponseBody
+    public void checkInquiry(@RequestParam("data") String data) throws UnsupportedEncodingException {
+        String jsonStr = URLDecoder.decode(data, "UTF-8");
+        List<Inquiry> inquiries = FlexJsonUtils.fromJsonArray(jsonStr, Inquiry.class);
+        publicInquiryService.updateInquiryStatus(inquiries);
+        logger.log("公共询价单", "ERP询价单提交,单据不再进行报价操作", inquiries.size());
+    }
+
+    /**
+     * 买家ERP(不)采纳了价格之后,修改平台里面的报价信息的状态
+     *
+     * @return
+     * @throws UnsupportedEncodingException
+     */
+    @RequestMapping(value = "/reply/decide", method = RequestMethod.POST)
+    @ResponseBody
+    public void onReplyDecide(@RequestParam("data") String data) throws UnsupportedEncodingException {
+        String jsonStr = URLDecoder.decode(data, "UTF-8");
+        List<InquiryDecide> decides = FlexJsonUtils.fromJsonArray(jsonStr, InquiryDecide.class);
+        pubInquiryService.onReplyDecide(publicInquiryService.convertInquiryDecide(decides));
+        logger.log("询价单", "修改询价单报价信息状态", decides.size());
+    }
+
+    /**
+     * 买家ERP作废询价单后,修改平台里面的状态
+     *
+     * @return
+     * @throws UnsupportedEncodingException
+     */
+    @RequestMapping(value = "/invalid", method = RequestMethod.POST)
+    @ResponseBody
+    public void onReplyInvalid(@RequestParam("data") String data) throws UnsupportedEncodingException {
+        String jsonStr = URLDecoder.decode(data, "UTF-8");
+        List<Inquiry> inquiries = FlexJsonUtils.fromJsonArray(jsonStr, Inquiry.class);
+        pubInquiryService.onReplyInvalid(inquiries);
+        logger.log("询价单", "作废询价单", inquiries.size());
+    }
 }

+ 27 - 1
src/main/java/com/uas/platform/b2b/erp/model/InquiryDecide.java

@@ -10,12 +10,31 @@ import com.uas.platform.core.model.Constant;
  */
 public class InquiryDecide {
 
+	/**
+	 * 询价编号
+	 */
 	private String in_code;
+
+	/**
+	 * 明细序号
+	 */
 	private Short id_detno;
+
+	/**
+	 * 采纳状态
+	 */
 	private Short id_agreed;
-	// 针对主动报价
+
+	/**
+	 * 针对主动报价,主动报价id
+	 */
 	private Long b2b_qu_id;
 
+	/**
+	 * 平台明细id
+	 */
+	private Long b2b_id;
+
 	public String getIn_code() {
 		return in_code;
 	}
@@ -48,4 +67,11 @@ public class InquiryDecide {
 		this.b2b_qu_id = b2b_qu_id;
 	}
 
+	public Long getB2b_id() {
+		return b2b_id;
+	}
+
+	public void setB2b_id(Long b2b_id) {
+		this.b2b_id = b2b_id;
+	}
 }

+ 44 - 2
src/main/java/com/uas/platform/b2b/erp/model/InquiryDetail.java

@@ -349,7 +349,7 @@ public class InquiryDetail {
 				files.add(new RemoteFile(attach));
 			}
 		}
-		if("自动询价".equals(item.getInquiry().getRemark())) {
+		if ("自动询价".equals(item.getInquiry().getRemark())) {
             this.id_quto = 1;
         }
 	}
@@ -370,7 +370,7 @@ public class InquiryDetail {
 		this.id_brand = item.getBrand();
 		this.id_leadtime = item.getLeadtime();
 		this.id_vendorprodcode = item.getVendorprodcode();
-		if(item.getQuotation().getUser() != null) {
+		if (item.getQuotation().getUser() != null) {
 			this.ve_contact = item.getQuotation().getUser().getUserName();
 		}
 		this.ve_contactuu = item.getQuotation().getUserUU();
@@ -383,4 +383,46 @@ public class InquiryDetail {
 		}
 	}
 
+	/**
+	 * 将平台的公共询价信息转成ERP对应的字段
+     *
+	 * @param item 平台公共询价已转报价的报价单明细
+	 */
+	public InquiryDetail(PublicInquiryItemInfo item) {
+        this.b2b_id_id = item.getId();
+        this.id_minbuyqty = item.getMinOrderQty();
+        this.id_minqty = item.getMinPackQty();
+        this.id_fromdate = item.getVendFromDate();
+        this.id_todate = item.getVendToDate();
+        this.id_id = item.getSourceId();
+        this.id_detno = item.getNumber();
+        this.id_brand = item.getBrand();
+        this.id_vendorprodcode = item.getVendorprodcode();
+        this.id_leadtime = item.getLeadtime();
+        this.sourceApp = item.getSourceApp();
+        this.id_rate = item.getTaxrate();
+        this.id_vendname = item.getEnterprise().getEnName();
+        this.id_vendyyzzh = item.getEnterprise().getBusinesscode();
+        this.in_code = item.getInquiry().getCode();
+        this.id_prodcode = item.getProduct().getCode();
+        this.id_currency = item.getCurrency();
+        this.ve_uu = item.getVendUU();
+        this.in_inquirytype = item.getInquiry().getInquirytype();
+        if (!CollectionUtils.isEmpty(item.getReplies())) {
+            dets = new ArrayList<InquiryDetailDet>();
+            for (PublicInquiryReply reply : item.getReplies()) {
+                dets.add(new InquiryDetailDet(reply));
+            }
+        }
+        if (!CollectionUtils.isEmpty(item.getAttaches())) {
+            files = new ArrayList<>();
+            for (Attach attach : item.getAttaches()) {
+                files.add(new RemoteFile(attach));
+            }
+        }
+        if ("自动询价".equals(item.getInquiry().getRemark())) {
+            this.id_quto = 1;
+        }
+	}
+
 }

+ 11 - 0
src/main/java/com/uas/platform/b2b/erp/model/InquiryDetailDet.java

@@ -1,5 +1,6 @@
 package com.uas.platform.b2b.erp.model;
 
+import com.uas.platform.b2b.model.PublicInquiryReply;
 import com.uas.platform.b2b.model.PurchaseInquiryReply;
 import com.uas.platform.b2b.model.SaleQuotationPrice;
 
@@ -65,4 +66,14 @@ public class InquiryDetailDet {
 		this.idd_price = price.getPrice();
 	}
 
+	/**
+	 * 平台的公共报价转报价单的报价信息转ERP对应的报价信息
+	 *
+	 * @param reply 平台的公共报价转报价单的报价信息
+	 */
+	public InquiryDetailDet(PublicInquiryReply reply) {
+		this.idd_lapqty = reply.getLapQty();
+		this.idd_price = reply.getPrice();
+	}
+
 }

+ 36 - 2
src/main/java/com/uas/platform/b2b/erp/service/PublicInquiryService.java

@@ -1,6 +1,11 @@
 package com.uas.platform.b2b.erp.service;
 
 import com.uas.platform.b2b.erp.model.BatchInquiry;
+import com.uas.platform.b2b.erp.model.Inquiry;
+import com.uas.platform.b2b.erp.model.InquiryDecide;
+import com.uas.platform.b2b.erp.model.InquiryDetail;
+import com.uas.platform.b2b.model.PublicInquiryItem;
+import com.uas.platform.b2b.model.PublicInquiryItemInfo;
 import com.uas.platform.b2b.model.PurcInquiry;
 import com.uas.platform.b2b.model.PurcInquiryItem;
 
@@ -22,16 +27,45 @@ public interface PublicInquiryService {
     /**
      * 保存erp的公共询价
      *
-     * @param inquiries
+     * @param inquiries 采购询价
      */
     void save(List<PurcInquiry> inquiries);
 
     /**
      * erp提交状态后,平台单据停止报价
      *
-     * @param inquiries
+     * @param inquiries 公共询价
      */
     void updateStatus(List<BatchInquiry> inquiries);
 
+    /**
+     * 生成消息
+     *
+     * @param inquiryItems 询价明细
+     */
     void sendMessage(List<PurcInquiryItem> inquiryItems);
+
+    /**
+     * 将平台的公共询价转成ERP的对应的字段
+     *
+     * @param notUploadReply 未下载的供应商报价信息
+     * @return
+     */
+    List<InquiryDetail> convertPublicInquiryReply(List<PublicInquiryItemInfo> notUploadReply);
+
+    /**
+     * 将ERP采纳状态传回平台更新平台的采纳状态
+     *
+     * @param decides ERP采纳结果
+     */
+    List<PublicInquiryItem> convertInquiryDecide(List<InquiryDecide> decides);
+
+    /**
+     * ERP提交公共询价单之后,更新平台状态,让平台询价单不能进行报价操作
+     *
+     * @author hejq
+     * @date 2018-01-11 9:13
+     * @param inquiries
+     */
+    void updateInquiryStatus(List<Inquiry> inquiries);
 }

+ 71 - 8
src/main/java/com/uas/platform/b2b/erp/service/impl/PublicInquiryServiceImpl.java

@@ -1,20 +1,15 @@
 package com.uas.platform.b2b.erp.service.impl;
 
-import com.alibaba.fastjson.JSON;
 import com.uas.message.mail.service.MailService;
 import com.uas.platform.b2b.core.util.ContextUtils;
 import com.uas.platform.b2b.core.util.DateFormatUtils;
 import com.uas.platform.b2b.core.util.ThreadTask;
 import com.uas.platform.b2b.dao.*;
-import com.uas.platform.b2b.erp.model.BatchInProduct;
-import com.uas.platform.b2b.erp.model.BatchInquiry;
+import com.uas.platform.b2b.erp.model.*;
 import com.uas.platform.b2b.erp.service.PublicInquiryService;
 import com.uas.platform.b2b.erp.support.ErpBufferedLogger;
 import com.uas.platform.b2b.event.PurcInquirySaveReleaseEvent;
-import com.uas.platform.b2b.model.Enterprise;
-import com.uas.platform.b2b.model.Product;
-import com.uas.platform.b2b.model.PurcInquiry;
-import com.uas.platform.b2b.model.PurcInquiryItem;
+import com.uas.platform.b2b.model.*;
 import com.uas.platform.b2b.support.MessageConf;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.b2b.support.UsageBufferedLogger;
@@ -24,7 +19,6 @@ import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.model.Constant;
 import com.uas.platform.core.model.Status;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
@@ -32,6 +26,8 @@ import java.util.*;
 import java.util.regex.Pattern;
 
 /**
+ * 公共询价单实现方法
+ *
  * Created by hejq on 2017-09-18.
  */
 @Service
@@ -61,6 +57,9 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
     @Autowired
     private NoticeDao noticeDao;
 
+    @Autowired
+    private PublicInquiryItemDao publicInquiryItemDao;
+
     private final static ErpBufferedLogger logger = BufferedLoggerManager.getLogger(ErpBufferedLogger.class);
 
     private final static UsageBufferedLogger usageLogger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
@@ -186,6 +185,45 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
         });
     }
 
+    /**
+     * 将平台的公共询价转成ERP的对应的字段
+     *
+     * @param notUploadReply 未下载的供应商报价信息
+     * @return
+     */
+    @Override
+    public List<InquiryDetail> convertPublicInquiryReply(List<PublicInquiryItemInfo> notUploadReply) {
+        List<InquiryDetail> details = new ArrayList<InquiryDetail>();
+        if (!CollectionUtils.isEmpty(notUploadReply)) {
+            for (PublicInquiryItemInfo item : notUploadReply) {
+                details.add(new InquiryDetail(item));
+            }
+        }
+        return details;
+    }
+
+    /**
+     * 将ERP采纳状态传回平台更新平台的采纳状态
+     *
+     * @param decides ERP采纳结果
+     */
+    @Override
+    public List<PublicInquiryItem> convertInquiryDecide(List<InquiryDecide> decides) {
+        List<PublicInquiryItem> inquiryItems = new ArrayList<PublicInquiryItem>();
+        if (!CollectionUtils.isEmpty(decides)) {
+            long enUU = SystemSession.getUser().getEnterprise().getUu();
+            for (InquiryDecide decide : decides) {
+                PublicInquiryItem item = publicInquiryItemDao.findOne(decide.getB2b_id());
+                if (null != item) {
+                    item.setAgreed(decide.getId_agreed());
+                    item.setDecideStatus((short) Status.NOT_UPLOAD.value());
+                    inquiryItems.add(item);
+                }
+            }
+        }
+        return inquiryItems;
+    }
+
     /**
      * 发送通知
      *
@@ -291,4 +329,29 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
             }
         }
     }
+
+    /**
+     * ERP提交公共询价单之后,更新平台状态,让平台询价单不能进行报价操作
+     *
+     * @param inquiries
+     * @author hejq
+     * @date 2018-01-11 9:13
+     */
+    @Override
+    public void updateInquiryStatus(List<Inquiry> inquiries) {
+        if(!CollectionUtils.isEmpty(inquiries)) {
+            Long enuu = SystemSession.getUser().getEnterprise().getUu();
+            for(Inquiry inquiry : inquiries) {
+                // 更新为过期状态,不能进行报价处理
+                String sql = "update purc$puinquiryitems set id_overdue = 1 where id_inid in ( select in_id from purc$puinquiry where in_enuu = "
+                        + enuu + " and in_code = '" + inquiry.getIn_code() + "')";
+                commonDao.getJdbcTemplate().update(sql);
+                // 更新已转报价的询价单明细状态
+                commonDao.getJdbcTemplate().update("update public$inquiryItems set id_overdue = 1 where id_inid in " +
+                        "(select in_id from public$inquiry where in_enuu = " + enuu + " and in_code = '" + inquiry.getIn_code() + "')");
+                // 更新已转报价的询价单主表check状态为已提交
+                commonDao.getJdbcTemplate().update("update public$inquiry set in_checked = 1 where in_enuu = " + enuu + " and in_code = '" + inquiry.getIn_code() + "'");
+            }
+        }
+    }
 }