public async Task <ActionResult <BaseResponse> > GetProjectsByParentIdAsync(string GroupId, int Id, [FromQuery] ProjectPageRequest req) { var GId = User.Claims.FirstOrDefault(a => a.Type == "GroupId").Value; var isAdmin = User.Claims.FirstOrDefault(a => a.Type == "IsAdmin").Value.ToLower() == "true" ? true : false; string Code = User.Claims.FirstOrDefault(a => a.Type == "Code").Value; //string Account = User.Claims.FirstOrDefault(a => a.Type == "Account").Value; string Roles = User.Claims.FirstOrDefault(a => a.Type == "Role").Value; string pathId; string groupId; //检查数据的项目或者场站编号是否存在 bool bRet = _ps.IsExist(Id, out pathId, out groupId); if (!bRet) { return(new BaseResponse { Success = false, Message = "输入的项目或者场站编号不存在" }); } //检查是否有权限(获取项目的路径,如果是顶级项目,则传入当前项目编号) if (pathId == null) //如果是顶级项目,则把当前Id赋值给项目路径 { pathId = Id.ToString(); } else { pathId += "/" + Id; } if (GroupId != groupId) { if (!(isAdmin && Code == _config["Group"]))//非超级管理员 { return(new BaseResponse { Success = false, Message = "用户没有权限" }); } } else { if (!isAdmin) //非管理员 { bRet = await _rp.IsAuth(Roles, pathId, 0); if (!bRet) { return(new BaseResponse { Success = false, Message = "用户没有权限" }); } } } var rm = await _ps.GetChildProjectByIdAsync(Id, req); return(rm); }
//根据项目标示获取项目下的子项目(不含嵌套数据,不包含项目下设备的数量) public async Task <BaseResponse> GetChildProjectByIdAsync(int Id, ProjectPageRequest req) { var data = _pr.FindWithImageAndChildAsync(a => a.ParentId == Id); if (req.ProjectType == 1) //项目 { data = data.Where(a => a.ProjectType == ProjectType.Project); } else if (req.ProjectType == 2)//场站 { data = data.Where(a => a.ProjectType == ProjectType.Site); } if (!string.IsNullOrWhiteSpace(req.Search)) { data = data.Where(a => a.Name.Contains(req.Search)); } int count = data.Count(); string OrderExpression = ""; if (string.IsNullOrEmpty(req.OrderBy)) { OrderExpression = "Id Asc"; } else { OrderExpression = string.Format("{0} {1}", req.OrderBy, req.OrderType); } var list = await data.OrderBy(OrderExpression).Skip((req.PageNo - 1) * req.PageSize).Take(req.PageSize).ToListAsync(); var dtos = _mapper.Map <List <ProjectDto> >(list); //获取项目的区域名称 foreach (var item in dtos) { //获取项目或者场站下设备的数量 if (item.ProjectType == (int)ProjectType.Project) { var sites = await GetProjectSitesIdAsync(item.Id); int num = await _dr.Find(a => sites.Contains(a.ProjectId.Value)).CountAsync(); item.DeviceCount = num; } else { int num = await _dr.Find(a => a.ProjectId == item.Id).CountAsync(); item.DeviceCount = num; } //获取区域名称 if (item.RegionId != null && "" != item.RegionId) { var r = await _rr.FindAsync(item.RegionId, item.GroupId); if (r != null) { item.RegionName = r.Name; } } } var br = new BasePageResponse <List <ProjectDto> >(); br.Success = true; br.Message = "获取数据成功"; br.PageSize = req.PageSize; br.CurrentPage = req.PageNo; br.Count = count; br.TotalPage = (int)Math.Ceiling((decimal)count / req.PageSize); br.Data = dtos; return(br); }