diff --git a/health-watch/health-watch-api/src/main/java/com/renkang/watch/dto/XjScreenAbnormalParam.java b/health-watch/health-watch-api/src/main/java/com/renkang/watch/dto/XjScreenAbnormalParam.java index 66025cf..111db70 100644 --- a/health-watch/health-watch-api/src/main/java/com/renkang/watch/dto/XjScreenAbnormalParam.java +++ b/health-watch/health-watch-api/src/main/java/com/renkang/watch/dto/XjScreenAbnormalParam.java @@ -1,5 +1,7 @@ package com.renkang.watch.dto; +import cn.hutool.core.date.DateField; +import cn.hutool.core.date.DateUtil; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -38,4 +40,22 @@ public class XjScreenAbnormalParam { */ @Schema(title = "查询条件(业务类型不同 查询条件数据代表的意义不同)") private Integer search = 0; + + public Date getEndTime() { + if (endTime == null) { + //没传时间默认查一周 + endTime = DateUtil.endOfWeek(new Date()); + } + endTime = DateUtil.beginOfDay(endTime); + return endTime; + } + + public Date getStartTime() { + if (startTime == null) { + //没传时间默认查一周 + startTime = DateUtil.beginOfWeek(new Date()); + } + endTime = DateUtil.endOfDay(endTime).offset(DateField.MILLISECOND,-999); + return startTime; + } } 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 778074a..65839e7 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 @@ -1440,16 +1440,16 @@ public class WatchDataServiceImpl extends ServiceImpl sdcDataAbnormal(List userIds, IPage result, Date startTime, Date endTime, String orgCode, Integer search) { + MPJLambdaWrapper baseWrapper = new MPJLambdaWrapper<>(); + baseWrapper.selectAs(WatchStatUserInfoDaySdc::getId,XjScreenAbnormalVO::getId); + baseWrapper.selectAs(WatchStatUserInfoDaySdc::getUserId,XjScreenAbnormalVO::getUserId); + baseWrapper.selectAs(WatchStatUserInfoDaySdc::getStepValue,XjScreenAbnormalVO::getDataValue); + baseWrapper.selectAs(WatchStatUserInfoDaySdc::getDataDate,XjScreenAbnormalVO::getDateTime); + baseWrapper.likeRight(StrUtil.isNotEmpty(orgCode),WatchStatUserInfoDaySdc::getOrgCode,orgCode); + baseWrapper.ge(WatchStatUserInfoDaySdc::getDataDate,startTime); + baseWrapper.le(WatchStatUserInfoDaySdc::getDataDate,endTime); + baseWrapper.in(ObjectUtil.isNotNull(userIds),WatchStatUserInfoDaySdc::getUserId,userIds); + //筛选条件 (0:小于5000,1:5000-10000,2:10000-15000,3:15000-20000,4大于20000) + switch (search){ + case 0: + baseWrapper.lt(WatchStatUserInfoDaySdc::getStepValue,5000); + break; + case 1: + baseWrapper.ge(WatchStatUserInfoDaySdc::getStepValue,5000); + baseWrapper.lt(WatchStatUserInfoDaySdc::getStepValue,10000); + break; + case 2: + baseWrapper.ge(WatchStatUserInfoDaySdc::getStepValue,10000); + baseWrapper.lt(WatchStatUserInfoDaySdc::getStepValue,15000); + break; + case 3: + baseWrapper.ge(WatchStatUserInfoDaySdc::getStepValue,15000); + baseWrapper.lt(WatchStatUserInfoDaySdc::getStepValue,20000); + break; + case 4: + baseWrapper.ge(WatchStatUserInfoDaySdc::getStepValue,20000); + break; + default:break; + } + return watchStatUserInfoDaySdcMapper.selectJoinPage(result,XjScreenAbnormalVO.class, baseWrapper); + } + + private IPage temperatureDataAbnormal(List userIds, IPage result, Date startTime, Date endTime, String orgCode, Integer search) { + MPJLambdaWrapper baseWrapper = new MPJLambdaWrapper<>(); + baseWrapper.selectAs(WatchDataTemperature::getId,XjScreenAbnormalVO::getId); + baseWrapper.selectAs(WatchDataTemperature::getBindUserId,XjScreenAbnormalVO::getUserId); + baseWrapper.selectAs(WatchDataTemperature::getDataValue,XjScreenAbnormalVO::getDataValue); + baseWrapper.selectAs(WatchDataTemperature::getDataDate,XjScreenAbnormalVO::getDateTime); + baseWrapper.ge(ObjectUtil.isNotNull(startTime),WatchDataTemperature::getDataDate,startTime); + baseWrapper.le(ObjectUtil.isNotNull(endTime),WatchDataTemperature::getDataDate,endTime); + baseWrapper.in(ObjectUtil.isNotNull(userIds),WatchDataTemperature::getBindUserId,userIds); + //目前的表结构不支持部门的筛选 ,要支持需要嵌套日汇总表的子查询 + if(StrUtil.isNotEmpty(orgCode)){ + baseWrapper.in(WatchDataTemperature::getBindUserId,WatchStatUserInfoDayTemp.class, + in -> in.select(WatchStatUserInfoDayTemp::getUserId) + .likeRight(WatchStatUserInfoDayTemp::getOrgCode,orgCode) + .ge(ObjectUtil.isNotNull(startTime),WatchStatUserInfoDayTemp::getDataDate,startTime) + .le(ObjectUtil.isNotNull(endTime),WatchStatUserInfoDayTemp::getDataDate,endTime) + .groupBy(WatchStatUserInfoDayTemp::getUserId) + ); + } + //(0-大于38,1-37.2-38,2-小于37.2) + switch (search){ + case 0: + baseWrapper.ge(WatchDataStress::getDataValue,38); + break; + case 1: + baseWrapper.ge(WatchDataStress::getDataValue,37.2); + baseWrapper.lt(WatchDataStress::getDataValue,38); + break; + case 2: + baseWrapper.lt(WatchDataStress::getDataValue,37.2); + break; + default:break; + } + result = temperatureMapper.selectJoinPage(result,XjScreenAbnormalVO.class,baseWrapper); + return result; + } + + private IPage stressDataAbnormal(List userIds, IPage result, Date startTime, Date endTime, String orgCode, Integer search) { + MPJLambdaWrapper baseWrapper = new MPJLambdaWrapper<>(); + baseWrapper.selectAs(WatchDataStress::getId,XjScreenAbnormalVO::getId); + baseWrapper.selectAs(WatchDataStress::getBindUserId,XjScreenAbnormalVO::getUserId); + baseWrapper.selectAs(WatchDataStress::getDataValue,XjScreenAbnormalVO::getDataValue); + baseWrapper.selectAs(WatchDataStress::getDataDate,XjScreenAbnormalVO::getDateTime); + baseWrapper.ge(ObjectUtil.isNotNull(startTime),WatchDataStress::getDataDate,startTime); + baseWrapper.le(ObjectUtil.isNotNull(endTime),WatchDataStress::getDataDate,endTime); + baseWrapper.in(ObjectUtil.isNotNull(userIds),WatchDataStress::getBindUserId,userIds); + //目前的表结构不支持部门的筛选 ,要支持需要嵌套日汇总表的子查询 + if(StrUtil.isNotEmpty(orgCode)){ + baseWrapper.in(WatchDataStress::getBindUserId,WatchStatUserInfoDayStress.class, + in -> in.select(WatchStatUserInfoDayStress::getUserId) + .likeRight(WatchStatUserInfoDayStress::getOrgCode,orgCode) + .ge(ObjectUtil.isNotNull(startTime),WatchStatUserInfoDayStress::getDataDate,startTime) + .le(ObjectUtil.isNotNull(endTime),WatchStatUserInfoDayStress::getDataDate,endTime) + .groupBy(WatchStatUserInfoDayStress::getUserId) + ); + } + //(0-偏高,1-中等,2-正常,3-放松) , 放松<30 30<=正常<60 60<=中等<80 80<偏高 + switch (search){ + case 0: + baseWrapper.ge(WatchDataStress::getDataValue,80); + break; + case 1: + baseWrapper.ge(WatchDataStress::getDataValue,60); + baseWrapper.lt(WatchDataStress::getDataValue,80); + break; + case 2: + baseWrapper.ge(WatchDataStress::getDataValue,30); + baseWrapper.lt(WatchDataStress::getDataValue,60); + break; + case 3: + baseWrapper.lt(WatchDataStress::getDataValue,30); + break; + default:break; + } + result = stressMapper.selectJoinPage(result,XjScreenAbnormalVO.class,baseWrapper); + return result; + } + + private IPage spo2DataAbnormal(List userIds, IPage result, Date startTime, Date endTime, String orgCode, Integer search) { + MPJLambdaWrapper baseWrapper = new MPJLambdaWrapper<>(); + baseWrapper.selectAs(WatchDataSpo2::getId,XjScreenAbnormalVO::getId); + baseWrapper.selectAs(WatchDataSpo2::getBindUserId,XjScreenAbnormalVO::getUserId); + baseWrapper.selectAs(WatchDataSpo2::getDataValue,XjScreenAbnormalVO::getDataValue); + baseWrapper.selectAs(WatchDataSpo2::getDataDate,XjScreenAbnormalVO::getDateTime); + baseWrapper.ge(ObjectUtil.isNotNull(startTime),WatchDataSpo2::getDataDate,startTime); + baseWrapper.le(ObjectUtil.isNotNull(endTime),WatchDataSpo2::getDataDate,endTime); + baseWrapper.in(ObjectUtil.isNotNull(userIds),WatchDataSpo2::getBindUserId,userIds); + //目前的表结构不支持部门的筛选 ,要支持需要嵌套日汇总表的子查询 + if(StrUtil.isNotEmpty(orgCode)){ + baseWrapper.in(WatchDataSpo2::getBindUserId,WatchStatUserInfoDaySpo2.class, + in -> in.select(WatchStatUserInfoDaySpo2::getUserId) + .likeRight(WatchStatUserInfoDaySpo2::getOrgCode,orgCode) + .ge(ObjectUtil.isNotNull(startTime),WatchStatUserInfoDaySpo2::getDataDate,startTime) + .le(ObjectUtil.isNotNull(endTime),WatchStatUserInfoDaySpo2::getDataDate,endTime) + .groupBy(WatchStatUserInfoDaySpo2::getUserId) + ); + } + //search (0-异常,1-正常) ,>=90认为是正常 + baseWrapper.lt(search == 0,WatchDataHeartRate::getDataValue,90); + baseWrapper.ge(search == 1,WatchDataHeartRate::getDataValue,90); + result = spo2Mapper.selectJoinPage(result,XjScreenAbnormalVO.class,baseWrapper); + return result; + } + private IPage heartRateDataAbnormal(List userIds, IPage result, Date startTime, Date endTime, String orgCode, Integer search) { MPJLambdaWrapper baseWrapper = new MPJLambdaWrapper<>(); baseWrapper.selectAs(WatchDataHeartRate::getId,XjScreenAbnormalVO::getId); @@ -1466,8 +1605,8 @@ public class WatchDataServiceImpl extends ServiceImpl in.select(WatchStatUserInfoDayHeartRate::getUserId) .likeRight(WatchStatUserInfoDayHeartRate::getOrgCode,orgCode) @@ -1494,7 +1633,7 @@ public class WatchDataServiceImpl extends ServiceImpl userList = sysBaseAPI.queryBaseEmployeeInfo(result.getRecords().stream().map(XjScreenAbnormalVO::getUserId).collect(Collectors.toSet())); result.getRecords().forEach(vo ->{ - BaseEmployeeInfo employeeInfo = userList.stream().filter(u -> vo.getUserId().equals(u.getUserId())).findFirst().orElse(null); + BaseEmployeeInfo employeeInfo = userList.stream().filter(u -> u.getUserId().equals(vo.getUserId())).findFirst().orElse(null); if(null != employeeInfo){ vo.setAge(employeeInfo.getAge()); vo.setSex(employeeInfo.getSex());