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,