using APT.BaseData.Domain.IServices.FM; using APT.Infrastructure.Core; using APT.MS.Domain.Entities.BS; using APT.MS.Domain.Entities.HM; using APT.MS.Domain.Enums; using APT.Utility; using APT.WebApi.Models; using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; namespace APT.BS.WebApi.Controllers.Api { [Route("api/BS/BSDepartmentAreaobject")] public partial class BSDepartmentAreaobjectController : AuthorizeApiController { IFMDepartmentService DepartmentService { get; set; } public BSDepartmentAreaobjectController(IFMDepartmentService departmentService) { DepartmentService = departmentService; } /// /// 更新 /// /// /// [HttpPost, Route("FullUpdate")] public JsonActionResult FullUpdate([FromBody] T_BS_DEPARTMENT_AREAOBJECT entity) { return SafeExecute(() => { var check = GetEntity(e => e.DEPARTMENTID == entity.DEPARTMENTID && e.ID != entity.ID && !e.IS_DELETED); if (check != null) { throw new Exception("该部门已经设置过所属范围,操作失败!"); } List listResult = new List(); List listResultAdd = new List(); if (entity.ISDOWNSAME)//下级同步 { List departmentIds = new List() { entity.DEPARTMENTID }; DepartmentService.GetDepartmentIds(entity.ORG_ID.Value, new List() { entity.DEPARTMENTID }, ref departmentIds); departmentIds.Remove(entity.DEPARTMENTID); if (departmentIds.Count > 0) { var listDepartmentObj = GetEntities(e => departmentIds.Contains(e.DEPARTMENTID), null, null); foreach (var item in listDepartmentObj) { departmentIds.Remove(item.DEPARTMENTID); if (item.CHECKOBJECT != entity.CHECKOBJECT) { //不一样 修改 item.CHECKOBJECT = entity.CHECKOBJECT; listResult.Add(item); } } //未设置 添加 if (departmentIds.Count > 0) { foreach (var item in departmentIds) { T_BS_DEPARTMENT_AREAOBJECT temp = new T_BS_DEPARTMENT_AREAOBJECT(); temp.ID = Guid.NewGuid(); temp.CHECKOBJECT = entity.CHECKOBJECT; temp.DEPARTMENTID = item; temp.IS_DELETED = false; temp.ORG_ID = entity.ORG_ID; //temp.ENTITY_ORG_TPYE = ; //temp.FORM_ID = ; //temp.FLOW_STATUS = ; //temp.FLOW_SEND_STATUS = ; //temp.FLOW_ID = ; temp.CREATE_TIME = DateTime.Now; temp.MODIFY_TIME = temp.CREATE_TIME; temp.CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; temp.MODIFIER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; listResultAdd.Add(temp); } } } } this.UnifiedCommit(() => { if (entity != null) UpdateEntityNoCommit(entity); if (listResult.Any()) BantchUpdateEntityNoCommit(listResult); if (listResultAdd.Any()) BantchAddEntityNoCommit(listResultAdd); }); return true; }); } /// /// 分页查询数据 /// /// 分页过滤实体 /// [HttpPost, Route("OrderPagedObject")] public PagedActionResult OrderPagedObject([FromBody] KeywordPageFilter pageFilter) { return SafeGetPagedData(delegate (PagedActionResult result) { BSMineTypeEnum? CHECKOBJECT = null; if (pageFilter.FilterGroup.Groups != null && pageFilter.FilterGroup.Groups.Count > 0) { //BS032 属性 List listGroup = pageFilter.FilterGroup.Groups.ToList(); var listRules = listGroup[0].Rules.ToList(); for (int i = listRules.Count - 1; i > -1; i--) { if (listRules[i].Field == "CHECKOBJECT") { CHECKOBJECT = (BSMineTypeEnum)int.Parse(listRules[i].Value.ToString()); listRules.Remove(listRules[i]); listGroup[0].Rules = listRules; } } pageFilter.FilterGroup.Groups = listGroup; } //else if (pageFilter.FilterGroup.Rules != null && pageFilter.FilterGroup.Rules.Count > 0 && CHECKOBJECT == null)//&& CHECKOBJECT == null 如果没有 CHECKOBJECT 再次 查找 { //BS032 列表 List listRules = pageFilter.FilterGroup.Rules.ToList(); for (int i = listRules.Count - 1; i > -1; i--) { if (listRules[i].Field == "CHECKOBJECT") { CHECKOBJECT = (BSMineTypeEnum)int.Parse(listRules[i].Value.ToString()); listRules.Remove(listRules[i]); } } pageFilter.FilterGroup.Rules = listRules; } Expression> expression = e => e.ORG_ID == pageFilter.OrgId && !e.IS_DELETED; if (CHECKOBJECT == null || CHECKOBJECT == BSMineTypeEnum.All) { //所有区域 PagedActionResult orderPageEntities = GetOrderPageEntities(expression, pageFilter, null); result.Data = orderPageEntities.Data; result.TotalCount = orderPageEntities.TotalCount; } else { var listAreOBJ = GetEntities(e => e.CHECKOBJECT == CHECKOBJECT.Value, null, null); if (listAreOBJ != null && listAreOBJ.Any()) { List listDepID = listAreOBJ.Select(e => e.DEPARTMENTID).Distinct().ToList(); //T_HM_RISK_AREA 中的 DEPARTMENT_ID 有些有值 有些没值 所以暂时放开 比如 有些只有 选矿 就全部出来了 //expression = expression.And(e => e.DEPARTMENT_ID.HasValue && listDepID.Contains(e.DEPARTMENT_ID.Value)); expression = expression.And(e => !e.DEPARTMENT_ID.HasValue || (e.DEPARTMENT_ID.HasValue && listDepID.Contains(e.DEPARTMENT_ID.Value))); PagedActionResult orderPageEntities = GetOrderPageEntities(expression, pageFilter, null); result.Data = orderPageEntities.Data; result.TotalCount = orderPageEntities.TotalCount; } else { result.Data = new List(); result.TotalCount = 0; } } }); } /// /// 分页查询数据 /// /// 分页过滤实体 /// [HttpPost, Route("OrderPagedObjectSub")] public PagedActionResult OrderPagedObjectSub([FromBody] KeywordPageFilter pageFilter) { return SafeGetPagedData(delegate (PagedActionResult result) { List listAreaID = new List(); BSMineTypeEnum? CHECKOBJECT = null; if (pageFilter.FilterGroup.Rules != null && pageFilter.FilterGroup.Rules.Count > 0) { //BS032 列表 List listRules = pageFilter.FilterGroup.Rules.ToList(); for (int i = listRules.Count - 1; i > -1; i--) { if (listRules[i].Field == "CHECKOBJECT") { CHECKOBJECT = (BSMineTypeEnum)int.Parse(listRules[i].Value.ToString()); listRules.Remove(listRules[i]); } else if (listRules[i].Field == "Nav_ListCheckRiskArea") { List listAreaSearch = JsonHelper.FromJson>(listRules[i].Value.ToString()); try { listAreaID = listAreaSearch.FindAll(e => !e.IS_DELETED.HasValue || !e.IS_DELETED.Value).Select(e => e.RISK_AREA_ID).Distinct().ToList(); listRules.Remove(listRules[i]); } catch { } } } pageFilter.FilterGroup.Rules = listRules; } Expression> expression = e => e.ORG_ID == pageFilter.OrgId && !e.IS_DELETED; if (listAreaID.Count > 0) { expression = expression.And(e => listAreaID.Contains(e.ID)); //所有区域 PagedActionResult orderPageEntities = GetOrderPageEntities(expression, pageFilter, null); result.Data = orderPageEntities.Data; result.TotalCount = orderPageEntities.TotalCount; } else if (CHECKOBJECT == null || CHECKOBJECT == BSMineTypeEnum.All) { //所有区域 PagedActionResult orderPageEntities = GetOrderPageEntities(expression, pageFilter, null); result.Data = orderPageEntities.Data; result.TotalCount = orderPageEntities.TotalCount; } else { var listAreOBJ = GetEntities(e => e.CHECKOBJECT == CHECKOBJECT.Value, null, null); if (listAreOBJ != null && listAreOBJ.Any()) { List listDepID = listAreOBJ.Select(e => e.DEPARTMENTID).Distinct().ToList(); expression = expression.And(e => e.DEPARTMENT_ID.HasValue && listDepID.Contains(e.DEPARTMENT_ID.Value)); PagedActionResult orderPageEntities = GetOrderPageEntities(expression, pageFilter, null); result.Data = orderPageEntities.Data; result.TotalCount = orderPageEntities.TotalCount; } else { result.Data = new List(); result.TotalCount = 0; } } }); } } public class AreaSearch { public Guid RISK_AREA_ID { get; set; } public Guid ID { get; set; } public Guid SAFE_CHECK_ID { get; set; } public Guid ORG_ID { get; set; } public bool? IS_DELETED { get; set; } //"Nav_RiskArea": { // "NAME": "破碎车间-粗碎单元" //}, } }