You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
132 lines
4.6 KiB
132 lines
4.6 KiB
2 years ago
|
package com.ynxbd.common.helper.lis;
|
||
|
|
||
|
import com.ynxbd.common.helper.ProperHelper;
|
||
|
import com.ynxbd.common.helper.common.ErrorHelper;
|
||
|
import com.ynxbd.common.helper.common.FileHelper;
|
||
|
import com.ynxbd.common.helper.common.SoapHelper;
|
||
|
import com.ynxbd.common.result.JsonResult;
|
||
|
import com.ynxbd.common.result.JsonResultEnum;
|
||
|
import lombok.extern.slf4j.Slf4j;
|
||
|
import org.dom4j.DocumentException;
|
||
|
import org.dom4j.DocumentHelper;
|
||
|
import org.dom4j.Element;
|
||
|
import org.dom4j.Node;
|
||
|
|
||
|
import java.util.HashMap;
|
||
|
import java.util.List;
|
||
|
import java.util.Map;
|
||
|
|
||
|
@Slf4j
|
||
|
public class RMLisHelper {
|
||
|
|
||
|
// 请求地址
|
||
|
final private static String LIS_SOAP_URL;
|
||
|
|
||
|
static {
|
||
|
ProperHelper config = new ProperHelper().read("webservice.properties");
|
||
|
String url = config.getString("lis.url");
|
||
|
|
||
|
if (url == null) {
|
||
|
LIS_SOAP_URL = null;
|
||
|
log.error("Lis配置文件读取失败");
|
||
|
} else {
|
||
|
LIS_SOAP_URL = "http://" + url + "/LisReportServics.asmx?wsdl";
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* webService请求工具类(枚举版)
|
||
|
*
|
||
|
* @param params 发送的参数
|
||
|
* @return 响应的xml数据
|
||
|
*/
|
||
|
public static String getResponseXml(String method, Map<String, Object> params) {
|
||
|
if (params == null) {
|
||
|
log.info("params is null");
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
String result;
|
||
|
try {
|
||
|
long begTime = System.currentTimeMillis(); // 开始时间
|
||
|
String responseXml = SoapHelper.post("RMLis", LIS_SOAP_URL, null,
|
||
|
"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ruim=\"http://www.ruimei.com.cn\">" +
|
||
|
"<soapenv:Header/>" +
|
||
|
"<soapenv:Body><ruim:UnifiedEntrance>" +
|
||
|
"<ruim:methodName>" + method + "</ruim:methodName>" +
|
||
|
"<ruim:parameterType>1</ruim:parameterType>" +
|
||
|
"<ruim:parameterValue><![CDATA[<Request>" + SoapHelper.requestParams("RMLis", params) + "</Request>]]></ruim:parameterValue>" +
|
||
|
"</ruim:UnifiedEntrance></soapenv:Body></soapenv:Envelope>"
|
||
|
);
|
||
|
|
||
|
long endTime = System.currentTimeMillis(); // 结束时间
|
||
|
String takeTime = (endTime - begTime) + "ms"; // 耗时
|
||
|
if (responseXml == null) {
|
||
|
log.info("RMLis 请求无响应-耗时:[{}]", takeTime);
|
||
|
return null;
|
||
|
}
|
||
|
//解析响应消息,使用SAXReader对象
|
||
|
org.dom4j.Document document = DocumentHelper.parseText(responseXml);
|
||
|
|
||
|
if (document == null) {
|
||
|
log.info("RMLis响应内容解析失败-耗时:[{}]-返回xml={}", takeTime, responseXml);
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
Element rootElement = document.getRootElement();
|
||
|
List<Node> nodes = rootElement.selectNodes("//soap:Body");
|
||
|
Element element = (Element) nodes.get(0);
|
||
|
Element unifiedEntranceResponse = element.element("UnifiedEntranceResponse");
|
||
|
if (unifiedEntranceResponse == null) {
|
||
|
log.info("RMLis响应内容解析失败1-耗时:[{}]", takeTime);
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
Element unifiedEntranceResult = unifiedEntranceResponse.element("UnifiedEntranceResult");
|
||
|
if (unifiedEntranceResult == null) {
|
||
|
log.info("RMLis响应内容解析失败2-耗时:[{}]", takeTime);
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
result = unifiedEntranceResult.getText();
|
||
|
|
||
|
if (result.length() > 500) {
|
||
|
log.info("RMLis请求成功-耗时:[{}]", takeTime);
|
||
|
} else {
|
||
|
log.info("RMLis请求成功-耗时:[{}]-返回xml={}", takeTime, result);
|
||
|
}
|
||
|
return result;
|
||
|
} catch (DocumentException e) {
|
||
|
ErrorHelper.println(e);
|
||
|
}
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* xml响应数据组装成为JSON数据
|
||
|
*
|
||
|
* @return 封装好的对象
|
||
|
*/
|
||
|
public static JsonResult getJsonResult(String method, Map<String, Object> params) {
|
||
|
String responseXml = getResponseXml(method, params);
|
||
|
return JsonResult.xmlToBean(responseXml, JsonResultEnum.SYS_RM_LIS);
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* xml响应数据组装成为JSON数据
|
||
|
*
|
||
|
* @return 封装好的对象
|
||
|
*/
|
||
|
public static JsonResult getJsonResult(String method, JsonResult.MapParams params) {
|
||
|
Map<String, Object> requestParams = new HashMap<>();
|
||
|
if (params != null) {
|
||
|
params.setParams(requestParams);
|
||
|
}
|
||
|
return getJsonResult(method, requestParams);
|
||
|
}
|
||
|
|
||
|
}
|