Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/bjcyzxyyy/DatasyncConstant.java
===================================================================
diff -u
--- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/bjcyzxyyy/DatasyncConstant.java (revision 0)
+++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/bjcyzxyyy/DatasyncConstant.java (revision 36711)
@@ -0,0 +1,23 @@
+package com.forgon.disinfectsystem.datasynchronization.dao.bjcyzxyyy;
+
+/**
+ * 北京朝阳中西医结合急诊抢救医院接口相关常量BJCYZXYYY-1
+ */
+public class DatasyncConstant {
+
+ /**
+ * Webservice地址
+ */
+ public final static String WEBSERVICE_ADDRESS = "http://192.168.204.161:8089/yn_webservice/n_webservice.asmx";
+
+ /**
+ * 获取科室信息的方法名称(入参)
+ */
+ public final static String OP_ORGUNIT = "cssd_department";
+
+ /**
+ * 获取用户信息的方法名称(入参)
+ */
+ public final static String OP_USER = "cssd_user";
+
+}
Index: ssts-web/src/main/webapp/disinfectsystem/config/bjcyzxyyy/spring/HIS.xml
===================================================================
diff -u -r36706 -r36711
--- ssts-web/src/main/webapp/disinfectsystem/config/bjcyzxyyy/spring/HIS.xml (.../HIS.xml) (revision 36706)
+++ ssts-web/src/main/webapp/disinfectsystem/config/bjcyzxyyy/spring/HIS.xml (.../HIS.xml) (revision 36711)
@@ -46,18 +46,8 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
userVoList = new ArrayList();
+ try{
+ String soapXml = WebServiceClientHelper.buildInputStr(DatasyncConstant.OP_USER, "");
+ logger.info("用户信息接口请求信息:" + soapXml);
+ String address = DatasyncConstant.WEBSERVICE_ADDRESS + "?op=" + DatasyncConstant.OP_USER;
+ String result = WebServiceClientHelper.doPostSoap1_2(address, soapXml);
+ /*String result = ""
+ + ""
+ + "测试用户003"
+ + "CSYH003"
+ + "CSKS003"
+ + ""
+ + ""
+ + "测试用户004"
+ + "CSYH004"
+ + "CSKS004"
+ + ""
+ + "";*/
+ logger.info("用户信息接口返回信息:" + result);
+ //由于返回的xml数据格式可能有问题导致解析有点问题,现换成为文本方案截取
+ int startIndex = result.indexOf("");
+ if(startIndex == -1){
+ logger.info("用户信息接口返回信息没有标签!");
+ return null;
+ }
+ int endIndex = result.indexOf("");
+ if(endIndex == -1 || endIndex < startIndex){
+ logger.info("用户信息接口返回信息没有标签");
+ return null;
+ }
+ String xmlString = result.substring(startIndex + "".length(), endIndex);
+ if(StringUtils.isBlank(xmlString)){
+ logger.info("用户信息接口返回信息为空!" + xmlString);
+ return null;
+ }
+ xmlString = "" + xmlString + "";
+
+ Document document = DocumentHelper.parseText(xmlString);
+ String itemXpath = "/d_cssd_user/d_cssd_user_row"; // 返回结果可能存在多条住院病人信息
+ XPath xpath = document.createXPath(itemXpath);
+ @SuppressWarnings("unchecked")
+ List nodeList = xpath.selectNodes(document, xpath);
+ if(CollectionUtils.isNotEmpty(nodeList)){
+ for(int i=1;i<=nodeList.size();i++){
+ String msgXpath = "/d_cssd_user/d_cssd_user_row[" + i + "]";
+ // 用户编码
+ String codingXpath = msgXpath + "/coding";
+ // 用户名称
+ String nameXpath = msgXpath + "/name";
+ // 用户所属科室编码
+ String orgUnitCodingXpath = msgXpath + "/orgunitcoding";
+
+ String coding = WebServiceClientHelper.processDataByXpath(document, codingXpath);
+ String name = WebServiceClientHelper.processDataByXpath(document, nameXpath);
+ String orgUnitCoding = WebServiceClientHelper.processDataByXpath(document, orgUnitCodingXpath);
+ UserVo userVo = new UserVo();
+ userVo.setCoding(coding);
+ userVo.setName(name);
+ userVo.setOrgUnitCoding(orgUnitCoding);
+
+ //如果人员工号或名称为空,则忽略该条数据
+ if(StringUtils.isBlank(userVo.getName()) || StringUtils.isBlank(userVo.getCoding())){
+ continue;
+ }
+ userVoList.add(userVo);
+ }
+ userVoArray = new UserVo[nodeList.size()];
+ userVoList.toArray(userVoArray);
+ }else{
+ throw new RuntimeException("未找到人员数据...");
+ }
+ }catch(Exception e){
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ e.printStackTrace(new PrintStream(baos));
+ String exception = baos.toString();
+ logger.error("查人员信息失败:" + exception);
+ }
+
+ return userVoArray;
+ }
+
+ /**
+ * 同步科室信息
+ */
+ @Override
+ public OrgUnitVo[] getAllOrgUnit() {
+ OrgUnitVo[] orgUnitVoArray = null;
+ List orgUnitVoList = new ArrayList();
+ try{
+ String soapXml = WebServiceClientHelper.buildInputStr(DatasyncConstant.OP_ORGUNIT, "");
+ logger.info("科室信息接口请求信息:" + soapXml);
+ String address = DatasyncConstant.WEBSERVICE_ADDRESS + "?op=" + DatasyncConstant.OP_ORGUNIT;
+ String result = WebServiceClientHelper.doPostSoap1_2(address, soapXml);
+ /*String result = ""
+ + ""
+ + "测试科室003"
+ + "CSKS003"
+ + "0"
+ + ""
+ + ""
+ + "测试科室004"
+ + "CSKS004"
+ + "0"
+ + ""
+ + "";*/
+ logger.info("科室信息接口返回信息:" + result);
+ //由于返回的xml数据格式可能有问题导致解析有点问题,现换成为文本方案截取
+ int startIndex = result.indexOf("");
+ if(startIndex == -1){
+ logger.info("科室信息接口返回信息没有标签!");
+ return null;
+ }
+ int endIndex = result.indexOf("");
+ if(endIndex == -1 || endIndex < startIndex){
+ logger.info("科室信息接口返回信息没有标签");
+ return null;
+ }
+ String xmlString = result.substring(startIndex + "".length(), endIndex);
+ if(StringUtils.isBlank(xmlString)){
+ logger.info("科室信息接口返回信息为空!" + xmlString);
+ return null;
+ }
+ xmlString = "" + xmlString + "";
+ Document document = DocumentHelper.parseText(xmlString);
+ String itemXpath = "/d_cssd_dept_dict/d_cssd_dept_dict_row"; // 返回结果可能存在多条住院病人信息
+ XPath xpath = document.createXPath(itemXpath);
+ @SuppressWarnings("unchecked")
+ List nodeList = xpath.selectNodes(document, xpath);
+ if(CollectionUtils.isNotEmpty(nodeList)){
+ for(int i=1;i<=nodeList.size();i++){
+ String msgXpath = "/d_cssd_dept_dict/d_cssd_dept_dict_row[" + i + "]";
+ // 用户编码
+ String codingXpath = msgXpath + "/coding";
+ // 用户名称
+ String nameXpath = msgXpath + "/name";
+ // 用户所属科室编码
+ String orgUnitCodingXpath = msgXpath + "/parentcoding";
+
+ String coding = WebServiceClientHelper.processDataByXpath(document, codingXpath);
+ String name = WebServiceClientHelper.processDataByXpath(document, nameXpath);
+ String orgUnitCoding = WebServiceClientHelper.processDataByXpath(document, orgUnitCodingXpath);
+ OrgUnitVo orgVo = new OrgUnitVo();
+ orgVo.setCoding(coding );
+ orgVo.setName(name);
+ orgVo.setParentCoding(orgUnitCoding);
+
+ //科室编码与上级科室编码相同时,默认其上级科室编码为空
+ if(StringUtils.equals(orgVo.getCoding(), orgVo.getParentCoding())){
+ orgVo.setParentCoding(null);
+ }
+ //如果科室编码或名称为空,则忽略该条数据
+ if(StringUtils.isBlank(orgVo.getCoding()) || StringUtils.isBlank(orgVo.getName())){
+ continue;
+ }
+ orgUnitVoList.add(orgVo);
+ }
+ orgUnitVoArray = new OrgUnitVo[nodeList.size()];
+ orgUnitVoList.toArray(orgUnitVoArray);
+ }else{
+ throw new RuntimeException("未找到科室数据...");
+ }
+ }catch(Exception e){
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ e.printStackTrace(new PrintStream(baos));
+ String exception = baos.toString();
+ logger.error("获取科室信息失败" + exception);
+ e.printStackTrace();
+ }
+ return orgUnitVoArray;
+ }
+
+ @Override
+ public OrgUnitVo[] paramToOrgUnitVos(String param) {
+ return null;
+ }
+
+ @Override
+ public UserVo[] paramToUserVos(String param) {
+ return null;
+ }
+
+ @Override
+ public JSONObject buttjoinResponse(Boolean success, String message, String param) {
+ return null;
+ }
+
+}
Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/bjcyzxyyy/WebServiceClientHelper.java
===================================================================
diff -u
--- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/bjcyzxyyy/WebServiceClientHelper.java (revision 0)
+++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/bjcyzxyyy/WebServiceClientHelper.java (revision 36711)
@@ -0,0 +1,109 @@
+package com.forgon.disinfectsystem.datasynchronization.dao.bjcyzxyyy;
+
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+import java.nio.charset.Charset;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.http.HttpEntity;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.util.EntityUtils;
+import org.apache.log4j.Logger;
+import org.dom4j.Document;
+import org.dom4j.Node;
+import org.dom4j.XPath;
+
+/**
+ * 北京朝阳中西医结合急诊抢救医院webservice帮助类BJCYZXYYY-1
+ */
+public class WebServiceClientHelper {
+
+ public static Logger logger = Logger.getLogger(WebServiceClientHelper.class);
+
+ /**
+ * 根据document和Xpath表达式解析数据
+ * @param document
+ * @param nameSpaceURIMap
+ * @param xpathExp
+ * @return
+ */
+ public static String processDataByXpath(Document document, String xpathExp) {
+ if ((StringUtils.isNotBlank(xpathExp)) && (document != null)) {
+ XPath xpath = document.createXPath(xpathExp);
+ Node node = xpath.selectSingleNode(document);
+ if (node != null) {
+ return node.getStringValue();
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 构建请求信息
+ */
+ public static String buildInputStr(String function, String value){
+ StringBuffer inputSb = new StringBuffer();
+ inputSb.append("");
+ inputSb.append("");
+ inputSb.append("");
+ if(StringUtils.equals(function, DatasyncConstant.OP_ORGUNIT)){
+ inputSb.append("");
+ }else if(StringUtils.equals(function, DatasyncConstant.OP_USER)){
+ inputSb.append("");
+ }else{
+ throw new RuntimeException("参数异常!");
+ }
+ inputSb.append("");
+ inputSb.append("");
+ return inputSb.toString();
+ }
+
+ /**
+ * 使用SOAP1.2发送消息
+ *
+ * @param postUrl
+ * @param soapXml
+ * @param soapAction
+ * @return
+ */
+ public static String doPostSoap1_2(String postUrl, String soapXml) {
+ String retStr = "";
+ // 创建HttpClientBuilder
+ HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
+ // HttpClient
+ CloseableHttpClient closeableHttpClient = httpClientBuilder.build();
+ HttpPost httpPost = new HttpPost(postUrl);
+ // 设置请求和传输超时时间
+ RequestConfig requestConfig = RequestConfig.custom()
+ .setSocketTimeout(100000)
+ .setConnectTimeout(100000).build();
+ httpPost.setConfig(requestConfig);
+ try {
+ httpPost.setHeader("Content-Type", "text/xml; charset=utf-8");
+ StringEntity data = new StringEntity(soapXml,Charset.forName("UTF-8"));
+ httpPost.setEntity(data);
+ CloseableHttpResponse response = closeableHttpClient.execute(httpPost);
+ HttpEntity httpEntity = response.getEntity();
+ if (httpEntity != null) {
+ // 打印响应内容
+ retStr = EntityUtils.toString(httpEntity, "UTF-8");
+ retStr = retStr.replaceAll("<", "<");
+ retStr = retStr.replaceAll(">", ">");
+ }
+ // 释放资源
+ closeableHttpClient.close();
+ } catch (Exception e) {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ e.printStackTrace(new PrintStream(baos));
+ String exception = baos.toString();
+ logger.info("exception in doPostSoap1_2:" + exception);
+ }
+ return retStr;
+ }
+
+}