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