SQLWebService.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. package com.yihu.ehr.ws;
  2. import com.yihu.ehr.dbhelper.jdbc.DBHelper;
  3. import com.yihu.ehr.model.DataSource;
  4. import com.yihu.ehr.model.WSReturnModel;
  5. import com.yihu.ehr.ws.inf.ISQLWebService;
  6. import org.apache.commons.dbcp2.BasicDataSource;
  7. import org.apache.cxf.endpoint.Client;
  8. import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
  9. import org.springframework.jdbc.core.JdbcTemplate;
  10. import org.springframework.stereotype.Controller;
  11. import org.springframework.util.StringUtils;
  12. import org.springframework.web.bind.annotation.RequestMapping;
  13. import org.springframework.web.bind.annotation.ResponseBody;
  14. import javax.jws.WebService;
  15. /**
  16. * Created by Administrator on 2016/5/19.
  17. */
  18. @WebService(endpointInterface = "com.yihu.ehr.ws.inf.ISQLWebService", targetNamespace = "com.yihu.ehr.ws.inf")
  19. public class SQLWebService implements ISQLWebService {
  20. public static JdbcTemplate jdbcTemplate = null;
  21. public void initJDBC() throws Exception{
  22. if (jdbcTemplate == null) {
  23. //jdbc:oracle:thin:hos/hos@//172.19.103.71:1521/orcl
  24. //jdbc:mysql://172.19.103.71:1521/orcl?user=hos&password=hos&useUnicode=true&characterEncoding=UTF-8
  25. //jdbc:sqlserver://172.19.103.71:1521/orcl?user=hos&password=hos
  26. DBHelper dbTemp = new DBHelper();
  27. DataSource source = dbTemp.load(DataSource.class, "select * from system_datasource");
  28. String config = source.getConfig();
  29. BasicDataSource dasicDataSource = new BasicDataSource();
  30. if (config.contains("oracle")) {
  31. //oracle数据库
  32. dasicDataSource.setUrl(source.getConfig());
  33. dasicDataSource.setDriverClassName("oracle.jdbc.driver.OracleDriver");
  34. String[] s1 = config.split("@");
  35. String[] s2 = s1[0].split(":");
  36. String[] s3 = s2[3].split("/");
  37. dasicDataSource.setUsername(s3[0]);
  38. dasicDataSource.setPassword(s3[1]);
  39. } else if (config.contains("mysql")) {
  40. //mysql数据库
  41. dasicDataSource.setUrl(source.getConfig());
  42. dasicDataSource.setDriverClassName("com.mysql.jdbc.Driver");
  43. String[] s1 = config.split("\\?");
  44. String[] s2 = s1[1].split("&");
  45. dasicDataSource.setUsername(s2[0].split("=")[1]);
  46. dasicDataSource.setPassword(s2[1].split("=")[1]);
  47. } else if (config.contains("sqlserver")) {
  48. //sqlserver数据库
  49. dasicDataSource.setUrl(source.getConfig());
  50. dasicDataSource.setDriverClassName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
  51. String[] s1 = config.split("\\?");
  52. String[] s2 = s1[1].split("&");
  53. dasicDataSource.setUsername(s2[0].split("=")[1]);
  54. dasicDataSource.setPassword(s2[1].split("=")[1]);
  55. }
  56. jdbcTemplate = new JdbcTemplate();
  57. jdbcTemplate.setDataSource(dasicDataSource);
  58. }
  59. }
  60. /**
  61. * 执行sql语句
  62. *
  63. * @param sql
  64. * @return
  65. */
  66. public String excuteSQL(String TransactionCode,
  67. String sql) {
  68. WSReturnModel wsReturnModel = new WSReturnModel();
  69. wsReturnModel.setTransactionCode(TransactionCode);
  70. try {
  71. initJDBC();
  72. wsReturnModel.setData(jdbcTemplate.queryForList(sql));
  73. return WSReturnModel.toXml(wsReturnModel);
  74. } catch (Exception e1) {
  75. wsReturnModel.setTransactionCode("-30000");
  76. wsReturnModel.setRespMessage(e1.getMessage());
  77. return WSReturnModel.toXml(wsReturnModel);
  78. }
  79. }
  80. /**
  81. * 获取检查报告单的列表
  82. *
  83. * @param cardType
  84. * @param cardNo
  85. * @param startDate
  86. * @param endDate
  87. * @param mobile
  88. * @param reportType
  89. * @return
  90. */
  91. @Override
  92. public String getReportList(
  93. String TransactionCode,
  94. String cardType,
  95. String cardNo,
  96. String startDate,
  97. String endDate,
  98. String mobile,
  99. String reportType) {
  100. WSReturnModel wsReturnModel = new WSReturnModel();
  101. wsReturnModel.setTransactionCode(TransactionCode);
  102. try {
  103. initJDBC();
  104. StringBuffer sb = new StringBuffer("select * from HDSD01_01 where 1=1 ");
  105. if (!StringUtils.isEmpty(endDate)) {
  106. sb.append(" and HDSD00_05_026 < '" + endDate + "'");
  107. }
  108. if (!StringUtils.isEmpty(startDate)) {
  109. sb.append(" and HDSD00_01_001 > '" + startDate + "'");
  110. }
  111. wsReturnModel.setData(jdbcTemplate.queryForList(sb.toString()));
  112. // return WSReturnModel.toXml(wsReturnModel);
  113. return "<Resp> \n" +
  114. "<TransactionCode></TransactionCode> \n" +
  115. "<RespMessage>成功</RespMessage>\n" +
  116. "<Data>\n" +
  117. "<ReportId>8F5F14C2-FAB8-4CB5-BB91-AECF0EC64E69</ReportId>\n" +
  118. "<ReportType>1</ReportType>\n" +
  119. "<SubmissionTime>2015-03-12 09:52:47.0</SubmissionTime>\n" +
  120. "<PatientName>张三</PatientName>\n" +
  121. "<ItemName>测试报告1</ItemName>\n" +
  122. "<State>1</ State >\n" +
  123. "<EventNo>事件号</EventNo>\n" +
  124. "<EventType>就诊类型</EventType>\n" +
  125. "<EventTime>就诊时间</EventTime>\n" +
  126. "<LocalCardNo>就诊卡号</LocalCardNo>\n" +
  127. "<IdCardNo>身份证号</IdCardNo>\n" +
  128. "</Data> \n" +
  129. "<Data>\n" +
  130. "<ReportId>8F5F14C2-FAB8-4CB5-BB91-AECF0EC64E69</ReportId>\n" +
  131. "<ReportType>1</ReportType>\n" +
  132. "<SubmissionTime>2015-03-12 09:52:47.0</SubmissionTime>\n" +
  133. "<PatientName>张三</PatientName>\n" +
  134. "<ItemName>测试报告1</ItemName>\n" +
  135. "<State>1</State>\n" +
  136. "<EventNo>事件号</EventNo>\n" +
  137. "<EventType>就诊类型</EventType>\n" +
  138. "<EventTime>就诊时间</EventTime>\n" +
  139. "<LocalCardNo>就诊卡号</LocalCardNo>\n" +
  140. "<IdCardNo>身份证号</IdCardNo>\n" +
  141. "</Data>\n" +
  142. "</Resp>";
  143. } catch (Exception e) {
  144. wsReturnModel.setTransactionCode("-30000");
  145. wsReturnModel.setRespMessage(e.getMessage());
  146. return WSReturnModel.toXml(wsReturnModel);
  147. }
  148. }
  149. /**
  150. * 检查报告单/检验报告单明细
  151. *
  152. * @param reportId
  153. * @param reportType
  154. * @return
  155. */
  156. @Override
  157. public String getReportInfo(
  158. String TransactionCode,
  159. String reportId,
  160. String reportType) {
  161. WSReturnModel wsReturnModel = new WSReturnModel();
  162. wsReturnModel.setTransactionCode(TransactionCode);
  163. try {
  164. initJDBC();
  165. StringBuffer sb = new StringBuffer("select * from HDSD01_01 where 1=1 ");
  166. if (!StringUtils.isEmpty(reportId)) {
  167. sb.append(" and HDSD00_05_026 < '" + reportId + "'");
  168. }
  169. if (!StringUtils.isEmpty(reportType)) {
  170. sb.append(" and HDSD00_01_001 > '" + reportType + "'");
  171. }
  172. // wsReturnModel.setData(jdbcTemplate.queryForList(sb.toString()));
  173. return "<Resp> \n" +
  174. "<TransactionCode></TransactionCode> \n" +
  175. "<RespMessage>成功</RespMessage>\n" +
  176. "<Data>\n" +
  177. "\t<ReportTitle>报告单2</ReportTitle>\n" +
  178. "\t<ClinicCard>K5698012</ClinicCard>\n" +
  179. "\t<UserType>0</UserType>\n" +
  180. "\t<HosBedNo>6</HosBedNo>\n" +
  181. "\t<SigningTime>2015-03-09 09:52:47.0</SigningTime>\n" +
  182. "\t<Checker>审核人2</Checker>\n" +
  183. "\t<BarCode>456456456</BarCode>\n" +
  184. "\t<Sex>2</Sex>\n" +
  185. "\t<PatientName>李四</PatientName>\n" +
  186. "\t<SampleNumber>Yao77822</SampleNumber>\n" +
  187. "\t<SampleType>2</SampleType>\n" +
  188. "\t<ApplicationDepartment>口腔科</ApplicationDepartment>\n" +
  189. "\t<SubmissionTime>2015-03-10 09:52:47.0</SubmissionTime>\n" +
  190. "\t<Rmark>牙齿蛀牙</Rmark>\n" +
  191. "\t<ReportTime>2015-03-12 09:52:47.0</ReportTime>\n" +
  192. "\t<Inspector>检验员2</Inspector>\n" +
  193. "\t<ItemNum>2</ItemNum>\n" +
  194. "\t<ClinicNo>门诊号</ClinicNo>\n" +
  195. "\t<HosUserNo>住院号</HosUserNo>\n" +
  196. "\t<Data_1>\n" +
  197. "\t\t\t<ItemDetailsName>xxx1</ItemDetailsName>\n" +
  198. "\t\t\t<ResultValue>xxx1</ResultValue>\n" +
  199. "\t\t\t<Unit>分</Unit>\n" +
  200. "\t\t\t<ReferenceValues>100~250</ReferenceValues>\n" +
  201. "\t\t\t<IsNormal></IsNormal>\n" +
  202. "<ExFlag></ExFlag>\n" +
  203. "<Range></Range>\n" +
  204. "<SeFlag></SeFlag>\n" +
  205. "<Words></Words>\n" +
  206. "<GermName></GermName>\n" +
  207. "<GrowStatus></GrowStatus>\n" +
  208. "\t</Data_1>\n" +
  209. "\t<Data_1>\n" +
  210. "\t\t\t<ItemDetailsName>xxx2</ItemDetailsName>\n" +
  211. "\t\t\t<ResultValue>xxx2</ResultValue>\n" +
  212. "\t\t\t<Unit>分</Unit>\n" +
  213. "\t\t\t<ReferenceValues>100~250</ReferenceValues>\n" +
  214. "\t\t\t<IsNormal></IsNormal>\n" +
  215. "<ExFlag></ExFlag>\n" +
  216. "<Range></Range>\n" +
  217. "<SeFlag></SeFlag>\n" +
  218. "<Words></Words>\n" +
  219. "<GermName></GermName>\n" +
  220. "<GrowStatus></GrowStatus>\n" +
  221. "\t</Data_1>\n" +
  222. " </Data>\n" +
  223. "</Resp>";
  224. } catch (Exception e) {
  225. wsReturnModel.setTransactionCode("-30000");
  226. wsReturnModel.setRespMessage(e.getMessage());
  227. return WSReturnModel.toXml(wsReturnModel);
  228. }
  229. }
  230. public static void main(String[] args) throws Exception {
  231. JaxWsDynamicClientFactory factory = JaxWsDynamicClientFactory.newInstance();
  232. Client client = factory.createClient("http://172.19.103.71:8080/service/sql?wsdl");
  233. //Client client = factory.createClient("http://localhost:8080/service/sql?wsdl");
  234. try {
  235. 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)"); // 按照方法的参数来提供值
  236. if (result != null && result.length > 0) {
  237. System.out.println(result[0]); // 通过getUsername来获取对象的username属性
  238. }
  239. } catch (Exception e) {
  240. e.printStackTrace();
  241. }
  242. }
  243. }