This commit is contained in:
parent
22d61509d1
commit
1787de99e2
|
|
@ -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
|
||||||
};
|
};
|
||||||
|
|
@ -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;
|
||||||
Loading…
Reference in New Issue