using Dlhis.Basic.Common.ApiLog.Services; using Dlhis.Basic.WorkGrids.Request; using Dlhis.Basic.WorkGrids.Response; using Dlhis.Entity.Basic.Entity; using Dlhis.Entity.Common.Enums; 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; private readonly IOperateLog _operateLog; public WorkGridTimePeriodService(IDbContext dbContext, IOperateLog operateLog) { _dbContext = dbContext; _operateLog = operateLog; } /// public async Task SaveAsync(WorkGridTimePeriodSaveRequest request) { //await CheckDuplicateTimePeriodAsync(request); if (!request.Id.HasValue) { //判断重复配置 var existsSameType = await _dbContext.Queryable() .Where(x => x.Type == request.Type) .AnyAsync(); existsSameType.ThrowIfTrue($"已存在{request.Type}配置"); var data = request.Adapt(); data.Type = request.Type; await _dbContext.InsertAsync(data); await _operateLog.LogAsync(OperateLogType.WorkGrid, $"创建网格时间配置:{request.ToJson()}"); } else { var entity = await _dbContext.Queryable().Where(x => x.Id == request.Id).SingleAsync(); var log = $"修改网格时间配置:{entity.ToJson()}->{request.ToJson()}"; request.Adapt(entity); await _dbContext.UpdateAsync(entity); await _operateLog.LogAsync(OperateLogType.WorkGrid, log); } } /// public async Task> GetPageAsync(WorkGridTimePeriodPageRequest request) { var data = await _dbContext.Queryable() .Select() .ToPageListAsync(request); return data; } //************************************************************************************************************************************************* // /// // /// 检查时间段重合检查 // /// // /// // /// // private async Task CheckDuplicateTimePeriodAsync(WorkGridTimePeriodSaveRequest request) // { // var periods = await _dbContext.Queryable() // .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()).ThrowIfTrue($"存在时间段重合[{period.Start}-{period.End}]"); // } // } }