Browse Source

【华信科】【富勒WMS对接】【XML方式对接】

wuyx 7 months ago
parent
commit
9485f102ce

+ 7 - 0
src/main/java/com/uas/eis/entity/vwms/req/BaseItemsReq.java

@@ -1,18 +1,25 @@
 package com.uas.eis.entity.vwms.req;
 
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
 import lombok.Data;
 
 import java.util.List;
 
 @Data
+@JacksonXmlRootElement(localName = "request")
 public class BaseItemsReq<T> {
     private String actionType;
     private String warehouseCode;
     private String ownerCode;
     private String outBizCode;
+    @JacksonXmlProperty(localName = "items")
     private BaseItems<T> items;
     @Data
     public class BaseItems<T> {
+        @JacksonXmlElementWrapper(useWrapping = false)
+        @JacksonXmlProperty(localName = "item")
         private List<T> item;
     }
 }

+ 4 - 0
src/main/java/com/uas/eis/entity/vwms/req/BaseReq.java

@@ -1,8 +1,12 @@
 package com.uas.eis.entity.vwms.req;
 
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
 import lombok.Data;
 
 @Data
+
 public class BaseReq<T> {
     T request;
 }

+ 3 - 0
src/main/java/com/uas/eis/entity/vwms/resp/BaseVastResp.java

@@ -1,11 +1,14 @@
 package com.uas.eis.entity.vwms.resp;
 
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
 import lombok.Data;
 
 import java.util.List;
 @Data
 @JsonIgnoreProperties(ignoreUnknown = true)
+@JacksonXmlRootElement(localName = "response")
 public class BaseVastResp {
     private Response response;
 

+ 1 - 1
src/main/java/com/uas/eis/utils/HttpUtil.java

@@ -1018,7 +1018,7 @@ public class HttpUtil {
 		outStream.write(data);
 		outStream.flush();
 		outStream.close();
-		if (conn.getResponseCode() == HttpStatus.OK.value()) {
+		if (conn.getResponseCode() == HttpStatus.OK.value()||conn.getResponseCode() == HttpStatus.CREATED.value()) {
 			return read2Byte(conn.getInputStream());
 		}
 		return null;

+ 36 - 12
src/test/java/com/uas/eis/UasEisApplicationTests.java

@@ -2,6 +2,9 @@ package com.uas.eis;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.PropertyName;
+import com.fasterxml.jackson.databind.introspect.AnnotatedClass;
+import com.fasterxml.jackson.dataformat.xml.JacksonXmlAnnotationIntrospector;
 import com.sun.xml.internal.bind.v2.util.XmlFactory;
 import com.uas.eis.config.VwmsConfig;
 import com.uas.eis.dao.*;
@@ -31,8 +34,8 @@ public class UasEisApplicationTests {
 	private final Logger logger = LoggerFactory.getLogger(this.getClass());
 //	@Autowired
 //	private BaseDao baseDao;
-	@Autowired
-	private ObjectMapper objectMapper;  // 注入Jackson的ObjectMapper
+//	@Autowired
+//	private ObjectMapper objectMapper;  // 注入Jackson的ObjectMapper
 	@Autowired
 	private ERPService erpService;
 	@Autowired
@@ -43,7 +46,7 @@ public class UasEisApplicationTests {
 		List<ProductReq> prodList = new ArrayList<>();
 		// 创建BaseReq对象
 		BaseItemsReq<ProductReq> prodBaseItemsReq = new BaseItemsReq();
-		prodBaseItemsReq.setActionType("add");
+		prodBaseItemsReq.setActionType("update");
 		prodBaseItemsReq.setWarehouseCode(vwmsConfig.getWarehouseCode());
 		prodBaseItemsReq.setOwnerCode(vwmsConfig.getOwnerCode());
 		prodBaseItemsReq.setOutBizCode("sendProd-"+System.currentTimeMillis());
@@ -64,26 +67,47 @@ public class UasEisApplicationTests {
 				}})
 				.build();
 		prodList.add(productReq);
+		ProductReq productReq2 = new ProductReq.Builder()
+				.itemId("TESTXML2")
+				.itemCode("TESTXML2")
+				.barCode("TESTXML2")
+				.itemName("TESTXML2")
+				.goodsCode("TESTXML2")
+				.brandName("TESTXML2")
+				.categoryName("TESTXML2")
+				.stockUnit("")
+				.ExtendProps(new ProductReq.ExtendProps() {{
+					setKey1("1000.0");
+				}})
+				.build();
+		prodList.add(productReq2);
 		prodBaseItems.setItem(prodList);
 		prodBaseItemsReq.setItems(prodBaseItems);
 		// 创建RequestWrapper对象
-		BaseReq<BaseItemsReq<ProductReq>> prodBaseReq = new BaseReq();
-		prodBaseReq.setRequest(prodBaseItemsReq);
+//		BaseReq<BaseItemsReq<ProductReq>> prodBaseReq = new BaseReq();
+//		prodBaseReq.setRequest(prodBaseItemsReq);
 		try {
 			// 将prodBaseReq对象转换为XML字符串
 			// 创建XmlMapper实例
 			XmlMapper xmlMapper = new XmlMapper();
-			String xml = xmlMapper.writeValueAsString(prodBaseReq);
+			// 配置XML根元素名称为 "request"
+//			xmlMapper.setAnnotationIntrospector(new JacksonXmlAnnotationIntrospector() {
+//				@Override
+//				public PropertyName findRootName(AnnotatedClass ac) {
+//					return PropertyName.construct("request", null);
+//				}
+//			});
+			String xml = xmlMapper.writeValueAsString(prodBaseItemsReq);
             logger.info("Request XML: {}", xml);
-
 			// 使用postXml方法发送请求
-			byte[] responseBytes = HttpUtil.postXmlToVWMS("openapi.items.synchronize",xml, "UTF-8",vwmsConfig);
-			String responseText = new String(responseBytes, "UTF-8");
+//			byte[] responseBytes = HttpUtil.postXmlToVWMS("openapi.items.synchronize",xml, "UTF-8",vwmsConfig);
+//			String responseText = new String(responseBytes, "UTF-8");
+			String responseText="<?xml version=\"1.0\" encoding=\"utf-8\"?><response><flag>success</flag><code>201</code><message>openapi.items.synchronize successfully</message></response>";
 			System.out.println("responseText:"+responseText);
 			// 处理响应
-			if(responseBytes != null) {
+//			if(responseBytes != null) {
 				// 解析XML响应
-				BaseVastResp baseVastResp = objectMapper.readValue(responseText, BaseVastResp.class);
+				BaseVastResp baseVastResp = xmlMapper.readValue(responseText, BaseVastResp.class);
 				BaseVastResp.Response baseVastRespResponse= baseVastResp.getResponse();
 				if(baseVastRespResponse!=null){
 					//默认成功
@@ -100,7 +124,7 @@ public class UasEisApplicationTests {
 						}
 					}
 				}
-			}
+//			}
 		} catch (Exception e) {
 			e.printStackTrace();
 		}