Browse Source

Merge branch 'dev'

# Conflicts:
#	src/main/java/com/uas/ps/inquiry/service/impl/PublicInquiryServiceImpl.java
liusw 7 years ago
parent
commit
f58dfd6226

+ 35 - 6
src/main/java/com/uas/ps/inquiry/controller/InquiryForBuyerController.java

@@ -13,6 +13,7 @@ import com.uas.ps.inquiry.page.PageInfo;
 import com.uas.ps.inquiry.page.SearchFilter;
 import com.uas.ps.inquiry.service.InquiryService;
 import com.uas.ps.inquiry.support.InquiryBufferedLogger;
+import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -34,6 +35,8 @@ public class InquiryForBuyerController {
 
     private final static InquiryBufferedLogger logger = BufferedLoggerManager.getLogger(InquiryBufferedLogger.class);
 
+    private final static Logger log = Logger.getLogger(Logger.class);
+
     /**
      * 作为买家,保存更新公共询价单
      *
@@ -43,7 +46,9 @@ public class InquiryForBuyerController {
     @HttpLog
     @RequestMapping(value = "/save", method = RequestMethod.POST)
     public String saveInquiry(@RequestBody PurcInquiry inquiry) throws Exception {
+        long start = System.currentTimeMillis();
         inquiry = inquiryService.saveInquiry(inquiry);
+        log.info("/inquiry/buyer/save post 耗时:" + (System.currentTimeMillis() - start));
         if (null != inquiry.getId()) {
             logger.log("公共询价", "新增公共询价信息", "单号: " + inquiry.getCode() + "生成id: " + inquiry.getId(), inquiry.getRecorderUU(), inquiry.getEnUU(), InquirySource.PLAIN.name());
             return JSONObject.toJSONString(inquiry);
@@ -65,7 +70,9 @@ public class InquiryForBuyerController {
     @RequestMapping(value = "/decide", method = RequestMethod.POST)
     public void decideQuote(Long id, Short status, Long enuu, Long useruu) throws Exception {
         logger.log("公共询价", "通过明细id对供应商报价进行审核操作", "id: " + id + ",采纳状态: " + status, useruu, enuu, InquirySource.PLAIN.name());
+        long start = System.currentTimeMillis();
         inquiryService.decideQuote(id, status);
+        log.info("/inquiry/buyer/decide post 耗时:" + (System.currentTimeMillis() - start));
     }
 
     /**
@@ -80,7 +87,9 @@ public class InquiryForBuyerController {
     @RequestMapping(value = "/adopt", method = RequestMethod.POST)
     public void adoptQuote(Long id, Short status, Long enuu, Long useruu) throws Exception {
         logger.log("公共询价", "通过明细id采纳供应商报价", "id: " + id + ",采纳状态: " + status, useruu, enuu, InquirySource.PLAIN.name());
+        long start = System.currentTimeMillis();
         inquiryService.adpotQuote(id, status);
+        log.info("/inquiry/buyer/adopt post 耗时:" + (System.currentTimeMillis() - start));
     }
 
 
@@ -96,7 +105,9 @@ public class InquiryForBuyerController {
     @RequestMapping(value = "/refuse", method = RequestMethod.POST)
     public void refuseQuote(Long id, Short status, Long enuu, Long useruu,String refusereason) throws Exception {
         logger.log("公共询价", "通过明细id拒绝供应商报价", "id: " + id + ",采纳状态: " + status, useruu, enuu, InquirySource.PLAIN.name());
+        long start = System.currentTimeMillis();
         inquiryService.refuseQuote(id, status,refusereason);
+        log.info("/inquiry/buyer/refuse post 耗时:" + (System.currentTimeMillis() - start));
     }
 
     /**
@@ -110,7 +121,10 @@ public class InquiryForBuyerController {
     @RequestMapping(value = "/detail", method = RequestMethod.GET)
     public InquiryDetailInfo findById(Long id, Long enuu) {
         logger.log("公共询价", "客户查询供应商报价详情", "id: " + id, Constant.UU, enuu, InquirySource.PLAIN.name());
-        return inquiryService.findById(id, enuu);
+        long start = System.currentTimeMillis();
+        InquiryDetailInfo detailInfo = inquiryService.findById(id, enuu);
+        log.info("/inquiry/buyer/save 耗时:" + (System.currentTimeMillis() - start));
+        return detailInfo;
     }
 
     /**
@@ -124,7 +138,10 @@ public class InquiryForBuyerController {
     @RequestMapping(value = "/inquiryList", method = RequestMethod.GET)
     public Page<PurcInquiry> getInquiry(PageInfo pageInfo, SearchFilter searchFilter) {
         logger.log("公共询价", "通过企业UU和分页参数获取已发布的询价信息", null, searchFilter.getUserUU(), searchFilter.getEnUU(), InquirySource.PLAIN.name());
-        return inquiryService.findByPageInfo(pageInfo, searchFilter);
+        long start = System.currentTimeMillis();
+        Page<PurcInquiry> page = inquiryService.findByPageInfo(pageInfo, searchFilter);
+        log.info("/inquiry/buyer/inquiryList 耗时:" + (System.currentTimeMillis() - start));
+        return page;
     }
 
     /**
@@ -140,7 +157,10 @@ public class InquiryForBuyerController {
     @RequestMapping(value = "/list", method = RequestMethod.GET)
     public Page<PurcInquiryItemInfo> getInquiryList(PageInfo pageInfo, SearchFilter searchFilter, String state, Integer overdue) {
         logger.log("公共询价", "通过企业UU和分页参数获取已发布的询价信息", null, searchFilter.getUserUU(), searchFilter.getEnUU(), InquirySource.PLAIN.name());
-        return inquiryService.findTodoByPageInfo(pageInfo, searchFilter, state, overdue);
+        long start = System.currentTimeMillis();
+        Page<PurcInquiryItemInfo> page = inquiryService.findTodoByPageInfo(pageInfo, searchFilter, state, overdue);
+        log.info("/inquiry/buyer/list 耗时:" + (System.currentTimeMillis() - start));
+        return page;
     }
 
     /**
@@ -154,7 +174,10 @@ public class InquiryForBuyerController {
     @RequestMapping(value = "/product/detail", method = RequestMethod.GET)
     public InquiryProductInfo findInquiryDetailById(Long id, Long enuu) {
         logger.log("公共询价", "针对客户查询单个物料明细的报价情况", null, Constant.UU, enuu, InquirySource.PLAIN.name());
-        return inquiryService.findInquiryDetailById(id, enuu);
+        long start = System.currentTimeMillis();
+        InquiryProductInfo info = inquiryService.findInquiryDetailById(id, enuu);
+        log.info("/inquiry/buyer/product/detail 耗时:" + (System.currentTimeMillis() - start));
+        return info;
     }
 
     /**
@@ -170,7 +193,10 @@ public class InquiryForBuyerController {
     @RequestMapping(value = "/quotations", method = RequestMethod.GET)
     public Page<PurcInquiryItemInfo> findQuotationsByPage(PageInfo pageInfo, SearchFilter searchFilter, Long enUU, Long userUU, Short overdue) {
         logger.log("公共询价", "客户查询供应商报价信息", null, userUU, enUU, InquirySource.MALL.name());
-        return inquiryService.findQuotationsByPage(pageInfo, searchFilter, enUU, userUU, overdue);
+        long start = System.currentTimeMillis();
+        Page<PurcInquiryItemInfo> page = inquiryService.findQuotationsByPage(pageInfo, searchFilter, enUU, userUU, overdue);
+        log.info("/inquiry/buyer/quotations 耗时:" + (System.currentTimeMillis() - start));
+        return page;
     }
 
      /**
@@ -181,6 +207,9 @@ public class InquiryForBuyerController {
     @HttpLog
     @RequestMapping(value = "/quotation", method = RequestMethod.GET)
     public PurcInquiryItemInfo findQuotationById(Long id) {
-        return inquiryService.findQuotationById(id);
+        long start = System.currentTimeMillis();
+        PurcInquiryItemInfo itemInfo = inquiryService.findQuotationById(id);
+        log.info("/inquiry/buyer/quotation 耗时:" + (System.currentTimeMillis() - start));
+        return itemInfo;
     }
 }

+ 43 - 9
src/main/java/com/uas/ps/inquiry/controller/InquiryForSaleController.java

@@ -19,6 +19,7 @@ import com.uas.ps.inquiry.page.SearchFilter;
 import com.uas.ps.inquiry.service.InquiryForSaleService;
 import com.uas.ps.inquiry.service.PublicInquiryService;
 import com.uas.ps.inquiry.support.InquiryBufferedLogger;
+import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.ui.ModelMap;
 import org.springframework.util.StringUtils;
@@ -46,6 +47,8 @@ public class InquiryForSaleController {
 
     private final static InquiryBufferedLogger logger = BufferedLoggerManager.getLogger(InquiryBufferedLogger.class);
 
+    private final static Logger log = Logger.getLogger(Logger.class);
+
     /**
      * 通过ID查询报价详情
      *
@@ -56,7 +59,10 @@ public class InquiryForSaleController {
     @RequestMapping(value = "/inquiry/detail", method = RequestMethod.GET)
     public PublicInquiryItem findById(Long itemId, Long en_uu) throws IllegalAccessException {
         logger.log("公共询价", "查询已转报价的明细", "id: " + itemId, Constant.UU, en_uu, InquirySource.PLAIN.name());
-        return saleService.findById(itemId, en_uu);
+        long start = System.currentTimeMillis();
+        PublicInquiryItem item = saleService.findById(itemId, en_uu);
+        log.info("/inquiry/sale/inquiry/detail 耗时:" + (System.currentTimeMillis() - start));
+        return item;
     }
 
     /**
@@ -70,7 +76,10 @@ public class InquiryForSaleController {
     @RequestMapping(value = "/publicInquiry/detail", method = RequestMethod.GET)
     public ModelMap findInquiryById(Long id, Long enuu) {
         logger.log("公共询价", "通过id查询公共询价详情", "id: " + id, Constant.UU, enuu, InquirySource.PLAIN.name());
-        return saleService.findByIdAndEnuu(id, enuu);
+        long start = System.currentTimeMillis();
+        ModelMap map = saleService.findByIdAndEnuu(id, enuu);
+        log.info("/inquiry/sale/publicInquiry/detail 耗时:" + (System.currentTimeMillis() - start));
+        return map;
     }
 
     /**
@@ -83,7 +92,9 @@ public class InquiryForSaleController {
     @HttpLog
     @RequestMapping(value = "/attach", method = RequestMethod.POST)
     public String addAttachs(@RequestBody Attach attach) throws Exception {
+        long start = System.currentTimeMillis();
         attach = saleService.addAttachs(attach);
+        log.info("/inquiry/sale/attach post 耗时:" + (System.currentTimeMillis() - start));
         if (null != attach.getId()) {
             return JSONObject.toJSONString(attach);
         } else {
@@ -100,7 +111,9 @@ public class InquiryForSaleController {
     @HttpLog
     @RequestMapping(value = "/item/add", method = RequestMethod.POST)
     public String saveInquiryItem(@RequestBody PublicInquiryItem item) throws Exception {
+        long start = System.currentTimeMillis();
         item = saleService.add(item);
+        log.info("/inquiry/sale/item/add post 耗时:" + (System.currentTimeMillis() - start));
         if (null != item.getId()) {
             return JSONObject.toJSONString(item);
         } else {
@@ -117,7 +130,9 @@ public class InquiryForSaleController {
     @HttpLog
     @RequestMapping(value = "/item/save", method = RequestMethod.POST)
     public String saveInquiryItems(@RequestBody PublicInquiryItem item) throws Exception {
+        long start = System.currentTimeMillis();
         item = saleService.saveItem(item);
+        log.info("/inquiry/sale/item/save post 耗时:" + (System.currentTimeMillis() - start));
         logger.log("公共询价", "作为卖家,对公共询价进行报价操作", "sourceid: " + item.getSourceId() == null ? null : item.getSourceId() + ", id" + item.getId(),
                 item.getVendUserUU(), item.getVendUU(), item.getQutoApp());
         publicInquiryService.ReceiveMessage(item,InquirySource.MALL.name());
@@ -142,7 +157,9 @@ public class InquiryForSaleController {
     @HttpLog
     @RequestMapping(value = "/renew", method = RequestMethod.POST)
     public String saveItem(@RequestBody PublicInquiryItem inquiryItem) throws Exception {
+        long start = System.currentTimeMillis();
         inquiryItem = saleService.save(inquiryItem);
+        log.info("/inquiry/sale/rnew post 耗时:" + (System.currentTimeMillis() - start));
         return JSONObject.toJSONString(inquiryItem);
     }
 
@@ -157,7 +174,10 @@ public class InquiryForSaleController {
     @RequestMapping(value = "/quote", method = RequestMethod.GET)
     public PublicInquiryItem findBySourceId(Long id, Long en_uu) {
         logger.log("公共询价", "查询公共询价单是否已报价", "id: " + id, Constant.UU, en_uu, InquirySource.PLAIN.name());
-        return saleService.findBySourceIdAndEnuu(id, en_uu);
+        long start = System.currentTimeMillis();
+        PublicInquiryItem item = saleService.findBySourceIdAndEnuu(id, en_uu);
+        log.info("/inquiry/sale/quote 耗时:" + (System.currentTimeMillis() - start));
+        return item;
     }
 
     /**
@@ -174,13 +194,16 @@ public class InquiryForSaleController {
     @HttpLog
     @RequestMapping(value = "/mobile/quote", method = RequestMethod.POST)
     public ModelMap quote(Long inquiryItemId, Long en_uu, Long useruu, Long leadtime, Double minPackQty, Double minOrderQty, String replies, String currency, Float taxrate) throws Exception {
+        long start = System.currentTimeMillis();
         if (StringUtils.isEmpty(en_uu) || StringUtils.isEmpty(useruu)) {
             throw new IllegalOperatorException("en_uu或useruu不能为空");
         }
         List<PublicInquiryReply> replyList = JSONObject.parseArray(replies, PublicInquiryReply.class);
         logger.log("公共询价", "作为卖家,对公共询价进行报价操作", "sourceid: " + inquiryItemId,
                 useruu, en_uu, InquirySource.UU.name());
-        return saleService.quoteInquiry(inquiryItemId, en_uu, useruu, replyList, leadtime, minPackQty, minOrderQty, currency, taxrate);
+        ModelMap map = saleService.quoteInquiry(inquiryItemId, en_uu, useruu, replyList, leadtime, minPackQty, minOrderQty, currency, taxrate);
+        log.info("/inquiry/sale/mobile/quote post 耗时:" + (System.currentTimeMillis() - start));
+        return map;
     }
 
     /**
@@ -195,13 +218,16 @@ public class InquiryForSaleController {
     @HttpLog
     @RequestMapping(value = "/remind", method = RequestMethod.GET)
     public IPage<InquiryRemind> findByUserInfo(Long useruu, Long enuu, PageInfo pageInfo, SearchFilter searchFilter) {
+        long start = System.currentTimeMillis();
         if (useruu == null || enuu == null) {
             throw new IllegalAccessError("非法访问");
         } else {
             pageInfo.filter("vendUU", enuu);
             pageInfo.filter("vendUserUU", useruu);
             logger.log("公共询价", "查询推荐询价信息", null, useruu, enuu, InquirySource.PLAIN.name());
-            return saleService.findRemindByPageInfo(pageInfo, searchFilter);
+            IPage<InquiryRemind> remindIPage = saleService.findRemindByPageInfo(pageInfo, searchFilter);
+            log.info("/inquiry/sale/remind 耗时:" + (System.currentTimeMillis() - start));
+            return remindIPage;
         }
     }
 
@@ -216,12 +242,15 @@ public class InquiryForSaleController {
     @HttpLog
     @RequestMapping(value = "/enremind", method = RequestMethod.GET)
     public IPage<InquiryEnRemind> findEnRemind(Long useruu, Long enuu, PageInfo pageInfo, SearchFilter searchFilter) {
+        long start = System.currentTimeMillis();
         if (useruu == null || enuu == null) {
             throw new IllegalAccessError("非法访问");
         } else {
             pageInfo.filter("vendUU", enuu);
             logger.log("公共询价", "查询企业推荐询价信息", null, useruu, enuu, InquirySource.PLAIN.name());
-            return saleService.findEnRemindByPageInfo(pageInfo, searchFilter);
+            IPage<InquiryEnRemind> enRemindIPage = saleService.findEnRemindByPageInfo(pageInfo, searchFilter);
+            log.info("/inquiry/sale/enremind 耗时:" + (System.currentTimeMillis() - start));
+            return enRemindIPage;
         }
     }
 
@@ -234,8 +263,10 @@ public class InquiryForSaleController {
     @HttpLog
     @RequestMapping(value = "/allot/enremind", method = RequestMethod.POST)
     public ModelMap allotEnRemind(Long userUU, Long enRemindId) {
-        // logger.log("公共询价", "", null, useruu, enuu, InquirySource.PLAIN.name());
-        return saleService.allotEnRemind(userUU, enRemindId);
+        long start = System.currentTimeMillis();
+        ModelMap modelMap = saleService.allotEnRemind(userUU, enRemindId);
+        log.info("/inquiry/sale/allot/enremind post  耗时:" + (System.currentTimeMillis() - start));
+        return modelMap;
     }
 
     /**
@@ -248,7 +279,10 @@ public class InquiryForSaleController {
     @HttpLog
     @RequestMapping(value = "/allot/inquiry", method = RequestMethod.POST)
     public ModelMap allotInquiry(Long userUU, Long enUU, Long itemId) {
-        return saleService.allotInquiry(userUU, enUU, itemId);
+        long start = System.currentTimeMillis();
+        ModelMap map = saleService.allotInquiry(userUU, enUU, itemId);
+        log.info("/inquiry/sale/allot/inquiry post 耗时:" + (System.currentTimeMillis() - start));
+        return map;
     }
 
 }

+ 84 - 21
src/main/java/com/uas/ps/inquiry/controller/PublicInquiryController.java

@@ -12,6 +12,7 @@ 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;
+import com.uas.ps.inquiry.model.Attach;
 import com.uas.ps.inquiry.model.PublicInquiryItemInfo;
 import com.uas.ps.inquiry.model.PurcInquiry;
 import com.uas.ps.inquiry.model.PurcInquiryItemInfo;
@@ -21,20 +22,23 @@ 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 java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import java.rmi.AccessException;
-import java.util.List;
-import java.util.Map;
-
 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.*;
+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;
 
 
 /**
@@ -57,6 +61,8 @@ public class PublicInquiryController {
 
     private final static InquiryBufferedLogger logger = BufferedLoggerManager.getLogger(InquiryBufferedLogger.class);
 
+    private final static Logger log = Logger.getLogger(Logger.class);
+
     /**
      * 将买家ERP的公共询价写到公共询价服务中心
      *
@@ -69,7 +75,9 @@ public class PublicInquiryController {
     @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());
     }
 
@@ -83,7 +91,9 @@ public class PublicInquiryController {
     @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());
     }
 
@@ -97,7 +107,9 @@ public class PublicInquiryController {
     @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;
     }
@@ -112,9 +124,11 @@ public class PublicInquiryController {
     @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));
     }
 
     /**
@@ -126,8 +140,10 @@ public class PublicInquiryController {
     @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));
     }
 
     /**
@@ -139,8 +155,10 @@ public class PublicInquiryController {
     @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));
     }
 
     /**
@@ -153,8 +171,10 @@ public class PublicInquiryController {
     @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));
     }
 
     /**
@@ -170,7 +190,10 @@ public class PublicInquiryController {
     @HttpLog
     @RequestMapping(value = "/turntoInquiry", method = RequestMethod.POST)
     private ModelMap transtoInquiry(Long id, Long enuu, Long useruu) {
-        return publicInquiryService.transtoInquiry(id, enuu, useruu);
+        long start = System.currentTimeMillis();
+        ModelMap map = publicInquiryService.transtoInquiry(id, enuu, useruu);
+        log.info("/inquiry/public/turntoInquiry post 耗时:" + (System.currentTimeMillis() - start));
+        return map;
     }
 
     /**
@@ -185,12 +208,15 @@ public class PublicInquiryController {
     @HttpLog
     @RequestMapping(method = RequestMethod.GET)
     public IPage<PurcInquiryItemInfo> getInquiry(PageInfo pageInfo, SearchFilter searchFilter, String distributes) {
+        long start = System.currentTimeMillis();
         if (!StringUtils.isEmpty(distributes)) {
             List<Long> distribute = JSONObject.parseArray(distributes, Long.class);
             searchFilter.setDistribute(distribute);
         }
+        IPage<PurcInquiryItemInfo> page = publicInquiryService.findTodoByPageInfo(pageInfo, searchFilter);
         logger.log("公共询价", "查询公共询价信息", null, searchFilter.getUserUU(), searchFilter.getEnUU(), InquirySource.PLAIN.name());
-        return publicInquiryService.findTodoByPageInfo(pageInfo, searchFilter);
+        log.info("/inquiry/public 耗时:" + (System.currentTimeMillis() - start));
+        return page;
     }
 
     /**
@@ -203,14 +229,17 @@ public class PublicInquiryController {
     @HttpLog
     @RequestMapping(value = "/inquiryList", method = RequestMethod.GET)
     public IPage<PurcInquiryItemInfo> getInquiryList(PageInfo pageInfo, SearchFilter searchFilter) {
+        long start = System.currentTimeMillis();
         if (null != searchFilter.getUserUU()) {
             pageInfo.filter("userUU", searchFilter.getUserUU());
         }
         if (null != searchFilter.getEnUU()) {
             pageInfo.filter("inquiry.enUU", searchFilter.getEnUU());
         }
+        IPage<PurcInquiryItemInfo> infoIPage = publicInquiryService.findTodoByPageInfo(pageInfo, searchFilter);
         logger.log("公共询价", "查询已发布公共询价信息", null, searchFilter.getUserUU(), searchFilter.getEnUU(), InquirySource.MALL.name());
-        return publicInquiryService.findTodoByPageInfo(pageInfo, searchFilter);
+        log.info("/inquiry/public/inquiryList 耗时:" + (System.currentTimeMillis() - start));
+        return infoIPage;
     }
 
     /**
@@ -230,6 +259,7 @@ public class PublicInquiryController {
     @RequestMapping(value = "/mobile", method = RequestMethod.GET)
     public ModelMap publincInquiry(Integer page, Integer size, Long en_uu, String _state,
                                    String keyword, String user_tel, Long fromDate, Long endDate) {
+        long start = System.currentTimeMillis();
         ModelMap map = new ModelMap();
         PageInfo pageInfo = setPageInfo(page, size);
         SearchFilter filter = new SearchFilter();
@@ -260,6 +290,7 @@ public class PublicInquiryController {
             map.put("content", publicInquiryService.findTodoByPageInfo(pageInfo, filter).getContent());
             return map;
         }
+        log.info("/inquiry/mobile 耗时:" + (System.currentTimeMillis() - start));
         return map;
     }
 
@@ -304,6 +335,7 @@ public class PublicInquiryController {
     @RequestMapping(value = "/mobile/v2", method = RequestMethod.GET)
     public ModelMap publicInquiry(Integer page, Integer size, Long en_uu, String _state,
                                   String keyword, String user_tel, Long fromDate, Long endDate) {
+        long start = System.currentTimeMillis();
         ModelMap map = new ModelMap();
         PageInfo pageInfo = setPageInfo(page, size);
         SearchFilter filter = new SearchFilter();
@@ -334,6 +366,7 @@ public class PublicInquiryController {
             map.put("content", publicInquiryService.covertRemindToInquiry(saleService.findRemindByPageInfo(pageInfo, filter).getContent()));
             return map;
         }
+        log.info("/inquiry/public/mobile/v2 耗时:" + (System.currentTimeMillis() - start));
         return map;
     }
 
@@ -349,6 +382,7 @@ public class PublicInquiryController {
     @HttpLog
     @RequestMapping(value = "/quotation/list", method = RequestMethod.GET)
     public IPage<PublicInquiryItemInfo> getQuotation(PageInfo pageInfo, String filter, String _state, Short overdue) {
+        long start = System.currentTimeMillis();
         SearchFilter searchFilter = JSONObject.parseObject(filter, SearchFilter.class);
         if (null != searchFilter.getVendUU()) {
             pageInfo.filter("vendUU", searchFilter.getVendUU());
@@ -361,7 +395,9 @@ public class PublicInquiryController {
             pageInfo = publicInquiryService.covert(pageInfo, _state, overdue);
         }
         logger.log("公共询价", "查询已转报价询价列表信息", "状态: " + _state == null ? "all" : _state, searchFilter.getUserUU(), searchFilter.getEnUU(), InquirySource.PLAIN.name());
-        return publicInquiryService.findByPageInfo(pageInfo, searchFilter);
+        IPage<PublicInquiryItemInfo> inquiryItemInfoIPage = publicInquiryService.findByPageInfo(pageInfo, searchFilter);
+        log.info("/inquiry/public/quotation/list 耗时:" + (System.currentTimeMillis() - start));
+        return inquiryItemInfoIPage;
     }
 
     /**
@@ -373,10 +409,13 @@ public class PublicInquiryController {
     @HttpLog
     @RequestMapping(value = "/quotation/one", method = RequestMethod.GET)
     public PublicInquiryItemInfo getQuotationById(Long id, Long enuu, Long useruu) throws AccessException {
+        long start = System.currentTimeMillis();
         if (StringUtils.isEmpty(enuu) || StringUtils.isEmpty(useruu)) {
             throw new IllegalAccessError("暂无访问权限");
         }
-        return publicInquiryService.findOneInfo(id, enuu, useruu);
+        PublicInquiryItemInfo info = publicInquiryService.findOneInfo(id, enuu, useruu);
+        log.info("/inquiry/public/quotation/one 耗时:" + (System.currentTimeMillis() - start));
+        return info;
     }
 
     /**
@@ -390,11 +429,14 @@ public class PublicInquiryController {
     @HttpLog
     @RequestMapping(value = "/quotationList", method = RequestMethod.GET)
     public Page<PublicInquiryItemInfo> getQuotationList(PageInfo pageInfo, String filter, String _state, Short overdue) {
+        long start = System.currentTimeMillis();
         SearchFilter searchFilter = JSONObject.parseObject(filter, SearchFilter.class);
         if (null != _state) {
             pageInfo = publicInquiryService.covert(pageInfo, _state, overdue);
         }
-        return publicInquiryService.findListByPageInfo(pageInfo, searchFilter);
+        Page<PublicInquiryItemInfo> itemInfoPage = publicInquiryService.findListByPageInfo(pageInfo, searchFilter);
+        log.info("/inquiry/public/quotationList 耗时:" + (System.currentTimeMillis() - start));
+        return itemInfoPage;
     }
 
     /**
@@ -407,8 +449,11 @@ public class PublicInquiryController {
     @HttpLog
     @RequestMapping(value = "/messageList", method = RequestMethod.GET)
     public List<InquiryMessage> getList(Long enuu, Integer size) {
+        long start = System.currentTimeMillis();
         logger.log("公共询价", "获取最新的公共询价", "大小: " + size, Constant.UU, enuu, InquirySource.PLAIN.name());
-        return publicInquiryService.getMessageList(enuu, size);
+        List<InquiryMessage> messages = publicInquiryService.getMessageList(enuu, size);
+        log.info("/inquiry/public/messageList 耗时:" + (System.currentTimeMillis() - start));
+        return messages;
     }
 
     /**
@@ -420,7 +465,10 @@ public class PublicInquiryController {
     @HttpLog
     @RequestMapping(value = "/attachUrl", method = RequestMethod.GET)
     public com.uas.ps.inquiry.model.Attach getAttach(Long id) {
-        return attachService.findById(id);
+        long start = System.currentTimeMillis();
+        Attach attach = attachService.findById(id);
+        log.info("/inquiry/public/atatchUrl 耗时:" + (System.currentTimeMillis() - start));
+        return attach;
     }
 
     /**
@@ -432,8 +480,11 @@ public class PublicInquiryController {
     @HttpLog
     @RequestMapping(value = "/findInquiryById", method = RequestMethod.GET)
     public PurcInquiry findById(Long id, Long enuu) {
+        long start = System.currentTimeMillis();
         logger.log("公共询价", "获取询价信息", "id: " + id, Constant.UU, enuu, InquirySource.PLAIN.name());
-        return publicInquiryService.findInquiryById(id);
+        PurcInquiry inquiry = publicInquiryService.findInquiryById(id);
+        log.info("/inquiry/public/findInquiryById 耗时:" + (System.currentTimeMillis() - start));
+        return inquiry;
     }
 
     /**
@@ -444,7 +495,10 @@ public class PublicInquiryController {
     @HttpLog
     @RequestMapping(value = "/findCodeRankingList", method = RequestMethod.GET)
     public List<Map<String, Object>> findCodeRankingList() {
-        return publicInquiryService.findCodeRankingList();
+        long start = System.currentTimeMillis();
+        List<Map<String, Object>> list = publicInquiryService.findCodeRankingList();
+        log.info("/inquiry/public/findCodeRankingList 耗时:" + (System.currentTimeMillis() - start));
+        return list;
     }
 
     /**
@@ -457,8 +511,11 @@ public class PublicInquiryController {
     @HttpLog
     @RequestMapping(value = "/findItemByItemId", method = RequestMethod.GET)
     public PurcInquiryItemInfo findItemByItemId(Long itemId, Long enuu) {
+        long start = System.currentTimeMillis();
+        PurcInquiryItemInfo itemInfo = publicInquiryService.findItemByItemId(itemId, enuu);
         logger.log("公共询价", "获取询价信息", "id: " + itemId, Constant.UU, enuu, InquirySource.B2B.name());
-        return publicInquiryService.findItemByItemId(itemId, enuu);
+        log.info("/inquiry/public/findItemByItemId 耗时:" + (System.currentTimeMillis() - start));
+        return itemInfo;
     }
 
     /**
@@ -468,7 +525,10 @@ public class PublicInquiryController {
      */
     @RequestMapping(value = "/getPurcInquiryItemCount", method = RequestMethod.GET)
     public ModelMap getPurcInquiryItemCount() {
-        return publicInquiryService.getPurcInquiryItemCount();
+        long start = System.currentTimeMillis();
+        ModelMap map = publicInquiryService.getPurcInquiryItemCount();
+        log.info("/inquiry/public/getPurcInquiryItemCount 耗时:" + (System.currentTimeMillis() - start));
+        return map;
     }
 
     /**
@@ -479,6 +539,9 @@ public class PublicInquiryController {
      */
     @RequestMapping(value = "/getPurcInquiryItemCountByMonth", method = RequestMethod.GET)
     public ModelMap getPurcInquiryItemCountByMonth(Integer year, Integer month) {
-        return publicInquiryService.countByMonth(year, month);
+        long start = System.currentTimeMillis();
+        ModelMap map = publicInquiryService.countByMonth(year, month);
+        log.info("/inquiry/public/getPurcInquiryItemCountByMonth 耗时:" + (System.currentTimeMillis() - start));
+        return map;
     }
 }

