大屏手表监测数据统计逻辑修改
This commit is contained in:
@@ -27,6 +27,17 @@ public class BigScreenVo {
|
|||||||
@Parameter(description = "统计数据总条目数")
|
@Parameter(description = "统计数据总条目数")
|
||||||
private Integer totalSum;
|
private Integer totalSum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 目前只有大屏监测数据中的心率使用
|
||||||
|
*/
|
||||||
|
@Parameter(description = "最大值")
|
||||||
|
private Integer maxValue;
|
||||||
|
/**
|
||||||
|
* 目前只有大屏监测数据中的心率使用
|
||||||
|
*/
|
||||||
|
@Parameter(description = "最小值")
|
||||||
|
private Integer minValue;
|
||||||
|
|
||||||
public Integer getWarnCount() {
|
public Integer getWarnCount() {
|
||||||
if(null != warnCount){
|
if(null != warnCount){
|
||||||
return warnCount;
|
return warnCount;
|
||||||
|
|||||||
+31
-26
@@ -1220,17 +1220,21 @@ public class WatchDataServiceImpl extends ServiceImpl<WatchDataMapper, WatchData
|
|||||||
}
|
}
|
||||||
|
|
||||||
private BigScreenVo heartRateData(String orgCode,Date startDate,Date endDate){
|
private BigScreenVo heartRateData(String orgCode,Date startDate,Date endDate){
|
||||||
MPJLambdaWrapper<WatchDataHeartRate> wrapper = new MPJLambdaWrapper<>();
|
MPJLambdaWrapper<WatchDataHeartRate> baseWrapper = new MPJLambdaWrapper<>();
|
||||||
wrapper.selectFunc(() ->"COUNT(DISTINCT bind_user_id)",
|
baseWrapper.selectFunc(() ->"COUNT(DISTINCT bind_user_id)",
|
||||||
WatchDataHeartRate::getBindUserId,BigScreenVo::getUserCount);
|
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);
|
WatchDataHeartRate::getId, BigScreenVo::getNormalCount);
|
||||||
wrapper.selectCount(WatchDataHeartRate::getId,BigScreenVo::getTotalSum);
|
baseWrapper.selectCount(WatchDataHeartRate::getId,BigScreenVo::getTotalSum);
|
||||||
wrapper.ge(WatchDataHeartRate::getDataDate,startDate);
|
//新疆项目中心率数据额外查询最大值于最小值
|
||||||
wrapper.le(WatchDataHeartRate::getDataDate,endDate);
|
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)){
|
if(StrUtil.isNotEmpty(orgCode)){
|
||||||
//目前的表结构不支持部门的筛选 ,要支持需要嵌套日汇总表的子查询
|
//目前的表结构不支持部门的筛选 ,要支持需要嵌套日汇总表的子查询
|
||||||
wrapper.in(WatchDataHeartRate::getBindUserId,WatchStatUserInfoDayHeartRate.class,
|
baseWrapper.in(WatchDataHeartRate::getBindUserId,WatchStatUserInfoDayHeartRate.class,
|
||||||
in -> in.select(WatchStatUserInfoDayHeartRate::getUserId)
|
in -> in.select(WatchStatUserInfoDayHeartRate::getUserId)
|
||||||
.likeRight(WatchStatUserInfoDayHeartRate::getOrgCode,orgCode)
|
.likeRight(WatchStatUserInfoDayHeartRate::getOrgCode,orgCode)
|
||||||
.ge(WatchStatUserInfoDayHeartRate::getDataDate,startDate)
|
.ge(WatchStatUserInfoDayHeartRate::getDataDate,startDate)
|
||||||
@@ -1238,17 +1242,17 @@ public class WatchDataServiceImpl extends ServiceImpl<WatchDataMapper, WatchData
|
|||||||
.groupBy(WatchStatUserInfoDayHeartRate::getUserId)
|
.groupBy(WatchStatUserInfoDayHeartRate::getUserId)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
BigScreenVo screenVo = heartRateMapper.selectJoinOne(BigScreenVo.class,wrapper);
|
|
||||||
screenVo.setWarnCount(screenVo.getTotalSum() - screenVo.getNormalCount());
|
screenVo.setWarnCount(screenVo.getTotalSum() - screenVo.getNormalCount());
|
||||||
screenVo.setType("1");
|
screenVo.setType("1");
|
||||||
return screenVo;
|
return screenVo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private BigScreenVo spo2Data(String orgCode,Date startDate,Date endDate){
|
private BigScreenVo spo2Data(String orgCode,Date startDate,Date endDate){
|
||||||
MPJLambdaWrapper<WatchDataSpo2> wrapper = new MPJLambdaWrapper<>();
|
MPJLambdaWrapper<WatchDataSpo2> wrapper = new MPJLambdaWrapper<>();
|
||||||
wrapper.selectFunc(() ->"COUNT(DISTINCT bind_user_id)",
|
wrapper.selectFunc(() ->"COUNT(DISTINCT bind_user_id)",
|
||||||
WatchDataSpo2::getBindUserId,BigScreenVo::getUserCount);
|
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);
|
WatchDataSpo2::getId, BigScreenVo::getNormalCount);
|
||||||
wrapper.selectCount(WatchDataSpo2::getId,BigScreenVo::getTotalSum);
|
wrapper.selectCount(WatchDataSpo2::getId,BigScreenVo::getTotalSum);
|
||||||
wrapper.ge(WatchDataSpo2::getDataDate,startDate);
|
wrapper.ge(WatchDataSpo2::getDataDate,startDate);
|
||||||
@@ -1343,9 +1347,9 @@ public class WatchDataServiceImpl extends ServiceImpl<WatchDataMapper, WatchData
|
|||||||
Date startDate = dateByType(dto.getType(),false);
|
Date startDate = dateByType(dto.getType(),false);
|
||||||
Date endDate = dateByType(dto.getType(),true);
|
Date endDate = dateByType(dto.getType(),true);
|
||||||
String orgCode = dto.getOrgCode();
|
String orgCode = dto.getOrgCode();
|
||||||
//查询告警的数量(心率告警和血氧告警)
|
//查询告警的数量(心率告警和血氧告警) 20251216前查询了告警记录作为了境界数据,后新疆项目去掉了此处的逻辑
|
||||||
CompletableFuture<List<BigScreenVo>> monitorDataFuture = CompletableFuture.supplyAsync(() ->
|
/* CompletableFuture<List<BigScreenVo>> monitorDataFuture = CompletableFuture.supplyAsync(() ->
|
||||||
monitorData(orgCode,startDate,endDate),asyncTaskExecutor);
|
monitorData(orgCode,startDate,endDate),asyncTaskExecutor);*/
|
||||||
//查询心率区间分布
|
//查询心率区间分布
|
||||||
CompletableFuture<BigScreenVo> heartRateDataFuture = CompletableFuture.supplyAsync(() ->
|
CompletableFuture<BigScreenVo> heartRateDataFuture = CompletableFuture.supplyAsync(() ->
|
||||||
heartRateData(orgCode,startDate,endDate),asyncTaskExecutor);
|
heartRateData(orgCode,startDate,endDate),asyncTaskExecutor);
|
||||||
@@ -1358,22 +1362,23 @@ public class WatchDataServiceImpl extends ServiceImpl<WatchDataMapper, WatchData
|
|||||||
//查询体温数据的区间分布
|
//查询体温数据的区间分布
|
||||||
CompletableFuture<BigScreenVo> temperatureDataFuture = CompletableFuture.supplyAsync(() ->
|
CompletableFuture<BigScreenVo> temperatureDataFuture = CompletableFuture.supplyAsync(() ->
|
||||||
temperatureData(orgCode,startDate,endDate),asyncTaskExecutor);
|
temperatureData(orgCode,startDate,endDate),asyncTaskExecutor);
|
||||||
CompletableFuture.allOf(monitorDataFuture, heartRateDataFuture,spo2DataFuture,stressDataFuture,temperatureDataFuture).join();
|
CompletableFuture.allOf(heartRateDataFuture,spo2DataFuture,stressDataFuture,temperatureDataFuture).join();
|
||||||
//处理数据(按之前的业务逻辑要将告警人数加到各统计项目中)
|
//处理数据(按之前的业务逻辑要将告警人数加到各统计项目中)
|
||||||
try {
|
try {
|
||||||
List<BigScreenVo> temperatureDataList = monitorDataFuture.get();
|
// List<BigScreenVo> temperatureDataList = monitorDataFuture.get();
|
||||||
BigScreenVo heartRate = heartRateDataFuture.get();
|
// BigScreenVo heartRate = heartRateDataFuture.get();
|
||||||
temperatureDataList.stream().filter(o -> o.getType().equals("heart_rate")).findFirst().ifPresent(co ->{
|
// temperatureDataList.stream().filter(o -> o.getType().equals("heart_rate")).findFirst().ifPresent(co ->{
|
||||||
heartRate.setRiskCount(co.getTotalSum());
|
// heartRate.setRiskCount(co.getTotalSum());
|
||||||
heartRate.setTotalSum(heartRate.getTotalSum() + co.getTotalSum() );
|
// heartRate.setTotalSum(heartRate.getTotalSum() + co.getTotalSum() );
|
||||||
});
|
// });
|
||||||
list.add(heartRate);
|
// list.add(heartRate);
|
||||||
BigScreenVo spo2Data = spo2DataFuture.get();
|
// BigScreenVo spo2Data = spo2DataFuture.get();
|
||||||
temperatureDataList.stream().filter(o -> o.getType().equals("spo2")).findFirst().ifPresent(co ->{
|
// temperatureDataList.stream().filter(o -> o.getType().equals("spo2")).findFirst().ifPresent(co ->{
|
||||||
spo2Data.setRiskCount(co.getTotalSum());
|
// spo2Data.setRiskCount(co.getTotalSum());
|
||||||
spo2Data.setTotalSum(spo2Data.getTotalSum() + co.getTotalSum() );
|
// spo2Data.setTotalSum(spo2Data.getTotalSum() + co.getTotalSum() );
|
||||||
});
|
// });
|
||||||
list.add(spo2Data);
|
list.add(heartRateDataFuture.get());
|
||||||
|
list.add(spo2DataFuture.get());
|
||||||
list.add(stressDataFuture.get());
|
list.add(stressDataFuture.get());
|
||||||
list.add(temperatureDataFuture.get());
|
list.add(temperatureDataFuture.get());
|
||||||
} catch (InterruptedException | ExecutionException e) {
|
} catch (InterruptedException | ExecutionException e) {
|
||||||
|
|||||||
Reference in New Issue
Block a user