Ejemplo n.º 1
0
        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,
            };
        }
Ejemplo n.º 2
0
        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>());
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
 public SuperBDevice(TDevice data, string nodeIsid)
 {
     NodeIsid = nodeIsid;
     OrgiData = data;
     HandleDevice(data);
 }
Ejemplo n.º 5
0
        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);
        }