Prechádzať zdrojové kódy

update 调整包结构
add 智能泵加档受限在非减档状态下一直存在

A17404李放 3 rokov pred
rodič
commit
9d99320594
50 zmenil súbory, kde vykonal 130 pridanie a 592 odobranie
  1. 1 1
      nb-admin/src/main/java/com/nb/admin/AdminApplication.java
  2. 6 12
      nb-common/pom.xml
  3. 2 2
      nb-common/src/main/java/com/nb/common/aspect/DataSourceAspect.java
  4. 1 1
      nb-common/src/main/java/com/nb/common/aspect/DemoModelAspect.java
  5. 1 1
      nb-common/src/main/java/com/nb/common/config/sa/SaConfig.java
  6. 1 1
      nb-common/src/main/java/com/nb/common/config/sa/SaTokenConfig.java
  7. 1 1
      nb-common/src/main/java/com/nb/common/config/web/RequestCheckProperties.java
  8. 2 2
      nb-common/src/main/java/com/nb/common/config/web/handler/CheckRequestHandler.java
  9. 1 1
      nb-common/src/main/java/com/nb/common/config/web/handler/TenantIdHandler.java
  10. 1 1
      nb-common/src/main/java/com/nb/common/datasource/DynamicDataSource.java
  11. 1 1
      nb-common/src/main/java/com/nb/common/datasource/DynamicDataSourceContextHolder.java
  12. 8 4
      nb-common/src/main/java/com/nb/common/delay_queue/manager/RedissonDelayMessageManager.java
  13. 0 28
      nb-common/src/main/java/com/nb/common/enums/LockFlagEnum.java
  14. 0 27
      nb-common/src/main/java/com/nb/common/enums/PeriodEnum.java
  15. 0 28
      nb-common/src/main/java/com/nb/common/enums/PswModifiedEnum.java
  16. 0 26
      nb-common/src/main/java/com/nb/common/enums/UniqueEnum.java
  17. 1 1
      nb-common/src/main/java/com/nb/common/notice/wechat/EnterpriseWeChatNotify.java
  18. 1 1
      nb-common/src/main/java/com/nb/common/redis/RedissonClientAutoConfiguration.java
  19. 1 1
      nb-common/src/main/java/com/nb/common/util/ThreadUtil.java
  20. 1 1
      nb-common/src/main/java/com/nb/common/ws/DefaultWsServerAioListener.java
  21. 1 1
      nb-common/src/main/java/com/nb/common/ws/HeartBeatConfig.java
  22. 1 1
      nb-common/src/main/java/com/nb/common/ws/IWebSocketAuthFilter.java
  23. 1 1
      nb-framework/src/main/java/com/nb/framework/aop/LogAspect.java
  24. 1 3
      nb-framework/src/main/java/com/nb/framework/config/DruidConfig.java
  25. 1 2
      nb-system/src/main/java/com/nb/aliyun/AliyunConsumerGroupService.java
  26. 1 4
      nb-system/src/main/java/com/nb/bus/controller/BusDeviceController.java
  27. 1 3
      nb-system/src/main/java/com/nb/bus/controller/BusStatsAnalyseController.java
  28. 9 27
      nb-system/src/main/java/com/nb/bus/entity/BusInfusionHistoryEntity.java
  29. 1 1
      nb-system/src/main/java/com/nb/bus/entity/BusInfusionModifyEntity.java
  30. 0 31
      nb-system/src/main/java/com/nb/bus/enums/AppEnum.java
  31. 0 33
      nb-system/src/main/java/com/nb/bus/exception/BusinessException.java
  32. 0 80
      nb-system/src/main/java/com/nb/bus/exception/ErrorStatus.java
  33. 19 7
      nb-system/src/main/java/com/nb/bus/listener/DeviceInfoListener.java
  34. 1 1
      nb-system/src/main/java/com/nb/bus/listener/HisInfoListener.java
  35. 0 34
      nb-system/src/main/java/com/nb/bus/listener/event/bean/DeviceAlarmEvent.java
  36. 0 28
      nb-system/src/main/java/com/nb/bus/listener/event/bean/DeviceLifecycleEvent.java
  37. 0 21
      nb-system/src/main/java/com/nb/bus/listener/event/infusion/InfusionCreateEvent.java
  38. 0 21
      nb-system/src/main/java/com/nb/bus/listener/event/infusion/InfusionUpdateEvent.java
  39. 2 2
      nb-system/src/main/java/com/nb/bus/registry/constant/DeviceKeyConstant.java
  40. 22 0
      nb-system/src/main/java/com/nb/bus/registry/device/ClusterDeviceOperator.java
  41. 14 0
      nb-system/src/main/java/com/nb/bus/registry/device/DeviceOperator.java
  42. 0 62
      nb-system/src/main/java/com/nb/bus/service/LocalBusInfusionHistoryService.java
  43. 17 0
      nb-system/src/main/java/com/nb/bus/service/LocalBusPatientService.java
  44. 1 1
      nb-system/src/main/java/com/nb/bus/service/dto/CombineHistoryResult.java
  45. 1 2
      nb-system/src/main/java/com/nb/bus/stats/analyse/AlarmStatsAnalyse.java
  46. 2 2
      nb-system/src/main/java/com/nb/bus/stats/analyse/InfusionDoseStatsAnalyse.java
  47. 1 1
      nb-system/src/main/java/com/nb/bus/websocket/DefaultWebSocketMsgHandler.java
  48. 0 81
      nb-system/src/main/java/com/nb/bus/websocket/HisConnectionHandler.java
  49. 1 0
      nb-system/src/main/java/com/nb/bus/websocket/auth/HospitalAuthFilter.java
  50. 2 1
      nb-system/src/main/java/com/nb/bus/websocket/auth/UserAuthFilter.java

+ 1 - 1
nb-admin/src/main/java/com/nb/admin/AdminApplication.java

@@ -1,6 +1,6 @@
 package com.nb.admin;
 
-import com.nb.bus.web.RequestCheckProperties;
+import com.nb.common.config.web.RequestCheckProperties;
 import com.nb.common.config.AppConfig;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;

+ 6 - 12
nb-common/pom.xml

@@ -16,18 +16,12 @@
             <groupId>org.t-io</groupId>
             <artifactId>tio-websocket-spring-boot-starter</artifactId>
         </dependency>
-        <!--websocket 模块-->
-        <!--<dependency>-->
-        <!--<groupId>org.springframework.boot</groupId>-->
-        <!--<artifactId>spring-boot-starter-websocket</artifactId>-->
-        <!--<exclusions>-->
-        <!--<exclusion>-->
-        <!--<groupId>org.springframework.boot</groupId>-->
-        <!--<artifactId>spring-boot-starter-tomcat</artifactId>-->
-        <!--</exclusion>-->
-        <!--</exclusions>-->
-        <!--</dependency>-->
-        <!--websocket 模块-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-aop</artifactId>
+            <optional>true</optional>
+            <scope>compile</scope>
+        </dependency>
         <!-- web 模块 -->
         <dependency>
             <groupId>com.github.xiaoymin</groupId>

