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; 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)) .Select(x => x.UniqueNo) .ToListAsync(); devices.ThrowIfNull($"{request.type.GetDescription}功能机器为空"); var tasks = 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 info = await _dbContext.Queryable().Where(x => x.No == request.GainfoNo).FirstAsync(); var entity = new TaskRecordsResponse { UserNo = info.No, UserCode = info.Code, Name = info.Name, Tasks = tasks, }; return entity; } }