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); 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; } 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); } } 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; } 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; } } 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; } 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 + '}'; } } 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; } 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); } 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; } }