/// <summary>
        /// 递归获取车辆分组树结构
        /// </summary>
        /// <param name="root"></param>
        /// <param name="allDeviceGroupCategorys"></param>
        private void GetVDeviceWithGroupTreeByRecursion(VDeviceTree root)
        {
            if (root.Type != EnumDeviceTreeType.DeviceGroup)
            {
                return;
            }
            //获取下一级菜单
            var children = _deviceGroupService.GetAllDeviceGroupsFromCache().Where(p => p.DeviceGroupParentId == root.Id).OrderByDescending(p => p.DeviceGroupOrderId).ToList();
            if (children.Count > 0)
            {

                foreach (var sub in children)
                {
                    var deviceGroupTree = new VDeviceTree() { Id = sub.Id, Type = EnumDeviceTreeType.DeviceGroup, Name = sub.DeviceGroupName };
                    root.Children.Add(deviceGroupTree);
                    var devices = _rep.GetList<EDevice>(0, p => p.DeviceGroupId == deviceGroupTree.Id);
                    foreach (var device in devices)
                    {
                        var deviceTree = new VDeviceTree() { Id = device.Id, Type = EnumDeviceTreeType.Device, Name = device.DeviceName };
                        deviceGroupTree.Children.Add(deviceTree);
                    }

                    GetVDeviceWithGroupTreeByRecursion(deviceGroupTree);
                }
            }
        }
        public VDeviceTree GetVDeviceWithUserTree(int? parentUserId)
        {
            var tree = new VDeviceTree() { Name = "所有客户", Type = EnumDeviceTreeType.User };
            var users = parentUserId.HasValue
                ? _userService.GetUsersByParentUserId(parentUserId.Value)
                : _userService.GetAllUsers();

            foreach (var user in users)
            {
                VDeviceTree deviceUserTree = new VDeviceTree() { Id = user.Id, Name =user.NickName, Type = EnumDeviceTreeType.User };
                tree.Children.Add(deviceUserTree);
                var devices = GetDeviceByUserId(deviceUserTree.Id);
                foreach (var item in devices)
                {
                    var deviceTree = new VDeviceTree() { Id = item.Id, Type = EnumDeviceTreeType.Device, Name = item.DeviceName };
                    deviceUserTree.Children.Add(deviceTree);
                }
            }
            return tree;
        }
        public VDeviceTree GetVDeviceWithGroupTreeByUserId(int userId)
        {
            var root = _deviceGroupService.GetRootDeviceGroupByUserId(userId);
            if (root == null)
            {
                throw new NullReferenceException("没有找到根分组");
            }

            var deviceTree = new VDeviceTree() { Id = root.Id, Type = EnumDeviceTreeType.DeviceGroup, Name = root.DeviceGroupName };
            //获取默认分组和未分组设备
            var devices = _rep.GetList<EDevice>(0, p => (p.DeviceGroupId == root.Id || p.DeviceGroupId == 0) && p.UserId == userId);
            foreach (var device in devices)
            {
                var dt = new VDeviceTree() { Id = device.Id, Type = EnumDeviceTreeType.Device, Name = device.DeviceName };
                deviceTree.Children.Add(dt);
            }
            GetVDeviceWithGroupTreeByRecursion(deviceTree);
            return deviceTree;
        }