feat 网格所有记录
This commit is contained in:
@@ -141,7 +141,7 @@ public class WorkGridsController : ControllerBase
|
||||
[Transactional]
|
||||
public async Task SaveScheduleAsync(WorkGridScheduleSaveRequest request)
|
||||
{
|
||||
await _workGridScheduleService.SaveAsync(request);
|
||||
await _workGridScheduleService.SaveAsync(request);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -193,6 +193,18 @@ public class WorkGridsController : ControllerBase
|
||||
return await _workGridScheduleService.GetAttendancePageAsync(request);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取网格人员考勤记录分页(所有)
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("user/attendance/page-all")]
|
||||
[IgnoreTenant]
|
||||
public async Task<Pagination<WorkGridScheduleAttendancePageResponse>> GetAllAttendancePageAsync([FromQuery] WorkGridScheduleAttendancePageRequest request)
|
||||
{
|
||||
return await _workGridScheduleService.GetAllAttendancePageAsync(request);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 网格人员考勤记录补传
|
||||
/// </summary>
|
||||
|
||||
@@ -5,11 +5,23 @@ namespace Dlhis.Basic.WorkGrids.Request;
|
||||
|
||||
public class WorkGridScheduleAttendancePageRequest : PageDto
|
||||
{
|
||||
/// <summary>
|
||||
/// 工作网格,为空查询所有
|
||||
/// </summary>
|
||||
public Guid? WorkGridCode { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 工号
|
||||
/// </summary>
|
||||
public string UserCode { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 查询时间端
|
||||
/// </summary>
|
||||
public DateTimePeriod DateTimePeriod { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否异常记录
|
||||
/// </summary>
|
||||
public bool IsError { get; set; }
|
||||
}
|
||||
@@ -20,6 +20,8 @@ public interface IWorkGridScheduleService : IScopeDependency
|
||||
|
||||
Task<Pagination<WorkGridScheduleAttendancePageResponse>> GetAttendancePageAsync(WorkGridScheduleAttendancePageRequest request);
|
||||
|
||||
Task<Pagination<WorkGridScheduleAttendancePageResponse>> GetAllAttendancePageAsync(WorkGridScheduleAttendancePageRequest request);
|
||||
|
||||
Task ManuallyUploadAsync(List<long> logIds);
|
||||
|
||||
Task<List<WorkGridScheduleMaximumConsecutiveDto>> MaximumConsecutiveUserCodesAsync(List<string> userCodes, int days, DateOnly date);
|
||||
|
||||
@@ -243,6 +243,7 @@ public class WorkGridScheduleService : IWorkGridScheduleService
|
||||
public async Task<Pagination<WorkGridScheduleAttendancePageResponse>> GetAttendancePageAsync(WorkGridScheduleAttendancePageRequest request)
|
||||
{
|
||||
var jinkoCode = _currentUser.GetUserClaim(UserClaimConstants.JinkoCode);
|
||||
|
||||
var workGrid = await _dbContext.Queryable<WorkGridEntity>()
|
||||
.WhereIF(request.WorkGridCode.HasValue, x => x.Code == request.WorkGridCode)
|
||||
.WhereIF(request.WorkGridCode.HasValue == false, x => x.LeaderUserCode == jinkoCode)
|
||||
@@ -268,7 +269,10 @@ public class WorkGridScheduleService : IWorkGridScheduleService
|
||||
.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 && p.IsDeleted == false).Any())
|
||||
.WhereIF(request.UserCode.IsEmpty(), log => SqlFunc.Subqueryable<WorkGridUserEntity>()
|
||||
.Where(p => p.WorkGridCode == workGrid.Code && p.UserCode == log.UserUniqueNo && p.IsDeleted == false)
|
||||
.Any()
|
||||
)
|
||||
.Where(log => log.WorkGridInfo.StartsWith(filterString))
|
||||
.Where((log, d) => d.Type == DeviceTypeEnumType.Attendance || (d.Type == DeviceTypeEnumType.Door && d.AsAttendance))
|
||||
.OrderBy(log => log.RaiseDateTime)
|
||||
@@ -291,6 +295,45 @@ public class WorkGridScheduleService : IWorkGridScheduleService
|
||||
.ToPageListAsync(request);
|
||||
}
|
||||
|
||||
public async Task<Pagination<WorkGridScheduleAttendancePageResponse>> GetAllAttendancePageAsync(WorkGridScheduleAttendancePageRequest request)
|
||||
{
|
||||
var t = request.IsError.ToString().ToLower();
|
||||
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)
|
||||
.Where(log => SqlFunc.Subqueryable<WorkGridUserEntity>()
|
||||
.Where(p => p.UserCode == log.UserUniqueNo && p.IsDeleted == false)
|
||||
.WhereIF(request.WorkGridCode.HasValue, p => p.WorkGridCode == request.WorkGridCode)
|
||||
.WhereIF(request.UserCode.IsPresent(), p => p.UserCode == request.UserCode)
|
||||
.Any()
|
||||
)
|
||||
.Where(log => log.WorkGridInfo.StartsWith(filterString))
|
||||
.Where((log, d) => d.Type == DeviceTypeEnumType.Attendance || (d.Type == DeviceTypeEnumType.Door && d.AsAttendance))
|
||||
.OrderBy(log => log.RaiseDateTime)
|
||||
.Select((log, d, ga) => new WorkGridScheduleAttendancePageResponse
|
||||
{
|
||||
Id = log.Id,
|
||||
OriginUserUniqueNo = log.UserUniqueNo,
|
||||
DeviceUniqueNo = log.DeviceUniqueNo,
|
||||
RaiseDateTime = log.RaiseDateTime,
|
||||
CreateTime = log.CreateTime,
|
||||
SerialNo = log.SerialNo,
|
||||
DeployPlace = d.DeployPlace,
|
||||
UserCode = log.UserUniqueNo,
|
||||
UserName = ga.Name,
|
||||
Sync = log.Sync,
|
||||
NeedUpload = log.NeedUpload,
|
||||
Status = log.Status,
|
||||
WorkGridInfo = log.WorkGridInfo,
|
||||
})
|
||||
.ToPageListAsync(request);
|
||||
}
|
||||
|
||||
|
||||
/// <inheritdoc />
|
||||
public async Task ManuallyUploadAsync(List<long> logIds)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user