570 lines
24 KiB
C#
570 lines
24 KiB
C#
|
|
using APT.BaseData.Domain.Entities;
|
|||
|
|
using APT.BaseData.Domain.Enums;
|
|||
|
|
using APT.Infrastructure.Core;
|
|||
|
|
using APT.MS.Domain.ApiModel;
|
|||
|
|
using APT.BaseData.Domain.Entities.FM;
|
|||
|
|
using APT.BaseData.Domain.IServices.EX;
|
|||
|
|
using APT.Utility;
|
|||
|
|
using Microsoft.AspNetCore.Mvc;
|
|||
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Linq;
|
|||
|
|
using System.Linq.Expressions;
|
|||
|
|
|
|||
|
|
using APT.Utility;
|
|||
|
|
using APT.BaseData.Domain.ApiModel;
|
|||
|
|
using APT.BaseData.Domain.ApiModel.Platform;
|
|||
|
|
using APT.Infrastructure.Api.Redis;
|
|||
|
|
using System.Configuration;
|
|||
|
|
|
|||
|
|
namespace APT.FM.WebApi.Controllers.Api.FM
|
|||
|
|
{
|
|||
|
|
[Route("api/FM/UserCCQuery")]
|
|||
|
|
[APT.Infrastructure.Api.RootOrg]
|
|||
|
|
public class UserCCQueryController : AuthorizeApiController<T_FM_USER_C_C_QUERY>
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 查询
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="filter"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
[HttpPost, Route("Entities")]
|
|||
|
|
public JsonActionResult<IEnumerable<T_FM_USER_C_C_QUERY>> Entities([FromBody] KeywordFilter filter)
|
|||
|
|
{
|
|||
|
|
return WitEntities(null, filter);
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 查询
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="filter"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
///
|
|||
|
|
|
|||
|
|
[HttpPost, Route("OrderEntities")]
|
|||
|
|
public JsonActionResult<IEnumerable<T_FM_USER_C_C_QUERY>> OrderEntities([FromBody] KeywordFilter filter)
|
|||
|
|
{
|
|||
|
|
return WitOrderEntities(null, filter);
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 查询
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="pageFilter"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
[HttpPost, Route("Paged")]
|
|||
|
|
public PagedActionResult<T_FM_USER_C_C_QUERY> Paged([FromBody] KeywordPageFilter pageFilter)
|
|||
|
|
{
|
|||
|
|
return WitPaged(null, pageFilter);
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 查询
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="pageFilter"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
[HttpPost, Route("OrderPaged")]
|
|||
|
|
public PagedActionResult<T_FM_USER_C_C_QUERY> OrderPaged([FromBody] KeywordPageFilter pageFilter)
|
|||
|
|
{
|
|||
|
|
return WitOrderPaged(null, pageFilter);
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 删除
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="id"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
[HttpGet, Route("Delete")]
|
|||
|
|
public JsonActionResult<bool> Delete(string id)
|
|||
|
|
{
|
|||
|
|
return WitDelete(id);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 更新
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="id"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
[HttpPost, Route("Update")]
|
|||
|
|
public JsonActionResult<bool> Update([FromBody] T_FM_USER_C_C_QUERY entity)
|
|||
|
|
{
|
|||
|
|
return WitUpdate(entity);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 批量删除
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="ids"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
[HttpGet, Route("BatchDelete")]
|
|||
|
|
public JsonActionResult<bool> BatchDelete(string ids)
|
|||
|
|
{
|
|||
|
|
return WitBatchDelete(ids);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 获得单条实体数据
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="filter"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
[HttpPost, Route("Get")]
|
|||
|
|
public JsonActionResult<T_FM_USER_C_C_QUERY> Get([FromBody] KeywordFilter filter)
|
|||
|
|
{
|
|||
|
|
return WitEntity(null, filter);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 查询实体并获取枚举
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="filter"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
[HttpPost, Route("OrderEntitiesOnEnum")]
|
|||
|
|
public JsonActionResult<IEnumerable<T_FM_USER_C_C_QUERY>> OrderEntitiesOnEnum([FromBody] KeywordFilter filter)
|
|||
|
|
{
|
|||
|
|
return SafeExecute<IEnumerable<T_FM_USER_C_C_QUERY>>(() =>
|
|||
|
|
{
|
|||
|
|
var tmps = this.GetOrderEntities<T_FM_USER_C_C_QUERY>(null, filter);
|
|||
|
|
var list = tmps.ToList();
|
|||
|
|
if (list != null && list.Any())
|
|||
|
|
{
|
|||
|
|
list.ForEach(t =>
|
|||
|
|
{
|
|||
|
|
if (t.Nav_Fields != null && t.Nav_Fields.Any())
|
|||
|
|
{
|
|||
|
|
t.Nav_Fields.Where(t1 => t1.DATA_TYPE == (int)PFDataTypeEnum.枚举 && !string.IsNullOrEmpty(t1.ENUM_NAME)).ForEach(t1 =>
|
|||
|
|
{
|
|||
|
|
t1.ENUM_NAME = DataHelper.EnumToString(t1.ENUM_NAME);
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
return list;
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
private void GetDeleteChildGroupId(List<T_FM_USER_C_C_QUERY_GROUP> list, List<Guid> deleteGroupIds)
|
|||
|
|
{
|
|||
|
|
var temps = list.Where(t => deleteGroupIds.Contains(t.PARENT_ID ?? Guid.Empty)).ToList();
|
|||
|
|
temps.ForEach(t =>
|
|||
|
|
{
|
|||
|
|
if (!deleteGroupIds.Contains(t.ID))
|
|||
|
|
deleteGroupIds.Add(t.ID);
|
|||
|
|
this.GetDeleteChildGroupId(list, deleteGroupIds);
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void DoFullUpdate(T_FM_USER_C_C_QUERY entity)
|
|||
|
|
{
|
|||
|
|
var fields = entity.Nav_Fields;
|
|||
|
|
var groups = entity.Nav_Groups;
|
|||
|
|
entity.Nav_Groups = null;
|
|||
|
|
entity.Nav_Fields = null;
|
|||
|
|
if (fields != null && fields.Any())
|
|||
|
|
fields.ForEach(t => t.USER_C_C_QUERY_ID = entity.ID);
|
|||
|
|
if (groups != null && groups.Any())
|
|||
|
|
groups.ForEach(t => t.USER_C_C_QUERY_ID = entity.ID);
|
|||
|
|
|
|||
|
|
List<Guid> deleteFieldIds = new List<Guid>();
|
|||
|
|
List<Guid> deleteGroupIds = new List<Guid>();
|
|||
|
|
var dbEntity = this.GetEntity<T_FM_USER_C_C_QUERY>(entity.ID.ToString(), new string[] { "Nav_Fields", "Nav_Groups" });
|
|||
|
|
if (dbEntity != null)
|
|||
|
|
{
|
|||
|
|
if (dbEntity.Nav_Groups != null)
|
|||
|
|
{
|
|||
|
|
dbEntity.Nav_Groups.ForEach(item =>
|
|||
|
|
{
|
|||
|
|
var group = groups == null ? null : groups.FirstOrDefault(t => t.ID == item.ID);
|
|||
|
|
if (group == null)
|
|||
|
|
deleteGroupIds.Add(item.ID);
|
|||
|
|
if (group != null)
|
|||
|
|
{
|
|||
|
|
group.CREATER_ID = item.CREATER_ID;
|
|||
|
|
group.CREATE_TIME = item.CREATE_TIME;
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
this.GetDeleteChildGroupId(dbEntity.Nav_Groups.ToList(), deleteGroupIds);
|
|||
|
|
}
|
|||
|
|
if (dbEntity.Nav_Fields != null)
|
|||
|
|
{
|
|||
|
|
dbEntity.Nav_Fields.ForEach(item =>
|
|||
|
|
{
|
|||
|
|
var field = fields == null ? null : fields.FirstOrDefault(t => t.ID == item.ID);
|
|||
|
|
if (field == null || deleteGroupIds.Any(t => t == item.USER_C_C_QUERY_GROUP_ID))
|
|||
|
|
deleteFieldIds.Add(item.ID);
|
|||
|
|
if (field != null)
|
|||
|
|
{
|
|||
|
|
field.CREATER_ID = item.CREATER_ID;
|
|||
|
|
field.CREATE_TIME = item.CREATE_TIME;
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (deleteGroupIds != null && deleteGroupIds.Any())
|
|||
|
|
fields = fields.Where(t => !deleteGroupIds.Contains(t.USER_C_C_QUERY_GROUP_ID ?? Guid.Empty)).ToList();
|
|||
|
|
|
|||
|
|
|
|||
|
|
List<T_FM_USER_C_C_QUERY> updateList = null;
|
|||
|
|
if (entity.IS_DEFAULT && (dbEntity == null || !dbEntity.IS_DEFAULT))
|
|||
|
|
{
|
|||
|
|
updateList = this.GetEntities<T_FM_USER_C_C_QUERY>(t => t.PAGE_FORM_ID == entity.PAGE_FORM_ID && t.ID != entity.ID, new BaseFilter()).ToList();
|
|||
|
|
if (updateList != null && updateList.Any())
|
|||
|
|
{
|
|||
|
|
updateList.ForEach(t =>
|
|||
|
|
{
|
|||
|
|
t.IS_DEFAULT = false;
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
UnifiedCommit(() =>
|
|||
|
|
{
|
|||
|
|
this.UpdateEntityNoCommit(entity);
|
|||
|
|
if (groups != null && groups.Any())
|
|||
|
|
this.BantchSaveEntityNoCommit(groups);
|
|||
|
|
if (fields != null && fields.Any())
|
|||
|
|
this.BantchSaveEntityNoCommit(fields);
|
|||
|
|
if (updateList != null && updateList.Any())
|
|||
|
|
this.BantchUpdateEntityNoCommit(updateList);
|
|||
|
|
if (deleteFieldIds.Any())
|
|||
|
|
this.DeleteEntityNoCommit<T_FM_USER_C_C_QUERY_FIELD>(t => deleteFieldIds.Contains(t.ID));
|
|||
|
|
if (deleteGroupIds.Any())
|
|||
|
|
this.DeleteEntityNoCommit<T_FM_USER_C_C_QUERY_GROUP>(t => deleteGroupIds.Contains(t.ID));
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 更新
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="id"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
[HttpPost, Route("FullUpdate")]
|
|||
|
|
public JsonActionResult<bool> FullUpdate([FromBody] T_FM_USER_C_C_QUERY entity)
|
|||
|
|
{
|
|||
|
|
return SafeExecute<bool>(() =>
|
|||
|
|
{
|
|||
|
|
this.DoFullUpdate(entity);
|
|||
|
|
return true;
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 删除
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="id"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
[HttpGet, Route("FullDelete")]
|
|||
|
|
public JsonActionResult<bool> FullDelete(string id)
|
|||
|
|
{
|
|||
|
|
return SafeExecute<bool>(() =>
|
|||
|
|
{
|
|||
|
|
if (string.IsNullOrEmpty(id)) return false;
|
|||
|
|
var tmpsIds = this.GetEntities<T_FM_USER_C_C_QUERY_FIELD>(t => t.USER_C_C_QUERY_ID == new Guid(id), new BaseFilter()).
|
|||
|
|
Select(t => t.ID).ToList();
|
|||
|
|
if (tmpsIds != null && tmpsIds.Any())
|
|||
|
|
foreach (var item in tmpsIds)
|
|||
|
|
this.DeleteEntity<T_FM_USER_C_C_QUERY_FIELD>(item.ToString());
|
|||
|
|
this.DeleteEntity<T_FM_USER_C_C_QUERY>(id);
|
|||
|
|
return true;
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
///更新是否默认值
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="filter"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
[HttpPost, Route("UpdateIsDefault")]
|
|||
|
|
public JsonActionResult<bool> UpdateIsDefault([FromBody] KeywordFilter filter)
|
|||
|
|
{
|
|||
|
|
return SafeExecute<bool>(() =>
|
|||
|
|
{
|
|||
|
|
string id = filter.Keyword;//查询方案ID
|
|||
|
|
bool isDefault = string.IsNullOrEmpty(filter.Parameter1) ? false : LibUtils.ToBoolean(filter.Parameter1);//是否默认
|
|||
|
|
if (string.IsNullOrEmpty(id)) return false;
|
|||
|
|
var query = this.GetEntity<T_FM_USER_C_C_QUERY>(id);
|
|||
|
|
if (query == null) return false;
|
|||
|
|
query.IS_DEFAULT = isDefault;
|
|||
|
|
|
|||
|
|
List<T_FM_USER_C_C_QUERY> updateList = null;
|
|||
|
|
if (isDefault)
|
|||
|
|
{
|
|||
|
|
updateList = this.GetEntities<T_FM_USER_C_C_QUERY>(t => t.PAGE_FORM_ID == query.PAGE_FORM_ID && t.ID != query.ID, new BaseFilter()).ToList();
|
|||
|
|
if (updateList != null && updateList.Any())
|
|||
|
|
{
|
|||
|
|
updateList.ForEach(t =>
|
|||
|
|
{
|
|||
|
|
t.IS_DEFAULT = false;
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
this.UpdateEntity(query);
|
|||
|
|
if (updateList != null && updateList.Any())
|
|||
|
|
this.BantchUpdateEntity(updateList);
|
|||
|
|
return true;
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 获取用户查询配置并且查询字段
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="filter"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
[HttpPost, Route("GetQueryFieldByUserQuery")]
|
|||
|
|
public JsonActionResult<UserCCQueryModel> GetQueryFieldByUserQuery([FromBody] KeywordFilter filter)
|
|||
|
|
{
|
|||
|
|
return base.SafeExecute(() =>
|
|||
|
|
{
|
|||
|
|
string formIdStr = filter.Keyword;//表单ID;
|
|||
|
|
string queryId = filter.Parameter1;//用户自定义查询方案ID
|
|||
|
|
string userId = filter.Parameter2;//用户ID
|
|||
|
|
string code = filter.Parameter3;//编号
|
|||
|
|
bool isCopyFromSys = string.IsNullOrEmpty(filter.Parameter4) ? false : LibUtils.ToBoolean(filter.Parameter4);//从系统查询中拷贝
|
|||
|
|
string copyCCQueryId = filter.Parameter5;//拷贝Id
|
|||
|
|
UserCCQueryModel model = new UserCCQueryModel();
|
|||
|
|
if (string.IsNullOrEmpty(formIdStr))
|
|||
|
|
throw new Exception("请选择表单ID");
|
|||
|
|
var redisCode = string.Format(RedisCacheKey.TableUserConfigRedisKey, queryId,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.GetClient().Get<UserCCQueryModel>(redisCode);
|
|||
|
|
}
|
|||
|
|
//var baseFilter = new BaseFilter();
|
|||
|
|
//baseFilter.SelectField = new string[] { "ID", "CODE" };
|
|||
|
|
//baseFilter.IsNoTranking = true;
|
|||
|
|
T_PF_FORM form = this.GetEntity<T_PF_FORM>(formIdStr);
|
|||
|
|
if (form == null)
|
|||
|
|
throw new Exception("无效表单");
|
|||
|
|
var entityOperateService = APT.Infrastructure.Api.ServiceLocator.Instance.GetService<IEntityOperateService>();
|
|||
|
|
Dictionary<string, byte> existFields = new Dictionary<string, byte>();
|
|||
|
|
|
|||
|
|
//Expression<Func<T_PF_FORM_QUERY, bool>> queryExpression = t => t.PAGE_FORM_ID == form.ID;
|
|||
|
|
var formQuerys = this.GetEntitiesByRedis<T_PF_FORM_QUERY>(null, new BaseFilter(filter.GetOrgId()), form.ID.ToString());
|
|||
|
|
var formQuery = formQuerys.FirstOrDefault();
|
|||
|
|
|
|||
|
|
List<T_PF_QUERY> querys = null;
|
|||
|
|
filter.Sort = "NUM";
|
|||
|
|
if (formQuery != null)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
//Expression<Func<T_PF_QUERY, bool>> expression = t => t.PAGE_FORM_QUERY_ID == formQuery.ID;
|
|||
|
|
//if (!string.IsNullOrEmpty(code))
|
|||
|
|
// expression = expression.And(t => t.CODE == code);
|
|||
|
|
//querys = this.GetEntities<T_PF_QUERY>(expression, new BaseFilter()).ToList();
|
|||
|
|
|
|||
|
|
querys = this.GetEntitiesByRedis<T_PF_QUERY>(null, new BaseFilter(filter.GetOrgId()), formQuery.ID.ToString())
|
|||
|
|
.ToList();
|
|||
|
|
|
|||
|
|
if (!string.IsNullOrEmpty(code))
|
|||
|
|
querys = querys.Where(t => t.CODE == code).ToList();
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
List<string> expandFields = null;
|
|||
|
|
if (!string.IsNullOrEmpty(queryId))
|
|||
|
|
{
|
|||
|
|
//var userCCQuery = this.GetEntity<T_FM_USER_C_C_QUERY>(queryId, new string[] { "Nav_Fields", "Nav_Groups" });
|
|||
|
|
T_FM_USER_C_C_QUERY userCCQuery = null;
|
|||
|
|
userCCQuery = GetCCQueryByRedis(filter, queryId);
|
|||
|
|
if (userCCQuery == null)
|
|||
|
|
{
|
|||
|
|
T_FM_USER_C_C_QUERY copyUserCCQuery = string.IsNullOrEmpty(copyCCQueryId) ? null :
|
|||
|
|
GetCCQueryByRedis(filter, copyCCQueryId);
|
|||
|
|
|
|||
|
|
userCCQuery = new T_FM_USER_C_C_QUERY();
|
|||
|
|
userCCQuery.ID = new Guid(queryId);
|
|||
|
|
userCCQuery.ORG_ID = filter.OrgId;
|
|||
|
|
if (copyUserCCQuery != null)
|
|||
|
|
{
|
|||
|
|
CopyUtils.CopyObject(userCCQuery, copyUserCCQuery);
|
|||
|
|
userCCQuery.TITLE = userCCQuery.TITLE + "-副本";
|
|||
|
|
}
|
|||
|
|
userCCQuery.PAGE_FORM_ID = form.ID;
|
|||
|
|
|
|||
|
|
//拷贝系统查询方案
|
|||
|
|
if (isCopyFromSys && querys != null && querys.Any())
|
|||
|
|
{
|
|||
|
|
userCCQuery.Nav_Fields = new List<T_FM_USER_C_C_QUERY_FIELD>();
|
|||
|
|
querys.ForEach(t =>
|
|||
|
|
{
|
|||
|
|
T_FM_USER_C_C_QUERY_FIELD field = new T_FM_USER_C_C_QUERY_FIELD();
|
|||
|
|
field.ORG_ID = userCCQuery.ORG_ID;
|
|||
|
|
field.USER_C_C_QUERY_ID = userCCQuery.ID;
|
|||
|
|
CopyUtils.CopyObject(field, t);
|
|||
|
|
if (!string.IsNullOrEmpty(code))
|
|||
|
|
field.CODE = code;
|
|||
|
|
field.IS_SYS_QUERY_FIELD = true;
|
|||
|
|
userCCQuery.Nav_Fields.Add(field);
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
Dictionary<Guid, Guid?> groupIdRelations = new Dictionary<Guid, Guid?>();//拷贝分组ID和新增分组ID对应关系列表
|
|||
|
|
|
|||
|
|
//拷贝已有的自定义查询方案 分组
|
|||
|
|
if (copyUserCCQuery != null && copyUserCCQuery.Nav_Groups != null && copyUserCCQuery.Nav_Groups.Any())
|
|||
|
|
{
|
|||
|
|
var tmps = copyUserCCQuery.Nav_Groups.OrderBy(t => t.NUM).ToList();
|
|||
|
|
userCCQuery.Nav_Groups = new List<T_FM_USER_C_C_QUERY_GROUP>();
|
|||
|
|
this.GetGroupByList(tmps, null, null, userCCQuery, code, groupIdRelations);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//拷贝已有的自定义查询方案 字段
|
|||
|
|
if (copyUserCCQuery != null && copyUserCCQuery.Nav_Fields != null && copyUserCCQuery.Nav_Fields.Any())
|
|||
|
|
{
|
|||
|
|
var tmps = copyUserCCQuery.Nav_Fields.OrderBy(t => t.NUM).ToList();
|
|||
|
|
userCCQuery.Nav_Fields = new List<T_FM_USER_C_C_QUERY_FIELD>();
|
|||
|
|
tmps.ForEach(t =>
|
|||
|
|
{
|
|||
|
|
Guid? currGroupId = null;
|
|||
|
|
if (t.USER_C_C_QUERY_GROUP_ID != null)
|
|||
|
|
{
|
|||
|
|
if (!groupIdRelations.TryGetValue(t.USER_C_C_QUERY_GROUP_ID.Value, out currGroupId))
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
T_FM_USER_C_C_QUERY_FIELD field = new T_FM_USER_C_C_QUERY_FIELD();
|
|||
|
|
field.ORG_ID = userCCQuery.ORG_ID;
|
|||
|
|
CopyUtils.CopyObject(field, t);
|
|||
|
|
field.USER_C_C_QUERY_ID = userCCQuery.ID;
|
|||
|
|
field.USER_C_C_QUERY_GROUP_ID = currGroupId;
|
|||
|
|
if (!string.IsNullOrEmpty(code))
|
|||
|
|
field.CODE = code;
|
|||
|
|
userCCQuery.Nav_Fields.Add(field);
|
|||
|
|
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
var customConfigs = this.GetEntitiesByRedis<T_FM_USER_CUSTOM_CONFIG>(null, new BaseFilter(filter.GetOrgId()), userId);
|
|||
|
|
var customConfig = customConfigs.FirstOrDefault();
|
|||
|
|
|
|||
|
|
if (customConfig == null)
|
|||
|
|
{
|
|||
|
|
customConfig = new T_FM_USER_CUSTOM_CONFIG();
|
|||
|
|
customConfig.ORG_ID = filter.OrgId;
|
|||
|
|
customConfig.USER_ID = new Guid(userId);
|
|||
|
|
this.AddEntity(customConfig);
|
|||
|
|
}
|
|||
|
|
userCCQuery.USER_CUSTOM_CONFIG_ID = customConfig.ID;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
model.Nav_UserCCQuery = userCCQuery;
|
|||
|
|
if (userCCQuery != null && userCCQuery.Nav_Fields != null && userCCQuery.Nav_Fields.Any())
|
|||
|
|
{
|
|||
|
|
Dictionary<string, byte> expandFieldDic = new Dictionary<string, byte>();
|
|||
|
|
model.Nav_UserCCQuery.Nav_Fields.ForEach(t =>
|
|||
|
|
{
|
|||
|
|
if (t.IS_SYS_QUERY_FIELD || !string.IsNullOrEmpty(t.QUERY_NAME)) return;
|
|||
|
|
var tmps = t.QUERY_NAME.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries).ToList();
|
|||
|
|
if (tmps.Count >= 1)
|
|||
|
|
{
|
|||
|
|
tmps.RemoveAt(tmps.Count - 1);
|
|||
|
|
var expand = string.Join(".", tmps);
|
|||
|
|
if (!expandFieldDic.ContainsKey(expand))
|
|||
|
|
expandFieldDic.Add(expand, 0);
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
expandFields = expandFieldDic.Keys.ToList();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
var fields = entityOperateService.GetEntityFieldsByQueryFormId(form.ID, code, string.Empty, string.Empty, expandFields, filter);
|
|||
|
|
if (fields != null && fields.Any())
|
|||
|
|
fields.ForEach(t => model.Nav_Fields.Add(t));
|
|||
|
|
CsRedisManager.GetClient().Set(redisCode, model);
|
|||
|
|
return model;
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private T_FM_USER_C_C_QUERY GetCCQueryByRedis(KeywordFilter filter, string queryId)
|
|||
|
|
{
|
|||
|
|
T_FM_USER_C_C_QUERY userCCQuery = this.GetEntityByRedis<T_FM_USER_C_C_QUERY>(queryId, filter.GetOrgId());
|
|||
|
|
if (userCCQuery != null)
|
|||
|
|
{
|
|||
|
|
var fileds = this.GetEntitiesByRedis<T_FM_USER_C_C_QUERY_FIELD>(filter)
|
|||
|
|
.Where(t => t.USER_C_C_QUERY_ID == userCCQuery.ID).ToList();
|
|||
|
|
userCCQuery.Nav_Fields = fileds;
|
|||
|
|
|
|||
|
|
var groups = this.GetEntitiesByRedis<T_FM_USER_C_C_QUERY_GROUP>(filter)
|
|||
|
|
.Where(t => t.USER_C_C_QUERY_ID == userCCQuery.ID).ToList();
|
|||
|
|
userCCQuery.Nav_Groups = groups;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return userCCQuery;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void GetGroupByList(List<T_FM_USER_C_C_QUERY_GROUP> list, Guid? parentId, Guid? currParentId, T_FM_USER_C_C_QUERY userCCQuery, string code, Dictionary<Guid, Guid?> groupIdRelations)
|
|||
|
|
{
|
|||
|
|
var tmps = list == null ? null : list.Where(t => t.PARENT_ID == parentId).ToList();
|
|||
|
|
if (tmps == null || !tmps.Any()) return;
|
|||
|
|
tmps.ForEach(t =>
|
|||
|
|
{
|
|||
|
|
T_FM_USER_C_C_QUERY_GROUP group = new T_FM_USER_C_C_QUERY_GROUP();
|
|||
|
|
group.ORG_ID = userCCQuery.ORG_ID;
|
|||
|
|
CopyUtils.CopyObject(group, t);
|
|||
|
|
group.USER_C_C_QUERY_ID = userCCQuery.ID;
|
|||
|
|
if (!string.IsNullOrEmpty(code))
|
|||
|
|
group.CODE = code;
|
|||
|
|
group.PARENT_ID = currParentId;
|
|||
|
|
userCCQuery.Nav_Groups.Add(group);
|
|||
|
|
groupIdRelations[t.ID] = group.ID;
|
|||
|
|
GetGroupByList(list, t.ID, group.ID, userCCQuery, code, groupIdRelations);
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 获取查询字段
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="filter"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
[HttpPost, Route("GetQueryFields")]
|
|||
|
|
public JsonActionResult<IEnumerable<EntityFieldByQueryFieldModel>> GetQueryFields([FromBody] KeywordFilter filter)
|
|||
|
|
{
|
|||
|
|
return SafeExecute<IEnumerable<EntityFieldByQueryFieldModel>>(() =>
|
|||
|
|
{
|
|||
|
|
string formIdStr = filter.Keyword;//表单ID;
|
|||
|
|
string curFieldName = filter.Parameter1;//当前字段名称
|
|||
|
|
string tableName = filter.Parameter2;//表名
|
|||
|
|
string lablePrefix = filter.Parameter3;//显示名称前缀
|
|||
|
|
var entityOperateService = APT.Infrastructure.Api.ServiceLocator.Instance.GetService<IEntityOperateService>();
|
|||
|
|
return entityOperateService.GetEntityFieldsByTableName(tableName, curFieldName, lablePrefix, null);
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 保存查询字段默认值
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="entity"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
[HttpPost, Route("SaveQueryFieldDefaultValue")]
|
|||
|
|
public JsonActionResult<bool> SaveQueryFieldDefaultValue([FromBody] T_FM_USER_C_C_QUERY entity)
|
|||
|
|
{
|
|||
|
|
return SafeExecute<bool>(() =>
|
|||
|
|
{
|
|||
|
|
var dbEntity = this.GetEntity<T_FM_USER_C_C_QUERY>(entity.ID.ToString());
|
|||
|
|
dbEntity.Nav_Groups = entity.Nav_Groups;
|
|||
|
|
dbEntity.Nav_Fields = entity.Nav_Fields;
|
|||
|
|
this.DoFullUpdate(dbEntity);
|
|||
|
|
return true;
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|