Files
jinko.yikatong/Src/Dlhis.Basic/WorkGrids/Controllers/WorkGridsController.cs

233 lines
7.5 KiB
C#

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;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace Dlhis.Basic.WorkGrids.Controllers;
/// <summary>
/// 工作网格
/// </summary>
[Authorize]
[Route("api/[controller]")]
[ApiController]
public class WorkGridsController : ControllerBase
{
private readonly IWorkGridService _workGridService;
private readonly IWorkGridTimePeriodService _workGridTimePeriodService;
private readonly IWorkGridScheduleService _workGridScheduleService;
public WorkGridsController(IWorkGridService workGridService,
IWorkGridTimePeriodService workGridTimePeriodService,
IWorkGridScheduleService workGridScheduleService)
{
_workGridService = workGridService;
_workGridTimePeriodService = workGridTimePeriodService;
_workGridScheduleService = workGridScheduleService;
}
/// <summary>
/// 人员查询选择
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpGet("gainfo-selections")]
public async Task<Pagination<WorkGridGainfoPageResponse>> GetPageAsync([FromQuery] WorkGridGainfoPageRequest request)
{
return await _workGridService.GetUserSelectionPageAsync(request);
}
/// <summary>
/// 保存
/// </summary>
/// <param name="requests"></param>
/// <returns></returns>
[HttpPost("save")]
[Transactional]
public async Task SaveWorkGridsAsync(List<WorkGridSaveRequest> requests)
{
await _workGridService.SaveAsync(requests);
}
/// <summary>
/// 解散网格
/// </summary>
/// <param name="request"></param>
[HttpPost("dismiss")]
public async Task DismissAsync(WorkGridDismissRequest request)
{
await _workGridService.DismissAsync(request.WorkGridCode);
}
/// <summary>
/// 网格分页
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpGet("page")]
public async Task<Pagination<WorkGridPageResponse>> GetWorkGridPageAsync([FromQuery] WorkGridPageRequest request)
{
return await _workGridService.GetPageAsync(request);
}
/// <summary>
/// 修改网格管理者
/// </summary>
/// <returns></returns>
[HttpPost("leader/change")]
public async Task ChangeWorkGridLeaderAsync(WorkGridChangeRequest request)
{
await _workGridService.ChangeAsync(request.From, request.To);
}
/// <summary>
/// 获取我的网格信息
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpGet("info")]
public async Task<WorkGridUserPageResponse> GetMyWorkGridAsync([FromQuery] WorkGridPageRequest request)
{
return await _workGridService.GetMyWorkGridAsync(request);
}
/// <summary>
/// 保存网格工作时间
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost("timePeriod/save")]
public async Task SaveWorkGridTimePeriodAsync(WorkGridTimePeriodSaveRequest request)
{
await _workGridTimePeriodService.SaveAsync(request);
}
/// <summary>
/// /获取网格工作时间分页
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpGet("timePeriod/page")]
public async Task<Pagination<WorkGridTimePeriodPageResponse>> GetWorkGridTimePeriodPageAsync([FromQuery] WorkGridTimePeriodPageRequest request)
{
return await _workGridTimePeriodService.GetPageAsync(request);
}
/// <summary>
/// 分配人员到网格中
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost("user/assign")]
public async Task AssignUsersToWorkGridAsync(WorkGridUserAssignRequest request)
{
await _workGridService.AssignAsync(request);
}
/// <summary>
/// 移除网格的人员
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost("user/remove")]
[Transactional]
public async Task RemoveUsersFromWorkGridAsync(WorkGridUserRemoveRequest request)
{
await _workGridService.RemoveAsync(request);
}
/// <summary>
/// 保存网格人员排班
/// </summary>
/// <param name="request"></param>
[HttpPost("user/schedule/save")]
[Transactional]
public async Task SaveScheduleAsync(WorkGridScheduleSaveRequest request)
{
await _workGridScheduleService.SaveAsync(request);
}
/// <summary>
/// 移除网格人员排班
/// </summary>
/// <param name="request"></param>
[HttpPost("user/schedule/remove")]
[Transactional]
public async Task RemoveAsyncScheduleAsync(WorkGridScheduleSaveRequest request)
{
await _workGridScheduleService.RemoveAsync(request);
}
/// <summary>
/// 获取网格排班列表
/// </summary>
/// <param name="workGridCode">网格code</param>
/// <param name="date"></param>
/// <param name="periodType"></param>
/// <returns></returns>
[HttpGet("user/schedule/list")]
public async Task<List<WorkGridScheduleResponse>> GetListAsync([FromQuery] Guid workGridCode, [FromQuery] DateTime date, [FromQuery] WorkGridTimePeriodEnumType? periodType)
{
return await _workGridScheduleService.GetListAsync(workGridCode, new DateOnly(date.Year, date.Month, date.Day), periodType);
}
/// <summary>
/// 获取网格人员排班详情
/// </summary>
/// <param name="workGridCode">网格</param>
/// <param name="datePeriod"></param>
/// <returns></returns>
[HttpGet("user/schedule/summary")]
public async Task<List<WorkGridScheduleSummaryResponse>> GetListSummaryAsync([FromQuery] Guid workGridCode, [FromQuery] DateTimePeriod datePeriod)
{
return await _workGridScheduleService.GetListSummaryAsync(workGridCode, datePeriod);
}
[HttpPost("user/schedule/cancel")]
[Transactional]
public async Task ManuallyCancelAsync(WorkGridScheduleCancelRequest request)
{
await _workGridScheduleService.ManuallyCancelAsync(request.Id, request.Reason);
}
/// <summary>
/// 获取网格人员考勤记录分页
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpGet("user/attendance/page")]
[IgnoreTenant]
public async Task<Pagination<WorkGridScheduleAttendancePageResponse>> GetAttendancePageAsync([FromQuery] WorkGridScheduleAttendancePageRequest request)
{
return await _workGridScheduleService.GetAttendancePageAsync(request);
}
/// <summary>
/// 获取网格人员考勤记录分页(所有)
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpGet("user/attendance/page-all")]
public async Task<Pagination<WorkGridScheduleAttendancePageResponse>> GetAllAttendancePageAsync([FromQuery] WorkGridScheduleAttendancePageRequest request)
{
return await _workGridScheduleService.GetAllAttendancePageAsync(request);
}
/// <summary>
/// 网格人员考勤记录补传
/// </summary>
/// <param name="logIds"></param>
[HttpPost("user/attendance/upload")]
[Transactional]
[IgnoreTenant]
public async Task ManuallyUploadAsync(List<long> logIds)
{
await _workGridScheduleService.ManuallyUploadAsync(logIds);
}
}