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
}
}
+
///
/// 检查唯一号是否存在
///