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