using Dlhis.Basic.Organization.Request; using Dlhis.Basic.Organization.Response; using Dlhis.Entity.Basic.Entity; using Dlhis.Entity.Basic.Enums; using Kurisu.AspNetCore.Utils.Extensions; using Kurisu.Core.DataAccess.Dto; using Kurisu.SqlSugar.Attributes; using Kurisu.SqlSugar.Extensions; using Kurisu.SqlSugar.Services; using Mapster; namespace Dlhis.Basic.Organization.Services.Implements; public class GainfoService : IGainfoService { private readonly IGainfoStore _gainfoStore; private readonly IDbContext _dbContext; public GainfoService(IGainfoStore gainfoStore, IDbContext dbContext) { _gainfoStore = gainfoStore; _dbContext = dbContext; } /// /// 档案分页 /// /// /// public Task> GetPageAsync(GainfoPageRequest request) { var page = _gainfoStore.Queryable(request.gainfoStatus) .Select() .ToPageListAsync(request); return page; } /// ///保存档案号 /// /// /// public async Task SaveAsync(GainfoSaveRequest request) { var gainfos = new List(); GainfoEntity aginfoEntity = request.Adapt(); aginfoEntity.Guestno = "F" + Guid.NewGuid().ToString(); gainfos.Add(aginfoEntity); await _gainfoStore.InsertAsync(GainfoStatusEnumType.Working, gainfos); } /// ///修改档案号 /// /// /// public async Task UpdateAsync(GainfoSaveRequest request) { var gainfo = await _gainfoStore.Queryable(request.GainfoStatus).Where(x => x.Id == request.Id).FirstAsync(); gainfo.ThrowIfNull("档案数据不存在,无法更新"); request.Adapt(gainfo); var gainfos = new List() { gainfo }; await _gainfoStore.UpdateAsync(request.GainfoStatus, gainfos); } /// /// 正式转离职 /// /// /// /// [Transactional] public async Task DimissionAsync(GainfoDImissionRequest request) { var gainfo = await _gainfoStore.Queryable(GainfoStatusEnumType.Working) .Where(x => x.Guestno == request.UserId) .FirstAsync(); gainfo.ThrowIfNull($"该档案不存在"); //添加到离职表 var gainfos = new List { gainfo }; await _gainfoStore.InsertAsync(GainfoStatusEnumType.Leave, gainfos); //删除原数据 await _gainfoStore.DeleteAsync(GainfoStatusEnumType.Working, gainfos); } /// /// 临时转正式 /// /// /// /// public async Task OnboardingAsync(GainfoDImissionRequest request) { var gainfo = await _gainfoStore.Queryable(GainfoStatusEnumType.External) .Where(x => x.Guestno == request.UserId) .FirstAsync(); gainfo.ThrowIfNull($"该档案不存在"); //添加到正式表 var gainfos = new List { gainfo }; await _gainfoStore.InsertAsync(GainfoStatusEnumType.Working, gainfos); } /// /// 获取所有字段 /// /// public List GetAllFields() { var entityType = typeof(Gainfofields); var propertyNames = entityType.GetProperties().Select(p => p.Name).ToList(); return propertyNames; } /// /// 获取固定字段数据 /// /// /// public List GetAllFieldData(string fieldName) { var columnData = _dbContext.Queryable().Select(fieldName).ToList(); return columnData; } //-------------------------------------------help methods ------------------------------------------------ }