Sfoglia il codice sorgente

Merge remote-tracking branch 'origin/dev' into dev

wangdy 7 anni fa
parent
commit
b082c5d5eb

+ 238 - 0
src/main/java/com/uas/ps/inquiry/controller/ErpDownloadController.java

@@ -0,0 +1,238 @@
+package com.uas.ps.inquiry.controller;
+
+import com.uas.ps.core.logging.BufferedLoggerManager;
+import com.uas.ps.httplog.annotation.HttpLog;
+import com.uas.ps.inquiry.entity.*;
+import com.uas.ps.inquiry.model.PublicInquiryItem;
+import com.uas.ps.inquiry.service.AttachService;
+import com.uas.ps.inquiry.service.InquiryForSaleService;
+import com.uas.ps.inquiry.service.PublicInquiryService;
+import com.uas.ps.inquiry.support.InquiryBufferedLogger;
+import javassist.NotFoundException;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.ui.ModelMap;
+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.RestController;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * Erp从公共服务下载数据接口
+ *
+ * 便于将之前PublicInquiryController中的Erp相关方法整理到这个Controller,当前Controller路径与之相同。
+ * @author  dongbw
+ * @version 2018年7月3日 14:27:25
+ */
+@RestController
+@RequestMapping("/inquiry/public")
+public class ErpDownloadController {
+
+    @Autowired
+    private PublicInquiryService publicInquiryService;
+
+    @Autowired
+    private AttachService attachService;
+
+    @Autowired
+    private InquiryForSaleService saleService;
+
+    private final static InquiryBufferedLogger logger = BufferedLoggerManager.getLogger(InquiryBufferedLogger.class);
+
+    private final static Logger log = Logger.getLogger(Logger.class);
+
+    /**
+     * 将买家ERP的公共询价写到公共询价服务中心
+     *
+     * @param inquiries    公共询价信息
+     * @param enuu    询价企业UU
+     * @param address 询价企业地址信息
+     * @return
+     * @throws UnsupportedEncodingException
+     */
+    @HttpLog
+    @RequestMapping(method = RequestMethod.POST)
+    public void saveInquiries(@RequestBody List<BatchInquiry> inquiries, Long enuu, String address) throws NotFoundException, UnsupportedEncodingException {
+        long start = System.currentTimeMillis();
+        publicInquiryService.save(inquiries, enuu, URLDecoder.decode(address, "UTF-8"));
+        log.info("/inquiry/public post 耗时:" + (System.currentTimeMillis() - start));
+        logger.log("公共询价", "ERP上传公共询价", "size: " + inquiries.size(), Constant.UU, enuu, InquirySource.ERP.name());
+    }
+
+    /**
+     * erp的公共询价单提交待审核时,更新公共询价服务中心的单据设置为不能报价
+     *
+     * @param inquiries 封装的数据信息
+     * @param enuu 询价企业UU
+     * @throws UnsupportedEncodingException
+     */
+    @HttpLog
+    @RequestMapping(value = "/check", method = RequestMethod.POST)
+    public void updateInquiryStatus(@RequestBody List<BatchInquiry> inquiries, Long enuu) throws UnsupportedEncodingException {
+        long start = System.currentTimeMillis();
+        publicInquiryService.updateStatus(inquiries, enuu);
+        log.info("/inquiry/public/check post 耗时:" + (System.currentTimeMillis() - start));
+        logger.log("公共询价", "ERP设置公共询价不能报价", "size: " + inquiries.size(), Constant.UU, enuu, InquirySource.ERP.name());
+    }
+
+    /**
+     * (针对客户)获取公共询价服务中心供应商的报价信息
+     *
+     * @param enuu 询价企业UU
+     * @author hejq
+     * @date 2018-01-14 15:20
+     */
+    @HttpLog
+    @RequestMapping(value = "/quotation", method = RequestMethod.GET)
+    public List<InquiryDetail> getReply(Long enuu) {
+        long start = System.currentTimeMillis();
+        List<InquiryDetail> details = publicInquiryService.findNotUploadReply(enuu);
+        log.info("/inquiry/public/quotation 耗时:" + (System.currentTimeMillis() - start));
+        logger.log("公共询价", "ERP获取供应商报价信息", "size: " + details.size(), Constant.UU, enuu, InquirySource.ERP.name());
+        return details;
+    }
+
+    /**
+     * 公共询价服务中心的报价信息传到买家ERP之后,修改公共询价服务中心里面的询价单明细的上传状态
+     *
+     * @param data 传回的id串
+     * @return
+     * @throws UnsupportedEncodingException
+     */
+    @HttpLog
+    @RequestMapping(value = "/reply/back", method = RequestMethod.POST)
+    public void onReplySuccess(@RequestBody String data, Long enuu) throws UnsupportedEncodingException {
+        long start = System.currentTimeMillis();
+        String[] idArray = URLDecoder.decode(data, "UTF-8").split(",");
+        logger.log("公共询价", "ERP获取报价信息返回id", "id: " + idArray, Constant.UU, enuu, InquirySource.ERP.name());
+        publicInquiryService.onReplyUploadSuccess(idArray);
+        log.info("/inquiry/public/reply/back post 耗时:" + (System.currentTimeMillis() - start));
+    }
+
+    /**
+     * 买家在收到报价信息后,点击提交按钮后,状态传至公共询价服务中心,至此公共询价服务中心的供应商不能再对这张询价单进行报价
+     *
+     * @param details 封装的data信息
+     * @throws UnsupportedEncodingException
+     */
+    @HttpLog
+    @RequestMapping(value = "/checking", method = RequestMethod.POST)
+    public void checkInquiry(@RequestBody List<InquiryDetail> details , Long enuu) throws UnsupportedEncodingException {
+        long start = System.currentTimeMillis();
+        logger.log("公共询价", "ERP提交报价信息应用禁止报价", "size: " + details.size(), Constant.UU, enuu, InquirySource.ERP.name());
+        publicInquiryService.updateInquiryStatus(details, enuu);
+        log.info("/inquiry/public/checking post 耗时:" + (System.currentTimeMillis() - start));
+    }
+
+    /**
+     * 买家ERP(不)采纳了价格之后,修改公共询价服务中心里面的报价信息的状态
+     *
+     * @return 封装的data信息
+     * @throws UnsupportedEncodingException
+     */
+    @HttpLog
+    @RequestMapping(value = "/reply/decide", method = RequestMethod.POST)
+    public void onReplyDecide(@RequestBody List<InquiryDecide> decides, Long enuu) throws UnsupportedEncodingException {
+        long start = System.currentTimeMillis();
+        logger.log("公共询价", "ERP针对供应报价信息进行(不)采纳操作", "size: " + decides.size(), Constant.UU, enuu, InquirySource.ERP.name());
+        publicInquiryService.onReplyDecide(decides, enuu);
+        log.info("/inquiry/public/reply/decide post 耗时:" + (System.currentTimeMillis() - start));
+    }
+
+    /**
+     * 买家ERP作废询价单后,修改公共询价服务中心里面的状态
+     *
+     * @param inquiries 封装的询价信息
+     * @return
+     * @throws UnsupportedEncodingException
+     */
+    @HttpLog
+    @RequestMapping(value = "/invalid", method = RequestMethod.POST)
+    public void onReplyInvalid(@RequestBody List<Inquiry> inquiries, Long enuu) throws UnsupportedEncodingException {
+        long start = System.currentTimeMillis();
+        logger.log("公共询价", "ERP作废公共询价单返回数据到公共服务", "size: " + inquiries.size(), Constant.UU, enuu, InquirySource.ERP.name());
+        publicInquiryService.onReplyInvalid(inquiries, enuu);
+        log.info("/inquiry/public/invalid post 耗时:" + (System.currentTimeMillis() - start));
+    }
+
+    /**
+     * 买家采纳或拒绝之后,上传到报价方UAS
+     *
+     * @param enUU 报价企业UU
+     * @author dongbw
+     * @date 2018年7月3日 15:49:11
+     */
+    @HttpLog
+    @RequestMapping(value = "/down/decide", method = RequestMethod.GET)
+    public List<PublicInquiryItem> downloadDecide(Long enUU) {
+        long start = System.currentTimeMillis();
+        List<PublicInquiryItem> items = publicInquiryService.findDecideNotUploadReply(enUU);
+        log.info("/inquiry/public/down/decide 耗时:" + (System.currentTimeMillis() - start));
+        logger.log("公共询价", "买家采纳或拒绝之后,上传到报价方UAS", "size: " + items.size(), Constant.UU, enUU, InquirySource.ERP.name());
+        return items;
+    }
+
+    /**
+     * 买家采纳或拒绝之后,上传到报价方UAS 之后,UAS回调 修改状态
+     *
+     * @param ids 采纳或拒绝的报价单明细id list
+     * @param enUU 报价方企业UU
+     * @author dongbw
+     * @date 2018年7月3日 15:49:11
+     */
+    @HttpLog
+    @RequestMapping(value = "/down/decide/back", method = RequestMethod.POST)
+    public ModelMap downloadDecideBack(String ids, Long enUU) throws UnsupportedEncodingException {
+        long start = System.currentTimeMillis();
+        String[] idArray = URLDecoder.decode(ids, "UTF-8").split(",");
+        List<Long> idList = new ArrayList<>();
+        for (String id : idArray) {
+            idList.add(Long.valueOf(id));
+        }
+        ModelMap map = publicInquiryService.downloadDecideBack(idList, enUU);
+        log.info("/inquiry/public/down/decide/back 耗时:" + (System.currentTimeMillis() - start));
+        logger.log("公共询价", "买家采纳或拒绝之后,上传到报价方UAS的回调", "size: " + idList.size(), Constant.UU, enUU, InquirySource.ERP.name());
+        return map;
+    }
+
+    /**
+     * 将报价方在商城报价的单据同步到报价方UAS
+     *
+     * @param enUU 报价企业UU
+     * @author dongbw
+     * @date 2018年7月3日 16:21
+     */
+    @HttpLog
+    @RequestMapping(value = "/down/reply", method = RequestMethod.GET)
+    public List<PublicInquiryItem> downReply(Long enUU) {
+        long start = System.currentTimeMillis();
+        List<PublicInquiryItem> details = publicInquiryService.findNotUploadToUas(enUU);
+        log.info("/inquiry/public/quotation 耗时:" + (System.currentTimeMillis() - start));
+        logger.log("公共询价", "ERP获取供应商报价信息", "size: " + details.size(), Constant.UU, enUU, InquirySource.ERP.name());
+        return details;
+    }
+
+    /**
+     * 将报价方在商城报价的单据同步到报价方UAS 之后 回调 修改状态
+     *
+     * @param enUU 报价企业UU
+     * @param ids 报价单明细id list
+     * @author dongbw
+     * @date 2018年7月3日 16:21
+     */
+    @HttpLog
+    @RequestMapping(value = "/down/reply/back", method = RequestMethod.POST)
+    public void onReplyDownSuccess(String ids, Long enUU) throws UnsupportedEncodingException {
+        long start = System.currentTimeMillis();
+        String[] idArray = URLDecoder.decode(ids, "UTF-8").split(",");
+        logger.log("公共询价", "将报价方在商城报价的单据同步到报价方UAS 之后 回调 修改状态", "id: " + idArray, Constant.UU, enUU, InquirySource.ERP.name());
+        publicInquiryService.onReplyDownLoadSuccess(idArray);
+        log.info("/inquiry/public/down/reply/back post 耗时:" + (System.currentTimeMillis() - start));
+    }
+}

