using Dlhis.Basic.Device.Request; using Dlhis.Basic.Device.Response; using Dlhis.Entity.Basic.Entity; 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; using Newtonsoft.Json; using Newtonsoft.Json.Linq; namespace Dlhis.Basic.Device.Services.Implements; public class DeviceTemplateService : IDeviceTemplateService { private readonly IDbContext _dbContext; public DeviceTemplateService(IDbContext dbContext) { _dbContext = dbContext; } public async Task> GetPageAsync(DeviceTemplatePageRequest request) { var page = await _dbContext.Queryable() .Select() .ToPageListAsync(request); return page; } public async Task SaveTemplateAsync(DeviceTemplateSaveRequest request) { CheckJsonFormat(request.Template); await CheckDuplicateAsync(request); if (!request.Id.HasValue) { var entity = request.Adapt(); entity.Code = Guid.NewGuid(); await _dbContext.InsertAsync(entity); } else { var entity = await _dbContext.Queryable().Where(x => x.Id == request.Id).FirstAsync(); await ExistsDeviceUsingTemplateAsync(entity.Code); request.Adapt(entity); await _dbContext.UpdateAsync(entity); } } //**********************************************************************************************************/ /// /// 模板被引用,不能修改 /// /// /// private async Task ExistsDeviceUsingTemplateAsync(Guid templateCode) { var existsUsing = await _dbContext.Queryable().Where(x => x.TemplateCode == templateCode).AnyAsync(); existsUsing.ThrowIfTrue("存在使用中的设备信息,无法修改"); } private async Task CheckDuplicateAsync(DeviceTemplateSaveRequest request) { var duplicate = await _dbContext.Queryable().Where(x => x.Brand == request.Brand && x.Name == request.Name) .WhereIF(request.Id.HasValue, x => x.Id != request.Id) .AnyAsync(); duplicate.ThrowIfTrue("品牌和型号重复"); } private static void CheckJsonFormat(string template) { try { var jobj = JObject.Parse(template); (jobj.Count == 0).ThrowIfTrue("模板至少需要一个参数"); } catch (Exception ex) when (ex is JsonReaderException) { throw new UserFriendlyException("模板格式有误"); } catch (Exception) { throw; } } }