fix 下发任务结构修改,根据类型处理
This commit is contained in:
@@ -43,4 +43,15 @@ public class DeviceUploadLogsController : ControllerBase
|
|||||||
{
|
{
|
||||||
await _deviceUploadLogService.UploadLogAsync(request);
|
await _deviceUploadLogService.UploadLogAsync(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 批量上传记录
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="requests"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost("records")]
|
||||||
|
public async Task UploadLogsAsync(List<DeviceUploadLogUploadRequest> requests)
|
||||||
|
{
|
||||||
|
await _deviceUploadLogService.UploadLogsAsync(requests);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,8 +13,8 @@ public class DeviceUploadLogUploadRequest
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 用户学工号
|
/// 用户学工号
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required(ErrorMessage = "用户学工号不能为空")]
|
[Required(ErrorMessage = "人员唯一号不能为空")]
|
||||||
public string UserCode { get; set; }
|
public string UserUniqueNo { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 上传时间
|
/// 上传时间
|
||||||
|
|||||||
@@ -9,4 +9,6 @@ public interface IDeviceUploadLogService : IScopeDependency
|
|||||||
Task<Pagination<DeviceUploadLogResponse>> GetPageAsync(DeviceUploadLogPageRequest request);
|
Task<Pagination<DeviceUploadLogResponse>> GetPageAsync(DeviceUploadLogPageRequest request);
|
||||||
|
|
||||||
Task UploadLogAsync(DeviceUploadLogUploadRequest request);
|
Task UploadLogAsync(DeviceUploadLogUploadRequest request);
|
||||||
|
|
||||||
|
Task UploadLogsAsync(List<DeviceUploadLogUploadRequest> requests);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ public class DeviceUploadLogService : IDeviceUploadLogService
|
|||||||
public async Task<Pagination<DeviceUploadLogResponse>> GetPageAsync(DeviceUploadLogPageRequest request)
|
public async Task<Pagination<DeviceUploadLogResponse>> GetPageAsync(DeviceUploadLogPageRequest request)
|
||||||
{
|
{
|
||||||
var page = await _dbContext.Queryable<DeviceUploadLogEntity>()
|
var page = await _dbContext.Queryable<DeviceUploadLogEntity>()
|
||||||
.LeftJoin<GainfoEntity>((deviceUp, ga) => deviceUp.UserNo == ga.No)
|
.LeftJoin<GainfoEntity>((deviceUp, ga) => deviceUp.UserUniqueNo == ga.No)
|
||||||
.WhereIF(request.SearchDateTimePeriod?.Start.HasValue == true, deviceUp => deviceUp.UploadTime >= request.SearchDateTimePeriod.Start)
|
.WhereIF(request.SearchDateTimePeriod?.Start.HasValue == true, deviceUp => deviceUp.UploadTime >= request.SearchDateTimePeriod.Start)
|
||||||
.WhereIF(request.SearchDateTimePeriod?.End.HasValue == true, deviceUp => deviceUp.UploadTime <= request.SearchDateTimePeriod.End)
|
.WhereIF(request.SearchDateTimePeriod?.End.HasValue == true, deviceUp => deviceUp.UploadTime <= request.SearchDateTimePeriod.End)
|
||||||
.Select((deviceUp, ga) => new DeviceUploadLogResponse
|
.Select((deviceUp, ga) => new DeviceUploadLogResponse
|
||||||
@@ -31,8 +31,8 @@ public class DeviceUploadLogService : IDeviceUploadLogService
|
|||||||
Id = deviceUp.Id,
|
Id = deviceUp.Id,
|
||||||
Ip = deviceUp.Ip,
|
Ip = deviceUp.Ip,
|
||||||
UploadTime = deviceUp.UploadTime,
|
UploadTime = deviceUp.UploadTime,
|
||||||
UserNo = deviceUp.UserNo,
|
UserNo = ga.No,
|
||||||
UserCode = deviceUp.UserCode,
|
UserCode = ga.Code,
|
||||||
UserName = ga.Name,
|
UserName = ga.Name,
|
||||||
})
|
})
|
||||||
.ToPageListAsync(request);
|
.ToPageListAsync(request);
|
||||||
@@ -46,18 +46,41 @@ public class DeviceUploadLogService : IDeviceUploadLogService
|
|||||||
var device = await _dbContext.Queryable<DeviceEntity>().Where(x => x.UniqueNo == request.DeviceUniqueNo).SingleAsync();
|
var device = await _dbContext.Queryable<DeviceEntity>().Where(x => x.UniqueNo == request.DeviceUniqueNo).SingleAsync();
|
||||||
device.ThrowIfNull("设备信息不存在");
|
device.ThrowIfNull("设备信息不存在");
|
||||||
|
|
||||||
var gainfo = await _dbContext.Queryable<GainfoEntity>().Where(x => x.Code == request.UserCode).FirstAsync();
|
|
||||||
device.ThrowIfNull("人员信息不存在");
|
|
||||||
|
|
||||||
var entity = new DeviceUploadLogEntity
|
var entity = new DeviceUploadLogEntity
|
||||||
{
|
{
|
||||||
DeviceUniqueNo = request.DeviceUniqueNo,
|
DeviceUniqueNo = request.DeviceUniqueNo,
|
||||||
UploadTime = request.UploadTime,
|
UploadTime = request.UploadTime,
|
||||||
UserCode = request.UserCode,
|
UserUniqueNo = request.UserUniqueNo,
|
||||||
UserNo = gainfo.No,
|
|
||||||
TenantId = device.TenantId,
|
TenantId = device.TenantId,
|
||||||
};
|
};
|
||||||
|
|
||||||
await _dbContext.InsertAsync(entity);
|
await _dbContext.InsertAsync(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[IgnoreTenant]
|
||||||
|
public async Task UploadLogsAsync(List<DeviceUploadLogUploadRequest> requests)
|
||||||
|
{
|
||||||
|
var nos = requests.Select(x => x.DeviceUniqueNo).ToList();
|
||||||
|
var devices = await _dbContext.Queryable<DeviceEntity>().Where(x => nos.Contains(x.UniqueNo)).ToListAsync();
|
||||||
|
|
||||||
|
var records = requests.GroupBy(x => x.DeviceUniqueNo).Select(x =>
|
||||||
|
{
|
||||||
|
var device = devices.FirstOrDefault(item => item.UniqueNo == x.Key);
|
||||||
|
if (device != null)
|
||||||
|
{
|
||||||
|
return x.AsEnumerable().Select(item => new DeviceUploadLogEntity
|
||||||
|
{
|
||||||
|
DeviceUniqueNo = x.Key,
|
||||||
|
UserUniqueNo = item.UserUniqueNo,
|
||||||
|
UploadTime = item.UploadTime,
|
||||||
|
TenantId = device.TenantId,
|
||||||
|
|
||||||
|
}).ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}).Where(x => x != null).ToList();
|
||||||
|
|
||||||
|
await _dbContext.InsertAsync(records);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,17 +12,9 @@ public class JobPack : BaseAppPack
|
|||||||
|
|
||||||
public override void Invoke(IServiceProvider serviceProvider)
|
public override void Invoke(IServiceProvider serviceProvider)
|
||||||
{
|
{
|
||||||
|
|
||||||
#if DEBUG
|
|
||||||
RecurringJob.AddOrUpdate<SyncOrganizationJob>("SyncSap", s => s.SyncOrgInfo(), "30 * * * * ?", new RecurringJobOptions
|
|
||||||
{
|
|
||||||
TimeZone = TimeZoneInfo.Local
|
|
||||||
});
|
|
||||||
#else
|
|
||||||
RecurringJob.AddOrUpdate<SyncOrganizationJob>("SyncSap", s => s.SyncOrgInfo(), "0 0 2 * * ?", new RecurringJobOptions
|
RecurringJob.AddOrUpdate<SyncOrganizationJob>("SyncSap", s => s.SyncOrgInfo(), "0 0 2 * * ?", new RecurringJobOptions
|
||||||
{
|
{
|
||||||
TimeZone = TimeZoneInfo.Local
|
TimeZone = TimeZoneInfo.Local
|
||||||
});
|
});
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,11 @@ public class DeviceTaskGetRequest : PageDto, IValidatableObject
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string DeviceUniqueNo { get; set; }
|
public string DeviceUniqueNo { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取处理中的任务
|
||||||
|
/// </summary>
|
||||||
|
public bool IsProcess { get; set; } = false;
|
||||||
|
|
||||||
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
|
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
|
||||||
{
|
{
|
||||||
if (Brand.IsEmpty() && DeviceUniqueNo.IsEmpty())
|
if (Brand.IsEmpty() && DeviceUniqueNo.IsEmpty())
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
namespace Dlhis.ScheduledTask.TaskAssignment.Response;
|
namespace Dlhis.ScheduledTask.TaskAssignment.Response;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 设备维度任务
|
/// 设备任务
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class DeviceTaskToDeviceByDeviceResponse
|
public class DeviceTaskToDeviceByDeviceResponse
|
||||||
{
|
{
|
||||||
@@ -16,12 +16,12 @@ public class DeviceTaskToDeviceByDeviceResponse
|
|||||||
public string DeviceUniqueNo { get; set; }
|
public string DeviceUniqueNo { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 连接信息
|
/// 设备信息
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string DeviceConnectionInfo { get; set; }
|
public object DeviceInfo { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 任务
|
/// 任务
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public List<TaskCombineUserDimensionDto> Tasks { get; set; }
|
public List<TaskCombineDto> Tasks { get; set; }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
using Kurisu.Core.CustomClass;
|
||||||
|
|
||||||
|
namespace Dlhis.ScheduledTask.TaskAssignment.Response;
|
||||||
|
|
||||||
|
public class ScheduleDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 假日名称
|
||||||
|
/// </summary>
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 开始结束日期时段
|
||||||
|
/// </summary>
|
||||||
|
public DateTimePeriod DateTimePeriod { get; set; }
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
namespace Dlhis.ScheduledTask.TaskAssignment.Response;
|
||||||
|
|
||||||
|
public class ScheduleToDeviceResponse
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 计划id,范围:1-128
|
||||||
|
/// </summary>
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 使能
|
||||||
|
/// </summary>
|
||||||
|
public bool Enable { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 计划名称
|
||||||
|
/// </summary>
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 计划
|
||||||
|
/// </summary>
|
||||||
|
public List<ScheduleDto> Schedules { get; set; }
|
||||||
|
}
|
||||||
@@ -3,7 +3,7 @@ using Kurisu.AspNetCore.Utils.Extensions;
|
|||||||
|
|
||||||
namespace Dlhis.ScheduledTask.TaskAssignment.Response;
|
namespace Dlhis.ScheduledTask.TaskAssignment.Response;
|
||||||
|
|
||||||
public class TaskCombineUserDimensionDto
|
public class TaskCombineDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 任务id
|
/// 任务id
|
||||||
@@ -21,7 +21,7 @@ public class TaskCombineUserDimensionDto
|
|||||||
public string TypeDesc => Type.GetDescription();
|
public string TypeDesc => Type.GetDescription();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 用户下发信息
|
/// 下发信息
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public UserToDeviceResponse UserInfo { get; set; }
|
public object Info { get; set; }
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
using Kurisu.Core.CustomClass;
|
||||||
|
|
||||||
|
namespace Dlhis.ScheduledTask.TaskAssignment.Response;
|
||||||
|
|
||||||
|
public class TimePeriodToDeviceResponse
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 时段码id
|
||||||
|
/// </summary>
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 星期
|
||||||
|
/// </summary>
|
||||||
|
public List<DayOfWeek> Weeks { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 时段区间
|
||||||
|
/// </summary>
|
||||||
|
public TimePeriod TimePeriod { get; set; }
|
||||||
|
}
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
namespace Dlhis.ScheduledTask.TaskAssignment.Response;
|
using Kurisu.Core.CustomClass;
|
||||||
|
|
||||||
|
namespace Dlhis.ScheduledTask.TaskAssignment.Response;
|
||||||
|
|
||||||
public class UserToDeviceResponse
|
public class UserToDeviceResponse
|
||||||
{
|
{
|
||||||
@@ -32,7 +34,6 @@ public class UserToDeviceResponse
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string DepartmentName { get; set; }
|
public string DepartmentName { get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 卡号
|
/// 卡号
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -42,4 +43,24 @@ public class UserToDeviceResponse
|
|||||||
/// 人脸
|
/// 人脸
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Face { get; set; }
|
public string Face { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 有效日期范围
|
||||||
|
/// </summary>
|
||||||
|
public DatePeriod ValidDatePeriod { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 控制门[1,2,3....]
|
||||||
|
/// </summary>
|
||||||
|
public List<int> Doors { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 时段[1,2,3....]
|
||||||
|
/// </summary>
|
||||||
|
public List<int> TimePeriods { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 假期计划id
|
||||||
|
/// </summary>
|
||||||
|
public int Schedule { get; set; }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,8 @@ using Microsoft.Extensions.Options;
|
|||||||
using SqlSugar;
|
using SqlSugar;
|
||||||
using Kurisu.SqlSugar.Extensions;
|
using Kurisu.SqlSugar.Extensions;
|
||||||
using Kurisu.SqlSugar.Attributes;
|
using Kurisu.SqlSugar.Attributes;
|
||||||
using System.Threading.Tasks;
|
using Newtonsoft.Json.Linq;
|
||||||
|
using Kurisu.Core.CustomClass;
|
||||||
|
|
||||||
namespace Dlhis.ScheduledTask.TaskAssignment.Services.Implements;
|
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)
|
.LeftJoin<DepartmentEntity>((deviceTask, deivce, deivceTamplate, ga, department) => department.No == ga.DepartmentNo)
|
||||||
.WhereIF(request.Brand.IsPresent(), (deviceTask, deivce, deivceTamplate) => deivceTamplate.Brand == request.Brand)
|
.WhereIF(request.Brand.IsPresent(), (deviceTask, deivce, deivceTamplate) => deivceTamplate.Brand == request.Brand)
|
||||||
.WhereIF(request.DeviceUniqueNo.IsPresent(), (deviceTask, deivce) => deviceTask.DeviceUniqueNo == request.DeviceUniqueNo)
|
.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)
|
.OrderBy(deviceTask => deviceTask.CreateTime)
|
||||||
.Select((deviceTask, deivce, deivceTamplate, ga, department) => new
|
.Select((deviceTask, deivce, deivceTamplate, ga, department) => new
|
||||||
{
|
{
|
||||||
UserId = ga.Id,
|
UserId = SqlFunc.IsNull(ga.Id, 0),
|
||||||
TaskId = deviceTask.Id,
|
TaskId = deviceTask.Id,
|
||||||
deviceTask.Type,
|
deviceTask.Type,
|
||||||
deviceTask.DeviceUniqueNo,
|
deviceTask.DeviceUniqueNo,
|
||||||
DeviceConnectionInfo = deivce.ConnectionInfo,
|
DeviceConnectionInfo = deivce.ConnectionInfo,
|
||||||
deivce.Brand,
|
deivce.Brand,
|
||||||
|
FuncStr = deivce.Funcs.ToString(),
|
||||||
deviceTask.UserNo,
|
deviceTask.UserNo,
|
||||||
deviceTask.UserCode,
|
deviceTask.UserCode,
|
||||||
UserName = ga.Name,
|
UserName = ga.Name,
|
||||||
@@ -112,18 +115,25 @@ public class AssignmentService : IAssignmentService
|
|||||||
.CreateProtector("down:face")
|
.CreateProtector("down:face")
|
||||||
.ToTimeLimitedDataProtector();
|
.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 =>
|
.Select(x =>
|
||||||
{
|
{
|
||||||
var b = x.Key.Brand;
|
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 jobj = new JObject
|
||||||
|
{
|
||||||
|
{ "connectionInfo", JToken.Parse(dc) },
|
||||||
|
{ "function", JArray.Parse(func) }
|
||||||
|
};
|
||||||
|
|
||||||
return new DeviceTaskToDeviceByDeviceResponse
|
return new DeviceTaskToDeviceByDeviceResponse
|
||||||
{
|
{
|
||||||
Brand = b,
|
Brand = b,
|
||||||
DeviceUniqueNo = d,
|
DeviceUniqueNo = d,
|
||||||
DeviceConnectionInfo = dc,
|
DeviceInfo = jobj,
|
||||||
Tasks = x.AsEnumerable().Select(item =>
|
Tasks = x.AsEnumerable().Select(item =>
|
||||||
{
|
{
|
||||||
var key = $"face:{item.UserCode}";
|
var key = $"face:{item.UserCode}";
|
||||||
@@ -131,11 +141,20 @@ public class AssignmentService : IAssignmentService
|
|||||||
? timeLimitedDataProtector.Protect(key, TimeSpan.FromSeconds(faceUrlOptions.Limit))
|
? timeLimitedDataProtector.Protect(key, TimeSpan.FromSeconds(faceUrlOptions.Limit))
|
||||||
: string.Empty;
|
: string.Empty;
|
||||||
|
|
||||||
return new TaskCombineUserDimensionDto
|
var dto = new TaskCombineDto
|
||||||
{
|
{
|
||||||
TaskId = item.TaskId,
|
TaskId = item.TaskId,
|
||||||
Type = item.Type,
|
Type = item.Type,
|
||||||
UserInfo = new UserToDeviceResponse
|
};
|
||||||
|
|
||||||
|
|
||||||
|
switch (dto.Type)
|
||||||
|
{
|
||||||
|
case DeviceTaskEnumType.Add:
|
||||||
|
case DeviceTaskEnumType.Delete:
|
||||||
|
case DeviceTaskEnumType.Update:
|
||||||
|
{
|
||||||
|
dto.Info = new UserToDeviceResponse
|
||||||
{
|
{
|
||||||
UserId = item.UserId,
|
UserId = item.UserId,
|
||||||
UserNo = item.UserNo,
|
UserNo = item.UserNo,
|
||||||
@@ -145,9 +164,62 @@ public class AssignmentService : IAssignmentService
|
|||||||
DepartmentName = item.DepartmentName,
|
DepartmentName = item.DepartmentName,
|
||||||
CardNo = item.Type == DeviceTaskEnumType.Add ? item.CardNo : string.Empty,
|
CardNo = item.Type == DeviceTaskEnumType.Add ? item.CardNo : string.Empty,
|
||||||
Face = item.Type == DeviceTaskEnumType.Add ? faceUrlOptions.Url + token : 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()
|
.ToList()
|
||||||
};
|
};
|
||||||
@@ -226,6 +298,14 @@ public class AssignmentService : IAssignmentService
|
|||||||
|
|
||||||
//*********************************************************** help methods *********************************************************************
|
//*********************************************************** 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)
|
private async Task<T> ContinueUpdateAsync<T>(Func<Task<T>> func, int retry)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < retry; i++)
|
for (int i = 0; i < retry; i++)
|
||||||
|
|||||||
Reference in New Issue
Block a user