Index: ssts-web/src/main/webapp/disinfectsystem/config/zd5y/spring/webservice-cxf.xml
===================================================================
diff -u
--- ssts-web/src/main/webapp/disinfectsystem/config/zd5y/spring/webservice-cxf.xml (revision 0)
+++ ssts-web/src/main/webapp/disinfectsystem/config/zd5y/spring/webservice-cxf.xml (revision 35153)
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/zd5y/OrgUnitDataWebServiceImpl.java
===================================================================
diff -u
--- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/zd5y/OrgUnitDataWebServiceImpl.java (revision 0)
+++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/zd5y/OrgUnitDataWebServiceImpl.java (revision 35153)
@@ -0,0 +1,156 @@
+package com.forgon.disinfectsystem.webservice.datasync.zd5y;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import net.sf.json.JSONArray;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.log4j.Logger;
+import org.dom4j.Document;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Node;
+import org.dom4j.XPath;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.forgon.directory.acegi.tools.AcegiHelper;
+import com.forgon.disinfectsystem.datasynchronization.model.OrgUnitVo;
+import com.forgon.disinfectsystem.datasynchronization.service.DataSynchronizationManager;
+import com.forgon.exception.SystemException;
+import com.forgon.log.model.Log;
+import com.forgon.log.service.LogManager;
+import com.forgon.tools.string.StringTools;
+
+/**
+ * 接收集成平台推送的科室信息的Web Services接口ZSWY-183
+ * @since 2023-02-07
+ */
+public class OrgUnitDataWebServiceImpl implements OrgUnitDataWebService {
+
+ private final Logger logger = Logger.getLogger(this.getClass());
+
+ @Autowired
+ private DataSynchronizationManager dataSynchronizationManager;
+
+ @Autowired
+ private LogManager appLogManager;
+
+ @Override
+ public String dealOrgUnit(String xmlData) {
+ logger.error("调用接口推送科室数据param="+xmlData);
+ appLogManager.saveLog(AcegiHelper.getLoginUser(), "调用接口" , Log.TYPE_QUERY, "调用推送科室信息接口,参数param=" + xmlData);
+ String returnCode = "1";
+ String resultMessage = "";
+ if (StringUtils.isNotBlank(xmlData)) {
+ try {
+ //解析xml获取科室VO
+ OrgUnitVo[] allVos = buildOrgUnitVoByXML(xmlData);
+ if(allVos != null){
+ logger.debug(JSONArray.fromObject(allVos));
+ dataSynchronizationManager.processSyncOrgUnitData(allVos);
+ }
+ returnCode = "0";
+ } catch (Exception e) {
+ resultMessage = "同步失败:" + e.getMessage();
+ e.printStackTrace();
+ }
+ }else{
+ resultMessage = "入参不能为空";
+ }
+ String responce = buildResponce(returnCode, resultMessage);
+ appLogManager.saveLog(AcegiHelper.getLoginUser(), "调用接口" , Log.TYPE_QUERY, "调用推送科室信息接口,返回结果=" + responce);
+ return responce;
+ }
+
+ /**
+ * 接口返回信息
+ *
+ * 0
+ *
+ * ");
+ responceBuff.append("");
+ responceBuff.append(StringTools.defaultString(resultCode));
+ responceBuff.append("");
+ responceBuff.append("");
+ responceBuff.append(StringTools.defaultString(resultMessage));
+ responceBuff.append("");
+ responceBuff.append("");
+ return responceBuff.toString();
+ }
+
+ /**
+ * 解析xml入参并返回科室信息
+ * @param xmlData
+ * @return
+ * @throws Exception
+ */
+ private OrgUnitVo[] buildOrgUnitVoByXML(String xmlData) throws Exception {
+
+ if(StringUtils.isBlank(xmlData)){
+ return null;
+ }
+
+ List orgUnitVoList = new ArrayList();
+ Document document = DocumentHelper.parseText(xmlData.trim());
+
+ String orgUnitCodeXpath = "/Request/Deptcode";
+ String deptnameXpath = "/Request/Deptclass";
+ String parentOrgUnitCodeXpath = "/Request/Parentdeptid";
+
+ String coding = processDataByXpath(document, orgUnitCodeXpath);
+ String name = processDataByXpath(document, deptnameXpath);
+ String parentCoding = processDataByXpath(document, parentOrgUnitCodeXpath);
+ OrgUnitVo vo = new OrgUnitVo();
+ vo.setCoding(coding);
+ vo.setName(name);
+ vo.setParentCoding(parentCoding);
+
+ if(StringUtils.isBlank(coding)){
+ throw new SystemException("科室编码Deptclass不能为空");
+ }
+ if(StringUtils.isBlank(name)){
+ throw new SystemException("科室名称Deptname不能为空");
+ }
+ /*if(StringUtils.isBlank(parentCoding)){
+ throw new SystemException("上级科室编码不能为空");
+ }*/
+
+ orgUnitVoList.add(vo);
+
+ if(CollectionUtils.isNotEmpty(orgUnitVoList)){
+ OrgUnitVo[] allVos = new OrgUnitVo[orgUnitVoList.size()];
+ for (int i=0;i
+ * 0
+ *
+ * ");
+ responceBuff.append("");
+ responceBuff.append(StringTools.defaultString(resultCode));
+ responceBuff.append("");
+ responceBuff.append("");
+ responceBuff.append(StringTools.defaultString(resultMessage));
+ responceBuff.append("");
+ responceBuff.append("");
+ return responceBuff.toString();
+ }
+
+ /**
+ * 解析XML入参并返回用户信息
+ * @param xmlData
+ * @return
+ * @throws Exception
+ */
+ private UserVo[] buildUserVoByXML(String xmlData) throws Exception {
+ if(StringUtils.isBlank(xmlData)){
+ return null;
+ }
+
+ List userVoList = new ArrayList();
+ Document document = DocumentHelper.parseText(xmlData.trim());
+
+ String codingXpath = "/Request/Empjobnumber";
+ String nameXpath = "/Request/Empname";
+ String deptCodeXpath = "/Request/Bmbm";
+
+ String coding = processDataByXpath(document, codingXpath);
+ String name = processDataByXpath(document, nameXpath);
+ String deptCode = processDataByXpath(document, deptCodeXpath);
+
+ if(StringUtils.isBlank(coding)){
+ throw new SystemException("员工工号Empjobnumber不能为空");
+ }
+ if(StringUtils.isBlank(name)){
+ throw new SystemException("员工姓名Empname不能为空");
+ }
+ if(StringUtils.isBlank(deptCode)){
+ throw new SystemException("员工部门编码Bmbm不能为空");
+ }
+
+ OrgUnit orgUnit = orgUnitManager.getByCode(deptCode);
+ if(orgUnit == null){
+ throw new SystemException("不存在科室编码为【" + deptCode + "】的科室,请先同步科室");
+ }
+
+ UserVo vo = new UserVo();
+ vo.setCoding(coding);
+ vo.setName(name);
+ vo.setDeptCode(deptCode);
+
+ userVoList.add(vo);
+
+ if(CollectionUtils.isNotEmpty(userVoList)){
+ UserVo[] allVos = new UserVo[userVoList.size()];
+ for (int i=0;i