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;
+ }
}
+
+