|
@@ -894,12 +894,14 @@ public class BuildServiceImpl implements BuildService {
|
|
|
.collect(Collectors.toList());
|
|
.collect(Collectors.toList());
|
|
|
Map<Long, List<ElderlyInfoDO>> elderlyByRoomId;
|
|
Map<Long, List<ElderlyInfoDO>> elderlyByRoomId;
|
|
|
Set<Long> orderedElderIdsToday;
|
|
Set<Long> orderedElderIdsToday;
|
|
|
|
|
+ Map<Long, String> fullBedNameByBedId;
|
|
|
if (CollectionUtil.isNotEmpty(roomIds)) {
|
|
if (CollectionUtil.isNotEmpty(roomIds)) {
|
|
|
List<ElderlyInfoDO> elderlyInfoList = elderlyInfoMapper.selectList(new LambdaQueryWrapperX<ElderlyInfoDO>()
|
|
List<ElderlyInfoDO> elderlyInfoList = elderlyInfoMapper.selectList(new LambdaQueryWrapperX<ElderlyInfoDO>()
|
|
|
.in(ElderlyInfoDO::getRoomId, roomIds)
|
|
.in(ElderlyInfoDO::getRoomId, roomIds)
|
|
|
.eq(ElderlyInfoDO::getInStatus, 1));
|
|
.eq(ElderlyInfoDO::getInStatus, 1));
|
|
|
elderlyByRoomId = elderlyInfoList.stream()
|
|
elderlyByRoomId = elderlyInfoList.stream()
|
|
|
.collect(Collectors.groupingBy(ElderlyInfoDO::getRoomId, LinkedHashMap::new, Collectors.toList()));
|
|
.collect(Collectors.groupingBy(ElderlyInfoDO::getRoomId, LinkedHashMap::new, Collectors.toList()));
|
|
|
|
|
+ fullBedNameByBedId = buildFullBedNameByBedId(tenantId, elderlyInfoList);
|
|
|
|
|
|
|
|
List<Long> elderIds = elderlyInfoList.stream().map(ElderlyInfoDO::getId).collect(Collectors.toList());
|
|
List<Long> elderIds = elderlyInfoList.stream().map(ElderlyInfoDO::getId).collect(Collectors.toList());
|
|
|
if (CollectionUtil.isNotEmpty(elderIds)) {
|
|
if (CollectionUtil.isNotEmpty(elderIds)) {
|
|
@@ -915,6 +917,7 @@ public class BuildServiceImpl implements BuildService {
|
|
|
} else {
|
|
} else {
|
|
|
orderedElderIdsToday = Collections.emptySet();
|
|
orderedElderIdsToday = Collections.emptySet();
|
|
|
elderlyByRoomId = Collections.emptyMap();
|
|
elderlyByRoomId = Collections.emptyMap();
|
|
|
|
|
+ fullBedNameByBedId = Collections.emptyMap();
|
|
|
}
|
|
}
|
|
|
List<BuildFloorTreeRespVO> result = new ArrayList<>();
|
|
List<BuildFloorTreeRespVO> result = new ArrayList<>();
|
|
|
for (BuildDO build : buildList) {
|
|
for (BuildDO build : buildList) {
|
|
@@ -934,7 +937,8 @@ public class BuildServiceImpl implements BuildService {
|
|
|
roomVO.setRoomName(room.getRoomName());
|
|
roomVO.setRoomName(room.getRoomName());
|
|
|
handleIsFinishAndBedList(roomVO,
|
|
handleIsFinishAndBedList(roomVO,
|
|
|
elderlyByRoomId.getOrDefault(room.getId(), Collections.emptyList()),
|
|
elderlyByRoomId.getOrDefault(room.getId(), Collections.emptyList()),
|
|
|
- orderedElderIdsToday);
|
|
|
|
|
|
|
+ orderedElderIdsToday,
|
|
|
|
|
+ fullBedNameByBedId);
|
|
|
return roomVO;
|
|
return roomVO;
|
|
|
}).collect(Collectors.toList());
|
|
}).collect(Collectors.toList());
|
|
|
floorVO.setRoomList(roomVOList);
|
|
floorVO.setRoomList(roomVOList);
|
|
@@ -1449,15 +1453,106 @@ public class BuildServiceImpl implements BuildService {
|
|
|
.toInstant());
|
|
.toInstant());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private Map<Long, String> buildFullBedNameByBedId(Long tenantId, List<ElderlyInfoDO> elderlyInfoList) {
|
|
|
|
|
+ if (CollectionUtil.isEmpty(elderlyInfoList)) {
|
|
|
|
|
+ return Collections.emptyMap();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ Set<Long> bedIds = elderlyInfoList.stream()
|
|
|
|
|
+ .map(ElderlyInfoDO::getBedId)
|
|
|
|
|
+ .filter(Objects::nonNull)
|
|
|
|
|
+ .collect(Collectors.toSet());
|
|
|
|
|
+ if (CollectionUtil.isEmpty(bedIds)) {
|
|
|
|
|
+ return Collections.emptyMap();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ List<BuildBedDO> bedList = buildBedMapper.selectList(new LambdaQueryWrapperX<BuildBedDO>()
|
|
|
|
|
+ .eqIfPresent(BuildBedDO::getTenantId, tenantId)
|
|
|
|
|
+ .in(BuildBedDO::getId, bedIds));
|
|
|
|
|
+ if (CollectionUtil.isEmpty(bedList)) {
|
|
|
|
|
+ return Collections.emptyMap();
|
|
|
|
|
+ }
|
|
|
|
|
+ Map<Long, BuildBedDO> bedById = bedList.stream()
|
|
|
|
|
+ .collect(Collectors.toMap(BuildBedDO::getId, b -> b, (a, b) -> a));
|
|
|
|
|
+
|
|
|
|
|
+ Set<Long> roomIds = bedList.stream()
|
|
|
|
|
+ .map(BuildBedDO::getRoomId)
|
|
|
|
|
+ .filter(Objects::nonNull)
|
|
|
|
|
+ .collect(Collectors.toSet());
|
|
|
|
|
+ Map<Long, BuildRoomDO> roomById = Collections.emptyMap();
|
|
|
|
|
+ if (CollectionUtil.isNotEmpty(roomIds)) {
|
|
|
|
|
+ List<BuildRoomDO> roomList = buildRoomMapper.selectList(new LambdaQueryWrapperX<BuildRoomDO>()
|
|
|
|
|
+ .eqIfPresent(BuildRoomDO::getTenantId, tenantId)
|
|
|
|
|
+ .in(BuildRoomDO::getId, roomIds));
|
|
|
|
|
+ roomById = roomList.stream().collect(Collectors.toMap(BuildRoomDO::getId, r -> r, (a, b) -> a));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ Set<Long> floorIds = roomById.values().stream()
|
|
|
|
|
+ .map(BuildRoomDO::getFloorId)
|
|
|
|
|
+ .filter(Objects::nonNull)
|
|
|
|
|
+ .collect(Collectors.toSet());
|
|
|
|
|
+ Map<Long, BuildFloorDO> floorById = Collections.emptyMap();
|
|
|
|
|
+ if (CollectionUtil.isNotEmpty(floorIds)) {
|
|
|
|
|
+ List<BuildFloorDO> floorList = buildFloorMapper.selectList(new LambdaQueryWrapperX<BuildFloorDO>()
|
|
|
|
|
+ .eqIfPresent(BuildFloorDO::getTenantId, tenantId)
|
|
|
|
|
+ .in(BuildFloorDO::getId, floorIds));
|
|
|
|
|
+ floorById = floorList.stream().collect(Collectors.toMap(BuildFloorDO::getId, f -> f, (a, b) -> a));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ Set<Long> buildIds = floorById.values().stream()
|
|
|
|
|
+ .map(BuildFloorDO::getBuildId)
|
|
|
|
|
+ .filter(Objects::nonNull)
|
|
|
|
|
+ .collect(Collectors.toSet());
|
|
|
|
|
+ Map<Long, BuildDO> buildById = Collections.emptyMap();
|
|
|
|
|
+ if (CollectionUtil.isNotEmpty(buildIds)) {
|
|
|
|
|
+ List<BuildDO> buildList = buildMapper.selectList(new LambdaQueryWrapperX<BuildDO>()
|
|
|
|
|
+ .eqIfPresent(BuildDO::getTenantId, tenantId)
|
|
|
|
|
+ .in(BuildDO::getId, buildIds));
|
|
|
|
|
+ buildById = buildList.stream().collect(Collectors.toMap(BuildDO::getId, b -> b, (a, b) -> a));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ Map<Long, String> fullNameByBedId = new HashMap<>();
|
|
|
|
|
+ for (BuildBedDO bed : bedList) {
|
|
|
|
|
+ List<String> parts = new ArrayList<>(4);
|
|
|
|
|
+
|
|
|
|
|
+ BuildRoomDO room = bed.getRoomId() != null ? roomById.get(bed.getRoomId()) : null;
|
|
|
|
|
+ BuildFloorDO floor = room != null && room.getFloorId() != null ? floorById.get(room.getFloorId()) : null;
|
|
|
|
|
+ BuildDO build = floor != null && floor.getBuildId() != null ? buildById.get(floor.getBuildId()) : null;
|
|
|
|
|
+
|
|
|
|
|
+ if (build != null && StringUtils.isNotBlank(build.getBuildName())) {
|
|
|
|
|
+ parts.add(build.getBuildName());
|
|
|
|
|
+ }
|
|
|
|
|
+ if (floor != null && StringUtils.isNotBlank(floor.getFloorName())) {
|
|
|
|
|
+ parts.add(floor.getFloorName());
|
|
|
|
|
+ }
|
|
|
|
|
+ if (room != null && StringUtils.isNotBlank(room.getRoomName())) {
|
|
|
|
|
+ parts.add(room.getRoomName());
|
|
|
|
|
+ }
|
|
|
|
|
+ if (StringUtils.isNotBlank(bed.getBedName())) {
|
|
|
|
|
+ parts.add(bed.getBedName());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (CollectionUtil.isNotEmpty(parts)) {
|
|
|
|
|
+ fullNameByBedId.put(bed.getId(), String.join("-", parts));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return fullNameByBedId;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
private void handleIsFinishAndBedList(BuildFloorTreeRespVO.RoomVO roomVO,
|
|
private void handleIsFinishAndBedList(BuildFloorTreeRespVO.RoomVO roomVO,
|
|
|
List<ElderlyInfoDO> elderlyInfoList,
|
|
List<ElderlyInfoDO> elderlyInfoList,
|
|
|
- Set<Long> orderedElderIdsToday){
|
|
|
|
|
|
|
+ Set<Long> orderedElderIdsToday,
|
|
|
|
|
+ Map<Long, String> fullBedNameByBedId){
|
|
|
List<BuildFloorTreeRespVO.BedVO> bedList = new ArrayList<>();
|
|
List<BuildFloorTreeRespVO.BedVO> bedList = new ArrayList<>();
|
|
|
boolean isFinish = true;
|
|
boolean isFinish = true;
|
|
|
for (ElderlyInfoDO elderlyInfoDO : elderlyInfoList) {
|
|
for (ElderlyInfoDO elderlyInfoDO : elderlyInfoList) {
|
|
|
BuildFloorTreeRespVO.BedVO bedVO = new BuildFloorTreeRespVO.BedVO();
|
|
BuildFloorTreeRespVO.BedVO bedVO = new BuildFloorTreeRespVO.BedVO();
|
|
|
bedVO.setBedId(elderlyInfoDO.getBedId());
|
|
bedVO.setBedId(elderlyInfoDO.getBedId());
|
|
|
- bedVO.setBedName(elderlyInfoDO.getBedName());
|
|
|
|
|
|
|
+ String bedName = elderlyInfoDO.getBedName();
|
|
|
|
|
+ if (StringUtils.isBlank(bedName) && elderlyInfoDO.getBedId() != null && fullBedNameByBedId != null) {
|
|
|
|
|
+ bedName = fullBedNameByBedId.get(elderlyInfoDO.getBedId());
|
|
|
|
|
+ }
|
|
|
|
|
+ bedVO.setBedName(bedName);
|
|
|
bedVO.setElderId(elderlyInfoDO.getId());
|
|
bedVO.setElderId(elderlyInfoDO.getId());
|
|
|
bedVO.setElderName(elderlyInfoDO.getElderName());
|
|
bedVO.setElderName(elderlyInfoDO.getElderName());
|
|
|
bedList.add(bedVO);
|
|
bedList.add(bedVO);
|