Эх сурвалжийг харах

询价保存物料增加冗余字段,获取物料采用调用接口获取方法

hejq 7 жил өмнө
parent
commit
71a9895244

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

@@ -53,7 +53,7 @@ public class InquiryController {
      */
     @RequestMapping(method = RequestMethod.POST)
     @ResponseBody
-    public List<Inquiry> saveInquiries(@RequestParam("data") String data) throws UnsupportedEncodingException {
+    public List<Inquiry> saveInquiries(@RequestParam("data") String data) throws Exception {
         String jsonStr = URLDecoder.decode(data, "UTF-8");
         List<Inquiry> inquiries = FlexJsonUtils.fromJsonArray(jsonStr, Inquiry.class);
         purchaseInquiryService.saveList(inquiryService.convertInquiry(inquiries));
@@ -71,7 +71,6 @@ public class InquiryController {
 	@RequestMapping(value = "/v2", method = RequestMethod.POST)
 	@ResponseBody
 	public void saveInquiries(@RequestBody List<Inquiry> inquiries) {
-//        purchaseInquiryService.save(inquiryService.convertInquiry(inquiries));
 		logger.log("询价单", "上传询价单", inquiries.size());
 	}
 

+ 14 - 7
src/main/java/com/uas/platform/b2b/erp/service/InquiryService.java

@@ -10,15 +10,22 @@ import com.uas.platform.b2b.model.SaleQuotationItem;
 
 import java.util.List;
 
+/**
+ * 询价单保存操作
+ *
+ * @author hejq
+ * @date 2018-07-17 16:49
+ */
 public interface InquiryService {
 
-	/**
-	 * 将ERP系统的采购询价,转为平台的询价单
-	 * 
-	 * @param inquiries
-	 * @return
-	 */
-	List<PurchaseInquiryItemTemp> convertInquiry(List<Inquiry> inquiries);
+    /**
+     * 将ERP系统的采购询价,转为平台的询价单
+     *
+     * @param inquiries ERP询价信息
+     * @return
+     * @throws Exception
+     */
+	List<PurchaseInquiryItemTemp> convertInquiry(List<Inquiry> inquiries) throws Exception;
 
 	/**
 	 * 将平台的报价信息,转为买家ERP的报价信息

+ 3 - 3
src/main/java/com/uas/platform/b2b/erp/service/impl/InquiryServiceImpl.java

@@ -13,6 +13,7 @@ import com.uas.platform.b2b.erp.service.VendorService;
 import com.uas.platform.b2b.erp.support.ErpBufferedLogger;
 import com.uas.platform.b2b.event.PurchaseInquiryItemSaveReleaseEvent;
 import com.uas.platform.b2b.model.*;
+import com.uas.platform.b2b.ps.ProductUtils;
 import com.uas.platform.b2b.service.NotExistProductService;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.b2b.support.UsageBufferedLogger;
@@ -72,7 +73,7 @@ public class InquiryServiceImpl implements InquiryService {
 	private final static UsageBufferedLogger usageLogger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
 
 	@Override
-	public List<PurchaseInquiryItemTemp> convertInquiry(List<Inquiry> inquiries) {
+	public List<PurchaseInquiryItemTemp> convertInquiry(List<Inquiry> inquiries) throws Exception {
 		List<PurchaseInquiryItemTemp> tempList = new ArrayList<PurchaseInquiryItemTemp>();
         // 应用来源
 		final String appId = "uas";
@@ -80,8 +81,7 @@ public class InquiryServiceImpl implements InquiryService {
 
 		// 获取物料编号集合
 		Set<String> productCodes = getProductCodes(inquiries);
-		// TODO 获取需要用到的物料
-		Map<String, ProductInfo> products = new HashMap<>();
+		Map<String, ProductInfo> products = ProductUtils.findByEnUUAndCodes(enUU, productCodes);
 		for (Inquiry inquiry : inquiries) {
 			// 先查看是否已存在
 			List<PurchaseInquiry> existInquiries = purchaseInquiryDao.findByEnUUAndCode(enUU, inquiry.getIn_code());

+ 1 - 1
src/main/java/com/uas/platform/b2b/listener/GlobalExceptionHandler.java

@@ -87,7 +87,7 @@ public class GlobalExceptionHandler {
         }
         String access = request.getParameter(signatureParam);
         String data = request.getParameter(dataParam);
-        ErrorLog log = logDao.save(new ErrorLog(JSON.toJSONString(msgs), e.toString(), url, e.getCause().getMessage()));
+        ErrorLog log = logDao.save(new ErrorLog(JSON.toJSONString(msgs), e.toString(), url, e.getCause() == null ? "" : e.getCause().getMessage()));
         if (!StringUtils.isEmpty(log.getId())) {
             detailDao.save(new ErrorLogDetail(log.getId(), AgentUtils.getIp(request), needRead, StringUtils.isEmpty(data) ? "" : URLDecoder.decode(data, HTTP.UTF_8), access));
         }

+ 33 - 8
src/main/java/com/uas/platform/b2b/ps/ProductUtils.java

@@ -4,20 +4,21 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.uas.platform.b2b.core.util.ContextUtils;
 import com.uas.platform.b2b.model.Product;
+import com.uas.platform.b2b.model.ProductInfo;
 import com.uas.platform.b2b.model.ProductUsers;
 import com.uas.platform.b2b.support.SysConf;
 import com.uas.platform.core.util.HttpUtil;
 import com.uas.platform.core.util.HttpUtil.Response;
 import com.uas.platform.core.util.serializer.FlexJsonUtils;
+import org.apache.commons.collections.map.HashedMap;
+import org.apache.http.protocol.HTTP;
 import org.springframework.http.HttpStatus;
 import org.springframework.ui.ModelMap;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
+import java.net.URLEncoder;
+import java.util.*;
 
 /**
  * 对接公共物料服务的接口
@@ -364,14 +365,38 @@ public class ProductUtils {
      * 通过企业UU和code串查询物料信息
      *
      * @param enUU 企业UU
-     * @param codeStr 物料code
+     * @param codeSet 物料code
      * @return
      */
-    public static List<Product> findByEnUUAndCodes(Long enUU, String codeStr) throws Exception {
+    public static Map<String, ProductInfo> findByEnUUAndCodes(Long enUU, Set<String> codeSet) throws Exception {
         HashMap<String, Object> map = new HashMap<>(2);
         map.put("enUU", enUU);
-        map.put("codes", Arrays.asList(codeStr));
-        Response res = HttpUtil.sendPostRequest(PRODUCT_PUBLIC_SERVICE_URL + "/get/findByEnUUAndCode", map);
+        map.put("codes", FlexJsonUtils.toJsonDeep(codeSet));
+        Response res = HttpUtil.sendGetRequest(PRODUCT_PUBLIC_SERVICE_URL + "/product/get/findByEnUUAndCodes", map);
+        Map<String, ProductInfo> resultMap = new HashedMap();
+        if (HttpStatus.OK.value() == res.getStatusCode()) {
+            List<ProductInfo> productInfoList = JSONObject.parseArray(res.getResponseText(), ProductInfo.class);
+            productInfoList.forEach(productInfo -> {
+                resultMap.put(productInfo.getCode(), productInfo);
+            });
+            return resultMap;
+        } else {
+            throw new Exception("查询物料失败");
+        }
+    }
+
+    /**
+     * 通过企业UU和code查询物料信息
+     *
+     * @param enUU 企业UU
+     * @param code 物料code
+     * @return
+     */
+    public static List<Product> findByEnUUAndCode(Long enUU, String code) throws Exception {
+        HashMap<String, Object> map = new HashMap<>(2);
+        map.put("enUU", enUU);
+        map.put("code", URLEncoder.encode(code, HTTP.UTF_8));
+        Response res = HttpUtil.sendGetRequest(PRODUCT_PUBLIC_SERVICE_URL + "/get/findByEnUUAndCode", map);
         if (HttpStatus.OK.value() == res.getStatusCode()) {
             return JSONObject.parseArray(res.getResponseText(), Product.class);
         } else {

+ 0 - 2
src/main/java/com/uas/platform/b2b/service/impl/PurcInquiryServiceImpl.java

@@ -257,13 +257,11 @@ public class PurcInquiryServiceImpl implements PurcInquiryService {
             for (PurcInquiryItem item : inquiry.getInquiryItems()) {
                 PurchaseInquiryItem saleItem = new PurchaseInquiryItem();
                 saleItem.setFromDate(item.getFromDate());
-                Product product = productDao.findOne(item.getProductId());
                 saleItem.setInquiry(saleInquiry);
                 saleItem.setNumber(item.getNumber());
                 saleItem.setVendUU(item.getVendUU());
                 saleItem.setVendUserUU(item.getVendUserUU());
                 saleItem.setProductId(item.getProductId());
-                saleItem.setProduct(product);
                 saleItem.setRemark(item.getRemark());
                 saleItem.setFromDate(item.getFromDate());
                 saleItem.setTaxrate(item.getTaxrate());

+ 1 - 0
src/main/java/com/uas/platform/b2b/service/impl/PurcOrderServiceImpl.java

@@ -10,6 +10,7 @@ import com.uas.platform.b2b.service.BaseInfoService;
 import com.uas.platform.b2b.service.PurcOrderService;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.b2b.temporary.model.*;
+import com.uas.platform.b2b.temporary.model.ProductInfo;
 import com.uas.platform.core.model.Constant;
 import com.uas.platform.core.model.Status;
 import org.apache.commons.collections.CollectionUtils;