Index: ssts-web/src/main/webapp/disinfectsystem/config/nfykdxnfyy/spring/webservice-cxf.xml =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/config/nfykdxnfyy/spring/webservice-cxf.xml (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/config/nfykdxnfyy/spring/webservice-cxf.xml (revision 29545) @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + \ No newline at end of file Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/nfykdxnfyy/OrgUserDataWebServiceManager.java =================================================================== diff -u --- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/nfykdxnfyy/OrgUserDataWebServiceManager.java (revision 0) +++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/nfykdxnfyy/OrgUserDataWebServiceManager.java (revision 29545) @@ -0,0 +1,37 @@ +package com.forgon.disinfectsystem.webservice.datasync.nfykdxnfyy; + +import javax.jws.WebMethod; +import javax.jws.WebParam; +import javax.jws.WebService; + +/** + * 南方医院科室人员数据webserivce + * @author zhouPeiMian + * @since 2020-11-11 + * + */ +@WebService +public interface OrgUserDataWebServiceManager { + + + /** + * 调用接口推送科室、 人员数据 + * @param action 类型为字符串,服务编号传给该参数(MES0067、MES0072) + * @param message 类型为标准消息请求流传给该参数(科室或者人员信息) + + * @return 出参: +
+ + +
+ + 0 + 成功 + +
+ * + */ + @WebMethod + public String HIPMessageServer(@WebParam(name = "action") String action, @WebParam(name = "message") String message); + +} Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/nfykdxnfyy/OrgUserDataWebServiceManagerImpl.java =================================================================== diff -u --- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/nfykdxnfyy/OrgUserDataWebServiceManagerImpl.java (revision 0) +++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/nfykdxnfyy/OrgUserDataWebServiceManagerImpl.java (revision 29545) @@ -0,0 +1,270 @@ +package com.forgon.disinfectsystem.webservice.datasync.nfykdxnfyy; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import javax.jws.WebMethod; +import javax.jws.WebParam; +import javax.jws.WebService; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; + +import com.forgon.directory.service.OrgUnitManager; +import com.forgon.directory.service.SysUserManager; +import com.forgon.disinfectsystem.common.CssdUtils; +import com.forgon.disinfectsystem.datasynchronization.model.OrgUnitVo; +import com.forgon.disinfectsystem.datasynchronization.model.UserVo; +import com.forgon.disinfectsystem.datasynchronization.service.DataSynchronizationManager; +import com.forgon.log.service.LogManager; +import com.forgon.tools.hibernate.ObjectDao; + +@WebService(serviceName = "OrgUserDataWebService") +public class OrgUserDataWebServiceManagerImpl implements OrgUserDataWebServiceManager { + + private final Logger logger = Logger.getLogger(this.getClass()); + + /** + * action类型,即服务编码 + */ + public final static String ACTION_ORGUNIT = "MES0067"; + public final static String ACTION_USER = "MES0072"; + + /** + * 成功与失败对应的编码 + */ + public final static String RESULT_CODE_SUCCESS = "0"; + public final static String RESULT_CODE_FAILURE = "-1"; + + /** + * 消息来源 + */ + public final static String SOURCESYSTEM = "消毒供应质量追溯管理系统"; + + @Autowired + private DataSynchronizationManager dataSynchronizationManager; + + @Autowired + private OrgUnitManager orgUnitManager; + + @Autowired + private SysUserManager sysUserManager; + + @Autowired + private LogManager appLogManager; + + @Autowired + private ObjectDao objectDao; + + @Override + @WebMethod + public String HIPMessageServer(@WebParam(name = "action") String action, @WebParam(name = "message") String message) { + logger.info("OrgUserDataWebServiceManagerImpl.HIPMessageServer message=" + message + ", action = " + action); + String result = null; + //先根据消息解析出action + switch (action) { + case ACTION_ORGUNIT: + result = dealOrgUnit(message); + break; + case ACTION_USER: + result = dealUser(message); + break; + default: + result = constructReturnValue(SOURCESYSTEM, "", RESULT_CODE_FAILURE, "不支持的action:" + action); + break; + } + logger.info(result); + return result; + } + + /** + * + * @param message + * @return + */ + private String dealOrgUnit(String message) { + /*message = "" + + "
" + + "南方医院主数据中心" + + "" + + "
" + + "" + + "" + + "" + + "NFYKDXNFYY" + + "" + + "E" + + "220708" + + "" + + "" + + "" + + "" + + "ZZYXKEBQ-重症医学科二病区" + + "" + + "NFYKDXNFYY" + + "科室地址" + + "18665000637#11100637" + + "" + + "" + + "" + + " " + + "ZZYXKEBQ" + + "" + + "2015-05-23" + + "1" + + "" + + "" + + "" + + "N" + + "" + + "" + + "" + + "" + + "
";*/ + message = formatParam(message); + JSONObject jsonObject = null; + try{ + jsonObject = (JSONObject)CssdUtils.xml2JsonCommon(CssdUtils.getXmlNodeContentByTagName(message, "Body")); + if(jsonObject == null){ + return constructReturnValue(SOURCESYSTEM, "", RESULT_CODE_FAILURE, "message数据格式错误"); + } + Object deptInfoObj = jsonObject.opt("CT_DeptList"); + JSONArray deptInfoArr = null; + if(deptInfoObj instanceof JSONArray){ + deptInfoArr = (JSONArray) deptInfoObj; + }else if(deptInfoObj instanceof JSONObject){ + deptInfoArr = new JSONArray(); + JSONObject deptInfo = ((JSONObject)deptInfoObj).optJSONObject("CT_Dept"); + deptInfoArr.add(deptInfo); + } + if(deptInfoArr == null || deptInfoArr.size() == 0){ + return constructReturnValue(SOURCESYSTEM, "", RESULT_CODE_FAILURE, "CT_DeptList数据格式错误"); + } + if(deptInfoArr != null && deptInfoArr.size() > 0){ + OrgUnitVo[] vos = new OrgUnitVo[deptInfoArr.size()]; + int i = 0; + for (Object object : deptInfoArr) { + JSONObject deptInfo = (JSONObject) object; + OrgUnitVo vo = new OrgUnitVo(); + vo.setDeptCode(deptInfo.optString("CTD_Code")); + vo.setDeptName(deptInfo.optString("CTD_Desc")); + vo.setParentCoding(deptInfo.optString("CTD_ParentDeptCode")); + vos[i++] = vo; + } + dataSynchronizationManager.processSyncOrgUnitData(vos); + } + return constructReturnValue(SOURCESYSTEM, "", RESULT_CODE_SUCCESS, "成功"); + }catch(Exception e){ + e.printStackTrace(); + if(jsonObject == null){ + return constructReturnValue(SOURCESYSTEM, "", RESULT_CODE_FAILURE, "message数据格式错误"); + }else{ + return constructReturnValue(SOURCESYSTEM, "", RESULT_CODE_FAILURE, "处理科室接口数据报错"); + } + } + } + + private String dealUser(String message) { + /*message = "
" + + "南方医院主数据中心" + + "" + + "
" + + "" + + "" + + "" + + "2822" + + "袁*力" + + "110104" + + "" + + "" + + "" + + "" + + "";*/ + message = formatParam(message); + JSONObject jsonObject = null; + try{ + jsonObject = (JSONObject)CssdUtils.xml2JsonCommon(CssdUtils.getXmlNodeContentByTagName(message, "Body")); + if(jsonObject == null){ + return constructReturnValue(SOURCESYSTEM, "", RESULT_CODE_FAILURE, "message数据格式错误"); + } + Object useInfoObj = jsonObject.opt("CT_CareProvList"); + JSONArray useInfoArr = null; + if(useInfoObj instanceof JSONArray){ + useInfoArr = (JSONArray) useInfoObj; + }else if(useInfoObj instanceof JSONObject){ + useInfoArr = new JSONArray(); + JSONObject useInfo = ((JSONObject)useInfoObj).optJSONObject("CT_CareProv"); + useInfoArr.add(useInfo); + } + if(useInfoArr == null || useInfoArr.size() == 0){ + return constructReturnValue(SOURCESYSTEM, "", RESULT_CODE_FAILURE, "CT_CareProvList数据格式错误"); + } + UserVo[] vos = null; + if(useInfoArr != null && useInfoArr.size() > 0){ + vos = new UserVo[useInfoArr.size()]; + for(int i=0;i +
+ + +
+ + 0 + 成功 + + + */ + private String constructReturnValue(String sourceSystem , String messageId, String resultCode ,String resultContent){ + String result = String.format("" + + "
" + + "%s" + + "%s" + + "
" + + "" + + "%s" + + "%s" + + "" + + "
", + sourceSystem , messageId , resultCode, resultContent); + return result; + } + + /** + * 文本格式化 + * @param str + * @return + */ + private String formatParam(String str) { + Pattern p = Pattern.compile("\\s*|\t|\r|\n"); + Matcher m = p.matcher(str); + return m.replaceAll(""); + } + +}