225 lines
6.6 KiB
C#
225 lines
6.6 KiB
C#
using Dlhis.Basic.Device.Request;
|
|
using Dlhis.Basic.Device.Response;
|
|
using Dlhis.Basic.Device.Services;
|
|
using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop;
|
|
using Kurisu.Core.DataAccess.Dto;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
namespace Dlhis.Basic.Device.Controllers;
|
|
|
|
/// <summary>
|
|
/// 设备控制器
|
|
/// </summary>
|
|
[Authorize]
|
|
[Route("api/[controller]")]
|
|
[ApiController]
|
|
public class DevicesController : ControllerBase
|
|
{
|
|
private readonly IDeviceService _deviceService;
|
|
private readonly IDeviceTemplateService _deviceTemplateService;
|
|
private readonly IDeviceConnectService _deviceConnectService;
|
|
private readonly IConfiguration _configuration;
|
|
|
|
public DevicesController(IDeviceService deviceService,
|
|
IDeviceTemplateService deviceTemplateService,
|
|
IDeviceConnectService deviceConnectService,
|
|
IConfiguration configuration)
|
|
{
|
|
_deviceService = deviceService;
|
|
_deviceTemplateService = deviceTemplateService;
|
|
_deviceConnectService = deviceConnectService;
|
|
_configuration = configuration;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 设备模板分页
|
|
/// </summary>
|
|
/// <param name="request"></param>
|
|
/// <returns></returns>
|
|
[HttpGet("template/page")]
|
|
public async Task<Pagination<DeviceTemplateResponse>> GetTemplatePageAsync([FromQuery] DeviceTemplatePageRequest request)
|
|
{
|
|
return await _deviceTemplateService.GetPageAsync(request);
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 设备心跳
|
|
/// </summary>
|
|
/// <param name="request"></param>
|
|
/// <returns></returns>
|
|
[Obsolete("迁移到DeviceConnect")]
|
|
[HttpPost("heartbeat")]
|
|
[IgnoreTenant]
|
|
public async Task HeartbeatAsync(DeviceHeartbeatRequest request)
|
|
{
|
|
await _deviceConnectService.HeartbeatAsync(request);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 设备注册
|
|
/// </summary>
|
|
/// <param name="request"></param>
|
|
/// <returns></returns>
|
|
[Obsolete("迁移到DeviceConnect")]
|
|
[HttpPost("resigter")]
|
|
[IgnoreTenant]
|
|
public async Task<string> ResigterAsync(DeviceResigterRequest request)
|
|
{
|
|
return await _deviceConnectService.ResigterAsync(request);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 设备模板保存
|
|
/// </summary>
|
|
/// <param name="request"></param>
|
|
/// <returns></returns>
|
|
[Authorize(Roles = "admin")]
|
|
[HttpPost("template")]
|
|
public async Task SaveTemplateAsync(DeviceTemplateSaveRequest request)
|
|
{
|
|
await _deviceTemplateService.SaveTemplateAsync(request);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 设备分页
|
|
/// </summary>
|
|
/// <param name="request"></param>
|
|
/// <returns></returns>
|
|
[HttpGet("page")]
|
|
public async Task<Pagination<DevicePageResponse>> GetPageAsync([FromQuery] DevicePageRequest request)
|
|
{
|
|
return await _deviceService.GetPageAsync(request);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 设备保存
|
|
/// </summary>
|
|
/// <param name="request"></param>
|
|
/// <returns></returns>
|
|
[HttpPost("save")]
|
|
[Transactional]
|
|
public async Task SaveAsync(DeviceSaveRequest request)
|
|
{
|
|
await _deviceService.SaveAsync(request);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取激活码
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpPost("resigter-code")]
|
|
public object GetRegisterCode()
|
|
{
|
|
return new
|
|
{
|
|
AppId = _configuration.GetSection("RegisterAppId").Value,
|
|
Key = _configuration.GetSection("RegisterCode").Value
|
|
};
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取尚未设置营业点的设备
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet("businessplaces/incompletion")]
|
|
public async Task<List<DeviceNotSetBusinessPlaceResponse>> GetNotSetBusinessPlaceDevicesAsync()
|
|
{
|
|
return await _deviceConnectService.GetNotSetBusinessPlaceDevicesAsync();
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 设置设备营业点
|
|
/// </summary>
|
|
/// <param name="request"></param>
|
|
/// <returns></returns>
|
|
[HttpPost("businessplaces")]
|
|
public async Task SetResigterBusinessPlaceAsync(DeviceSetResigterBusinessPlaceRequest request)
|
|
{
|
|
await _deviceConnectService.SetResigterBusinessPlaceAsync(request);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 检查设备是否存在
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet("exists")]
|
|
public async Task<bool> CheckExistsAsync(string deviceUniqueNo)
|
|
{
|
|
return await _deviceService.CheckExistsAsync(deviceUniqueNo);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取考勤设备
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet("attendances")]
|
|
public async Task<List<DeviceResponse>> GetAttendanceDevicesAsync()
|
|
{
|
|
return await _deviceService.GetAttendanceDevicesAsync();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取考勤设备在线、离线及总数
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet("devicesnumbers")]
|
|
public async Task<DeviceNumberResponse> GetDeviceNumberAsync()
|
|
{
|
|
return await _deviceService.GetDeviceNumberAsync();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取考勤设备详情列表
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet("attendancestotal")]
|
|
public async Task<Pagination<DevicePageResponse>> GetAttendanceTotalAsync([FromQuery] AttendanceTotalRequest request)
|
|
{
|
|
return await _deviceService.GetAttendanceTotalAsync(request);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取考勤在线/离线设备详情列表
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet("attendancesoffline")]
|
|
public async Task<Pagination<DevicePageResponse>> GetAttendanceOfflineAsync([FromQuery] DeviceOnlineAndofflineRequest request)
|
|
{
|
|
return await _deviceService.GetAttendanceOfflineAsync(request);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取门禁在线/离线设备详情列表
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet("dooroffline")]
|
|
public async Task<Pagination<DevicePageResponse>> GetDoorOfflineAsync([FromQuery] GetDoorOfflineRequest request)
|
|
{
|
|
return await _deviceService.GetDoorOfflineAsync(request);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取近期30天考勤新增设备数
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet("recentnumbers")]
|
|
public async Task<List<RecentNumberResponse>> GetRecentNumbersAsync()
|
|
{
|
|
return await _deviceService.GetRecentNumbersAsync();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 批量导入设备信息
|
|
/// </summary>
|
|
/// <param name="request"></param>
|
|
/// <returns></returns>
|
|
[HttpPost("bulkUploads")]
|
|
public async Task<List<string>> BulkUploadsAsync(ImportListRequest request)
|
|
{
|
|
return await _deviceService.BulkUploadsAsync(request);
|
|
}
|
|
}
|