+ 25 - 0
src/main/java/com/uas/ps/inquiry/controller/InquiryForSaleController.java

@@ -145,6 +145,31 @@ public class InquiryForSaleController {
         }
     }
 
+    /**
+     * 保存报价接口
+     *
+     * 后续统一使用
+     * @param publicInquiryItem
+     * @return
+     * @throws Exception
+     */
+    @HttpLog
+    @RequestMapping(value = "/item/saveQuote", method = RequestMethod.POST)
+    public ModelMap saveQuote(@RequestBody PublicInquiryItem publicInquiryItem) throws Exception {
+        Long start = System.currentTimeMillis();
+        ModelMap result = saleService.saveQuote(publicInquiryItem);
+        log.info("/inquiry/sale/item/saveQuote post 耗时:" + (System.currentTimeMillis() - start));
+        publicInquiryService.ReceiveMessage(publicInquiryItem, InquirySource.MALL.name());
+//        if (null != item) {
+//            PublicInquiry inquiry = item.getInquiry();
+//            inquiry.setQuteId(item.getId());
+//            return JSON.toJSONString(inquiry);
+//        } else {
+//            throw new Exception("保存失败");
+//        }
+        return result;
+    }
+
     /**
      * 保存询价信息
      *

+ 0 - 122
src/main/java/com/uas/ps/inquiry/controller/PublicInquiryController.java

@@ -4,11 +4,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.uas.ps.core.logging.BufferedLoggerManager;
 import com.uas.ps.httplog.annotation.HttpLog;
 import com.uas.ps.inquiry.domain.IPage;
-import com.uas.ps.inquiry.entity.BatchInquiry;
 import com.uas.ps.inquiry.entity.Constant;
-import com.uas.ps.inquiry.entity.Inquiry;
-import com.uas.ps.inquiry.entity.InquiryDecide;
-import com.uas.ps.inquiry.entity.InquiryDetail;
 import com.uas.ps.inquiry.entity.InquiryMessage;
 import com.uas.ps.inquiry.entity.InquirySource;
 import com.uas.ps.inquiry.entity.OrderStatus;
@@ -22,20 +18,16 @@ import com.uas.ps.inquiry.service.AttachService;
 import com.uas.ps.inquiry.service.InquiryForSaleService;
 import com.uas.ps.inquiry.service.PublicInquiryService;
 import com.uas.ps.inquiry.support.InquiryBufferedLogger;
-import javassist.NotFoundException;
 import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Sort;
 import org.springframework.ui.ModelMap;
 import org.springframework.util.StringUtils;
-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.RestController;
 
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
 import java.rmi.AccessException;
 import java.util.List;
 import java.util.Map;
@@ -63,120 +55,6 @@ public class PublicInquiryController {
 
     private final static Logger log = Logger.getLogger(Logger.class);
 
-    /**
-     * 将买家ERP的公共询价写到公共询价服务中心
-     *
-     * @param inquiries    公共询价信息
-     * @param enuu    询价企业UU
-     * @param address 询价企业地址信息
-     * @return
-     * @throws UnsupportedEncodingException
-     */
-    @HttpLog
-    @RequestMapping(method = RequestMethod.POST)
-    public void saveInquiries(@RequestBody List<BatchInquiry> inquiries, Long enuu, String address) throws NotFoundException, UnsupportedEncodingException {
-        long start = System.currentTimeMillis();
-        publicInquiryService.save(inquiries, enuu, URLDecoder.decode(address, "UTF-8"));
-        log.info("/inquiry/public post 耗时:" + (System.currentTimeMillis() - start));
-        logger.log("公共询价", "ERP上传公共询价", "size: " + inquiries.size(), Constant.UU, enuu, InquirySource.ERP.name());
-    }
-
-    /**
-     * erp的公共询价单提交待审核时,更新公共询价服务中心的单据设置为不能报价
-     *
-     * @param inquiries 封装的数据信息
-     * @param enuu 询价企业UU
-     * @throws UnsupportedEncodingException
-     */
-    @HttpLog
-    @RequestMapping(value = "/check", method = RequestMethod.POST)
-    public void updateInquiryStatus(@RequestBody List<BatchInquiry> inquiries, Long enuu) throws UnsupportedEncodingException {
-        long start = System.currentTimeMillis();
-        publicInquiryService.updateStatus(inquiries, enuu);
-        log.info("/inquiry/public/check post 耗时:" + (System.currentTimeMillis() - start));
-        logger.log("公共询价", "ERP设置公共询价不能报价", "size: " + inquiries.size(), Constant.UU, enuu, InquirySource.ERP.name());
-    }
-
-    /**
-     * (针对客户)获取公共询价服务中心供应商的报价信息
-     *
-     * @param enuu 询价企业UU
-     * @author hejq
-     * @date 2018-01-14 15:20
-     */
-    @HttpLog
-    @RequestMapping(value = "/quotation", method = RequestMethod.GET)
-    public List<InquiryDetail> getReply(Long enuu) {
-        long start = System.currentTimeMillis();
-        List<InquiryDetail> details = publicInquiryService.findNotUploadReply(enuu);
-        log.info("/inquiry/public/quotation 耗时:" + (System.currentTimeMillis() - start));
-        logger.log("公共询价", "ERP获取供应商报价信息", "size: " + details.size(), Constant.UU, enuu, InquirySource.ERP.name());
-        return details;
-    }
-
-    /**
-     * 公共询价服务中心的报价信息传到买家ERP之后,修改公共询价服务中心里面的询价单明细的上传状态
-     *
-     * @param data 传回的id串
-     * @return
-     * @throws UnsupportedEncodingException
-     */
-    @HttpLog
-    @RequestMapping(value = "/reply/back", method = RequestMethod.POST)
-    public void onReplySuccess(@RequestBody String data, Long enuu) throws UnsupportedEncodingException {
-        long start = System.currentTimeMillis();
-        String[] idArray = URLDecoder.decode(data, "UTF-8").split(",");
-        logger.log("公共询价", "ERP获取报价信息返回id", "id: " + idArray, Constant.UU, enuu, InquirySource.ERP.name());
-        publicInquiryService.onReplyUploadSuccess(idArray);
-        log.info("/inquiry/public/reply/back post 耗时:" + (System.currentTimeMillis() - start));
-    }
-
-    /**
-     * 买家在收到报价信息后,点击提交按钮后,状态传至公共询价服务中心,至此公共询价服务中心的供应商不能再对这张询价单进行报价
-     *
-     * @param details 封装的data信息
-     * @throws UnsupportedEncodingException
-     */
-    @HttpLog
-    @RequestMapping(value = "/checking", method = RequestMethod.POST)
-    public void checkInquiry(@RequestBody List<InquiryDetail> details , Long enuu) throws UnsupportedEncodingException {
-        long start = System.currentTimeMillis();
-        logger.log("公共询价", "ERP提交报价信息应用禁止报价", "size: " + details.size(), Constant.UU, enuu, InquirySource.ERP.name());
-        publicInquiryService.updateInquiryStatus(details, enuu);
-        log.info("/inquiry/public/checking post 耗时:" + (System.currentTimeMillis() - start));
-    }
-
-    /**
-     * 买家ERP(不)采纳了价格之后,修改公共询价服务中心里面的报价信息的状态
-     *
-     * @return 封装的data信息
-     * @throws UnsupportedEncodingException
-     */
-    @HttpLog
-    @RequestMapping(value = "/reply/decide", method = RequestMethod.POST)
-    public void onReplyDecide(@RequestBody List<InquiryDecide> decides, Long enuu) throws UnsupportedEncodingException {
-        long start = System.currentTimeMillis();
-        logger.log("公共询价", "ERP针对供应报价信息进行(不)采纳操作", "size: " + decides.size(), Constant.UU, enuu, InquirySource.ERP.name());
-        publicInquiryService.onReplyDecide(decides, enuu);
-        log.info("/inquiry/public/reply/decide post 耗时:" + (System.currentTimeMillis() - start));
-    }
-
-    /**
-     * 买家ERP作废询价单后,修改公共询价服务中心里面的状态
-     *
-     * @param data 封装的询价信息
-     * @return
-     * @throws UnsupportedEncodingException
-     */
-    @HttpLog
-    @RequestMapping(value = "/invalid", method = RequestMethod.POST)
-    public void onReplyInvalid(@RequestBody List<Inquiry> inquiries, Long enuu) throws UnsupportedEncodingException {
-        long start = System.currentTimeMillis();
-        logger.log("公共询价", "ERP作废公共询价单返回数据到公共服务", "size: " + inquiries.size(), Constant.UU, enuu, InquirySource.ERP.name());
-        publicInquiryService.onReplyInvalid(inquiries, enuu);
-        log.info("/inquiry/public/invalid post 耗时:" + (System.currentTimeMillis() - start));
-    }
-
     /**
      * 将客户的公共询价列表中一条数据转成询价报价单数据
      *

+ 19 - 0
src/main/java/com/uas/ps/inquiry/dao/PublicInquiryItemDao.java

@@ -93,4 +93,23 @@ public interface PublicInquiryItemDao extends JpaRepository<PublicInquiryItem, L
      * @return
      */
     List<PublicInquiryItem> findBySourceIdOrderByOfferTimeDesc(Long sourceId);
