refactor: resolve remaining field audit issues

This commit is contained in:
2026-07-13 15:12:36 +08:00
parent 0533c30ece
commit aa1ed7db56
34 changed files with 953 additions and 263 deletions

View File

@@ -108,7 +108,7 @@ export class OccupanciesService {
}
// 首位入住者确定房间性别
if (student.gender && !room.gender) {
if ((student.gender === '男' || student.gender === '女') && !room.gender) {
await this.roomRepo.update(room.id, { gender: student.gender });
}
@@ -140,14 +140,6 @@ export class OccupanciesService {
// 更新宿舍状态
await this.roomRepo.update(occ.roomId, { status: 'available' });
// 如果房间已无在住人员,重置房间性别
const remaining = await this.repo.count({
where: { roomId: occ.roomId, checkOutDate: IsNull() },
});
if (remaining === 0) {
await this.roomRepo.update(occ.roomId, { gender: null as any });
}
return occ;
}
@@ -173,14 +165,6 @@ export class OccupanciesService {
await runner.manager.update(Locker, oldOcc.lockerId, { status: 'available' });
}
await runner.manager.update(Room, oldOcc.roomId, { status: 'available' });
// 旧房如果已无在住人员,重置性别
const oldRemaining = await runner.manager.count(Occupancy, {
where: { roomId: oldOcc.roomId, checkOutDate: IsNull() },
});
if (oldRemaining === 0) {
await runner.manager.update(Room, oldOcc.roomId, { gender: null as any });
}
// 检查新房容量
const newRoom = await runner.manager.findOne(Room, { where: { id: dto.newRoomId } });
if (!newRoom) throw new NotFoundException('目标宿舍不存在');
@@ -240,7 +224,7 @@ export class OccupanciesService {
}
// 首位入住者确定新房性别
if (student?.gender && !newRoom.gender) {
if ((student?.gender === '男' || student?.gender === '女') && !newRoom.gender) {
await runner.manager.update(Room, newRoom.id, { gender: student.gender });
}
@@ -339,13 +323,6 @@ export class OccupanciesService {
await runner.manager.save(occ);
// 更新房间状态
await runner.manager.update(Room, occ.roomId, { status: 'available' });
// 如果房间已无在住人员,重置性别
const remaining = await runner.manager.count(Occupancy, {
where: { roomId: occ.roomId, checkOutDate: IsNull() },
});
if (remaining === 0) {
await runner.manager.update(Room, occ.roomId, { gender: null as any });
}
// 释放床位/柜子
if (occ.bedId) await runner.manager.update(Bed, occ.bedId, { status: 'available' });
if (occ.lockerId)
@@ -521,7 +498,11 @@ export class OccupanciesService {
await this.repo.save(this.repo.create(occData));
// 7. 首位入住者确定房间性别
if (student.gender && !room.gender) {
if (
!row.checkOutDate?.trim() &&
(student.gender === '男' || student.gender === '女') &&
!room.gender
) {
await this.roomRepo.update(room.id, { gender: student.gender });
room.gender = student.gender;
}