Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/gdskqyy/OrgUserDataWebServiceManagerImpl.java =================================================================== diff -u -r33359 -r33401 --- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/gdskqyy/OrgUserDataWebServiceManagerImpl.java (.../OrgUserDataWebServiceManagerImpl.java) (revision 33359) +++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/gdskqyy/OrgUserDataWebServiceManagerImpl.java (.../OrgUserDataWebServiceManagerImpl.java) (revision 33401) @@ -4,6 +4,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.UUID; import javax.jws.WebMethod; import javax.jws.WebService; @@ -23,6 +24,7 @@ import com.forgon.disinfectsystem.datasynchronization.model.UserVo; import com.forgon.disinfectsystem.datasynchronization.service.DataSynchronizationManager; import com.forgon.exception.SystemException; +import com.forgon.tools.date.DateTools; @WebService(serviceName = "SysUserAndOrgService") public class OrgUserDataWebServiceManagerImpl implements OrgUserDataWebServiceManager { @@ -36,7 +38,7 @@ @WebMethod public String dealOrgUnit(String xmlData) { logger.debug("调用接口推送组织机构数据xmlData="+xmlData); - String resultCode = "0"; + String resultCode = "AE"; String resultMessage = ""; if (StringUtils.isNotBlank(xmlData)) { try { @@ -46,7 +48,7 @@ logger.debug(JSONArray.fromObject(allVos)); dataSynchronizationManager.processSyncOrgUnitData(allVos); } - resultCode = "1"; + resultCode = "AA"; resultMessage = "成功"; } catch (Exception e) { resultMessage = "同步失败:" + e.getMessage(); @@ -55,10 +57,76 @@ }else{ resultMessage = "入参数据为空"; } - return "" + resultCode + "" + resultMessage + ""; + return buildResponce(xmlData, resultCode, resultMessage); } /** + * 构建返回信息 + * @param requestMessage 请求信息 + * @param resultCode 处理结果 + * @param resultMessage 处理结果的提示信息 + * @return + */ + private String buildResponce(String requestMessage, String resultCode, String resultMessage) { + + //服务标识,extension为唯一事件编码,区分服务事件(更新或者注册) + String interactionId = ""; + try { + Document document = DocumentHelper.parseText(requestMessage.trim()); + Map nameSpaceURIMap = new HashMap(); + nameSpaceURIMap.put("s", "urn:hl7-org:v3"); + //注册科室 + String rootXpath = "/PRPM_IN401030UV01"; + if(StringUtils.contains(requestMessage, "PRPM_IN403010UV01")){ + //更新科室 + rootXpath = "/PRPM_IN403010UV01"; + }else if(StringUtils.contains(requestMessage, "PRPM_IN303010UV01")){ + //更新用户 + rootXpath = "/PRPM_IN303010UV01"; + }else if(StringUtils.contains(requestMessage, "PRPM_IN301010UV01")){ + //注册用户 + rootXpath = "/PRPM_IN301010UV01"; + } + + String interactionIdXpath = rootXpath + "/s:interactionId/@extension"; + interactionId = processDataByXpath(document, nameSpaceURIMap, interactionIdXpath); + + } catch (Exception e) { + e.printStackTrace(); + } + + StringBuffer responce = new StringBuffer(); + responce.append(""); + responce.append(""); + responce.append(""); + responce.append(""); + responce.append(""); + responce.append(""); + responce.append(""); + responce.append(""); + responce.append(""); + responce.append(""); + responce.append(""); + responce.append(""); + responce.append(""); + responce.append(""); + responce.append(""); + responce.append(""); + responce.append(""); + responce.append(""); + responce.append(""); + responce.append(""); + responce.append(""); + responce.append(""); + responce.append("" + resultMessage + ""); + responce.append(""); + responce.append(""); + responce.append(""); + + return responce.toString(); + } + + /** * 解析xml获取科室VO * @param xmlData * @return @@ -73,6 +141,10 @@ //subject节点可以有多个,一个节点代表一个科室 String subjectXpath = "/PRPM_IN401030UV01/s:controlActProcess/s:subject"; + if(StringUtils.contains(xmlData, "PRPM_IN403010UV01")){ + //更新科室 + subjectXpath = "/PRPM_IN403010UV01/s:controlActProcess/s:subject"; + } XPath xpath = document.createXPath(subjectXpath); xpath.setNamespaceURIs(nameSpaceURIMap); List subjectNodeList = xpath.selectNodes(document, xpath); @@ -110,20 +182,19 @@ return null; } - @Override @WebMethod public String dealUser(String xmlData) { logger.error("调用接口推送用户数据xmlData="+xmlData); - String resultCode = "0"; + String resultCode = "AE"; String resultMessage = ""; if (StringUtils.isNotBlank(xmlData)) { try { //解析xml获取科室VO UserVo[] allVos = buildUserVoByXML(xmlData); logger.debug(JSONArray.fromObject(allVos)); dataSynchronizationManager.processSyncUserData(allVos); - resultCode = "1"; + resultCode = "AA"; resultMessage = "成功"; } catch (Exception e) { resultMessage = "同步失败:" + e.getMessage(); @@ -132,7 +203,7 @@ }else{ resultMessage = "入参数据为空"; } - return "" + resultCode + "" + resultMessage + ""; + return buildResponce(xmlData, resultCode, resultMessage); } /** @@ -150,6 +221,9 @@ //subject节点可以有多个,一个节点代表一个科室 String subjectXpath = "/PRPM_IN301010UV01/s:controlActProcess/s:subject"; + if(StringUtils.contains(xmlData, "PRPM_IN303010UV01")){ + subjectXpath = "/PRPM_IN303010UV01/s:controlActProcess/s:subject"; + } XPath xpath = document.createXPath(subjectXpath); xpath.setNamespaceURIs(nameSpaceURIMap); List subjectNodeList = xpath.selectNodes(document, xpath); Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/gdskqyy/OrgUserDataWebServiceManager.java =================================================================== diff -u -r33359 -r33401 --- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/gdskqyy/OrgUserDataWebServiceManager.java (.../OrgUserDataWebServiceManager.java) (revision 33359) +++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/gdskqyy/OrgUserDataWebServiceManager.java (.../OrgUserDataWebServiceManager.java) (revision 33401) @@ -16,13 +16,13 @@ /** * 调用接口推送科室数据 */ - @WebMethod(action="dealOrgUnit") + @WebMethod(action="dealOrgUnit", operationName="dealOrgUnit") public String dealOrgUnit(@WebParam(name = "xmlData") String xmlData); /** * 调用接口推送人员数据 */ - @WebMethod(action="dealUser") + @WebMethod(action="dealUser", operationName="dealUser") public String dealUser(@WebParam(name = "xmlData") String xmlData); }