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 DeviceTaskEnumType Type { get; set; }
public string DeviceUniqueNo { get; set; } public string DeviceUniqueNo { get; set; }
public string DeviceConnectionInfo { get; set; } public string DeviceConnectionInfo { get; set; }
public string Brand { get; set; }
public string FuncStr { get; set; } public string FuncStr { get; set; }
public string UserNo { 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.DataAccess.Dto;
using Kurisu.AspNetCore.Utils.Extensions;
namespace Dlhis.ScheduledTask.TaskAssignment.Request; namespace Dlhis.ScheduledTask.TaskAssignment.Request;
public class DeviceTaskGetRequest : PageDto, IValidatableObject public class DeviceTaskGetRequest : PageDto
{ {
/// <summary>
/// 品牌
/// </summary>
public string Brand { get; set; }
/// <summary> /// <summary>
/// 设备号 /// 设备号
/// </summary> /// </summary>
@@ -26,17 +19,4 @@ public class DeviceTaskGetRequest : PageDto, IValidatableObject
/// 获取处理中的任务 /// 获取处理中的任务
/// </summary> /// </summary>
public bool IsProcess { get; set; } = false; 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> /// </summary>
public class DeviceTaskToDeviceByDeviceResponse public class DeviceTaskToDeviceByDeviceResponse
{ {
/// <summary>
/// 品牌
/// </summary>
public string Brand { get; set; }
/// <summary> /// <summary>
/// 设备唯一号 /// 设备唯一号
/// </summary> /// </summary>

View File

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