This commit is contained in:
wangxiaoxian 2026-03-10 20:06:56 +08:00
parent 22d61509d1
commit 1787de99e2
2 changed files with 84 additions and 0 deletions

View File

@ -379,6 +379,86 @@ const getTenantRentalStats = async (req, res) => {
} }
}; };
// 即将到期房间分布统计(按公寓分组)
const getSoonExpireRoomsByApartment = async (req, res) => {
try {
// 获取所有公寓(排除已删除的)
const apartments = await Apartment.findAll({ where: { isDeleted: 0 } });
// 获取所有即将到期的房间(排除已删除的)
const soonExpireRooms = await Room.findAll({
where: {
status: 'rented',
subStatus: 'soon_expire',
isDeleted: 0
}
});
// 构建按公寓分组的即将到期房间数据
const soonExpireRoomsByApartment = apartments.map(apartment => {
const apartmentSoonExpireRooms = soonExpireRooms
.filter(room => room.apartmentId === apartment.id)
.map(room => ({
id: room.id,
roomNumber: room.roomNumber,
type: room.type,
area: room.area
}));
return {
apartmentId: apartment.id,
apartmentName: apartment.name,
soonExpireRooms: apartmentSoonExpireRooms
};
});
res.status(200).json(soonExpireRoomsByApartment);
} catch (error) {
console.error('获取即将到期分布数据时出错:', error);
res.status(500).json({ error: error.message });
}
};
// 已到期房间分布统计(按公寓分组)
const getExpiredRoomsByApartment = async (req, res) => {
try {
// 获取所有公寓(排除已删除的)
const apartments = await Apartment.findAll({ where: { isDeleted: 0 } });
// 获取所有已到期的房间(排除已删除的)
const expiredRooms = await Room.findAll({
where: {
status: 'rented',
subStatus: 'expired',
isDeleted: 0
}
});
// 构建按公寓分组的已到期房间数据
const expiredRoomsByApartment = apartments.map(apartment => {
const apartmentExpiredRooms = expiredRooms
.filter(room => room.apartmentId === apartment.id)
.map(room => ({
id: room.id,
roomNumber: room.roomNumber,
type: room.type,
area: room.area
}));
return {
apartmentId: apartment.id,
apartmentName: apartment.name,
expiredRooms: apartmentExpiredRooms
};
});
res.status(200).json(expiredRoomsByApartment);
} catch (error) {
console.error('获取已到期分布数据时出错:', error);
res.status(500).json({ error: error.message });
}
};
module.exports = { module.exports = {
getRentStatistics, getRentStatistics,
getRoomStatusStatistics, getRoomStatusStatistics,
@ -386,5 +466,7 @@ module.exports = {
getApartmentRoomStatusStatistics, getApartmentRoomStatusStatistics,
getEmptyRoomsByApartment, getEmptyRoomsByApartment,
getRentedRoomsByApartment, getRentedRoomsByApartment,
getSoonExpireRoomsByApartment,
getExpiredRoomsByApartment,
getTenantRentalStats getTenantRentalStats
}; };

View File

@ -9,6 +9,8 @@ router.get('/dashboard', statisticsController.getDashboardStatistics);
router.get('/apartment-room-status', statisticsController.getApartmentRoomStatusStatistics); router.get('/apartment-room-status', statisticsController.getApartmentRoomStatusStatistics);
router.get('/empty-rooms-by-apartment', statisticsController.getEmptyRoomsByApartment); router.get('/empty-rooms-by-apartment', statisticsController.getEmptyRoomsByApartment);
router.get('/rented-rooms-by-apartment', statisticsController.getRentedRoomsByApartment); router.get('/rented-rooms-by-apartment', statisticsController.getRentedRoomsByApartment);
router.get('/soon-expire-rooms-by-apartment', statisticsController.getSoonExpireRoomsByApartment);
router.get('/expired-rooms-by-apartment', statisticsController.getExpiredRoomsByApartment);
router.get('/tenant-rental-stats', statisticsController.getTenantRentalStats); router.get('/tenant-rental-stats', statisticsController.getTenantRentalStats);
module.exports = router; module.exports = router;