95 lines
3.2 KiB
C#
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}]");
|
|
// }
|
|
// }
|
|
} |