fix 设备/组新城枚举及调整

This commit is contained in:
cheche
2024-01-31 17:32:00 +08:00
parent 64c113cd6a
commit b1927ef9ca
12 changed files with 41 additions and 147 deletions

View File

@@ -1,4 +1,5 @@
using System.ComponentModel.DataAnnotations;
using Dlhis.Entity.Device.Enums;
using System.ComponentModel.DataAnnotations;
namespace Dlhis.Basic.Device.Request;
@@ -16,4 +17,11 @@ public class DeviceGroupSaveRequest
/// </summary>
[Required(ErrorMessage = "设备组名称不能为空")]
public string Name { get; set; }
/// <summary>
/// 设备组功能类型
/// </summary>
[Required(ErrorMessage = "设备组功能类型不能为空")]
[EnumDataType(typeof(DeviceGroupFunctionEnumType))]
public DeviceGroupFunctionEnumType Type { get; set; }
}

View File

@@ -32,6 +32,13 @@ public class DeviceSaveRequest
[Required(ErrorMessage = "设备功能不能为空")]
public List<DeviceFuncEnumType> Funcs { get; set; }
/// <summary>
/// 设备机功能类型
/// </summary>
[Required(ErrorMessage = "设备机功能类型不能为空")]
[EnumDataType(typeof(DeviceGroupFunctionEnumType))]
public DeviceGroupFunctionEnumType Type { get; set; }
/// <summary>
/// 心跳间隔
/// </summary>

View File

@@ -1,5 +1,6 @@
using Dlhis.Entity.Device.Enums;
using Kurisu.AspNetCore.Utils.Extensions;
using System.ComponentModel.DataAnnotations;
namespace Dlhis.Basic.Device.Response;
@@ -47,6 +48,11 @@ public class DevicePageResponse
public string FuncsStr { get; set; }
/// <summary>
/// 设备机功能类型
/// </summary>
public string TypeDescription { get; set; }
/// <summary>
/// 部署点
/// </summary>

View File

@@ -32,7 +32,7 @@ public class DeviceService : IDeviceService
{
FuncsStr = d.Funcs.ToString(),
Brand = dt.Brand,
TypeDescription = d.Type.ToString(),
}, true)
.ToPageListAsync(request);

View File

@@ -30,4 +30,10 @@ public enum DeviceGroupFunctionEnumType
/// </summary>
[Description("考勤")]
Attendance = 3 ,
/// <summary>
/// 门禁并作为考勤
/// </summary>
[Description("门禁并作为考勤")]
Access = 4,
}

View File

@@ -33,13 +33,4 @@ public class DeviceTaskAssignmentsController : ControllerBase
return await _deviceTaskAssignmentService.GetPageAsync(request);
}
/// <summary>
/// (考勤/门禁/消费机)任务记录
/// </summary>
/// <returns></returns>
[HttpGet("taskrecords")]
public async Task<Pagination<TaskDetailResponse>> GetTaskRecords([FromQuery]TaskRecordsRequest request)
{
return await _deviceTaskAssignmentService.GetTaskRecords(request);
}
}

View File

