Kaynağa Gözat

Merge branch 'master' of chenweida/esb into master

esb 9 yıl önce
ebeveyn
işleme
9e80a4d6b9

+ 4 - 1
Hos-Resource-WS/Hos-Resource-WS.iml

@ -20,7 +20,7 @@
      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
      <excludeFolder url="file://$MODULE_DIR$/target" />
    </content>
    <orderEntry type="inheritedJdk" />
    <orderEntry type="jdk" jdkName="1.8" jdkType="JavaSDK" />
    <orderEntry type="sourceFolder" forTests="false" />
    <orderEntry type="library" name="Maven: com.yihu.core:ehr-dbhelper:1.1.8" level="project" />
    <orderEntry type="library" name="Maven: mysql:mysql-connector-java:5.1.38" level="project" />
@ -128,5 +128,8 @@
    <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-core:2.2.7" level="project" />
    <orderEntry type="library" name="Maven: com.sun.istack:istack-commons-runtime:2.16" level="project" />
    <orderEntry type="library" name="Maven: com.sun.xml.fastinfoset:FastInfoset:1.2.12" level="project" />
    <orderEntry type="library" name="Maven: com.thoughtworks.xstream:xstream:1.4.8" level="project" />
    <orderEntry type="library" name="Maven: xmlpull:xmlpull:1.1.3.1" level="project" />
    <orderEntry type="library" name="Maven: xpp3:xpp3_min:1.1.4c" level="project" />
  </component>
</module>

+ 5 - 0
Hos-Resource-WS/pom.xml

@ -318,6 +318,11 @@
            <artifactId>cxf-rt-bindings-soap</artifactId>
            <version>3.0.0</version>
        </dependency>
        <dependency>
            <groupId>com.thoughtworks.xstream</groupId>
            <artifactId>xstream</artifactId>
            <version>1.4.8</version>
        </dependency>
        <!--=============httpclient end=============-->
    </dependencies>

+ 104 - 0
Hos-Resource-WS/src/main/java/com.yihu.ehr/model/WSReturnModel.java

@ -0,0 +1,104 @@
package com.yihu.ehr.model;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.springframework.util.StringUtils;
import javax.xml.bind.annotation.XmlElement;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * Created by Administrator on 2016/5/23.
 */
public class WSReturnModel {
    private String TransactionCode;
    private List<Map<String, Object>> Data=new ArrayList<Map<String, Object>>();
    private String RespMessage = "成功";
    public String getTransactionCode() {
        return TransactionCode;
    }
    public void setTransactionCode(String transactionCode) {
        TransactionCode = transactionCode;
    }
    public List<Map<String, Object>> getData() {
        return Data;
    }
    public void setData(List<Map<String, Object>> data) {
        Data = data;
    }
    public String getRespMessage() {
        return RespMessage;
    }
    public void setRespMessage(String respMessage) {
        RespMessage = respMessage;
    }
    public static String toXml(WSReturnModel wsReturnModel) {
        String root = "Resg";
        String transactionCode = "TransactionCode";
        String respMessage = "RespMessage";
        String data = "Data";
        Document document = DocumentHelper.createDocument();
        Element rootElement = DocumentHelper.createElement(root);
        //添加TransactionCode
        Element transactionCodeElement = DocumentHelper.createElement(transactionCode);
        transactionCodeElement.addText(wsReturnModel.getTransactionCode());
        rootElement.add(transactionCodeElement);
        //添加RespMessage
        Element respMessageElement = DocumentHelper.createElement(respMessage);
        respMessageElement.addText(wsReturnModel.getRespMessage());
        rootElement.add(respMessageElement);
        //添加Data
        for (Map<String, Object> map : wsReturnModel.getData()) {
            Element dataElement = DocumentHelper.createElement(data);
            for (Map.Entry<String, Object> e : map.entrySet()) {
                if ("data_1".equals(e.getKey().toLowerCase())) {
                    //判断是否是data1
                    Element elemenData1Temp = DocumentHelper.createElement("Data_1");
                    for (Map.Entry<String, Object> dataE : ((Map<String, Object>) e.getValue()).entrySet()) {
                        Element elemenData1TempElement = DocumentHelper.createElement(toUpperCaseFirstOne(dataE.getKey()));
                        if (!StringUtils.isEmpty(e.getValue())) {
                            elemenData1TempElement.addText(dataE.getValue().toString());
                        }
                        elemenData1Temp.add(elemenData1TempElement);
                    }
                    dataElement.add(elemenData1Temp);
                } else {
                    Element elemenTemp = DocumentHelper.createElement(toUpperCaseFirstOne(e.getKey()));
                    if (!StringUtils.isEmpty(e.getValue())) {
                        elemenTemp.addText(e.getValue().toString());
                    }
                    dataElement.add(elemenTemp);
                }
            }
            rootElement.add(dataElement);
        }
        document.setRootElement(rootElement);
        return document.asXML();
    }
    public static String toUpperCaseFirstOne(String name) {
        char[] ch = name.toCharArray();
        for (int i = 0; i < ch.length; i++) {
            if (i == 0) {
                ch[0] = Character.toUpperCase(ch[0]);
            } else {
                ch[i] = Character.toLowerCase(ch[i]);
            }
        }
        StringBuffer a = new StringBuffer();
        a.append(ch);
        return a.toString();
    }
}

+ 218 - 70
Hos-Resource-WS/src/main/java/com.yihu.ehr/ws/SQLWebService.java

@ -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();
        }
    }
}

+ 23 - 2
Hos-Resource-WS/src/main/java/com.yihu.ehr/ws/inf/ISQLWebService.java

@ -9,6 +9,27 @@ import javax.jws.WebService;
 */
@WebService(targetNamespace = "com.yihu.ehr.ws.inf")
public interface ISQLWebService {
    @WebMethod(operationName = "excuteSQL")
    public String excuteSQL(@WebParam(name = "sql") String sql);
    @WebMethod(operationName = "ExcuteSQL")
    public String excuteSQL(
            @WebParam(name = "TransactionCode") String TransactionCode,
            @WebParam(name = "sql") String sql);
    @WebMethod(operationName = "GetReportList")
    public String getReportList(
            @WebParam(name = "TransactionCode") String TransactionCode,
            @WebParam(name = "CardType") String CardType,
            @WebParam(name = "CardNo") String cardNo,
            @WebParam(name = "StartDate") String startDate,
            @WebParam(name = "EndDate") String endDate,
            @WebParam(name = "Mobile") String mobile,
            @WebParam(name = "ReportType ") String ReportType
    );
    @WebMethod(operationName = "GetReportInfo")
    public String getReportInfo(
            @WebParam(name = "TransactionCode") String TransactionCode,
            @WebParam(name = "ReportId") String reportId,
            @WebParam(name = "ReportType") String reportType);
}