+
+    /**
+     * 根据enUU和上传状态获取报价明细
+     * @param vendUU 企业UU
+     * @param status  状态
+     * @return 报价单list
+     */
+    List<PublicInquiryItem> findByVendUUAndDecideDownStatus(Long vendUU, short status);
+
+    /**
+     * 通过企业UU和回复下载状态查询已报价 未传到卖家ERP的单据
+     *
+     * @param vendUU 企业UU
+     * @param replySendStatus 未下载状态202
+     * @author dongbw
+     * @return
+     */
+    @Query(value = "select * from public$inquiryitems d where d.id_venduu = :vendUU and d.id_replysendstatus = :replySendStatus limit 200", nativeQuery = true)
+    List<PublicInquiryItem> findByVendUUAndReplySendStatus(@Param("vendUU")Long vendUU, @Param("replySendStatus") short replySendStatus);
 }

+ 6 - 0
src/main/java/com/uas/ps/inquiry/entity/InquiryDetail.java

@@ -22,6 +22,7 @@ public class InquiryDetail {
 	private Long ve_uu;
 	private String ve_contact;
 	private Long ve_contactuu;
+	private String ve_contacttel;
 	private String id_remark;
 	private Long id_id;
 	private Date id_myfromdate;
@@ -334,6 +335,11 @@ public class InquiryDetail {
         if ("自动询价".equals(item.getInquiry().getRemark())) {
             this.id_quto = 1;
         }
+		this.ve_contactuu = item.getVendUserUU();
+		if (null != item.getUser()) {
+			this.ve_contact = item.getUser().getUserName();
+			this.ve_contacttel = item.getUser().getUserTel();
+		}
 	}
 
 }

