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; } }