Files
jinko.yikatong/Src/Dlhis.Basic/MealUser/Services/Implements/GainfoService.cs
2023-12-28 17:29:45 +08:00

121 lines
4.6 KiB
C#

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;
}
/// <summary>
///保存档案号
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public async Task SaveAsync(GainfoAddSaveRequest request)
{
await CheckGainfoGuestnoAsync(request);//档案号是否重复
var gainfos = new List<GainfoEntity>();
GainfoEntity aginfoEntity = request.gainfoPageResponse.Adapt<GainfoEntity>();
aginfoEntity.Guestno = "F" + Guid.NewGuid().ToString();
gainfos.Add(aginfoEntity);
await _gainfoStore.InsertAsync(GainfoStatusEnumType.Working, gainfos);
}
/// <summary>
/// 档案分页
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public Task<Pagination<GainfoPageResponse>> GetPageAsync( GainfoPageRequest request)
{
var page = _gainfoStore.Queryable(request.gainfoStatus)
.Select<GainfoPageResponse>()
.ToPageListAsync(request);
return page;
}
/// <summary>
///修改档案号
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public async Task UpdateAsync(GainfoAddSaveRequest request)
{
var gainfos = new List<GainfoEntity>();
GainfoEntity aginfoEntity = request.gainfoPageResponse.Adapt<GainfoEntity>();
gainfos.Add(aginfoEntity);
await _gainfoStore.UpdateAsync(GainfoStatusEnumType.Working, gainfos);
}
/// <summary>
/// 正式转离职
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
[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<GainfoEntity>();
gainfos.Add(gainfo);
await _gainfoStore.InsertAsync(GainfoStatusEnumType.Leave, gainfos);
//删除原数据
await _gainfoStore.DeleteAsync(GainfoStatusEnumType.Working, gainfos);
}
/// <summary>
/// 临时转正式
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
[Transactional]
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<GainfoEntity>();
gainfos.Add(gainfo);
await _gainfoStore.InsertAsync(GainfoStatusEnumType.Working, gainfos);
//保留原数据
}
//-------------------------------------------help methods ------------------------------------------------
/// <summary>
/// 检查档案号是否重复
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
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}]已存在");
}
}
}