修改挂单功能
This commit is contained in:
@@ -40,24 +40,23 @@ public class regionRoomBedController : ApiController
|
||||
.Where(a => a.RoomUuid == roomUuid)
|
||||
.ToList();
|
||||
|
||||
// 取出所有相关排程
|
||||
var schedules = _db.RegionAndRoomAndBedSchedule
|
||||
.Where(b => b.IsDeleted == false && b.IsActive)
|
||||
.ToList();
|
||||
StartTime = StartTime.Date;
|
||||
EndTime = EndTime?.Date;
|
||||
|
||||
var data = beds.Select(a =>
|
||||
{
|
||||
// 在内存中处理日期比较
|
||||
var bedSchedules = schedules
|
||||
var bedSchedules = _db.RegionAndRoomAndBedSchedule
|
||||
.Where(s => s.GuaDanOrderGuest.StatusCode != "403")
|
||||
.Where(s => s.GuaDanOrderGuest.StatusCode != "404")
|
||||
.Where(b => b.TargetUuid == a.Uuid
|
||||
&& (b.ScheduleDate == null // 长期占用
|
||||
|| (b.ScheduleDate >= StartTime.Date && b.ScheduleDate <= EndTime.Value.Date)))
|
||||
&& (b.ScheduleDate == null
|
||||
|| (b.ScheduleDate >= StartTime && b.ScheduleDate < EndTime)))
|
||||
.ToList()
|
||||
.Select(c => new
|
||||
{
|
||||
c.Uuid,
|
||||
c.Description,
|
||||
c.IsDeleted,
|
||||
c.IsActive,
|
||||
c.GuaDanOrderNo,
|
||||
c.UseType,
|
||||
c.Title,
|
||||
@@ -74,13 +73,14 @@ public class regionRoomBedController : ApiController
|
||||
a.Name,
|
||||
a.Gender,
|
||||
a.IsActive,
|
||||
a.StatusUuid,
|
||||
a.StatusCode,
|
||||
a.RoomUuid,
|
||||
canUsed,
|
||||
schedule = bedSchedules
|
||||
};
|
||||
});
|
||||
|
||||
|
||||
return Ok(data);
|
||||
}
|
||||
|
||||
@@ -93,7 +93,7 @@ public class regionRoomBedController : ApiController
|
||||
{
|
||||
return BadRequest("當前客房不存在");
|
||||
}
|
||||
if(room.Gender != bed.Gender)
|
||||
if (room.Gender != bed.Gender)
|
||||
{
|
||||
return BadRequest("床為性別和房間性別必須一致");
|
||||
}
|
||||
@@ -105,7 +105,7 @@ public class regionRoomBedController : ApiController
|
||||
{
|
||||
Name = bed.Name,
|
||||
RoomUuid = bed.RoomUuid,
|
||||
StatusUuid = bed.StatusUuid,
|
||||
StatusCode = bed.StatusCode,
|
||||
IsActive = bed.IsActive,
|
||||
Gender = bed.Gender,
|
||||
Uuid = Guid.NewGuid(),
|
||||
@@ -114,10 +114,11 @@ public class regionRoomBedController : ApiController
|
||||
_db.SaveChanges();
|
||||
|
||||
//創建床位
|
||||
return Ok(new {
|
||||
return Ok(new
|
||||
{
|
||||
uuid = regionBed.Uuid,
|
||||
roomUuid = regionBed.RoomUuid,
|
||||
statusuuid = regionBed.StatusUuid,
|
||||
statuscode = regionBed.StatusCode,
|
||||
isactive = regionBed.IsActive,
|
||||
gender = regionBed.Gender,
|
||||
name = regionBed.Name,
|
||||
@@ -146,7 +147,7 @@ public class regionRoomBedController : ApiController
|
||||
{
|
||||
return BadRequest("床為性別和房間性別必須一致");
|
||||
}
|
||||
oldBed.StatusUuid = bed.StatusUuid;
|
||||
oldBed.StatusCode = bed.StatusCode;
|
||||
oldBed.IsActive = bed.IsActive;
|
||||
oldBed.Name = bed.Name;
|
||||
oldBed.Gender = bed.Gender;
|
||||
@@ -174,8 +175,37 @@ public class regionRoomBedController : ApiController
|
||||
public async Task<IHttpActionResult> GetCanUseBedCountByTime(DateTime startTime, DateTime endTime)
|
||||
{
|
||||
//获取某个时间段内可用床位数量
|
||||
var counts = await RegionAndRoomAndBedSchedule.GetAvailableBedCountsAsync(_db, startTime, endTime);
|
||||
return Ok(counts);
|
||||
var start = startTime.Date;
|
||||
var end = endTime.Date;
|
||||
|
||||
// 找出所有在日期範圍內被占用的床位
|
||||
var busyBedUuids = await _db.RegionAndRoomAndBedSchedule
|
||||
.Where(s => s.GuaDanOrderGuest.StatusCode != "403")
|
||||
.Where(s => s.GuaDanOrderGuest.StatusCode != "404")
|
||||
.Where(a => a.IsCancel == false)
|
||||
.Where(s => s.IsDeleted == false
|
||||
&& (s.ScheduleDate == null // 長期占用
|
||||
|| (s.ScheduleDate >= start && s.ScheduleDate < end)))
|
||||
.Select(s => s.TargetUuid)
|
||||
.Distinct()
|
||||
.ToListAsync();
|
||||
|
||||
// 可用床位 = 所有床位 - 忙碌床位
|
||||
var availableBeds = _db.RegionRoomBed
|
||||
.Where(b => !busyBedUuids.Contains(b.Uuid));
|
||||
|
||||
var result = await availableBeds
|
||||
.GroupBy(b => b.Gender)
|
||||
.Select(g => new
|
||||
{
|
||||
Gender = g.Key,
|
||||
Count = g.Count()
|
||||
})
|
||||
.ToListAsync();
|
||||
|
||||
var male = result.Where(r => r.Gender == true).Select(r => r.Count).FirstOrDefault();
|
||||
var female = result.Where(r => r.Gender == false).Select(r => r.Count).FirstOrDefault();
|
||||
return Ok(new {male, female});
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
@@ -260,7 +290,7 @@ public class regionRoomBedController : ApiController
|
||||
}
|
||||
}
|
||||
|
||||
if(index < followers.Count)
|
||||
if (index < followers.Count)
|
||||
{
|
||||
isAllallocation = false;
|
||||
return;
|
||||
@@ -313,7 +343,7 @@ public class regionRoomBedController : ApiController
|
||||
{
|
||||
// 先拉出床位相關排程到內存,避免 EF 不支援 .Date
|
||||
var schedules = _db.RegionAndRoomAndBedSchedule
|
||||
.Where(s => s.IsDeleted == false && s.IsActive && s.TargetUuid == req.bedUuid)
|
||||
.Where(s => s.IsDeleted == false && !s.IsCancel && s.TargetUuid == req.bedUuid)
|
||||
.ToList();
|
||||
|
||||
bool conflictExists = schedules.Any(s =>
|
||||
@@ -364,7 +394,6 @@ public class regionRoomBedController : ApiController
|
||||
ScheduleDate = date,
|
||||
UseType = (int)RegionAndRoomAndBedSchedule.SchedulePurpose.Bed_Reservation,
|
||||
IsDeleted = false,
|
||||
IsActive = true,
|
||||
CreatedBy = "系统自动分配",
|
||||
CreatedAt = DateTime.Now,
|
||||
GuaDanOrderNo = guest.GuaDanOrderNo
|
||||
@@ -382,7 +411,6 @@ public class regionRoomBedController : ApiController
|
||||
ScheduleDate = null,
|
||||
UseType = (int)RegionAndRoomAndBedSchedule.SchedulePurpose.Bed_Reservation,
|
||||
IsDeleted = false,
|
||||
IsActive = true,
|
||||
CreatedBy = "系统自动分配",
|
||||
CreatedAt = DateTime.Now,
|
||||
GuaDanOrderNo = guest.GuaDanOrderNo
|
||||
@@ -406,7 +434,7 @@ public class regionRoomBedController : ApiController
|
||||
|
||||
private bool BedIsCanUsed(RegionRoomBed bed, DateTime? StartTime, DateTime? EndTime)
|
||||
{
|
||||
if(!bed.IsActive)
|
||||
if (!bed.IsActive)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user