using Dlhis.Basic.BusinessPlace.Response; using Dlhis.Basic.MealUser.Request; using Dlhis.Basic.MealUser.Response; using Dlhis.Basic.Organization.Services; 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; using Microsoft.AspNetCore.Mvc; namespace Dlhis.Basic.MealUser.Services.Implements { public class GainfoService : IGainfoService { private readonly IGainfoStore _gainfoStore; public GainfoService(IGainfoStore gainfoStore) { _gainfoStore = gainfoStore; } /// ///保存档案号 /// /// /// public async Task SaveAsync(GainfoAddSaveRequest request) { await CheckGainfoGuestnoAsync(request);//档案号是否重复 var gainfos = new List(); GainfoEntity aginfoEntity = request.gainfoPageResponse.Adapt(); aginfoEntity.Guestno = new Guid("F" + Guid.NewGuid().ToString()); gainfos.Add(aginfoEntity); await _gainfoStore.InsertAsync(GainfoStatusEnumType.Working, gainfos); } /// /// 档案分页 /// /// /// public Task> GetPageAsync( GainfoPageRequest request) { var page = _gainfoStore.Queryable(request.gainfoStatus) .Select() .ToPageListAsync(request); return page; } /// ///修改档案号 /// /// /// public async Task UpdateAsync(GainfoAddSaveRequest request) { var gainfos = new List(); GainfoEntity aginfoEntity = request.gainfoPageResponse.Adapt(); gainfos.Add(aginfoEntity); await _gainfoStore.UpdateAsync(GainfoStatusEnumType.Working, gainfos); } /// /// 正式转离职 /// /// /// /// [Transactional] public async Task DimissionAsync(GainfoDImissionRequest request) { var gainfo = await _gainfoStore.Queryable(GainfoStatusEnumType.Working) .Where(x => x.Guestno.ToString() == request.UserId) .FirstAsync(); gainfo.ThrowIfNull($"该档案不存在"); //添加到离职表 var gainfos = new List(); gainfos.Add(gainfo); await _gainfoStore.InsertAsync(GainfoStatusEnumType.Leave, gainfos); //删除原数据 await _gainfoStore.DeleteAsync(GainfoStatusEnumType.Working, gainfos); } /// /// 临时转正式 /// /// /// /// [Transactional] public async Task OnboardingAsync(GainfoDImissionRequest request) { var gainfo = await _gainfoStore.Queryable(GainfoStatusEnumType.External) .Where(x => x.Guestno.ToString() == request.UserId) .FirstAsync(); gainfo.ThrowIfNull($"该档案不存在"); //添加到正式表 var gainfos = new List(); gainfos.Add(gainfo); await _gainfoStore.InsertAsync(GainfoStatusEnumType.Working, gainfos); //保留原数据 } //-------------------------------------------help methods ------------------------------------------------ /// /// 检查档案号是否重复 /// /// /// private async Task CheckGainfoGuestnoAsync(GainfoAddSaveRequest request) { var checkGainfoGuestno = await _gainfoStore.Queryable(GainfoStatusEnumType.Working) .Where(x => x.Guestno == request.gainfoPageResponse.Guestno) .AnyAsync(); checkGainfoGuestno.ThrowIfTrue($"档案号[{request.gainfoPageResponse.Guestno}]已存在"); } public Task OnboardingAsync(GainfoDImissionRequest request) { throw new NotImplementedException(); } } }