fix 移除brand查询

This commit is contained in:
2025-04-02 17:23:36 +08:00
parent a4139f0c2f
commit f227665aed
4 changed files with 8 additions and 46 deletions

View File

@@ -11,7 +11,6 @@ public class TaskDto
public DeviceTaskEnumType Type { get; set; }
public string DeviceUniqueNo { get; set; }
public string DeviceConnectionInfo { get; set; }
public string Brand { get; set; }
public string FuncStr { get; set; }
public string UserNo { get; set; }

View File

@@ -1,17 +1,10 @@
using System.ComponentModel.DataAnnotations;
using Dlhis.Entity.Device.Enums;
using Dlhis.Entity.Device.Enums;
using Kurisu.AspNetCore.DataAccess.Dto;
using Kurisu.AspNetCore.Utils.Extensions;
namespace Dlhis.ScheduledTask.TaskAssignment.Request;
public class DeviceTaskGetRequest : PageDto, IValidatableObject
public class DeviceTaskGetRequest : PageDto
{
/// <summary>
/// 品牌
/// </summary>
public string Brand { get; set; }
/// <summary>
/// 设备号
/// </summary>
@@ -26,17 +19,4 @@ public class DeviceTaskGetRequest : PageDto, IValidatableObject
/// 获取处理中的任务
/// </summary>
public bool IsProcess { get; set; } = false;
/// <summary>
/// 厂区
/// </summary>
public string Factory { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (Brand.IsEmpty() && DeviceUniqueNo.IsEmpty() && Factory.IsEmpty())
{
yield return new ValidationResult("设备品牌,设备号和厂区不能都为空", new[] { nameof(Brand), nameof(DeviceUniqueNo), nameof(Factory) });
}
}
}

View File

@@ -7,11 +7,6 @@ namespace Dlhis.ScheduledTask.TaskAssignment.Response;
/// </summary>
public class DeviceTaskToDeviceByDeviceResponse
{
/// <summary>
/// 品牌
/// </summary>
public string Brand { get; set; }
/// <summary>
/// 设备唯一号
/// </summary>

View File

@@ -47,10 +47,9 @@ public class AssignmentService : IAssignmentService
.CreateProtector("down:face")
.ToTimeLimitedDataProtector();
return data.GroupBy(x => new { x.Brand, x.DeviceUniqueNo, x.DeviceConnectionInfo, x.FuncStr })
return data.GroupBy(x => new { x.DeviceUniqueNo, x.DeviceConnectionInfo, x.FuncStr })
.Select(x =>
{
var b = x.Key.Brand;
var d = x.Key.DeviceUniqueNo;
var dc = x.Key.DeviceConnectionInfo ?? "{}";
var func = x.Key.FuncStr ?? "[]";
@@ -63,7 +62,6 @@ public class AssignmentService : IAssignmentService
return new DeviceTaskToDeviceByDeviceResponse
{
Brand = b,
DeviceUniqueNo = d,
DeviceInfo = jObj,
Tasks = x.Select(item =>
@@ -243,36 +241,27 @@ public class AssignmentService : IAssignmentService
private async Task<List<TaskDto>> GetDataAsync(DeviceTaskGetRequest request)
{
var factories = new List<string>();
if (request.Factory.IsPresent())
{
factories = request.Factory.Split(',').ToList();
}
var data = await CommonHelper.RetryAsync(async () =>
{
var rows = await _dbContext.Queryable<DeviceTaskEntity>()
.LeftJoin<DeviceEntity>((deviceTask, device) => deviceTask.DeviceUniqueNo == device.UniqueNo)
.LeftJoin<DeviceTemplateEntity>((deviceTask, device, deviceTemplate) => deviceTemplate.Code == device.TemplateCode)
.LeftJoin<GainfoEntity>((deviceTask, device, deviceTemplate, ga) => deviceTask.UserNo == ga.No)
.LeftJoin<GainfoLeaveEntity>((deviceTask, device, deviceTemplate, ga, gaLeave) => deviceTask.UserNo == gaLeave.No)
.LeftJoin<DepartmentEntity>((deviceTask, device, deviceTemplate, ga, gaLeave, department) => department.No == ga.DepartmentNo)
.LeftJoin<DeviceRegistryEntity>((deviceTask, device, deviceTemplate, ga, gaLeave, department, deviceRegistry) => deviceRegistry.DeviceUniqueNo == deviceTask.DeviceUniqueNo)
.LeftJoin<GainfoEntity>((deviceTask, device, ga) => deviceTask.UserNo == ga.No)
.LeftJoin<GainfoLeaveEntity>((deviceTask, device, ga, gaLeave) => deviceTask.UserNo == gaLeave.No)
.LeftJoin<DepartmentEntity>((deviceTask, device, ga, gaLeave, department) => department.No == ga.DepartmentNo)
.LeftJoin<DeviceRegistryEntity>((deviceTask, device, ga, gaLeave, department, deviceRegistry) => deviceRegistry.DeviceUniqueNo == deviceTask.DeviceUniqueNo)
.Where((deviceTask, device) => device.Enable)
.WhereIF(!request.IsProcess, deviceTask => deviceTask.Status == DeviceTaskStatusEnumType.Wait)
.WhereIF(request.IsProcess, deviceTask => deviceTask.Status == DeviceTaskStatusEnumType.Process
&& SqlFunc.DateDiff(DateType.Minute, deviceTask.ModifiedTime, DateTime.Now) > 10)
.WhereIF(request.DeviceUniqueNo.IsPresent(), (deviceTask, device) => deviceTask.DeviceUniqueNo == request.DeviceUniqueNo)
.WhereIF(factories.Any(), (deviceTask, device) => factories.Contains(deviceTask.TenantId))
.WhereIF(request.Types.IsPresent(), deviceTask => request.Types.Contains(deviceTask.Type))
.WhereIF(request.Brand.IsPresent(), (deviceTask, device, deviceTemplate) => deviceTemplate.Brand == request.Brand)
.Where((deviceTask, device, deviceTemplate) => deviceTask.Version < 10)
#if !DEBUG
.Where((deviceTask, device, deviceTemplate, ga, gaLeave, department, deviceRegistry) =>
device.HeartbeatInterval == 0 || SqlFunc.DateAdd(deviceRegistry.LastHeartbeatTime, device.HeartbeatInterval, DateType.Second) > DateTime.Now)
#endif
.OrderBy(deviceTask => new { deviceTask.CreateTime, Priority = SqlFunc.Desc(deviceTask.Priority) })
.Select((deviceTask, device, deviceTemplate, ga, gaLeave, department) => new TaskDto
.Select((deviceTask, device, ga, gaLeave, department) => new TaskDto
{
UserId = deviceTask.UserId == 0 || deviceTask.UserId == null
? ga.Id == 0
@@ -284,7 +273,6 @@ public class AssignmentService : IAssignmentService
UserType = ga.Type,
DeviceUniqueNo = deviceTask.DeviceUniqueNo,
DeviceConnectionInfo = device.ConnectionInfo,
Brand = deviceTemplate.Brand,
FuncStr = device.Funcs.ToString(),
UserNo = deviceTask.UserNo,
UserCode = SqlFunc.IsNull(SqlFunc.IsNull(ga.Code, gaLeave.Code), deviceTask.UserNo),