From 83ea3d7093cd798a394735057c7a272704a7ac3e Mon Sep 17 00:00:00 2001 From: liguoyang Date: Fri, 8 Nov 2024 11:54:25 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E9=80=9A=E8=A1=8C=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=A4=96=E5=8C=85=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Request/DeviceUploadLogPageRequest.cs | 2 +- .../Response/DeviceUploadLogResponse.cs | 15 +- .../Services/IDeviceUploadLogService.cs | 19 ++- .../Implements/DeviceUploadLogService.cs | 155 +++++++++--------- 4 files changed, 108 insertions(+), 83 deletions(-) diff --git a/Src/Dlhis.ScheduledTask/DeviceUploadLog/Request/DeviceUploadLogPageRequest.cs b/Src/Dlhis.ScheduledTask/DeviceUploadLog/Request/DeviceUploadLogPageRequest.cs index d2b91241..63f4c1aa 100644 --- a/Src/Dlhis.ScheduledTask/DeviceUploadLog/Request/DeviceUploadLogPageRequest.cs +++ b/Src/Dlhis.ScheduledTask/DeviceUploadLog/Request/DeviceUploadLogPageRequest.cs @@ -21,7 +21,7 @@ public class DeviceUploadLogPageRequest : PageDto, IValidatableObject /// /// 是否为外包 /// - public bool? IsOutSource { get; set; } + public bool? IsOutsource { get; set; } /// /// 日期范围查询 diff --git a/Src/Dlhis.ScheduledTask/DeviceUploadLog/Response/DeviceUploadLogResponse.cs b/Src/Dlhis.ScheduledTask/DeviceUploadLog/Response/DeviceUploadLogResponse.cs index 6d821847..423d4c93 100644 --- a/Src/Dlhis.ScheduledTask/DeviceUploadLog/Response/DeviceUploadLogResponse.cs +++ b/Src/Dlhis.ScheduledTask/DeviceUploadLog/Response/DeviceUploadLogResponse.cs @@ -12,9 +12,13 @@ public class DeviceUploadLogResponse public string DeviceUniqueNo { get; set; } /// - /// 设备供应商 + /// 外包供应商 /// - public string Supplier { get; set; } + public string OutsourceSupplier { get; set; } + + public string SapUserCode { get; set; } + public string SapUserName { get; set; } + /// /// 设备部署点 @@ -42,10 +46,11 @@ public class DeviceUploadLogResponse /// public DateTime RaiseDateTime { get; set; } - + /// + /// 记录创建时间 + /// public DateTime CreateTime { get; set; } - /// /// 序列号 /// @@ -64,4 +69,4 @@ public class DeviceUploadLogResponse /// 是否有效 /// public bool Status { get; set; } -} +} \ No newline at end of file diff --git a/Src/Dlhis.ScheduledTask/DeviceUploadLog/Services/IDeviceUploadLogService.cs b/Src/Dlhis.ScheduledTask/DeviceUploadLog/Services/IDeviceUploadLogService.cs index 0d70899b..1f1e9f4b 100644 --- a/Src/Dlhis.ScheduledTask/DeviceUploadLog/Services/IDeviceUploadLogService.cs +++ b/Src/Dlhis.ScheduledTask/DeviceUploadLog/Services/IDeviceUploadLogService.cs @@ -7,10 +7,25 @@ namespace Dlhis.ScheduledTask.DeviceUploadLog.Services; public interface IDeviceUploadLogService : IScopeDependency { + /// + /// 上传通行记录 + /// + /// + /// + Task UploadLogsAsync(List requests); + + /// + /// 查询通行记录分页 + /// + /// + /// Task> GetPageAsync(DeviceUploadLogPageRequest request); - Task UploadLogsAsync(List requests); - + /// + /// 获取我个人的通行记录 + /// + /// + /// Task> GetMyRecordsAsync(DeviceUploadLogMyRecordRequest request); Task QiaoqiaoGaoshiqingAsync(DeviceUploadLogSecretAddRequest request); diff --git a/Src/Dlhis.ScheduledTask/DeviceUploadLog/Services/Implements/DeviceUploadLogService.cs b/Src/Dlhis.ScheduledTask/DeviceUploadLog/Services/Implements/DeviceUploadLogService.cs index 543ef475..f756443d 100644 --- a/Src/Dlhis.ScheduledTask/DeviceUploadLog/Services/Implements/DeviceUploadLogService.cs +++ b/Src/Dlhis.ScheduledTask/DeviceUploadLog/Services/Implements/DeviceUploadLogService.cs @@ -23,6 +23,59 @@ public class DeviceUploadLogService : IDeviceUploadLogService _dbContext = dbContext; _currentUser = currentUser; } + + public async Task UploadLogsAsync(List requests) + { + var deviceUniqueNos = requests.Select(x => x.DeviceUniqueNo).Distinct().ToList(); + var devices = await _dbContext.Queryable().Where(x => deviceUniqueNos.Contains(x.UniqueNo)).ToListAsync(); + var existsDeviceUniqueNos = devices.Select(x => x.UniqueNo).ToList(); + + var inserts = new List(); + foreach (var request in requests.Where(x => existsDeviceUniqueNos.Contains(x.DeviceUniqueNo))) + { + if (await _dbContext.Queryable().Where(x => x.DeviceUniqueNo == request.DeviceUniqueNo + && x.SerialNo == request.SerialNo + && x.RaiseDateTime == request.RaiseDateTime).AnyAsync()) + { + continue; + } + + if (request.CardNo.IsPresent() && request.UserUniqueNo != request.CardNo) + { + //UserUniqueNo为老系统档案号(自动生成),CardNo为工号 + if (await _dbContext.Queryable() + .Where(x => x.DeviceUniqueNo == request.DeviceUniqueNo) + .Where(x => x.No == request.UserUniqueNo && x.Code == request.CardNo) + .Select(x => x.Code) + .AnyAsync()) + { + request.UserUniqueNo = request.CardNo; + } + } + + var device = devices.First(x => x.UniqueNo == request.DeviceUniqueNo); + + inserts.Add(new DeviceUploadLogEntity + { + DeviceUniqueNo = request.DeviceUniqueNo, + UserUniqueNo = request.UserUniqueNo, + RaiseDateTime = request.RaiseDateTime, + SerialNo = request.SerialNo, + Type = device.Type == DeviceTypeEnumType.Attendance + ? DeviceUploadLogTypeEnumType.Attendance + : device.Type == DeviceTypeEnumType.Door && device.AsAttendance + ? DeviceUploadLogTypeEnumType.Attendance + : DeviceUploadLogTypeEnumType.Door, + + TenantId = device.TenantId, + Status = request.Status ?? true, + CreatedBy = 1, + ModifiedBy = 1, + }); + } + + await _dbContext.InsertAsync(inserts); + } public async Task> GetMyRecordsAsync(DeviceUploadLogMyRecordRequest request) @@ -39,7 +92,6 @@ public class DeviceUploadLogService : IDeviceUploadLogService .Select((log, d) => new DeviceUploadLogResponse { OriginUserUniqueNo = log.UserUniqueNo, - Supplier = d.Supplier, DeviceUniqueNo = log.DeviceUniqueNo, Id = log.Id, RaiseDateTime = log.RaiseDateTime, @@ -99,89 +151,42 @@ public class DeviceUploadLogService : IDeviceUploadLogService }; return await _dbContext.Queryable() - .LeftJoin((deviceUp, device) => deviceUp.DeviceUniqueNo == device.UniqueNo) - .LeftJoin((deviceUp, device, ga) => deviceUp.UserUniqueNo == ga.Code) - .Where((deviceUp, device) => deviceUp.Type == type) - .WhereIF(request.Sync.HasValue, deviceUp => deviceUp.Sync == request.Sync) - .Where(deviceUp => !SqlFunc.IsNullOrEmpty(deviceUp.UserUniqueNo)) - .WhereIF(request.SearchDateTimePeriod.HasValue(), deviceUp => deviceUp.RaiseDateTime >= request.SearchDateTimePeriod.Start && deviceUp.RaiseDateTime <= request.SearchDateTimePeriod.End) - .WhereIF(request.IsOutSource.HasValue && request.IsOutSource.Value, deviceUp => SqlFunc.Subqueryable().Where(x => x.Code == deviceUp.UserUniqueNo).Any()) - .WhereIF(request.IsOutSource.HasValue && !request.IsOutSource.Value, deviceUp => SqlFunc.Subqueryable().Where(x => x.Code == deviceUp.UserUniqueNo).NotAny()) - .WhereIF(request.Search.IsPresent(), (deviceUp, device, ga) => + .LeftJoin((x, device) => x.DeviceUniqueNo == device.UniqueNo) + .LeftJoin((x, device, ga) => x.UserUniqueNo == ga.Code) + .LeftJoin((x, device, ga, os) => x.UserUniqueNo == os.Code) + .WhereIF(request.SearchDateTimePeriod.HasValue(), x => x.RaiseDateTime >= request.SearchDateTimePeriod.Start && x.RaiseDateTime <= request.SearchDateTimePeriod.End) + .Where((x, device) => x.Type == type && !SqlFunc.IsNullOrEmpty(x.UserUniqueNo)) + .WhereIF(request.Sync.HasValue, x => x.Sync == request.Sync) + .WhereIF(request.IsOutsource.HasValue && request.IsOutsource.Value, + x => SqlFunc.Subqueryable().Where(p => p.Code == x.UserUniqueNo).Any()) + .WhereIF(request.IsOutsource.HasValue && !request.IsOutsource.Value, + x => SqlFunc.Subqueryable().Where(p => p.Code == x.UserUniqueNo).NotAny()) + .WhereIF(request.Search.IsPresent(), (x, device, ga, os) => ga.Code == request.Search || ga.Name == request.Search - || deviceUp.DeviceUniqueNo == request.Search + || x.DeviceUniqueNo == request.Search + || os.Supplier.Contains(request.Search) + || os.SapCode == request.Search ) - .OrderBy(deviceUp => deviceUp.CreateTime, OrderByType.Desc) - .Select((deviceUp, device, ga) => new DeviceUploadLogResponse + .OrderBy(x => x.CreateTime, OrderByType.Desc) + .Select((x, device, ga, os) => new DeviceUploadLogResponse { - OriginUserUniqueNo = deviceUp.UserUniqueNo, - Supplier = device.Supplier, - DeviceUniqueNo = deviceUp.DeviceUniqueNo, - Id = deviceUp.Id, - RaiseDateTime = deviceUp.RaiseDateTime, - CreateTime = deviceUp.CreateTime, - SerialNo = deviceUp.SerialNo, + Id = x.Id, + OriginUserUniqueNo = x.UserUniqueNo, + OutsourceSupplier = device.Supplier, + SapUserCode = os.SapCode, + SapUserName = SqlFunc.Subqueryable().Where(p => p.Code == os.SapCode).Select(p => p.Name), + DeviceUniqueNo = x.DeviceUniqueNo, + RaiseDateTime = x.RaiseDateTime, + CreateTime = x.CreateTime, + SerialNo = x.SerialNo, UserNo = ga.No, UserCode = ga.Code, UserName = ga.Name, DeployPlace = device.DeployPlace, - Sync = deviceUp.Sync, - Status = deviceUp.Status, + Sync = x.Sync, + Status = x.Status, }) .ToPageListAsync(request); } - - public async Task UploadLogsAsync(List requests) - { - var deviceUniqueNos = requests.Select(x => x.DeviceUniqueNo).Distinct().ToList(); - var devices = await _dbContext.Queryable().Where(x => deviceUniqueNos.Contains(x.UniqueNo)).ToListAsync(); - var existsDeviceUniqueNos = devices.Select(x => x.UniqueNo).ToList(); - - var inserts = new List(); - foreach (var request in requests.Where(x => existsDeviceUniqueNos.Contains(x.DeviceUniqueNo))) - { - if (await _dbContext.Queryable().Where(x => x.DeviceUniqueNo == request.DeviceUniqueNo - && x.SerialNo == request.SerialNo - && x.RaiseDateTime == request.RaiseDateTime).AnyAsync()) - { - continue; - } - - if (request.CardNo.IsPresent() && request.UserUniqueNo != request.CardNo) - { - //UserUniqueNo为老系统档案号(自动生成),CardNo为工号 - if (await _dbContext.Queryable() - .Where(x => x.DeviceUniqueNo == request.DeviceUniqueNo) - .Where(x => x.No == request.UserUniqueNo && x.Code == request.CardNo) - .Select(x => x.Code) - .AnyAsync()) - { - request.UserUniqueNo = request.CardNo; - } - } - - var device = devices.First(x => x.UniqueNo == request.DeviceUniqueNo); - - inserts.Add(new DeviceUploadLogEntity - { - DeviceUniqueNo = request.DeviceUniqueNo, - UserUniqueNo = request.UserUniqueNo, - RaiseDateTime = request.RaiseDateTime, - SerialNo = request.SerialNo, - Type = device.Type == DeviceTypeEnumType.Attendance - ? DeviceUploadLogTypeEnumType.Attendance - : device.Type == DeviceTypeEnumType.Door && device.AsAttendance - ? DeviceUploadLogTypeEnumType.Attendance - : DeviceUploadLogTypeEnumType.Door, - - TenantId = device.TenantId, - Status = request.Status ?? true, - CreatedBy = 1, - ModifiedBy = 1, - }); - } - - await _dbContext.InsertAsync(inserts); - } } \ No newline at end of file