using Dlhis.Entity.Basic.Entity; using Dlhis.Entity.Device.Entities; 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> GetPageAsync(DeviceTaskAssignmentRequest request) { var page = await _dbContext.Queryable() .LeftJoin((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; } /// /// 考勤任务记录 /// /// public async Task> GetTaskRecords(TaskRecordsRequest request) { //获取启用的功能设备 var devices = await _dbContext.Queryable() //.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() .LeftJoin((task, ga) => task.UserNo == ga.No) .LeftJoin((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, 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 { PageIndex = request.PageIndex, PageSize = request.PageSize, Total = lst.Count, // 使用原始列表的总数进行分页 Data = pagedData }; return pagination; } }