Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/szhzyy/OrgUserDataWebServiceManager.java =================================================================== diff -u -r28726 -r29752 --- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/szhzyy/OrgUserDataWebServiceManager.java (.../OrgUserDataWebServiceManager.java) (revision 28726) +++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/szhzyy/OrgUserDataWebServiceManager.java (.../OrgUserDataWebServiceManager.java) (revision 29752) @@ -46,7 +46,7 @@ * */ - @WebMethod + @WebMethod(action="dealOrgUnit") public String dealOrgUnit(@WebParam(name = "xmlData") String xmlData); /** @@ -89,7 +89,7 @@ */ - @WebMethod + @WebMethod(action="dealUser") public String dealUser(@WebParam(name = "xmlData") String xmlData); } Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/szhzyy/OrgUserDataWebServiceManagerImpl.java =================================================================== diff -u -r28892 -r29752 --- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/szhzyy/OrgUserDataWebServiceManagerImpl.java (.../OrgUserDataWebServiceManagerImpl.java) (revision 28892) +++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/szhzyy/OrgUserDataWebServiceManagerImpl.java (.../OrgUserDataWebServiceManagerImpl.java) (revision 29752) @@ -1,26 +1,25 @@ package com.forgon.disinfectsystem.webservice.datasync.szhzyy; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - import javax.jws.WebMethod; import javax.jws.WebService; import net.sf.json.JSONArray; -import net.sf.json.JSONException; -import net.sf.json.JSONObject; -import net.sf.json.xml.XMLSerializer; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; +import org.dom4j.Document; +import org.dom4j.DocumentException; +import org.dom4j.DocumentHelper; +import org.dom4j.Node; +import org.dom4j.XPath; import org.springframework.beans.factory.annotation.Autowired; import com.forgon.disinfectsystem.datasynchronization.model.OrgUnitVo; import com.forgon.disinfectsystem.datasynchronization.model.UserVo; import com.forgon.disinfectsystem.datasynchronization.service.DataSynchronizationManager; -@WebService(serviceName = "/SysUserAndOrgService") +@WebService(serviceName = "SysUserAndOrgService") public class OrgUserDataWebServiceManagerImpl implements OrgUserDataWebServiceManager { private final Logger logger = Logger.getLogger(this.getClass()); @@ -36,35 +35,21 @@ String resultMessage = ""; if (StringUtils.isNotBlank(xmlData)) { try { - xmlData = fomartParam(xmlData); - XMLSerializer xmlSerializer = new XMLSerializer(); - JSONObject json = (JSONObject) xmlSerializer.read(xmlData); - if(json == null){ - resultMessage = "入参格式不正确"; - return " " + resultCode + " " + resultMessage + ""; - } - Object msg = json.opt("Msg"); - if(msg == null){ - resultMessage = "未找到相关数据"; - return " " + resultCode + " " + resultMessage + ""; - } - - if(msg instanceof JSONObject){ - JSONObject orgJsonObject = (JSONObject)msg; - OrgUnitVo vo = new OrgUnitVo(); - vo.setCoding(orgJsonObject.optString("DEPT_CODE")); - vo.setName(orgJsonObject.optString("DEPT_NAME")); - vo.setParentCoding(orgJsonObject.optString("SUPERIOR_DEPT_CODE")); - OrgUnitVo[] allVos = {vo}; - logger.debug(JSONArray.fromObject(allVos)); - dataSynchronizationManager.processSyncOrgUnitData(allVos); - }else{ - resultMessage = "组织机构数据格式不正确"; - return " " + resultCode + " " + resultMessage + ""; - } + Document doc = DocumentHelper.parseText(xmlData); + String codeXpath = "/Request/Msg/DEPT_CODE"; + String nameXpath = "/Request/Msg/DEPT_NAME"; + String parentCodingXpath = "/Request/Msg/SUPERIOR_DEPT_CODE"; + + OrgUnitVo vo = new OrgUnitVo(); + vo.setCoding(processDataByXpath(doc, codeXpath)); + vo.setName(processDataByXpath(doc, nameXpath)); + vo.setParentCoding(processDataByXpath(doc, parentCodingXpath)); + OrgUnitVo[] allVos = {vo}; + logger.debug(JSONArray.fromObject(allVos)); + dataSynchronizationManager.processSyncOrgUnitData(allVos); resultCode = "1"; resultMessage = "成功"; - } catch (JSONException e) { + } catch (DocumentException e) { resultMessage = "数据格式有误"; e.printStackTrace(); } catch (Exception e) { @@ -85,35 +70,21 @@ String resultMessage = ""; if (StringUtils.isNotBlank(xmlData)) { try { - xmlData = fomartParam(xmlData); - XMLSerializer xmlSerializer = new XMLSerializer(); - JSONObject json = (JSONObject) xmlSerializer.read(xmlData); - if(json == null){ - resultMessage = "入参格式不正确"; - return " " + resultCode + " " + resultMessage + ""; - } - Object msg = json.opt("Msg"); - if(msg == null){ - resultMessage = "未找到"; - return " " + resultCode + " " + resultMessage + ""; - } - - if(msg instanceof JSONObject){ - JSONObject useJsonObject = (JSONObject)msg; - UserVo vo = new UserVo(); - vo.setCoding(useJsonObject.optString("STAFF_CODE")); - vo.setName(useJsonObject.optString("STAFF_NAME")); - vo.setOrgUnitCoding(useJsonObject.optString("SUBOR_DEPT_CODE")); - UserVo[] allVos = {vo}; - logger.debug(JSONArray.fromObject(allVos)); - dataSynchronizationManager.processSyncUserData(allVos); - }else{ - resultMessage = "用户数据格式不正确"; - return " " + resultCode + " " + resultMessage + ""; - } + Document doc = DocumentHelper.parseText(xmlData); + String codeXpath = "/Request/Msg/STAFF_CODE"; + String nameXpath = "/Request/Msg/STAFF_NAME"; + String depatCodeXpath = "/Request/Msg/SUBOR_DEPT_CODE"; + + UserVo vo = new UserVo(); + vo.setCoding(processDataByXpath(doc, codeXpath)); + vo.setName(processDataByXpath(doc, nameXpath)); + vo.setOrgUnitCoding(processDataByXpath(doc, depatCodeXpath)); + UserVo[] allVos = {vo}; + logger.debug(JSONArray.fromObject(allVos)); + dataSynchronizationManager.processSyncUserData(allVos); resultCode = "1"; resultMessage = "成功"; - } catch (JSONException e) { + } catch (DocumentException e) { resultMessage = "数据格式有误"; e.printStackTrace(); } catch (Exception e) { @@ -127,14 +98,21 @@ } /** - * 文本格式化 - * @param str + * 根据document和Xpath表达式解析数据 + * @param document + * @param nameSpaceURIMap + * @param xpathExp * @return */ - private String fomartParam(String str) { - Pattern p = Pattern.compile("\\s*|\t|\r|\n"); - Matcher m = p.matcher(str); - return m.replaceAll(""); + 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; } }