From b5786d1024262518a4e403255d1d0c28543899c4 Mon Sep 17 00:00:00 2001
From: wyb <1977763549@qq.com>
Date: Fri, 30 Jun 2023 14:42:13 +0800
Subject: [PATCH] =?UTF-8?q?=E5=BC=82=E5=B8=B8=E5=A4=87=E7=94=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
data-config/ws-message-forward-config.json | 8 +
src/main/java/com/docus/server/CxfConfig.java | 24 +-
.../config/WsMessageForwardConfig.java | 47 ++++
.../message/consts/HospitalWsMethod.java | 13 ++
.../controller/MessagePushController.java | 37 ++++
.../controller/MessageReceiveController.java | 27 +--
.../com/docus/server/message/dto/Message.java | 16 ++
.../server/message/dto/MessageResponse.java | 19 ++
.../server/message/enums/DataFormatEnum.java | 32 +++
.../server/message/result/MessageInfo.java | 21 ++
.../server/message/result/ParametersEnum.java | 32 +++
.../server/message/result/PlaceHolder.java | 33 +++
.../server/message/result/ResultUtil.java | 207 ++++++++++++++++++
.../SdWebServiceUnifyMessageService.java | 12 +
.../message/service/UnifyMessageService.java | 3 +-
.../impl/HttpUnifyMessageServiceImpl.java | 2 +-
.../SdWebServiceUnifyMessageServiceImpl.java | 29 +++
.../WebServiceUnifyMessageServiceImpl.java | 49 ++++-
18 files changed, 590 insertions(+), 21 deletions(-)
create mode 100644 data-config/ws-message-forward-config.json
create mode 100644 src/main/java/com/docus/server/message/config/WsMessageForwardConfig.java
create mode 100644 src/main/java/com/docus/server/message/consts/HospitalWsMethod.java
create mode 100644 src/main/java/com/docus/server/message/controller/MessagePushController.java
create mode 100644 src/main/java/com/docus/server/message/dto/MessageResponse.java
create mode 100644 src/main/java/com/docus/server/message/enums/DataFormatEnum.java
create mode 100644 src/main/java/com/docus/server/message/result/MessageInfo.java
create mode 100644 src/main/java/com/docus/server/message/result/ParametersEnum.java
create mode 100644 src/main/java/com/docus/server/message/result/PlaceHolder.java
create mode 100644 src/main/java/com/docus/server/message/result/ResultUtil.java
create mode 100644 src/main/java/com/docus/server/message/service/SdWebServiceUnifyMessageService.java
create mode 100644 src/main/java/com/docus/server/message/service/impl/SdWebServiceUnifyMessageServiceImpl.java
diff --git a/data-config/ws-message-forward-config.json b/data-config/ws-message-forward-config.json
new file mode 100644
index 0000000..4d440e4
--- /dev/null
+++ b/data-config/ws-message-forward-config.json
@@ -0,0 +1,8 @@
+[
+ {
+ "method": "WS_RECORD_SUBMIT",
+ "urls": ["http://127.0.0.1:9312/message/receive1/wsRecordSubmit/do"],
+ "errorResult": "1系统错误!",
+ "messageDataType": 1
+ }
+]
\ No newline at end of file
diff --git a/src/main/java/com/docus/server/CxfConfig.java b/src/main/java/com/docus/server/CxfConfig.java
index 3314312..166d5c6 100644
--- a/src/main/java/com/docus/server/CxfConfig.java
+++ b/src/main/java/com/docus/server/CxfConfig.java
@@ -1,6 +1,8 @@
package com.docus.server;
+import com.docus.server.message.consts.HospitalWsMethod;
import com.docus.server.message.consts.InteractiveMethod;
+import com.docus.server.message.service.SdWebServiceUnifyMessageService;
import com.docus.server.message.service.UnifyMessageService;
import org.apache.cxf.Bus;
import org.apache.cxf.bus.spring.SpringBus;
@@ -19,14 +21,24 @@ public class CxfConfig {
private UnifyMessageService unifyMessageService;
+ private SdWebServiceUnifyMessageService sdWebServiceUnifyMessageService;
+
@Autowired
@Qualifier(InteractiveMethod.WS)
public void setUnifyMessageService(UnifyMessageService unifyMessageService) {
this.unifyMessageService = unifyMessageService;
}
+ @Autowired
+ @Qualifier(HospitalWsMethod.WS_RECORD_SUBMIT)
+ public void setSdWebServiceUnifyMessageService(SdWebServiceUnifyMessageService sdWebServiceUnifyMessageService) {
+ this.sdWebServiceUnifyMessageService = sdWebServiceUnifyMessageService;
+ }
+
+
/**
* 注入Servlet,注意beanName不能为dispatcherServlet
+ *
* @author Fang Ruichuan
* @date 2022/11/14 19:16
*/
@@ -43,8 +55,16 @@ public class CxfConfig {
@Bean
@Qualifier("unifyEndPoint")
public Endpoint unifyEndPoint() {
- EndpointImpl endpoint = new EndpointImpl(springBus(), null);
- endpoint.publish("/api/unify");
+ EndpointImpl endpoint = new EndpointImpl(springBus(), unifyMessageService);
+ endpoint.publish("/unify");
+ return endpoint;
+ }
+
+ @Bean
+ @Qualifier("wsRecordSubmitEndPoint")
+ public Endpoint wsRecordSubmitEndPoint() {
+ EndpointImpl endpoint = new EndpointImpl(springBus(), sdWebServiceUnifyMessageService);
+ endpoint.publish("/WS_RECORD_SUBMIT");
return endpoint;
}
}
diff --git a/src/main/java/com/docus/server/message/config/WsMessageForwardConfig.java b/src/main/java/com/docus/server/message/config/WsMessageForwardConfig.java
new file mode 100644
index 0000000..4b9424c
--- /dev/null
+++ b/src/main/java/com/docus/server/message/config/WsMessageForwardConfig.java
@@ -0,0 +1,47 @@
+package com.docus.server.message.config;
+
+import com.docus.core.util.Func;
+import com.docus.server.message.enums.DataFormatEnum;
+import com.docus.server.message.util.TableJsonRead;
+import lombok.Data;
+
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * @author wyb
+ */
+public class WsMessageForwardConfig {
+ private final static String CONFIG_FILE_PATH = "data-config";
+ private final static String CONFIG_FILE_NAME = "ws-message-forward-config.json";
+
+ public static WsMessageForward wsMessageForward(String method) {
+ Objects.requireNonNull(method);
+ TableJsonRead jsonReader = new TableJsonRead();
+ String wsMessageForwardConfigJson = jsonReader.ReadContent(CONFIG_FILE_PATH, CONFIG_FILE_NAME);
+ if (wsMessageForwardConfigJson == null) {
+ return null;
+ }
+ List wsMessageForwardList = Func.parseJsonArray(wsMessageForwardConfigJson, WsMessageForward.class);
+ if (Func.isEmpty(wsMessageForwardList)) {
+ return null;
+ }
+ for (WsMessageForward wsMessageForward : wsMessageForwardList) {
+ if (method.equals(wsMessageForward.getMethod())) {
+ return wsMessageForward;
+ }
+ }
+ return null;
+ }
+
+ @Data
+ public static class WsMessageForward {
+ private String method;
+ private List urls;
+ private String errorResult;
+ /**
+ * @see DataFormatEnum#getValue()
+ */
+ private Integer messageDataType;
+ }
+}
diff --git a/src/main/java/com/docus/server/message/consts/HospitalWsMethod.java b/src/main/java/com/docus/server/message/consts/HospitalWsMethod.java
new file mode 100644
index 0000000..685e852
--- /dev/null
+++ b/src/main/java/com/docus/server/message/consts/HospitalWsMethod.java
@@ -0,0 +1,13 @@
+package com.docus.server.message.consts;
+
+/**
+ * 医院webservice推送方法
+ *
+ * @author wyb
+ */
+public interface HospitalWsMethod {
+ /**
+ * 电子病历提交信息推送
+ */
+ String WS_RECORD_SUBMIT = "WS_RECORD_SUBMIT";
+}
diff --git a/src/main/java/com/docus/server/message/controller/MessagePushController.java b/src/main/java/com/docus/server/message/controller/MessagePushController.java
new file mode 100644
index 0000000..adcd2af
--- /dev/null
+++ b/src/main/java/com/docus/server/message/controller/MessagePushController.java
@@ -0,0 +1,37 @@
+package com.docus.server.message.controller;
+
+import com.docus.server.message.consts.InteractiveMethod;
+import com.docus.server.message.dto.Message;
+import com.docus.server.message.service.UnifyMessageService;
+import io.swagger.annotations.Api;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 消息接收控制
+ *
+ * @author wyb
+ */
+@Api("消息推送")
+@RestController
+@Slf4j
+@RequestMapping("/message/push")
+public class MessagePushController {
+ private UnifyMessageService unifyMessageService;
+
+ @Autowired
+ @Qualifier(InteractiveMethod.HTTP)
+ public void setUnifyMessageService(UnifyMessageService unifyMessageService) {
+ this.unifyMessageService = unifyMessageService;
+ }
+
+ @PostMapping("/do")
+ public String pushInformation(@RequestBody Message message) {
+ return unifyMessageService.pushInformation(message.getMethod(), message.getMessage());
+ }
+}
diff --git a/src/main/java/com/docus/server/message/controller/MessageReceiveController.java b/src/main/java/com/docus/server/message/controller/MessageReceiveController.java
index 25d4013..42f49d3 100644
--- a/src/main/java/com/docus/server/message/controller/MessageReceiveController.java
+++ b/src/main/java/com/docus/server/message/controller/MessageReceiveController.java
@@ -1,35 +1,32 @@
package com.docus.server.message.controller;
-import com.docus.server.message.consts.InteractiveMethod;
+import com.docus.infrastructure.web.api.ResultCode;
import com.docus.server.message.dto.Message;
-import com.docus.server.message.service.UnifyMessageService;
+import com.docus.server.message.dto.MessageResponse;
import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 消息接收控制
+ *
* @author wyb
*/
-@Api("")
+@Api("消息接收")
@RestController
@Slf4j
-@RequestMapping("/api/message")
+@RequestMapping("/message/receive")
public class MessageReceiveController {
- private UnifyMessageService unifyMessageService;
- @Autowired
- @Qualifier(InteractiveMethod.HTTP)
- public void setUnifyMessageService(UnifyMessageService unifyMessageService) {
- this.unifyMessageService = unifyMessageService;
- }
- @PostMapping("/receive")
- public String receiveMessage(Message message){
- return unifyMessageService.receive(message.getMethod(),message.getMessage());
+ @PostMapping("/wsRecordSubmit/do")
+ @ApiOperation("消息接收测试")
+ public MessageResponse receiveMessage(@RequestBody Message message) {
+ System.out.println("wsRecordSubmit" + message);
+ return new MessageResponse(ResultCode.SUCCESS.getCode(), "成功接收到了!");
}
}
diff --git a/src/main/java/com/docus/server/message/dto/Message.java b/src/main/java/com/docus/server/message/dto/Message.java
index f49e1bf..c3fdd76 100644
--- a/src/main/java/com/docus/server/message/dto/Message.java
+++ b/src/main/java/com/docus/server/message/dto/Message.java
@@ -11,4 +11,20 @@ import lombok.Setter;
public class Message {
private String method;
private String message;
+
+ public Message() {
+ }
+
+ public Message(String method, String message) {
+ this.method = method;
+ this.message = message;
+ }
+
+ @Override
+ public String toString() {
+ return "Message{" +
+ "method='" + method + '\'' +
+ ", message='" + message + '\'' +
+ '}';
+ }
}
diff --git a/src/main/java/com/docus/server/message/dto/MessageResponse.java b/src/main/java/com/docus/server/message/dto/MessageResponse.java
new file mode 100644
index 0000000..0ff8884
--- /dev/null
+++ b/src/main/java/com/docus/server/message/dto/MessageResponse.java
@@ -0,0 +1,19 @@
+package com.docus.server.message.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @author wyb
+ */
+@Getter
+@Setter
+public class MessageResponse {
+ private Integer respCode;
+ private String respMessage;
+
+ public MessageResponse(Integer respCode, String respMessage) {
+ this.respCode = respCode;
+ this.respMessage = respMessage;
+ }
+}
diff --git a/src/main/java/com/docus/server/message/enums/DataFormatEnum.java b/src/main/java/com/docus/server/message/enums/DataFormatEnum.java
new file mode 100644
index 0000000..4d29bde
--- /dev/null
+++ b/src/main/java/com/docus/server/message/enums/DataFormatEnum.java
@@ -0,0 +1,32 @@
+package com.docus.server.message.enums;
+
+import com.docus.infrastructure.core.db.enums.IIntegerEnum;
+
+public enum DataFormatEnum implements IIntegerEnum {
+ XML(1, "XML"), JSON(2, "JSON");
+ Integer value;
+ String display;
+
+ DataFormatEnum(Integer value, String display) {
+ this.value = value;
+ this.display = display;
+ }
+
+ @Override
+ public Integer getValue() {
+ return this.value;
+ }
+
+ @Override
+ public String getDisplay() {
+ return this.display;
+ }
+
+ public static DataFormatEnum fromValue(Integer value) {
+ try {
+ return (DataFormatEnum) IIntegerEnum.fromValue(DataFormatEnum.class, value);
+ } catch (Exception ex) {
+ return null;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/docus/server/message/result/MessageInfo.java b/src/main/java/com/docus/server/message/result/MessageInfo.java
new file mode 100644
index 0000000..d3f310f
--- /dev/null
+++ b/src/main/java/com/docus/server/message/result/MessageInfo.java
@@ -0,0 +1,21 @@
+package com.docus.server.message.result;
+
+import com.docus.server.message.enums.DataFormatEnum;
+
+public class MessageInfo {
+ private final DataFormatEnum messageFormat;
+ private final String message;
+
+ public MessageInfo(DataFormatEnum dataFormatEnum, String message) {
+ this.messageFormat = dataFormatEnum;
+ this.message = message;
+ }
+
+ public DataFormatEnum getMessageFormat() {
+ return messageFormat;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/docus/server/message/result/ParametersEnum.java b/src/main/java/com/docus/server/message/result/ParametersEnum.java
new file mode 100644
index 0000000..9716be9
--- /dev/null
+++ b/src/main/java/com/docus/server/message/result/ParametersEnum.java
@@ -0,0 +1,32 @@
+package com.docus.server.message.result;
+
+import com.docus.core.util.DateUtil;
+import com.docus.core.util.Func;
+import com.docus.server.message.util.IdUtil;
+
+import java.util.Date;
+
+public enum ParametersEnum {
+ DATE("DATE", DateUtil.format(new Date(), "yyyy-MM-dd")),
+ DATE_NO_CONNECT("DATE_NO_CONNECT", DateUtil.format(new Date(), "yyyyMMdd")),
+ DATE_TIME("DATE_TIME", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")),
+ DATE_TIME_NO_CONNECT("DATE_TIME_NO_CONNECT", DateUtil.format(new Date(), "yyyyMMddHHmmss")),
+ STANDARD_UUID("STANDARD_UUID", IdUtil.standardUUID()),
+ STANDARD_NO_CONNECT("STANDARD_NO_CONNECT", Func.randomUUID()),
+ ;
+ String type;
+ String param;
+
+ ParametersEnum(String type, String param) {
+ this.type = type;
+ this.param = param;
+ }
+
+ public String getParam() {
+ return param;
+ }
+
+ public String getType() {
+ return type;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/docus/server/message/result/PlaceHolder.java b/src/main/java/com/docus/server/message/result/PlaceHolder.java
new file mode 100644
index 0000000..b025458
--- /dev/null
+++ b/src/main/java/com/docus/server/message/result/PlaceHolder.java
@@ -0,0 +1,33 @@
+package com.docus.server.message.result;
+
+public class PlaceHolder {
+ /**
+ * 表达式路径
+ */
+ private final String path;
+ /**
+ * 完整占位字符
+ */
+ private final String placeHolder;
+
+ public PlaceHolder(String path, String placeHolder) {
+ this.path = path;
+ this.placeHolder = placeHolder;
+ }
+
+ public String getPath() {
+ return path;
+ }
+
+ public String getPlaceHolder() {
+ return placeHolder;
+ }
+
+ @Override
+ public String toString() {
+ return "PlaceHolder{" +
+ "path='" + path + '\'' +
+ ", placeHolder='" + placeHolder + '\'' +
+ '}';
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/docus/server/message/result/ResultUtil.java b/src/main/java/com/docus/server/message/result/ResultUtil.java
new file mode 100644
index 0000000..2e57971
--- /dev/null
+++ b/src/main/java/com/docus/server/message/result/ResultUtil.java
@@ -0,0 +1,207 @@
+package com.docus.server.message.result;
+
+import com.alibaba.fastjson.JSONObject;
+import com.docus.core.util.Func;
+import com.docus.server.message.dto.Message;
+import com.docus.server.message.enums.DataFormatEnum;
+import com.docus.server.message.util.XmlUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.w3c.dom.Node;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * @author wyb
+ */
+public class ResultUtil {
+ private static final Logger logger = LoggerFactory.getLogger(ResultUtil.class);
+
+ private final static Pattern JSON_PLACE_HOLDER_PATTERN = Pattern.compile("\\$\\{\\{json:([A-Za-z0-9._/@]+)}}");
+ private final static Pattern XML_PLACE_HOLDER_PATTERN = Pattern.compile("\\$\\{\\{xpath:([A-Za-z0-9._/@]+)}}");
+ private final static Pattern SYSTEM_PLACE_HOLDER_PATTERN = Pattern.compile("\\$\\{\\{system:([A-Za-z0-9._/@]+)}}");
+
+
+ public static String dynamicParameterReplace(MessageInfo messageInfo, String result) {
+ result = systemDynamicParameterReplace(result);
+ result = requestDynamicParameterReplace(messageInfo, result);
+ return result;
+ }
+
+ private static String requestDynamicParameterReplace(MessageInfo messageInfo, String result) {
+ try {
+ switch (messageInfo.getMessageFormat()) {
+ case JSON:
+ return dynamicParameterReplaceFromJsonMessage(messageInfo.getMessage(), result);
+ case XML:
+ return dynamicParameterReplaceFromXmlMessage(messageInfo.getMessage(), result);
+ default:
+ throw new RuntimeException("未实现的message解析填充返回值!");
+ }
+ } catch (Exception ex) {
+ logger.error(ex.getMessage(), ex);
+ return result;
+ }
+ }
+
+ private static String dynamicParameterReplaceFromXmlMessage(String message, String result) {
+ XmlUtil xmlUtil = XmlUtil.of(message);
+ List xmlPlaceHolders = findAllXmlPlaceHolder(result);
+ for (PlaceHolder placeHolder : xmlPlaceHolders) {
+ Node node = xmlUtil.getNode(placeHolder.getPath());
+ String newPlaceHolder = null;
+ if (node != null) {
+ newPlaceHolder = node.getNodeValue() == null ? node.getTextContent() : node.getNodeValue();
+ }
+ newPlaceHolder = newPlaceHolder == null ? "" : newPlaceHolder;
+ result = result.replace(placeHolder.getPlaceHolder(), newPlaceHolder);
+ }
+ return result;
+ }
+
+
+ private static String dynamicParameterReplaceFromJsonMessage(String message, String result) {
+ JSONObject jsonObject = Func.readJson(message, JSONObject.class);
+ List jsonPlaceHolderList = findAllJsonPlaceHolder(message);
+ for (PlaceHolder placeHolder : jsonPlaceHolderList) {
+ String newPlaceHolder = getVal(jsonObject, placeHolder.getPath());
+ newPlaceHolder = newPlaceHolder == null ? "" : newPlaceHolder;
+ result = result.replace(placeHolder.getPlaceHolder(), newPlaceHolder);
+ }
+ return result;
+ }
+
+ private static String getVal(JSONObject jsonObject, String path) {
+ try {
+ String[] split = path.split("\\.");
+ return getVal(jsonObject, split);
+ } catch (Exception ex) {
+ logger.error(ex.getMessage(), ex);
+ return null;
+ }
+
+
+ }
+
+ private static String getVal(JSONObject jsonObject, String[] keys) {
+ if (jsonObject == null || jsonObject.size() <= 0) {
+ return null;
+ }
+ if (keys.length == 1) {
+ return jsonObject.getString(keys[0]);
+ }
+ jsonObject = jsonObject.getJSONObject(keys[0]);
+ keys = cutFirst(keys);
+ return getVal(jsonObject, keys);
+ }
+
+ private static String[] cutFirst(String[] oldArrays) {
+ int newLength = oldArrays.length - 1;
+ String[] newArray = new String[newLength];
+ System.arraycopy(oldArrays, 1, newArray, 0, newLength);
+ return newArray;
+ }
+
+ private static List findAllJsonPlaceHolder(String result) {
+ Matcher matcher = JSON_PLACE_HOLDER_PATTERN.matcher(result);
+ List placeHolderList = new ArrayList<>();
+ while (matcher.find()) {
+ String placeholder = matcher.group(0);
+ placeHolderList.add(new PlaceHolder(placeholder.replace("${{json:", "").replace("}}", ""), placeholder));
+ }
+ return placeHolderList;
+ }
+
+ private static List findAllXmlPlaceHolder(String result) {
+ Matcher matcher = XML_PLACE_HOLDER_PATTERN.matcher(result);
+ List placeHolderList = new ArrayList<>();
+ while (matcher.find()) {
+ String placeholder = matcher.group(0);
+ placeHolderList.add(new PlaceHolder(placeholder.replace("${{xpath:", "").replace("}}", ""), placeholder));
+ }
+ return placeHolderList;
+ }
+
+ /**
+ * 根据系统枚举的参数类型替换占位
+ *
+ * @param result 原result
+ * @return 新的 result
+ */
+ private static String systemDynamicParameterReplace(String result) {
+ try {
+ ParametersEnum[] parameters = ParametersEnum.values();
+ for (ParametersEnum parameter : parameters) {
+ result = result.replace("${{system:" + parameter.getType() + "}}", parameter.getParam());
+ }
+ return result;
+ } catch (Exception ex) {
+ logger.error(ex.getMessage(), ex);
+ return result;
+ }
+ }
+
+ public static void main(String[] args) {
+ String message = "
10020453230001F 南方医科大学顺德医院发热门诊http://192.168.5.61:16703//2021/12/29/20211229G0506000.pdf
检验- Real Time - PCR
ORF1ab基因 ORF1ab gene
阴性 Negative阳性阳性 Positive危急偏高
- Real Time - PCR
N基因 N gene
阴性 Negative阳性阳性 Positive危急偏高
- Real Time - PCR
新型冠状病毒核酸 2019-nCOV
阴性 Negative阳性阳性 Positive危急偏高
合格
新冠门诊采集
";
+ String template = " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " - \n" +
+ "
\n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " - \n" +
+ "
\n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ "\n";
+ System.out.println(findAllXmlPlaceHolder(template));
+ System.out.println(findAllJsonPlaceHolder(template));
+ System.out.println(template);
+ System.out.println(dynamicParameterReplace(new MessageInfo(DataFormatEnum.XML, message), template));
+ System.out.println(DataFormatEnum.fromValue(2));
+ String[] split = "1,2,3,4".split(",");
+ String[] one = cutFirst(split);
+ String[] two = cutFirst(one);
+
+ System.out.println(Arrays.toString(split));
+ System.out.println(Arrays.toString(one));
+ System.out.println(Arrays.toString(two));
+ Message obj = new Message("method", "message_str");
+ HashMap