diff --git a/health-watch/health-watch-api/src/main/java/com/renkang/watch/vo/BigScreenVo.java b/health-watch/health-watch-api/src/main/java/com/renkang/watch/vo/BigScreenVo.java index a32d848..0a3abaa 100644 --- a/health-watch/health-watch-api/src/main/java/com/renkang/watch/vo/BigScreenVo.java +++ b/health-watch/health-watch-api/src/main/java/com/renkang/watch/vo/BigScreenVo.java @@ -27,6 +27,17 @@ public class BigScreenVo { @Parameter(description = "统计数据总条目数") private Integer totalSum; + /** + * 目前只有大屏监测数据中的心率使用 + */ + @Parameter(description = "最大值") + private Integer maxValue; + /** + * 目前只有大屏监测数据中的心率使用 + */ + @Parameter(description = "最小值") + private Integer minValue; + public Integer getWarnCount() { if(null != warnCount){ return warnCount; diff --git a/health-watch/health-watch-biz/src/main/java/com/renkang/watch/service/impl/WatchDataServiceImpl.java b/health-watch/health-watch-biz/src/main/java/com/renkang/watch/service/impl/WatchDataServiceImpl.java index 9960353..34e9e8f 100644 --- a/health-watch/health-watch-biz/src/main/java/com/renkang/watch/service/impl/WatchDataServiceImpl.java +++ b/health-watch/health-watch-biz/src/main/java/com/renkang/watch/service/impl/WatchDataServiceImpl.java @@ -1220,17 +1220,21 @@ public class WatchDataServiceImpl extends ServiceImpl wrapper = new MPJLambdaWrapper<>(); - wrapper.selectFunc(() ->"COUNT(DISTINCT bind_user_id)", + MPJLambdaWrapper baseWrapper = new MPJLambdaWrapper<>(); + baseWrapper.selectFunc(() ->"COUNT(DISTINCT bind_user_id)", WatchDataHeartRate::getBindUserId,BigScreenVo::getUserCount); - wrapper.selectFunc(() ->"COUNT(IF(data_value >= '50' and data_value < '120', '1', NULL))", + baseWrapper.selectFunc(() ->"COUNT(IF(data_value >= '60' and data_value <= '100', '1', NULL))", WatchDataHeartRate::getId, BigScreenVo::getNormalCount); - wrapper.selectCount(WatchDataHeartRate::getId,BigScreenVo::getTotalSum); - wrapper.ge(WatchDataHeartRate::getDataDate,startDate); - wrapper.le(WatchDataHeartRate::getDataDate,endDate); + baseWrapper.selectCount(WatchDataHeartRate::getId,BigScreenVo::getTotalSum); + //新疆项目中心率数据额外查询最大值于最小值 + baseWrapper.selectMin(WatchDataHeartRate::getDataValue,BigScreenVo::getMinValue); + baseWrapper.selectMax(WatchDataHeartRate::getDataValue,BigScreenVo::getMaxValue); + BigScreenVo screenVo = heartRateMapper.selectJoinOne(BigScreenVo.class,baseWrapper); + baseWrapper.ge(WatchDataHeartRate::getDataDate,startDate); + baseWrapper.le(WatchDataHeartRate::getDataDate,endDate); if(StrUtil.isNotEmpty(orgCode)){ //目前的表结构不支持部门的筛选 ,要支持需要嵌套日汇总表的子查询 - wrapper.in(WatchDataHeartRate::getBindUserId,WatchStatUserInfoDayHeartRate.class, + baseWrapper.in(WatchDataHeartRate::getBindUserId,WatchStatUserInfoDayHeartRate.class, in -> in.select(WatchStatUserInfoDayHeartRate::getUserId) .likeRight(WatchStatUserInfoDayHeartRate::getOrgCode,orgCode) .ge(WatchStatUserInfoDayHeartRate::getDataDate,startDate) @@ -1238,17 +1242,17 @@ public class WatchDataServiceImpl extends ServiceImpl wrapper = new MPJLambdaWrapper<>(); wrapper.selectFunc(() ->"COUNT(DISTINCT bind_user_id)", WatchDataSpo2::getBindUserId,BigScreenVo::getUserCount); - wrapper.selectFunc(() ->"COUNT(IF(data_value >= '75' and data_value < '98', '1', NULL))", + wrapper.selectFunc(() ->"COUNT(IF(data_value >= '70', '1', NULL))", WatchDataSpo2::getId, BigScreenVo::getNormalCount); wrapper.selectCount(WatchDataSpo2::getId,BigScreenVo::getTotalSum); wrapper.ge(WatchDataSpo2::getDataDate,startDate); @@ -1343,9 +1347,9 @@ public class WatchDataServiceImpl extends ServiceImpl> monitorDataFuture = CompletableFuture.supplyAsync(() -> - monitorData(orgCode,startDate,endDate),asyncTaskExecutor); + //查询告警的数量(心率告警和血氧告警) 20251216前查询了告警记录作为了境界数据,后新疆项目去掉了此处的逻辑 +/* CompletableFuture> monitorDataFuture = CompletableFuture.supplyAsync(() -> + monitorData(orgCode,startDate,endDate),asyncTaskExecutor);*/ //查询心率区间分布 CompletableFuture heartRateDataFuture = CompletableFuture.supplyAsync(() -> heartRateData(orgCode,startDate,endDate),asyncTaskExecutor); @@ -1358,22 +1362,23 @@ public class WatchDataServiceImpl extends ServiceImpl temperatureDataFuture = CompletableFuture.supplyAsync(() -> temperatureData(orgCode,startDate,endDate),asyncTaskExecutor); - CompletableFuture.allOf(monitorDataFuture, heartRateDataFuture,spo2DataFuture,stressDataFuture,temperatureDataFuture).join(); + CompletableFuture.allOf(heartRateDataFuture,spo2DataFuture,stressDataFuture,temperatureDataFuture).join(); //处理数据(按之前的业务逻辑要将告警人数加到各统计项目中) try { - List temperatureDataList = monitorDataFuture.get(); - BigScreenVo heartRate = heartRateDataFuture.get(); - temperatureDataList.stream().filter(o -> o.getType().equals("heart_rate")).findFirst().ifPresent(co ->{ - heartRate.setRiskCount(co.getTotalSum()); - heartRate.setTotalSum(heartRate.getTotalSum() + co.getTotalSum() ); - }); - list.add(heartRate); - BigScreenVo spo2Data = spo2DataFuture.get(); - temperatureDataList.stream().filter(o -> o.getType().equals("spo2")).findFirst().ifPresent(co ->{ - spo2Data.setRiskCount(co.getTotalSum()); - spo2Data.setTotalSum(spo2Data.getTotalSum() + co.getTotalSum() ); - }); - list.add(spo2Data); +// List temperatureDataList = monitorDataFuture.get(); +// BigScreenVo heartRate = heartRateDataFuture.get(); +// temperatureDataList.stream().filter(o -> o.getType().equals("heart_rate")).findFirst().ifPresent(co ->{ +// heartRate.setRiskCount(co.getTotalSum()); +// heartRate.setTotalSum(heartRate.getTotalSum() + co.getTotalSum() ); +// }); +// list.add(heartRate); +// BigScreenVo spo2Data = spo2DataFuture.get(); +// temperatureDataList.stream().filter(o -> o.getType().equals("spo2")).findFirst().ifPresent(co ->{ +// spo2Data.setRiskCount(co.getTotalSum()); +// spo2Data.setTotalSum(spo2Data.getTotalSum() + co.getTotalSum() ); +// }); + list.add(heartRateDataFuture.get()); + list.add(spo2DataFuture.get()); list.add(stressDataFuture.get()); list.add(temperatureDataFuture.get()); } catch (InterruptedException | ExecutionException e) {