using APT.BaseData.Domain.ApiModel; using APT.BaseData.Domain.Entities; using APT.BaseData.Domain.Enums; using APT.BaseData.Domain.IServices; using APT.Infrastructure.Core; using APT.Utility; using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Linq; using APT.Infrastructure.Api; using APT.Utility; using APT.BaseData.Domain.ApiModel.Platform; using APT.Infrastructure.Api.Redis; namespace APT.PF.WebApiControllers.Api.PF { [Route("api/PF/PageTree")] [APT.Infrastructure.Api.RootOrg] public class PageTreeController : AuthorizeApiController { /// /// 查询 /// /// /// [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); return SafeExecute>(() => { var data = this.GetOrderEntities(null, filter); ; data.ForEach(x => { if (x.Nav_Columns != null) x.Nav_Columns.Where(i => !string.IsNullOrEmpty(i.ENUM)) .ForEach(i => i.ENUM = DataHelper.EnumToString(i.ENUM)); }); return data; }); } /// /// 查询 /// /// /// [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); } [HttpPost, Route("Update")] public JsonActionResult Update([FromBody] T_PF_PAGE_TREE entity) { return SafeExecute(() => { this.UpdateEntity(entity); var formService = APT.Infrastructure.Api.ServiceLocator.Instance.GetService(); formService.CreateFormConfigVersion(PFFormConfigVersionEnum.PageTree, entity.ID.ToString()); return true; }); } /// /// 删除 /// /// /// [HttpGet, Route("Delete")] public JsonActionResult Delete(string id) { return SafeExecute(() => { var formService = APT.Infrastructure.Api.ServiceLocator.Instance.GetService(); formService.CreateFormConfigVersion(PFFormConfigVersionEnum.PageTree, id); List ids = new List(); ids.Add(new Guid(id)); this.DoDelete(ids); return true; }); } private void DoDelete(List ids) { this.DeleteEntity(t => ids.Contains(t.PAGE_TREE_ID)); this.DeleteEntity(t => ids.Contains(t.ID)); } /// /// 批量删除 /// /// /// [HttpGet, Route("BatchDelete")] public JsonActionResult BatchDelete(string ids) { return SafeExecute(() => { var formService = APT.Infrastructure.Api.ServiceLocator.Instance.GetService(); formService.CreateFormConfigVersion(PFFormConfigVersionEnum.PageTree, ids); var arrays = string.IsNullOrEmpty(ids) ? null : ids.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries) .Select(t => new Guid(t)).ToList(); if (arrays != null && arrays.Count > 0) this.DoDelete(arrays); return true; }); } /// /// 根据ID获得实体数据 /// /// /// [HttpPost, Route("Get")] public JsonActionResult Get([FromBody] KeywordFilter filter) { //return WitEntity(null, filter); return SafeExecute(() => { var data = this.GetEntity(null, filter); if (data == null) throw new Exception("不存在此表单"); if (data.Nav_Columns != null && data.Nav_Columns.Any(i => !string.IsNullOrEmpty(i.ENUM))) { data.Nav_Columns.Where(i => !string.IsNullOrEmpty(i.ENUM)) .ForEach(i => i.ENUM = DataHelper.EnumToString(i.ENUM)); } return data; }); } /// /// 获取树配置信息 /// /// /// [HttpPost, Route("GetTreePageConfigInfo")] public JsonActionResult GetTreePageConfigInfo([FromBody] KeywordFilter filter) { //return WitEntity(null, filter); return SafeExecute(() => { string formCode = filter.Keyword; if (string.IsNullOrEmpty(formCode)) throw new Exception("表单CODE不允许为空"); filter.OrgType = FilterOrgTypeEnum.仅本组织; var redisCode = string.Format(RedisCacheKey.PageTreeRedisKey, filter.Keyword, filter.OrgId); bool isRedisConfig = true; var redisConfig = APT.Infrastructure.Api.ConfigurationManager.AppSettings["RedisFormConfig"]; if (!string.IsNullOrEmpty(redisConfig)) isRedisConfig = bool.Parse(redisConfig); if (isRedisConfig) { if (CsRedisManager.KeyExists(redisCode)) return CsRedisManager.StringGet(redisCode); } var form = this.GetEntityByRedis(formCode, filter.GetOrgId()); if (form == null) return null; var redisFilter = new BaseFilter(filter.GetOrgId()); redisFilter.Sort = "NUM"; //var pageTree= this.GetEntity(t => t.PAGE_FORM_ID == form.ID); var pageTree = this.GetEntity(t => t.PAGE_FORM_ID == form.ID); if (pageTree == null) return null; TreePageModel result = new TreePageModel(); result.Nav_Form = form; result.Nav_PageTree = pageTree; var columns = this.GetEntitiesByRedis(null, redisFilter, pageTree.ID.ToString()); result.Nav_Columns = columns;// //result.Nav_Columns = this.GetOrderEntities(t => t.PAGE_TREE_ID == pageTree.ID, tmpFilter).ToList(); //重置枚举 if (result.Nav_Columns != null) { result.Nav_Columns.Where(i => !string.IsNullOrEmpty(i.ENUM)) .ForEach(i => i.ENUM = DataHelper.EnumToString(i.ENUM)); } result.Nav_Btns = this.GetEntitiesByRedis(null, redisFilter, pageTree.ID.ToString()); BaseFilter tmpFilter = new BaseFilter(); tmpFilter.Sort = "NUM"; tmpFilter.Order = DbOrder.ASC; tmpFilter.OrgType = FilterOrgTypeEnum.仅本组织; tmpFilter.SelectField = new string[] { "Nav_Picture.CODE", "NUM", "Nav_PicFilterDetail.NAME", "Nav_PicFilterDetail.FIELD_TYPE", "Nav_PicFilterDetail.OPERATE", "Nav_PicFilterDetail.VALUE" }; result.Nav_PicFilter = this.GetEntities(i => i.PAGE_FORM_ID == form.ID, tmpFilter).ToList(); CsRedisManager.StringSet(redisCode, result); return result; }); } } }