fix 通行记录数据处理isError

This commit is contained in:
2025-03-05 15:47:13 +08:00
parent 639432234f
commit 2c8007d40d
6 changed files with 66 additions and 16 deletions

View File

@@ -9,4 +9,6 @@ public class WorkGridScheduleAttendancePageRequest : PageDto
public string UserCode { get; set; }
public DateTimePeriod DateTimePeriod { get; set; }
public bool IsError { get; set; }
}

View File

@@ -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
/// </summary>
public string SerialNo { get; set; }
[JsonIgnore]
public string OriginUserUniqueNo { get; set; }
@@ -59,5 +60,33 @@ public class WorkGridScheduleAttendancePageResponse
/// <summary>
/// 是否有效
/// </summary>
public bool Status { get; set; }
public bool Status { get; set; }
/// <summary>
/// 是否是异常记录
/// </summary>
public bool IsError
{
get
{
if (WorkGridInfo.IsEmpty())
{
return false;
}
var obj = WorkGridInfo.ToObject<WorkGridInfo>();
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; }
}

View File

@@ -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
/// <summary>
/// 开始时间
/// </summary>
[JsonConverter(typeof(ToDateJsonConverter))]
public DateTime Start { get; set; }
public TimeOnly Start { get; set; }
/// <summary>
/// 结束时间
/// </summary>
[JsonConverter(typeof(ToDateJsonConverter))]
public DateTime End { get; set; }
public TimeOnly End { get; set; }
/// <summary>
/// 配置描述

View File

@@ -142,14 +142,19 @@ public class WorkGridScheduleService : IWorkGridScheduleService
};
}
var t = request.IsError.ToString();
var filterString = $"IsError\":{t}";
return await _dbContext.Queryable<DeviceUploadLogEntity>()
.LeftJoin<DeviceEntity>((log, d) => log.DeviceUniqueNo == d.UniqueNo)
.LeftJoin<GainfoEntity>((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<WorkGridUserEntity>().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
/// <inheritdoc />
public async Task ManuallyUploadAsync(List<long> logIds)
{
const string filterString = $"IsError\":true";
var requests = await _dbContext.Queryable<DeviceUploadLogEntity>()
.LeftJoin<DeviceEntity>((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,

View File

@@ -33,13 +33,13 @@ public class WorkGridTimePeriodEntity : SugarBaseEntity, ITenantId
/// <summary>
/// 开始时间
/// </summary>
[SugarColumn(IsNullable = false, ColumnDataType = "date")]
[SugarColumn(IsNullable = false, ColumnDataType = "time")]
public TimeOnly Start { get; set; }
/// <summary>
/// 结束时间
/// </summary>
[SugarColumn(IsNullable = false, ColumnDataType = "date")]
[SugarColumn(IsNullable = false, ColumnDataType = "time")]
public TimeOnly End { get; set; }
public string TenantId { get; set; }

View File

@@ -48,7 +48,12 @@ public class DeviceUploadLogService : IDeviceUploadLogService
var max = DateOnly.FromDateTime(requests.Max(x => x.RaiseDateTime));
var workGridUsers = await _dbContext.Queryable<WorkGridUserEntity>()
.LeftJoin<WorkGridEntity>((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<WorkGridScheduleEntity>()
@@ -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; }