/// <summary> /// 在取消预订订单后修改客房数量统计总表 /// </summary> /// <param name="orderId">预订订单</param> /// <returns></returns> public bool UpdateAvailableRoomsAfterCancelOrder(decimal orderId) { /* 根据Order ID 获取原订单的房间预订订单列表*/ List<CY.HotelBooking.Core.Business.XX_KFFJYDB> roomOrderList = new List<CY.HotelBooking.Core.Business.XX_KFFJYDB>(); if (CY.HotelBooking.Core.Business.XX_KFFJYDB.FillOrderItem(orderId) != null) { roomOrderList = CY.HotelBooking.Core.Business.XX_KFFJYDB.FillOrderItem(orderId) as List<CY.HotelBooking.Core.Business.XX_KFFJYDB>; } /* 根据房间预订列表来更新客房总表中的客房数量信息*/ DateTime minDate = new DateTime(); DateTime maxDate = new DateTime(); if (roomOrderList != null) { minDate = roomOrderList.First().ddrq; maxDate = roomOrderList.First().ldrq; if (roomOrderList.Count > 1) { for (int i = 0; i < roomOrderList.Count; i++) { if (roomOrderList[i].ddrq < minDate) { minDate = roomOrderList[i].ddrq; } else if (roomOrderList[i].ldrq > maxDate) { maxDate = roomOrderList[i].ldrq; } } } } // 根据预订单的最小时间minDate和最大时间maxDate构建可比较总表, // 构建可比总表的目的是为了减少比较运算 List<CY.HotelBooking.Core.Business.TJ_KFFLHZB> gerneralTable = new List<CY.HotelBooking.Core.Business.TJ_KFFLHZB>(); gerneralTable = GetGeneralTableByDateInterval(minDate, maxDate); for (int i = 0; i < roomOrderList.Count; i++) { // stayDays: 表示客人在酒店入住的天数 int stayDays = 0; // 客人当天入住,当天离开,入住天数记为1天 if ((roomOrderList[i].ldrq - roomOrderList[i].ddrq).Days == 0) { stayDays = 1; } else { stayDays = (roomOrderList[i].ldrq - roomOrderList[i].ddrq).Days; } // double increasingDay = 0.0; for (int d = 0; d < stayDays; d++) { increasingDay = Double.Parse(d.ToString()); for (int j = 0; j < gerneralTable.Count; j++) { if ((gerneralTable[j].Id.date - roomOrderList[i].ddrq.AddDays(increasingDay)).Days == 0 && gerneralTable[j].Id.kfcode.Equals(roomOrderList[i].kfcode)) { // 更新已存在的房间信息 CY.HotelBooking.Core.Business.TJ_KFFLHZBKey recordKey = new CY.HotelBooking.Core.Business.TJ_KFFLHZBKey { date = roomOrderList[i].ddrq.AddDays(increasingDay), kfcode = roomOrderList[i].kfcode }; CY.HotelBooking.Core.Business.TJ_KFFLHZB record = CY.HotelBooking.Core.Business.TJ_KFFLHZB.Load(recordKey); record.kyfs = record.kyfs + roomOrderList[i].fjs; //record.ydfs = 0 - roomOrderList[i].fjs; if (record.ydfs >= roomOrderList[i].fjs) { record.ydfs = record.ydfs - roomOrderList[i].fjs; } else { record.ydfs = 0; } try { //Update(record); record.Save(); } catch (Exception ex) { return false; } } } } } return true; }
/// <summary> /// 对预订后的客房统计表进行更新 /// </summary> /// <param name="roomOrderList">客房预订订单列表</param> /// <returns></returns> public bool UpdateAvailableRoomsAfterOrdered(IList<CY.HotelBooking.Core.Business.XX_KFFJYDB> roomOrderList) { //CY.HotelBooking.DALProviders.SqlServerProvider.TJ_KFFLHZB provider = new CY.HotelBooking.DALProviders.SqlServerProvider.TJ_KFFLHZB(); DateTime minDate = new DateTime(); DateTime maxDate = new DateTime(); minDate = roomOrderList.First().ddrq; maxDate = roomOrderList.First().ldrq; if (roomOrderList.Count > 1) { for (int i = 0; i < roomOrderList.Count; i++) { if (roomOrderList[i].ddrq < minDate) { minDate = roomOrderList[i].ddrq; } else if (roomOrderList[i].ldrq > maxDate) { maxDate = roomOrderList[i].ldrq; } } } // 根据预订单的最小时间minDate和最大时间maxDate构建可比较总表, // 构建可比总表的目的是为了减少比较运算 List<CY.HotelBooking.Core.Business.TJ_KFFLHZB> gerneralTable = new List<CY.HotelBooking.Core.Business.TJ_KFFLHZB>(); gerneralTable = GetGeneralTableByDateInterval(minDate, maxDate); for (int i = 0; i < roomOrderList.Count; i++) { // stayDays: 表示客人在酒店入住的天数 int stayDays = 0; // 客人当天入住,当天离开,入住天数记为1天 if ((roomOrderList[i].ldrq - roomOrderList[i].ddrq).Days == 0) { stayDays = 1; } else { stayDays = (roomOrderList[i].ldrq - roomOrderList[i].ddrq).Days; } // double increasingDay = 0.0; for (int d = 0; d < stayDays; d++) { // isExistRecord: 是否存在该日该房类的记录 bool isExistRecord = false; increasingDay = Double.Parse(d.ToString()); for (int j = 0; j < gerneralTable.Count; j++) { if ((gerneralTable[j].Id.date - roomOrderList[i].ddrq.AddDays(increasingDay)).Days == 0 && gerneralTable[j].Id.kfcode.Equals(roomOrderList[i].kfcode)) { // 更新已存在的房间信息 CY.HotelBooking.Core.Business.TJ_KFFLHZBKey recordKey = new CY.HotelBooking.Core.Business.TJ_KFFLHZBKey { date = roomOrderList[i].ddrq.AddDays(increasingDay), kfcode = roomOrderList[i].kfcode }; CY.HotelBooking.Core.Business.TJ_KFFLHZB record = CY.HotelBooking.Core.Business.TJ_KFFLHZB.Load(recordKey); // 可用房间数 record.kyfs = record.kyfs - roomOrderList[i].fjs; // 预订房间数 record.ydfs = record.ydfs + roomOrderList[i].fjs; // 总的可用房间数 = ? //record.zdkyfs = record.zdkyfs; //Update(record); record.Save(); // 已找到当日房类记录, isExistRecord 设置为true isExistRecord = true; } } if (!isExistRecord) { // 插入一条新的房间信息 CY.HotelBooking.Core.Business.TJ_KFFLHZB newRecord = new CY.HotelBooking.Core.Business.TJ_KFFLHZB(); newRecord.Id = new CY.HotelBooking.Core.Business.TJ_KFFLHZBKey { date = roomOrderList[i].ddrq.AddDays(increasingDay), kfcode = roomOrderList[i].kfcode }; // // 未考虑房间维修情况 // 客房总数 newRecord.kfzs = CY.HotelBooking.Core.Services.DALService.RoomInfoService.GetRoomCountByType(roomOrderList[i].kfcode); // 总的可用房数 = 客房总数 - 在住客房数 - 本次预订房数???? newRecord.zdkyfs = newRecord.kfzs - CY.HotelBooking.Core.Services.DALService.CheckedRoomInfoService.GetCheckedRoomCount(roomOrderList[i].kfcode, roomOrderList[i].ddrq.AddDays(increasingDay)); // newRecord.zdkyfs = newRecord.kfzs; // 可用房数 = 总的可用房数 - 本次预订房数 newRecord.kyfs = newRecord.zdkyfs - roomOrderList[i].fjs; // 本次预订房数 newRecord.ydfs = roomOrderList[i].fjs; //Insert(newRecord); newRecord.Save(); } } } return true; }
/// <summary> /// 决定从何处取值 /// </summary> /// <param name="arDate"></param> /// <param name="lftDate"></param> /// <returns></returns> public static bool RoomNumDirection(DateTime arDate, DateTime lftDate, String Cate) { DateTime lastdate = HotelBooking.Core.Business.TJ_KFFLHZB.GetLastDate(); CY.HotelBooking.Core.Business.TJ_KFFLHZBKey key = new CY.HotelBooking.Core.Business.TJ_KFFLHZBKey(); key.kfcode = Cate; key.date = arDate; if (DateTime.Compare(arDate, lastdate) > 0 || !CY.HotelBooking.Core.Business.TJ_KFFLHZB.IsRecordExist(key)) { return false; } return true; }