diff --git a/modules/i3plus-ext-mes-apiservice/pom.xml b/modules/i3plus-ext-mes-apiservice/pom.xml
index 0efae82..bb24de0 100644
--- a/modules/i3plus-ext-mes-apiservice/pom.xml
+++ b/modules/i3plus-ext-mes-apiservice/pom.xml
@@ -14,7 +14,11 @@
jar
-
+
+
+ org.apache.cxf
+ cxf-spring-boot-starter-jaxws
+
com.huaweicloud
esdk-obs-java-bundle
diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/config/ScanExtPackageConfiguration.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/config/ScanExtPackageConfiguration.java
index bbbf5fc..09a69fb 100644
--- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/config/ScanExtPackageConfiguration.java
+++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/config/ScanExtPackageConfiguration.java
@@ -33,7 +33,8 @@ import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
@ComponentScan(basePackages = {
// 扩展包
- "${impp.app.ext.base-packages:}.**"
+ "${impp.app.ext.base-packages:}.**",
+ "cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.webservice.*"
})
//cn.estsh.i3plus.app.ext
public class ScanExtPackageConfiguration {
diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/config/WebServiceConfig.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/config/WebServiceConfig.java
new file mode 100644
index 0000000..66cc6e6
--- /dev/null
+++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/config/WebServiceConfig.java
@@ -0,0 +1,61 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache ImppLicense, Version 2.0 (the
+ * "ImppLicense"); you may not use this file except in compliance
+ * with the ImppLicense. You may obtain a copy of the ImppLicense at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the ImppLicense is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the ImppLicense for the
+ * specific language governing permissions and limitations
+ * under the ImppLicense.
+ */
+package cn.estsh.i3plus.ext.mes.apiservice.config;
+
+
+import cn.estsh.i3plus.ext.mes.apiservice.interceptor.CxfInInterceptor;
+import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.webservice.WebServiceServer;
+import org.apache.cxf.Bus;
+import org.apache.cxf.jaxws.EndpointImpl;
+import org.apache.cxf.phase.Phase;
+import org.apache.cxf.transport.servlet.CXFServlet;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.web.servlet.ServletRegistrationBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import javax.xml.ws.Endpoint;
+
+/**
+ * @Description : WebService Server 服务配置
+ * WSDL URL: /block/softswitch/server/web-service?wsdl
+ * @Reference :
+ * @Author : wei.peng
+ * @CreateDate : 2019/9/10 下午3:13
+ * @Modify:
+ **/
+@Configuration
+public class WebServiceConfig {
+
+ @Autowired
+ private Bus bus;
+
+ @Bean("cxfServletRegistration")
+ public ServletRegistrationBean dispatcherServlet() {
+ return new ServletRegistrationBean(new CXFServlet(), "/i3plus/*");
+ }
+
+ @Bean
+ public Endpoint endpoint() {
+ EndpointImpl endpoint = new EndpointImpl(bus, new WebServiceServer());
+ endpoint.publish("/mes-service");
+ endpoint.getInInterceptors().add(new CxfInInterceptor(Phase.RECEIVE));
+ return endpoint;
+ }
+}
diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/interceptor/CxfInInterceptor.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/interceptor/CxfInInterceptor.java
new file mode 100644
index 0000000..ea22f39
--- /dev/null
+++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/interceptor/CxfInInterceptor.java
@@ -0,0 +1,51 @@
+package cn.estsh.i3plus.ext.mes.apiservice.interceptor;
+
+import org.apache.cxf.binding.soap.SoapMessage;
+import org.apache.cxf.helpers.IOUtils;
+import org.apache.cxf.interceptor.Fault;
+import org.apache.cxf.io.CachedOutputStream;
+import org.apache.cxf.phase.AbstractPhaseInterceptor;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+
+/**
+ * @Description :
+ * @Reference :
+ * @Author : Castle
+ * @CreateDate : 2024/6/12 16:20
+ * @Modify:
+ **/
+public class CxfInInterceptor extends AbstractPhaseInterceptor {
+
+ public CxfInInterceptor(String phase) {
+ super(phase);
+ }
+
+ @Override
+ public void handleMessage(SoapMessage message) throws Fault {
+ // 获取消息内容
+ InputStream is = message.getContent(InputStream.class);
+ try {
+ if (is != null) {
+ CachedOutputStream bos = new CachedOutputStream();
+ IOUtils.copy(is, bos);
+ String startXmlMessage = new String(bos.getBytes(), UTF_8);
+ String afterMessage = "";
+ if (startXmlMessage.contains("SyncMaximoEquip")) {
+ afterMessage = startXmlMessage.replaceAll("ws:", "").replaceAll("tem:info", "ws:assetInfo");
+ } else if (startXmlMessage.contains("SyncMaximoInstrumen")) {
+ afterMessage = startXmlMessage.replaceAll("ws:", "").replaceAll("tem:info", "ws:meterInfo");
+ }
+ // 重新设置输入流,因为它已经被读取
+ message.setContent(InputStream.class, new ByteArrayInputStream(afterMessage.getBytes()));
+ }
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+}
diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/model/AssetInfo.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/model/AssetInfo.java
new file mode 100644
index 0000000..1037a4b
--- /dev/null
+++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/model/AssetInfo.java
@@ -0,0 +1,21 @@
+package cn.estsh.i3plus.ext.mes.apiservice.model;
+
+import lombok.Data;
+
+/**
+ * @Description :
+ * @Reference :
+ * @Author : Castle
+ * @CreateDate : 2024/6/12 14:04
+ * @Modify:
+ **/
+@Data
+public class AssetInfo {
+ private String ASSETNUM;
+ private String DESCRIPTION;
+ private String FAILURECODE;
+ private String LOCATION;
+ private String LOCDESC;
+ private String SITEID;
+ private String STATUS;
+}
diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/model/MeterInfo.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/model/MeterInfo.java
new file mode 100644
index 0000000..7e8ecbe
--- /dev/null
+++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/model/MeterInfo.java
@@ -0,0 +1,23 @@
+package cn.estsh.i3plus.ext.mes.apiservice.model;
+
+import lombok.Data;
+
+/**
+ * @Description :
+ * @Reference :
+ * @Author : Castle
+ * @CreateDate : 2024/6/12 15:03
+ * @Modify:
+ **/
+@Data
+public class MeterInfo {
+ private String ASSETNUM;
+
+ private String BASEMEASUREUNITID;
+
+ private String METERNAME;
+
+ private String SITEID;
+
+
+}
diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java
index ebe8120..54778a6 100644
--- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java
+++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java
@@ -122,11 +122,11 @@ public class MesWorkOrderService extends BaseMesService implements
} else {
//生成工单号
genSerialNoModel = new GenSerialNoModel(MesCommonConstant.MES_WORK_ORDER_NO);
-// Long produceSeq = 0L;
-// if (null != result && result.getProduceSeq() != null) {
-// produceSeq = (long) Math.toIntExact(result.getProduceSeq());
-// }
-// bean.setProduceSeq((long) (produceSeq + 1));
+ Long produceSeq = 0L;
+ if (null != result && result.getProduceSeq() != null) {
+ produceSeq = (long) Math.toIntExact(result.getProduceSeq());
+ }
+ bean.setProduceSeq(produceSeq + 1);
GenSerialNoModel orderSeqSerialNoModel = new GenSerialNoModel(MesCommonConstant.ORDER_NO_BTO_SEQ);
List resultList = syncFuncService.syncSerialNo(orderSeqSerialNoModel, bean.getCreateUser(), bean.getOrganizeCode(), 1).getResultList();
bean.setWorkOrderSeq(resultList.get(0));
diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/webservice/WebServiceServer.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/webservice/WebServiceServer.java
new file mode 100644
index 0000000..ef1ca14
--- /dev/null
+++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/webservice/WebServiceServer.java
@@ -0,0 +1,49 @@
+package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.webservice;
+
+
+import cn.estsh.i3plus.ext.mes.apiservice.model.AssetInfo;
+import cn.estsh.i3plus.ext.mes.apiservice.model.MeterInfo;
+import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.busi.MaximoServiceImpl;
+import cn.estsh.i3plus.ext.mes.pojo.model.MaximoParamModel;
+import cn.estsh.impp.framework.boot.util.SpringContextsUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+
+import javax.jws.WebMethod;
+import javax.jws.WebParam;
+import javax.jws.WebService;
+import java.util.Map;
+
+@Component
+@WebService(targetNamespace = "http://tempuri.org/")
+public class WebServiceServer {
+ public static final Logger LOGGER = LoggerFactory.getLogger(WebServiceServer.class);
+
+ @WebMethod(action = "SyncMaximoEquip", operationName = "SyncMaximoEquip")
+ public Map syncEquip(@WebParam(name = "assetInfo", targetNamespace = "http://schemas.datacontract.org/2004/07/WS.MAXIMO.DataInBound") AssetInfo assetInfo) {
+ LOGGER.info("SyncMaximoEquip主数据:{}", assetInfo);
+ MaximoParamModel maximoParamModel = new MaximoParamModel();
+ maximoParamModel.setAssetNum(assetInfo.getASSETNUM());
+ maximoParamModel.setStatus(assetInfo.getSTATUS());
+ maximoParamModel.setSiteId(assetInfo.getSITEID());
+ maximoParamModel.setFailureCode(assetInfo.getFAILURECODE());
+ maximoParamModel.setDescription(assetInfo.getDESCRIPTION());
+ MaximoServiceImpl bean = (MaximoServiceImpl)SpringContextsUtil.getBean("maximoServiceImpl");
+ return bean.doAssetMainData(maximoParamModel);
+ }
+
+ @WebMethod(action = "SyncMaximoInstrument", operationName = "SyncMaximoInstrument")
+ public Map syncInstrument(@WebParam(name = "meterInfo", targetNamespace = "http://schemas.datacontract.org/2004/07/WS.MAXIMO.DataInBound") MeterInfo meterInfo) {
+ LOGGER.info("syncInstrument主数据:{}", meterInfo);
+ MaximoParamModel maximoParamModel = new MaximoParamModel();
+ maximoParamModel.setAssetNum(meterInfo.getASSETNUM());
+ maximoParamModel.setBaseMeasureUnitId(meterInfo.getBASEMEASUREUNITID());
+ maximoParamModel.setMeterName(meterInfo.getMETERNAME());
+ MaximoServiceImpl bean = (MaximoServiceImpl)SpringContextsUtil.getBean("maximoServiceImpl");
+ return bean.doAssetMainData(maximoParamModel);
+ }
+
+}
\ No newline at end of file
diff --git a/modules/i3plus-ext-mes-apiservice/src/main/resources/application-71.properties b/modules/i3plus-ext-mes-apiservice/src/main/resources/application-71.properties
index b6ee3bb..c94dee9 100644
--- a/modules/i3plus-ext-mes-apiservice/src/main/resources/application-71.properties
+++ b/modules/i3plus-ext-mes-apiservice/src/main/resources/application-71.properties
@@ -272,7 +272,7 @@ xxl.job.executor.appname=i3mes-castle
### xxl-job executor registry-address: default use address to registry , otherwise use ip:port if address is null
xxl.job.executor.address=
### xxl-job executor server-info
-xxl.job.executor.ip=10.196.75.109
+xxl.job.executor.ip=10.196.75.151
#xxl.job.executor.ip=
#xxl.job.executor.port=9999
xxl.job.executor.port=8888
@@ -281,3 +281,6 @@ xxl.job.executor.logpath=
### xxl-job executor log-retention-days
xxl.job.executor.logretentiondays=10
xxl.job.basePackage=cn.estsh.i3plus.ext.mes.apiservice.schedulejob
+
+
+impp.app.ext.base-packages=cn.estsh.i3plus.ext.mes.apiservice
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 6d52f5c..dd8e78a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -41,7 +41,18 @@
-
+
+
+ org.apache.cxf
+ cxf-spring-boot-starter-jaxws
+ 3.4.1
+
+
+ org.springframework.boot
+ spring-boot-starter-logging
+
+
+
org.springframework
spring-web