diff --git a/Src/Dlhis.Basic/WorkGrids/Request/WorkGridScheduleAttendancePageRequest.cs b/Src/Dlhis.Basic/WorkGrids/Request/WorkGridScheduleAttendancePageRequest.cs index fcf0ae17..96d02a04 100644 --- a/Src/Dlhis.Basic/WorkGrids/Request/WorkGridScheduleAttendancePageRequest.cs +++ b/Src/Dlhis.Basic/WorkGrids/Request/WorkGridScheduleAttendancePageRequest.cs @@ -9,4 +9,6 @@ public class WorkGridScheduleAttendancePageRequest : PageDto public string UserCode { get; set; } public DateTimePeriod DateTimePeriod { get; set; } + + public bool IsError { get; set; } } \ No newline at end of file diff --git a/Src/Dlhis.Basic/WorkGrids/Response/WorkGridScheduleAttendancePageResponse.cs b/Src/Dlhis.Basic/WorkGrids/Response/WorkGridScheduleAttendancePageResponse.cs index e4e3ff16..9a726bc5 100644 --- a/Src/Dlhis.Basic/WorkGrids/Response/WorkGridScheduleAttendancePageResponse.cs +++ b/Src/Dlhis.Basic/WorkGrids/Response/WorkGridScheduleAttendancePageResponse.cs @@ -1,3 +1,5 @@ +using Dlhis.Entity.Basic.Enums; +using Kurisu.AspNetCore.Utils.Extensions; using Newtonsoft.Json; namespace Dlhis.Basic.WorkGrids.Response; @@ -42,7 +44,6 @@ public class WorkGridScheduleAttendancePageResponse /// public string SerialNo { get; set; } - [JsonIgnore] public string OriginUserUniqueNo { get; set; } @@ -59,5 +60,33 @@ public class WorkGridScheduleAttendancePageResponse /// /// 是否有效 /// - public bool Status { get; set; } + public bool Status { get; set; } + + /// + /// 是否是异常记录 + /// + public bool IsError + { + get + { + if (WorkGridInfo.IsEmpty()) + { + return false; + } + + var obj = WorkGridInfo.ToObject(); + return obj.IsError; + } + } + + [JsonIgnore] + public string WorkGridInfo { get; set; } +} + +public class WorkGridInfo +{ + public bool IsError { get; set; } + public object WorkGrid { get; set; } + public WorkGridTimePeriodEnumType? PeriodType { get; set; } + public object TimeSetting { get; set; } } \ No newline at end of file diff --git a/Src/Dlhis.Basic/WorkGrids/Response/WorkGridTimePeriodPageResponse.cs b/Src/Dlhis.Basic/WorkGrids/Response/WorkGridTimePeriodPageResponse.cs index 89ea9d65..03c23873 100644 --- a/Src/Dlhis.Basic/WorkGrids/Response/WorkGridTimePeriodPageResponse.cs +++ b/Src/Dlhis.Basic/WorkGrids/Response/WorkGridTimePeriodPageResponse.cs @@ -1,7 +1,5 @@ using Dlhis.Entity.Basic.Enums; -using Kurisu.AspNetCore.Utils.Converters; using Kurisu.AspNetCore.Utils.Extensions; -using Newtonsoft.Json; namespace Dlhis.Basic.WorkGrids.Response; @@ -32,14 +30,12 @@ public class WorkGridTimePeriodPageResponse /// /// 开始时间 /// - [JsonConverter(typeof(ToDateJsonConverter))] - public DateTime Start { get; set; } + public TimeOnly Start { get; set; } /// /// 结束时间 /// - [JsonConverter(typeof(ToDateJsonConverter))] - public DateTime End { get; set; } + public TimeOnly End { get; set; } /// /// 配置描述 diff --git a/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridScheduleService.cs b/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridScheduleService.cs index 23313c52..8d563c65 100644 --- a/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridScheduleService.cs +++ b/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridScheduleService.cs @@ -142,14 +142,19 @@ public class WorkGridScheduleService : IWorkGridScheduleService }; } + var t = request.IsError.ToString(); + var filterString = $"IsError\":{t}"; + return await _dbContext.Queryable() .LeftJoin((log, d) => log.DeviceUniqueNo == d.UniqueNo) + .LeftJoin((log, d, ga) => log.UserUniqueNo == ga.Code) .WhereIF(request.DateTimePeriod.HasValue(), log => log.RaiseDateTime >= request.DateTimePeriod.Start && log.RaiseDateTime <= request.DateTimePeriod.End) .WhereIF(request.UserCode.IsPresent(), log => log.UserUniqueNo == request.UserCode) .WhereIF(request.UserCode.IsEmpty(), log => SqlFunc.Subqueryable().Where(p => p.WorkGridCode == workGrid.Code && p.UserCode == log.UserUniqueNo).Any()) + .Where(log => log.WorkGridInfo.StartsWith(filterString)) .OrderBy(log => log.RaiseDateTime) - .Select((log, d) => new WorkGridScheduleAttendancePageResponse + .Select((log, d, ga) => new WorkGridScheduleAttendancePageResponse { Id = log.Id, OriginUserUniqueNo = log.UserUniqueNo, @@ -158,8 +163,12 @@ public class WorkGridScheduleService : IWorkGridScheduleService CreateTime = log.CreateTime, SerialNo = log.SerialNo, DeployPlace = d.DeployPlace, + UserCode = log.UserUniqueNo, + UserName = ga.Name, Sync = log.Sync, - Status = log.Status + NeedUpload = log.NeedUpload, + Status = log.Status, + WorkGridInfo = log.WorkGridInfo, }) .ToPageListAsync(request); } @@ -167,10 +176,12 @@ public class WorkGridScheduleService : IWorkGridScheduleService /// public async Task ManuallyUploadAsync(List logIds) { + const string filterString = $"IsError\":true"; + var requests = await _dbContext.Queryable() .LeftJoin((x, device) => x.DeviceUniqueNo == device.UniqueNo) - .Where(x => logIds.Contains(x.Id)) - .Where(x => x.NeedUpload && x.Sync == false) + .Where(x => logIds.Contains(x.Id) && x.Sync == false) + .Where(x => x.WorkGridInfo.StartsWith(filterString)) .Select((x, device) => new UploadAttendanceRequestItem { Id = x.Id, diff --git a/Src/Dlhis.Entity/Basic/Entity/WorkGridTimePeriodEntity.cs b/Src/Dlhis.Entity/Basic/Entity/WorkGridTimePeriodEntity.cs index b13e0512..2798a181 100644 --- a/Src/Dlhis.Entity/Basic/Entity/WorkGridTimePeriodEntity.cs +++ b/Src/Dlhis.Entity/Basic/Entity/WorkGridTimePeriodEntity.cs @@ -33,13 +33,13 @@ public class WorkGridTimePeriodEntity : SugarBaseEntity, ITenantId /// /// 开始时间 /// - [SugarColumn(IsNullable = false, ColumnDataType = "date")] + [SugarColumn(IsNullable = false, ColumnDataType = "time")] public TimeOnly Start { get; set; } /// /// 结束时间 /// - [SugarColumn(IsNullable = false, ColumnDataType = "date")] + [SugarColumn(IsNullable = false, ColumnDataType = "time")] public TimeOnly End { get; set; } public string TenantId { get; set; } diff --git a/Src/Dlhis.ScheduledTask/DeviceUploadLog/Services/Implements/DeviceUploadLogService.cs b/Src/Dlhis.ScheduledTask/DeviceUploadLog/Services/Implements/DeviceUploadLogService.cs index c9a09dcf..8a4eb965 100644 --- a/Src/Dlhis.ScheduledTask/DeviceUploadLog/Services/Implements/DeviceUploadLogService.cs +++ b/Src/Dlhis.ScheduledTask/DeviceUploadLog/Services/Implements/DeviceUploadLogService.cs @@ -48,7 +48,12 @@ public class DeviceUploadLogService : IDeviceUploadLogService var max = DateOnly.FromDateTime(requests.Max(x => x.RaiseDateTime)); var workGridUsers = await _dbContext.Queryable() + .LeftJoin((x, wg) => x.WorkGridCode == wg.Code) .Where(x => userCodes2.Contains(x.UserCode)) + .Select((x, wg) => new + { + x.WorkGridCode, x.UserCode, wg.LeaderUserCode, wg.Name + }) .ToListAsync(); var workGridSchedules = await _dbContext.Queryable() @@ -101,10 +106,16 @@ public class DeviceUploadLogService : IDeviceUploadLogService var workGridUser = workGridUsers.FirstOrDefault(x => x.UserCode == request.UserUniqueNo); if (needUpload && currentWorkGridTimePeriods.Any() && workGridUser != null) { - workGridInfo.TimeSetting = currentWorkGridTimePeriods; + workGridInfo.TimeSetting = currentWorkGridTimePeriods.Select(x => new + { + Type = x.Type.GetDescription(), x.Before, x.Start, x.End, x.After, x.TenantId + }).ToList(); + workGridInfo.WorkGrid = new { - workGridUser.WorkGridCode + workGridUser.WorkGridCode, + workGridUser.Name, + workGridUser.LeaderUserCode }; var currentDate = request.RaiseDateTime.Date; var currentDateOnly = DateOnly.FromDateTime(currentDate); @@ -405,6 +416,7 @@ public class DeviceUploadLogService : IDeviceUploadLogService public class WorkGridInfo { + public bool IsError => !PeriodType.HasValue; public object WorkGrid { get; set; } public WorkGridTimePeriodEnumType? PeriodType { get; set; } public object TimeSetting { get; set; }