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.util.operator.StringUtil; import org.apache.commons.dbcp2.BasicDataSource; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.util.ResourceUtils; import org.springframework.util.StringUtils; import java.io.*; import java.util.List; import java.util.Map; /** * Created by Administrator on 2016/5/19. */ public class ExcuteService { public static JdbcTemplate jdbcTemplate = null; 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); System.out.println(jdbcTemplate.queryForMap("select 1 from dual")); } } /** * 执行sql语句 * * @param sql * @return */ public String excuteSQL(String TransactionCode, String sql) { WSReturnModel wsReturnModel = new WSReturnModel(); wsReturnModel.setTransactionCode(TransactionCode); try { initJDBC(); wsReturnModel.setData(jdbcTemplate.queryForList(sql)); return WSReturnModel.toXml(wsReturnModel); } catch (Exception e1) { wsReturnModel.setRespCode("-30000"); wsReturnModel.setRespMessage(e1.getMessage()); return WSReturnModel.toXml(wsReturnModel); } } /** * 获取检查报告单的列表 * * @param cardType * @param cardNo * @param startDate * @param endDate * @param mobile * @param reportType * @return */ 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(cardType)) { sb.append(" and HDSD00_05_026 < '" + cardType + "'"); } if (!StringUtils.isEmpty(cardNo)) { sb.append(" and HDSD00_01_001 > '" + cardNo + "'"); } if (!StringUtils.isEmpty(startDate)) { sb.append(" and HDSD00_01_001 > '" + startDate + "'"); } if (!StringUtils.isEmpty(endDate)) { sb.append(" and HDSD00_01_001 > '" + endDate + "'"); } if (!StringUtils.isEmpty(mobile)) { sb.append(" and HDSD00_01_001 > '" + mobile + "'"); } if (!StringUtils.isEmpty(reportType)) { sb.append(" and HDSD00_01_001 > '" + reportType + "'"); } wsReturnModel.setData(jdbcTemplate.queryForList(sb.toString())); return WSReturnModel.toXml(wsReturnModel); } catch (Exception e) { wsReturnModel.setRespCode("-30000"); wsReturnModel.setRespMessage(e.getMessage()); e.printStackTrace(); return WSReturnModel.toXml(wsReturnModel); } } /** * 检查报告单/检验报告单明细 * * @param reportId * @param reportType //报告单类型 * @return */ 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 (!StringUtil.isEmpty(TransactionCode)) { sb.append(" and HDSD00_05_026 < '" + TransactionCode + "'"); } if (!StringUtil.isEmpty(reportId)) { sb.append(" and HDSD00_01_001 > '" + reportId + "'"); } if (!StringUtil.isEmpty(reportType)) { sb.append(" and HDSD00_01_001 > '" + reportType + "'"); } wsReturnModel.setData(jdbcTemplate.queryForList(sb.toString())); return WSReturnModel.toXml(wsReturnModel); } catch (Exception e) { wsReturnModel.setRespCode("-30000"); wsReturnModel.setRespMessage(e.getMessage()); e.printStackTrace(); return WSReturnModel.toXml(wsReturnModel); } } /** * 人口学信息查询 * @param TransactionCode * @param CardType * @param CardNo * @param Mobile * @param PatientId * @return */ public String QueryUserInfo(String TransactionCode, String CardType, String CardNo, String Mobile, String PatientId) { WSReturnModel wsReturnModel = new WSReturnModel(); wsReturnModel.setTransactionCode(TransactionCode); try { initJDBC(); //挂号信息 StringBuffer sb = new StringBuffer("select * from HDSC01_02 where 1=1 "); if (!StringUtil.isEmpty(PatientId)) { sb.append(" and PATIENT_ID = '" + PatientId + "'"); } List> GHMap= jdbcTemplate.queryForList(sb.toString()); //人口学信息 sb = new StringBuffer("select * from HDSA00_01 where 1=1 "); if (!StringUtil.isEmpty(PatientId)) { sb.append(" and PATIENT_ID = '" + PatientId + "'"); } List> RKXMap= jdbcTemplate.queryForList(sb.toString()); GHMap.addAll(RKXMap); System.out.println(GHMap); wsReturnModel.setData(GHMap); return WSReturnModel.toXml(wsReturnModel); } catch (Exception e) { wsReturnModel.setRespCode("-30000"); wsReturnModel.setRespMessage(e.getMessage()); e.printStackTrace(); return WSReturnModel.toXml(wsReturnModel); } } }