+ 2 - 2
nb-framework/src/main/java/com/nb/framework/aspect/DataSourceAspect.java → nb-common/src/main/java/com/nb/common/aspect/DataSourceAspect.java

@@ -1,7 +1,7 @@
-package com.nb.framework.aspect;
+package com.nb.common.aspect;
 
 import com.nb.common.annotation.DataSource;
-import com.nb.framework.datasource.DynamicDataSourceContextHolder;
+import com.nb.common.datasource.DynamicDataSourceContextHolder;
 import lombok.extern.slf4j.Slf4j;
 import org.aspectj.lang.ProceedingJoinPoint;
 import org.aspectj.lang.annotation.Around;

+ 1 - 1
nb-framework/src/main/java/com/nb/framework/aspect/DemoModelAspect.java → nb-common/src/main/java/com/nb/common/aspect/DemoModelAspect.java

@@ -1,4 +1,4 @@
-package com.nb.framework.aspect;
+package com.nb.common.aspect;
 
 import com.nb.common.config.AppConfig;
 import com.nb.common.exception.DemoModeException;

+ 1 - 1
nb-framework/src/main/java/com/nb/framework/config/SaConfig.java → nb-common/src/main/java/com/nb/common/config/sa/SaConfig.java

@@ -1,4 +1,4 @@
-package com.nb.framework.config;
+package com.nb.common.config.sa;
 
 import cn.dev33.satoken.SaManager;
 import cn.dev33.satoken.dao.SaTokenDaoRedisJackson;

+ 1 - 1
nb-framework/src/main/java/com/nb/framework/config/SaTokenConfig.java → nb-common/src/main/java/com/nb/common/config/sa/SaTokenConfig.java

@@ -1,4 +1,4 @@
-package com.nb.framework.config;
+package com.nb.common.config.sa;
 
 import cn.dev33.satoken.interceptor.SaRouteInterceptor;
 import cn.dev33.satoken.router.SaRouter;

+ 1 - 1
nb-system/src/main/java/com/nb/bus/web/RequestCheckProperties.java → nb-common/src/main/java/com/nb/common/config/web/RequestCheckProperties.java

@@ -1,4 +1,4 @@
-package com.nb.bus.web;
+package com.nb.common.config.web;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;

+ 2 - 2
nb-system/src/main/java/com/nb/bus/web/handler/CheckRequestHandler.java → nb-common/src/main/java/com/nb/common/config/web/handler/CheckRequestHandler.java

@@ -1,10 +1,10 @@
-package com.nb.bus.web.handler;
+package com.nb.common.config.web.handler;
 
 import cn.hutool.core.io.IoUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.crypto.digest.DigestUtil;
 import cn.hutool.json.JSONObject;
-import com.nb.bus.web.RequestCheckProperties;
+import com.nb.common.config.web.RequestCheckProperties;
 import com.nb.common.config.CacheHttpServletRequestWrapper;
 import com.nb.common.exception.RequestParmErrorException;
 import com.nb.common.exception.RequestSignErrorException;

+ 1 - 1
nb-system/src/main/java/com/nb/bus/web/handler/TenantIdHandler.java → nb-common/src/main/java/com/nb/common/config/web/handler/TenantIdHandler.java

@@ -1,4 +1,4 @@
-package com.nb.bus.web.handler;
+package com.nb.common.config.web.handler;
 
 import com.nb.common.bo.LoginUser;
 import com.nb.common.util.SecurityUtil;

+ 1 - 1
nb-framework/src/main/java/com/nb/framework/datasource/DynamicDataSource.java → nb-common/src/main/java/com/nb/common/datasource/DynamicDataSource.java

@@ -1,4 +1,4 @@
-package com.nb.framework.datasource;
+package com.nb.common.datasource;
 
 import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
 

+ 1 - 1
nb-framework/src/main/java/com/nb/framework/datasource/DynamicDataSourceContextHolder.java → nb-common/src/main/java/com/nb/common/datasource/DynamicDataSourceContextHolder.java

@@ -1,4 +1,4 @@
-package com.nb.framework.datasource;
+package com.nb.common.datasource;
 
 import lombok.extern.slf4j.Slf4j;
 

+ 8 - 4
nb-common/src/main/java/com/nb/common/delay_queue/manager/RedissonDelayMessageManager.java

@@ -1,18 +1,19 @@
 package com.nb.common.delay_queue.manager;
 
 
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.json.JSONUtil;
 import com.nb.common.cache.value.Value;
 import com.nb.common.delay_queue.handler.DelayMessageHandler;
 import com.nb.common.delay_queue.message.DelayMessage;
 import com.nb.common.delay_queue.message.DelayMessageProperties;
-import com.nb.common.util.ExceptionUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.redisson.api.RBlockingQueue;
 import org.redisson.api.RDelayedQueue;
 import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.AutoConfigureAfter;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
 import org.springframework.context.annotation.Configuration;
 
@@ -28,7 +29,7 @@ import java.util.concurrent.TimeUnit;
  **/
 @Slf4j
 @Configuration
