using Microsoft.EntityFrameworkCore.Storage;
using System;
using System.Collections;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Linq;
using System.Linq.Expressions;
using System.Threading.Tasks;
using APT.Infrastructure.Core;
namespace APT.Infrastructure.Api
{
public abstract class CommonApiController : BaseApiController
{
///
/// 获取操作单元
///
///
///
public IUnitOfWork GetUnitOfWork() where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.UnitWork();
}
readonly ServiceLocator _serviceLocator = ServiceLocator.Instance;
#region old query
///
/// 查询实体
///
///
///
///
///
public T GetEntity(string id, params string[] paths) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.GetEntity(id, paths);
}
///
/// 查询实体
///
///
///
///
///
public T GetEntity(Guid id, params string[] paths) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.GetEntity(id, paths);
}
///
/// 查询实体
///
///
///
///
///
public T GetEntity(Expression> expression, params string[] paths) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.GetEntity(expression, paths);
}
///
/// 查询实体
///
///
///
///
///
public T GetEntity(Expression> expression, BaseFilter fiter, params string[] paths) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.GetEntity(expression, fiter, paths);
}
///
/// 获取所有数据
///
///
///
///
///
///
public IEnumerable GetEntities(Expression> expression, BaseFilter filter, params string[] paths) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.GetEntities(expression, filter, paths);
}
///
/// 获取所有数据
///
/// 类型
/// 排序
/// lambd表达式
/// 过滤器
/// 需要关联查询的数据
///
public IEnumerable ActionOrderEntities(Action> orderBy, Expression> expression, BaseFilter filter, params string[] paths) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.GetOrderEntities(expression, filter, orderBy, paths);
}
///
/// 获取所有数据
///
/// 类型
/// lambd表达式
/// 过滤器
/// 需要关联查询的数据
///
public IEnumerable GetOrderEntities(Expression> expression, BaseFilter filter, params string[] paths) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.GetOrderEntities(expression, filter, paths);
}
///
/// 排序获取数据
///
///
///
///
///
///
///
///
public IEnumerable GetOrderEntities(Expression> expression, BaseFilter filter, string sort, string order, params string[] paths) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.GetOrderEntities(expression, filter, sort, order, paths);
}
///
/// 排序获取数据
///
///
///
///
///
///
///
///
public IEnumerable GetOrderEntities(Expression> expression, Dictionary orders, BaseFilter filter, params string[] paths) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.GetOrderEntities(expression, filter, orders, paths);
}
/////
///// 获取实体集合
/////
/////
/////
//public PagedActionResult GetPageEntities(CommonPageFilter filter) where T : MesEntityBase, new()
//{
// _serviceLocator.RegisterType(typeof(CommonService), typeof(ICommonService));
// var commonService = _serviceLocator.GetService>();
// Expression> expression = t => true;
// if (!string.IsNullOrEmpty(filter.Cid))
// expression.And(i => i.CID == filter.Cid);
// var page = commonService.GetPagerIEnumerable(expression, filter.Start, filter.Limit);
// return new PagedActionResult(page.Items, page.TotalCount);
//}
///
///获取实体集合
///
///
///
///
///
///
public PagedActionResult GetPageEntities(Expression> expression, BasePageFilter filter, params string[] paths) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
filter.Sort = "ID";
var page = commonService.GetPageEntities(expression, filter, paths);
return new PagedActionResult(page.Items, page.TotalCount);
}
public IEnumerable> GetTreeOrderEntities(Expression> expression, BaseFilter filter, params string[] paths) where T : TreeEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.GetTreeOrderEntities(expression, filter, (!filter?.IsNoTranking) ?? true, paths);
}
///
///获取排序的实体集合
///
///
///
///
///
///
public PagedActionResult ActionOrderPageEntities(Action> orderBy, Expression> expression, BasePageFilter filter, params string[] paths) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
var page = commonService.GetOrderPageEntities(expression, filter, null, 0, 0, orderBy, (!filter?.IsNoTranking) ?? true, paths);
return new PagedActionResult(page.Items, page.TotalCount);
}
///
/// 分页查询
///
///
///
///
///
///
///
///
public PagedActionResult GetOrderPageEntities(Expression> expression, BasePageFilter pageFilter, string[] selectField,
params string[] paths) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
var page = commonService.GetOrderPageEntities(expression, pageFilter, selectField, paths);
return new PagedActionResult(page.Items, page.TotalCount);
}
///
///获取排序的实体集合
///
///
///
///
///
///
public PagedActionResult GetOrderPageEntities(Expression> expression, BasePageFilter filter, params string[] paths) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
var page = commonService.GetOrderPageEntities(expression, filter, paths);
return new PagedActionResult(page.Items, page.TotalCount);
}
///
///获取排序的实体集合
///
///
///
///
///
///
public async Task> ActionOrderPageEntitiesSync(Action> orderBy, Expression> expression, BasePageFilter filter, params string[] paths) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
var page = await commonService.GetOrderPageEntitiesSync(expression, filter, null, 0, 0, orderBy, (!filter?.IsNoTranking) ?? true, paths);
return new PagedActionResult(page.Items, page.TotalCount);
}
///
///获取排序的实体集合
///
///
///
///
///
///
public async Task> GetOrderPageEntitiesSync(Expression> expression, BasePageFilter filter, params string[] paths) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
var page = await commonService.GetOrderPageEntitiesSync(expression, filter, paths);
return new PagedActionResult(page.Items, page.TotalCount);
}
#endregion
#region notraking query
///
/// 查询实体
///
///
///
///
///
public T GetEntity(string id, bool notraking = false, params string[] paths) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.GetEntity(t => t.ID == new Guid(id), null, notraking, paths);
}
///
/// 查询实体
///
///
///
///
///
public T GetEntity(Expression> expression, bool notraking = false, params string[] paths) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.GetEntity(expression, null, notraking, paths);
}
///
/// 查询实体
///
///
///
///
///
public T GetEntity(Expression> expression, BaseFilter fiter, bool notraking = false, params string[] paths) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.GetEntity(expression, fiter, notraking, paths);
}
public T GetEntityByRedis(string key, Guid orgid) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.GetEntityByRedis(key, orgid);
}
public T GetEntityByRedis(Guid key, Guid orgid) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.GetEntityByRedis(key, orgid);
}
public List GetEntitiesByRedis(BaseFilter filter) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.GetEntitiesByRedis(filter);
}
List GetEntitiesByGroupRedis(BaseFilter filter, string groupValue) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.GetEntitiesByGroupRedis(filter, groupValue);
}
public List GetEntitiesByRedis(Expression> expression, BaseFilter filter) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.GetEntitiesByRedis(expression, filter);
}
public List GetEntitiesByRedis(Expression> expression, BaseFilter filter,
params string[] paths) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.GetEntitiesTableByRedis(expression, filter, paths);
}
public List GetEntitiesByRedis(Expression> expression, BaseFilter filter, string groupValue,
params string[] paths) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.GetEntitiesByRedis(expression, filter, groupValue, paths);
}
public PagedResultDto GetOrderPageByRedis(Expression> expression, BasePageFilter pageFilter,
params string[] paths) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.GetOrderPageByRedis(expression, pageFilter, paths);
}
///
/// 获取所有数据
///
///
///
///
///
///
public IEnumerable GetEntities(Expression> expression, BaseFilter filter, bool notraking = false, params string[] paths) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.GetEntities(expression, filter, notraking, paths);
}
///
/// 获取所有数据
///
/// 类型
/// 排序
/// lambd表达式
/// 过滤器
/// 需要关联查询的数据
///
public IEnumerable ActionOrderEntities(Action> orderBy, Expression> expression, BaseFilter filter, bool notraking = false, params string[] paths) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.GetOrderEntities(expression, filter, orderBy, notraking, paths);
}
///
/// 获取所有数据
///
/// 类型
/// 排序
/// lambd表达式
/// 过滤器
/// 需要关联查询的数据
///
public IEnumerable GetOrderEntities(Expression> expression, BaseFilter filter, bool notraking = false, params string[] paths) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.GetOrderEntities(expression, filter, notraking, paths);
}
///
/// 排序获取数据
///
///
///
///
///
///
///
///
public IEnumerable GetOrderEntities(Expression> expression, string sort, string order, BaseFilter filter, bool notraking = false, params string[] paths) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
Dictionary orders = new Dictionary();
orders[sort] = order;
return commonService.GetOrderEntities(expression, filter, orders, null, notraking, paths);
}
///
/// 排序获取数据
///
///
///
///
///
///
///
///
public IEnumerable GetOrderEntities(Expression> expression, Dictionary orders, BaseFilter filter, bool notraking = false, params string[] paths) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.GetOrderEntities(expression, filter, orders, null, notraking, paths);
}
///
///获取实体集合
///
///
///
///
///
///
public async Task> GetPageEntitiesSync(Expression> expression, BasePageFilter filter, bool notraking = false, params string[] paths) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
filter.Sort = "ID";
var page = await commonService.GetOrderPageEntitiesSync(expression, filter, 0, 0, notraking, paths);
return new PagedActionResult(page.Items, page.TotalCount);
}
///
///获取排序的实体集合
///
///
///
///
///
///
public async Task> ActionOrderPageEntitiesSync(Action> orderBy, Expression> expression, BasePageFilter filter, bool notraking = false, params string[] paths) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
var page = await commonService.GetOrderPageEntitiesSync(expression, filter, null, 0, 0, orderBy, notraking, paths);
return new PagedActionResult(page.Items, page.TotalCount);
}
///
///获取排序的实体集合
///
///
///
///
///
///
public async Task> GetOrderPageEntitiesSync(Expression> expression, BasePageFilter filter, bool notraking = false, params string[] paths) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
var page = await commonService.GetOrderPageEntitiesSync(expression, filter, null, 0, 0, null, notraking, paths);
return new PagedActionResult(page.Items, page.TotalCount);
}
#endregion
///
/// 获取条数
///
///
///
///
///
public int GetCount(Expression> expression, BaseFilter filter) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.Count(expression, filter);
}
public bool IsAny(Expression> expression, BaseFilter filter) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.IsAny(expression, filter);
}
///
/// 添加实体
///
///
///
public bool AddEntity(T entity) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.AddEntity(entity);
}
///
/// 添加实体
///
///
///
public T AddAndGetEntity(T entity) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.AddAndGetEntity(entity);
}
///
/// 删除实体
///
///
///
public bool DeleteEntity(string id) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.DeleteEntity(new Guid(id));
}
///
/// 删除实体
///
///
///
public bool DeleteEntity(Expression> expression) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.DeleteEntity(expression);
}
///
/// 删除实体
///
///
///
public bool DeleteEntity(IEnumerable entity) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.DeleteEntity(entity);
}
///
/// 删除实体
///
///
///
///
public bool DeleteEntity(T entity) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.DeleteEntity(entity);
}
///
/// 逻辑批量删除
///
///
///
///
public bool BantchDeleteEntity(List ids) where T : MesEntityBase, new()
{
if (ids == null || !ids.Any()) return false;
var commonService = _serviceLocator.GetService();
return commonService.DeleteEntity(i => ids.Contains(i.ID));
}
///
/// 删除实体
///
///
///
public bool RealDeleteEntity(Expression> expression) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.DeleteEntity(expression);
}
///
/// 删除实体
///
///
///
public bool RealDeleteEntity(IEnumerable entity) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.DeleteEntity(entity);
}
///
/// 删除实体
///
///
///
///
public bool RealDeleteEntity(T entity) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.DeleteEntity(entity);
}
///
/// 批量删除实体
///
/// id集合
///
public bool RealBantchDeleteEntity(List ids) where T : MesEntityBase, new()
{
if (ids == null || !ids.Any()) return false;
var commonService = _serviceLocator.GetService();
return commonService.DeleteEntity(i => ids.Contains(i.ID));
}
///
/// 更新实体
///
///
///
public bool UpdateEntity(T entity) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.UpdateEntity(entity);
}
///
/// 按字段更新实体
///
///
///
public bool UpdateEntity(T entity, params string[] updateField) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.UpdateEntity(entity, updateField);
}
///
/// 批量添加实体
///
/// 实体集合
///
public bool BantchAddEntity(IEnumerable entities) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.BantchAddEntity(entities);
}
///
/// 批量更新实体
///
/// 实体集
///
public bool BantchUpdateEntity(IEnumerable entities) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.BantchUpdateEntity(entities);
}
///
/// 更具字段批量更新实体
///
/// 实体集
///
public bool BantchUpdateEntity(IEnumerable entities, params string[] updateField) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.BantchUpdateEntity(entities, updateField);
}
///
/// 批量保存实体
///
/// 批量保存
///
public bool BantchSaveEntity(IEnumerable entities) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.BantchSaveEntity(entities);
}
#region nocommit
///
/// 添加实体
///
///
///
public bool AddEntityNoCommit(T entity) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.AddEntityNoCommit(entity);
}
///
/// 删除实体
///
///
///
public bool DeleteEntityNoCommit(string id) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.DeleteEntityNoCommit(new Guid(id));
}
///
/// 删除实体
///
///
///
public bool DeleteEntityNoCommit(Expression> expression) where T : MesEntityBase, new()
{
var commonService = _serviceLocator.GetService();
return commonService.DeleteEntityNoCommit(expression);
}
///