using APT.BaseData.Domain.IServices; using APT.Infrastructure.Core; using Microsoft.AspNetCore.Mvc; using System.Collections.Generic; using System.Linq; using APT.Utility; using System.Linq.Expressions; using System; namespace APT.FM.WebApi.Controllers.Api.FM { [Route("api/FM/Organization")] public class OrganizationController : AuthorizeTreeApiController { /// /// 查询 /// /// /// [HttpPost, Route("Entities")] public JsonActionResult> Entities([FromBody] KeywordFilter filter) { return WitEntities(null, filter); } /// /// 查询 /// /// /// /// [HttpPost, Route("OrderEntities")] public JsonActionResult> OrderEntities([FromBody] KeywordFilter filter) { return WitOrderEntities(null, filter); } /// /// 查询 /// /// /// /// [HttpPost, Route("NWOrderEntities")] public JsonActionResult> NWOrderEntities([FromBody] KeywordFilter filter) { //filter.FilterGroup.Rules.Add(new FilterRule() { Field = "ID", Operate = FilterOperate.Equal, Value = filter.OrgId }); var orgId = filter.OrgId; filter.OrgId = null; filter.IgnoreOrgRule = true; Expression> expression = t => true; var parentRule = filter.FilterGroup.Rules.FirstOrDefault(i => i.Field == "PARENT_ID"); if (parentRule != null && string.IsNullOrEmpty(parentRule.Value.ToString())) { expression = expression.And(i => i.ID == orgId); } return WitOrderEntities(expression, filter); } /// /// 查询 /// /// /// [HttpPost, Route("Paged")] public PagedActionResult Paged([FromBody] KeywordPageFilter pageFilter) { return WitPaged(null, pageFilter); } /// /// 查询 /// /// /// [HttpPost, Route("OrderPaged")] public PagedActionResult OrderPaged([FromBody] KeywordPageFilter pageFilter) { return WitOrderPaged(null, pageFilter); } /// /// 删除 /// /// /// [HttpGet, Route("Delete")] public JsonActionResult Delete(string id) { return WitRealDelete(id); } /// /// 删除 /// /// /// [HttpGet, Route("NWDelete")] public JsonActionResult NWDelete(string ids) { var isRootOrg = this.GetEntities(x => x.ID == new Guid(ids), new BaseFilter()).FirstOrDefault(); if (isRootOrg == null) { return SafeExecute(() => { return true; }); } else { if (isRootOrg.PARENT_ID == null) return new JsonActionResult() { IsSuccessful = false, ErrorMessage = "根企业不允许删除!" }; else return new JsonActionResult() { IsSuccessful = false, ErrorMessage = "已创建企业建议启用状态改为禁用!" }; } //if (isRootOrg.PARENT_ID == null) //{ // return new JsonActionResult() { IsSuccessful = false, ErrorMessage = "根企业不允许删除!" }; //} //else //{ // return WitRealDelete(ids); //} } /// /// 更新 /// /// /// [HttpPost, Route("Update")] public JsonActionResult Update([FromBody] T_FM_ORGANIZATION entity) { return SafeExecute(() => { this.TreeUpdateEntity(entity); var extConnConfigService = APT.Infrastructure.Api.ServiceLocator.Instance.GetService(); extConnConfigService.SetOrgCache(); return true; }); } /// /// 更新 /// /// /// [HttpPost, Route("NWUpdate")] public JsonActionResult NWUpdate([FromBody] T_FM_ORGANIZATION entity) { if (entity.PARENT_ID == null) { var org = this.GetEntities(x => x.ID == entity.ID, new BaseFilter()); if (org.Any()) { return new JsonActionResult() { IsSuccessful = false, ErrorMessage = "该企业信息无法修改!" }; } else return new JsonActionResult() { IsSuccessful = false, ErrorMessage = "无法新增与根企业同级子企业!" }; } else { return SafeExecute(() => { this.TreeUpdateEntity(entity); var extConnConfigService = APT.Infrastructure.Api.ServiceLocator.Instance.GetService(); extConnConfigService.SetOrgCache(); return true; }); } } /// /// 批量删除 /// /// /// [HttpGet, Route("BatchDelete")] public JsonActionResult BatchDelete(string ids) { return WitRealBatchDelete(ids); } /// /// 获得单条实体数据 /// /// /// [HttpPost, Route("Get")] public JsonActionResult Get([FromBody] KeywordFilter filter) { filter.OrgId = null; filter.IgnoreOrgRule = true; return WitEntity(null, filter); } } }