using System; using System.Collections.Generic; using System.Linq; using System.Text; using Domain; using Dao; using RCUHost; namespace Service.Implement { public class HostAirManager : GenericManagerBase, IHostAirManager { public IHostRepository HostRepository { get; set; } public IHotelSeasonRepository HotelSeasonRepository { get; set; } public IAirConditionStatusReceiver AirConditionStatusReceiver { get; set; } public IList LoadByHostID(int hostID) { return ((IHostAirRepository)CurrentRepository).LoadByHostID(hostID).OrderBy(r => r.Modal.Sort).ToList(); } /// /// 空调设置整体下发 /// /// /// public void ApplyAirConditionSetting(HostAir entity, Host host) { AirConditionStatusReceiver.SendAirConditionSetting(entity, host); } /// /// 空调单个属性下发 /// /// /// /// /// /// 季节数据 public void SetAirProperty(Host host, int airNo, AirProperty property, int status, byte[] seasonData = null) { AirConditionStatusReceiver.SetAirProperty(host, airNo, property, status, seasonData); if (property == AirProperty.Season) { var result = HotelSeasonRepository.LoadByHotelID(host.SysHotel.ID); if (result == null) { result = new HotelSeason(); } result.SysHotel = host.SysHotel; result.Month1 = (int)seasonData[0]; result.Month2 = (int)seasonData[1]; result.Month3 = (int)seasonData[2]; result.Month4 = (int)seasonData[3]; result.Month5 = (int)seasonData[4]; result.Month6 = (int)seasonData[5]; result.Month7 = (int)seasonData[6]; result.Month8 = (int)seasonData[7]; result.Month9 = (int)seasonData[8]; result.Month10 = (int)seasonData[9]; result.Month11 = (int)seasonData[10]; result.Month12 = (int)seasonData[11]; HotelSeasonRepository.SaveOrUpdate(result); } else { var hostAir = Get(host.ID, airNo); if (hostAir != null) { switch (property) { case AirProperty.ColdHotMode: hostAir.ColdHotMode = status; break; case AirProperty.Mode: hostAir.Mode = status; break; case AirProperty.SettingTemp: hostAir.SettingTemp = status; break; case AirProperty.Speed: hostAir.Speed = status; break; case AirProperty.KeepTemp: hostAir.KeepTemp = status; break; case AirProperty.InitTemp: hostAir.InitTemp = status; break; case AirProperty.DeadTemp: hostAir.DeadTemp = status; break; case AirProperty.LowerTemp: hostAir.LowerTemp = status; break; case AirProperty.HighTemp: hostAir.HightTemp = status; break; case AirProperty.ColdDevition: hostAir.ColdDevition = status; break; case AirProperty.HotDevition: hostAir.HotDevition = status; break; case AirProperty.ColdHotSwitchDelayTime: hostAir.ColdHotSwitchDelayTime = status; break; case AirProperty.WelcomeTime: hostAir.WelcomeTime = status; break; case AirProperty.RelateDoorContact: hostAir.RelateDoorContact = (status != 0); break; case AirProperty.RelateRoomStatus: hostAir.RelateRoomStatus = (status != 0); break; case AirProperty.FanStop: hostAir.FanStop = (status != 0); break; case AirProperty.DisableFanHighSpeed: hostAir.DisableFanHighSpeed = (status != 0); break; } CurrentRepository.Update(hostAir); } } } /// /// 设置空调补偿温度 /// /// /// /// public void SetCompensatoryTemp(Host host, int airNo, float compensatoryTemp) { AirConditionStatusReceiver.SetCompensatoryTemp(host, airNo, compensatoryTemp); var hostAir = GetByModalTypeID(host.ID, airNo); if (hostAir != null) { hostAir.CompensatoryTemp = compensatoryTemp; CurrentRepository.Update(hostAir); } } /// /// 设置空调锁定温度 /// /// /// /// /// public void SetLockTemp(Host host, int airNo, bool isLock, int lockTemp) { AirConditionStatusReceiver.SetLockTemp(host, airNo, isLock, lockTemp); var hostAir = GetByModalTypeID(host.ID, airNo); if (hostAir != null) { hostAir.IsLockTemp = isLock; hostAir.LockTemp = lockTemp; CurrentRepository.Update(hostAir); } } /// /// 设置空调睡眠模式 /// /// /// /// /// /// /// public void SetSleepMode(Host host, int airNo, bool sleepFlag, int sleepDevition, string sleepStartTime, string sleepEndTime) { AirConditionStatusReceiver.SetSleepMode(host, airNo, sleepFlag, sleepDevition, sleepStartTime, sleepEndTime); var hostAir = GetByModalTypeID(host.ID, airNo); if (hostAir != null) { hostAir.SleepFlag = sleepFlag; hostAir.SleepDevition = sleepDevition; hostAir.SleepStartTime = sleepStartTime; hostAir.SleepEndTime = sleepEndTime; CurrentRepository.Update(hostAir); } } /// /// 设置空调定时设置 /// /// /// /// /// /// /// /// /// /// public void SetTimeSetting(Host host, int airNo, bool timeFlag, string startTime1, string endTime1, string startTime2, string endTime2, string startTime3, string endTime3) { AirConditionStatusReceiver.SetTimeSetting(host, airNo, timeFlag, startTime1, endTime1, startTime2, endTime2, startTime3, endTime3); var hostAir = GetByModalTypeID(host.ID, airNo); if (hostAir != null) { hostAir.TimeFlag = timeFlag; hostAir.TimeStartTime1 = startTime1; hostAir.TimeEndTime1 = endTime1; hostAir.TimeStartTime2 = startTime2; hostAir.TimeEndTime2 = endTime2; hostAir.TimeStartTime3 = startTime3; hostAir.TimeEndTime3 = endTime3; CurrentRepository.Update(hostAir); } } #region Override Methods public override void Update(HostAir entity) { base.Update(entity); AirConditionStatusReceiver.SendAirConditionSetting(entity, HostRepository.Get(entity.HostID)); } #endregion public HostAir Get(int hostID, int roomTypeAirId) { return CurrentRepository.LoadAll().OrderBy(r => r.Modal.Sort).FirstOrDefault(r => r.HostID == hostID && r.Modal.ID == roomTypeAirId); } public HostAir GetByModalTypeID(int hostID, int modalTypeId) { return CurrentRepository.LoadAll().OrderBy(r => r.Modal.Sort).FirstOrDefault(r => r.HostID == hostID && r.Modal.ModalType.ID == modalTypeId); } public void Delete(int hostID) { ((IHostAirRepository)CurrentRepository).DeteleByHostID(hostID); } public void Delete(int hostID, int roomTypeAirID) { ((IHostAirRepository)CurrentRepository).DeteleByRoomTypeAirID(hostID, roomTypeAirID); } } }