/// <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;
        }
Example #3
0
 /// <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;
 }