-@ConditionalOnBean({RedissonClient.class,DelayMessageHandler.class})
+@AutoConfigureAfter({RedissonClient.class})
 public class RedissonDelayMessageManager implements DelayMessageManager {
 
     private final RBlockingQueue<DelayMessage> blockingQueue;
@@ -37,10 +38,13 @@ public class RedissonDelayMessageManager implements DelayMessageManager {
 
     private static final String NAME="redisson-delay-message-queue";
     @Autowired
-    public RedissonDelayMessageManager(RedissonClient redissonClient, List<DelayMessageHandler> handlers) {
+    public RedissonDelayMessageManager(RedissonClient redissonClient,
+                                       List<DelayMessageHandler> handlers) {
         this.blockingQueue = redissonClient.getBlockingQueue(NAME);
         this.delayedQueue = redissonClient.getDelayedQueue(blockingQueue);
-
+        if(CollectionUtil.isEmpty(handlers)){
+            log.warn("the size of DelayMessageHandler is zero");
+        }
         //将头结点取出后触发该方法
         blockingQueue.subscribeOnElements(i->{
             //开启新的线程消费,唯一线程消费,不可阻塞该异步线程

+ 0 - 28
nb-common/src/main/java/com/nb/common/enums/LockFlagEnum.java

@@ -1,28 +0,0 @@
-package com.nb.common.enums;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-
-/**
- * 锁定标记
- *
- * @author Kevin
- */
-@Getter
-@AllArgsConstructor
-public enum LockFlagEnum {
-
-    /**
-     * 正常
-     */
-    NORMAL("0", "正常"),
-    /**
-     * 锁定
-     */
-    LOCKED("1", "锁定");
-
-    private String code;
-    private String desc;
-
-}

+ 0 - 27
nb-common/src/main/java/com/nb/common/enums/PeriodEnum.java

@@ -1,27 +0,0 @@
-package com.nb.common.enums;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-
-/**
- * 有效期
- *
- * @author Kevin
- */
-@Getter
-@AllArgsConstructor
-public enum PeriodEnum {
-    /**
-     * 长期
-     */
-    LONG_PERIOD("0", "长期"),
-    /**
-     * 短期
-     */
-    SHORT_PERIOD("1", "短期");
-
-    private String code;
-    private String desc;
-
-}

+ 0 - 28
nb-common/src/main/java/com/nb/common/enums/PswModifiedEnum.java

@@ -1,28 +0,0 @@
-package com.nb.common.enums;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-
-/**
- * 修改标记
- *
- * @author Kevin
- */
-@Getter
-@AllArgsConstructor
-public enum PswModifiedEnum {
-
-    /**
-     * 未修改
-     */
-    NO("0", "未修改"),
-    /**
-     * 已修改
-     */
-    YES("1", "已修改");
-
-    private String code;
-    private String desc;
-
-}

+ 0 - 26
nb-common/src/main/java/com/nb/common/enums/UniqueEnum.java

@@ -1,26 +0,0 @@
-package com.nb.common.enums;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-/**
- * 是否唯一
- *
- * @author Kevin
- */
-@Getter
-@AllArgsConstructor
-public enum UniqueEnum {
-    /**
-     * 否
-     */
-    NO("0", "否"),
-    /**
-     * 是
-     */
-    YES("1", "是");
-
-    private String code;
-    private String desc;
-
-}

+ 1 - 1
nb-common/src/main/java/com/nb/common/notice/wechat/EnterpriseWeChatNotify.java

@@ -26,7 +26,7 @@ import org.springframework.stereotype.Component;
  * @createTime 2022年07月19日 15:21:00
  */
 @Component
-//@Profile("prod")
+@Profile("prod")
 public class EnterpriseWeChatNotify {
     @Autowired
     private DiskSpaceHealthIndicator spaceHealthIndicator;

+ 1 - 1
nb-framework/src/main/java/com/nb/framework/config/RedissonClientAutoConfiguration.java → nb-common/src/main/java/com/nb/common/redis/RedissonClientAutoConfiguration.java

@@ -3,7 +3,7 @@
 // (powered by Fernflower decompiler)
 //
 
-package com.nb.framework.config;
+package com.nb.common.redis;
 
 import org.redisson.Redisson;
 import org.redisson.api.RedissonClient;

+ 1 - 1
nb-system/src/main/java/com/nb/bus/utils/ThreadUtil.java → nb-common/src/main/java/com/nb/common/util/ThreadUtil.java

@@ -1,4 +1,4 @@
-package com.nb.bus.utils;
+package com.nb.common.util;
 
 /**
  * @author lifang

+ 1 - 1
nb-system/src/main/java/com/nb/bus/websocket/DefaultWsServerAioListener.java → nb-common/src/main/java/com/nb/common/ws/DefaultWsServerAioListener.java

@@ -1,4 +1,4 @@
-package com.nb.bus.websocket;
+package com.nb.common.ws;
 
 import com.nb.common.config.websocket.handler.WsHandler;
 import lombok.extern.slf4j.Slf4j;

+ 1 - 1
nb-system/src/main/java/com/nb/bus/websocket/HeartBeatConfig.java → nb-common/src/main/java/com/nb/common/ws/HeartBeatConfig.java

@@ -1,4 +1,4 @@
-package com.nb.bus.websocket;
+package com.nb.common.ws;
 
 import com.nb.common.config.websocket.handler.WsHandler;
 import lombok.AllArgsConstructor;

+ 1 - 1
nb-system/src/main/java/com/nb/bus/websocket/auth/IWebSocketAuthFilter.java → nb-common/src/main/java/com/nb/common/ws/IWebSocketAuthFilter.java

@@ -1,4 +1,4 @@
-package com.nb.bus.websocket.auth;
+package com.nb.common.ws;
 
 import org.tio.http.common.HttpRequest;
 import org.tio.http.common.HttpResponse;

+ 1 - 1
nb-framework/src/main/java/com/nb/framework/aspect/LogAspect.java → nb-framework/src/main/java/com/nb/framework/aop/LogAspect.java

@@ -1,4 +1,4 @@
-package com.nb.framework.aspect;
+package com.nb.framework.aop;
 
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.thread.ThreadUtil;

+ 1 - 3
nb-framework/src/main/java/com/nb/framework/config/DruidConfig.java

@@ -4,16 +4,14 @@ import cn.hutool.extra.spring.SpringUtil;
 import com.alibaba.druid.pool.DruidDataSource;
 import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
 import com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties;
-import com.alibaba.druid.support.http.StatViewServlet;
 import com.alibaba.druid.util.Utils;
 import com.nb.common.enums.DataSourceTypeEnum;
 import com.nb.framework.config.properties.DruidProperties;
-import com.nb.framework.datasource.DynamicDataSource;
+import com.nb.common.datasource.DynamicDataSource;
 import com.google.common.collect.Maps;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.boot.web.servlet.FilterRegistrationBean;
-import org.springframework.boot.web.servlet.ServletRegistrationBean;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Primary;

+ 1 - 2
nb-system/src/main/java/com/nb/aliyun/AliyunConsumerGroupService.java

@@ -5,7 +5,6 @@ import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
-import com.nb.aliyun.utils.Constants;
 import com.nb.aliyun.utils.EnumUtils;
 import com.nb.aliyun.utils.Items;
 import com.nb.bus.bean.AliIotConfig;
@@ -16,7 +15,7 @@ import com.nb.bus.enums.HospitalLogEnum;
 import com.nb.bus.listener.event.bean.DeviceInfoEvent;
 import com.nb.bus.service.LocalBusDeviceService;
 import com.nb.bus.service.LocalBusHospitalLogService;
-import com.nb.bus.websocket.listener.DeviceInfoListener;
+import com.nb.bus.listener.DeviceInfoListener;
 import com.nb.common.util.ExceptionUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;

+ 1 - 4
nb-system/src/main/java/com/nb/bus/controller/BusDeviceController.java

@@ -12,8 +12,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.nb.bus.controller.vo.DeviceBindVo;
 import com.nb.bus.entity.BusDeviceEntity;
 import com.nb.bus.enums.DeviceAlarmEnum;
-import com.nb.bus.exception.BusinessException;
-import com.nb.bus.exception.ErrorStatus;
 import com.nb.bus.service.LocalBusDeviceService;
 import com.nb.bus.service.dto.DeviceQuery;
 import com.nb.bus.service.dto.DeviceResult;
@@ -27,7 +25,6 @@ import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.*;
 
-import java.io.Serializable;
 import java.util.List;
 
 /**
@@ -113,7 +110,7 @@ public class BusDeviceController implements
         log.info("添加设备");
         // 设备id不能为空
         if (StrUtil.isEmpty(payload.getDeviceId())){
-            throw new BusinessException(ErrorStatus.DEVICEID_IS_EMPTY);
+            throw new CustomException("设备ID不能为空");
         }
         // 根据deviceId从阿里云获取设备信息。
         BusDeviceEntity device = deviceService.addDevice(payload.getDeviceId());

+ 1 - 3
nb-system/src/main/java/com/nb/bus/controller/BusStatsAnalyseController.java

@@ -3,12 +3,11 @@ package com.nb.bus.controller;
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
-import cn.hutool.json.JSONUtil;
 import com.nb.bus.enums.StatsAnalyseEnum;
 import com.nb.bus.service.dto.CombineQuery;
 import com.nb.bus.stats.CommonStats;
 import com.nb.bus.stats.entity.StatsAnalyseResult;
-import com.nb.bus.utils.ThreadUtil;
+import com.nb.common.util.ThreadUtil;
 import com.nb.common.exception.CustomException;
 import com.nb.common.exception.TenantException;
 import com.nb.common.result.R;
@@ -23,7 +22,6 @@ import java.util.Date;
 import java.util.EnumMap;
 import java.util.List;
 import java.util.Map;
-import java.util.concurrent.CompletableFuture;
 
 /**
  * @author lifang

+ 9 - 27
nb-system/src/main/java/com/nb/bus/entity/BusInfusionHistoryEntity.java

@@ -122,32 +122,14 @@ public class BusInfusionHistoryEntity extends CommonDeviceParam<String,String> {
     public static Date defaultClinicStartTime(){
         return new Date(32503654861L);
     }
-    /**
-     * @author 龙三郎
-     * 根据阿里云传回数据的items,设置输注的属性
-     * @param items
-     */
-    public void setFiledsByItems(Items items) {
-        this.setClassification( items.getString(PumpParams.classification));
-        this.setDataNumber(items.getInteger(PumpParams.dataNumber));
-        this.setPatientCode( items.getString(PumpParams.patientCode));
-        this.setWard(items.getString(PumpParams.ward));
-        this.setBedNo(items.getString(PumpParams.bedNo));
-        this.setTotalDose( items.getInteger(PumpParams.totalDose));
-        this.setInputDose(items.getBigDecimal(PumpParams.finishedDose));
-        this.setFirstDose( items.getInteger(PumpParams.firstDosis));
-        this.setMaxDose(items.getBigDecimal(PumpParams.maxDose));
-//        this.setAppendLockTime(items.getBigDecimal(PumpParams.lockTime));
-        this.setSelfControlLockTime(items.getBigDecimal(PumpParams.lockTime));
-        this.setContinueDose(items.getBigDecimal(PumpParams.flow));
-        this.setType( DeviceTypeUtils.getDeviceType(items.getInteger(PumpParams.pumpType)));
-        this.setAppendDose(items.getBigDecimal(PumpParams.singleDosis));
-        this.setPcaValidCount(items.getInteger(PumpParams.pcaValid));
-        this.setPcaInvalidCount(items.getInteger(PumpParams.pcaInvalid));
-        this.setPcaTotalCount(this.getPcaInvalidCount()+this.getPcaValidCount());
-        this.setElectricQuantity(items.getInteger(PumpParams.electricQuantity));
-        this.setRunState(DeviceRunStatusUtils.getRunStatus(items.getInteger(PumpParams.runStatus)));
-        this.setAlarm(DeviceAlarmUtils.getAlarm(items.getInteger(PumpParams.alarmStatus)));
-        // 预报
+
+    public BusDeviceRunningEntity toRunningEntity(){
+        BusDeviceRunningEntity entity = new BusDeviceRunningEntity();
+        BeanUtil.copyProperties(this,entity);
+        entity.setClinicId(this.getClinicId());
+        entity.setStartTime(this.getStartTime());
+        entity.setPatientId(this.getPatientId());
+        entity.setUploadTime(this.getLastUploadTime());
+        return entity;
     }
 }

+ 1 - 1
nb-system/src/main/java/com/nb/bus/entity/BusInfusionModifyEntity.java

@@ -91,7 +91,7 @@ public class BusInfusionModifyEntity extends TenantGenericEntity<String,String>
     private BigDecimal maxDose;
 
     @ApiModelProperty(value = "公共参数-自控锁时",accessMode = ApiModelProperty.AccessMode.READ_ONLY)
-    private Integer selfControlLockTime;
+    private BigDecimal selfControlLockTime;
 
 //    @ApiModelProperty(value = "公共参数-自控次数",accessMode = ApiModelProperty.AccessMode.READ_ONLY)
 //    private Integer selfControlCount;

+ 0 - 31
nb-system/src/main/java/com/nb/bus/enums/AppEnum.java

@@ -1,31 +0,0 @@
-package com.nb.bus.enums;
-
-import com.baomidou.mybatisplus.annotation.IEnum;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-/**
- * @author lifang
- * @version 1.0.0
- * @ClassName AppEnum.java
- * @Description TODO
- * @createTime 2022年07月01日 09:51:00
- */
-@AllArgsConstructor
-@JsonFormat(shape = JsonFormat.Shape.OBJECT)
-public enum AppEnum implements IEnum<Integer> {
-
-
-    android(1,"安卓安装包"),
-    apple(2,"苹果安装包"),
-    pad(3,"安卓平板安装包")
-    ;
-    @Getter
-    @ApiModelProperty("报警编码")
-    private Integer value;
-    @Getter
-    @ApiModelProperty("报警内容")
-    private String text;
-}

+ 0 - 33
nb-system/src/main/java/com/nb/bus/exception/BusinessException.java

@@ -1,33 +0,0 @@
-package com.nb.bus.exception;
-
-import lombok.Data;
-
-/**
- * @Author 龙三郎
- * @Date 2022-05-06 10:03:58
- * @Version 1.0
- * @Description 业务异常
- */
-@Data
-public class BusinessException extends RuntimeException {
-    static final long serialVersionUID = -7034897190745766940L;
-
-    private Integer code;
-
-    public BusinessException(ErrorStatus errorStatus){
-        super(errorStatus.getMessage());
-        this.code = errorStatus.getCode();
-    }
-
-    public BusinessException(Integer code, String message){
-        super(message);
-        this.code = code;
-    }
-
-    public BusinessException(ErrorStatus errorStatus, String message){
-        super(message);
-        this.code = errorStatus.getCode();
-    }
-
-
-}

+ 0 - 80
nb-system/src/main/java/com/nb/bus/exception/ErrorStatus.java

@@ -1,80 +0,0 @@
-package com.nb.bus.exception;
-
-
-/**
- * @Author 龙三郎
- * @Date 2022-05-06 10:17:13
- * @Version 1.0
- * @Description 错误状态码
- */
-public enum ErrorStatus {
-    DEVICE_NOT_EXISTS(100,"设备不存在"),
-    DEVICEID_IS_EMPTY(101,"设备ID不能为空"),
-    DEVICE_NOT_MAPPING_HOSPITAL(102,"设备没有映射医院"),
-    DEVICE_NOT_MAPPING_PRODUCT(103,"设备没有映射产品"),
-    RAWPATIENTCODE_IS_EMPTY(104,"住院号不能为空"),
-    PATIENT_NOT_EXISTS(105,"患者不存在"),
-    AUTO_CREATE_CLINIC_FAILURE(106,"自动创建临床失败"),
-    CLASSIFICATION_NOT_EMPTY(107,"数据分类标识不能为空"),
-    DATANUMBER_NOT_EMPTY(108,"数据编号不能为空"),
-    AUTO_CREATE_DEVICEUSE_FAILURE(109,"自动创建设备使用失败"),
-    STATUS_NOT_EMPTY(110,"状态不能为空"),
-    DATATYPE_NOT_EMPTY(111,"数据类型不能为空"),
-    PLATFORMCODE_IS_EMPTY(112,"平台编号不能为空"),
-    PLATFORM_NOT_EXISTS(113,"平台不存在"),
-    PRODUCTCODE_IS_EMPTY(114,"产品编号不能为空"),
-    PRODUCTNAME_IS_EMPTY(115,"产品名称不能为空"),
-    PRODUCT_HAD_EXISTS(116,"产品已经存在"),
-    PRODUCT_NOT_EXISTS(117,"产品不存在"),
-    OBJECT_CHANGE_EXCEPTION(118,"对象转换异常"),
-    CLINIC_HAD_EXISTS(119,"患者正在治疗中"),
-    DEVICENAME_IS_EMPTY(120,"设备名称不能为空"),
-    HOSPITALCODE_IS_EMPTY(121,"医院编号不能为空"),
-    DEVICE_HAD_EXISTS(122,"设备已经存在"),
-    HOSPITAL_NOT_EXISTS(123,"医院不存在"),
-    PATIENT_HAD_EXISTS(124,"患者已经存在"),
-    USERNAME_IS_EMPTY(125,"用户名不能为空"),
-    ROLE_NOT_EXISTS(126,"角色不存在"),
-    REPASSWORD_NOT_EQUALS(127,"两次密码不一致"),
-    PLATFORMPRODUCTCODE_IS_EMPTY(128,"平台产品编号不能为空"),
-    PLATFORMPRODUCT_NOT_EXISTS(129,"平台产品不存在"),
-    AUTO_CREATE_PATIENT_FAILURE(130,"自动创建患者失败"),
-    RAWDATA_IS_EMPTY(131,"原始数据不能为空"),
-    DATA_CHANGE_FAILURE(132,"数据转换失败"),
-    PATIENTCODE_IS_EMPTY(133,"患者编号不能为空"),
-    MENU_IS_EXISTS(134,"菜单已经存在,或菜单编号重复"),
-    PARENTMENU_NOT_EXISTS(135,"上级菜单不存在"),
-    MENUCODE_IS_EMPTY(136,"菜单编号不能为空"),
-    MENUNAME_IS_EMPTY(137,"菜单名称不能为空"),
-    PATIENTCODEANDRAWPATIENTCODE_IS_EMPTY_TOGETHER(138,"患者编号和住院号不能同时为空"),
-    PLATFORM_ACCOUNT_NOT_EXISTS(139,"平台账号不存在"),
-    DEVICE_REGISTER_FAILURE(140,"向平台注册设备失败"),
-    DEVICE_AMOUNT_NOT_NULL(141,"设备数量不能为空"),
-    TUORENPLATDATA_ANALY_ERROR(142,"驼人平台数据解析错误"),
-    CLINICCODE_NOT_EMPTY(143,"临床编号不能为空"),
-    CLINIC_NOT_EMPTY(144,"临床不存在"),
-
-    NONE(1000,"没有错误");
-
-    private Integer code;
-    private String message;
-
-    public Integer getCode() {
-        return code;
-    }
-    public void setCode(Integer code) {
-        this.code = code;
-    }
-    public String getMessage() {
-        return message;
-    }
-    public void setMessage(String message) {
-        this.message = message;
-    }
-    ErrorStatus(Integer code, String message){
-        this.code = code;
-        this.message = message;
-    }
-
-
-}

+ 19 - 7
nb-system/src/main/java/com/nb/bus/websocket/listener/DeviceInfoListener.java → nb-system/src/main/java/com/nb/bus/listener/DeviceInfoListener.java

@@ -1,4 +1,4 @@
-package com.nb.bus.websocket.listener;
+package com.nb.bus.listener;
 
 import cn.hutool.core.comparator.CompareUtil;
 import cn.hutool.core.map.MapUtil;
@@ -94,12 +94,14 @@ public class DeviceInfoListener {
                 throw new RuntimeException("设备数据中分包标识不能为空");
             }
             long startTime = System.currentTimeMillis();
-
-            //对设备数据的一些参数进行初始化设置
-            init(device);
-
             String deviceId = device.getDeviceId();
             DeviceOperator deviceOperator = deviceRegistry.getOperator(deviceId);
+            //对设备数据的一些参数进行初始化设置
+
+            init(device,deviceOperator);
+
+
+
             //缓存操作
             List<Supplier<?>> cacheOperation=new ArrayList<>();
 
@@ -221,8 +223,13 @@ public class DeviceInfoListener {
                 }
             }
             cacheOperation.add(()->{
-                //开机包不进行计算
                 deviceOperator.setContinueDose(device.getContinueDose());
+                if(FlowStatusEnum.Down.equals(device.getWarnFlow())){
+                    deviceOperator.setFlowLimit(false);
+                }
+                if(FlowStatusEnum.Limited.equals(device.getWarnFlow())){
+                    deviceOperator.setFlowLimit(true);
+                }
                 return null;
             });
         }else {
@@ -234,7 +241,12 @@ public class DeviceInfoListener {
         }
     }
 
-    private void init(BusDeviceRunningEntity device) {
+    private void init(BusDeviceRunningEntity device,DeviceOperator deviceOperator ) {
+        if(ObjectUtil.equal(DeviceTypeEnum.intelligent,device.getType())){
+            if (deviceOperator.isFlowLimit()) {
+                device.setWarnFlow(FlowStatusEnum.Limited);
+            }
+        }
         if(device.getWarnFlow()!=null&&FlowStatusEnum.None.equals(device.getWarnFlow())){
             device.setWarnFlow(null);
         }

+ 1 - 1
nb-system/src/main/java/com/nb/bus/websocket/listener/HisInfoListener.java → nb-system/src/main/java/com/nb/bus/listener/HisInfoListener.java

@@ -1,4 +1,4 @@
-package com.nb.bus.websocket.listener;
+package com.nb.bus.listener;
 
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.json.JSONUtil;

+ 0 - 34
nb-system/src/main/java/com/nb/bus/listener/event/bean/DeviceAlarmEvent.java

@@ -1,34 +0,0 @@
-package com.nb.bus.listener.event.bean;
-
-import com.nb.bus.entity.BusDeviceAlarmEntity;
-import lombok.Getter;
-import org.springframework.context.ApplicationEvent;
-
-import java.time.Clock;
-
-/**
- * @author lifang
- * @version 1.0.0
- * @ClassName DeviceAlarmEvent.java
- * @Description 监听设备报警事件
- * @createTime 2022年03月21日 16:44:00
- */
-
-@Getter
-public class DeviceAlarmEvent extends ApplicationEvent {
-
-    private final BusDeviceAlarmEntity content;
-    private final String historyId;
-
-    public DeviceAlarmEvent(Object source, BusDeviceAlarmEntity content,String historyId) {
-        super(source);
-        this.content=content;
-        this.historyId=historyId;
-    }
-
-    public DeviceAlarmEvent(Object source, BusDeviceAlarmEntity content ,String historyId,Clock clock) {
-        super(source, clock);
-        this.content=content;
-        this.historyId=historyId;
-    }
-}

+ 0 - 28
nb-system/src/main/java/com/nb/bus/listener/event/bean/DeviceLifecycleEvent.java

@@ -1,28 +0,0 @@
-package com.nb.bus.listener.event.bean;
-
-import lombok.Getter;
-import org.springframework.context.ApplicationEvent;
-
-/**
- * @author lifang
- * @version 1.0.0
- * @ClassName DeviceLifecycleEvent.java
- * @Description 设备上/下线事件
- * @createTime 2022年05月19日 15:27:00
- */
-
-public class DeviceLifecycleEvent extends ApplicationEvent {
-    @Getter
-    private final String deviceId;
-
-    /*
-     * 设备是否上线
-     */
-    @Getter
-    private final boolean online;
-    public DeviceLifecycleEvent(Object source,String deviceId,boolean online) {
-        super(source);
-        this.deviceId=deviceId;
-        this.online=online;
-    }
-}

+ 0 - 21
nb-system/src/main/java/com/nb/bus/listener/event/infusion/InfusionCreateEvent.java

@@ -1,21 +0,0 @@
-package com.nb.bus.listener.event.infusion;
-
-import com.nb.bus.entity.BusInfusionHistoryEntity;
-import lombok.Getter;
-import org.springframework.context.ApplicationEvent;
-
-/**
- * @Author 龙三郎
- * @Date 2022-04-26 14:42:27
- * @Version 1.0
- * @Description 输注开始事件,当泵刚开机时,会创建一个新的输注,此时会发布该事件。用途,临床管理模块可以监听该事件,去为该输注,获取临床数据
- */
-@Getter
-public class InfusionCreateEvent extends ApplicationEvent {
-    private BusInfusionHistoryEntity infusion;
-
-    public InfusionCreateEvent(Object source,BusInfusionHistoryEntity infusion) {
-        super(source);
-        this.infusion = infusion;
-    }
-}

+ 0 - 21
nb-system/src/main/java/com/nb/bus/listener/event/infusion/InfusionUpdateEvent.java

@@ -1,21 +0,0 @@
-package com.nb.bus.listener.event.infusion;
-
-import com.nb.bus.entity.BusInfusionHistoryEntity;
-import lombok.Getter;
-import org.springframework.context.ApplicationEvent;
-
-/**
- * @Author 龙三郎
- * @Date 2022-04-26 14:42:27
- * @Version 1.0
- * @Description 网络泵发送数据的时候,输注管理模块会将最新的输注信息发布。输注监护模块可以订阅该事件,将数据推送到界面。
- */
-@Getter
-public class InfusionUpdateEvent extends ApplicationEvent {
-    private BusInfusionHistoryEntity infusion;
-
-    public InfusionUpdateEvent(Object source, BusInfusionHistoryEntity infusion) {
-        super(source);
-        this.infusion = infusion;
-    }
-}

+ 2 - 2
nb-system/src/main/java/com/nb/bus/registry/constant/DeviceKeyConstant.java

@@ -21,8 +21,6 @@ public class DeviceKeyConstant {
 
     public static final String CLASSIFY="classification";
 
-    public static final String ALARM="alarm";
-
     public static final String INFUSION_ID="infusion_id";
 
     public static final String INFUSION_PARAM="infusion_param";
@@ -38,4 +36,6 @@ public class DeviceKeyConstant {
     public static final String UPLOAD="upload";
 
     public static final String NON_INFUSION_TIME="non_infusion_time";
+
+    public static final String IS_FLOW_LIMIT="is_flow_limit";
 }

+ 22 - 0
nb-system/src/main/java/com/nb/bus/registry/device/ClusterDeviceOperator.java

@@ -1,12 +1,14 @@
 package com.nb.bus.registry.device;
 
 
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.extra.spring.SpringUtil;
 import com.nb.bus.entity.BusDeviceAlarmEntity;
 import com.nb.bus.entity.BusDeviceEntity;
 import com.nb.bus.entity.BusInfusionHistoryEntity;
 import com.nb.bus.entity.BusInfusionModifyEntity;
 import com.nb.bus.enums.DeviceTypeEnum;
+import com.nb.bus.enums.FlowStatusEnum;
 import com.nb.bus.registry.constant.DeviceKeyConstant;
 import com.nb.bus.service.LocalBusDeviceService;
 import com.nb.bus.service.LocalBusInfusionHistoryService;
@@ -334,6 +336,26 @@ public class ClusterDeviceOperator implements DeviceOperator {
         put(DeviceKeyConstant.NON_INFUSION_TIME,wrapperValue(nonLowInfusionTime));
     }
 
+    @Override
+    public boolean isFlowLimit() {
+        Value value = getValue(DeviceKeyConstant.APPEND_DOSE);
+        if(value==null){
+            BusInfusionHistoryEntity lastInfusion = getLastInfusion();
+            if(lastInfusion==null){
+                value=Value.simple(false);
+            }else {
+                value=Value.simple(ObjectUtil.equal(lastInfusion.getWarnFlow(), FlowStatusEnum.Limited));
+            }
+            setFlowLimit(lastInfusion!=null&&ObjectUtil.equal(lastInfusion.getWarnFlow(), FlowStatusEnum.Limited));
+        }
+        return Boolean.TRUE.equals(value.as(Boolean.class));
+    }
+
+    @Override
+    public void setFlowLimit(boolean flowLimit) {
+        put(DeviceKeyConstant.IS_FLOW_LIMIT,wrapperValue(flowLimit));
+    }
+
     @Override
     public void clear() {
         mapCache.clear();

+ 14 - 0
nb-system/src/main/java/com/nb/bus/registry/device/DeviceOperator.java

@@ -202,5 +202,19 @@ public interface DeviceOperator extends Operator {
      */
     void setNonLowInfusionTime(Date nonLowInfusionTime);
 
+
+    /**
+     * 设备是否加档受限
+     * @return
+     */
+    boolean isFlowLimit();
+
+
+    /**
+     * 设备是否加档受限
+     * @param flowLimit
+     */
+    void setFlowLimit(boolean flowLimit);
+
     void clear();
 }

+ 0 - 62
nb-system/src/main/java/com/nb/bus/service/LocalBusInfusionHistoryService.java

@@ -4,17 +4,11 @@ import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import cn.hutool.extra.spring.SpringUtil;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.nb.aliyun.utils.Constants;
-import com.nb.aliyun.utils.Items;
-import com.nb.aliyun.utils.PumpParams;
 import com.nb.bus.entity.*;
 import com.nb.bus.enums.PatientAlarmEnum;
-import com.nb.bus.listener.event.infusion.InfusionCreateEvent;
-import com.nb.bus.listener.event.infusion.InfusionUpdateEvent;
 import com.nb.bus.mapper.BusInfusionHistoryMapper;
 import com.nb.bus.registry.device.DeviceOperator;
 import com.nb.bus.registry.device.DeviceRegistry;
@@ -81,62 +75,6 @@ public class LocalBusInfusionHistoryService extends BaseService<BusInfusionHisto
 
     }
 
-    /**
-     * @author 龙三郎
-     * 保存输注
-     * 处理输注数据
-     * @param deviceId
-     * @param items
-     * @return
-     */
-    public BusInfusionHistoryEntity saveInfusion(String deviceId, Items items) {
-
-        // 第一步:判断设备是否存在
-        BusDeviceEntity device = deviceService.getByDeviceId(deviceId);
-        if (Objects.isNull(device)){
-            // 设备不存在,抛个异常
-            throw new RuntimeException("设备不存在");
-        }
-        // 第二步:判断输注是否存在,处理输注
-        // 根据deviceId和分类标识查询输注
-        String classification = items.getString(PumpParams.classification);
-        BusInfusionHistoryEntity infusion = getOneByDeviceIdAndClassification(deviceId,classification);
-        // 输注是否存在
-        boolean infusionIsExists = Objects.nonNull(infusion);
-        if (!infusionIsExists){
-            // 输注不存在
-            infusion = new BusInfusionHistoryEntity();
-            infusion.setDeviceId(deviceId);
-            infusion.setCreateBy(Constants.DefaultCreateBy);
-            infusion.setUpdateBy(Constants.DefaultUpdateBy);
-            // 给输注设置租户id
-            infusion.setTenantId(device.getTenantId());
-            // 根据阿里云发送的数据更新输注对象。
-            infusion.setFiledsByItems(items);
-            // 根据住院号和医院获取一个患者
-            BusPatientEntity patient = patientService.getOneByHospitalAndPatientCode(device.getTenantId(),items.getString(PumpParams.patientCode));
-            infusion.setPatientId(patient.getId());
-            // 添加一个输注
-            this.save(infusion);
-        }else {
-            // 更新输注数据。
-            infusion.setFiledsByItems(items);
-            this.updateById(infusion);
-        }
-
-
-        // 输注不存在,创建新的输注的时候,需要去请求临床数据
-        if (!infusionIsExists){
-            // 发布输注创建事件,临床管理模块需要订阅该事件,去获取临床数据
-            // 输注监护功能订阅该事件
-            SpringUtil.publishEvent(new InfusionCreateEvent(this,infusion));
-        }else {
-            // 输注数据更新事件
-            SpringUtil.publishEvent(new InfusionUpdateEvent(this,infusion));
-        }
-        return infusion;
-    }
-
     /**
      * @author 龙三郎
      * 根据分类标识和设备号获取输注

+ 17 - 0
nb-system/src/main/java/com/nb/bus/service/LocalBusPatientService.java

@@ -3,6 +3,7 @@ package com.nb.bus.service;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.date.LocalDateTimeUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -27,6 +28,7 @@ import com.nb.common.result.R;
 import com.nb.common.util.ExceptionUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.AutoConfigureAfter;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -77,6 +79,7 @@ public class LocalBusPatientService extends BaseService<BusPatientMapper, BusPat
     @Lazy
     private LocalBusHospitalService hospitalService;
 
+
     private ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
 
     @Override
@@ -388,7 +391,13 @@ public class LocalBusPatientService extends BaseService<BusPatientMapper, BusPat
         shiftConfig.setPatientId(patient.getId());
         PatientOperator patientOperator = patientRegistry.getOperator(shiftConfig.getTenantId(), shiftConfig.getPatientCode());
 
+        //之前的主输注
+        String originInfusionId = patient.getInfusionId();
+        //现在的主输注
         String masterDeviceId = shiftConfig.getMasterDeviceId();
+        if(ObjectUtil.equal(originInfusionId,masterDeviceId)){
+            return;
+        }
 
         BusInfusionHistoryEntity masterInfusion = infusionHistoryService.lastInfusion(masterDeviceId);
 
@@ -399,6 +408,14 @@ public class LocalBusPatientService extends BaseService<BusPatientMapper, BusPat
                 .set(BusPatientEntity::getInfusionId, masterInfusion.getId()));
 
         patientOperator.setBindDeviceId(shiftConfig.getMasterDeviceId());
+
+        BusInfusionHistoryEntity originMasterInfusion = infusionHistoryService.getById(originInfusionId);
+
+        hospitalManagerRegister.get(shiftConfig.getTenantId())
+                .getAutoUndoConfigHandler().handler(masterInfusion.toRunningEntity());
+
+        hospitalManagerRegister.get(shiftConfig.getTenantId())
+                .getAutoUndoConfigHandler().handler(originMasterInfusion.toRunningEntity());
     }
 
     public BusPatientEntity findByFormatCode(String patientCode, String tenantId) {

+ 1 - 1
nb-system/src/main/java/com/nb/bus/service/dto/CombineHistoryResult.java

@@ -44,7 +44,7 @@ public class CombineHistoryResult extends CombineResult {
     private BigDecimal appendDose;
 
     @ApiModelProperty(value = "公共参数-自控锁时",accessMode = ApiModelProperty.AccessMode.READ_ONLY)
-    private Integer selfControlLockTime;
+    private BigDecimal selfControlLockTime;
 
     @ApiModelProperty(value = "公共-此次输注过程中到此为止的总追加量")
     private BigDecimal totalAppendDose;

+ 1 - 2
nb-system/src/main/java/com/nb/bus/stats/analyse/AlarmStatsAnalyse.java

@@ -11,7 +11,7 @@ import com.nb.bus.service.dto.CombineQuery;
 import com.nb.bus.stats.CommonStats;
 import com.nb.bus.stats.entity.*;
 import com.nb.bus.stats.enums.PieEnum;
-import com.nb.bus.utils.ThreadUtil;
+import com.nb.common.util.ThreadUtil;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import org.springframework.stereotype.Service;
@@ -19,7 +19,6 @@ import org.springframework.stereotype.Service;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.*;
-import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
 /**

+ 2 - 2
nb-system/src/main/java/com/nb/bus/stats/analyse/InfusionDoseStatsAnalyse.java

@@ -72,11 +72,11 @@ public class InfusionDoseStatsAnalyse implements CommonHistoryStats {
         handleMixPolyLines(groupByTime,result,
                 combineResult -> {
                     if (combineResult.getSelfControlLockTime() == null) {
-                        combineResult.setSelfControlLockTime(0);
+                        combineResult.setSelfControlLockTime(BigDecimal.ZERO);
                     }
                 },
                 ignore->true,
-                combineResult -> BigDecimal.valueOf(combineResult.getSelfControlLockTime()));
+                CombineHistoryResult::getSelfControlLockTime);
         return result;
     }
 

+ 1 - 1
nb-system/src/main/java/com/nb/bus/websocket/DefaultWebSocketMsgHandler.java

@@ -6,7 +6,7 @@ import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.json.JSONUtil;
 import com.nb.bus.hospital.HospitalManagerRegister;
 import com.nb.bus.hospital.his.HisResponse;
-import com.nb.bus.websocket.auth.IWebSocketAuthFilter;
+import com.nb.common.ws.IWebSocketAuthFilter;
 import com.nb.common.Constants;
 import com.nb.common.config.websocket.HospitalCodeCheck;
 import com.nb.common.config.websocket.MessagingRequest;

+ 0 - 81
nb-system/src/main/java/com/nb/bus/websocket/HisConnectionHandler.java

@@ -1,81 +0,0 @@
-//package com.nb.bus.websocket;
-//
-//import cn.hutool.core.collection.CollectionUtil;
-//import cn.hutool.json.JSONUtil;
-//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-//import com.nb.bus.entity.BusHospitalEntity;
-//import com.nb.bus.hospital.his.HisScriptSession;
-//import com.nb.bus.hospital.his.HisScriptSessionManager;
-//import com.nb.bus.service.LocalBusHospitalService;
-//import com.nb.common.config.websocket.MessagingRequest;
-//import com.nb.common.config.websocket.WebSocketConstant;
-//import com.nb.common.config.websocket.handler.Subscribe;
-//import com.nb.common.result.R;
-//import lombok.AllArgsConstructor;
-//import org.springframework.stereotype.Component;
-//import org.tio.core.ChannelContext;
-//import org.tio.core.Tio;
-//import org.tio.websocket.common.WsResponse;
-//
-//import java.util.List;
-//import java.util.concurrent.Executors;
-//import java.util.concurrent.ScheduledExecutorService;
-//import java.util.concurrent.TimeUnit;
-//
-///**
-// * @author lifang
-// * @version 1.0.0
-// * @ClassName DeviceRepeatHandler.java
-// * @Description his脚本连接通道
-// * @createTime 2022年03月25日 14:21:00
-// */
-//@Component
-//@AllArgsConstructor
-//public class HisConnectionHandler extends Subscribe {
-//    private final HisScriptSessionManager scriptSessionManager;
-//    private final LocalBusHospitalService hospitalService;
-//    private static ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
-//    @Override
-//    public String getId() {
-//        return WebSocketConstant.HIS_CONNECTION;
-//    }
-//
-//    @Override
-//    public void onMessage(MessagingRequest message, ChannelContext channelContext) {
-//        //医院his脚本逻辑单独处理
-//        String tenantId = message.getTenantId();
-//        boolean close=false;
-//        if(!"-1".equals(tenantId)){
-//            Tio.send(channelContext, WsResponse.fromText(JSONUtil.toJsonStr(R.fail("连接参数错误,拒绝处理")),"utf-8"));
-//            close=true;
-//        }
-//        List<String> params = message.getParams();
-//        if (!close&&CollectionUtil.isEmpty(params)) {
-//            Tio.send(channelContext, WsResponse.fromText(JSONUtil.toJsonStr(R.fail("连接参数为空,拒绝处理")),"utf-8"));
-//            close=true;
-//        }
-//        BusHospitalEntity hospital = hospitalService.getOne(new QueryWrapper<BusHospitalEntity>().lambda().eq(BusHospitalEntity::getCode, params.get(0)));
-//        if(!close&&hospital==null){
-//            Tio.send(channelContext, WsResponse.fromText(JSONUtil.toJsonStr(R.fail(String.format("医院编码[{%s}]不存在,拒绝处理",params.get(0)))),"utf-8"));
-//            close=true;
-//        }
-//        if(close){
-//            executorService.schedule(()->  Tio.close(channelContext,"连接参数错误【"+JSONUtil.toJsonStr(message)+"】"),2, TimeUnit.SECONDS);
-//            return ;
-//        }
-//        channelContext.set("tenantId",hospital.getId());
-//        HisScriptSession hisScriptSession = scriptSessionManager.get(hospital.getId());
-//        //绑定
-//        hisScriptSession.bindChannel(channelContext);
-//    }
-//
-//    @Override
-//    public void close(ChannelContext channelContext) {
-//
-//    }
-//
-//    @Override
-//    public boolean needParam() {
-//        return false;
-//    }
-//}

+ 1 - 0
nb-system/src/main/java/com/nb/bus/websocket/auth/HospitalAuthFilter.java

@@ -5,6 +5,7 @@ import com.nb.bus.hospital.HospitalManagerRegister;
 import com.nb.bus.hospital.his.HisScriptSession;
 import com.nb.common.Constants;
 import com.nb.common.config.websocket.HospitalCodeCheck;
+import com.nb.common.ws.IWebSocketAuthFilter;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;

+ 2 - 1
nb-system/src/main/java/com/nb/bus/websocket/auth/UserAuthFilter.java

@@ -4,6 +4,7 @@ import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.json.JSONUtil;
 import com.nb.common.Constants;
 import com.nb.common.bo.LoginUser;
+import com.nb.common.ws.IWebSocketAuthFilter;
 import org.springframework.stereotype.Component;
 import org.tio.core.Tio;
 import org.tio.http.common.HttpRequest;
@@ -18,7 +19,7 @@ import org.tio.core.ChannelContext;
  * @createTime 2022年07月18日 10:08:00
  */
 @Component
-public class UserAuthFilter implements IWebSocketAuthFilter{
+public class UserAuthFilter implements IWebSocketAuthFilter {
     @Override
     public boolean auth(HttpRequest httpRequest, HttpResponse httpResponse, ChannelContext channelContext) {
         String authorization = httpRequest.getParam("Authorization");