From 9673f173b2faf120c100de2891c14563c67c7f7a Mon Sep 17 00:00:00 2001 From: cheche <717840555@qq.com> Date: Mon, 29 Jan 2024 18:15:48 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E8=AE=B0=E5=BD=95=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DevicePermissionsController.cs | 13 ++ .../Device/Request/AssigmentByCodeRequest.cs | 15 +++ .../Response/AssigmentByCodeResponse.cs | 17 +++ .../Services/IDevicePermissionService.cs | 9 ++ .../Implements/DevicePermissionService.cs | 53 ++++++++ .../Controllers/GainfosController.cs | 22 ++++ .../Request/GainfoDetailRequest.cs | 21 ++++ .../Organization/Request/GainfoListRequest.cs | 35 ++++++ .../Response/GainfoDetailResponse.cs | 114 ++++++++++++++++++ .../Response/GainfoListResponse.cs | 60 +++++++++ .../Organization/Services/IGainfoService.cs | 4 + .../Services/Implements/GainfoService.cs | 68 +++++++++++ .../Services/Implements/ApkFIileService.cs | 4 +- .../DeviceTaskAssignmentsController.cs | 10 ++ .../Request/TaskRecordsRequest.cs | 22 ++++ .../Response/TaskDetailResponse.cs | 39 ++++++ .../Response/TaskRecordsResponse.cs | 28 +++++ .../Services/IDeviceTaskAssignmentService.cs | 2 + .../Implements/DeviceTaskAssignmentService.cs | 44 +++++++ 19 files changed, 578 insertions(+), 2 deletions(-) create mode 100644 Src/Dlhis.Basic/Device/Request/AssigmentByCodeRequest.cs create mode 100644 Src/Dlhis.Basic/Device/Response/AssigmentByCodeResponse.cs create mode 100644 Src/Dlhis.Basic/Organization/Request/GainfoDetailRequest.cs create mode 100644 Src/Dlhis.Basic/Organization/Request/GainfoListRequest.cs create mode 100644 Src/Dlhis.Basic/Organization/Response/GainfoDetailResponse.cs create mode 100644 Src/Dlhis.Basic/Organization/Response/GainfoListResponse.cs create mode 100644 Src/Dlhis.ScheduledTask/TaskAssignment/Request/TaskRecordsRequest.cs create mode 100644 Src/Dlhis.ScheduledTask/TaskAssignment/Response/TaskDetailResponse.cs create mode 100644 Src/Dlhis.ScheduledTask/TaskAssignment/Response/TaskRecordsResponse.cs diff --git a/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs b/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs index aedb02e5..e828c23a 100644 --- a/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs +++ b/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs @@ -1,5 +1,7 @@ using Dlhis.Basic.Device.Request; +using Dlhis.Basic.Device.Response; using Dlhis.Basic.Device.Services; +using Kurisu.Core.DataAccess.Dto; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; @@ -38,4 +40,15 @@ public class DevicePermissionsController : ControllerBase { return await _devicePermissionService.GetAssignmentsAsync(request.UniqueType, request.AssignType, request.AssignValue); } + + /// + /// 获取用户权限设备 + /// + /// + /// + [HttpGet("assignmentsbycode")] + public async Task> GetAssigmentByCodeAsync([FromQuery] AssigmentByCodeRequest request) + { + return await _devicePermissionService.GetAssigmentByCodeAsync(request); + } } diff --git a/Src/Dlhis.Basic/Device/Request/AssigmentByCodeRequest.cs b/Src/Dlhis.Basic/Device/Request/AssigmentByCodeRequest.cs new file mode 100644 index 00000000..4430c371 --- /dev/null +++ b/Src/Dlhis.Basic/Device/Request/AssigmentByCodeRequest.cs @@ -0,0 +1,15 @@ +using Kurisu.Core.DataAccess.Dto; +using SqlSugar; +using System.ComponentModel.DataAnnotations; + +namespace Dlhis.Basic.Device.Request +{ + public class AssigmentByCodeRequest : PageDto + { + /// + /// 档案号 + /// + [Required] + public string No { get; set; } + } +} diff --git a/Src/Dlhis.Basic/Device/Response/AssigmentByCodeResponse.cs b/Src/Dlhis.Basic/Device/Response/AssigmentByCodeResponse.cs new file mode 100644 index 00000000..d6420096 --- /dev/null +++ b/Src/Dlhis.Basic/Device/Response/AssigmentByCodeResponse.cs @@ -0,0 +1,17 @@ +using SqlSugar; + +namespace Dlhis.Basic.Device.Response +{ + public class AssigmentByCodeResponse + { + /// + /// 设备唯一码,IP/MAC/SNO + /// + public string UniqueNo { get; set; } + + /// + /// 设备名称 + /// + public string UniqueName { get; set; } + } +} diff --git a/Src/Dlhis.Basic/Device/Services/IDevicePermissionService.cs b/Src/Dlhis.Basic/Device/Services/IDevicePermissionService.cs index f53464cb..040d00ac 100644 --- a/Src/Dlhis.Basic/Device/Services/IDevicePermissionService.cs +++ b/Src/Dlhis.Basic/Device/Services/IDevicePermissionService.cs @@ -1,6 +1,8 @@ using Dlhis.Basic.Device.Request; +using Dlhis.Basic.Device.Response; using Dlhis.Entity.Device.Enums; using Dlhis.Entity.Sys.Enums; +using Kurisu.Core.DataAccess.Dto; namespace Dlhis.Basic.Device.Services; @@ -47,4 +49,11 @@ public interface IDevicePermissionService : IScopeDependency /// /// Task> GetAssignDeviceCodesAsync(string userNo); + + /// + /// 获取用户权限设备 + /// + /// + /// + Task> GetAssigmentByCodeAsync(AssigmentByCodeRequest request); } diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs index 4ad01fd4..1fbc6c88 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs @@ -1,12 +1,15 @@ using Dlhis.Basic.Device.Request; +using Dlhis.Basic.Device.Response; using Dlhis.Entity.Basic.Entity; using Dlhis.Entity.Device.Entities; using Dlhis.Entity.Device.Enums; using Dlhis.Entity.Sys.Entities; using Dlhis.Entity.Sys.Enums; using Kurisu.AspNetCore.Utils.Extensions; +using Kurisu.Core.DataAccess.Dto; using Kurisu.SqlSugar.Attributes; using Kurisu.SqlSugar.Services; +using System.Collections.Generic; namespace Dlhis.Basic.Device.Services.Implements; @@ -322,6 +325,56 @@ public class DevicePermissionService : IDevicePermissionService } } + /// + /// 获取用户权限设备 + /// + /// + /// + public async Task> GetAssigmentByCodeAsync(AssigmentByCodeRequest request) + { + //所有设备guid + var gds = await GetAssignmentsAsync(DeviceAssignmentTypeEnumType.Device, AssignTypeEnumType.User, request.No); + + //所有设备组guid + var ggs = await GetAssignmentsAsync(DeviceAssignmentTypeEnumType.Group, AssignTypeEnumType.User, request.No); + + var devices = await _dbContext.Queryable().ToListAsync(); + + if(ggs != null && ggs.Count > 0) + { + foreach (var gid in ggs) + { + var ds = await _dbContext.Queryable() + .Where(x => x.GroupCode == gid) + .Select(x => x.DeviceCode) + .ToListAsync(); + gds.AddRange(ds); + } + } + + var dds = gds.Distinct().ToList(); + var lst = devices.Where(x => dds.Contains(x.Code)) + .Select(x => new AssigmentByCodeResponse + { + UniqueNo = x.UniqueNo, + UniqueName = x.Supplier + }).ToList(); + + // 分页操作 + 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; + + } //************************************************ help methods ******************************************************* diff --git a/Src/Dlhis.Basic/Organization/Controllers/GainfosController.cs b/Src/Dlhis.Basic/Organization/Controllers/GainfosController.cs index 6167d106..17ddbe3f 100644 --- a/Src/Dlhis.Basic/Organization/Controllers/GainfosController.cs +++ b/Src/Dlhis.Basic/Organization/Controllers/GainfosController.cs @@ -6,6 +6,7 @@ using Kurisu.AspNetCore.MVC; using Kurisu.Core.DataAccess.Dto; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using Org.BouncyCastle.Asn1.Ocsp; namespace Dlhis.Basic.MealUser.Controllers; @@ -134,5 +135,26 @@ public class GainfosController : ControllerBase { return await _gainfoService.GetFaceByUserCodesAsync(request); } + + /// + /// 档案列表 + /// + /// + /// + [HttpGet("gainfolist")] + public async Task> GetGainfoListTaskAsync([FromQuery]GainfoListRequest request) + { + return await _gainfoService.GetGainfoListTaskAsync(request); + } + /// + /// 档案详情 + /// + /// + /// + [HttpGet("gainfodetail")] + public async Task> GetGainfoDetailTaskAsync([FromQuery] GainfoDetailRequest request) + { + return await _gainfoService.GetGainfoDetailTaskAsync(request); + } } diff --git a/Src/Dlhis.Basic/Organization/Request/GainfoDetailRequest.cs b/Src/Dlhis.Basic/Organization/Request/GainfoDetailRequest.cs new file mode 100644 index 00000000..0b7f51d7 --- /dev/null +++ b/Src/Dlhis.Basic/Organization/Request/GainfoDetailRequest.cs @@ -0,0 +1,21 @@ +using Dlhis.Entity.Basic.Enums; +using Kurisu.Core.DataAccess.Dto; +using SqlSugar; +using System.ComponentModel.DataAnnotations; + +namespace Dlhis.Basic.Organization.Request +{ + public class GainfoDetailRequest : PageDto + { + /// + /// 档案类型 + /// + [Required] + public GainfoStatusEnumType Status { get; set; } + + /// + /// 档案号 + /// + public string No { get; set; } + } +} diff --git a/Src/Dlhis.Basic/Organization/Request/GainfoListRequest.cs b/Src/Dlhis.Basic/Organization/Request/GainfoListRequest.cs new file mode 100644 index 00000000..da7aa159 --- /dev/null +++ b/Src/Dlhis.Basic/Organization/Request/GainfoListRequest.cs @@ -0,0 +1,35 @@ +using Dlhis.Entity.Basic.Enums; +using Kurisu.Core.DataAccess.Dto; +using System.ComponentModel.DataAnnotations; + +namespace Dlhis.Basic.Organization.Request +{ + public class GainfoListRequest:PageDto + { + /// + /// 档案类型 + /// + [Required] + public GainfoStatusEnumType Status { get; set; } + + /// + /// 姓名 + /// + public string Name { get; set; } + + /// + /// 身份证号 + /// + public string IdNo { get; set; } + + /// + /// 部门编码 + /// + public string DepartmentNo { get; set; } + + /// + /// 学工号 + /// + public string Code { get; set; } + } +} diff --git a/Src/Dlhis.Basic/Organization/Response/GainfoDetailResponse.cs b/Src/Dlhis.Basic/Organization/Response/GainfoDetailResponse.cs new file mode 100644 index 00000000..a2472cfe --- /dev/null +++ b/Src/Dlhis.Basic/Organization/Response/GainfoDetailResponse.cs @@ -0,0 +1,114 @@ +using Dlhis.Entity.Basic.Enums; +using SqlSugar; +using SqlSugar.DbConvert; + +namespace Dlhis.Basic.Organization.Response +{ + public class GainfoDetailResponse + { + /// + /// 档案号 + /// + public string No { get; set; } + + /// + /// SAP内部编号 + /// + public string SapNo { get; set; } + + /// + /// 姓名 + /// + public string Name { get; set; } + + /// + /// 学工号 + /// + public string Code { get; set; } + + /// + /// 部门名称 + /// + public string DepartmentName { get; set; } + + /// + /// 证件类型代码 + /// + public string IdClass { get; set; } + + /// + /// 身份证号 + /// + public string IdNo { get; set; } + + /// + /// 性别 + /// + public GenderEnumType Gender { get; set; } + + /// + /// 身份证籍贯 + /// + public string NativeName { get; set; } + + /// + /// 身份证地址 + /// + public string Address { get; set; } + + /// + /// 生日 + /// + public DateTime Birthday { get; set; } + + /// + /// 手机号码 + /// + public string Phone { get; set; } + + /// + /// 岗位 + /// + public string Position { get; set; } + + /// + /// 职等 + /// + public string Grade { get; set; } + + /// + /// 学历 + /// + public string Degree { get; set; } + + /// + /// 人事范围 + /// + public string Werks { get; set; } + + /// + /// 成本中心 + /// + public string CostId { get; set; } + + /// + /// 已婚/未婚 + /// + public string Marital { get; set; } + + /// + /// 国家 + /// + public string CountryName { get; set; } + + /// + /// 民族代码 + /// + public string NationName { get; set; } + + /// + /// 是否在职 + /// + public bool IsActive { get; set; } + } +} diff --git a/Src/Dlhis.Basic/Organization/Response/GainfoListResponse.cs b/Src/Dlhis.Basic/Organization/Response/GainfoListResponse.cs new file mode 100644 index 00000000..a826eec0 --- /dev/null +++ b/Src/Dlhis.Basic/Organization/Response/GainfoListResponse.cs @@ -0,0 +1,60 @@ +using Dlhis.Entity.Basic.Enums; +using SqlSugar; +using SqlSugar.DbConvert; + +namespace Dlhis.Basic.Organization.Response +{ + public class GainfoListResponse + { + /// + /// 档案号 + /// + public string No { get; set; } + + /// + /// 姓名 + /// + public string Name { get; set; } + + /// + /// 学工号 + /// + public string Code { get; set; } + + /// + /// 身份证号 + /// + public string IdNo { get; set; } + + /// + /// 性别 + /// + public GenderEnumType Gender { get; set; } + + /// + /// 手机号码 + /// + public string Phone { get; set; } + + /// + /// 部门编码 + /// + public string DepartmentNo { get; set; } + + /// + /// 部门名称 + /// + public string DepartmentName { get; set; } + + /// + /// 身份证地址 + /// + public string Address { get; set; } + + /// + /// 在职状态 + /// + public string Employed { get; set; } + + } +} diff --git a/Src/Dlhis.Basic/Organization/Services/IGainfoService.cs b/Src/Dlhis.Basic/Organization/Services/IGainfoService.cs index 9411be5d..968b4225 100644 --- a/Src/Dlhis.Basic/Organization/Services/IGainfoService.cs +++ b/Src/Dlhis.Basic/Organization/Services/IGainfoService.cs @@ -26,4 +26,8 @@ public interface IGainfoService : IScopeDependency Task GetFaceByUserCodeAsync(string userCode); Task> GetFaceByUserCodesAsync(GetFaceByUserCodesRequest request); + + Task> GetGainfoListTaskAsync(GainfoListRequest request); + + Task> GetGainfoDetailTaskAsync(GainfoDetailRequest request); } diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs index b703936c..06e8e631 100644 --- a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs +++ b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs @@ -308,6 +308,74 @@ public class GainfoService : IGainfoService return faceDictionary; } + /// + /// 档案列表 + /// + /// + /// + public async Task> GetGainfoListTaskAsync( GainfoListRequest request) + { + var page = await _gainfoStore.Queryable(request.Status) + .LeftJoin((ga, de) => ga.DepartmentNo == de.No) + .WhereIF(!request.Name.IsEmpty(), ga => ga.Name == request.Name) + .WhereIF(!request.IdNo.IsEmpty(), ga => ga.IdNo == request.IdNo) + .WhereIF(!request.DepartmentNo.IsEmpty(), ga => ga.DepartmentNo == request.DepartmentNo) + .WhereIF(!request.Code.IsEmpty(), ga => ga.Code == request.Code) + .Select((ga, de) => new GainfoListResponse + { + No = ga.No, + Name = ga.Name, + Code = ga.Code, + IdNo = ga.IdNo, + Gender = ga.Gender, + Phone = ga.Phone, + DepartmentNo = de.No, + DepartmentName = de.Name, + Address = ga.Address, + Employed = ga.Employed + }).ToPageListAsync(request); + return page; + } + /// + /// 档案详情 + /// + /// + /// + public async Task> GetGainfoDetailTaskAsync(GainfoDetailRequest request) + { + var page = await _gainfoStore.Queryable(request.Status) + .LeftJoin((ga, de) => ga.DepartmentNo == de.No) + .LeftJoin((ga,de,type) => ga.Native == type.Code && type.Type == "native") + .LeftJoin((ga, de, type,posi) => ga.Position == posi.Name) + .LeftJoin((ga, de, type, posi,type2) => ga.CountryNo == type2.Code && type2.Type == "country") + .LeftJoin((ga, de, type, posi, type2,type3) => ga.Nation == type3.Code && type3.Type == "nation") + .Where(ga => ga.No == request.No) + .Select((ga, de,type,posi,type2, type3) => new GainfoDetailResponse + { + No = ga.No, + SapNo = ga.SapNo, + Name = ga.Name, + Code = ga.Code, + DepartmentName = de.Name, + IdClass = ga.IdClass, + IdNo = ga.IdNo, + Gender = ga.Gender, + NativeName = type.Display, + Address = ga.Address, + Birthday = ga.Birthday, + Phone = ga.Phone, + Position = ga.Position, + Grade = posi.Grade, + Degree = ga.Degree, + Werks = ga.Werks, + CostId = ga.CostId, + Marital = ga.Marital, + CountryName = type2.Display, + NationName = type3.Display, + IsActive = ga.Employed == "Active" ? true : false, + }).ToPageListAsync(request); + return page; + } //-------------------------------------------help methods ------------------------------------------------ diff --git a/Src/Dlhis.Common/Services/Implements/ApkFIileService.cs b/Src/Dlhis.Common/Services/Implements/ApkFIileService.cs index cc6800bd..d0f17568 100644 --- a/Src/Dlhis.Common/Services/Implements/ApkFIileService.cs +++ b/Src/Dlhis.Common/Services/Implements/ApkFIileService.cs @@ -111,7 +111,7 @@ public class ApkFIileService : IApkFIileService { try { - var filePath = "D:\\apk\\"; + var filePath = "C:\\apk\\"; // 创建存储文件夹 if (!Directory.Exists(filePath)) @@ -169,7 +169,7 @@ public class ApkFIileService : IApkFIileService /// public IActionResult FormLocalDownloadFile(string fileName) { - var filePath = "D:\\apk\\"; + var filePath = "C:\\apk\\"; string path = filePath + fileName; return new FileStreamResult(new FileStream(path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName }; } diff --git a/Src/Dlhis.ScheduledTask/TaskAssignment/Controllers/DeviceTaskAssignmentsController.cs b/Src/Dlhis.ScheduledTask/TaskAssignment/Controllers/DeviceTaskAssignmentsController.cs index 6b72836c..7c5972a6 100644 --- a/Src/Dlhis.ScheduledTask/TaskAssignment/Controllers/DeviceTaskAssignmentsController.cs +++ b/Src/Dlhis.ScheduledTask/TaskAssignment/Controllers/DeviceTaskAssignmentsController.cs @@ -32,4 +32,14 @@ public class DeviceTaskAssignmentsController : ControllerBase { return await _deviceTaskAssignmentService.GetPageAsync(request); } + + /// + /// (考勤/门禁/消费机)任务记录 + /// + /// + [HttpGet("taskrecords")] + public async Task GetTaskRecords([FromQuery]TaskRecordsRequest request) + { + return await _deviceTaskAssignmentService.GetTaskRecords(request); + } } diff --git a/Src/Dlhis.ScheduledTask/TaskAssignment/Request/TaskRecordsRequest.cs b/Src/Dlhis.ScheduledTask/TaskAssignment/Request/TaskRecordsRequest.cs new file mode 100644 index 00000000..38ca1bfc --- /dev/null +++ b/Src/Dlhis.ScheduledTask/TaskAssignment/Request/TaskRecordsRequest.cs @@ -0,0 +1,22 @@ +using Dlhis.Entity.Device.Enums; +using Kurisu.Core.DataAccess.Dto; +using System.ComponentModel.DataAnnotations; + +namespace Dlhis.ScheduledTask.TaskAssignment.Request +{ + public class TaskRecordsRequest : PageDto + { + + /// + /// 人员档案号 + /// + [Required] + public string GainfoNo { get; set; } + + /// + /// 设备功能 + /// + [Required] + public DeviceFuncEnumType type { get; set; } + } +} diff --git a/Src/Dlhis.ScheduledTask/TaskAssignment/Response/TaskDetailResponse.cs b/Src/Dlhis.ScheduledTask/TaskAssignment/Response/TaskDetailResponse.cs new file mode 100644 index 00000000..cb9b3673 --- /dev/null +++ b/Src/Dlhis.ScheduledTask/TaskAssignment/Response/TaskDetailResponse.cs @@ -0,0 +1,39 @@ +using Dlhis.Entity.Device.Enums; +using SqlSugar.DbConvert; +using SqlSugar; + +namespace Dlhis.ScheduledTask.TaskAssignment.Response +{ + public class TaskDetailResponse + { + /// + /// 设备唯一号 + /// + public string DeviceUniqueNo { get; set; } + + /// + /// 用户学工号 + /// + public string UserCode { get; set; } + + /// + /// 姓名 + /// + public string Name { get; set; } + + /// + /// 任务下发状态 + /// + public DeviceTaskStatusEnumType Status { get; set; } + + /// + /// 部署点 + /// + public string DeviceDescription { get; set; } + + /// + /// 连接信息 + /// + public string IP { get; set; } + } +} diff --git a/Src/Dlhis.ScheduledTask/TaskAssignment/Response/TaskRecordsResponse.cs b/Src/Dlhis.ScheduledTask/TaskAssignment/Response/TaskRecordsResponse.cs new file mode 100644 index 00000000..dc0404a7 --- /dev/null +++ b/Src/Dlhis.ScheduledTask/TaskAssignment/Response/TaskRecordsResponse.cs @@ -0,0 +1,28 @@ +using Dlhis.Entity.Device.Enums; +using SqlSugar; + +namespace Dlhis.ScheduledTask.TaskAssignment.Response +{ + public class TaskRecordsResponse + { + /// + /// 用户档案号 + /// + public string UserNo { get; set; } + + /// + /// 用户学工号 + /// + public string UserCode { get; set; } + + /// + /// 姓名 + /// + public string Name { get; set; } + + /// + /// 对应设备任务 + /// + public List Tasks { get; set; } + } +} diff --git a/Src/Dlhis.ScheduledTask/TaskAssignment/Services/IDeviceTaskAssignmentService.cs b/Src/Dlhis.ScheduledTask/TaskAssignment/Services/IDeviceTaskAssignmentService.cs index 578d3570..33826707 100644 --- a/Src/Dlhis.ScheduledTask/TaskAssignment/Services/IDeviceTaskAssignmentService.cs +++ b/Src/Dlhis.ScheduledTask/TaskAssignment/Services/IDeviceTaskAssignmentService.cs @@ -7,4 +7,6 @@ namespace Dlhis.ScheduledTask.TaskAssignment.Services; public interface IDeviceTaskAssignmentService : IScopeDependency { Task> GetPageAsync(DeviceTaskAssignmentRequest request); + + Task GetTaskRecords(TaskRecordsRequest request); } diff --git a/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/DeviceTaskAssignmentService.cs b/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/DeviceTaskAssignmentService.cs index 4462a4cc..a0e8b650 100644 --- a/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/DeviceTaskAssignmentService.cs +++ b/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/DeviceTaskAssignmentService.cs @@ -2,9 +2,11 @@ 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; @@ -38,4 +40,46 @@ public class DeviceTaskAssignmentService : IDeviceTaskAssignmentService 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; + } } + +