This commit is contained in:
2024-12-06 17:20:45 +08:00
parent 6514401a3c
commit 9a11e80bb3
7 changed files with 69 additions and 10 deletions

View File

@@ -114,4 +114,13 @@ public class DevicePermissionsController : ControllerBase
{
return await _devicePermissionService.GetUserDevicePermissionsAsync(code);
}
[AllowAnonymous]
[HttpGet("test2")]
[IgnoreTenant]
public async Task GetUserDevicePermissions2Async()
{
await _devicePermissionService.GetUserDevicePermissions2Async();
}
}

View File

@@ -38,6 +38,8 @@ public interface IDevicePermissionService : IScopeDependency
Task<Dictionary<string, List<UserTenantDeviceCodeDto>>> GetUserDevicePermissionsAsync(string code);
Task GetUserDevicePermissions2Async();
/// <summary>
/// 生成下发任务
/// </summary>

View File

@@ -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();

View File

@@ -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);
}

View File

@@ -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
{

View File

@@ -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)

View File

@@ -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)