Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/mmsrmyy/WebServiceClientHelper.java =================================================================== diff -u -r31383 -r31396 --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/mmsrmyy/WebServiceClientHelper.java (.../WebServiceClientHelper.java) (revision 31383) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/mmsrmyy/WebServiceClientHelper.java (.../WebServiceClientHelper.java) (revision 31396) @@ -45,16 +45,19 @@ StringBuffer inputSb = new StringBuffer(); if(StringUtils.equals(function, DatasyncConstant.FunctionName_DeptList)){ - inputSb.append("1"); - inputSb.append(""); - inputSb.append(""); + // 2表示分页查询 + // 0页码 + // 100每页最多记录条数 + inputSb.append("2"); + inputSb.append("0"); + inputSb.append("100"); inputSb.append(""); inputSb.append(""); return inputSb.toString(); }else if(StringUtils.equals(function, DatasyncConstant.FunctionName_UserList)){ - inputSb.append("1"); - inputSb.append(""); - inputSb.append(""); + inputSb.append("2"); + inputSb.append("0"); + inputSb.append("100"); inputSb.append(""); inputSb.append(""); return inputSb.toString(); Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/mmsrmyy/SyncOrgUnitAndUserDaoImpl.java =================================================================== diff -u -r31383 -r31396 --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/mmsrmyy/SyncOrgUnitAndUserDaoImpl.java (.../SyncOrgUnitAndUserDaoImpl.java) (revision 31383) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/mmsrmyy/SyncOrgUnitAndUserDaoImpl.java (.../SyncOrgUnitAndUserDaoImpl.java) (revision 31396) @@ -48,7 +48,36 @@ String encodingStyle = "utf-8"; String result = WebServiceClientHelper.axisInvokeWebservice(endpoint, targetNamespace, soapActionURI, method, paramName, input, encodingStyle); logger.info("用户信息接口返回信息:" + result); - /*String result = "" + // 4062 + // 接口限制每次最多只能查询100条记录;所以需要根据页码循环同步接口 + int pageSizeStartIndex = result.indexOf(""); + if(pageSizeStartIndex == -1){ + logger.info("用户信息接口返回信息没有(查询结果总页数)标签!"); + return null; + } + int pageSizeEndIndex = result.indexOf(""); + if(pageSizeEndIndex == -1 || pageSizeEndIndex < pageSizeStartIndex){ + logger.info("用户信息接口返回信息没有(查询结果总页数)标签"); + return null; + } + String pageSize = result.substring(pageSizeStartIndex + "".length(), pageSizeEndIndex); + int size = Integer.parseInt(pageSize); + if(size <= 0){ + logger.info("用户信息接口查询结果总页数为0"); + return null; + } + logger.info("用户信息接口查询结果总页数为:" + size); + for (int j=0; j2"); + inputSb.append("" + j + ""); + inputSb.append("100"); + inputSb.append(""); + inputSb.append(""); + String inputXml = inputSb.toString(); + logger.info("用户信息接口请求信息:" + inputXml); + result = WebServiceClientHelper.axisInvokeWebservice(endpoint, targetNamespace, soapActionURI, method, paramName, inputXml, encodingStyle); + /*String result = "" + "" + "测试用户003" + "CSYH003" @@ -60,58 +89,57 @@ + "CSKS004" + "" + "";*/ - //由于返回的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 = "/Records/Record"; // 返回结果可能存在多条住院病人信息 - 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 = "/Records/Record[" + i + "]"; - // 用户编码 - String codingXpath = msgXpath + "/STAFF_CODE"; - // 用户名称 - String nameXpath = msgXpath + "/STAFF_NAME"; - // 用户所属科室编码 - String orgUnitCodingXpath = msgXpath + "/SUBOR_DEPT_ID"; - - 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; + //由于返回的xml数据格式可能有问题导致解析有点问题,现换成为文本方案截取 + int startIndex = result.indexOf(""); + if(startIndex == -1){ + logger.info("用户信息接口返回信息没有标签!"); + continue; + } + int endIndex = result.indexOf(""); + if(endIndex == -1 || endIndex < startIndex){ + logger.info("用户信息接口返回信息没有标签"); + continue; + } + String xmlString = result.substring(startIndex + "".length(), endIndex); + if(StringUtils.isBlank(xmlString)){ + logger.info("用户信息接口返回信息为空!" + xmlString); + continue; + } + xmlString = "" + xmlString + ""; + + Document document = DocumentHelper.parseText(xmlString); + String itemXpath = "/Records/Record"; // 返回结果可能存在多条住院病人信息 + 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 = "/Records/Record[" + i + "]"; + // 用户编码 + String codingXpath = msgXpath + "/STAFF_CODE"; + // 用户名称 + String nameXpath = msgXpath + "/STAFF_NAME"; + // 用户所属科室编码 + String orgUnitCodingXpath = msgXpath + "/SUBOR_DEPT_ID"; + + 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); } - userVoList.add(userVo); } - userVoArray = new UserVo[nodeList.size()]; - userVoList.toArray(userVoArray); - }else{ - throw new RuntimeException("未找到人员数据..."); } + userVoArray = new UserVo[userVoList.size()]; + userVoList.toArray(userVoArray); }catch(Exception e){ ByteArrayOutputStream baos = new ByteArrayOutputStream(); e.printStackTrace(new PrintStream(baos)); @@ -141,7 +169,35 @@ String encodingStyle = "utf-8"; String result = WebServiceClientHelper.axisInvokeWebservice(endpoint, targetNamespace, soapActionURI, method, paramName, input, encodingStyle); logger.info("科室信息接口返回信息:" + result); - /*String result = "" + // 4062 + // 接口限制每次最多只能查询100条记录;所以需要根据页码循环同步接口 + int pageSizeStartIndex = result.indexOf(""); + if(pageSizeStartIndex == -1){ + logger.info("科室信息接口返回信息没有标签!"); + return null; + } + int pageSizeEndIndex = result.indexOf(""); + if(pageSizeEndIndex == -1 || pageSizeEndIndex < pageSizeStartIndex){ + logger.info("科室信息接口返回信息没有标签"); + return null; + } + String pageSize = result.substring(pageSizeStartIndex + "".length(), pageSizeEndIndex); + int size = Integer.parseInt(pageSize); + if(size <= 0){ + logger.info("科室信息接口查询结果总页数为0"); + return null; + } + logger.info("科室信息接口查询结果总页数为:" + size); + for (int j=0; j2"); + inputSb.append("" + j + ""); + inputSb.append("100"); + inputSb.append(""); + inputSb.append(""); + result = WebServiceClientHelper.axisInvokeWebservice(endpoint, targetNamespace, soapActionURI, method, paramName, inputSb.toString(), encodingStyle); + /*String result = "" + "" + "测试科室003" + "CSKS003" @@ -153,61 +209,60 @@ + "0" + "" + "";*/ - //由于返回的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 = "/Records/Record"; // 返回结果可能存在多条住院病人信息 - 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 = "/Records/Record[" + i + "]"; - // 科室编码 - String codingXpath = msgXpath + "/DEPT_CODE"; - // 科室名称 - String nameXpath = msgXpath + "/DEPT_NAME"; - // 上级科室编码 - String orgUnitCodingXpath = msgXpath + "/SUBOR_DEPT_ID"; - - 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); + //由于返回的xml数据格式可能有问题导致解析有点问题,现换成为文本方案截取 + int startIndex = result.indexOf(""); + if(startIndex == -1){ + logger.info("科室信息接口返回信息没有标签!"); + continue; + } + int endIndex = result.indexOf(""); + if(endIndex == -1 || endIndex < startIndex){ + logger.info("科室信息接口返回信息没有标签"); + continue; + } + String xmlString = result.substring(startIndex + "".length(), endIndex); + if(StringUtils.isBlank(xmlString)){ + logger.info("科室信息接口返回信息为空!" + xmlString); + continue; + } + xmlString = "" + xmlString + ""; + Document document = DocumentHelper.parseText(xmlString); + String itemXpath = "/Records/Record"; // 返回结果可能存在多条住院病人信息 + 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 = "/Records/Record[" + i + "]"; + // 科室编码 + String codingXpath = msgXpath + "/DEPT_CODE"; + // 科室名称 + String nameXpath = msgXpath + "/DEPT_NAME"; + // 上级科室编码 + String orgUnitCodingXpath = msgXpath + "/SUBOR_DEPT_ID"; + + 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); } - //如果科室编码或名称为空,则忽略该条数据 - 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("未找到科室数据..."); } + orgUnitVoArray = new OrgUnitVo[orgUnitVoList.size()]; + orgUnitVoList.toArray(orgUnitVoArray); }catch(Exception e){ ByteArrayOutputStream baos = new ByteArrayOutputStream(); e.printStackTrace(new PrintStream(baos));