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; }