Files
jinko.yikatong/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridTimePeriodService.cs
2025-02-25 17:28:20 +08:00

95 lines
3.2 KiB
C#

using Dlhis.Basic.WorkGrids.Request;
using Dlhis.Basic.WorkGrids.Response;
using Dlhis.Entity.Basic.Entity;
using Dlhis.Entity.Basic.Enums;
using Kurisu.AspNetCore.CustomClass;
using Kurisu.AspNetCore.DataAccess.Dto;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Extensions;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
using Kurisu.AspNetCore.Utils.Extensions;
using Mapster;
namespace Dlhis.Basic.WorkGrids.Services.Implements;
public class WorkGridTimePeriodService : IWorkGridTimePeriodService
{
private readonly IDbContext _dbContext;
public WorkGridTimePeriodService(IDbContext dbContext)
{
_dbContext = dbContext;
}
/// <inheritdoc />
public async Task SaveAsync(WorkGridTimePeriodSaveRequest request)
{
//await CheckDuplicateTimePeriodAsync(request);
if (!request.Id.HasValue)
{
//判断重复配置
var existsSameType = await _dbContext.Queryable<WorkGridTimePeriodEntity>()
.Where(x => x.Type == request.Type)
.AnyAsync();
existsSameType.ThrowIfTrue($"已存在{request.Type}配置");
var data = request.Adapt<WorkGridTimePeriodEntity>();
data.Type = request.Type;
await _dbContext.InsertAsync(data);
}
else
{
var entity = await _dbContext.Queryable<WorkGridTimePeriodEntity>().Where(x => x.Id == request.Id).SingleAsync();
request.Adapt(entity);
await _dbContext.UpdateAsync(entity);
}
}
/// <inheritdoc />
public async Task<Pagination<WorkGridTimePeriodPageResponse>> GetPageAsync(WorkGridTimePeriodPageRequest request)
{
var data = await _dbContext.Queryable<WorkGridTimePeriodEntity>()
.Select<WorkGridTimePeriodPageResponse>()
.ToPageListAsync(request);
return data;
}
//*************************************************************************************************************************************************
/// <summary>
/// 根据类型获取配置
/// </summary>
/// <param name="timePeriodType"></param>
/// <returns></returns>
private async Task<WorkGridTimePeriodEntity> GetSettingAsync(WorkGridTimePeriodEnumType timePeriodType)
{
return await _dbContext.Queryable<WorkGridTimePeriodEntity>()
.Where(x => x.Type == timePeriodType)
.SingleAsync();
}
// /// <summary>
// /// 检查时间段重合检查
// /// </summary>
// /// <param name="request"></param>
// /// <returns></returns>
// private async Task CheckDuplicateTimePeriodAsync(WorkGridTimePeriodSaveRequest request)
// {
// var periods = await _dbContext.Queryable<WorkGridTimePeriodEntity>()
// .Where(x => x.Type != request.Type)
// .Select(x => new TimePeriod
// {
// Start = x.Start,
// End = x.End
// })
// .ToListAsync();
//
// foreach (var period in periods)
// {
// period.IsDuplicate(request.Adapt<TimePeriod>()).ThrowIfTrue($"存在时间段重合[{period.Start}-{period.End}]");
// }
// }
}