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));