From 881b15d5c56fd27d244f77cf2fb27ad95cfedd01 Mon Sep 17 00:00:00 2001 From: zhangherong <571457620@qq.com> Date: 星期一, 18 八月 2025 18:14:02 +0800 Subject: [PATCH] art: WMS接口测试相关代码添加,增加API接口日志 --- src/main/java/org/jeecg/modules/wms/request/WebReservationOrder.java | 18 ++ src/main/java/org/jeecg/modules/wms/request/WebServiceSendItem.java | 34 +++--- src/main/java/org/jeecg/common/aspect/ApiLogAspect.java | 10 + src/main/java/org/jeecg/modules/wms/service/impl/WMSWebServiceClientImpl.java | 75 +++++++++++++++ src/main/java/org/jeecg/modules/wms/request/ArrayOfWebServiceSendItem.java | 3 src/main/java/org/jeecg/modules/wms/controller/WMSTestController.java | 71 +++++++++----- src/main/java/org/jeecg/modules/wms/dto/WSResponse.java | 6 src/main/java/org/jeecg/modules/wms/WMSWebService.java | 7 src/main/java/org/jeecg/modules/wms/request/ReceiveReservation.java | 6 src/main/java/org/jeecg/modules/wms/service/WMSWebServiceClient.java | 36 +++++++ 10 files changed, 208 insertions(+), 58 deletions(-) diff --git a/src/main/java/org/jeecg/common/aspect/ApiLogAspect.java b/src/main/java/org/jeecg/common/aspect/ApiLogAspect.java index 2651f1a..a3539e8 100644 --- a/src/main/java/org/jeecg/common/aspect/ApiLogAspect.java +++ b/src/main/java/org/jeecg/common/aspect/ApiLogAspect.java @@ -4,7 +4,6 @@ import com.alibaba.fastjson.parser.Feature; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; -import com.sap.conn.jco.*; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; @@ -83,6 +82,13 @@ break; case WMS: dto.setRequestMethod("Webservice"); + if (result instanceof Map) { + Map<String, Object> map = (Map<String, Object>) result; + dto.setResponseCode(map.get("ztype").toString()); + dto.setResponseMessage(map.get("zmess").toString()); + dto.setRequestBody(map.get("importParameters") == null ? null : map.get("importParameters").toString()); + dto.setResponseBody(parseSAPResponseResult(map.get("result"))); + } break; case FEI_SHU: dto.setRequestMethod("Http"); @@ -146,6 +152,8 @@ } catch (JsonProcessingException e) { throw new JeecgBootException(e); } + } else if (result instanceof String) { + return result.toString(); } else { try { String json = objectMapper.writeValueAsString(result); diff --git a/src/main/java/org/jeecg/modules/wms/WMSWebService.java b/src/main/java/org/jeecg/modules/wms/WMSWebService.java index bc9d3f2..d66b206 100644 --- a/src/main/java/org/jeecg/modules/wms/WMSWebService.java +++ b/src/main/java/org/jeecg/modules/wms/WMSWebService.java @@ -7,6 +7,8 @@ import javax.xml.ws.WebServiceClient; import javax.xml.ws.WebServiceFeature; import javax.xml.ws.Service; + +import lombok.extern.slf4j.Slf4j; import org.jeecg.modules.wms.service.WebServiceSoap; import org.springframework.stereotype.Component; @@ -16,6 +18,7 @@ * Generated source version: 3.5.5 * */ +@Slf4j @Component @WebServiceClient(name = "WebService", wsdlLocation = "classpath:/wsdl/WebService.asmx.wsdl", @@ -32,9 +35,7 @@ try { url = new URL("classpath:/wsdl/WebService.asmx.wsdl"); } catch (MalformedURLException e) { - java.util.logging.Logger.getLogger(WMSWebService.class.getName()) - .log(java.util.logging.Level.INFO, - "Can not initialize the default wsdl from {0}", "classpath:/wsdl/WebService.asmx.wsdl"); + log.error("Can not initialize the default wsdl from {}", "classpath:/wsdl/WebService.asmx.wsdl"); } WSDL_LOCATION = url; } diff --git a/src/main/java/org/jeecg/modules/wms/controller/WMSTestController.java b/src/main/java/org/jeecg/modules/wms/controller/WMSTestController.java index 08d60e0..9732f55 100644 --- a/src/main/java/org/jeecg/modules/wms/controller/WMSTestController.java +++ b/src/main/java/org/jeecg/modules/wms/controller/WMSTestController.java @@ -3,44 +3,38 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; -import org.apache.cxf.endpoint.Client; -import org.apache.cxf.frontend.ClientProxy; import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; -import org.apache.cxf.transport.http.HTTPConduit; -import org.apache.cxf.transports.http.configuration.HTTPClientPolicy; import org.jeecg.common.api.vo.Result; -import org.jeecg.modules.wms.WMSWebService; import org.jeecg.modules.wms.dto.WSResponse; -import org.jeecg.modules.wms.request.ReceiveWMSScanItemList; +import org.jeecg.modules.wms.request.*; import org.jeecg.modules.wms.service.MESWebServiceSoap; -import org.jeecg.modules.wms.service.WebServiceSoap; +import org.jeecg.modules.wms.service.WMSWebServiceClient; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; @Api(tags = "WMS闆嗘垚娴嬭瘯") @RestController @RequestMapping("/wms/client") @Slf4j public class WMSTestController { - @Value("${webservice.url}") - private String url; @Autowired - private WMSWebService webService; + private WMSWebServiceClient webServiceClient; - private final static String localUrl = "http://localhost:9989/jeecg-boot/webservice/ReceiveWMSScanItemList?wsdl"; + private final static String localUrl = "http://localhost:9989/ebservice/ReceiveWMSScanItemList?wsdl"; @ApiOperation(value = "WMS闆嗘垚娴嬭瘯-鎺ユ敹WMS绉诲簱缁撴灉", notes = "WMS闆嗘垚娴嬭瘯-鎺ユ敹WMS绉诲簱缁撴灉") @PostMapping("/testReceiveWMSScanItemList") - public Result<?> testReceiveWMSScanItemList() { + public Result<?> testReceiveWMSScanItemList(@RequestBody List<WMSWebServiceSendItem> list) { JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); factory.setAddress(localUrl); factory.setServiceClass(MESWebServiceSoap.class); MESWebServiceSoap service = (MESWebServiceSoap) factory.create(); ReceiveWMSScanItemList request = new ReceiveWMSScanItemList(); + request.setWmsWebServiceSendItemList(list); WSResponse response = service.receiveWMSScanItemList(request); return Result.ok(response); } @@ -54,20 +48,45 @@ // WebServiceSoap service = (WebServiceSoap) factory.create(); // String response = service.helloWorld(); // return Result.ok(response); - WebServiceSoap port = webService.getWebServiceSoap12(); +// WebServiceSoap port = webService.getWebServiceSoap(); // 2. 鑾峰彇 CXF 搴曞眰 Client 瀵硅薄 - Client client = ClientProxy.getClient(port); +// Client client = ClientProxy.getClient(port); // 3. 鑾峰彇 HTTPConduit 骞惰缃秴鏃� - HTTPConduit http = (HTTPConduit) client.getConduit(); - HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy(); +// HTTPConduit http = (HTTPConduit) client.getConduit(); +// HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy(); +// +// httpClientPolicy.setConnectionTimeout(10 * 1000); // 杩炴帴瓒呮椂 10 绉� +// httpClientPolicy.setReceiveTimeout(300 * 1000); // 璇诲彇瓒呮椂 60 绉掞紙閲嶇偣锛侊級 - httpClientPolicy.setConnectionTimeout(10 * 1000); // 杩炴帴瓒呮椂 10 绉� - httpClientPolicy.setReceiveTimeout(300 * 1000); // 璇诲彇瓒呮椂 60 绉掞紙閲嶇偣锛侊級 - - http.setClient(httpClientPolicy); - String result = port.helloWorld(); - return Result.ok(result); +// http.setClient(httpClientPolicy); + Map<String, Object> stringObjectMap = webServiceClient.helloWorld(); + return Result.ok(stringObjectMap); } + + @ApiOperation(value = "WMS闆嗘垚娴嬭瘯-鐗╂枡鎷夊姩", notes = "WMS闆嗘垚娴嬭瘯-鐗╂枡鎷夊姩") + @PostMapping("/receiveReservation") + public Result<?> receiveReservation(@RequestBody WebReservationOrder request) { + Map<String, Object> stringObjectMap = webServiceClient.receiveReservation(request); + return Result.ok(stringObjectMap); + + } + + @ApiOperation(value = "WMS闆嗘垚娴嬭瘯-绉诲簱鐢宠", notes = "WMS闆嗘垚娴嬭瘯-绉诲簱鐢宠") + @PostMapping("/receiveMESScanItemList") + public Result<?> receiveMESScanItemList(@RequestBody List<WebServiceSendItem> webServiceSendItem) { + ArrayOfWebServiceSendItem request = new ArrayOfWebServiceSendItem(); + request.setWebServiceSendItem(webServiceSendItem); + Map<String, Object> stringObjectMap = webServiceClient.receiveMESScanItemList(request); + return Result.ok(stringObjectMap); + } + + @ApiOperation(value = "WMS闆嗘垚娴嬭瘯-绉诲簱鐢宠鎾ら攢", notes = "WMS闆嗘垚娴嬭瘯-绉诲簱鐢宠鎾ら攢") + @PostMapping("/deliOrderDelete") + public Result<?> deliOrderDelete(@RequestParam String sFactoryCode, @RequestParam String sStockRecord) { + Map<String, Object> stringObjectMap = webServiceClient.deliOrderDelete(sFactoryCode, sStockRecord); + return Result.ok(stringObjectMap); + } + } diff --git a/src/main/java/org/jeecg/modules/wms/dto/WSResponse.java b/src/main/java/org/jeecg/modules/wms/dto/WSResponse.java index 0d55fcf..873f3ca 100644 --- a/src/main/java/org/jeecg/modules/wms/dto/WSResponse.java +++ b/src/main/java/org/jeecg/modules/wms/dto/WSResponse.java @@ -33,14 +33,14 @@ @Getter @Setter @XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "WSResponse", propOrder = { +@XmlType(name = "WSResponse", propOrder = { "errorCode", "errorDesc" }) public class WSResponse { - @XmlElement(name = "ErrorCode") + @XmlElement(name = "ErrorCode", namespace = "http://tempuri.org/") protected String errorCode; - @XmlElement(name = "ErrorDesc") + @XmlElement(name = "ErrorDesc", namespace = "http://tempuri.org/") protected String errorDesc; } diff --git a/src/main/java/org/jeecg/modules/wms/request/ArrayOfWebServiceSendItem.java b/src/main/java/org/jeecg/modules/wms/request/ArrayOfWebServiceSendItem.java index 98f4d53..df29981 100644 --- a/src/main/java/org/jeecg/modules/wms/request/ArrayOfWebServiceSendItem.java +++ b/src/main/java/org/jeecg/modules/wms/request/ArrayOfWebServiceSendItem.java @@ -66,4 +66,7 @@ return this.webServiceSendItem; } + public void setWebServiceSendItem(List<WebServiceSendItem> webServiceSendItem) { + this.webServiceSendItem = webServiceSendItem; + } } diff --git a/src/main/java/org/jeecg/modules/wms/request/ReceiveReservation.java b/src/main/java/org/jeecg/modules/wms/request/ReceiveReservation.java index d38ae84..d3e2ece 100644 --- a/src/main/java/org/jeecg/modules/wms/request/ReceiveReservation.java +++ b/src/main/java/org/jeecg/modules/wms/request/ReceiveReservation.java @@ -4,10 +4,7 @@ import lombok.Getter; import lombok.Setter; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; +import javax.xml.bind.annotation.*; /** @@ -38,5 +35,6 @@ @Setter public class ReceiveReservation { + @XmlElement(name = "oWebReservationOrder") protected WebReservationOrder oWebReservationOrder; } diff --git a/src/main/java/org/jeecg/modules/wms/request/WebReservationOrder.java b/src/main/java/org/jeecg/modules/wms/request/WebReservationOrder.java index 2f962be..017faae 100644 --- a/src/main/java/org/jeecg/modules/wms/request/WebReservationOrder.java +++ b/src/main/java/org/jeecg/modules/wms/request/WebReservationOrder.java @@ -8,6 +8,7 @@ import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlType; +import java.io.Serializable; import java.math.BigDecimal; @@ -40,12 +41,21 @@ }) @Getter @Setter -public class WebReservationOrder { +public class WebReservationOrder implements Serializable { - @XmlElement(name = "FactoryCode") + @XmlElement(name = "FactoryCode", namespace = "http://tempuri.org/") protected String factoryCode; - @XmlElement(name = "ReservationOrder") + @XmlElement(name = "ReservationOrder", namespace = "http://tempuri.org/") protected String reservationOrder; - @XmlElement(name = "Total", required = true) + @XmlElement(name = "Total", required = true, namespace = "http://tempuri.org/") protected BigDecimal total; + + @Override + public String toString() { + return "WebReservationOrder{" + + "factoryCode='" + factoryCode + '\'' + + ", reservationOrder='" + reservationOrder + '\'' + + ", total=" + total + + '}'; + } } diff --git a/src/main/java/org/jeecg/modules/wms/request/WebServiceSendItem.java b/src/main/java/org/jeecg/modules/wms/request/WebServiceSendItem.java index ab7e44e..329b80e 100644 --- a/src/main/java/org/jeecg/modules/wms/request/WebServiceSendItem.java +++ b/src/main/java/org/jeecg/modules/wms/request/WebServiceSendItem.java @@ -70,38 +70,38 @@ @Setter public class WebServiceSendItem { - @XmlElement(name = "FactoryCode") + @XmlElement(name = "FactoryCode", namespace = "http://tempuri.org/") protected String factoryCode; - @XmlElement(name = "SkuCode") + @XmlElement(name = "SkuCode", namespace = "http://tempuri.org/") protected String skuCode; - @XmlElement(name = "Align") + @XmlElement(name = "Align", namespace = "http://tempuri.org/") protected String align; - @XmlElement(name = "Pallet") + @XmlElement(name = "Pallet", namespace = "http://tempuri.org/") protected String pallet; - @XmlElement(name = "PackageNo") + @XmlElement(name = "PackageNo", namespace = "http://tempuri.org/") protected String packageNo; - @XmlElement(name = "TrackLot") + @XmlElement(name = "TrackLot", namespace = "http://tempuri.org/") protected long trackLot; - @XmlElement(name = "Series") + @XmlElement(name = "Series", namespace = "http://tempuri.org/") protected long series; - @XmlElement(name = "MesStockID") + @XmlElement(name = "MesStockID", namespace = "http://tempuri.org/") protected String mesStockID; - @XmlElement(name = "Quantity", required = true) + @XmlElement(name = "Quantity", required = true, namespace = "http://tempuri.org/") protected BigDecimal quantity; - @XmlElement(name = "SapTrackLot") + @XmlElement(name = "SapTrackLot", namespace = "http://tempuri.org/") protected String sapTrackLot; - @XmlElement(name = "Section") + @XmlElement(name = "Section", namespace = "http://tempuri.org/") protected String section; - @XmlElement(name = "DestSection") + @XmlElement(name = "DestSection", namespace = "http://tempuri.org/") protected String destSection; - @XmlElement(name = "SupplierCode") + @XmlElement(name = "SupplierCode", namespace = "http://tempuri.org/") protected String supplierCode; - @XmlElement(name = "SupplierTrackLot") + @XmlElement(name = "SupplierTrackLot", namespace = "http://tempuri.org/") protected String supplierTrackLot; - @XmlElement(name = "StageID") + @XmlElement(name = "StageID", namespace = "http://tempuri.org/") protected String stageID; - @XmlElement(name = "Remark") + @XmlElement(name = "Remark", namespace = "http://tempuri.org/") protected String remark; - @XmlElement(name = "OrderCode") + @XmlElement(name = "OrderCode", namespace = "http://tempuri.org/") protected String orderCode; } diff --git a/src/main/java/org/jeecg/modules/wms/service/WMSWebServiceClient.java b/src/main/java/org/jeecg/modules/wms/service/WMSWebServiceClient.java new file mode 100644 index 0000000..df2a6ea --- /dev/null +++ b/src/main/java/org/jeecg/modules/wms/service/WMSWebServiceClient.java @@ -0,0 +1,36 @@ +package org.jeecg.modules.wms.service; + +import org.jeecg.modules.wms.request.ArrayOfWebServiceSendItem; +import org.jeecg.modules.wms.request.WebReservationOrder; + +import java.util.Map; + +public interface WMSWebServiceClient { + /** + * 娴嬭瘯杩為�氭帴鍙� + * @return + */ + Map<String, Object> helloWorld(); + + /** + * 鐗╂枡鎷夊姩 + * @param oWebReservationOrder + * @return + */ + Map<String, Object> receiveReservation(WebReservationOrder oWebReservationOrder); + + /** + * 绉诲簱鐢宠 + * @param oMESScanItemList + * @return + */ + Map<String, Object> receiveMESScanItemList(ArrayOfWebServiceSendItem oMESScanItemList); + + /** + * 鎾ら攢绉诲簱鐢宠 + * @param sFactoryCode + * @param sStockRecord + * @return + */ + Map<String, Object> deliOrderDelete(String sFactoryCode, String sStockRecord); +} diff --git a/src/main/java/org/jeecg/modules/wms/service/impl/WMSWebServiceClientImpl.java b/src/main/java/org/jeecg/modules/wms/service/impl/WMSWebServiceClientImpl.java new file mode 100644 index 0000000..db42e31 --- /dev/null +++ b/src/main/java/org/jeecg/modules/wms/service/impl/WMSWebServiceClientImpl.java @@ -0,0 +1,75 @@ +package org.jeecg.modules.wms.service.impl; + +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.aspect.annotation.ApiLog; +import org.jeecg.common.constant.ApiLogCategoryEnum; +import org.jeecg.modules.wms.WMSWebService; +import org.jeecg.modules.wms.dto.WSResponse; +import org.jeecg.modules.wms.request.ArrayOfWebServiceSendItem; +import org.jeecg.modules.wms.request.WebReservationOrder; +import org.jeecg.modules.wms.service.WMSWebServiceClient; +import org.jeecg.modules.wms.service.WebServiceSoap; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.Map; + +@Service +@Slf4j +public class WMSWebServiceClientImpl implements WMSWebServiceClient { + @Autowired + private WMSWebService webService; + + @Override + @ApiLog(apiName = "WMS娴嬭瘯杩為�氭帴鍙�(HelloWorld)", apiCategory = ApiLogCategoryEnum.WMS) + public Map<String, Object> helloWorld() { + Map<String, Object> resultMap = new HashMap<>(); + WebServiceSoap port = webService.getWebServiceSoap(); + String result = port.helloWorld(); + resultMap.put("zmess", "璇锋眰鎴愬姛"); + resultMap.put("ztype", 200); + resultMap.put("importParameters", null); + resultMap.put("result", result); + return resultMap; + } + + @Override + @ApiLog(apiName = "鐗╂枡鎷夊姩(receiveReservation)", apiCategory = ApiLogCategoryEnum.WMS) + public Map<String, Object> receiveReservation(WebReservationOrder oWebReservationOrder) { + Map<String, Object> resultMap = new HashMap<>(); + WebServiceSoap port = webService.getWebServiceSoap(); + WSResponse result = port.receiveReservation(oWebReservationOrder); + resultMap.put("zmess", "璇锋眰鎴愬姛"); + resultMap.put("ztype", 200); + resultMap.put("importParameters", oWebReservationOrder); + resultMap.put("result", result); + return resultMap; + } + + @Override + @ApiLog(apiName = "绉诲簱鐢宠(receiveMESScanItemList)", apiCategory = ApiLogCategoryEnum.WMS) + public Map<String, Object> receiveMESScanItemList(ArrayOfWebServiceSendItem oMESScanItemList) { + Map<String, Object> resultMap = new HashMap<>(); + WebServiceSoap port = webService.getWebServiceSoap(); + WSResponse result = port.receiveMESScanItemList(oMESScanItemList); + resultMap.put("zmess", "璇锋眰鎴愬姛"); + resultMap.put("ztype", 200); + resultMap.put("importParameters", oMESScanItemList); + resultMap.put("result", result); + return resultMap; + } + + @Override + @ApiLog(apiName = "鎾ら攢绉诲簱鐢宠(deliOrderDelete)", apiCategory = ApiLogCategoryEnum.WMS) + public Map<String, Object> deliOrderDelete(String sFactoryCode, String sStockRecord) { + Map<String, Object> resultMap = new HashMap<>(); + WebServiceSoap port = webService.getWebServiceSoap(); + WSResponse result = port.deliOrderDelete(sFactoryCode, sStockRecord); + resultMap.put("zmess", "璇锋眰鎴愬姛"); + resultMap.put("ztype", 200); + resultMap.put("importParameters", sStockRecord); + resultMap.put("result", result); + return resultMap; + } +} -- Gitblit v1.9.3