fix 下发任务结构修改,根据类型处理
This commit is contained in:
@@ -13,7 +13,8 @@ using Microsoft.Extensions.Options;
|
||||
using SqlSugar;
|
||||
using Kurisu.SqlSugar.Extensions;
|
||||
using Kurisu.SqlSugar.Attributes;
|
||||
using System.Threading.Tasks;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using Kurisu.Core.CustomClass;
|
||||
|
||||
namespace Dlhis.ScheduledTask.TaskAssignment.Services.Implements;
|
||||
|
||||
@@ -40,16 +41,18 @@ public class AssignmentService : IAssignmentService
|
||||
.LeftJoin<DepartmentEntity>((deviceTask, deivce, deivceTamplate, ga, department) => department.No == ga.DepartmentNo)
|
||||
.WhereIF(request.Brand.IsPresent(), (deviceTask, deivce, deivceTamplate) => deivceTamplate.Brand == request.Brand)
|
||||
.WhereIF(request.DeviceUniqueNo.IsPresent(), (deviceTask, deivce) => deviceTask.DeviceUniqueNo == request.DeviceUniqueNo)
|
||||
.Where(deviceTask => deviceTask.Status == DeviceTaskStatusEnumType.Wait)
|
||||
.WhereIF(!request.IsProcess, deviceTask => deviceTask.Status == DeviceTaskStatusEnumType.Wait)
|
||||
.WhereIF(request.IsProcess, deviceTask => deviceTask.Status == DeviceTaskStatusEnumType.Process)
|
||||
.OrderBy(deviceTask => deviceTask.CreateTime)
|
||||
.Select((deviceTask, deivce, deivceTamplate, ga, department) => new
|
||||
{
|
||||
UserId = ga.Id,
|
||||
UserId = SqlFunc.IsNull(ga.Id, 0),
|
||||
TaskId = deviceTask.Id,
|
||||
deviceTask.Type,
|
||||
deviceTask.DeviceUniqueNo,
|
||||
DeviceConnectionInfo = deivce.ConnectionInfo,
|
||||
deivce.Brand,
|
||||
FuncStr = deivce.Funcs.ToString(),
|
||||
deviceTask.UserNo,
|
||||
deviceTask.UserCode,
|
||||
UserName = ga.Name,
|
||||
@@ -112,18 +115,25 @@ public class AssignmentService : IAssignmentService
|
||||
.CreateProtector("down:face")
|
||||
.ToTimeLimitedDataProtector();
|
||||
|
||||
return data.GroupBy(x => new { x.Brand, x.DeviceUniqueNo, x.DeviceConnectionInfo })
|
||||
return data.GroupBy(x => new { x.Brand, x.DeviceUniqueNo, x.DeviceConnectionInfo, x.FuncStr })
|
||||
.Select(x =>
|
||||
{
|
||||
var b = x.Key.Brand;
|
||||
var d = x.Key.DeviceUniqueNo;
|
||||
var dc = x.Key.DeviceConnectionInfo;
|
||||
var dc = x.Key.DeviceConnectionInfo??"{}";
|
||||
var func = x.Key.FuncStr??"[]";
|
||||
|
||||
var jobj = new JObject
|
||||
{
|
||||
{ "connectionInfo", JToken.Parse(dc) },
|
||||
{ "function", JArray.Parse(func) }
|
||||
};
|
||||
|
||||
return new DeviceTaskToDeviceByDeviceResponse
|
||||
{
|
||||
Brand = b,
|
||||
DeviceUniqueNo = d,
|
||||
DeviceConnectionInfo = dc,
|
||||
DeviceInfo = jobj,
|
||||
Tasks = x.AsEnumerable().Select(item =>
|
||||
{
|
||||
var key = $"face:{item.UserCode}";
|
||||
@@ -131,23 +141,85 @@ public class AssignmentService : IAssignmentService
|
||||
? timeLimitedDataProtector.Protect(key, TimeSpan.FromSeconds(faceUrlOptions.Limit))
|
||||
: string.Empty;
|
||||
|
||||
return new TaskCombineUserDimensionDto
|
||||
var dto = new TaskCombineDto
|
||||
{
|
||||
TaskId = item.TaskId,
|
||||
Type = item.Type,
|
||||
UserInfo = new UserToDeviceResponse
|
||||
{
|
||||
UserId = item.UserId,
|
||||
UserNo = item.UserNo,
|
||||
UserCode = item.UserCode,
|
||||
UserName = item.UserName,
|
||||
DepartmentNo = item.DepartmentNo,
|
||||
DepartmentName = item.DepartmentName,
|
||||
CardNo = item.Type == DeviceTaskEnumType.Add ? item.CardNo : string.Empty,
|
||||
Face = item.Type == DeviceTaskEnumType.Add ? faceUrlOptions.Url + token : string.Empty,//下发才附带照片信息
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
switch (dto.Type)
|
||||
{
|
||||
case DeviceTaskEnumType.Add:
|
||||
case DeviceTaskEnumType.Delete:
|
||||
case DeviceTaskEnumType.Update:
|
||||
{
|
||||
dto.Info = new UserToDeviceResponse
|
||||
{
|
||||
UserId = item.UserId,
|
||||
UserNo = item.UserNo,
|
||||
UserCode = item.UserCode,
|
||||
UserName = item.UserName,
|
||||
DepartmentNo = item.DepartmentNo,
|
||||
DepartmentName = item.DepartmentName,
|
||||
CardNo = item.Type == DeviceTaskEnumType.Add ? item.CardNo : string.Empty,
|
||||
Face = item.Type == DeviceTaskEnumType.Add ? faceUrlOptions.Url + token : string.Empty,//下发才附带照片信息
|
||||
ValidDatePeriod = new DatePeriod
|
||||
{
|
||||
Start = DateOnly.FromDateTime(DateTime.Now),
|
||||
End = DateOnly.FromDateTime(DateTime.Now.AddYears(20)),
|
||||
},
|
||||
TimePeriods = new List<int> { 1 },
|
||||
Doors = new List<int> { 1, 2, 3 },
|
||||
Schedule = 1
|
||||
};
|
||||
}
|
||||
break;
|
||||
case DeviceTaskEnumType.TimePeriodAdd:
|
||||
case DeviceTaskEnumType.TimePeriodDelete:
|
||||
{
|
||||
dto.Info = new TimePeriodToDeviceResponse
|
||||
{
|
||||
Id = 1,
|
||||
TimePeriod = new TimePeriod
|
||||
{
|
||||
Start = TimeOnly.Parse("08:00:00"),
|
||||
End = TimeOnly.Parse("17:30:00"),
|
||||
},
|
||||
Weeks = new List<DayOfWeek>
|
||||
{
|
||||
DayOfWeek.Monday, DayOfWeek.Tuesday, DayOfWeek.Wednesday, DayOfWeek.Thursday, DayOfWeek.Friday
|
||||
},
|
||||
};
|
||||
}
|
||||
break;
|
||||
case DeviceTaskEnumType.ScheduleAdd:
|
||||
case DeviceTaskEnumType.ScheduleDelete:
|
||||
{
|
||||
dto.Info = new ScheduleToDeviceResponse
|
||||
{
|
||||
Id = 1,
|
||||
Enable = true,
|
||||
Name = "计划的一部分",
|
||||
Schedules = new List<ScheduleDto>
|
||||
{
|
||||
new ScheduleDto
|
||||
{
|
||||
Name = "国庆节",
|
||||
DateTimePeriod = new DateTimePeriod
|
||||
{
|
||||
Start = new DateTime(2024,10,1), End = new DateTime(2024,10,7)
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return dto;
|
||||
})
|
||||
.ToList()
|
||||
};
|
||||
@@ -226,6 +298,14 @@ public class AssignmentService : IAssignmentService
|
||||
|
||||
//*********************************************************** help methods *********************************************************************
|
||||
|
||||
/// <summary>
|
||||
/// 并发处理
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="func"></param>
|
||||
/// <param name="retry"></param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="UserFriendlyException"></exception>
|
||||
private async Task<T> ContinueUpdateAsync<T>(Func<Task<T>> func, int retry)
|
||||
{
|
||||
for (int i = 0; i < retry; i++)
|
||||
|
||||
Reference in New Issue
Block a user