/// <summary> /// 初始化设备相关信息 /// </summary> /// <param name="model"></param> /// <param name="properties"></param> private void InitDeviceModel(RestaurantDevice model, List <string> properties) { model.DeviceTypeId = LampblackConfig.DeviceTypeGuid; properties.Add("DeviceTypeId"); model.FirmwareSetId = LampblackConfig.FirmwareSetGuid; properties.Add("FirmwareSetId"); }
public DbEntityValidationException AddOrUpdateRestaurantDevice(RestaurantDevice model, List <string> propertyNames) { using (var repo = Repo <RestaurantDeviceRepository>()) { try { if (model.Id == Guid.Empty) { var dbModel = repo.CreateDefaultModel(); foreach (var propertyName in propertyNames) { dbModel.GetType().GetProperty(propertyName).SetValue(dbModel, model.GetType().GetProperty(propertyName).GetValue(model)); } repo.AddOrUpdateDoCommit(dbModel); } else { repo.PartialUpdateDoCommit(model, propertyNames); } } catch (DbEntityValidationException ex) { return(ex); } } return(null); }
public MonitorData GetDeviceCleanerCurrent(RestaurantDevice device, DateTime checkDateTime) { using (var repo = Repo <MonitorDataRepository>()) { var datas = repo.GetModels(data => data.ProjectIdentity == device.Project.Identity && data.CommandDataId == CommandDataId.CleanerCurrent && data.UpdateTime > checkDateTime).ToList(); return(datas.FirstOrDefault(obj => obj.DeviceIdentity == device.Identity)); } }
/// <summary> /// 获取风扇运行时间 /// </summary> /// <param name="dev"></param> /// <returns></returns> private string GetFanRunTimeString(RestaurantDevice dev) { using (var repo = Repo <RunningTimeRepository>()) { var today = DateTime.Parse($"{DateTime.Now.Year}-{DateTime.Now.Month}-{DateTime.Now.Day}"); var tomorrow = today.AddDays(1); var ticks = repo.GetModels(r => r.Type == RunningTimeType.Fan && r.ProjectIdentity == dev.Project.Identity && r.DeviceIdentity == dev.Identity && r.UpdateTime > today && r.UpdateTime < tomorrow) .Select(item => item.RunningTimeTicks) .DefaultIfEmpty(0) .Sum(obj => obj); var timeSpan = TimeSpan.FromTicks(ticks); return($"{timeSpan.Hours}小时{timeSpan.Minutes}分{timeSpan.Seconds}秒"); } }
/// <summary> /// 获取设备最新数据 /// </summary> /// <param name="dev"></param> /// <returns></returns> private List <MonitorData> GetLastMonitorData(RestaurantDevice dev) { var checkDate = DateTime.Now.Trim(TimeSpan.TicksPerSecond).AddMinutes(-2); using (var dataRepo = Repo <MonitorDataRepository>()) { var protocol = Repo <ProtocolDataRepository>().GetModels(obj => obj.DeviceIdentity == dev.Identity) .OrderByDescending(d => d.UpdateTime).FirstOrDefault(); if (protocol == null || protocol.UpdateTime < checkDate) { return(new List <MonitorData>()); } var datas = dataRepo.GetModels(data => data.ProjectIdentity == dev.Project.Identity && data.ProtocolDataId == protocol.Id).ToList(); return(datas); } }
public ActionResult EditDevice(RestaurantDevice model) { var propertyNames = Request.Form.AllKeys.Where(field => field != "Id" && field != "X-Requested-With").ToList(); if (model.Id == Guid.Empty) { InitDeviceModel(model, propertyNames); } var exception = ProcessInvoke <RestaurantDeviceProcess>().AddOrUpdateRestaurantDevice(model, propertyNames); if (exception != null) { GetDeviceRelatedItems(); return(View(model)); } return(RedirectToAction("SubmitSuccess", "Common", new { targetAction = "EditDevice", targetcontroller = "Management", target = "slide-up-content", postform = "device" })); }