|
|
@@ -270,8 +270,11 @@ public class RoomBedServiceImpl extends MPJBaseServiceImpl<RoomBedMapper, RoomBe
|
|
|
public Boolean distributeRoomBed(DistributeRoomBedDto dto) {
|
|
|
List<Room> roomList = roomMapper.selectList(new QueryWrapper<Room>().lambda().in(Room::getId, dto.getRoomIds()));
|
|
|
Set<String> genderSet = new HashSet<>();
|
|
|
+ //存入每个寝室已经入住的班级id
|
|
|
+ Map<Long, Long> roomClassMaps = new HashMap<>();
|
|
|
for (Room room : roomList) {
|
|
|
genderSet.add(room.getGender());
|
|
|
+ roomClassMaps.put(room.getId(), null);
|
|
|
}
|
|
|
|
|
|
Date modifyDate = new Date();
|
|
|
@@ -285,6 +288,7 @@ public class RoomBedServiceImpl extends MPJBaseServiceImpl<RoomBedMapper, RoomBe
|
|
|
for (StudentPayStatusVo payStatus : studentPayStatus) {
|
|
|
payStatusMap.put(payStatus.getId(), (payStatus.getPayStatus() == null?0:payStatus.getPayStatus()));
|
|
|
}
|
|
|
+ //按照性别分组分配
|
|
|
for (String genderNumber : genderSet) {
|
|
|
int i = 0;
|
|
|
//根据性别查询出所有空床位信息
|
|
|
@@ -298,8 +302,9 @@ public class RoomBedServiceImpl extends MPJBaseServiceImpl<RoomBedMapper, RoomBe
|
|
|
.eq(RoomBed::getIsCheckIn, 0)
|
|
|
.in(RoomBed::getRoomId, dto.getRoomIds())
|
|
|
);
|
|
|
-
|
|
|
+ //按照班级分配
|
|
|
for (Long classId : dto.getClassIds()) {
|
|
|
+ //先查询出班上的在读住校生
|
|
|
List<BaseStudent> studentList = baseStudentMapper.selectList(
|
|
|
MPJWrappers.<BaseStudent>lambdaJoin()
|
|
|
.select(BaseStudent::getUserId)
|
|
|
@@ -327,6 +332,17 @@ public class RoomBedServiceImpl extends MPJBaseServiceImpl<RoomBedMapper, RoomBe
|
|
|
studentOrderList.add(baseStudent);
|
|
|
}
|
|
|
}
|
|
|
+ //判断生成策略,是否需要混合寝室
|
|
|
+ if(dto.getIsNeedMaxRoom() == 0 && i <= bedInfoList.size()){
|
|
|
+ //预先查看下一个床位所属寝室是否已经有其他班级入住,有就直接跳过
|
|
|
+ for (int j = i; j < bedInfoList.size(); j ++) {
|
|
|
+ if(roomClassMaps.get(bedInfoList.get(j).getRoomId()) != null && !classId.equals(roomClassMaps.get(bedInfoList.get(j).getRoomId())) ){
|
|
|
+ i ++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //执行床位分配
|
|
|
for (BaseStudent studentInfoVo : studentOrderList) {
|
|
|
if(i >= bedInfoList.size()){
|
|
|
continue;
|
|
|
@@ -338,6 +354,9 @@ public class RoomBedServiceImpl extends MPJBaseServiceImpl<RoomBedMapper, RoomBe
|
|
|
roomBedMapper.updateById(roomBed);
|
|
|
i ++;
|
|
|
distributeBedNumber ++;
|
|
|
+
|
|
|
+ //分配好一个学生之后,将这个寝室已入住的班级存入
|
|
|
+ roomClassMaps.putIfAbsent(roomBed.getRoomId(), classId);
|
|
|
}
|
|
|
classDistributeBedNumber.put(classId, distributeBedNumber);
|
|
|
classStudent.put(classId, studentList.size());
|
|
|
@@ -354,7 +373,7 @@ public class RoomBedServiceImpl extends MPJBaseServiceImpl<RoomBedMapper, RoomBe
|
|
|
Integer maxSortCode = roomBedRecordMapper.getMaxSortCode();
|
|
|
for (Long classId : classGradeMap.keySet()) {
|
|
|
maxSortCode ++;
|
|
|
- Integer studentCount = classStudent.get(classId);
|
|
|
+// Integer studentCount = classStudent.get(classId);
|
|
|
RoomBedRecord record = new RoomBedRecord();
|
|
|
record.setClassId(classId);
|
|
|
record.setGradeId(classGradeMap.get(classId));
|