using System.Reflection;
using Dlhis.Entity.Basic.Entity;
using Dlhis.Entity.Basic.Enums;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
using SqlSugar;
namespace Dlhis.Basic.Organization.Services.Implements;
public class GainfoStore : IGainfoStore
{
private readonly IDbContext _dbContext;
private readonly ISqlSugarOptionsService _sqlSugarOptionsService;
public GainfoStore(IDbContext dbContext, ISqlSugarOptionsService sqlSugarOptionsService)
{
_dbContext = dbContext;
_sqlSugarOptionsService = sqlSugarOptionsService;
}
///
/// 档案表查询分表(按类型)
///
///
///
public ISugarQueryable Queryable(GainfoStatusEnumType? gainfoStatus)
{
gainfoStatus ??= GainfoStatusEnumType.Working;
if (gainfoStatus == GainfoStatusEnumType.Working)
{
return _dbContext.Queryable();
}
var tableName = typeof(GainfoEntity).GetCustomAttribute()!.TableName;
return _dbContext.Queryable().AS(tableName + gainfoStatus);
}
public async Task InsertAsync(List entities, GainfoStatusEnumType gainfoStatus = GainfoStatusEnumType.Working)
{
await _dbContext.Client.Insertable(entities).AS(GetTableName(gainfoStatus)).EnableDiffLogEventIF(_sqlSugarOptionsService.Diff).ExecuteCommandAsync();
}
public async Task InsertAsync(GainfoEntity entity, GainfoStatusEnumType gainfoStatus = GainfoStatusEnumType.Working)
{
await _dbContext.Client.Insertable(entity).AS(GetTableName(gainfoStatus)).EnableDiffLogEventIF(_sqlSugarOptionsService.Diff).ExecuteCommandAsync();
}
public async Task UpdateAsync(List entities, GainfoStatusEnumType gainfoStatus = GainfoStatusEnumType.Working)
{
await _dbContext.Client.Updateable(entities).AS(GetTableName(gainfoStatus)).EnableDiffLogEventIF(_sqlSugarOptionsService.Diff).ExecuteCommandAsync();
}
public async Task UpdateAsync(GainfoEntity entity, GainfoStatusEnumType gainfoStatus = GainfoStatusEnumType.Working)
{
await _dbContext.Client.Updateable(entity).AS(GetTableName(gainfoStatus)).EnableDiffLogEventIF(_sqlSugarOptionsService.Diff).ExecuteCommandAsync();
}
public async Task DeleteAsync(List entities, GainfoStatusEnumType gainfoStatus = GainfoStatusEnumType.Working)
{
await _dbContext.Client.Deleteable(entities).AS(GetTableName(gainfoStatus)).EnableDiffLogEventIF(_sqlSugarOptionsService.Diff).ExecuteCommandAsync();
}
public async Task DeleteAsync(GainfoEntity entity, GainfoStatusEnumType gainfoStatus = GainfoStatusEnumType.Working)
{
await _dbContext.Client.Deleteable(entity).AS(GetTableName(gainfoStatus)).EnableDiffLogEventIF(_sqlSugarOptionsService.Diff).ExecuteCommandAsync();
}
//*************************************************************** help method *********************************************************************************
///
/// 获取表名称
///
///
///
private static string GetTableName(GainfoStatusEnumType? gainfoStatus)
{
var tableName = typeof(GainfoEntity).GetCustomAttribute().TableName;
if (gainfoStatus.HasValue && gainfoStatus != GainfoStatusEnumType.Working)
{
return tableName + "_" + gainfoStatus;
}
return tableName;
}
}