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 Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using APT.Utility; using System.Diagnostics; using APT.BaseData.Domain.ApiModel.Platform; using APT.Infrastructure.Api.Redis; namespace APT.PF.WebApiControllers.Api.PF { [APT.Infrastructure.Api.RootOrg] [Route("api/PF/FormQuery")] public class FormQueryController : AuthorizeApiController { /// /// 查询 /// /// /// [HttpPost, Route("Entities")] public JsonActionResult> Entities([FromBody] KeywordFilter filter) { return WitEntities(null, filter); } /// /// 查询 /// /// /// [HttpPost, Route("OrderEntities")] public JsonActionResult> OrderEntities([FromBody] KeywordFilter filter) { return SafeExecute>(() => { var data = this.GetOrderEntities(null, filter); 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_FORM_QUERY entity) { return SafeExecute(() => { this.UpdateEntity(entity); var formService = APT.Infrastructure.Api.ServiceLocator.Instance.GetService(); formService.CreateFormConfigVersion(PFFormConfigVersionEnum.FormQuery, 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.FormQuery, 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_FORM_QUERY_ID ?? Guid.Empty)); 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.FormQuery, ids); var arrays = string.IsNullOrEmpty(ids) ? null : ids.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries) .Select(t => new Guid(t)).ToList(); if (arrays != null && arrays.Any()) this.DoDelete(arrays); return true; }); } /// /// 根据ID获得实体数据 /// /// /// [HttpPost, Route("Get")] public JsonActionResult Get([FromBody] KeywordFilter filter) { return WitEntity(null, filter); } /// /// 获取编辑页配置信息 /// /// /// [HttpPost, Route("GetSearchConfigInfo")] public JsonActionResult GetSearchConfigInfo([FromBody] KeywordFilter filter) { return SafeExecute(() => { var session = APT.Infrastructure.Api.ServiceLocator.Instance.GetService(); string formId = filter.Parameter1; string code = filter.Parameter2; var formCode = filter.Keyword; var redisCode = string.Format(RedisCacheKey.SearchConfigRedisKey, formCode, formId, code, filter.GetOrgId()); 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); } T_PF_FORM form = null; filter.OrgType = FilterOrgTypeEnum.仅本组织; if (!string.IsNullOrEmpty(formCode)) form = this.GetEntity(i => i.CODE == formCode, new BaseFilter(filter.GetOrgId())); if (form == null) { form = this.GetEntity(formId); if (form == null) return null; } SearchModel result = new SearchModel(); result.Nav_Form = form; Expression> expression = t => t.PAGE_FORM_ID == form.ID; //var formQuery = this.GetEntityByRedis(form.ID.ToString(), filter.OrgId ?? Guid.NewGuid()); var formQuerys = this.GetEntities(expression, new BaseFilter(filter.GetOrgId()), "Nav_Querys").OrderBy(t => t.NUM).ToList(); if (formQuerys != null && formQuerys.Any()) { if (!string.IsNullOrEmpty(code)) formQuerys.ForEach(i => i.Nav_Querys = i.Nav_Querys.Where(x => x.CODE == code).ToList()); } result.Nav_FormQuery = formQuerys; CsRedisManager.StringSet(redisCode, result); return result; }); } } }