+ 4 - 0
src/main/java/com/uas/ps/inquiry/model/InquiryEnRemind.java

@@ -56,6 +56,8 @@ public class InquiryEnRemind implements Serializable {
     @Column(name = "ir_usertel")
     private String userTel;
 
+    /* ********************* 物料信息start***************************** */
+
     /**
      * 询价品牌
      */
@@ -86,6 +88,8 @@ public class InquiryEnRemind implements Serializable {
     @Column(name = "ir_title")
     private String prodTitle;
 
+    /* ********************* 物料信息end***************************** */
+
     /**
      * 需求数量
      */

+ 4 - 0
src/main/java/com/uas/ps/inquiry/model/InquiryRemind.java

@@ -64,6 +64,8 @@ public class InquiryRemind implements Serializable {
     @Column(name = "ir_usertel")
     private String userTel;
 
+    /* ********************* 物料信息start***************************** */
+
     /**
      * 询价品牌
      */
@@ -94,6 +96,8 @@ public class InquiryRemind implements Serializable {
     @Column(name = "ir_title")
     private String prodTitle;
 
+    /* ********************* 物料信息end***************************** */
+
     /**
      * 需求数量
      */

+ 2 - 3
src/main/java/com/uas/ps/inquiry/model/PublicInquiry.java

@@ -2,7 +2,6 @@ package com.uas.ps.inquiry.model;
 
 import com.alibaba.fastjson.annotation.JSONField;
 import com.fasterxml.jackson.annotation.JsonIgnore;
-import org.springframework.util.CollectionUtils;
 
 import javax.persistence.*;
 import java.io.Serializable;
@@ -129,13 +128,13 @@ public class PublicInquiry implements Serializable {
 	private Set<Attach> attachs;
 
 	/**
-	 * 客户已提交
+	 * 客户已提交 1 为已提交 否则为未提交
 	 */
 	@Column(name = "in_checked")
 	private Short check;
 
 	/**
-	 * 是否过期
+	 * 是否过期 1 为过期 否则为未过期
 	 */
 	@Column(name = "in_overdue", insertable = false, updatable = false)
 	private Short overdue;

+ 21 - 18
src/main/java/com/uas/ps/inquiry/model/PublicInquiryItem.java

@@ -1,7 +1,5 @@
 package com.uas.ps.inquiry.model;
 
-import com.alibaba.fastjson.annotation.JSONField;
-import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.uas.ps.entity.Product;
 import com.uas.ps.entity.Status;
 import com.uas.ps.inquiry.entity.Constant;
@@ -127,7 +125,7 @@ public class PublicInquiryItem implements Serializable {
 	private Long vendUserUU;
 
     /**
-     * 供应商企业信息
+     * 供应商用户信息
      */
     @OneToOne(cascade = { CascadeType.MERGE, CascadeType.REFRESH })
     @JoinColumn(name = "id_venduseruu", insertable = false, updatable = false)
@@ -196,7 +194,7 @@ public class PublicInquiryItem implements Serializable {
 	private List<PublicInquiryReply> replies;
 
 	/**
-	 * {未回复、已回复}
+	 * 状态 200 待回复 、201 已回复 、314 已作废
 	 */
 	@Column(name = "id_status")
 	private Short status;
@@ -220,7 +218,7 @@ public class PublicInquiryItem implements Serializable {
 	private Short replySendStatus;
 
 	/**
-	 * 是否采纳
+	 * 是否采纳 1 为已采纳 0为已拒绝  空 未处理
 	 */
 	@Column(name = "id_agreed")
 	private Short agreed;
@@ -238,6 +236,12 @@ public class PublicInquiryItem implements Serializable {
 	@Column(name = "id_decidestatus")
 	private Short decideStatus;
 
+	/**
+	 * 报价方UAS 是否采纳信息传输状态{待上传、已下载}  202 待上传  203  已下载
+	 */
+	@Column(name = "id_decidedownstatus")
+	private Short decideDownStatus;
+
 	/**
 	 * (针对卖家的)作废信息传输状态{待上传、已下载}
 	 */
@@ -267,20 +271,13 @@ public class PublicInquiryItem implements Serializable {
 	private Date date;
 
 	/**
-	 * search项目进行单据是否已过期时实际根据主表中enddate与当前时间的比较获取,但是数据库无字段会报“标识符无效”的错误
-	 * 所以建立此字段,但是此字段不会赋值。
-	 *   在建立索引时,overdue的值加入到了invalid(已失效)的判断条件中,所以此字段的值无实际意义,
-	 *   UAS询价单提交或反提交时,更新此字段,来使询价单明细更新触发器生效,更新询价单明细索引,
-	 *   才能使未过期未报价已提交单据进入失效列表,未过期未报价反提交单据从已失效列表回到待报价列表。
-	 *
-	 *   (1为已提交, 0为被反提交, null为未提交)
+	 *   是否已过期 (目前来看此字段没有用到)
 	 */
 	@Column(name = "id_overdue", insertable = false, updatable = false)
 	private Short overdue;
 
 	/**
-	 * 报价是否已过期  根据vendToDate与当前时间的比较获取,但是数据库无字段会报“标识符无效”的错误
-	 * 所以建立此字段,此字段在视图中赋值。
+	 * 报价是否还有效 (目前来看此字段没有用到)
 	 *
 	 */
 	@Column(name = "id_invalid", insertable = false, updatable = false)
@@ -482,8 +479,6 @@ public class PublicInquiryItem implements Serializable {
 		this.id = id;
 	}
 
-	@JsonIgnore
-	@JSONField(serialize = false)
 	public Long getSourceId() {
 		return sourceId;
 	}
@@ -692,6 +687,14 @@ public class PublicInquiryItem implements Serializable {
 		this.decideStatus = decideStatus;
 	}
 
+	public Short getDecideDownStatus() {
+		return decideDownStatus;
+	}
+
+	public void setDecideDownStatus(Short decideDownStatus) {
+		this.decideDownStatus = decideDownStatus;
+	}
+
 	public Short getCustLap() {
 		return custLap;
 	}
@@ -1094,7 +1097,7 @@ public class PublicInquiryItem implements Serializable {
 	    if(this.erpstatus == null) {
 	        this.erpstatus = Constant.YES;
         }
-		if (this.inquiry.getEndDate() != null) {
+		if (null != this.inquiry && null != this.inquiry.getEndDate()) {
 			return DateUtils
 					.compare(this.inquiry.getEndDate(), new Date(),
 							DateUtils.COMPARE_DAY) >= 0
@@ -1103,7 +1106,7 @@ public class PublicInquiryItem implements Serializable {
 							&& this.agreed == null) && this.erpstatus != Constant.NO);
 		}
 		return this.status == Status.NOT_REPLY.value() || (this.status == Status.REPLIED.value()
-				&& (this.inquiry.getCheck() == null || this.inquiry.getCheck() != Constant.YES)
+				&& (null != this.inquiry && (this.inquiry.getCheck() == null || this.inquiry.getCheck() != Constant.YES))
 				&& this.agreed == null) && this.erpstatus != Constant.NO;
 	}
 

+ 2 - 9
src/main/java/com/uas/ps/inquiry/model/PublicInquiryItemInfo.java

@@ -240,20 +240,13 @@ public class PublicInquiryItemInfo implements Serializable {
 	private Date date;
 
 	/**
-	 * search项目进行单据是否已过期时实际根据主表中enddate与当前时间的比较获取,但是数据库无字段会报“标识符无效”的错误
-	 * 所以建立此字段,但是此字段不会赋值。
-	 *   在建立索引时,overdue的值加入到了invalid(已失效)的判断条件中,所以此字段的值无实际意义,
-	 *   UAS询价单提交或反提交时,更新此字段,来使询价单明细更新触发器生效,更新询价单明细索引,
-	 *   才能使未过期未报价已提交单据进入失效列表,未过期未报价反提交单据从已失效列表回到待报价列表。
-	 *
-	 *   (1为已提交, 0为被反提交, null为未提交)
+	 *  报价是否过期 (目前来看此字段没有用到)
 	 */
 	@Column(name = "id_overdue", insertable = false, updatable = false)
 	private Short overdue;
 
 	/**
-	 * 报价是否已过期  根据vendToDate与当前时间的比较获取,但是数据库无字段会报“标识符无效”的错误
-	 * 所以建立此字段,此字段在视图中赋值。
+	 *  报价是否还有效 (目前来看此字段没有用到)
 	 *
 	 */
 	@Column(name = "id_invalid", insertable = false, updatable = false)

+ 9 - 2
src/main/java/com/uas/ps/inquiry/model/PurcInquiryItem.java

@@ -226,14 +226,21 @@ public class PurcInquiryItem {
 	private Short custLap;
 
 	/**
-	 * search项目进行是否已过期时实际根据主表中enddate与当前时间的比较获取,但是数据库无字段会报“标识符无效”的错误
-	 * 所以建立此字段,但是此字段不会赋值。
+	 * 是否已过期 1为已过期,0为未过期 已过期单据无法报价
 	 * 
 	 * @return
 	 */
 	@Column(name = "id_overdue")
 	private Short overdue;
 
+	/**
+	 * 是否已过期上传状态  待下载   已下载
+	 *
+	 * @return
+	 */
+	@Column(name = "id_overduedownloadstatus")
+	private Short overdueDownloadStatus;
+
 	/**
 	 * 来源ERP或B2B
 	 */

+ 8 - 0
src/main/java/com/uas/ps/inquiry/service/InquiryForSaleService.java

@@ -135,4 +135,12 @@ public interface InquiryForSaleService {
      * @return
      */
     ModelMap allotInquiry(Long userUU, Long enUU, Long itemId);
+
+    /**
+     * 公共询价报价
+     *
+     * @param publicInquiryItem
+     * @return
+     */
+    ModelMap saveQuote(PublicInquiryItem publicInquiryItem);
 }

+ 32 - 4
src/main/java/com/uas/ps/inquiry/service/PublicInquiryService.java

@@ -5,14 +5,13 @@ import com.uas.ps.inquiry.entity.*;
 import com.uas.ps.inquiry.model.*;
 import com.uas.ps.inquiry.page.PageInfo;
 import com.uas.ps.inquiry.page.SearchFilter;
-
-import java.util.List;
-import java.util.Map;
-
 import javassist.NotFoundException;
 import org.springframework.data.domain.Page;
 import org.springframework.ui.ModelMap;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * 公共询价接口
  * <p>
@@ -81,6 +80,12 @@ public interface PublicInquiryService {
      */
     void onReplyUploadSuccess(String[] idArray);
 
+    /**
+     * 下载成功之后,更新报价下载状态
+     * @param idArray 报价单明细id
+     */
+    void onReplyDownLoadSuccess(String[] idArray);
+
     /**
      * ERP提交公共询价单之后,更新平台状态,让公共询价服务中心询价单不能进行报价操作
      *
@@ -276,5 +281,28 @@ public interface PublicInquiryService {
      * @return
      */
     ModelMap countByMonth(Integer year, Integer month);
+
+    /**
+     * 根据enUU获取已被采纳或拒绝的报价单明细
+     * @param enUU  报价企业UU
+     * @return
+     */
+    List<PublicInquiryItem> findDecideNotUploadReply(Long enUU);
+
+    /**
+     * 已被采纳或拒绝的报价单明细 上传买方UAS之后,回调
+     * @param ids  报价单明细ids
+     * @param enUU 报价企业UU
+     * @return
+     */
+    ModelMap downloadDecideBack(List<Long> ids, Long enUU);
+
+    /**
+     * 将在b2c或者b2b报价的单据,上传到卖方UAS
+     * @param enUU 企业UU
+     * @return
+     */
+    List<PublicInquiryItem> findNotUploadToUas(Long enUU);
+
 }
 

+ 86 - 0
src/main/java/com/uas/ps/inquiry/service/impl/InquiryForSaleServiceImpl.java

@@ -718,6 +718,92 @@ public class InquiryForSaleServiceImpl implements InquiryForSaleService {
         return result;
     }
 
+    @Override
+    public ModelMap saveQuote(PublicInquiryItem publicInquiryItem) {
+        ModelMap result = new ModelMap();
+        result.put("success", false);
+        // 判断报价人信息
+        if (StringUtils.isEmpty(publicInquiryItem) || StringUtils.isEmpty(publicInquiryItem.getVendUU()) || StringUtils.isEmpty(publicInquiryItem.getVendUserUU())) {
+            result.put("message", "报价人信息不能为空");
+            return result;
+        }
+        // 是否为自己的询价 并查询公共询价的信息
+        PurcInquiryItemInfo item = inquiryItemInfoDao.findOne(publicInquiryItem.getSourceId());
+        if (StringUtils.isEmpty(item)) {
+            result.put("message", "找不到当前公共询价");
+            return result;
+        }
+        if (item.getInquiry() != null && item.getInquiry().getEnUU().equals(publicInquiryItem.getVendUU())) {
+            result.put("message", "不能对自己单据进行报价");
+            return result;
+        }
+        PublicInquiryItem existInquiry = infoDao.findByVendUUAndSourceId(publicInquiryItem.getVendUU(), publicInquiryItem.getSourceId());
+        // 是否重复报价
+        if (null != existInquiry) {
+            result.put("message", "该单据已报价,不能重复报价");
+            return result;
+        }
+        // 是否已经已经转报价
+        List<PublicInquiry> saleInquiries = inquiryDao.findByEnUUAndCode(item.getInquiry().getEnUU(), item.getInquiry().getCode());
+        PublicInquiry inquiry = new PublicInquiry();
+        // 报价明细
+        PublicInquiryItem inquiryItem = new PublicInquiryItem(  item);
+        inquiryItem.setMinOrderQty(publicInquiryItem.getMinOrderQty());
+        inquiryItem.setMinPackQty(publicInquiryItem.getMinPackQty());
+        inquiryItem.setLeadtime(publicInquiryItem.getLeadtime());
+        inquiryItem.setQutoApp(InquirySource.UU.name());
+        inquiryItem.setReplies(publicInquiryItem.getReplies());
+        inquiryItem.setCurrency(publicInquiryItem.getCurrency());
+        inquiryItem.setTaxrate(publicInquiryItem.getTaxrate());
+        inquiryItem.setVendUU(publicInquiryItem.getVendUU());
+        inquiryItem.setVendUserUU(publicInquiryItem.getVendUserUU());
+        inquiryItem.setReplaceCmpCode(publicInquiryItem.getReplaceCmpCode());
+        inquiryItem.setReplaceBrand(publicInquiryItem.getReplaceCmpCode());
+        inquiryItem.setReplaceSpec(publicInquiryItem.getReplaceCmpCode());
+        inquiryItem.setIsReplace(publicInquiryItem.getIsReplace());
+        if (CollectionUtils.isEmpty(saleInquiries)) {
+            // 附件
+            if (!CollectionUtils.isEmpty(inquiry.getAttachs())) {
+                Set<Attach> attachs = new HashSet<Attach>();
+                for (com.uas.ps.inquiry.model.Attach attach : inquiry.getAttachs()) {
+                    com.uas.ps.inquiry.model.Attach newAttach = new com.uas.ps.inquiry.model.Attach();
+                    newAttach.setDate(new Date());
+                    newAttach.setDescription(attach.getDescription());
+                    newAttach.setName(attach.getName());
+                    newAttach.setPath(attach.getPath());
+                    newAttach.setRelatedKey(attach.getRelatedKey());
+                    newAttach.setSize(attach.getSize());
+                    attachs.add(newAttach);
+                }
+                inquiry.setAttachs(attachs);
+
+            }
+            // 转报价后 主表信息保存
+            inquiry = new PublicInquiry(item.getInquiry());
+            if (null == inquiry.getEnName()) {
+                Enterprise e = enterpriseDao.findOne(inquiry.getEnUU());
+                inquiry.setEnName(e.getEnName());
+            }
+            inquiry = inquiryDao.save(inquiry);
+        } else { // 已经存在
+            inquiry = saleInquiries.get(0);
+            inquiryItem.setInquiry(inquiry);
+        }
+        try {
+            inquiryItem = SaveInquiryItems(inquiry, inquiryItem);
+            // 报价成功后保存到个人物料库中
+            if (null != inquiryItem && !StringUtils.isEmpty(inquiryItem.getInbrand()) && !StringUtils.isEmpty(inquiryItem.getCmpCode())) {
+                saveInquiryItemProduct(inquiryItem);
+            }
+            result.put("success", true);
+            result.put("content", inquiryItem);
+            return result;
+        } catch (Exception e) {
+            result.put("message", e.getMessage());
+            return result;
+        }
+    }
+
     private InquiryEnRemind itemConvertEnRemind(PurcInquiryItem item) {
         InquiryEnRemind remind = new InquiryEnRemind();
         //remind.setEnName(enterprise.getEnName());

+ 3 - 0
src/main/java/com/uas/ps/inquiry/service/impl/InquiryServiceImpl.java

@@ -397,6 +397,7 @@ public class InquiryServiceImpl implements InquiryService {
         // 验证是否重复操作
         validateInquiry(item);
         item.setAgreed(status);
+        item.setDecideDownStatus((short) Status.NOT_UPLOAD.value());
         itemDao.save(item);
         // 更新询价推荐表相关信息
         if (status.equals(Constant.YES)) {
@@ -425,6 +426,7 @@ public class InquiryServiceImpl implements InquiryService {
         // 验证是否重复操作
         validateInquiry(item);
         item.setAgreed(status);
+        item.setDecideDownStatus((short) Status.NOT_UPLOAD.value());
         itemDao.save(item);
         // 更新询价推荐表相关信息
         if (status.equals(Constant.YES)) {
@@ -512,6 +514,7 @@ public class InquiryServiceImpl implements InquiryService {
         validateInquiry(item);
         item.setAgreed(status);
         item.setRefusereason(refusereason);
+        item.setDecideDownStatus((short) Status.NOT_UPLOAD.value());
         itemDao.save(item);
         if (status.equals(Constant.YES)) {
             inquiryRemindDao.updateStatus(item.getSourceId(), Status.ALLOW.value(), item.getVendUU());

+ 75 - 1
src/main/java/com/uas/ps/inquiry/service/impl/PublicInquiryServiceImpl.java

@@ -656,6 +656,17 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
         return new ArrayList<>();
     }
 
+    /**
+     * 查找报价的单据,上传到卖家UAS
+     *
+     * @param enUU 企业UU
+     * @return
+     */
+    @Override
+    public List<PublicInquiryItem> findNotUploadToUas(Long enUU) {
+        return publicInquiryItemDao.findByVendUUAndReplySendStatus(enUU, (short) Status.NOT_UPLOAD.value());
+    }
+
     /**
      * 将公共询价服务中心的公共询价转成ERP的对应的字段
      *
@@ -684,14 +695,40 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
      */
     @Override
     public void onReplyUploadSuccess(String[] idArray) {
+        List<PublicInquiryItem> items = new ArrayList<>();
         for (String id : idArray) {
             PublicInquiryItem item = publicInquiryItemDao.findOne(Long.parseLong(id));
             if (item != null) {
                 item.setBackStatus((short) Status.DOWNLOADED.value());
                 item.setErpstatus(Constant.YES);
-                publicInquiryItemDao.save(item);
+                items.add(item);
             }
         }
+        if (!CollectionUtils.isEmpty(items)) {
+            publicInquiryItemDao.save(items);
+        }
+    }
+
+    /**
+     * 下载完成后更新公共询价服务中心询价单明细的下载状态
+     *
+     * @param idArray 询价单明细id
+     * @author hejq
+     * @date 2018-01-14 12:12
+     */
+    @Override
+    public void onReplyDownLoadSuccess(String[] idArray) {
+        List<PublicInquiryItem> items = new ArrayList<>();
+        for (String id : idArray) {
+            PublicInquiryItem item = publicInquiryItemDao.findOne(Long.parseLong(id));
+            if (item != null) {
+                item.setReplySendStatus((short) Status.DOWNLOADED.value());
+                items.add(item);
+            }
+        }
+        if (!CollectionUtils.isEmpty(items)) {
+            publicInquiryItemDao.save(items);
+        }
     }
 
     /**
@@ -1539,4 +1576,41 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
         }
         return result;
     }
+
+    /**
+     * 根据enUU获取
+     *
+     * @param enUU 报价企业UU
+     * @return
+     */
+    @Override
+    public List<PublicInquiryItem> findDecideNotUploadReply(Long enUU) {
+        String sql = "select id_id id, id_sourceid sourceId, id_agreed agreed, id_refusereason refusereason, id_status status from public$inquiryitems " +
+                "where id_venduu = " + enUU + " and id_decidedownstatus = " + Status.NOT_UPLOAD.value() + " limit 200";
+        return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(PublicInquiryItem.class));
+    }
+
+    /**
+     * 已被采纳或拒绝的报价单明细 上传买方UAS之后,回调
+     *
+     * @param ids 报价单明细ids
+     * @param enUU 报价企业UU
+     * @return
+     */
+    @Override
+    public ModelMap downloadDecideBack(List<Long> ids, Long enUU) {
+        List<PublicInquiryItem> items = publicInquiryItemDao.findAll(ids);
+        List<PublicInquiryItem> saveList = new ArrayList<>();
+        ModelMap map = new ModelMap();
+        for (PublicInquiryItem item : items) {
+            if (enUU.equals(item.getVendUU())) {
+                item.setDecideDownStatus((short) Status.DOWNLOADED.value());
+                saveList.add(item);
+            }
+        }
+        publicInquiryItemDao.save(saveList);
+        map.put("success", true);
+        return map;
+    }
+
 }