private void HandleDevice(TDevice data) { Device = new DevModel() { addrRes = new AddResource(), dvBrandid = "", dvIsid = Uuid.Create16Token(), managerIsid = cfg.AppSettings["managerIsid"], nodeIsid = NodeIsid, dvTypeCode = "37", dvName = data.Name, }; DbData = new SqlTDevice() { beginRunTime = SuperBTagBase.Transfer(data.BeginRunTime), devTypeId = (int)data.DeviceType, objDesc = data.Des, objId = data.ID, parentId = data.ParentID, objName = data.Name, objTypeId = (int)data.Type, productor = data.Productor, version = data.Version, }; }
public async Task <TDevice> RegisterDevice <TDevice>() where TDevice : RegisteredDevice, new() { TDevice device = await this.GetDevice <TDevice>(); Type type = typeof(TDevice); string typeName = type.FullName; if (device != null) { throw new Exception($"Device '{typeName}' is already registered"); } var poco = new TDevice() { Name = typeName, }; using (var uow = new UnitOfWork <RegisteredDevice, RomiDbContext>()) { await Task.Run(() => uow.Repository().Add(poco)); } return(await this.GetDevice <TDevice>()); }
public bool Update(TDevice data) { if (data == null) { return(false); } if (OrgiData == null) { OrgiData = data; HandleDevice(data); return(true); } if (data.ID != OrgiData.ID) { return(false); } bool isUpdated = false; if (OrgiData.Name != data.Name) { OrgiData.Name = data.Name; DbData.objName = data.Name; isUpdated = true; } if (OrgiData.ParentID != data.ParentID) { OrgiData.ParentID = data.ParentID; DbData.parentId = data.ParentID; isUpdated = true; } if (OrgiData.Des != data.Des) { OrgiData.Des = data.Des; DbData.objDesc = data.Des; isUpdated = true; } if (OrgiData.Type != data.Type) { OrgiData.Type = data.Type; DbData.objTypeId = (int)data.Type; isUpdated = true; } if (OrgiData.Productor != data.Productor) { OrgiData.Productor = data.Productor; DbData.productor = data.Productor; isUpdated = true; } if (OrgiData.DeviceType != data.DeviceType) { OrgiData.DeviceType = data.DeviceType; DbData.devTypeId = (int)data.DeviceType; isUpdated = true; } if (OrgiData.Version != data.Version) { OrgiData.Version = data.Version; DbData.version = data.Version; isUpdated = true; } if (OrgiData.BeginRunTime != data.BeginRunTime) { OrgiData.BeginRunTime = data.BeginRunTime; DbData.beginRunTime = SuperBTagBase.Transfer(data.BeginRunTime); isUpdated = true; } return(isUpdated); }
public SuperBDevice(TDevice data, string nodeIsid) { NodeIsid = nodeIsid; OrgiData = data; HandleDevice(data); }
public async Task <bool> UpdateOrAddDevice(TDevice data) { var node = nodemap.Find(m => m.objId == data.ParentID); if (node == null) { return(false); //没有父节点,返回 } var dev = DevList.Find(n => n.OrgiData.ID == data.ID); if (dev == null) //新增设备,返回新增的设备,等web新增成功,插入数据库 { dev = new SuperBDevice(data, node.nodeIsid); var map = new SqlDeviceMap() { devIsid = dev.Device.dvIsid, objId = data.ID, groupIsid = Uuid.Create16Token() }; var req = await HttpUtil.PostAsync($"http://{cfg.AppSettings["serverUrl"]}/inIoT/devServer/deviceRes", JsonSrialize.Srialize(new DevModel() { dvIsid = dev.Device.dvIsid, dvName = dev.Device.dvName, dvTypeCode = dev.Device.dvTypeCode, managerIsid = cfg.AppSettings["managerIsid"], nodeIsid = dev.NodeIsid, addrRes = new MqttCommon.Setup.AddResource() { communicationType = 1, dvAddr1 = "1.1.1.1", dvAddr2 = "2222" } }), SuperBCenter.ServerToken); if (req == null || req.codeid != 0) { return(false); } try { await _db.tDevice.AddAsync(dev.DbData); if (!devicemap.Exists(d => d.objId == dev.OrgiData.ID && d.devIsid == dev.NodeIsid)) { await _db.devicemap.AddAsync(map); devicemap.Add(map); } await _db.SaveChangesAsync(); DevList.Add(dev); } catch (Exception ex) { LogHelper.Error(ex); return(false); } } else { if (!devicemap.Exists(d => d.objId == dev.OrgiData.ID && d.devIsid == dev.Device.dvIsid)) { return(false); } if (dev.Update(data)) { try { _db.tDevice.Update(dev.DbData); await _db.SaveChangesAsync(); } catch (Exception ex) { LogHelper.Error(ex); return(false); } } } return(true); }