浏览代码

add rabbitmq

18339543638 3 年之前
父节点
当前提交
293c17dfe2

+ 9 - 0
nb-service-api/web-service-api/src/main/java/com/nb/web/api/feign/IHospitalClient.java

@@ -18,4 +18,13 @@ public interface IHospitalClient {
      * @return List<HospitalResult>
      */
     List<HospitalResult> selectAll();
+
+    /**
+     * 描述: 通过id或code获取医院信息
+     * @author lifang
+     * @date 2022/10/8 9:07
+     * @param
+     * @return HospitalResult
+     */
+    HospitalResult getByIdOrCode(String idOrCode);
 }

+ 10 - 1
nb-service/iot-service/src/main/java/com/nb/mq/entity/PcPumpEntity.java

@@ -196,7 +196,8 @@ public class PcPumpEntity implements Serializable {
         parseBufSate1(result,this.getBufState1());
         parseBufSate2(result,this.getBufState2());
         parseBufSate3(result,this.getBufState3());
-        //镇痛效果由平台自行判断 bufstate4
+        //镇痛效果由平台自行判断
+        parseBufSate4(result,this.getBufState4());
         parseBufSate5(result,this.getBufState5());
         parseBufSate6(result,this.getBufState6());
         //电机失控取消 bufstate7
@@ -208,6 +209,14 @@ public class PcPumpEntity implements Serializable {
 
     }
 
+    private void parseBufSate4(BusDeviceRunningEntity result, Integer bufState4) {
+        if (Integer.valueOf(1).equals(bufState4)) {
+            result.setWarnAnalgesicPoor(true);
+        }else {
+            result.setWarnAnalgesicPoor(false);
+        }
+    }
+
 
     /**
      * 描述: 解析运行状态

+ 27 - 14
nb-service/iot-service/src/main/java/com/nb/mq/listener/RabbitMqListener.java

@@ -1,7 +1,6 @@
 package com.nb.mq.listener;
 
 import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.util.ByteUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
@@ -16,17 +15,15 @@ import com.nb.web.api.enums.DeviceRegisterEnum;
 import com.nb.web.api.enums.DeviceStatusEnum2;
 import com.nb.web.api.enums.HospitalLogEnum;
 import com.nb.web.api.feign.*;
+import com.nb.web.api.feign.result.HospitalResult;
 import com.nb.web.api.feign.result.PatientMonitorDetailResult;
 import com.rabbitmq.client.Channel;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.redisson.api.RLock;
-import org.redisson.api.RedissonClient;
 import org.springframework.amqp.rabbit.annotation.Queue;
 import org.springframework.amqp.rabbit.annotation.RabbitListener;
 import org.springframework.amqp.core.Message;
-import org.springframework.messaging.handler.annotation.Payload;
-import org.springframework.stereotype.Component;
+import org.springframework.context.annotation.Configuration;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
@@ -42,7 +39,7 @@ import java.util.concurrent.TimeUnit;
  * @Description
  * @createTime 2022年09月07日 13:40:00
  */
-@Component
+@Configuration
 @Slf4j
 @AllArgsConstructor
 public class RabbitMqListener {
@@ -54,7 +51,7 @@ public class RabbitMqListener {
     private final IHospitalLogClient hospitalLogService;
     private final IConMixClient conMixClient;
     private final IConDoctorClient conDoctorClient;
-    private final RedissonClient redissonClient;
+    private final IHospitalClient hospitalClient;
     /**
      * 描述: 监听病人队列
      * @author lifang
@@ -74,8 +71,14 @@ public class RabbitMqListener {
         try {
 
             PcPatientEntity source = JSONUtil.toBean(body, PcPatientEntity.class);
+            HospitalResult hospitalResult = hospitalClient.getByIdOrCode(source.getHospitalCode());
+            if(hospitalResult==null){
+                log.warn("id或编码为{}的医院不存在,丢弃该信息",source.getHospitalCode());
+                return;
+            }
             hospitalLog.setIdentityCode(source.getPumpCode());
-            hospitalLog.setTenantId(source.getHospitalCode());
+            hospitalLog.setTenantId(hospitalResult.getId());
+
             String patientId =null;
             patientId = patientClient.lookPatientId(source.getHospitalCode(), source.getPatientCode());
             BusClinicEntity clinic= source.toClinic(patientId);
@@ -85,7 +88,7 @@ public class RabbitMqListener {
             boolean sameClinic=false;
             if(StrUtil.isNotEmpty(existClinic.getId())){
                 sameClinic=ObjectUtil.equal(clinic.getSurgeryName(),
-                        existClinic.getSurgeryName());
+                        existClinic.getSurgeryName())||StrUtil.isEmpty(existClinic.getSurgeryName());
             }
             if(!sameClinic){
                 //为了避免网络延迟,开始时间往前推1个小时
@@ -110,7 +113,7 @@ public class RabbitMqListener {
         long entTime = System.currentTimeMillis();
         hospitalLog.setUseTime(entTime-startTime);
         hospitalLogService.save(hospitalLog);
-        log.error("消息队列【cloud.patient】处理消息{}完成",body);
+        log.info("消息队列【cloud.patient】处理消息{}完成",body);
         channel.basicAck(message.getMessageProperties().getDeliveryTag(),true);
     }
 
@@ -133,8 +136,13 @@ public class RabbitMqListener {
         long startTime = System.currentTimeMillis();
         try {
             PcPumpEntity source = JSONUtil.toBean(body, PcPumpEntity.class);
+            HospitalResult hospitalResult = hospitalClient.getByIdOrCode(source.getHospitalCode());
+            if(hospitalResult==null){
+                log.warn("id或编码为{}的医院不存在,丢弃该信息",source.getHospitalCode());
+                return;
+            }
             hospitalLog.setIdentityCode(source.getPumpCode());
-            hospitalLog.setTenantId(source.getHospitalCode());
+            hospitalLog.setTenantId(hospitalResult.getId());
             BusDeviceRunningEntity device = source.toDevice();
             if (!deviceClient.existDevice(device.getDeviceId())) {
                 deviceClient.saveDevice(createDevice(device));
@@ -160,7 +168,7 @@ public class RabbitMqListener {
         long entTime = System.currentTimeMillis();
         hospitalLog.setUseTime(entTime-startTime);
         hospitalLogService.save(hospitalLog);
-        log.error("消息队列【cloud.pump】处理消息{}完成",body);
+        log.info("消息队列【cloud.pump】处理消息{}完成",body);
         channel.basicAck(message.getMessageProperties().getDeliveryTag(),true);
     }
 
@@ -190,8 +198,13 @@ public class RabbitMqListener {
         long startTime = System.currentTimeMillis();
         try {
             PcAnalgesicScoreEntity source = JSONUtil.toBean(body, PcAnalgesicScoreEntity.class);
+            HospitalResult hospitalResult = hospitalClient.getByIdOrCode(source.getHospitalCode());
+            if(hospitalResult==null){
+                log.warn("id或编码为{}的医院不存在,丢弃该信息",source.getHospitalCode());
+                return;
+            }
             hospitalLog.setIdentityCode(source.getPumpCode());
-            hospitalLog.setTenantId(source.getHospitalCode());
+            hospitalLog.setTenantId(hospitalResult.getId());
 
             String patientId = patientClient.lookPatientId(source.getHospitalCode(), source.getPatientCode());
             PatientMonitorDetailResult patientDetail = patientClient.lookPatientDetail(patientId);
@@ -212,7 +225,7 @@ public class RabbitMqListener {
         long entTime = System.currentTimeMillis();
         hospitalLog.setUseTime(entTime-startTime);
         hospitalLogService.save(hospitalLog);
-        log.error("消息队列【cloud.analgesicScore】处理消息{}完成",body);
+        log.info("消息队列【cloud.analgesicScore】处理消息{}完成",body);
         channel.basicAck(message.getMessageProperties().getDeliveryTag(),true);
     }
 

+ 9 - 6
nb-service/web-service/src/main/java/com/nb/web/service/bus/listener/DeviceInfoListener.java

@@ -111,8 +111,10 @@ public class DeviceInfoListener implements IIotMsgHandler {
             if(log.isDebugEnabled()){
                 log.debug("消息【{}】,设备号【{}】处理输注参数成功,处理后结果为【{}】",device.getMsgId(),device.getDeviceId(),JSONUtil.toJsonStr(device));
             }
-            //格式化病号
-            formatPatientCode(device);
+            if(DataFromEnum.ALI.equals(device.getFrom())){
+                //nb 数据需要格式化病号
+                formatPatientCode(device);
+            }
             if(log.isDebugEnabled()){
                 log.debug("消息【{}】,设备号【{}】格式化病号,处理后结果为【{}】",device.getMsgId(),device.getDeviceId(),JSONUtil.toJsonStr(device));
             }
@@ -121,9 +123,10 @@ public class DeviceInfoListener implements IIotMsgHandler {
             if(log.isDebugEnabled()){
                 log.debug("消息【{}】,设备号【{}】处理输注修改参数、病人信息成功,处理后结果为【{}】",device.getMsgId(),device.getDeviceId(),JSONUtil.toJsonStr(device));
             }
-
-            //根据功能配置进行最后的一些状态处理
-            handleHospitalConfigLast(device,infusionHistory);
+            if(DataFromEnum.ALI.equals(device.getFrom())){
+                //nb 根据功能配置进行最后的一些状态处理
+                handleHospitalConfigLast(device,infusionHistory);
+            }
 
             //处理历史运行数据
             BusDeviceHistoryEntity history=handleRunningHistory(device);
@@ -155,7 +158,6 @@ public class DeviceInfoListener implements IIotMsgHandler {
 
             cacheOperation.add(()->{
                 deviceOperator.setUploadTime(device.getUploadTime());
-                wsPublishUtils.publishPatientMonitor(device.getPatientId(),device.getTenantId());
                 if (Boolean.TRUE.equals(device.isResetUndo())||Boolean.TRUE.equals(device.isInfusionModify())) {
                     if (Boolean.TRUE.equals(device.isInfusionModify())) {
                         wsPublishUtils.publishDeviceNone(device.getTenantId());
@@ -178,6 +180,7 @@ public class DeviceInfoListener implements IIotMsgHandler {
                             });
                 }
                 deviceOperator.setPatientCode(device.getPatientCode());
+                wsPublishUtils.publishPatientMonitor(device.getPatientId(),device.getTenantId());
                 return null;
             });
 

+ 11 - 0
nb-service/web-service/src/main/java/com/nb/web/service/bus/service/LocalBusHospitalService.java

@@ -287,4 +287,15 @@ public class LocalBusHospitalService extends BaseService<BusHospitalMapper, BusH
     public List<HospitalResult> selectAll() {
         return BeanUtil.copyToList(list(),HospitalResult.class);
     }
+
+    @Override
+    public HospitalResult getByIdOrCode(String idOrCode) {
+        BusHospitalEntity result = this.getById(idOrCode);
+        if(result==null){
+            result=this.getOne(new QueryWrapper<BusHospitalEntity>().lambda()
+                    .eq(BusHospitalEntity::getCode,idOrCode)
+                    .last("limit 1"));
+        }
+        return BeanUtil.toBean(result,HospitalResult.class);
+    }
 }