92 lines
3.3 KiB
C#
92 lines
3.3 KiB
C#
using Dlhis.Entity.Basic.Entity;
|
|
using Dlhis.Entity.Device.Entities;
|
|
using Dlhis.Entity.Device.Enums;
|
|
using Dlhis.ScheduledTask.TaskAssignment.Request;
|
|
using Dlhis.ScheduledTask.TaskAssignment.Response;
|
|
using Kurisu.AspNetCore.Utils.Extensions;
|
|
using Kurisu.Core.DataAccess.Dto;
|
|
using Kurisu.SqlSugar.Extensions;
|
|
using Kurisu.SqlSugar.Services;
|
|
using Newtonsoft.Json.Linq;
|
|
using System.Collections.Generic;
|
|
|
|
namespace Dlhis.ScheduledTask.TaskAssignment.Services.Implements;
|
|
|
|
public class DeviceTaskAssignmentService : IDeviceTaskAssignmentService
|
|
{
|
|
private readonly IDbContext _dbContext;
|
|
|
|
public DeviceTaskAssignmentService(IDbContext dbContext)
|
|
{
|
|
_dbContext = dbContext;
|
|
}
|
|
|
|
public async Task<Pagination<DeviceTaskAssignmentResponse>> GetPageAsync(DeviceTaskAssignmentRequest request)
|
|
{
|
|
var page = await _dbContext.Queryable<DeviceTaskEntity>()
|
|
.LeftJoin<GainfoEntity>((deviceTask, ga) => deviceTask.UserNo == ga.No)
|
|
.Select((deviceTask, ga) => new DeviceTaskAssignmentResponse
|
|
{
|
|
DeviceUniqueNo = deviceTask.DeviceUniqueNo,
|
|
ResultMessage = deviceTask.ResultMessage,
|
|
RetryCount = deviceTask.Version,
|
|
Status = deviceTask.Status,
|
|
UserNo = deviceTask.UserNo,
|
|
UserName = ga.Name,
|
|
UserCode = deviceTask.UserCode,
|
|
Type = deviceTask.Type,
|
|
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.Enable && x.Funcs.Contains(request.type))
|
|
.Where(x=>x.UniqueNo == "717840555")
|
|
.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;
|
|
}
|
|
}
|
|
|
|
|