diff --git a/Src/Dlhis.Basic/Device/Controllers/DevicesController.cs b/Src/Dlhis.Basic/Device/Controllers/DevicesController.cs index 9c7d25b0..2db8cd53 100644 --- a/Src/Dlhis.Basic/Device/Controllers/DevicesController.cs +++ b/Src/Dlhis.Basic/Device/Controllers/DevicesController.cs @@ -224,9 +224,9 @@ public class DevicesController : ControllerBase /// /// [HttpPost("bulkUploads")] - public async Task BulkUploadsAsync(ImportListRequest request) + public async Task> BulkUploadsAsync(ImportListRequest request) { - await _deviceService.BulkUploadsAsync(request); + return await _deviceService.BulkUploadsAsync(request); } } diff --git a/Src/Dlhis.Basic/Device/Services/IDeviceService.cs b/Src/Dlhis.Basic/Device/Services/IDeviceService.cs index 2f8bcd2a..479aa008 100644 --- a/Src/Dlhis.Basic/Device/Services/IDeviceService.cs +++ b/Src/Dlhis.Basic/Device/Services/IDeviceService.cs @@ -27,7 +27,7 @@ public interface IDeviceService : IScopeDependency Task> GetRecentNumbersAsync(); - Task BulkUploadsAsync(ImportListRequest request); + Task> BulkUploadsAsync(ImportListRequest request); } diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs index da116ef3..3cdfabe0 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs @@ -14,6 +14,7 @@ using Mapster; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using SqlSugar; +using System.Net.Http.Json; namespace Dlhis.Basic.Device.Services.Implements; @@ -127,8 +128,9 @@ public class DeviceService : IDeviceService /// /// /// - public async Task BulkUploadsAsync(ImportListRequest request) + public async Task> BulkUploadsAsync(ImportListRequest request) { + var errs = new List(); var lst = request.Imports; var places = await _dbContext.Queryable().ToListAsync(); @@ -137,14 +139,49 @@ public class DeviceService : IDeviceService if (form.PlaceeCode != null) { var place = places.Where(x => x.Code == form.PlaceeCode).FirstOrDefault(); - place.ThrowIfNull($"该设备{form.UniqueNo}配置的营业点营业点不存在!"); + if(place == null) + { + errs.Add($"该设备{form.UniqueNo}配置的营业点营业点不存在!"); + continue; + } } //插入 var exists = await _dbContext.Queryable().Where(x => x.UniqueNo == form.UniqueNo) .AnyAsync(); - exists.ThrowIfTrue("唯一号已经存在"); - var template = await CheckTemplateExistsAsync(form.TemplateCode); - await CheckTemplateFieldAsync(form.TemplateCode, form.ConnectionInfo); + if (exists) + { + errs.Add($"设备唯一号{form.UniqueNo}已经存在!"); + continue; + } + var entity = await _dbContext.Queryable().Where(x => x.Code == form.TemplateCode).FirstAsync(); + if(entity == null) + { + errs.Add($"设备{form.UniqueNo}配置的模板{form.TemplateCode}不存在!"); + continue; + } + + var template = await _dbContext.Queryable().Where(x => x.Code == form.TemplateCode).FirstAsync(); + + var templateJobj = JObject.Parse(template.Template); + var jobj = JObject.Parse(form.ConnectionInfo); + if(templateJobj.Count != jobj.Count) + { + errs.Add($"设备{form.UniqueNo}的连接参数字段数与模板不一致!"); + continue; + } + var a = false; + foreach (var item in templateJobj) + { + if (!jobj.ContainsKey(item.Key)) + { + errs.Add($"设备{form.UniqueNo}的连接参数需要和模板一致.缺失{item.Key}!"); + a = true; + } + } + if (a) + { + continue; + } var saveEntity = form.Adapt(); saveEntity.Code = Guid.NewGuid(); @@ -166,7 +203,9 @@ public class DeviceService : IDeviceService }; await _dbContext.InsertAsync(regis); } + } + return errs; } //******************************************************** help methods ********************************************************** @@ -243,6 +282,7 @@ public class DeviceService : IDeviceService } } + /// /// 检查唯一号是否存在 ///