增加功能
This commit is contained in:
parent
f41139ea76
commit
dc83412a06
@ -153,48 +153,19 @@ public class CommonImpl implements HISInterfaceService {
|
||||
if(method == null || method.equals("") || method.equals("null")){
|
||||
return new Result("-1","json格式不正确,必须包含method节点");
|
||||
}
|
||||
try {
|
||||
// 1. 优先查找当前实例自身及父类(直到CommonImpl)中的方法
|
||||
Method targetMethod = findMethodInHierarchy(this.getClass(), method);
|
||||
if (targetMethod != null) {
|
||||
// 执行当前类或父类中的方法(this为当前实例,可能是子类对象)
|
||||
Object result = targetMethod.invoke(this, param);
|
||||
return (Result) result;
|
||||
}
|
||||
|
||||
// 2. 若未找到,再查找commonExt中的方法
|
||||
Method extMethod = commonExt.getClass().getMethod(method, String.class);
|
||||
Object extResult = extMethod.invoke(commonExt, param);
|
||||
return (Result) extResult;
|
||||
}catch (NoSuchMethodException e) {
|
||||
// 方法不存在的情况
|
||||
return new Result("1", "该接口还未实现!", method);
|
||||
} catch (IllegalAccessException e) {
|
||||
// 方法访问权限不足(如private方法)
|
||||
log.error("方法访问权限不足:",e);
|
||||
return new Result("-1", "方法访问失败:" + e.getMessage());
|
||||
} catch (InvocationTargetException e) {
|
||||
// 方法执行过程中抛出异常
|
||||
Throwable targetException = e.getTargetException();
|
||||
log.error("方法执行异常:",e);
|
||||
return new Result("-1", "方法执行异常:" + targetException.getMessage());
|
||||
} catch (ClassCastException e) {
|
||||
// 方法返回值不是Result类型
|
||||
return new Result("-1", "方法返回值类型错误");
|
||||
switch (method){
|
||||
case "sampleaction":
|
||||
//危急值接口
|
||||
return commonExt.sampleaction(param);
|
||||
case "getSamplingTime": //采样登记
|
||||
return commonExt.getSamplingTime(param);
|
||||
case "getInspectTime": //标本送检
|
||||
return commonExt.getInspectTime(param);
|
||||
default:
|
||||
return new Result("1","该接口还未实现!",method);
|
||||
}
|
||||
|
||||
// switch (method){
|
||||
// case "sampleaction":
|
||||
// //危急值接口
|
||||
// return commonExt.sampleaction(param);
|
||||
// case "getSamplingTime": //采样登记
|
||||
// return commonExt.getSamplingTime(param);
|
||||
// case "getInspectTime": //标本送检
|
||||
// return commonExt.getInspectTime(param);
|
||||
// default:
|
||||
// return new Result("-1","该接口还未实现!",method);
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -12,13 +12,8 @@ import java.util.Map;
|
||||
|
||||
@Slf4j
|
||||
public class SocketUtils {
|
||||
|
||||
|
||||
public static String socketServerPort;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 启动socket
|
||||
*/
|
||||
|
||||
@ -1,6 +1,9 @@
|
||||
package com.czlisinterface.jldermyy.service.impl;
|
||||
|
||||
import cn.hutool.core.util.CharsetUtil;
|
||||
import cn.hutool.core.util.XmlUtil;
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import cn.hutool.http.HttpResponse;
|
||||
import cn.hutool.http.webservice.SoapClient;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
@ -10,6 +13,7 @@ import com.czlisinterface.system.pojo.ComUsr;
|
||||
import com.czlisinterface.system.pojo.LabReqmain;
|
||||
import com.czlisinterface.system.pojo.Result;
|
||||
import com.czlisinterface.system.service.impl.CommonImpl;
|
||||
import com.czlisinterface.system.utils.CommonUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
@ -18,7 +22,7 @@ import org.w3c.dom.Document;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.xml.xpath.XPathConstants;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
|
||||
|
||||
/**
|
||||
@ -34,66 +38,128 @@ public class Lisinterface_jldermyy extends CommonImpl {
|
||||
String postURL;
|
||||
|
||||
@Resource
|
||||
CommonMapper commonMapper;
|
||||
CommonUtil commonUtil;
|
||||
@Resource
|
||||
HisMapper_jldermyy hisMapperJldermyy;
|
||||
|
||||
|
||||
public Result test11(String param){
|
||||
// log.error("测试一条error日志");
|
||||
// log.debug("debug日志是否也能被记录呢?");
|
||||
// ComUsr userHISId = commonMapper.getUserHISId("00453");
|
||||
// return new Result("0",userHISId.toString());
|
||||
List<LabReqmain> labreqmain = hisMapperJldermyy.getLabreqmain();
|
||||
return new Result("0",labreqmain.toString());
|
||||
@Override
|
||||
public Result invokeHttp(String param) {
|
||||
Result result = super.invokeHttp(param);
|
||||
if(!result.equals("1")) return result;
|
||||
JSONObject jsonObject = JSONUtil.parseObj(param);
|
||||
String method = jsonObject.getStr("method");
|
||||
switch (method){
|
||||
|
||||
}
|
||||
|
||||
return new Result("-1","没有找到接口方法!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 调用his的webservice接口
|
||||
* @param action
|
||||
* @param xmlStr
|
||||
* @param xmlData
|
||||
* @return
|
||||
*/
|
||||
public Result xmlInvoke(String action,String xmlStr){
|
||||
String result = "";
|
||||
try{
|
||||
//String url = "http://172.29.91.236/sj_web_ss/StandardService.asmx?wsdl";
|
||||
SoapClient client = SoapClient.create(postURL)
|
||||
.header("SOAPAction","http://www.bkgtsoft.com/ESB.SoapService.Send")
|
||||
// 设置要请求的方法,此接口方法前缀为web,传入对应的命名空间
|
||||
.setMethod("bkg:Send", "http://www.bkgtsoft.com")
|
||||
.setParam("action",action,true)//此处写true,会自动填写命名空间
|
||||
.setParam("message","<![CDATA["+xmlStr+"]]>",true);
|
||||
public Result invokeHttpWebService(String xmlData){
|
||||
String ret = null;
|
||||
|
||||
// log.info("接口地址:{}\n入参:{}",postURL,client.getMsgStr(false));
|
||||
// 发送请求,参数true表示返回一个格式化后的XML内容
|
||||
// 返回内容为XML字符串,可以配合XmlUtil解析这个响应
|
||||
result = client.send(false);
|
||||
//log.info("webservice返回内容:"+result);
|
||||
// if(result.contains("<![CDATA[")){
|
||||
// result = result.substring(result.indexOf("<![CDATA[")+9,result.indexOf("]]>"));
|
||||
// }
|
||||
while(result.contains("<![CDATA[") || result.contains("]]>")){
|
||||
result = result.replace("<![CDATA[","");
|
||||
result = result.replace("]]>","");
|
||||
log.info("调用地址:"+postURL);
|
||||
//log.info("调用平台接口,入参:"+json);
|
||||
try (HttpResponse httpResponse = HttpRequest.post(postURL)
|
||||
.header("Content-Type", "text/xml;charset=utf-8")
|
||||
.header("SOAPAction","urn:hl7-org:v3/PlatService")
|
||||
.body(xmlData)
|
||||
.execute()) {
|
||||
int status = httpResponse.getStatus();
|
||||
ret = httpResponse.body();
|
||||
if(status != 200){
|
||||
log.error("调用平台接口,入参:{},出参:{}",xmlData,ret);
|
||||
return new Result("-1","调用集成平台的http接口失败:"+ret);
|
||||
}
|
||||
result = result.substring(result.indexOf("<Response>"),result.indexOf("</Response>")+11);
|
||||
// log.info("result:"+result);
|
||||
}catch (Exception ex){
|
||||
log.error("服务标识:{}\r\n入参:{}\r\n出参:{},{}",action,xmlStr,result,ex);
|
||||
throw ex;
|
||||
|
||||
} catch (Exception e){
|
||||
log.error("调用平台接口,入参:{},{}",xmlData,e);
|
||||
return new Result("-1",e.getMessage());
|
||||
}
|
||||
log.info("调用集成平台接口:\r\n入参:"+xmlData+"\r\n出参:"+ret);
|
||||
if(ret.contains("<PlatServiceResult>")){
|
||||
ret = ret.substring(ret.indexOf("<PlatServiceResult>"),ret.indexOf("</PlatServiceResult>")+20);
|
||||
}
|
||||
log.info("服务标识:{}\r\n调用平台接口入参:{}\r\n出参:{}",action,xmlStr,result);
|
||||
|
||||
//解析出参
|
||||
String resultCode = "";
|
||||
String msg = "";
|
||||
Document doc = XmlUtil.parseXml(result);
|
||||
Document doc = XmlUtil.parseXml(ret);
|
||||
String resTag = String.valueOf(XmlUtil.getByXPath("//Res/MsgHead/ResTag", doc, XPathConstants.STRING));
|
||||
String resMsg = String.valueOf(XmlUtil.getByXPath("//Res/MsgHead/ResMsg", doc, XPathConstants.STRING));
|
||||
int resTagInt = -1;
|
||||
try{
|
||||
resTagInt = Integer.parseInt(resTag);
|
||||
}catch (Exception e){
|
||||
return new Result("-1","his返回值转换失败:"+e.getMessage());
|
||||
}
|
||||
if(resTagInt >= 0){
|
||||
return new Result("0","调用接口成功!");
|
||||
}else{
|
||||
return new Result("-1","调用接口失败:"+resMsg);
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
public String toXml(String xmlStr11){
|
||||
Map<String, Object> mapHead = new HashMap<>();
|
||||
mapHead.put("SrvId","02004");
|
||||
mapHead.put("ReqSysId","041001-4");
|
||||
mapHead.put("MsgId", UUID.randomUUID());
|
||||
mapHead.put("Dt",commonUtil.currentStringTime());
|
||||
mapHead.put("MsgCheckCode","");
|
||||
mapHead.put("OperateType","1");
|
||||
mapHead.put("Remark","");
|
||||
|
||||
Map<String,Object> applyQryConditionMap = new HashMap<>();
|
||||
applyQryConditionMap.put("UnitId","");
|
||||
applyQryConditionMap.put("VisitType","");
|
||||
applyQryConditionMap.put("PatientNo","");
|
||||
applyQryConditionMap.put("VisitId","");
|
||||
applyQryConditionMap.put("CardNo","");
|
||||
applyQryConditionMap.put("ApplyNo","");
|
||||
applyQryConditionMap.put("ApplyFormType","");
|
||||
applyQryConditionMap.put("PerformDeptId","");
|
||||
applyQryConditionMap.put("DeptId","");
|
||||
applyQryConditionMap.put("WardId","");
|
||||
applyQryConditionMap.put("OrderTimeBegin","");
|
||||
applyQryConditionMap.put("OrderTimeEnd","");
|
||||
applyQryConditionMap.put("AcceptNo","");
|
||||
applyQryConditionMap.put("IncludeExtend","");
|
||||
applyQryConditionMap.put("PerformStatus","");
|
||||
applyQryConditionMap.put("ChargMark","");
|
||||
applyQryConditionMap.put("ChargTimeBegin","");
|
||||
applyQryConditionMap.put("ChargTimeEnd","");
|
||||
applyQryConditionMap.put("OrderClass","001");
|
||||
applyQryConditionMap.put("NurseAduitMark","");
|
||||
|
||||
Map<String,Object> map = new HashMap<>();
|
||||
map.put("MsgHead",mapHead);
|
||||
map.put("ApplyQryCondition",applyQryConditionMap);
|
||||
String xmlStr = XmlUtil.toStr(XmlUtil.mapToXml(map, "Req"), CharsetUtil.UTF_8, false, true);
|
||||
String joinedStr = joinStr(xmlStr);
|
||||
System.out.println("joinedStr:"+joinedStr);
|
||||
Result result = invokeHttpWebService(joinedStr);
|
||||
System.out.println(result);
|
||||
return xmlStr;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public String joinStr(String xmlStr){
|
||||
StringBuffer sbStr = new StringBuffer();
|
||||
sbStr.append("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:urn=\"urn:hl7-org:v3\">");
|
||||
sbStr.append("<soapenv:Header/>");
|
||||
sbStr.append("<soapenv:Body>");
|
||||
sbStr.append("<urn:PlatService>");
|
||||
sbStr.append("<urn:message><![CDATA["+xmlStr+"]]></urn:message>");
|
||||
sbStr.append("</urn:PlatService>");
|
||||
sbStr.append("</soapenv:Body>");
|
||||
sbStr.append("</soapenv:Envelope>");
|
||||
|
||||
return sbStr.toString();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -11,7 +11,6 @@
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>lisinterface_start</name>
|
||||
<url>http://maven.apache.org</url>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
@ -71,7 +70,9 @@
|
||||
</manifest>
|
||||
<manifestEntries>
|
||||
<!--MANIFEST.MF 中 Class-Path 加入资源文件目录 -->
|
||||
<Class-Path>./config/</Class-Path>
|
||||
<Class-Path>
|
||||
./config/ liscommon-1.0.jar lisinterface_jldermyy-1.0.jar
|
||||
</Class-Path>
|
||||
</manifestEntries>
|
||||
</archive>
|
||||
<outputDirectory>${project.build.directory}</outputDirectory>
|
||||
@ -91,6 +92,23 @@
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.directory}/lib/</outputDirectory>
|
||||
<!-- 排除指定的自定义 jar 包(根据 artifactId 排除) -->
|
||||
<excludeArtifactIds>liscommon,lisinterface_jldermyy</excludeArtifactIds>
|
||||
<!-- 可选:如果需要更精确,可结合 groupId 排除(这里两个依赖的 groupId 都是 org.example) -->
|
||||
<!-- <excludeGroupIds>org.example</excludeGroupIds>-->
|
||||
</configuration>
|
||||
</execution>
|
||||
<!--打包自定义jar包-->
|
||||
<execution>
|
||||
<id>copy-custom-dependencies</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>copy-dependencies</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.directory}</outputDirectory>
|
||||
<!-- 只包含这两个自定义 jar 包(根据 artifactId 匹配) -->
|
||||
<includeArtifactIds>liscommon,lisinterface_jldermyy</includeArtifactIds>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user