using APT.BaseData.Domain.Entities.FM; using APT.Infrastructure.Core; using APT.MS.Domain.Entities.BS; using APT.MS.Domain.Entities.DM; using APT.MS.Domain.Entities.HM; using APT.MS.Domain.Entities.SC.BI; using APT.Utility; using Microsoft.AspNetCore.Mvc; using System; using System.Linq; namespace APT.SC.WebApi.Controllers.Api.BIController { /// /// /// [Route("api/BI/BIAreaTree")] public partial class AreaTreeController : AuthorizeTreeApiController { /// /// /// /// /// [HttpPost, Route("GetAll")] public JsonActionResult GetAll([FromBody] KeywordFilter filter) { return SafeExecute(() => { T_BI_AREA_TREE main = new T_BI_AREA_TREE(); var id = filter.FilterGroup.Rules.FirstOrDefault(t => t.Field == "ID").Value.ToString(); if (string.IsNullOrEmpty(id)) throw new Exception("未选中区域"); var entity = this.GetEntity(id, "Nav_Department"); if (entity != null) { if (entity.DEPARTMENT_ID != null) { var users = this.GetEntities(t => t.DEPARTMENT_ID == entity.DEPARTMENT_ID, new BaseFilter(entity.ORG_ID), "Nav_Department", "Nav_Person", "Nav_Person.Nav_Post"); if (users != null && users.Any()) { entity.Nav_User = users.ToList(); } var postIds = users.Where(m => m.Nav_Person != null).Select(t => t.Nav_Person.POST_ID).ToList(); var posts = this.GetEntities(t => postIds.Contains(t.ID), new BaseFilter(entity.ORG_ID)); if (posts != null && posts.Any()) { entity.Nav_Post = posts.ToList(); } var devices = this.GetEntities(t => t.DEPARTMENT_ID == entity.DEPARTMENT_ID && postIds.Contains(t.USER_POST_ID), new BaseFilter(entity.ORG_ID)); if (devices != null && devices.Any()) { entity.Nav_Device = devices.ToList(); } } var risks = this.GetEntities(t => t.AREA_ID == entity.ID, new BaseFilter(entity.ORG_ID)); if (risks != null && risks.Any()) { entity.Nav_Risk = risks.ToList(); } var submits = this.GetEntities(t => t.RISK_AREA_ID == entity.ID, new BaseFilter(entity.ORG_ID)); if (submits != null && submits.Any()) { entity.Nav_Submit = submits.ToList(); } var checkAeas = this.GetEntities(t => t.RISK_AREA_ID == entity.ID, new BaseFilter(entity.ORG_ID)); var checkIds = checkAeas.Select(t => t.SAFE_CHECK_ID).Distinct().ToList(); var checks = this.GetEntities(t => checkIds.Contains(t.ID), new BaseFilter(entity.ORG_ID)); if (checks != null && checks.Any()) { entity.Nav_Check = checks.ToList(); } } return entity; }); } } }