diff --git a/Src/Dlhis.Basic/WorkGrids/Controllers/WorkGridsController.cs b/Src/Dlhis.Basic/WorkGrids/Controllers/WorkGridsController.cs index 3cdd03ce..50aeb8c3 100644 --- a/Src/Dlhis.Basic/WorkGrids/Controllers/WorkGridsController.cs +++ b/Src/Dlhis.Basic/WorkGrids/Controllers/WorkGridsController.cs @@ -1,6 +1,7 @@ using Dlhis.Basic.WorkGrids.Request; using Dlhis.Basic.WorkGrids.Response; using Dlhis.Basic.WorkGrids.Services; +using Dlhis.Entity.Basic.Enums; using Kurisu.AspNetCore.CustomClass; using Kurisu.AspNetCore.DataAccess.Dto; using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop; @@ -128,15 +129,16 @@ public class WorkGridsController : ControllerBase } /// - /// 获取人网格员排班列表 + /// 获取网格员排班列表 /// /// 网格code /// + /// /// [HttpGet("user/schedule/list")] - public async Task> GetListAsync([FromQuery] Guid workGridCode, [FromQuery] DateTime date) + public async Task> GetListAsync([FromQuery] Guid workGridCode, [FromQuery] DateTime date, [FromQuery] WorkGridTimePeriodEnumType? periodType) { - return await _workGridScheduleService.GetListAsync(workGridCode, new DateOnly(date.Year, date.Month, date.Day)); + return await _workGridScheduleService.GetListAsync(workGridCode, new DateOnly(date.Year, date.Month, date.Day), periodType); } /// diff --git a/Src/Dlhis.Basic/WorkGrids/Request/WorkGridPageRequest.cs b/Src/Dlhis.Basic/WorkGrids/Request/WorkGridPageRequest.cs index 936ee923..e5a2a3d2 100644 --- a/Src/Dlhis.Basic/WorkGrids/Request/WorkGridPageRequest.cs +++ b/Src/Dlhis.Basic/WorkGrids/Request/WorkGridPageRequest.cs @@ -4,5 +4,8 @@ namespace Dlhis.Basic.WorkGrids.Request; public class WorkGridPageRequest : PageDto { - + /// + /// 网格code,不传则取我的网格 + /// + public Guid? WorkGridCode { get; set; } } \ No newline at end of file diff --git a/Src/Dlhis.Basic/WorkGrids/Response/WorkGridScheduleResponse.cs b/Src/Dlhis.Basic/WorkGrids/Response/WorkGridScheduleResponse.cs index eddfad3e..34a61f34 100644 --- a/Src/Dlhis.Basic/WorkGrids/Response/WorkGridScheduleResponse.cs +++ b/Src/Dlhis.Basic/WorkGrids/Response/WorkGridScheduleResponse.cs @@ -9,4 +9,6 @@ public class WorkGridScheduleResponse public WorkGridTimePeriodEnumType PeriodType { get; set; } public string UserCode { get; set; } + + public string UserName { get; set; } } \ No newline at end of file diff --git a/Src/Dlhis.Basic/WorkGrids/Services/IWorkGridScheduleService.cs b/Src/Dlhis.Basic/WorkGrids/Services/IWorkGridScheduleService.cs index df2d46fc..a1b04591 100644 --- a/Src/Dlhis.Basic/WorkGrids/Services/IWorkGridScheduleService.cs +++ b/Src/Dlhis.Basic/WorkGrids/Services/IWorkGridScheduleService.cs @@ -1,5 +1,6 @@ using Dlhis.Basic.WorkGrids.Request; using Dlhis.Basic.WorkGrids.Response; +using Dlhis.Entity.Basic.Enums; using Kurisu.AspNetCore.DataAccess.Dto; namespace Dlhis.Basic.WorkGrids.Services; @@ -11,7 +12,7 @@ public interface IWorkGridScheduleService : IScopeDependency { Task SaveAsync(WorkGridScheduleSaveRequest request); - Task> GetListAsync(Guid workGridCode, DateOnly date); + Task> GetListAsync(Guid workGridCode, DateOnly date, WorkGridTimePeriodEnumType? periodType); Task> GetListSummaryAsync(Guid workGridCode, DateOnly start, DateOnly end); diff --git a/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridScheduleService.cs b/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridScheduleService.cs index 40c2d706..fe8ba3ff 100644 --- a/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridScheduleService.cs +++ b/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridScheduleService.cs @@ -1,6 +1,7 @@ using Dlhis.Basic.WorkGrids.Request; using Dlhis.Basic.WorkGrids.Response; using Dlhis.Entity.Basic.Entity; +using Dlhis.Entity.Basic.Enums; using Dlhis.Entity.Device.Entities; using Dlhis.Jip.Api; using Dlhis.Jip.Api.Requests; @@ -17,7 +18,7 @@ public class WorkGridScheduleService : IWorkGridScheduleService private readonly IDbContext _dbContext; private readonly IJinkoJipApi _jinkoJipApi; - public WorkGridScheduleService(IDbContext dbContext ,IJinkoJipApi jinkoJipApi) + public WorkGridScheduleService(IDbContext dbContext, IJinkoJipApi jinkoJipApi) { _dbContext = dbContext; _jinkoJipApi = jinkoJipApi; @@ -53,15 +54,18 @@ public class WorkGridScheduleService : IWorkGridScheduleService } /// - public async Task> GetListAsync(Guid workGridCode, DateOnly date) + public async Task> GetListAsync(Guid workGridCode, DateOnly date, WorkGridTimePeriodEnumType? periodType) { return await _dbContext.Queryable() + .LeftJoin((x, ga) => x.UserCode == ga.Code) .Where(x => x.WorkGridCode == workGridCode && x.Date == date) - .Select(x => new WorkGridScheduleResponse + .WhereIF(periodType.HasValue, x => x.PeriodType == periodType) + .Select((x, ga) => new WorkGridScheduleResponse { Date = x.Date, PeriodType = x.PeriodType, - UserCode = x.UserCode + UserCode = x.UserCode, + UserName = ga.Name }) .ToListAsync(); } @@ -72,7 +76,7 @@ public class WorkGridScheduleService : IWorkGridScheduleService var workGridSchedules = await _dbContext.Queryable() .Where(x => x.WorkGridCode == workGridCode && x.Date >= start && x.Date <= end) .ToListAsync(); - + return workGridSchedules.GroupBy(x => x.Date).Select(x => { return new WorkGridScheduleSummaryResponse @@ -90,9 +94,9 @@ public class WorkGridScheduleService : IWorkGridScheduleService /// public async Task> GetAttendancePageAsync(WorkGridScheduleAttendancePageRequest request) { - return await _dbContext.Queryable() + return await _dbContext.Queryable() .LeftJoin((log, d) => log.DeviceUniqueNo == d.UniqueNo) - .Where(log => log.UserUniqueNo == request.UserCode ) + .Where(log => log.UserUniqueNo == request.UserCode) .WhereIF(request.DateTimePeriod.HasValue(), log => log.RaiseDateTime >= request.DateTimePeriod.Start && log.RaiseDateTime <= request.DateTimePeriod.End) .OrderBy(log => log.RaiseDateTime) diff --git a/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridService.cs b/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridService.cs index 0a217deb..d41b1856 100644 --- a/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridService.cs +++ b/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridService.cs @@ -74,6 +74,7 @@ public class WorkGridService : IWorkGridService return await _dbContext.Queryable() .LeftJoin((x, ga) => x.LeaderUserCode == ga.Code) .WhereIF(!isAll, x => x.LeaderUserCode == userCode) + .WhereIF(request.Search.IsPresent(), x => x.Name.Contains(request.Search) || x.LeaderUserCode == request.Search) .Select((x, ga) => new WorkGridPageResponse { Id = x.Id, @@ -105,7 +106,8 @@ public class WorkGridService : IWorkGridService { var currentUserCode = _currentUser.GetUserClaim("jinko-code"); var myWorkGrid = await _dbContext.Queryable() - .Where(x => x.LeaderUserCode == currentUserCode) + .WhereIF(request.WorkGridCode.HasValue == false, x => x.LeaderUserCode == currentUserCode) + .WhereIF(request.WorkGridCode.HasValue, x => x.Code == request.WorkGridCode) .Select(x => new WorkGridUserPageResponse { Id = x.Id, @@ -115,6 +117,7 @@ public class WorkGridService : IWorkGridService UserInfos = SqlFunc.Subqueryable() .LeftJoin((p, ga) => p.UserCode == ga.Code) .Where((p, ga) => p.WorkGridCode == x.Code) + .WhereIF(request.Search.IsPresent(), (p, ga) => p.UserCode == request.Search || ga.Name.Contains(request.Search)) .ToList((p, ga) => new WorkGridUserPageDetailResponse { Code = p.UserCode,