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 1是检查 2是检验 * @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(); if ("2".equals(reportType)) { //检验 StringBuffer sb = new StringBuffer("select * from HDSD02_01 where 1=1 "); if (!StringUtils.isEmpty(endDate)) { sb.append(" and HDSD00_05_026 < '" + endDate + "'"); } if (!StringUtils.isEmpty(startDate)) { sb.append(" and HDSD00_01_001 > '" + startDate + "'"); } if (!StringUtils.isEmpty(mobile)) { sb.append(" and HDSD00_01_001 = '" + mobile + "'"); } if (!StringUtils.isEmpty(cardNo)) { sb.append(" and HDSD00_01_001 = '" + cardNo + "'"); } if (!StringUtils.isEmpty(cardType)) { sb.append(" and HDSD00_01_001 = '" + cardType + "'"); } wsReturnModel.setData(jdbcTemplate.queryForList(sb.toString())); } else { //检查 StringBuffer sb = new StringBuffer("select * from HDSD01_01 where 1=1 "); if (!StringUtils.isEmpty(endDate)) { sb.append(" and HDSD00_05_026 < '" + endDate + "'"); } if (!StringUtils.isEmpty(startDate)) { sb.append(" and HDSD00_01_001 > '" + startDate + "'"); } if (!StringUtils.isEmpty(mobile)) { sb.append(" and HDSD00_01_001 = '" + mobile + "'"); } if (!StringUtils.isEmpty(cardNo)) { sb.append(" and HDSD00_01_001 = '" + cardNo + "'"); } if (!StringUtils.isEmpty(cardType)) { sb.append(" and HDSD00_01_001 = '" + cardType + "'"); } 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(); if ("1".equals(reportType)) { //检验 StringBuffer sb = new StringBuffer("select * from REPORT_JY where 1=1 "); if (!StringUtils.isEmpty(reportId)) { sb.append(" and REPORT_ID = '" + reportId + "'"); } List> returnData = jdbcTemplate.queryForList(sb.toString()); for (Map oneM : returnData) { //检验-图片报告单 sb = new StringBuffer("select * from REPORT_JY_MX where 1=1 "); if (!StringUtils.isEmpty(oneM.get("REPORT_ID"))) { sb.append(" and REPORT_ID = '" + reportId + "'"); } oneM.put("Data_1", jdbcTemplate.queryForList(sb.toString())); } wsReturnModel.setData(returnData); } else { //检查 StringBuffer sb = new StringBuffer("select * from REPORT where 1=1 "); if (!StringUtils.isEmpty(reportId)) { sb.append(" and REPORT_ID = '" + reportId + "'"); } List> returnData = jdbcTemplate.queryForList(sb.toString()); //检查细表 for (Map oneM : returnData) { sb = new StringBuffer("select * from REPORT_JC where 1=1 "); if (!StringUtils.isEmpty(oneM.get("REPORT_ID"))) { sb.append(" and REPORT_ID = '" + reportId + "'"); } oneM.put("Data_1", jdbcTemplate.queryForList(sb.toString())); } wsReturnModel.setData(returnData); } System.out.println(wsReturnModel); 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 PATIENT_INFO a where 1=1 "); if (!StringUtil.isEmpty(CardNo)) { sb.append(" and a.CARD_NO = '" + CardNo + "'"); } if (!StringUtil.isEmpty(CardType)) { sb.append(" and a.CARD_TYPE = '" + CardType + "'"); } List> RKXMap = jdbcTemplate.queryForList(sb.toString()); wsReturnModel.setData(RKXMap); return WSReturnModel.toXml(wsReturnModel); } catch (Exception e) { wsReturnModel.setRespCode("-30000"); wsReturnModel.setRespMessage(e.getMessage()); e.printStackTrace(); return WSReturnModel.toXml(wsReturnModel); } } public String QueryRegInfo(String TransactionCode, String CardType,String CardNo, String IdCardNo, String OrderId, String ClinicCard, String TimeSlice, String StartTime, String EndTime, String RegFlag) { WSReturnModel wsReturnModel = new WSReturnModel(); wsReturnModel.setTransactionCode(TransactionCode); try { initJDBC(); //预约信息查询 StringBuffer sb = new StringBuffer("select * from REG_INFO a where 1=1 "); if (!StringUtil.isEmpty(CardNo)) { sb.append(" and a.CARD_NO = '" + CardNo + "'"); } if (!StringUtil.isEmpty(CardType)) { sb.append(" and a.CARD_TYPE = '" + CardType + "'"); } List> RKXMap = jdbcTemplate.queryForList(sb.toString()); wsReturnModel.setData(RKXMap); return WSReturnModel.toXml(wsReturnModel); } catch (Exception e) { wsReturnModel.setRespCode("-30000"); wsReturnModel.setRespMessage(e.getMessage()); e.printStackTrace(); return WSReturnModel.toXml(wsReturnModel); } } }