Commit 03ca3555 by 朱淼

数据大屏

parent 93e09be4
...@@ -13,6 +13,8 @@ import org.springframework.web.bind.annotation.RequestBody; ...@@ -13,6 +13,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/** /**
* Controller * Controller
* *
...@@ -59,7 +61,7 @@ public class DataScreenController { ...@@ -59,7 +61,7 @@ public class DataScreenController {
@ApiOperation("地图统计") @ApiOperation("地图统计")
@PostMapping("mapStatistics") @PostMapping("mapStatistics")
public ApiResponseEntity<PlatAlarmStatisticsVO> mapStatistics(@RequestBody PlatDataScreenQueryDTO dto) { public ApiResponseEntity<PlatMapStatisticsVO> mapStatistics(@RequestBody PlatDataScreenQueryDTO dto) {
return ApiResponseUtils.success(dataScreenService.alarmStatistics(dto)); return ApiResponseUtils.success(dataScreenService.mapStatistics(dto));
} }
} }
package com.makeit.enums.platform.alarm;
import com.makeit.enums.BaseEnum;
import com.makeit.utils.sys.SysDictUtil;
public class PlatAlarmRecordEnum {
public enum AlarmRecordStatusEnum implements BaseEnum {
HANDLED("alarm.alarmRecordStatus.handled"),
UNHANDLED("alarm.alarmRecordStatus.unhandled");
private String code;
AlarmRecordStatusEnum(String code) {
this.code = code;
}
public String getValue() {
return SysDictUtil.getValue(code);
}
}
}
...@@ -94,4 +94,6 @@ public interface PlatOrgService extends IService<PlatOrg> { ...@@ -94,4 +94,6 @@ public interface PlatOrgService extends IService<PlatOrg> {
* @param platOrg * @param platOrg
*/ */
void saveOrg(PlatOrg platOrg); void saveOrg(PlatOrg platOrg);
List<PlatOrg> createOrgTree(List<PlatOrg> orgList);
} }
...@@ -3,6 +3,8 @@ package com.makeit.service.platform.dataScreen; ...@@ -3,6 +3,8 @@ package com.makeit.service.platform.dataScreen;
import com.makeit.dto.platform.dataScreen.PlatDataScreenQueryDTO; import com.makeit.dto.platform.dataScreen.PlatDataScreenQueryDTO;
import com.makeit.vo.platform.dataScreen.*; import com.makeit.vo.platform.dataScreen.*;
import java.util.List;
/** /**
* Controller * Controller
* *
...@@ -19,4 +21,6 @@ public interface DataScreenService { ...@@ -19,4 +21,6 @@ public interface DataScreenService {
PlatAlarmStatisticsVO alarmStatistics(PlatDataScreenQueryDTO dto); PlatAlarmStatisticsVO alarmStatistics(PlatDataScreenQueryDTO dto);
PlatBaseInfoStatisticsVO baseInfoStatistics(PlatDataScreenQueryDTO dto); PlatBaseInfoStatisticsVO baseInfoStatistics(PlatDataScreenQueryDTO dto);
PlatMapStatisticsVO mapStatistics(PlatDataScreenQueryDTO dto);
} }
...@@ -2,24 +2,41 @@ package com.makeit.service.platform.dataScreen.impl; ...@@ -2,24 +2,41 @@ package com.makeit.service.platform.dataScreen.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.makeit.dto.platform.dataScreen.PlatDataScreenQueryDTO; import com.makeit.dto.platform.dataScreen.PlatDataScreenQueryDTO;
import com.makeit.entity.platform.alarm.PlatAlarmConfig;
import com.makeit.entity.platform.alarm.PlatAlarmRecord;
import com.makeit.entity.platform.auth.PlatOrg;
import com.makeit.entity.platform.auth.PlatUser; import com.makeit.entity.platform.auth.PlatUser;
import com.makeit.entity.platform.device.PlatDevice; import com.makeit.entity.platform.device.PlatDevice;
import com.makeit.entity.platform.elder.PlatElder; import com.makeit.entity.platform.elder.PlatElder;
import com.makeit.entity.platform.space.PlatSpace;
import com.makeit.enums.CommonEnum; import com.makeit.enums.CommonEnum;
import com.makeit.enums.platform.alarm.PlatAlarmConfigEnum;
import com.makeit.enums.platform.alarm.PlatAlarmRecordEnum;
import com.makeit.enums.platform.device.PlatDeviceEnum; import com.makeit.enums.platform.device.PlatDeviceEnum;
import com.makeit.enums.platform.elder.PlatElderEnum; import com.makeit.enums.platform.elder.PlatElderEnum;
import com.makeit.module.iot.enums.DeviceState;
import com.makeit.module.system.entity.ChinaArea;
import com.makeit.module.system.service.ChinaAreaService;
import com.makeit.service.platform.alarm.PlatAlarmRecordService;
import com.makeit.service.platform.auth.PlatOrgService;
import com.makeit.service.platform.auth.PlatUserService; import com.makeit.service.platform.auth.PlatUserService;
import com.makeit.service.platform.dataScreen.DataScreenService; import com.makeit.service.platform.dataScreen.DataScreenService;
import com.makeit.service.platform.device.PlatDeviceService; import com.makeit.service.platform.device.PlatDeviceService;
import com.makeit.service.platform.elder.PlatElderService; import com.makeit.service.platform.elder.PlatElderService;
import com.makeit.service.platform.space.PlatBedService; import com.makeit.service.platform.space.PlatBedService;
import com.makeit.service.platform.space.PlatSpaceService;
import com.makeit.utils.area.AreaUtil;
import com.makeit.utils.area.ChinaAreaVO;
import com.makeit.utils.data.convert.BeanDtoVoUtils;
import com.makeit.utils.sql.CustomQueryWrapper;
import com.makeit.vo.platform.dataScreen.*; import com.makeit.vo.platform.dataScreen.*;
import jodd.util.StringUtil; import jodd.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List; import java.util.*;
import java.util.stream.Collectors;
/** /**
* Controller * Controller
...@@ -37,6 +54,12 @@ public class DataScreenServiceImpl implements DataScreenService { ...@@ -37,6 +54,12 @@ public class DataScreenServiceImpl implements DataScreenService {
private PlatBedService platBedService; private PlatBedService platBedService;
@Autowired @Autowired
private PlatUserService platUserService; private PlatUserService platUserService;
@Autowired
private PlatAlarmRecordService platAlarmRecordService;
@Autowired
private PlatSpaceService platSpaceService;
@Autowired
private PlatOrgService platOrgService;
@Override @Override
public PlatAgeStatisticsVO ageStatistics(PlatDataScreenQueryDTO dto) { public PlatAgeStatisticsVO ageStatistics(PlatDataScreenQueryDTO dto) {
...@@ -81,14 +104,63 @@ public class DataScreenServiceImpl implements DataScreenService { ...@@ -81,14 +104,63 @@ public class DataScreenServiceImpl implements DataScreenService {
List<PlatDevice> devices = platDeviceService.list(new QueryWrapper<PlatDevice>().lambda() List<PlatDevice> devices = platDeviceService.list(new QueryWrapper<PlatDevice>().lambda()
.in(PlatDevice::getOrgId, dto.getOrgIds())); .in(PlatDevice::getOrgId, dto.getOrgIds()));
long total = devices.size(); long total = devices.size();
long onlineNumber = devices.stream().filter(t-> DeviceState.online.getValue().equals(t.getStatus())).count();
return null; long offlineNumber = devices.stream().filter(t-> DeviceState.offline.getValue().equals(t.getStatus())).count();
long disableNumber = devices.stream().filter(t-> DeviceState.notActive.getValue().equals(t.getStatus())).count();
long heartNumber = devices.stream().filter(t-> PlatDeviceEnum.CategoryEnum.HEART.getValue().equals(t.getCategory())).count();
long fallNumber = devices.stream().filter(t-> PlatDeviceEnum.CategoryEnum.FALL.getValue().equals(t.getCategory())).count();
long spaceNumber = devices.stream().filter(t-> PlatDeviceEnum.CategoryEnum.SPACE.getValue().equals(t.getCategory())).count();
PlatDeviceStatisticsVO vo = new PlatDeviceStatisticsVO();
vo.setTotla(total);
vo.setOnlineNumber(onlineNumber);
vo.setOfflineNumber(offlineNumber);
vo.setDisableNumber(disableNumber);
vo.setHeartNumber(heartNumber);
vo.setFallNumber(fallNumber);
vo.setSpaceNumber(spaceNumber);
return vo;
} }
@Override @Override
public PlatAlarmStatisticsVO alarmStatistics(PlatDataScreenQueryDTO dto) { public PlatAlarmStatisticsVO alarmStatistics(PlatDataScreenQueryDTO dto) {
List<PlatAlarmRecord> alarmRecords = platAlarmRecordService.list(new QueryWrapper<PlatAlarmRecord>().lambda()
.between(PlatAlarmRecord::getAlarmDate,dto.getStartTime(),dto.getEndTime())
.in(PlatAlarmRecord::getOrgId, dto.getOrgIds()));
List<PlatElder> platElders = platElderService.list();
Map<String,String> elderNameMap = platElders.stream().collect(Collectors.toMap(PlatElder::getId,PlatElder::getName));
List<PlatAlarmStatisticsListVo> list = new ArrayList<>();
long totla = 0;
long handledNumber = 0;
long unhandledNumber = 0;
for (PlatAlarmRecord record : alarmRecords){
if(StringUtil.isNotEmpty(record.getElderIds())){
List<String> elderIds = Arrays.asList(record.getElderIds().split(","));
PlatAlarmStatisticsListVo listVo = new PlatAlarmStatisticsListVo();
for (String elderId : elderIds){
if(elderNameMap.get(elderId)!=null){
listVo.setElderName(elderNameMap.get(elderId));
}
listVo.setType(record.getAlarmType());
if(PlatAlarmConfigEnum.AlarmTypeEnum.HEART.getValue().equals(record.getAlarmType()) ||
PlatAlarmConfigEnum.AlarmTypeEnum.BREATHE.getValue().equals(record.getAlarmType()) ){
}
totla ++;
if(PlatAlarmRecordEnum.AlarmRecordStatusEnum.HANDLED.getValue().equals(record.getStatus())){
handledNumber ++;
}else {
unhandledNumber ++;
}
list.add(listVo);
}
return null; }
}
PlatAlarmStatisticsVO vo = new PlatAlarmStatisticsVO();
vo.setTotla(totla);
vo.setHandledNumber(handledNumber);
vo.setUnhandledNumber(unhandledNumber);
vo.setList(list);
return vo;
} }
@Override @Override
...@@ -110,5 +182,38 @@ public class DataScreenServiceImpl implements DataScreenService { ...@@ -110,5 +182,38 @@ public class DataScreenServiceImpl implements DataScreenService {
return vo; return vo;
} }
@Override
public PlatMapStatisticsVO mapStatistics(PlatDataScreenQueryDTO dto) {
PlatMapStatisticsVO vo = new PlatMapStatisticsVO();
List<PlatOrg> orgs = platOrgService.list(new QueryWrapper<PlatOrg>().lambda()
.in(PlatOrg::getId, dto.getOrgIds()));
//取范围最大的管辖区域
List<PlatOrg> tree = platOrgService.createOrgTree(orgs);
List<String> region = tree.stream().filter(t->StringUtil.isNotEmpty(t.getRegion())).map(PlatOrg::getRegion).collect(Collectors.toList());
List<ChinaAreaVO> areas = AreaUtil.getByCodeList(region);
List<PlatSpace> spaces = platSpaceService.list(new QueryWrapper<PlatSpace>().lambda()
.isNull(PlatSpace::getParentId)
.in(PlatSpace::getOrgId, dto.getOrgIds()));
List<PlatElder> elders = platElderService.list(new QueryWrapper<PlatElder>().lambda()
.isNotNull(PlatElder::getBedId)
.in(PlatElder::getOrgId, dto.getOrgIds()));
Map<String,List<PlatElder>> elderMap = elders.stream().collect(Collectors.groupingBy(PlatElder::getSpaceId));
List<PlatMapStatisticsSpaceVO> list = new ArrayList<>();
for(PlatSpace space : spaces){
PlatMapStatisticsSpaceVO spaceVo = new PlatMapStatisticsSpaceVO();
spaceVo.setSpaceId(space.getId());
spaceVo.setSpaceName(space.getName());
spaceVo.setLatitude(space.getLatitude());
spaceVo.setLongitude(space.getLongitude());
if(elderMap.get(space.getId())!=null){
spaceVo.setElderNumber(Long.valueOf(elderMap.get(space.getId()).size()));
}
}
vo.setAreas(areas);
return vo;
}
} }
...@@ -27,7 +27,13 @@ public class PlatDeviceStatisticsVO { ...@@ -27,7 +27,13 @@ public class PlatDeviceStatisticsVO {
@ApiModelProperty(value = "禁用数") @ApiModelProperty(value = "禁用数")
private Long disableNumber; private Long disableNumber;
@ApiModelProperty(value = "禁用数") @ApiModelProperty(value = "呼吸心率雷达数")
private Long heartNumber; private Long heartNumber;
@ApiModelProperty(value = "跌倒检测雷达数")
private Long fallNumber;
@ApiModelProperty(value = "空间人体雷达数")
private Long spaceNumber;
} }
package com.makeit.vo.platform.dataScreen;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* Controller
*
* @author zm
* @version 2023/9/11
*/
@Data
@ApiModel("PlatMapStatisticsSpaceVO对象")
public class PlatMapStatisticsSpaceVO {
@ApiModelProperty(value = "空间id")
private String spaceId;
@ApiModelProperty(value = "空间名称")
private String spaceName;
@ApiModelProperty(value = "空间地址")
private String address;
@ApiModelProperty(value = "经度")
private String longitude;
@ApiModelProperty(value = "纬度")
private String latitude;
@ApiModelProperty(value = "长者数量")
private Long elderNumber;
@ApiModelProperty(value = "今日告警数")
private Long alarmNumber;
@ApiModelProperty(value = "待处理告警")
private Long unHandledNumber;
}
package com.makeit.vo.platform.dataScreen;
import com.makeit.utils.area.ChinaAreaVO;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import java.util.List;
/**
* Controller
*
* @author zm
* @version 2023/9/11
*/
@Data
@ApiModel("PlatMapStatisticsVO对象")
public class PlatMapStatisticsVO {
private List<ChinaAreaVO> areas;
private List<PlatMapStatisticsSpaceVO> spaceList;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment