Jelajahi Sumber

add 输注记录针对时间统计

A17404李放 3 tahun lalu
induk
melakukan
5ae7af2cb6

+ 12 - 3
coffee-system/src/main/java/com/coffee/bus/controller/BusPatientController.java

@@ -214,13 +214,22 @@ public class BusPatientController  {
         return R.success(result);
     }
 
-    @PostMapping("/stats")
+    @PostMapping("/stats/status")
     @SaCheckPermission("device:patient:query")
-    @ApiOperation(value = "病人监控当前状态统计",notes = "权限【device:patient:query】")
-    public R<DeviceStatusStatsCountResult> stats(){
+    @ApiOperation(value = "按照状态统计病人监控状态数量",notes = "权限【device:patient:query】")
+    public R<MonitorStatusStatsCountResult> statsStatus(){
         return R.success(patientService.statusStats(null));
     }
 
+
+    @PostMapping("/stats/status")
+    @SaCheckPermission("device:patient:query")
+    @ApiOperation(value = "按照时间统计病人监控数量",notes = "权限【device:patient:query】")
+    public R<MonitorTimeStatsCountResult> statsTime(){
+        return R.success(patientService.timeStats(null));
+    }
+
+
     //todo 使用
     @PostMapping("/syn/{hospitalId}/{patientCode}")
     @ApiOperation(value = "同步更新患者信息,即等待更新完成后返回更新结果")

+ 0 - 5
coffee-system/src/main/java/com/coffee/bus/service/LocalBusDeviceRunningService.java

@@ -1,19 +1,15 @@
 package com.coffee.bus.service;
 
 import cn.hutool.core.collection.CollectionUtil;
-import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.coffee.bus.entity.BusPatientEntity;
-import com.coffee.bus.enums.DeviceAlarmEnum;
-import com.coffee.bus.enums.DeviceStatusEnum;
 import com.coffee.bus.registry.device.DeviceOperator;
 import com.coffee.bus.registry.device.DeviceRegistry;
 import com.coffee.bus.registry.device.bean.DeviceCacheInfo;
 import com.coffee.bus.registry.patient.PatientOperator;
 import com.coffee.bus.registry.patient.PatientRegistry;
 import com.coffee.bus.registry.patient.bean.PatientCacheInfo;
-import com.coffee.bus.service.dto.DeviceStatusStatsCountResult;
 import com.coffee.bus.service.dto.UndoDeviceConfig;
 import com.coffee.bus.service.dto.DeviceShiftConfig;
 import com.coffee.bus.service.dto.ManualUndoConfig;
@@ -22,7 +18,6 @@ import com.coffee.bus.entity.BusDeviceRunningEntity;
 import com.coffee.bus.entity.BusInfusionHistoryEntity;
 import com.coffee.bus.mapper.BusDeviceRunningMapper;
 import com.coffee.common.crud.BaseService;
-import com.coffee.common.exception.CustomException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;

+ 64 - 4
coffee-system/src/main/java/com/coffee/bus/service/LocalBusPatientService.java

@@ -1,12 +1,13 @@
 package com.coffee.bus.service;
 
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.date.LocalDateTimeUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.coffee.bus.entity.BusClinicEntity;
-import com.coffee.bus.entity.BusDeviceRunningEntity;
 import com.coffee.bus.entity.BusPatientEntity;
 import com.coffee.bus.entity.PatientDeviceRepeatDomain;
 import com.coffee.bus.enums.DeviceAlarmEnum;
@@ -24,6 +25,7 @@ import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.time.LocalDateTime;
 import java.util.*;
 
 /**
@@ -189,13 +191,13 @@ public class LocalBusPatientService extends BaseService<BusPatientMapper, BusPat
      * @author lifang
      * @date 2022/5/8 21:52
      * @param tenantId 医院id 用户请求时传输null
-     * @return DeviceStatusStatsCountResult
+     * @return MonitorStatusStatsCountResult
      */
-    public DeviceStatusStatsCountResult statusStats(String tenantId) {
+    public MonitorStatusStatsCountResult statusStats(String tenantId) {
         PatientMonitorQuery query = new PatientMonitorQuery();
         query.setTenantId(tenantId);
         List<PatientMonitorResult> patientMonitorResults = this.selectAll(query);
-        DeviceStatusStatsCountResult result = new DeviceStatusStatsCountResult();
+        MonitorStatusStatsCountResult result = new MonitorStatusStatsCountResult();
         if(CollectionUtil.isNotEmpty(patientMonitorResults)){
             patientMonitorResults.forEach(monitor->{
                 //运行数量
@@ -218,4 +220,62 @@ public class LocalBusPatientService extends BaseService<BusPatientMapper, BusPat
         }
         return result;
     }
+
+    /**
+     * 描述: 按照时间对输注监控进行统计
+     * @author lifang
+     * @date 2022/5/8 22:40
+     * @param tenantId 医院id
+     * @return MonitorTimeStatsCountResult
+     */
+    public MonitorTimeStatsCountResult timeStats(String tenantId) {
+        PatientMonitorQuery query = new PatientMonitorQuery();
+        query.setTenantId(tenantId);
+        List<PatientMonitorResult> patientMonitorResults = this.selectAll(query);
+        MonitorTimeStatsCountResult result = new MonitorTimeStatsCountResult();
+        patientMonitorResults.forEach(monitor->{
+            Date startTime = monitor.getMonitorStartTime();
+            if(startTime==null){
+                return;
+            }
+            if (includeTimes(startTime, 0)) {
+                result.setToday(result.getToday()+1);
+                return;
+            }
+            if (includeTimes(startTime, 1)) {
+                result.setOneDay(result.getOneDay()+1);
+                return;
+            }
+            if (includeTimes(startTime, 2)) {
+                result.setTwoDay(result.getTwoDay()+1);
+                return;
+            }
+            if (includeTimes(startTime, 3)) {
+                result.setThreeDay(result.getThreeDay()+1);
+                return;
+            }
+            result.setBeyondThreeDay(result.getBeyondThreeDay()+1);
+        });
+
+        return result;
+    }
+
+    /**
+     * 描述: 判断所给时间是否在存在于某一时间段内
+     * @author lifang
+     * @date 2022/5/8 22:47
+     * @param time 时间
+     * @param offset 时间偏移量,单位:天 以当天时间为基准进行偏移
+     * @return boolean
+     */
+    private boolean includeTimes(Date time,int offset){
+        if(time==null){
+            return false;
+        }
+        LocalDateTime dateTime = LocalDateTime.now().plusDays(offset);
+        LocalDateTime beginTime = LocalDateTimeUtil.beginOfDay(dateTime);
+        LocalDateTime endTime = LocalDateTimeUtil.endOfDay(dateTime);
+        return beginTime.getSecond()<time.getSeconds()
+                && time.getSeconds()<endTime.getSecond();
+    }
 }

+ 4 - 4
coffee-system/src/main/java/com/coffee/bus/service/dto/DeviceStatusStatsCountResult.java → coffee-system/src/main/java/com/coffee/bus/service/dto/MonitorStatusStatsCountResult.java

@@ -7,13 +7,13 @@ import lombok.Data;
 /**
  * @author lifang
  * @version 1.0.0
- * @ClassName DeviceStatusStatsCountResult.java
- * @Description 设备状态数量统计结果
+ * @ClassName MonitorStatusStatsCountResult.java
+ * @Description 监控状态数量统计结果
  * @createTime 2022年05月08日 18:21:00
  */
-@ApiModel("设备状态数量统计结果")
+@ApiModel("监控状态数量统计结果")
 @Data
-public class DeviceStatusStatsCountResult {
+public class MonitorStatusStatsCountResult {
 
     @ApiModelProperty("运行数量")
     private int runningCount;

+ 32 - 0
coffee-system/src/main/java/com/coffee/bus/service/dto/MonitorTimeStatsCountResult.java

@@ -0,0 +1,32 @@
+package com.coffee.bus.service.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName MonitorStatusStatsCountResult.java
+ * @Description 监控状态数量统计结果
+ * @createTime 2022年05月08日 18:21:00
+ */
+@ApiModel("监控数量按照时间统计结果")
+@Data
+public class MonitorTimeStatsCountResult {
+
+    @ApiModelProperty("当天")
+    private int today;
+
+    @ApiModelProperty("一天")
+    private int oneDay;
+
+    @ApiModelProperty("两天")
+    private int twoDay;
+
+    @ApiModelProperty("三天")
+    private int threeDay;
+
+    @ApiModelProperty("三天以上")
+    private int beyondThreeDay;
+}