Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/gzs12rmyy/UpdatePractitionerQueueListener.java
===================================================================
diff -u
--- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/gzs12rmyy/UpdatePractitionerQueueListener.java (revision 0)
+++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/gzs12rmyy/UpdatePractitionerQueueListener.java (revision 35651)
@@ -0,0 +1,58 @@
+package com.forgon.disinfectsystem.mq.dao.gzs12rmyy;
+
+import javax.jms.Message;
+import javax.jms.MessageListener;
+
+import org.apache.log4j.Logger;
+
+import com.forgon.disinfectsystem.datasynchronization.model.UserVo;
+import com.forgon.disinfectsystem.datasynchronization.service.DataSynchronizationManager;
+
+/**
+ * 修改人员的队列的监听器GZS12RMYY-48
+ *
+ */
+public class UpdatePractitionerQueueListener implements MessageListener {
+
+ private static Logger logger = Logger.getLogger(UpdatePractitionerQueueListener.class);
+
+ private DataSynchronizationManager dataSynchronizationManager;
+
+ public void setDataSynchronizationManager(
+ DataSynchronizationManager dataSynchronizationManager) {
+ this.dataSynchronizationManager = dataSynchronizationManager;
+ }
+
+ @Override
+ public void onMessage(Message message) {
+ String jmsDestination = MQHelper.XDGY_updatePractitionerQueue;
+ String messageBody = "";
+ try {
+ //读取消息内容
+ messageBody = MQHelper.readMessage(jmsDestination, message);
+ try {
+ //解析消息中的用户信息
+ UserVo[] allVos = MQHelper.getAllUserVoData(jmsDestination, messageBody);
+ //根据同步到的用户数据进行处理
+ dataSynchronizationManager.processSyncUserData(allVos);
+ } catch (Exception e) {
+ logger.info("解析【" + jmsDestination +"】消息失败:" + e.getMessage());
+ }
+ //回调下平台服务
+ new Thread(){
+ @Override
+ public void run() {
+ try {
+ MQHelper.sentAck(jmsDestination, message);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }.start();
+ } catch (Exception e) {
+ logger.info("监听【" + jmsDestination +"】消息队列失败:" + e.getMessage());
+ e.printStackTrace();
+ }
+ }
+
+}
Index: ssts-web/src/main/webapp/disinfectsystem/config/gzs12rmyy/spring/replicaJmsIbmListener.xml
===================================================================
diff -u
--- ssts-web/src/main/webapp/disinfectsystem/config/gzs12rmyy/spring/replicaJmsIbmListener.xml (revision 0)
+++ ssts-web/src/main/webapp/disinfectsystem/config/gzs12rmyy/spring/replicaJmsIbmListener.xml (revision 35651)
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: ssts-web/src/main/webapp/disinfectsystem/config/gzs12rmyy/spring/primaryJmsIbmListener.xml
===================================================================
diff -u
--- ssts-web/src/main/webapp/disinfectsystem/config/gzs12rmyy/spring/primaryJmsIbmListener.xml (revision 0)
+++ ssts-web/src/main/webapp/disinfectsystem/config/gzs12rmyy/spring/primaryJmsIbmListener.xml (revision 35651)
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/gzs12rmyy/CreatePractitionerQueueListener.java
===================================================================
diff -u
--- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/gzs12rmyy/CreatePractitionerQueueListener.java (revision 0)
+++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/gzs12rmyy/CreatePractitionerQueueListener.java (revision 35651)
@@ -0,0 +1,57 @@
+package com.forgon.disinfectsystem.mq.dao.gzs12rmyy;
+
+import javax.jms.Message;
+import javax.jms.MessageListener;
+
+import org.apache.log4j.Logger;
+
+import com.forgon.disinfectsystem.datasynchronization.model.UserVo;
+import com.forgon.disinfectsystem.datasynchronization.service.DataSynchronizationManager;
+
+/**
+ * 新建人员的队列的监听器GZS12RMYY-48
+ *
+ */
+public class CreatePractitionerQueueListener implements MessageListener {
+
+ private static Logger logger = Logger.getLogger(CreatePractitionerQueueListener.class);
+
+ private DataSynchronizationManager dataSynchronizationManager;
+
+ public void setDataSynchronizationManager(DataSynchronizationManager dataSynchronizationManager) {
+ this.dataSynchronizationManager = dataSynchronizationManager;
+ }
+
+ @Override
+ public void onMessage(Message message) {
+ String jmsDestination = MQHelper.XDGY_createPractitionerQueue;
+ String messageBody = "";
+ try {
+ //读取消息内容
+ messageBody = MQHelper.readMessage(jmsDestination, message);
+ try {
+ //解析消息中的用户信息
+ UserVo[] allVos = MQHelper.getAllUserVoData(jmsDestination, messageBody);
+ //根据同步到的用户数据进行处理
+ dataSynchronizationManager.processSyncUserData(allVos);
+ } catch (Exception e) {
+ logger.info("解析【" + jmsDestination +"】消息失败:" + e.getMessage());
+ }
+ //回调下平台服务
+ new Thread(){
+ @Override
+ public void run() {
+ try {
+ MQHelper.sentAck(jmsDestination, message);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }.start();
+ } catch (Exception e) {
+ logger.info("监听【" + jmsDestination +"】消息队列失败:" + e.getMessage());
+ e.printStackTrace();
+ }
+ }
+
+}
Index: ssts-web/src/main/webapp/disinfectsystem/config/gzs12rmyy/spring/applicationContext-his-gzs12rmyy.xml
===================================================================
diff -u -r27968 -r35651
--- ssts-web/src/main/webapp/disinfectsystem/config/gzs12rmyy/spring/applicationContext-his-gzs12rmyy.xml (.../applicationContext-his-gzs12rmyy.xml) (revision 27968)
+++ ssts-web/src/main/webapp/disinfectsystem/config/gzs12rmyy/spring/applicationContext-his-gzs12rmyy.xml (.../applicationContext-his-gzs12rmyy.xml) (revision 35651)
@@ -94,4 +94,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/gzs12rmyy/CreateDepartmentQueueListener.java
===================================================================
diff -u
--- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/gzs12rmyy/CreateDepartmentQueueListener.java (revision 0)
+++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/gzs12rmyy/CreateDepartmentQueueListener.java (revision 35651)
@@ -0,0 +1,57 @@
+package com.forgon.disinfectsystem.mq.dao.gzs12rmyy;
+
+import javax.jms.Message;
+import javax.jms.MessageListener;
+
+import org.apache.log4j.Logger;
+
+import com.forgon.disinfectsystem.datasynchronization.model.OrgUnitVo;
+import com.forgon.disinfectsystem.datasynchronization.service.DataSynchronizationManager;
+
+/**
+ * 新建科室的队列的监听器GZS12RMYY-48
+ *
+ */
+public class CreateDepartmentQueueListener implements MessageListener {
+
+ private static Logger logger = Logger.getLogger(CreateDepartmentQueueListener.class);
+
+ DataSynchronizationManager dataSynchronizationManager;
+
+ public void setDataSynchronizationManager(DataSynchronizationManager dataSynchronizationManager) {
+ this.dataSynchronizationManager = dataSynchronizationManager;
+ }
+
+ @Override
+ public void onMessage(Message message) {
+ String jmsDestination = MQHelper.XDGY_createDepartmentQueue;
+ String messageBody = "";
+ try {
+ //读取消息内容
+ messageBody = MQHelper.readMessage(jmsDestination, message);
+ try {
+ //解析消息中的科室信息
+ OrgUnitVo[] allVos = MQHelper.getAllOrgUnitVoData(jmsDestination, messageBody);
+ //根据同步到的组织机构数据进行处理
+ dataSynchronizationManager.processSyncOrgUnitData(allVos);
+ } catch (Exception e) {
+ logger.info("解析【" + jmsDestination +"】消息失败:" + e.getMessage());
+ }
+ //回调下平台服务
+ new Thread(){
+ @Override
+ public void run() {
+ try {
+ MQHelper.sentAck(jmsDestination, message);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }.start();
+ } catch (Exception e) {
+ logger.info("监听【" + jmsDestination +"】消息队列失败:" + e.getMessage());
+ e.printStackTrace();
+ }
+ }
+
+}
Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/gzs12rmyy/UpdateDepartmentQueueListener.java
===================================================================
diff -u
--- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/gzs12rmyy/UpdateDepartmentQueueListener.java (revision 0)
+++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/gzs12rmyy/UpdateDepartmentQueueListener.java (revision 35651)
@@ -0,0 +1,57 @@
+package com.forgon.disinfectsystem.mq.dao.gzs12rmyy;
+
+import javax.jms.Message;
+import javax.jms.MessageListener;
+
+import org.apache.log4j.Logger;
+
+import com.forgon.disinfectsystem.datasynchronization.model.OrgUnitVo;
+import com.forgon.disinfectsystem.datasynchronization.service.DataSynchronizationManager;
+
+/**
+ * 修改科室的队列的监听器GZS12RMYY-48
+ *
+ */
+public class UpdateDepartmentQueueListener implements MessageListener {
+
+ private static Logger logger = Logger.getLogger(UpdateDepartmentQueueListener.class);
+
+ DataSynchronizationManager dataSynchronizationManager;
+
+ public void setDataSynchronizationManager(DataSynchronizationManager dataSynchronizationManager) {
+ this.dataSynchronizationManager = dataSynchronizationManager;
+ }
+
+ @Override
+ public void onMessage(Message message) {
+ String jmsDestination = MQHelper.XDGY_updateDepartmentQueue;
+ String messageBody = "";
+ try {
+ //读取消息内容
+ messageBody = MQHelper.readMessage(jmsDestination, message);
+ try {
+ //解析消息中的科室信息
+ OrgUnitVo[] allVos = MQHelper.getAllOrgUnitVoData(jmsDestination, messageBody);
+ //根据同步到的组织机构数据进行处理
+ dataSynchronizationManager.processSyncOrgUnitData(allVos);
+ } catch (Exception e) {
+ logger.info("解析【" + jmsDestination +"】消息失败:" + e.getMessage());
+ }
+ //回调下平台服务
+ new Thread(){
+ @Override
+ public void run() {
+ try {
+ MQHelper.sentAck(jmsDestination, message);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }.start();
+ } catch (Exception e) {
+ logger.info("监听【" + jmsDestination +"】消息队列失败:" + e.getMessage());
+ e.printStackTrace();
+ }
+ }
+
+}
Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/gzs12rmyy/MQHelper.java
===================================================================
diff -u -r31415 -r35651
--- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/gzs12rmyy/MQHelper.java (.../MQHelper.java) (revision 31415)
+++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/gzs12rmyy/MQHelper.java (.../MQHelper.java) (revision 35651)
@@ -3,16 +3,25 @@
import java.io.File;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
+import java.text.SimpleDateFormat;
import java.util.ArrayList;
+import java.util.Date;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
+import javax.jms.BytesMessage;
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.TextMessage;
+
import net.sf.json.JSON;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.dom4j.Document;
@@ -21,18 +30,25 @@
import org.dom4j.Node;
import org.dom4j.XPath;
import org.dom4j.io.SAXReader;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.client.RestTemplate;
import com.forgon.disinfectsystem.common.CssdUtils;
import com.forgon.disinfectsystem.datasynchronization.model.OrgUnitVo;
import com.forgon.disinfectsystem.datasynchronization.model.PatientInfoVO;
import com.forgon.disinfectsystem.datasynchronization.model.UserVo;
-import com.forgon.log.service.LogManager;
+import com.ibm.jms.JMSBytesMessage;
import com.ibm.mq.MQException;
import com.ibm.mq.MQGetMessageOptions;
import com.ibm.mq.MQMessage;
import com.ibm.mq.MQQueue;
import com.ibm.mq.MQQueueManager;
import com.ibm.mq.constants.MQConstants;
+import com.ibm.msg.client.wmq.WMQConstants;
/**
* MQ队列帮助类
@@ -64,8 +80,343 @@
* 人员队列名称
*/
public static final String USERMQUEUE = "OUT.S023.MS024.LQ";
+
+ /**
+ * 医疗卫生机构(科室)信息注册服务队列名称XD_createDepartment
+ */
+ public static final String XDGY_createDepartmentQueue = "XDGY_createDepartment";
+ /**
+ * 医疗卫生机构(科室)信息更新服务队列名称XD_updateDepartment
+ */
+ public static final String XDGY_updateDepartmentQueue = "XDGY_updateDepartment";
+ /**
+ * 医疗卫生人员信息注册服务队列名称XD_createPractitioner
+ */
+ public static final String XDGY_createPractitionerQueue = "XDGY_createPractitioner";
+ /**
+ * 医疗卫生人员信息更新服务队列名称XD_updatePractitioner
+ */
+ public static final String XDGY_updatePractitionerQueue = "XDGY_updatePractitioner";
+
+ /**
+ * ACK地址
+ */
+ public static final String ackUrl = "http://192.168.7.183:7800/ack";
+
+ /**
+ * DOMAIN
+ */
+ public static final String domain = "DX_XDGY";
+
+ /**
+ * GTM8_SEC取值为8小时(平台规定的时间)
+ */
+ public static final Long GTM8_SEC = 1000l * 60 * 60 * 8;
+
+ /**
+ * 获取消息后,回调下平台服务
+ * @param destination 队列名称
+ * @param message 消息
+ * @return
+ * @throws JMSException
+ */
+ public static boolean sentAck(String destination,Message message) throws JMSException {
+ if (StringUtils.isEmpty(ackUrl)) {
+ return false;
+ }
+
+ try {
+ HttpHeaders headers = new HttpHeaders();
+ headers.setContentType(MediaType.APPLICATION_JSON);
+
+ Map map= new HashMap();
+ map.put("queue", destination);
+ map.put("localTransId", message.getJMSCorrelationID()==null? "":message.getJMSCorrelationID() );
+ map.put("operTime", timestampToDateTime(message.getJMSTimestamp()));
+ map.put("domain", domain);
+
+ HttpEntity