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