test 2
This commit is contained in:
@@ -114,4 +114,13 @@ public class DevicePermissionsController : ControllerBase
|
||||
{
|
||||
return await _devicePermissionService.GetUserDevicePermissionsAsync(code);
|
||||
}
|
||||
|
||||
|
||||
[AllowAnonymous]
|
||||
[HttpGet("test2")]
|
||||
[IgnoreTenant]
|
||||
public async Task GetUserDevicePermissions2Async()
|
||||
{
|
||||
await _devicePermissionService.GetUserDevicePermissions2Async();
|
||||
}
|
||||
}
|
||||
@@ -38,6 +38,8 @@ public interface IDevicePermissionService : IScopeDependency
|
||||
Task<Dictionary<string, List<UserTenantDeviceCodeDto>>> GetUserDevicePermissionsAsync(string code);
|
||||
|
||||
|
||||
Task GetUserDevicePermissions2Async();
|
||||
|
||||
/// <summary>
|
||||
/// 生成下发任务
|
||||
/// </summary>
|
||||
|
||||
@@ -774,6 +774,49 @@ public class DevicePermissionService : IDevicePermissionService
|
||||
return await GetAssignDeviceCodesInternalAsync(new List<string> { userNo });
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public async Task GetUserDevicePermissions2Async()
|
||||
{
|
||||
var today = DateTime.Today;
|
||||
var yesterday = today.AddDays(-1);
|
||||
|
||||
var tripInfos = await _dbContext.Queryable<BusinessTripEntity>()
|
||||
.LeftJoin<GainfoEntity>((x, ga) => x.Code == ga.Code)
|
||||
.Where(x => SqlFunc.DateIsSame(x.BeginDate, today) || SqlFunc.DateIsSame(x.BeginDate, yesterday))
|
||||
.Where(x => !SqlFunc.IsNullOrEmpty(x.Destination))
|
||||
.Select((x, ga) => new
|
||||
{
|
||||
x.Code, UserNo = ga.No
|
||||
})
|
||||
.ToListAsync();
|
||||
|
||||
|
||||
//获取人员的设备权限
|
||||
|
||||
|
||||
foreach (var tripInfo in tripInfos)
|
||||
{
|
||||
var myDeviceCodes = await GetAssignDeviceCodesAsync(tripInfo.Code);
|
||||
|
||||
var devices = await _dbContext.Queryable<DeviceEntity>().Where(x => myDeviceCodes.Contains(x.Code)).ToListAsync();
|
||||
|
||||
var tasks = devices.Select(x => new DeviceTaskEntity
|
||||
{
|
||||
DeviceUniqueNo = x.UniqueNo,
|
||||
Status = DeviceTaskStatusEnumType.Wait,
|
||||
Version = 0,
|
||||
UserNo = tripInfo.UserNo,
|
||||
Type = DeviceTaskEnumType.Add,
|
||||
DeviceType = x.Type,
|
||||
TenantId = x.TenantId,
|
||||
Priority = 10,
|
||||
Source = DeviceTaskSourceEnumType.Manually
|
||||
}).ToList();
|
||||
|
||||
await _dbContext.InsertAsync(tasks);
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<DevicePermissionAssignResponse> GenerateDeviceTasksAsync(Func<Task> func, List<string> userNos)
|
||||
{
|
||||
var getAllUser = userNos.IsEmpty();
|
||||
|
||||
@@ -17,5 +17,5 @@ public interface IGainfoPermissionService : IScopeDependency
|
||||
|
||||
Task<List<DeviceGroupTreeResponse>> GetAssignGroupAsync(string userNo);
|
||||
|
||||
Task ResetPermissionsAsync(string userNo, DeviceTaskEnumType type);
|
||||
Task ResetPermissionsAsync(string userNo, DeviceTaskEnumType type, List<Guid> deviceCodes);
|
||||
}
|
||||
@@ -143,7 +143,7 @@ public class GainfoPermissionService : IGainfoPermissionService
|
||||
}
|
||||
|
||||
|
||||
public async Task ResetPermissionsAsync(string userNo, DeviceTaskEnumType type)
|
||||
public async Task ResetPermissionsAsync(string userNo, DeviceTaskEnumType type, List<Guid> deviceCodes)
|
||||
{
|
||||
var gainfo = await _dbContext.Queryable<GainfoEntity>()
|
||||
.Where(x => x.No == userNo)
|
||||
@@ -170,8 +170,13 @@ public class GainfoPermissionService : IGainfoPermissionService
|
||||
gainfo.ThrowIfNull($"档案数据有误:{msg}");
|
||||
|
||||
//获取人员的设备权限
|
||||
var deviceCodes = await _devicePermissionService.GetAssignDeviceCodesAsync(gainfo!.Code);
|
||||
var devices = await _dbContext.Queryable<DeviceEntity>().Where(x => deviceCodes.Contains(x.Code)).ToListAsync();
|
||||
var myDeviceCodes = await _devicePermissionService.GetAssignDeviceCodesAsync(gainfo!.Code);
|
||||
if (deviceCodes.IsPresent())
|
||||
{
|
||||
myDeviceCodes = deviceCodes;
|
||||
}
|
||||
|
||||
var devices = await _dbContext.Queryable<DeviceEntity>().Where(x => myDeviceCodes.Contains(x.Code)).ToListAsync();
|
||||
|
||||
var tasks = devices.Select(x => new DeviceTaskEntity
|
||||
{
|
||||
|
||||
@@ -267,7 +267,7 @@ public class GainfoService : IGainfoService
|
||||
gainfo.Id = gainfo.IdentityUserId;
|
||||
await _dbContext.DeleteReallyAsync(gainfo);
|
||||
|
||||
await _gainfoPermissionService.ResetPermissionsAsync(gainfo.No, DeviceTaskEnumType.Delete);
|
||||
await _gainfoPermissionService.ResetPermissionsAsync(gainfo.No, DeviceTaskEnumType.Delete, null);
|
||||
}
|
||||
|
||||
public async Task SetSecurityWhiteAsync(string userCode)
|
||||
|
||||
@@ -63,8 +63,7 @@ public class SapBusinessTripService : ISapBusinessTripService
|
||||
|
||||
//获取今天和昨天的出差数据
|
||||
var tripInfos = await _dbContext.Queryable<BusinessTripEntity>()
|
||||
.Where(x => (SqlFunc.DateIsSame(x.BeginDate, today) && SqlFunc.DateIsSame(x.BeginDate, today))
|
||||
|| (SqlFunc.DateIsSame(x.BeginDate, yesterday) && SqlFunc.DateIsSame(x.BeginDate, yesterday)))
|
||||
.Where(x => SqlFunc.DateIsSame(x.BeginDate, today) || SqlFunc.DateIsSame(x.BeginDate, yesterday))
|
||||
.Where(x => !SqlFunc.IsNullOrEmpty(x.Destination))
|
||||
.Where(x => x.Destination == factory)
|
||||
.ToListAsync();
|
||||
@@ -76,6 +75,8 @@ public class SapBusinessTripService : ISapBusinessTripService
|
||||
.Where(x => x.IsBusinessTrip)
|
||||
.SingleAsync();
|
||||
|
||||
var deviceCodes = await _dbContext.Queryable<DeviceGroupRelationshipEntity>().Where(x => x.GroupCode == tripGroup.Code).Select(x => x.DeviceCode).ToListAsync();
|
||||
|
||||
var userCodes = tripInfos.Select(x => x.Code).Distinct().ToList();
|
||||
var gainfos = await _dbContext.Queryable<GainfoEntity>().Where(x => userCodes.Contains(x.Code)).Select(x => new { x.No, x.Code }).ToListAsync();
|
||||
|
||||
@@ -115,8 +116,7 @@ public class SapBusinessTripService : ISapBusinessTripService
|
||||
.ExecuteCommandAsync();
|
||||
|
||||
await _dbContext.UpdateAsync(yesterdayTripInfo);
|
||||
|
||||
await _gainfoPermissionService.ResetPermissionsAsync(gainfo.No, DeviceTaskEnumType.Delete);
|
||||
await _gainfoPermissionService.ResetPermissionsAsync(gainfo.No, DeviceTaskEnumType.Delete, deviceCodes);
|
||||
}
|
||||
|
||||
if (yesterdayTripInfo == null)
|
||||
@@ -145,7 +145,7 @@ public class SapBusinessTripService : ISapBusinessTripService
|
||||
todayTripInfo.Status = BusinessTripStatusEnumType.Generated;
|
||||
await _dbContext.UpdateAsync(todayTripInfo);
|
||||
|
||||
await _gainfoPermissionService.ResetPermissionsAsync(gainfo.No, DeviceTaskEnumType.Add);
|
||||
await _gainfoPermissionService.ResetPermissionsAsync(gainfo.No, DeviceTaskEnumType.Add, null);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
|
||||
Reference in New Issue
Block a user