|
@ -2,103 +2,249 @@ package com.yihu.ehr.ws;
|
|
|
|
|
|
import com.yihu.ehr.dbhelper.jdbc.DBHelper;
|
|
|
import com.yihu.ehr.model.DataSource;
|
|
|
import com.yihu.ehr.model.WSReturnModel;
|
|
|
import com.yihu.ehr.ws.inf.ISQLWebService;
|
|
|
import net.sf.json.JSONArray;
|
|
|
import net.sf.json.xml.XMLSerializer;
|
|
|
import org.apache.commons.dbcp2.BasicDataSource;
|
|
|
import org.apache.cxf.endpoint.Client;
|
|
|
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
|
|
|
import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
import org.springframework.stereotype.Controller;
|
|
|
import org.springframework.util.StringUtils;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
|
|
|
|
import javax.jws.WebService;
|
|
|
|
|
|
|
|
|
/**
|
|
|
* Created by Administrator on 2016/5/19.
|
|
|
*/
|
|
|
//@WebService(endpointInterface = "com.yihu.ehr.ws.inf.ISQLWebService", targetNamespace = "com.yihu.ehr.ws.inf")
|
|
|
@Controller
|
|
|
@RequestMapping("sql")
|
|
|
@WebService(endpointInterface = "com.yihu.ehr.ws.inf.ISQLWebService", targetNamespace = "com.yihu.ehr.ws.inf")
|
|
|
public class SQLWebService implements ISQLWebService {
|
|
|
public static JdbcTemplate jdbcTemplate = null;
|
|
|
|
|
|
@RequestMapping("excuteSQL")
|
|
|
@ResponseBody
|
|
|
public String excuteSQL(String sql) {
|
|
|
public void initJDBC() throws Exception{
|
|
|
if (jdbcTemplate == null) {
|
|
|
//jdbc:oracle:thin:hos/hos@//172.19.103.71:1521/orcl
|
|
|
//jdbc:mysql://172.19.103.71:1521/orcl?user=hos&password=hos&useUnicode=true&characterEncoding=UTF-8
|
|
|
//jdbc:sqlserver://172.19.103.71:1521/orcl?user=hos&password=hos
|
|
|
DBHelper dbTemp = new DBHelper();
|
|
|
DataSource source = dbTemp.load(DataSource.class, "select * from system_datasource");
|
|
|
String config = source.getConfig();
|
|
|
BasicDataSource dasicDataSource = new BasicDataSource();
|
|
|
if (config.contains("oracle")) {
|
|
|
//oracle数据库
|
|
|
dasicDataSource.setUrl(source.getConfig());
|
|
|
dasicDataSource.setDriverClassName("oracle.jdbc.driver.OracleDriver");
|
|
|
String[] s1 = config.split("@");
|
|
|
String[] s2 = s1[0].split(":");
|
|
|
String[] s3 = s2[3].split("/");
|
|
|
dasicDataSource.setUsername(s3[0]);
|
|
|
dasicDataSource.setPassword(s3[1]);
|
|
|
} else if (config.contains("mysql")) {
|
|
|
//mysql数据库
|
|
|
dasicDataSource.setUrl(source.getConfig());
|
|
|
dasicDataSource.setDriverClassName("com.mysql.jdbc.Driver");
|
|
|
String[] s1 = config.split("\\?");
|
|
|
String[] s2 = s1[1].split("&");
|
|
|
dasicDataSource.setUsername(s2[0].split("=")[1]);
|
|
|
dasicDataSource.setPassword(s2[1].split("=")[1]);
|
|
|
} else if (config.contains("sqlserver")) {
|
|
|
//sqlserver数据库
|
|
|
dasicDataSource.setUrl(source.getConfig());
|
|
|
dasicDataSource.setDriverClassName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
|
|
|
String[] s1 = config.split("\\?");
|
|
|
String[] s2 = s1[1].split("&");
|
|
|
dasicDataSource.setUsername(s2[0].split("=")[1]);
|
|
|
dasicDataSource.setPassword(s2[1].split("=")[1]);
|
|
|
}
|
|
|
jdbcTemplate = new JdbcTemplate();
|
|
|
jdbcTemplate.setDataSource(dasicDataSource);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 执行sql语句
|
|
|
*
|
|
|
* @param sql
|
|
|
* @return
|
|
|
*/
|
|
|
public String excuteSQL(String TransactionCode,
|
|
|
String sql) {
|
|
|
WSReturnModel wsReturnModel = new WSReturnModel();
|
|
|
wsReturnModel.setTransactionCode(TransactionCode);
|
|
|
try {
|
|
|
if (jdbcTemplate == null) {
|
|
|
//jdbc:oracle:thin:hos/hos@//172.19.103.71:1521/orcl
|
|
|
//jdbc:mysql://172.19.103.71:1521/orcl?user=hos&password=hos&useUnicode=true&characterEncoding=UTF-8
|
|
|
//jdbc:sqlserver://172.19.103.71:1521/orcl?user=hos&password=hos
|
|
|
DBHelper dbTemp = new DBHelper();
|
|
|
DataSource source = dbTemp.load(DataSource.class, "select * from system_datasource");
|
|
|
String config = source.getConfig();
|
|
|
BasicDataSource dasicDataSource = new BasicDataSource();
|
|
|
if (config.contains("oracle")) {
|
|
|
//oracle数据库
|
|
|
dasicDataSource.setUrl(source.getConfig());
|
|
|
dasicDataSource.setDriverClassName("oracle.jdbc.driver.OracleDriver");
|
|
|
String[] s1 = config.split("@");
|
|
|
String[] s2 = s1[0].split(":");
|
|
|
String[] s3 = s2[3].split("/");
|
|
|
dasicDataSource.setUsername(s3[0]);
|
|
|
dasicDataSource.setPassword(s3[1]);
|
|
|
System.out.println("config:" + config);
|
|
|
System.out.println("username:" + s3[0]);
|
|
|
System.out.println("password:" + s3[1]);
|
|
|
} else if (config.contains("mysql")) {
|
|
|
//mysql数据库
|
|
|
dasicDataSource.setUrl(source.getConfig());
|
|
|
dasicDataSource.setDriverClassName("com.mysql.jdbc.Driver");
|
|
|
String[] s1 = config.split("\\?");
|
|
|
String[] s2 = s1[1].split("&");
|
|
|
dasicDataSource.setUsername(s2[0].split("=")[1]);
|
|
|
dasicDataSource.setPassword(s2[1].split("=")[1]);
|
|
|
System.out.println("config:" + config);
|
|
|
System.out.println("username:" + s2[0].split("=")[1]);
|
|
|
System.out.println("password:" + s2[1].split("=")[1]);
|
|
|
} else if (config.contains("sqlserver")) {
|
|
|
//sqlserver数据库
|
|
|
dasicDataSource.setUrl(source.getConfig());
|
|
|
dasicDataSource.setDriverClassName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
|
|
|
String[] s1 = config.split("\\?");
|
|
|
String[] s2 = s1[1].split("&");
|
|
|
dasicDataSource.setUsername(s2[0].split("=")[1]);
|
|
|
dasicDataSource.setPassword(s2[1].split("=")[1]);
|
|
|
System.out.println("config:" + config);
|
|
|
System.out.println("username:" + s2[0].split("=")[1]);
|
|
|
System.out.println("password:" + s2[1].split("=")[1]);
|
|
|
initJDBC();
|
|
|
wsReturnModel.setData(jdbcTemplate.queryForList(sql));
|
|
|
return WSReturnModel.toXml(wsReturnModel);
|
|
|
} catch (Exception e1) {
|
|
|
wsReturnModel.setTransactionCode("-30000");
|
|
|
wsReturnModel.setRespMessage(e1.getMessage());
|
|
|
return WSReturnModel.toXml(wsReturnModel);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
jdbcTemplate = new JdbcTemplate();
|
|
|
jdbcTemplate.setDataSource(dasicDataSource);
|
|
|
/**
|
|
|
* 获取检查报告单的列表
|
|
|
*
|
|
|
* @param cardType
|
|
|
* @param cardNo
|
|
|
* @param startDate
|
|
|
* @param endDate
|
|
|
* @param mobile
|
|
|
* @param reportType
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
public String getReportList(
|
|
|
String TransactionCode,
|
|
|
String cardType,
|
|
|
String cardNo,
|
|
|
String startDate,
|
|
|
String endDate,
|
|
|
String mobile,
|
|
|
String reportType) {
|
|
|
WSReturnModel wsReturnModel = new WSReturnModel();
|
|
|
wsReturnModel.setTransactionCode(TransactionCode);
|
|
|
try {
|
|
|
initJDBC();
|
|
|
StringBuffer sb = new StringBuffer("select * from HDSD01_01 where 1=1 ");
|
|
|
if (!StringUtils.isEmpty(endDate)) {
|
|
|
sb.append(" and HDSD00_05_026 < '" + endDate + "'");
|
|
|
}
|
|
|
System.out.println(jdbcTemplate.queryForMap("select 1 from dual"));
|
|
|
System.out.println(jdbcTemplate.queryForList(sql));
|
|
|
JSONArray jo = JSONArray.fromObject(jdbcTemplate.queryForList(sql));
|
|
|
XMLSerializer xmlSerializer = new XMLSerializer();
|
|
|
xmlSerializer.setRootName("Return");
|
|
|
xmlSerializer.setElementName("data");
|
|
|
xmlSerializer.setTypeHintsEnabled(false);//设置data class="object" 没有class
|
|
|
// xmlSerializer.setForceTopLevelObject(false);
|
|
|
// xmlSerializer.setRemoveNamespacePrefixFromElements(false);
|
|
|
String xml = xmlSerializer.write(jo);
|
|
|
return xml;
|
|
|
} catch (Exception e1) {
|
|
|
e1.printStackTrace();
|
|
|
return "false";
|
|
|
if (!StringUtils.isEmpty(startDate)) {
|
|
|
sb.append(" and HDSD00_01_001 > '" + startDate + "'");
|
|
|
}
|
|
|
|
|
|
wsReturnModel.setData(jdbcTemplate.queryForList(sb.toString()));
|
|
|
// return WSReturnModel.toXml(wsReturnModel);
|
|
|
return "<Resp> \n" +
|
|
|
"<TransactionCode></TransactionCode> \n" +
|
|
|
"<RespMessage>成功</RespMessage>\n" +
|
|
|
"<Data>\n" +
|
|
|
"<ReportId>8F5F14C2-FAB8-4CB5-BB91-AECF0EC64E69</ReportId>\n" +
|
|
|
"<ReportType>1</ReportType>\n" +
|
|
|
"<SubmissionTime>2015-03-12 09:52:47.0</SubmissionTime>\n" +
|
|
|
"<PatientName>张三</PatientName>\n" +
|
|
|
"<ItemName>测试报告1</ItemName>\n" +
|
|
|
"<State>1</ State >\n" +
|
|
|
"<EventNo>事件号</EventNo>\n" +
|
|
|
"<EventType>就诊类型</EventType>\n" +
|
|
|
"<EventTime>就诊时间</EventTime>\n" +
|
|
|
"<LocalCardNo>就诊卡号</LocalCardNo>\n" +
|
|
|
"<IdCardNo>身份证号</IdCardNo>\n" +
|
|
|
"</Data> \n" +
|
|
|
"<Data>\n" +
|
|
|
"<ReportId>8F5F14C2-FAB8-4CB5-BB91-AECF0EC64E69</ReportId>\n" +
|
|
|
"<ReportType>1</ReportType>\n" +
|
|
|
"<SubmissionTime>2015-03-12 09:52:47.0</SubmissionTime>\n" +
|
|
|
"<PatientName>张三</PatientName>\n" +
|
|
|
"<ItemName>测试报告1</ItemName>\n" +
|
|
|
"<State>1</State>\n" +
|
|
|
"<EventNo>事件号</EventNo>\n" +
|
|
|
"<EventType>就诊类型</EventType>\n" +
|
|
|
"<EventTime>就诊时间</EventTime>\n" +
|
|
|
"<LocalCardNo>就诊卡号</LocalCardNo>\n" +
|
|
|
"<IdCardNo>身份证号</IdCardNo>\n" +
|
|
|
"</Data>\n" +
|
|
|
"</Resp>";
|
|
|
} catch (Exception e) {
|
|
|
wsReturnModel.setTransactionCode("-30000");
|
|
|
wsReturnModel.setRespMessage(e.getMessage());
|
|
|
return WSReturnModel.toXml(wsReturnModel);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 检查报告单/检验报告单明细
|
|
|
*
|
|
|
* @param reportId
|
|
|
* @param reportType
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
public String getReportInfo(
|
|
|
String TransactionCode,
|
|
|
String reportId,
|
|
|
String reportType) {
|
|
|
WSReturnModel wsReturnModel = new WSReturnModel();
|
|
|
wsReturnModel.setTransactionCode(TransactionCode);
|
|
|
try {
|
|
|
initJDBC();
|
|
|
StringBuffer sb = new StringBuffer("select * from HDSD01_01 where 1=1 ");
|
|
|
if (!StringUtils.isEmpty(reportId)) {
|
|
|
sb.append(" and HDSD00_05_026 < '" + reportId + "'");
|
|
|
}
|
|
|
if (!StringUtils.isEmpty(reportType)) {
|
|
|
sb.append(" and HDSD00_01_001 > '" + reportType + "'");
|
|
|
}
|
|
|
|
|
|
// wsReturnModel.setData(jdbcTemplate.queryForList(sb.toString()));
|
|
|
return "<Resp> \n" +
|
|
|
"<TransactionCode></TransactionCode> \n" +
|
|
|
"<RespMessage>成功</RespMessage>\n" +
|
|
|
"<Data>\n" +
|
|
|
"\t<ReportTitle>报告单2</ReportTitle>\n" +
|
|
|
"\t<ClinicCard>K5698012</ClinicCard>\n" +
|
|
|
"\t<UserType>0</UserType>\n" +
|
|
|
"\t<HosBedNo>6</HosBedNo>\n" +
|
|
|
"\t<SigningTime>2015-03-09 09:52:47.0</SigningTime>\n" +
|
|
|
"\t<Checker>审核人2</Checker>\n" +
|
|
|
"\t<BarCode>456456456</BarCode>\n" +
|
|
|
"\t<Sex>2</Sex>\n" +
|
|
|
"\t<PatientName>李四</PatientName>\n" +
|
|
|
"\t<SampleNumber>Yao77822</SampleNumber>\n" +
|
|
|
"\t<SampleType>2</SampleType>\n" +
|
|
|
"\t<ApplicationDepartment>口腔科</ApplicationDepartment>\n" +
|
|
|
"\t<SubmissionTime>2015-03-10 09:52:47.0</SubmissionTime>\n" +
|
|
|
"\t<Rmark>牙齿蛀牙</Rmark>\n" +
|
|
|
"\t<ReportTime>2015-03-12 09:52:47.0</ReportTime>\n" +
|
|
|
"\t<Inspector>检验员2</Inspector>\n" +
|
|
|
"\t<ItemNum>2</ItemNum>\n" +
|
|
|
"\t<ClinicNo>门诊号</ClinicNo>\n" +
|
|
|
"\t<HosUserNo>住院号</HosUserNo>\n" +
|
|
|
"\t<Data_1>\n" +
|
|
|
"\t\t\t<ItemDetailsName>xxx1</ItemDetailsName>\n" +
|
|
|
"\t\t\t<ResultValue>xxx1</ResultValue>\n" +
|
|
|
"\t\t\t<Unit>分</Unit>\n" +
|
|
|
"\t\t\t<ReferenceValues>100~250</ReferenceValues>\n" +
|
|
|
"\t\t\t<IsNormal></IsNormal>\n" +
|
|
|
"<ExFlag></ExFlag>\n" +
|
|
|
"<Range></Range>\n" +
|
|
|
"<SeFlag></SeFlag>\n" +
|
|
|
"<Words></Words>\n" +
|
|
|
"<GermName></GermName>\n" +
|
|
|
"<GrowStatus></GrowStatus>\n" +
|
|
|
"\t</Data_1>\n" +
|
|
|
"\t<Data_1>\n" +
|
|
|
"\t\t\t<ItemDetailsName>xxx2</ItemDetailsName>\n" +
|
|
|
"\t\t\t<ResultValue>xxx2</ResultValue>\n" +
|
|
|
"\t\t\t<Unit>分</Unit>\n" +
|
|
|
"\t\t\t<ReferenceValues>100~250</ReferenceValues>\n" +
|
|
|
"\t\t\t<IsNormal></IsNormal>\n" +
|
|
|
"<ExFlag></ExFlag>\n" +
|
|
|
"<Range></Range>\n" +
|
|
|
"<SeFlag></SeFlag>\n" +
|
|
|
"<Words></Words>\n" +
|
|
|
"<GermName></GermName>\n" +
|
|
|
"<GrowStatus></GrowStatus>\n" +
|
|
|
"\t</Data_1>\n" +
|
|
|
" </Data>\n" +
|
|
|
"</Resp>";
|
|
|
} catch (Exception e) {
|
|
|
wsReturnModel.setTransactionCode("-30000");
|
|
|
wsReturnModel.setRespMessage(e.getMessage());
|
|
|
return WSReturnModel.toXml(wsReturnModel);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
public static void main(String[] args) throws Exception {
|
|
|
JaxWsDynamicClientFactory factory = JaxWsDynamicClientFactory.newInstance();
|
|
|
Client client = factory.createClient("http://172.19.103.37:8081/service/sql?wsdl");
|
|
|
|
|
|
Client client = factory.createClient("http://172.19.103.71:8080/service/sql?wsdl");
|
|
|
//Client client = factory.createClient("http://localhost:8080/service/sql?wsdl");
|
|
|
try {
|
|
|
Object[] result = client.invoke("excuteSQL", "select * from HDSC01_03"); // 按照方法的参数来提供值
|
|
|
Object[] result = client.invoke("ExcuteSQL", "10000", "select count(1) as COUNT,max(to_number(HDSD03_01_031)) as MAX_KEYVALUE from HDSC01_02 where 1=1 order by to_number(HDSD03_01_031)"); // 按照方法的参数来提供值
|
|
|
if (result != null && result.length > 0) {
|
|
|
System.out.println(result[0]); // 通过getUsername来获取对象的username属性
|
|
|
}
|
|
@ -106,4 +252,6 @@ public class SQLWebService implements ISQLWebService {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|