@@ -26,6 +26,18 @@ public class CreateGetAttendanceJob
var devices = await _dbContext.Queryable<DeviceEntity>().Where(x => x.Enable).ToListAsync();
devices = devices.Where(x => x.Funcs.Contains(DeviceFuncEnumType.Attendance)).ToList();
var ds = devices.Select(x => x.UniqueNo).ToList();
var b = await _dbContext.Queryable<DeviceTaskEntity>()
.Where(x => ds.Contains(x.DeviceUniqueNo))
.Where(x => x.Type == DeviceTaskEnumType.UploadRecord)
.Where(x => x.Status == DeviceTaskStatusEnumType.Wait)
.AnyAsync();
if (b)
{
return;
}
var tasks = devices.Select(x => new DeviceTaskEntity
{
DeviceUniqueNo = x.UniqueNo,

View File

@@ -1,24 +0,0 @@
using Dlhis.Entity.Basic.Enums;
using Dlhis.Entity.Device.Enums;
using Kurisu.Core.DataAccess.Dto;
using System.ComponentModel.DataAnnotations;
namespace Dlhis.ScheduledTask.TaskAssignment.Request
{
public class TaskRecordsRequest : PageDto
{
/// <summary>
/// 人员档案号
/// </summary>
[Required]
public string GainfoNo { get; set; }
/// <summary>
/// 设备机功能类型
/// </summary>
[Required]
[EnumDataType(typeof(DeviceGroupFunctionEnumType))]
public DeviceGroupFunctionEnumType type { get; set; }
}
}

View File

@@ -1,39 +0,0 @@
using Dlhis.Entity.Device.Enums;
using SqlSugar.DbConvert;
using SqlSugar;
namespace Dlhis.ScheduledTask.TaskAssignment.Response
{
public class TaskDetailResponse
{
/// <summary>
/// 设备唯一号
/// </summary>
public string DeviceUniqueNo { get; set; }
/// <summary>
/// 用户学工号
/// </summary>
public string UserCode { get; set; }
/// <summary>
/// 姓名
/// </summary>
public string Name { get; set; }
/// <summary>
/// 任务下发状态
/// </summary>
public string Status { get; set; }
/// <summary>
/// 部署点
/// </summary>
public string DeviceDescription { get; set; }
/// <summary>
/// 连接信息
/// </summary>
public string IP { get; set; }
}
}

View File

@@ -1,28 +0,0 @@
using Dlhis.Entity.Device.Enums;
using SqlSugar;
namespace Dlhis.ScheduledTask.TaskAssignment.Response
{
public class TaskRecordsResponse
{
/// <summary>
/// 用户档案号
/// </summary>
public string UserNo { get; set; }
/// <summary>
/// 用户学工号
/// </summary>
public string UserCode { get; set; }
/// <summary>
/// 姓名
/// </summary>
public string Name { get; set; }
/// <summary>
/// 对应设备任务
/// </summary>
public List<TaskDetailResponse> Tasks { get; set; }
}
}

View File

@@ -8,5 +8,4 @@ public interface IDeviceTaskAssignmentService : IScopeDependency
{
Task<Pagination<DeviceTaskAssignmentResponse>> GetPageAsync(DeviceTaskAssignmentRequest request);
Task<Pagination<TaskDetailResponse>> GetTaskRecords(TaskRecordsRequest request);
}

View File

@@ -38,53 +38,9 @@ public class DeviceTaskAssignmentService : IDeviceTaskAssignmentService
LastUpdateTime = deviceTask.ModifiedTime
})
.ToPageListAsync(request);
return page;
}
/// <summary>
/// 考勤任务记录
/// </summary>
/// <returns></returns>
public async Task<Pagination<TaskDetailResponse>> GetTaskRecords(TaskRecordsRequest request)
{
//获取启用的功能设备
var devices = await _dbContext.Queryable<DeviceEntity>()
.Where(x => x.Type == request.type)
.Select(x => x.UniqueNo)
.ToListAsync();
devices.ThrowIfNull($"{request.type.GetDescription}功能机器为空");
var lst = await _dbContext.Queryable<DeviceTaskEntity>()
.LeftJoin<GainfoEntity>((task, ga) => task.UserNo == ga.No)
.LeftJoin<DeviceEntity>((task, ga, de) => task.DeviceUniqueNo == de.UniqueNo)
.Where(task => task.UserNo == request.GainfoNo)
.Where(task => devices.Contains(task.DeviceUniqueNo))
.Select((task, ga, de) => new TaskDetailResponse
{
DeviceUniqueNo = task.DeviceUniqueNo,
UserCode = task.UserCode,
Name = ga.Name,
Status =task.Status.ToString(),
DeviceDescription = de.DeployPlace,
IP = de.ConnectionInfo
}).ToListAsync();
// 分页操作
var startIndex = (request.PageIndex - 1) * request.PageSize;
var pagedData = lst.Skip(startIndex).Take(request.PageSize).ToList();
var pagination = new Pagination<TaskDetailResponse>
{
PageIndex = request.PageIndex,
PageSize = request.PageSize,
Total = lst.Count, // 使用原始列表的总数进行分页
Data = pagedData
};
return pagination;
}
}