/// <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; }