|
|
@@ -30,6 +30,7 @@ import java.util.Collection;
|
|
|
import java.util.Set;
|
|
|
import java.util.stream.Collectors;
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.HashSet;
|
|
|
|
|
|
/**
|
|
|
* 宿舍床位信息Service业务层处理
|
|
|
@@ -157,7 +158,55 @@ public class XgDormBedServiceImpl implements IXgDormBedService {
|
|
|
*/
|
|
|
@Override
|
|
|
public List<XgDormBedDetailVo> queryBedDetailsByRoomId(Long roomId) {
|
|
|
- return baseMapper.selectBedDetailsByRoomId(roomId);
|
|
|
+ List<XgDormBedDetailVo> result = new ArrayList<>();
|
|
|
+
|
|
|
+ // 第一步:从 xg_dorm_bed_student 为主表查有学生的床位
|
|
|
+ List<Map<String, Object>> studentBeds = xgDormBedStudentMapper.selectRoomStudents(roomId);
|
|
|
+
|
|
|
+ Set<Long> occupiedBedIds = new HashSet<>();
|
|
|
+ for (Map<String, Object> row : studentBeds) {
|
|
|
+ XgDormBedDetailVo vo = new XgDormBedDetailVo();
|
|
|
+ Object bedIdObj = row.get("bed_id");
|
|
|
+ Long bedId = bedIdObj != null ? ((Number) bedIdObj).longValue() : null;
|
|
|
+ if (bedId != null) {
|
|
|
+ occupiedBedIds.add(bedId);
|
|
|
+ }
|
|
|
+ vo.setId(bedId);
|
|
|
+ vo.setBedCode(row.get("bed_code") != null ? row.get("bed_code").toString() : null);
|
|
|
+ vo.setBedName(row.get("bed_name") != null ? row.get("bed_name").toString() : null);
|
|
|
+ vo.setRoomId(roomId);
|
|
|
+ vo.setStudentId(row.get("student_id") != null ? ((Number) row.get("student_id")).longValue() : null);
|
|
|
+ vo.setStudentNo(row.get("student_no") != null ? row.get("student_no").toString() : null);
|
|
|
+ vo.setStudentName(row.get("student_name") != null ? row.get("student_name").toString() : null);
|
|
|
+ vo.setStudentGender(row.get("gender") != null ? row.get("gender").toString() : null);
|
|
|
+ vo.setClassName(row.get("class_name") != null ? row.get("class_name").toString() : null);
|
|
|
+ vo.setCollegeName(row.get("college_name") != null ? row.get("college_name").toString() : null);
|
|
|
+ vo.setMajorName(row.get("major_name") != null ? row.get("major_name").toString() : null);
|
|
|
+ vo.setAssignmentStatus("0");
|
|
|
+ vo.setBedStatus("1");
|
|
|
+ result.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 第二步:补查 xg_dorm_bed 中未被分配的空床位
|
|
|
+ List<XgDormBed> emptyBeds = baseMapper.selectList(
|
|
|
+ Wrappers.<XgDormBed>lambdaQuery()
|
|
|
+ .eq(XgDormBed::getRoomId, roomId)
|
|
|
+ .notIn(!occupiedBedIds.isEmpty(), XgDormBed::getId, occupiedBedIds)
|
|
|
+ );
|
|
|
+
|
|
|
+ for (XgDormBed bed : emptyBeds) {
|
|
|
+ XgDormBedDetailVo vo = new XgDormBedDetailVo();
|
|
|
+ vo.setId(bed.getId());
|
|
|
+ vo.setBedCode(bed.getBedCode());
|
|
|
+ vo.setBedName(bed.getBedName());
|
|
|
+ vo.setRoomId(bed.getRoomId());
|
|
|
+ vo.setBedType(bed.getBedType());
|
|
|
+ vo.setBedStatus(bed.getBedStatus());
|
|
|
+ vo.setBedRemark(bed.getRemark());
|
|
|
+ result.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ return result;
|
|
|
}
|
|
|
|
|
|
/**
|