+ 65 - 0
src/main/java/com/uas/ps/inquiry/model/PublicInquiryItem.java

@@ -411,6 +411,7 @@ public class PublicInquiryItem implements Serializable {
      */
     @Column(name = "id_inbrand")
     private String inbrand;
+
     /**
      * ******end*******
      */
@@ -445,6 +446,34 @@ public class PublicInquiryItem implements Serializable {
 	@Column(name = "id_cust_currency")
 	private String custCurrency;
 
+	/******** 替代物料信息  */
+
+	/**
+	 * 替代型号
+	 */
+	@Column(name = "id_replace_cmpcode")
+	private String replaceCmpCode;
+
+	/**
+	 * 替代规格
+	 */
+	@Column(name = "id_replace_spec")
+	private String replaceSpec;
+
+	/**
+	 * 替代品牌
+	 */
+	@Column(name = "id_replace_brand")
+	private String replaceBrand;
+
+	/**
+	 * 是否替代物料报价  1 是替代料报价, 0为普通报价
+	 */
+	@Column(name = "id_isreplace")
+	private Short isReplace = 0;
+
+	/** end  */
+
 	public Long getId() {
 		return id;
 	}
@@ -959,6 +988,42 @@ public class PublicInquiryItem implements Serializable {
 		this.refusereason = refusereason;
 	}
 
+	public void setRemainingTime(Long remainingTime) {
+		this.remainingTime = remainingTime;
+	}
+
+	public String getReplaceCmpCode() {
+		return replaceCmpCode;
+	}
+
+	public void setReplaceCmpCode(String replaceCmpCode) {
+		this.replaceCmpCode = replaceCmpCode;
+	}
+
+	public String getReplaceSpec() {
+		return replaceSpec;
+	}
+
+	public void setReplaceSpec(String replaceSpec) {
+		this.replaceSpec = replaceSpec;
+	}
+
+	public String getReplaceBrand() {
+		return replaceBrand;
+	}
+
+	public void setReplaceBrand(String replaceBrand) {
+		this.replaceBrand = replaceBrand;
+	}
+
+	public Short getIsReplace() {
+		return isReplace;
+	}
+
+	public void setIsReplace(Short isReplace) {
+		this.isReplace = isReplace;
+	}
+
 	/**
 	 * 将公共询价单转成报价单
 	 *

+ 60 - 0
src/main/java/com/uas/ps/inquiry/model/PublicInquiryItemInfo.java

@@ -433,6 +433,34 @@ public class PublicInquiryItemInfo implements Serializable {
 	@Column(name = "id_refusereason")
 	private String refusereason;
 
+	/******** 替代物料信息  */
+
+	/**
+	 * 替代型号
+	 */
+	@Column(name = "id_replace_cmpcode")
+	private String replaceCmpCode;
+
+	/**
+	 * 替代规格
+	 */
+	@Column(name = "id_replace_spec")
+	private String replaceSpec;
+
+	/**
+	 * 替代品牌
+	 */
+	@Column(name = "id_replace_brand")
+	private String replaceBrand;
+
+	/**
+	 * 是否替代物料报价  1 是替代料报价, 0为普通报价
+	 */
+	@Column(name = "id_isreplace")
+	private Short isReplace = 0;
+
+	/** end  */
+
 	public User getUser() {
 		return user;
 	}
@@ -941,6 +969,38 @@ public class PublicInquiryItemInfo implements Serializable {
 		this.refusereason = refusereason;
 	}
 
+	public String getReplaceCmpCode() {
+		return replaceCmpCode;
+	}
+
+	public void setReplaceCmpCode(String replaceCmpCode) {
+		this.replaceCmpCode = replaceCmpCode;
+	}
+
+	public String getReplaceSpec() {
+		return replaceSpec;
+	}
+
+	public void setReplaceSpec(String replaceSpec) {
+		this.replaceSpec = replaceSpec;
+	}
+
+	public String getReplaceBrand() {
+		return replaceBrand;
+	}
+
+	public void setReplaceBrand(String replaceBrand) {
+		this.replaceBrand = replaceBrand;
+	}
+
+	public Short getIsReplace() {
+		return isReplace;
+	}
+
+	public void setIsReplace(Short isReplace) {
+		this.isReplace = isReplace;
+	}
+
 	@Override
 	public String toString() {
 		return "PublicInquiryItemInfo{" +

+ 31 - 14
src/main/java/com/uas/ps/inquiry/service/impl/InquiryForSaleServiceImpl.java

@@ -39,6 +39,7 @@ import com.uas.ps.inquiry.support.InquiryBufferedLogger;
 import com.uas.ps.inquiry.util.FlexJsonUtils;
 import com.uas.ps.inquiry.util.HttpUtil;
 import com.uas.ps.inquiry.util.IPageUtils;
+import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Sort;
@@ -53,6 +54,7 @@ import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
+import java.net.URLEncoder;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
@@ -103,6 +105,8 @@ public class InquiryForSaleServiceImpl implements InquiryForSaleService {
      */
     private final static InquiryBufferedLogger logger = BufferedLoggerManager.getLogger(InquiryBufferedLogger.class);
 
+    private final static Logger log = Logger.getLogger(Logger.class);
+
     /**
      * 公共物料访问地址
      */
@@ -162,12 +166,17 @@ public class InquiryForSaleServiceImpl implements InquiryForSaleService {
      */
     @Override
     public PublicInquiryItem add(PublicInquiryItem item) {
+        PublicInquiryItem existInquiry = infoDao.findByVendUUAndSourceId(item.getVendUU(), item.getId());
+        if (null != existInquiry) {
+            throw new IllegalOperatorException("单据已报价,不能重复报价");
+        }
         jdbcTemplate.update("insert into public$inquiryitems(id_id,id_number,id_currency,id_fromdate,id_todate,id_taxrate,id_prid,id_venduu,"
-                        + "id_venduseruu,id_sourceapp,id_status,id_custlap,id_sendstatus,id_sourceid,id_inid,id_kind) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",
+                        + "id_venduseruu,id_sourceapp,id_status,id_custlap,id_sendstatus,id_sourceid,id_inid,id_kind,id_replace_cmpcode,id_replace_spec,id_replace_brand,id_isreplace) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",
                 item.getId(), item.getNumber(), item.getCurrency(), item.getFromDate(), item.getToDate(),
                 item.getTaxrate(), item.getProductId(), item.getVendUU(), item.getVendUserUU(),
                 item.getSource(), item.getStatus(), item.getCustLap(), item.getSendStatus(),
-                item.getSourceId(), item.getInquiry().getId(), item.getInquiry().getKind());
+                item.getSourceId(), item.getInquiry().getId(), item.getInquiry().getKind(),
+                item.getReplaceCmpCode(), item.getReplaceSpec(), item.getReplaceBrand(), item.getIsReplace());
         //回复清单更新
         if(item.getReplies().size() > 0) {
             for (PublicInquiryReply reply1 : item.getReplies()) {
@@ -235,7 +244,8 @@ public class InquiryForSaleServiceImpl implements InquiryForSaleService {
             }
             // 先判断客户询价单是否存在这张单据
             List<PublicInquiry> saleInquiries = inquiryDao.findByEnUUAndCode(inquiry.getEnUU(), inquiry.getCode());
-            if (CollectionUtils.isEmpty(saleInquiries)) {// 新增
+            // 新增
+            if (CollectionUtils.isEmpty(saleInquiries)) {
                 inquiry.setSourceId(inquiry.getId());
                 inquiry.setId(null);
                 inquiry.setInquiryItems(null);
@@ -262,23 +272,18 @@ public class InquiryForSaleServiceImpl implements InquiryForSaleService {
 
                 PublicInquiryItem item = SaveInquiryItems(inquiry, inquiryItem);
                 // 报价成功后保存到个人物料库中
-                if (!StringUtils.isEmpty(item) && !StringUtils.isEmpty(item.getInbrand()) && !StringUtils.isEmpty(item.getCmpCode())) {
+                if (null != item && !StringUtils.isEmpty(item.getInbrand()) && !StringUtils.isEmpty(item.getCmpCode())) {
                     saveInquiryItemProduct(item);
                 }
                 return item;
             } else {// 插入
                 inquiry = saleInquiries.get(0);
-                PublicInquiryItem purcItem = infoDao.findByVendUUAndSourceId(inquiryItem.getVendUU(), inquiryItem.getSourceId());
-                if (purcItem != null) {
-                    throw new Exception("询价单已存在,不允许再次报价");
-                } else {
-                    PublicInquiryItem item = SaveInquiryItems(inquiry, inquiryItem);
-                    // 报价成功后保存到个人物料库中
-                    if (!StringUtils.isEmpty(item) && !StringUtils.isEmpty(item.getInbrand()) && !StringUtils.isEmpty(item.getCmpCode())) {
-                        saveInquiryItemProduct(item);
-                    }
-                    return item;
+                PublicInquiryItem item = SaveInquiryItems(inquiry, inquiryItem);
+                // 报价成功后保存到个人物料库中
+                if (null != item && !StringUtils.isEmpty(item.getInbrand()) && !StringUtils.isEmpty(item.getCmpCode())) {
+                    saveInquiryItemProduct(item);
                 }
+                return item;
             }
         }
         return null;
@@ -306,7 +311,15 @@ public class InquiryForSaleServiceImpl implements InquiryForSaleService {
         // 调用公共物料服务的接口
         try {
             String url = PS_PRODUCT_URL + "/product/save/inquiry";
+            // 如果是替代料报价,则增加参数
+            if (Constant.YES == inquiryItem.getIsReplace() && !StringUtils.isEmpty(inquiryItem.getReplaceCmpCode())
+                    && !StringUtils.isEmpty(inquiryItem.getReplaceBrand())) {
+                url = url + "?replaceCmpCode=" + URLEncoder.encode(inquiryItem.getReplaceCmpCode(), "UTF-8") + "&replaceBrand=" + URLEncoder.encode(inquiryItem.getReplaceBrand(), "UTF-8");
+            }
+            long start = System.currentTimeMillis();
             String res = HttpUtil.doPost(url, FlexJsonUtils.toJsonDeep(product));
+            log.info("/product/save/inquiry 耗时:" + (System.currentTimeMillis() - start));
+            log.info("替代料报价,添加替代物料返回" + res);
             JSONObject result = JSONObject.parseObject(res);
             Boolean success = (Boolean) result.get("success");
             if (success) {
@@ -315,6 +328,8 @@ public class InquiryForSaleServiceImpl implements InquiryForSaleService {
                 logger.log("报价成功后保存到个人物料库", "保存报价id【" + inquiryItem.getId() + "】到个人物料库失败", result.get("message").toString(), product.getUserUU(), product.getEnUU(), inquiryItem.getSource());
             }
         } catch (Exception e) {
+            log.info("/product/save/inquiry 报价成功后保存到个人物料库中 出错:" + e.getMessage());
+            e.printStackTrace();
             String reason = e.getMessage().length() > 10 ? e.getMessage().substring(0, 999).concat("") : e.getMessage();
             logger.log("报价成功后保存到个人物料库", "保存报价id【" + inquiryItem.getId() + "】到个人物料库失败", reason, product.getUserUU(), product.getEnUU(), inquiryItem.getSource());
         }
@@ -398,7 +413,9 @@ public class InquiryForSaleServiceImpl implements InquiryForSaleService {
                 products.add(product);
             }
             if (!CollectionUtils.isEmpty(products)) {
+                long start = System.currentTimeMillis();
                 HttpUtil.doPost(PS_PRODUCT_URL + "product/update/b2b", FlexJsonUtils.toJsonDeep(products));
+                log.info("product/update/b2b 耗时:" + (System.currentTimeMillis() - start) + ",物料数:" + products.size());
             }
         }
     }

+ 69 - 17
src/main/java/com/uas/ps/inquiry/service/impl/InquiryServiceImpl.java

@@ -57,6 +57,7 @@ import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
+import java.net.URLEncoder;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashSet;
@@ -348,6 +349,7 @@ public class InquiryServiceImpl implements InquiryService {
      * @param sourceApp
      */
     public void saveProduct(List<PurcInquiryItem> inquiryItems, String sourceApp) {
+        List<Product> products = new ArrayList<>();
         for (PurcInquiryItem item : inquiryItems) {
             Product product = new Product();
             // 需要哪些字段
@@ -362,22 +364,23 @@ public class InquiryServiceImpl implements InquiryService {
             product.setSourceApp(sourceApp);
             product.setSpec(StringUtils.isEmpty(item.getSpec()) ? item.getCmpCode() : item.getSpec());
             product.setKind(item.getProdTitle());
-            product.setSpec((item.getSpec() == null || item.getSpec().equals("")) ? item.getCmpCode() : item.getSpec());
-            // 调用公共物料服务的接口
-            try {
-                String url = PS_PRODUCT_URL + "/product/save/inquiry";
-                String res = HttpUtil.doPost(url, FlexJsonUtils.toJsonDeep(product));
-                JSONObject result = JSONObject.parseObject(res);
-                Boolean success = (Boolean) result.get("success");
-                if (success) {
-                    logger.log("发布询价后保存到个人物料库", "保存询价明细id【" + item.getId() + "】到个人物料库成功", "保存成功", product.getUserUU(), product.getEnUU(), item.getSource());
-                } else {
-                    logger.log("发布询价后保存到个人物料库", "保存询价明细id【" + item.getId() + "】到个人物料库失败", result.get("message").toString(), product.getUserUU(), product.getEnUU(), item.getSource());
-                }
-            } catch (Exception e) {
-                String reason = e.getMessage().length() > 10 ? e.getMessage().substring(0, 999).concat("") : e.getMessage();
-                logger.log("报价成功后保存到个人物料库", "保存报价id【" + item.getId() + "】到个人物料库失败", reason, product.getUserUU(), product.getEnUU(), item.getSource());
+            products.add(product);
+        }
+        // 调用公共物料服务的接口
+        try {
+            String url = PS_PRODUCT_URL + "/product/save/inquiry/batch";
+            long start = System.currentTimeMillis();
+            String res = HttpUtil.doPost(url, FlexJsonUtils.toJsonDeep(products));
+            log.info("/product/save/inquiry/batch 耗时:" + (System.currentTimeMillis() - start) + "物料数:" + products.size());
+            JSONObject result = JSONObject.parseObject(res);
+            Boolean success = (Boolean) result.get("success");
+            if (success) {
+                log.info("保存询价单后,批量保存物料成功:" + products.size());
+            } else {
+                log.info("保存询价单后,批量保存物料失败,返回:" + result.get("message"));
             }
+        } catch (Exception e) {
+            e.printStackTrace();
         }
     }
 
@@ -434,9 +437,54 @@ public class InquiryServiceImpl implements InquiryService {
         // 更新原公共询价单该条明细,设置为不可报价
         String sql = "update purc$puinquiryitems set id_overdue = 1 where id_id = " + item.getSourceId();
         jdbcTemplate.update(sql);
+        // 如果是替代料报价的采纳,添加替代料到询价方对应物料
+        if (status.equals(Constant.YES)) {
+            addProductReplace(item);
+        }
         inquiryService.adoptMessage(item, InquirySource.MALL.name());
     }
 
+    /**
+     * 替代料报价采纳之后,添加替代料到询价企业对应物料
+     * @param item 报价明细
+     */
+    private void addProductReplace(PublicInquiryItem item) {
+        if (null != item.getIsReplace() && Constant.YES == item.getIsReplace() && !StringUtils.isEmpty(item.getReplaceCmpCode())
+                && !StringUtils.isEmpty(item.getReplaceBrand())) {
+            try {
+                String url = PS_PRODUCT_URL + "/product/save/inquiry?replaceCmpCode=" + URLEncoder.encode(item.getReplaceCmpCode(), "UTF-8")
+                        + "&replaceBrand=" + URLEncoder.encode(item.getReplaceBrand(), "UTF-8");
+                Product product;
+                if (null != item.getProductId()) {
+                    product = productDao.findOne(item.getProductId());
+                    product.setUserUU(item.getInquiry().getRecorderUU());
+                } else {
+                    product = new Product();
+                    // 需要哪些字段
+                    product.setEnUU(item.getInquiry().getEnUU());
+                    product.setUserUU(item.getInquiry().getRecorderUU());
+                    product.setCmpCode(item.getCmpCode());
+                    product.setBrand(item.getInbrand());
+                    product.setpCmpCode(item.getCmpCode());
+                    product.setpBrandEn(item.getInbrand());
+                    product.setStandard((short) 0);
+                    product.setCreateTime(new Date());
+                    product.setSourceApp(item.getInquiry().getSourceApp());
+                    product.setSpec(StringUtils.isEmpty(item.getSpec()) ? item.getCmpCode() : item.getSpec());
+                    product.setKind(item.getProdTitle());
+
+                }
+                long start = System.currentTimeMillis();
+                String res = HttpUtil.doPost(url, FlexJsonUtils.toJsonDeep(product));
+                log.info("/product/save/inquiry 耗时:" + (System.currentTimeMillis() - start));
+                log.info("采纳替代物料报价,添加替代物料返回" + res);
+            } catch (Exception e) {
+                log.info("/product/save/inquiry 替代料报价采纳之后保存到个人物料库中 出错:" + e.getMessage());
+                e.printStackTrace();
+            }
+        }
+    }
+
     /**
      * 验证是否已采纳或拒绝
      * @param item 报价单
@@ -814,7 +862,9 @@ public class InquiryServiceImpl implements InquiryService {
                     model.setSmsType(SMS_TYPE);
                     model.setSmTemplate(SMS_TEMP_ID);
                     models.add(model);
+                    long start = System.currentTimeMillis();
                     String res = HttpUtil.doPost(PS_MESSAGE_URL + "/messages", FlexJsonUtils.toJsonDeep(models));
+                    log.info("/message 耗时:" + (System.currentTimeMillis() - start) + "消息数:" + models.size());
                     System.out.println(FlexJsonUtils.toJsonDeep(models));
                     System.out.println(res);
                     logger.log("公共询价", "此次"+company+"公司新增"+count+"张公共询价");
@@ -864,16 +914,18 @@ public class InquiryServiceImpl implements InquiryService {
                             log.info("此次" + company + "公司新增" + remind.getCounts() + "张公共询价(发送信息前),接收人UU:" + model.getReceiverUu());
                         }
                         if (models.size() >= 500) {
+                            long start = System.currentTimeMillis();
                             String res = HttpUtil.doPost(PS_MESSAGE_URL + "/messages", FlexJsonUtils.toJsonDeep(models));
                             log.info("消息中心生成消息接口返回日志" + res);
-                            log.info("发送消息" + models.size());
+                            log.info("发送消息" + models.size() + ",耗时:" + (System.currentTimeMillis() - start));
                             models = new ArrayList<>();
                         }
                     }
                     if (!CollectionUtils.isEmpty(models)) {
+                        long start = System.currentTimeMillis();
                         String res = HttpUtil.doPost(PS_MESSAGE_URL + "/messages", FlexJsonUtils.toJsonDeep(models));
                         log.info("消息中心生成消息接口返回日志" + res);
-                        log.info("发送消息" + models.size());
+                        log.info("发送消息" + models.size() + ",耗时:" + (System.currentTimeMillis() - start));
                     }
                     log.info("发送消息全部完成");
                 } catch (Exception e) {

+ 10 - 3
src/main/java/com/uas/ps/inquiry/service/impl/PublicInquiryServiceImpl.java

@@ -26,6 +26,7 @@ import org.springframework.dao.DataAccessException;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Sort;
 import org.springframework.data.jpa.domain.Specification;
+import org.springframework.http.HttpStatus;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
@@ -105,7 +106,6 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
      */
     private final String CONSUMERAPP = "MALL,B2B";
 
-
     /**
      * 消息类型 (在B2B消息中拼接跳转单据详情url请求时需要)
      */
@@ -234,7 +234,6 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
      */
     @Override
     public void notifyMessage(List<PurcInquiryItem> inquiryItems, String sourceApp) throws Exception {
-
         for (PurcInquiryItem item : inquiryItems) {
             String cmpCode = null;
             if (item.getCmpCode() != null) {
@@ -249,7 +248,9 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
                 formData.put("enUU", item.getInquiry().getEnUU());
                 formData.put("cmpCode", cmpCode);
                 try {
+                    long start = System.currentTimeMillis();
                     HttpUtil.Response res = HttpUtil.sendGetRequest(url, formData);
+                    log.info("/productuser/getProductUsersByEnUUAndCmpCode,耗时:" + (System.currentTimeMillis() - start));
                     if (res.getStatusCode() == 200) {
                         List<ProductUsers> users = FlexJsonUtils.fromJsonArray(res.getResponseText(), ProductUsers.class);
                         users = getProductReplaceByEnUUAndCmpCode(item.getInquiry().getRecorderUU(), cmpCode, users);
@@ -325,9 +326,11 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
             @Override
             public void run() {
                 try {
+                    long start = System.currentTimeMillis();
                     log.info("发送微信消息实体" + JSON.toJSONString(models));
                     String res = HttpUtil.doPost(USOFTMALL_URL + "/wx/sendTemplateMessage", FlexJsonUtils.toJsonDeep(models));
                     log.info("微信消息请求发送日志" + res);
+                    log.info("微信消息请求发送,数量: " + models.size() + ",耗时:" + (System.currentTimeMillis() - start));
                 } catch (Exception e) {
                     e.printStackTrace();
                 }
@@ -432,8 +435,10 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
                     JSONObject formData = new JSONObject();
                     formData.put("enUU", item.getInquiry().getEnUU());
                     formData.put("pCmpCode", item.getCmpCode());
+                    long start = System.currentTimeMillis();
                     HttpUtil.Response res = HttpUtil.sendGetRequest(url, formData);
-                    if (res.getStatusCode() == 200) {
+                    log.info("/product/businessOpportunity , 型号: " + item.getCmpCode() + ",耗时:" + (System.currentTimeMillis() - start));
+                    if (res.getStatusCode() == HttpStatus.OK.value()) {
                         Map<String, Object> result = FlexJsonUtils.fromJson(res.getResponseText());
                         if (!StringUtils.isEmpty(result.get("enUUs"))) {
                             List<Long> enuus = (List<Long>) result.get("enUUs");
@@ -521,9 +526,11 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
             @Override
             public void run() {
                 try {
+                    long start = System.currentTimeMillis();
                     log.info("发送消息实体" + JSON.toJSONString(models));
                     String res = HttpUtil.doPost(PS_MESSAGE_URL + "/messages", FlexJsonUtils.toJsonDeep(models));
                     log.info("消息请求发送日志" + res);
+                    log.info("/messages , 条数: " + models.size() + ",耗时:" + (System.currentTimeMillis() - start));
                 } catch (Exception e) {
                     e.printStackTrace();
                 }

+ 4 - 1
src/main/java/com/uas/ps/inquiry/util/MessageUtils.java

@@ -65,7 +65,9 @@ public class MessageUtils {
         params.put("receiverUu", userUU);
         params.put("receiverEnuu", enUU);
         params.put("consumerApp", "B2B");
+        long start = System.currentTimeMillis();
         HttpUtil.Response res = HttpUtil.sendGetRequest(MESSAGE_PUBLIC_SERVICE_URL + "/messages/count/unread", params);
+        log.info("/messages/count/unread , receiverUu: " + userUU + ", receiverEnuu:" + enUU + ",耗时:" + (System.currentTimeMillis() - start));
         if (res.getStatusCode() == HttpStatus.OK.value() && null != res.getResponseText()) {
             JSONObject jsonObject = JSON.parseObject(res.getResponseText());
             return (Integer) jsonObject.get("count");
@@ -81,8 +83,9 @@ public class MessageUtils {
      */
     public static String produceMessage(List<MessageModel> models) throws Exception {
         try {
+            long start = System.currentTimeMillis();
             String res = HttpUtil.doPost(MESSAGE_PUBLIC_SERVICE_URL + "/messages", FlexJsonUtils.toJsonDeep(models));
-            log.info("发送消息" + models.size());
+            log.info("messageUtils /messages  post, 条数: " + models.size() + ",耗时:" + (System.currentTimeMillis() - start));
             return res;
         } catch (Exception e) {
             throw  new RuntimeException("本次产生消息失败");