fix 任务生成描述
This commit is contained in:
@@ -109,7 +109,7 @@ public class AppointmentAreaService : IAppointmentAreaService
|
|||||||
Status = DeviceTaskStatusEnumType.Wait,
|
Status = DeviceTaskStatusEnumType.Wait,
|
||||||
Version = 0,
|
Version = 0,
|
||||||
CancellationId = 0,
|
CancellationId = 0,
|
||||||
Source = DeviceTaskSourceEnumType.Appointment,
|
Source = "预约区域和设备组关系变更生成",
|
||||||
Priority = 99
|
Priority = 99
|
||||||
}));
|
}));
|
||||||
|
|
||||||
@@ -122,7 +122,7 @@ public class AppointmentAreaService : IAppointmentAreaService
|
|||||||
Status = DeviceTaskStatusEnumType.Wait,
|
Status = DeviceTaskStatusEnumType.Wait,
|
||||||
Version = 0,
|
Version = 0,
|
||||||
CancellationId = 0,
|
CancellationId = 0,
|
||||||
Source = DeviceTaskSourceEnumType.Appointment,
|
Source = "预约区域和设备组关系变更生成",
|
||||||
Priority = 99
|
Priority = 99
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ public class AppointmentService : IAppointmentService
|
|||||||
Face = request.Base64Image
|
Face = request.Base64Image
|
||||||
});
|
});
|
||||||
|
|
||||||
await GenerateDeviceTasksAsync(detail, false, DeviceTaskEnumType.Add);
|
await GenerateDeviceTasksAsync(detail, false, DeviceTaskEnumType.Add, "访客门岗认证生成");
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -189,7 +189,7 @@ public class AppointmentService : IAppointmentService
|
|||||||
detail.FocusLeaveDateTime = DateTime.Now;
|
detail.FocusLeaveDateTime = DateTime.Now;
|
||||||
detail.Remark += "强制离场原因:" + reason;
|
detail.Remark += "强制离场原因:" + reason;
|
||||||
|
|
||||||
await GenerateDeviceTasksAsync(detail, true, DeviceTaskEnumType.Delete);
|
await GenerateDeviceTasksAsync(detail, true, DeviceTaskEnumType.Delete, "访客手动强制离场");
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<Pagination<AppointmentDetailResponse>> GetRecordPageByIdNoAsync(AppointmentIdNoPageRequest request)
|
public async Task<Pagination<AppointmentDetailResponse>> GetRecordPageByIdNoAsync(AppointmentIdNoPageRequest request)
|
||||||
@@ -306,41 +306,40 @@ public class AppointmentService : IAppointmentService
|
|||||||
Face = base64
|
Face = base64
|
||||||
});
|
});
|
||||||
|
|
||||||
await GenerateDeviceTasksAsync(detail, true, DeviceTaskEnumType.Update);
|
await GenerateDeviceTasksAsync(detail, true, DeviceTaskEnumType.Update, "访客手动上传照片");
|
||||||
}
|
}
|
||||||
|
|
||||||
//*********************************************************************************************************************
|
//*********************************************************************************************************************
|
||||||
|
|
||||||
|
|
||||||
private async Task GenerateDeviceTasksAsync(VisitorAppointmentDetailEntity detail, bool withWorkplace, DeviceTaskEnumType deviceTaskType)
|
private async Task GenerateDeviceTasksAsync(VisitorAppointmentDetailEntity detail, bool withWorkplace, DeviceTaskEnumType deviceTaskType, string source)
|
||||||
{
|
{
|
||||||
var areaCodes = GetValidAreaCodes(detail, withWorkplace).ToList();
|
var areaCodes = GetValidAreaCodes(detail, withWorkplace).ToList();
|
||||||
if (areaCodes.Any())
|
if (areaCodes.IsEmpty()) return;
|
||||||
|
|
||||||
|
var existsAreaCodes = await _dbContext.Queryable<AppointmentAreaEntity>().Where(x => areaCodes.Contains(x.CustomCode)).Select(x => x.CustomCode).ToListAsync();
|
||||||
|
|
||||||
|
//当前分配的设备组code
|
||||||
|
var deviceGroupCodes = await _dbContext.Queryable<AppointmentAreaAssignmentEntity>()
|
||||||
|
.Where(x => existsAreaCodes.Contains(x.CustomCode))
|
||||||
|
.Select(x => x.DeviceGroupCode)
|
||||||
|
.ToListAsync();
|
||||||
|
|
||||||
|
var deviceCodes = await _dbContext.Queryable<DeviceGroupRelationshipEntity>().Where(x => deviceGroupCodes.Contains(x.GroupCode)).Select(x => x.DeviceCode).ToListAsync();
|
||||||
|
var deviceUniqueNos = await _dbContext.Queryable<DeviceEntity>().Where(x => deviceCodes.Contains(x.Code)).Select(x => new { x.UniqueNo, x.TenantId }).ToListAsync();
|
||||||
|
|
||||||
|
await _dbContext.InsertAsync(deviceUniqueNos.Select(x => new DeviceTaskEntity
|
||||||
{
|
{
|
||||||
var existsAreaCodes = await _dbContext.Queryable<AppointmentAreaEntity>().Where(x => areaCodes.Contains(x.CustomCode)).Select(x => x.CustomCode).ToListAsync();
|
DeviceType = DeviceTypeEnumType.Door,
|
||||||
|
DeviceUniqueNo = x.UniqueNo,
|
||||||
//当前分配的设备组code
|
Status = DeviceTaskStatusEnumType.Wait,
|
||||||
var deviceGroupCodes = await _dbContext.Queryable<AppointmentAreaAssignmentEntity>()
|
UserNo = detail.UserNo,
|
||||||
.Where(x => existsAreaCodes.Contains(x.CustomCode))
|
Type = deviceTaskType,
|
||||||
.Select(x => x.DeviceGroupCode)
|
Priority = 100,
|
||||||
.ToListAsync();
|
TenantId = x.TenantId,
|
||||||
|
Source = source,
|
||||||
var deviceCodes = await _dbContext.Queryable<DeviceGroupRelationshipEntity>().Where(x => deviceGroupCodes.Contains(x.GroupCode)).Select(x => x.DeviceCode).ToListAsync();
|
Version = 0
|
||||||
var deviceUniqueNos = await _dbContext.Queryable<DeviceEntity>().Where(x => deviceCodes.Contains(x.Code)).Select(x => new { x.UniqueNo, x.TenantId }).ToListAsync();
|
}).ToList());
|
||||||
|
|
||||||
await _dbContext.InsertAsync(deviceUniqueNos.Select(x => new DeviceTaskEntity
|
|
||||||
{
|
|
||||||
DeviceType = DeviceTypeEnumType.Door,
|
|
||||||
DeviceUniqueNo = x.UniqueNo,
|
|
||||||
Status = DeviceTaskStatusEnumType.Wait,
|
|
||||||
UserNo = detail.UserNo,
|
|
||||||
Type = deviceTaskType,
|
|
||||||
Priority = 100,
|
|
||||||
TenantId = x.TenantId,
|
|
||||||
Source = DeviceTaskSourceEnumType.Appointment,
|
|
||||||
Version = 0
|
|
||||||
}).ToList());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static IEnumerable<string> GetValidAreaCodes(VisitorAppointmentDetailEntity detail, bool withWorkplace)
|
private static IEnumerable<string> GetValidAreaCodes(VisitorAppointmentDetailEntity detail, bool withWorkplace)
|
||||||
|
|||||||
@@ -46,9 +46,9 @@ public class DevicePermissionsController : ControllerBase
|
|||||||
[AssignPermissionLimit]
|
[AssignPermissionLimit]
|
||||||
[Transactional]
|
[Transactional]
|
||||||
[CrossTenant]
|
[CrossTenant]
|
||||||
public async Task AssignToUniqueAsync(DevicePermissionsAssignToDeviceRequest request)
|
public async Task<DevicePermissionAssignResponse> AssignToUniqueAsync(DevicePermissionsAssignToDeviceRequest request)
|
||||||
{
|
{
|
||||||
await _devicePermissionService.AssignToUniqueAsync(request);
|
return await _devicePermissionService.AssignToUniqueAsync(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
[AllowAnonymous]
|
[AllowAnonymous]
|
||||||
@@ -98,13 +98,6 @@ public class DevicePermissionsController : ControllerBase
|
|||||||
[CrossTenant]
|
[CrossTenant]
|
||||||
public async Task ResetGainfoPageByDeviceAsync(DeviceGainfoReset request)
|
public async Task ResetGainfoPageByDeviceAsync(DeviceGainfoReset request)
|
||||||
{
|
{
|
||||||
await _devicePermissionService.ResetGainfoPageByDeviceAsync(request);
|
await _devicePermissionService.ResetGainfoPageByDeviceAsync(request.Code);
|
||||||
}
|
|
||||||
|
|
||||||
[HttpGet("userPermissionCodes")]
|
|
||||||
[IgnoreTenant]
|
|
||||||
public async Task<List<Guid>> GetAssignDeviceCodesAsync(string userCode)
|
|
||||||
{
|
|
||||||
return await _devicePermissionService.GetAssignDeviceCodesAsync(userCode);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -14,7 +14,7 @@ public interface IDevicePermissionAnalyzeService : IScopeDependency
|
|||||||
{
|
{
|
||||||
Task<List<DevicePermissionEntity>> GetDevicePermissionsAsync(DevicePermissionSaveRequest request);
|
Task<List<DevicePermissionEntity>> GetDevicePermissionsAsync(DevicePermissionSaveRequest request);
|
||||||
|
|
||||||
Task<DevicePermissionAssignResponse> GenerateDeviceTasksAsync(Func<Task> func, List<string> userNos);
|
Task<DevicePermissionAssignResponse> GenerateDeviceTasksAsync(Func<Task> func, List<string> userNos, string source);
|
||||||
|
|
||||||
Task<List<Guid>> GetAssignmentsAsync(DeviceGetAssignmentsRequest request);
|
Task<List<Guid>> GetAssignmentsAsync(DeviceGetAssignmentsRequest request);
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
using Dlhis.Basic.Device.Dtos;
|
using Dlhis.Basic.Device.Dtos;
|
||||||
using Dlhis.Basic.Device.Request;
|
using Dlhis.Basic.Device.Request;
|
||||||
using Dlhis.Basic.Device.Response;
|
using Dlhis.Basic.Device.Response;
|
||||||
using Dlhis.Basic.Organization.Dto;
|
|
||||||
using Dlhis.Entity.Device.Enums;
|
using Dlhis.Entity.Device.Enums;
|
||||||
using Kurisu.AspNetCore.DataAccess.Dto;
|
using Kurisu.AspNetCore.DataAccess.Dto;
|
||||||
|
|
||||||
@@ -36,21 +35,21 @@ public interface IDevicePermissionService : IScopeDependency
|
|||||||
/// <param name="taskType"></param>
|
/// <param name="taskType"></param>
|
||||||
/// <param name="source"></param>
|
/// <param name="source"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task GenerateDeviceTasksAsync(string userNo, DeviceTaskEnumType taskType, DeviceTaskSourceEnumType source);
|
Task GenerateDeviceTasksAsync(string userNo, DeviceTaskEnumType taskType, string source);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取用户所有设备权限
|
/// 获取用户所有设备权限
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="userCode"></param>
|
/// <param name="userNo"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<List<Guid>> GetAssignDeviceCodesAsync(string userCode);
|
Task<List<Guid>> GetUserDeviceCodesByNoAsync(string userNo);
|
||||||
|
|
||||||
Task<Pagination<DeviceGainfoResponse>> GetGainfoPageByDeviceAsync(DeviceWithGainfoRequest request);
|
Task<Pagination<DeviceGainfoResponse>> GetGainfoPageByDeviceAsync(DeviceWithGainfoRequest request);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 重新下载设备中所有人员
|
/// 重新下载设备中所有人员
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="request"></param>
|
/// <param name="code"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task ResetGainfoPageByDeviceAsync(DeviceGainfoReset request);
|
Task ResetGainfoPageByDeviceAsync(Guid code);
|
||||||
}
|
}
|
||||||
@@ -15,5 +15,5 @@ public interface IDeviceTimePeriodService : IScopeDependency
|
|||||||
|
|
||||||
Task DeleteCardTypeAsync(DeviceTimePeriodDeleteCardTypeRequest request);
|
Task DeleteCardTypeAsync(DeviceTimePeriodDeleteCardTypeRequest request);
|
||||||
|
|
||||||
Task GenerateDeviceTimePeriodTasksAsync(Func<Task> func);
|
Task GenerateDeviceTimePeriodTasksAsync(Func<Task> func, string source);
|
||||||
}
|
}
|
||||||
@@ -35,6 +35,8 @@ public abstract class BasePermissionAnalyzeService : IPermissionAnalyzeService
|
|||||||
|
|
||||||
public async Task<DevicePermissionAssignResponse> AnalyzeAsync(DevicePermissionSaveRequest request)
|
public async Task<DevicePermissionAssignResponse> AnalyzeAsync(DevicePermissionSaveRequest request)
|
||||||
{
|
{
|
||||||
|
var source = request.ToJson();
|
||||||
|
|
||||||
var tasksToAdd = new List<DeviceTaskEntity>();
|
var tasksToAdd = new List<DeviceTaskEntity>();
|
||||||
var tasksToDelete = new List<DeviceTaskEntity>();
|
var tasksToDelete = new List<DeviceTaskEntity>();
|
||||||
|
|
||||||
@@ -61,7 +63,6 @@ public abstract class BasePermissionAnalyzeService : IPermissionAnalyzeService
|
|||||||
? await _devicePermissionAnalyzeService.GetUserAssignDeviceCodesWithTypeInTenantAsync(gainfoNos, request.UniqueType, request.GetActualAssignValue(), request.AssignType)
|
? await _devicePermissionAnalyzeService.GetUserAssignDeviceCodesWithTypeInTenantAsync(gainfoNos, request.UniqueType, request.GetActualAssignValue(), request.AssignType)
|
||||||
: new Dictionary<string, List<TenantAssignTypeDeviceCode>>();
|
: new Dictionary<string, List<TenantAssignTypeDeviceCode>>();
|
||||||
|
|
||||||
|
|
||||||
foreach (var gainfoNo in gainfoNos)
|
foreach (var gainfoNo in gainfoNos)
|
||||||
{
|
{
|
||||||
IEnumerable<DeviceEntity> currentDevicesToDelete = devicesToDelete;
|
IEnumerable<DeviceEntity> currentDevicesToDelete = devicesToDelete;
|
||||||
@@ -83,7 +84,7 @@ public abstract class BasePermissionAnalyzeService : IPermissionAnalyzeService
|
|||||||
Version = 0,
|
Version = 0,
|
||||||
ResultMessage = null,
|
ResultMessage = null,
|
||||||
CancellationId = 0,
|
CancellationId = 0,
|
||||||
Source = DeviceTaskSourceEnumType.Manually,
|
Source = source,
|
||||||
Priority = 0,
|
Priority = 0,
|
||||||
TenantId = x.TenantId,
|
TenantId = x.TenantId,
|
||||||
}).ToList());
|
}).ToList());
|
||||||
@@ -99,7 +100,7 @@ public abstract class BasePermissionAnalyzeService : IPermissionAnalyzeService
|
|||||||
Version = 0,
|
Version = 0,
|
||||||
ResultMessage = null,
|
ResultMessage = null,
|
||||||
CancellationId = 0,
|
CancellationId = 0,
|
||||||
Source = DeviceTaskSourceEnumType.Manually,
|
Source = source,
|
||||||
Priority = 0,
|
Priority = 0,
|
||||||
TenantId = x.TenantId,
|
TenantId = x.TenantId,
|
||||||
}).ToList());
|
}).ToList());
|
||||||
@@ -117,7 +118,18 @@ public abstract class BasePermissionAnalyzeService : IPermissionAnalyzeService
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public async Task CheckAssignedToTenantAsync(DevicePermissionSaveRequest request)
|
/// <summary>
|
||||||
|
/// 获取分配当前类型关联的用户
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="assignValue"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
protected abstract Task<List<string>> GetGainfoNosAsync(string assignValue);
|
||||||
|
|
||||||
|
|
||||||
|
//************************************************************************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
private async Task CheckAssignedToTenantAsync(DevicePermissionSaveRequest request)
|
||||||
{
|
{
|
||||||
if (request.AssignType != AssignTypeEnumType.Tenant)
|
if (request.AssignType != AssignTypeEnumType.Tenant)
|
||||||
{
|
{
|
||||||
@@ -166,17 +178,8 @@ public abstract class BasePermissionAnalyzeService : IPermissionAnalyzeService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 获取分配当前类型关联的用户
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="assignValue"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
protected abstract Task<List<string>> GetGainfoNosAsync(string assignValue);
|
|
||||||
|
|
||||||
|
|
||||||
// --------------------------------------------------------------------------------------------------------------------- //
|
|
||||||
|
|
||||||
private async Task ChunkInsertAsync<T>(List<T> batch) where T : class, new()
|
private async Task ChunkInsertAsync<T>(List<T> batch) where T : class, new()
|
||||||
{
|
{
|
||||||
foreach (var tasks in batch.Chunk(500))
|
foreach (var tasks in batch.Chunk(500))
|
||||||
|
|||||||
@@ -196,14 +196,13 @@ public class DeviceGroupService : IDeviceGroupService
|
|||||||
.Where(x => deviceGroupCodes.Contains(x.UniqueValue))
|
.Where(x => deviceGroupCodes.Contains(x.UniqueValue))
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
if (!dps.Any())
|
if (dps.IsEmpty())
|
||||||
{
|
{
|
||||||
return new DevicePermissionAssignResponse(0, 0);
|
return new DevicePermissionAssignResponse(0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
var gainfoNos = await GetPermissionUserNosAsync(dps);
|
var gainfoNos = await GetPermissionUserNosAsync(dps);
|
||||||
|
|
||||||
|
|
||||||
var userTenantDeviceCodes = codesToDelete.IsPresent() && dps.Exists(x => x.AssignType != AssignTypeEnumType.Tenant)
|
var userTenantDeviceCodes = codesToDelete.IsPresent() && dps.Exists(x => x.AssignType != AssignTypeEnumType.Tenant)
|
||||||
? await _devicePermissionAnalyzeService.GetUserAssignDeviceCodesWithTypeInTenantAsync(gainfoNos)
|
? await _devicePermissionAnalyzeService.GetUserAssignDeviceCodesWithTypeInTenantAsync(gainfoNos)
|
||||||
: new Dictionary<string, List<TenantAssignTypeDeviceCode>>();
|
: new Dictionary<string, List<TenantAssignTypeDeviceCode>>();
|
||||||
@@ -227,47 +226,44 @@ public class DeviceGroupService : IDeviceGroupService
|
|||||||
Version = 0,
|
Version = 0,
|
||||||
ResultMessage = null,
|
ResultMessage = null,
|
||||||
CancellationId = 0,
|
CancellationId = 0,
|
||||||
Source = DeviceTaskSourceEnumType.Manually,
|
Source = "人员分组分配",
|
||||||
Priority = 0,
|
Priority = 0,
|
||||||
TenantId = x.TenantId,
|
TenantId = x.TenantId
|
||||||
}).ToList());
|
}).ToList());
|
||||||
|
|
||||||
if (userTenantDeviceCodes.Any())
|
if (userTenantDeviceCodes.TryGetValue(gainfoNo, out var permissions))
|
||||||
{
|
{
|
||||||
if (userTenantDeviceCodes.TryGetValue(gainfoNo, out var permissions))
|
foreach (var permission in permissions)
|
||||||
{
|
{
|
||||||
foreach (var permission in permissions)
|
permission.AssignTypes = permission.AssignTypes.Where(p =>
|
||||||
{
|
{
|
||||||
permission.AssignTypes = permission.AssignTypes.Where(p =>
|
if (p.UniqueType == DeviceAssignmentTypeEnumType.Device)
|
||||||
{
|
{
|
||||||
if (p.UniqueType == DeviceAssignmentTypeEnumType.Device)
|
return true;
|
||||||
{
|
}
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return p.OriginalCodes.IsPresent() && p.OriginalCodes.First() != groupCode;
|
return p.OriginalCodes.IsPresent() && p.OriginalCodes.First() != groupCode;
|
||||||
}).ToList();
|
}).ToList();
|
||||||
}
|
|
||||||
|
|
||||||
var myDeviceCodes = permissions.SelectMany(x => x.AssignTypes.SelectMany(p => p.Codes)).ToList();
|
|
||||||
var currentDevicesToDelete = devicesToDelete.Where(p => devicesToDelete.Select(x => x.Code).Except(myDeviceCodes).Contains(p.Code)).ToList();
|
|
||||||
|
|
||||||
tasksToDelete.AddRange(currentDevicesToDelete.Select(x => new DeviceTaskEntity
|
|
||||||
{
|
|
||||||
Type = DeviceTaskEnumType.Delete,
|
|
||||||
DeviceType = x.Type,
|
|
||||||
UserId = null,
|
|
||||||
UserNo = gainfoNo,
|
|
||||||
DeviceUniqueNo = x.UniqueNo,
|
|
||||||
Status = DeviceTaskStatusEnumType.Wait,
|
|
||||||
Version = 0,
|
|
||||||
ResultMessage = null,
|
|
||||||
CancellationId = 0,
|
|
||||||
Source = DeviceTaskSourceEnumType.Manually,
|
|
||||||
Priority = 0,
|
|
||||||
TenantId = x.TenantId,
|
|
||||||
}).ToList());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var myDeviceCodes = permissions.SelectMany(x => x.AssignTypes.SelectMany(p => p.Codes)).ToList();
|
||||||
|
var currentDevicesToDelete = devicesToDelete.Where(p => devicesToDelete.Select(x => x.Code).Except(myDeviceCodes).Contains(p.Code)).ToList();
|
||||||
|
|
||||||
|
tasksToDelete.AddRange(currentDevicesToDelete.Select(x => new DeviceTaskEntity
|
||||||
|
{
|
||||||
|
Type = DeviceTaskEnumType.Delete,
|
||||||
|
DeviceType = x.Type,
|
||||||
|
UserId = null,
|
||||||
|
UserNo = gainfoNo,
|
||||||
|
DeviceUniqueNo = x.UniqueNo,
|
||||||
|
Status = DeviceTaskStatusEnumType.Wait,
|
||||||
|
Version = 0,
|
||||||
|
ResultMessage = null,
|
||||||
|
CancellationId = 0,
|
||||||
|
Source = "人员分组分配",
|
||||||
|
Priority = 0,
|
||||||
|
TenantId = x.TenantId,
|
||||||
|
}).ToList());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ public class DevicePermissionAnalyzeService : IDevicePermissionAnalyzeService
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public async Task<DevicePermissionAssignResponse> GenerateDeviceTasksAsync(Func<Task> func, List<string> userNos)
|
public async Task<DevicePermissionAssignResponse> GenerateDeviceTasksAsync(Func<Task> func, List<string> userNos, string source)
|
||||||
{
|
{
|
||||||
var before = await GetUserAssignDeviceCodesInTenantAsync(userNos);
|
var before = await GetUserAssignDeviceCodesInTenantAsync(userNos);
|
||||||
|
|
||||||
@@ -130,7 +130,7 @@ public class DevicePermissionAnalyzeService : IDevicePermissionAnalyzeService
|
|||||||
UserNo = userNo,
|
UserNo = userNo,
|
||||||
Version = 0,
|
Version = 0,
|
||||||
TenantId = tenant,
|
TenantId = tenant,
|
||||||
Source = DeviceTaskSourceEnumType.Manually
|
Source = source
|
||||||
}));
|
}));
|
||||||
|
|
||||||
addItems.ForEach(x => waitAddTasks.Add(new DeviceTaskEntity
|
addItems.ForEach(x => waitAddTasks.Add(new DeviceTaskEntity
|
||||||
@@ -142,7 +142,7 @@ public class DevicePermissionAnalyzeService : IDevicePermissionAnalyzeService
|
|||||||
UserNo = userNo,
|
UserNo = userNo,
|
||||||
Version = 0,
|
Version = 0,
|
||||||
TenantId = tenant,
|
TenantId = tenant,
|
||||||
Source = DeviceTaskSourceEnumType.Manually
|
Source = source
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -162,7 +162,7 @@ public class DevicePermissionAnalyzeService : IDevicePermissionAnalyzeService
|
|||||||
var gainfos = await _dbContext.Queryable<GainfoEntity>().Where(x => userNos.Contains(x.No)).ToListAsync();
|
var gainfos = await _dbContext.Queryable<GainfoEntity>().Where(x => userNos.Contains(x.No)).ToListAsync();
|
||||||
if (!gainfos.Any()) return new Dictionary<string, List<TenantAssignTypeDeviceCode>>();
|
if (!gainfos.Any()) return new Dictionary<string, List<TenantAssignTypeDeviceCode>>();
|
||||||
|
|
||||||
var devices = await _dbContext.Queryable<DeviceEntity>().Where(x => x.Enable).ToListAsync();
|
var devices = await _dbContext.Queryable<DeviceEntity>().ToListAsync();
|
||||||
|
|
||||||
var enableFactoryPermissions = await _dbContext.Queryable<FactorySettingEntity>().ToListAsync();
|
var enableFactoryPermissions = await _dbContext.Queryable<FactorySettingEntity>().ToListAsync();
|
||||||
|
|
||||||
|
|||||||
@@ -101,8 +101,8 @@ public class DevicePermissionService : IDevicePermissionService
|
|||||||
Status = DeviceTaskStatusEnumType.Wait,
|
Status = DeviceTaskStatusEnumType.Wait,
|
||||||
Version = 0,
|
Version = 0,
|
||||||
ResultMessage = null,
|
ResultMessage = null,
|
||||||
CancellationId = 20,
|
CancellationId = 0,
|
||||||
Source = DeviceTaskSourceEnumType.Manually,
|
Source = "人员分配到设备unique",
|
||||||
Priority = 0,
|
Priority = 0,
|
||||||
TenantId = currentTenantId,
|
TenantId = currentTenantId,
|
||||||
}));
|
}));
|
||||||
@@ -113,7 +113,9 @@ public class DevicePermissionService : IDevicePermissionService
|
|||||||
{
|
{
|
||||||
foreach (var permission in permissions)
|
foreach (var permission in permissions)
|
||||||
{
|
{
|
||||||
permission.AssignTypes = permission.AssignTypes.Where(x => x.UniqueType != DeviceAssignmentTypeEnumType.Device).ToList();
|
permission.AssignTypes = permission.AssignTypes
|
||||||
|
.Where(x => x.UniqueType != DeviceAssignmentTypeEnumType.Device && x.AssignType != AssignTypeEnumType.User)
|
||||||
|
.ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
var myDeviceCodes = permissions.SelectMany(x => x.AssignTypes.SelectMany(p => p.Codes)).Distinct().ToList();
|
var myDeviceCodes = permissions.SelectMany(x => x.AssignTypes.SelectMany(p => p.Codes)).Distinct().ToList();
|
||||||
@@ -130,7 +132,7 @@ public class DevicePermissionService : IDevicePermissionService
|
|||||||
Version = 0,
|
Version = 0,
|
||||||
ResultMessage = null,
|
ResultMessage = null,
|
||||||
CancellationId = 20,
|
CancellationId = 20,
|
||||||
Source = DeviceTaskSourceEnumType.Manually,
|
Source = "人员分配到设备unique",
|
||||||
Priority = 0,
|
Priority = 0,
|
||||||
TenantId = currentTenantId
|
TenantId = currentTenantId
|
||||||
});
|
});
|
||||||
@@ -208,7 +210,7 @@ public class DevicePermissionService : IDevicePermissionService
|
|||||||
Version = 0,
|
Version = 0,
|
||||||
ResultMessage = null,
|
ResultMessage = null,
|
||||||
CancellationId = 0,
|
CancellationId = 0,
|
||||||
Source = DeviceTaskSourceEnumType.Manually,
|
Source = "人员分配到设备import",
|
||||||
Priority = 0,
|
Priority = 0,
|
||||||
TenantId = device.TenantId,
|
TenantId = device.TenantId,
|
||||||
}).ToList();
|
}).ToList();
|
||||||
@@ -274,8 +276,7 @@ public class DevicePermissionService : IDevicePermissionService
|
|||||||
var arr = permission.AssignValue.Split(":");
|
var arr = permission.AssignValue.Split(":");
|
||||||
var tenantId = arr.First();
|
var tenantId = arr.First();
|
||||||
var currentDepartmentNo = arr.Last();
|
var currentDepartmentNo = arr.Last();
|
||||||
var departmentNos = new List<string> { currentDepartmentNo };
|
var departmentNos = RecursionHelper.HandlerDepartmentNextCodes(currentDepartmentNo, departments);
|
||||||
DepartmentRecursionGetNext(currentDepartmentNo, departments, departmentNos);
|
|
||||||
|
|
||||||
ids.AddRange(await _dbContext.Queryable<GainfoEntity>().Where(x => x.Factory == tenantId && departmentNos.Contains(x.DepartmentNo)).Select(x => x.Id).ToListAsync());
|
ids.AddRange(await _dbContext.Queryable<GainfoEntity>().Where(x => x.Factory == tenantId && departmentNos.Contains(x.DepartmentNo)).Select(x => x.Id).ToListAsync());
|
||||||
}
|
}
|
||||||
@@ -337,9 +338,9 @@ public class DevicePermissionService : IDevicePermissionService
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public async Task ResetGainfoPageByDeviceAsync(DeviceGainfoReset request)
|
public async Task ResetGainfoPageByDeviceAsync(Guid code)
|
||||||
{
|
{
|
||||||
var device = await _dbContext.Queryable<DeviceEntity>().Where(x => x.Code == request.Code).SingleAsync();
|
var device = await _dbContext.Queryable<DeviceEntity>().Where(x => x.Code == code).SingleAsync();
|
||||||
device.ThrowIfNull("设备不存在");
|
device.ThrowIfNull("设备不存在");
|
||||||
var departments = await _dbContext.Queryable<DepartmentEntity>().ToListAsync();
|
var departments = await _dbContext.Queryable<DepartmentEntity>().ToListAsync();
|
||||||
|
|
||||||
@@ -363,8 +364,8 @@ public class DevicePermissionService : IDevicePermissionService
|
|||||||
break;
|
break;
|
||||||
case AssignTypeEnumType.Group:
|
case AssignTypeEnumType.Group:
|
||||||
{
|
{
|
||||||
var code = Guid.Parse(permission.AssignValue);
|
var groupCode = Guid.Parse(permission.AssignValue);
|
||||||
gainfoNos.AddRange(await _dbContext.Queryable<GainfoGroupEntity>().Where(x => x.Code == code)
|
gainfoNos.AddRange(await _dbContext.Queryable<GainfoGroupEntity>().Where(x => x.Code == groupCode)
|
||||||
.LeftJoin<GainfoGroupRelationshipEntity>((a, b) => a.Code == b.GroupCode)
|
.LeftJoin<GainfoGroupRelationshipEntity>((a, b) => a.Code == b.GroupCode)
|
||||||
.LeftJoin<GainfoEntity>((a, b, c) => b.UserNo == c.No)
|
.LeftJoin<GainfoEntity>((a, b, c) => b.UserNo == c.No)
|
||||||
.Select((a, b, c) => c.No).ToListAsync());
|
.Select((a, b, c) => c.No).ToListAsync());
|
||||||
@@ -376,8 +377,7 @@ public class DevicePermissionService : IDevicePermissionService
|
|||||||
var arr = permission.AssignValue.Split(":");
|
var arr = permission.AssignValue.Split(":");
|
||||||
var tenantId = arr.First();
|
var tenantId = arr.First();
|
||||||
var currentDepartmentNo = arr.Last();
|
var currentDepartmentNo = arr.Last();
|
||||||
var departmentNos = new List<string> { currentDepartmentNo };
|
var departmentNos = RecursionHelper.HandlerDepartmentNextCodes(currentDepartmentNo, departments);
|
||||||
DepartmentRecursionGetNext(currentDepartmentNo, departments, departmentNos);
|
|
||||||
|
|
||||||
gainfoNos.AddRange(await _dbContext.Queryable<GainfoEntity>().Where(x => x.Factory == tenantId && departmentNos.Contains(x.DepartmentNo)).Select(x => x.No).ToListAsync());
|
gainfoNos.AddRange(await _dbContext.Queryable<GainfoEntity>().Where(x => x.Factory == tenantId && departmentNos.Contains(x.DepartmentNo)).Select(x => x.No).ToListAsync());
|
||||||
}
|
}
|
||||||
@@ -404,31 +404,21 @@ public class DevicePermissionService : IDevicePermissionService
|
|||||||
UserNo = x,
|
UserNo = x,
|
||||||
Version = 0,
|
Version = 0,
|
||||||
TenantId = device.TenantId,
|
TenantId = device.TenantId,
|
||||||
Source = DeviceTaskSourceEnumType.Manually
|
Source = "重新生成设备下的人员"
|
||||||
}).ToList());
|
}).ToList());
|
||||||
}
|
}
|
||||||
|
|
||||||
void DepartmentRecursionGetNext(string current, List<DepartmentEntity> data, List<string> result)
|
public async Task GenerateDeviceTasksAsync(string userNo, DeviceTaskEnumType taskType, string source)
|
||||||
{
|
{
|
||||||
var next = data.Where(x => x.PNo == current);
|
var deviceCodes = await GetUserDeviceCodesByNoAsync(userNo);
|
||||||
foreach (var item in next)
|
if (deviceCodes.IsEmpty()) return;
|
||||||
{
|
|
||||||
result.Add(item.No);
|
|
||||||
DepartmentRecursionGetNext(item.No, data, result);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task GenerateDeviceTasksAsync(string userNo, DeviceTaskEnumType taskType, DeviceTaskSourceEnumType source)
|
|
||||||
{
|
|
||||||
var deviceCodes = await GetAssignDeviceCodesAsync(userNo);
|
|
||||||
if (!deviceCodes.Any()) return;
|
|
||||||
|
|
||||||
var devices = await _dbContext.Queryable<DeviceEntity>()
|
var devices = await _dbContext.Queryable<DeviceEntity>()
|
||||||
.Where(x => x.Enable)
|
.Where(x => x.Enable)
|
||||||
.Where(x => deviceCodes.Contains(x.Code))
|
.Where(x => deviceCodes.Contains(x.Code))
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
var tasks = devices.Select(x => new DeviceTaskEntity
|
await _dbContext.InsertAsync(devices.Select(x => new DeviceTaskEntity
|
||||||
{
|
{
|
||||||
DeviceUniqueNo = x.UniqueNo,
|
DeviceUniqueNo = x.UniqueNo,
|
||||||
Status = DeviceTaskStatusEnumType.Wait,
|
Status = DeviceTaskStatusEnumType.Wait,
|
||||||
@@ -440,20 +430,17 @@ public class DevicePermissionService : IDevicePermissionService
|
|||||||
Version = 0,
|
Version = 0,
|
||||||
TenantId = x.TenantId,
|
TenantId = x.TenantId,
|
||||||
Source = source
|
Source = source
|
||||||
}).ToList();
|
}).ToList());
|
||||||
|
|
||||||
await _dbContext.InsertAsync(tasks);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取用户所有设备权限
|
/// 获取用户所有设备权限
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="userCode"></param>
|
/// <param name="userNo"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<List<Guid>> GetAssignDeviceCodesAsync(string userCode)
|
public async Task<List<Guid>> GetUserDeviceCodesByNoAsync(string userNo)
|
||||||
{
|
{
|
||||||
var userNo = await _dbContext.Queryable<GainfoEntity>().Where(x => x.Code == userCode || x.No == userCode).Select(x => x.No).SingleAsync();
|
|
||||||
var result = await _devicePermissionAnalyzeService.GetUserAssignDeviceCodesWithTypeInTenantAsync(new List<string> { userNo });
|
var result = await _devicePermissionAnalyzeService.GetUserAssignDeviceCodesWithTypeInTenantAsync(new List<string> { userNo });
|
||||||
return result.First().Value.SelectMany(x => x.AssignTypes.SelectMany(p => p.Codes)).Distinct().ToList();
|
return result.First().Value.SelectMany(x => x.AssignTypes.SelectMany(p => p.Codes)).Distinct().ToList();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ public class DeviceService : IDeviceService
|
|||||||
|
|
||||||
request.Adapt(entity);
|
request.Adapt(entity);
|
||||||
await _dbContext.UpdateAsync(entity);
|
await _dbContext.UpdateAsync(entity);
|
||||||
|
|
||||||
var registry = await _dbContext.Queryable<DeviceRegistryEntity>().Where(x => x.DeviceUniqueNo == request.UniqueNo).SingleAsync();
|
var registry = await _dbContext.Queryable<DeviceRegistryEntity>().Where(x => x.DeviceUniqueNo == request.UniqueNo).SingleAsync();
|
||||||
if (registry == null)
|
if (registry == null)
|
||||||
{
|
{
|
||||||
@@ -123,7 +123,7 @@ public class DeviceService : IDeviceService
|
|||||||
}
|
}
|
||||||
|
|
||||||
await GenerateUploadRecordLogForBeginTimeAsync(entity);
|
await GenerateUploadRecordLogForBeginTimeAsync(entity);
|
||||||
});
|
}, "设备启用/关闭时段码功能");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ public class DeviceTimePeriodService : IDeviceTimePeriodService
|
|||||||
|
|
||||||
await _dbContext.UpdateAsync(entity);
|
await _dbContext.UpdateAsync(entity);
|
||||||
}
|
}
|
||||||
});
|
}, "时段码变更");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
@@ -121,11 +121,11 @@ public class DeviceTimePeriodService : IDeviceTimePeriodService
|
|||||||
|
|
||||||
entity.ThrowIfNull("数据不存在");
|
entity.ThrowIfNull("数据不存在");
|
||||||
await _dbContext.DeleteReallyAsync(entity);
|
await _dbContext.DeleteReallyAsync(entity);
|
||||||
});
|
}, "删除时段码");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public async Task GenerateDeviceTimePeriodTasksAsync(Func<Task> func)
|
public async Task GenerateDeviceTimePeriodTasksAsync(Func<Task> func, string source)
|
||||||
{
|
{
|
||||||
var cardTypes = await _dbContext.Queryable<BasicTypeEntity>().Where(x => x.Type == "timeperiod").Select(x => SqlFunc.ToInt32(x.Code)).ToListAsync();
|
var cardTypes = await _dbContext.Queryable<BasicTypeEntity>().Where(x => x.Type == "timeperiod").Select(x => SqlFunc.ToInt32(x.Code)).ToListAsync();
|
||||||
|
|
||||||
@@ -159,9 +159,9 @@ public class DeviceTimePeriodService : IDeviceTimePeriodService
|
|||||||
Status = DeviceTaskStatusEnumType.Wait,
|
Status = DeviceTaskStatusEnumType.Wait,
|
||||||
Version = 0,
|
Version = 0,
|
||||||
CancellationId = 0,
|
CancellationId = 0,
|
||||||
Source = DeviceTaskSourceEnumType.Manually,
|
Source = source,
|
||||||
Priority = 90,
|
Priority = 90,
|
||||||
TenantId = device.TenantId,
|
TenantId = device.TenantId
|
||||||
});
|
});
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
@@ -192,7 +192,7 @@ public class DeviceTimePeriodService : IDeviceTimePeriodService
|
|||||||
Status = DeviceTaskStatusEnumType.Wait,
|
Status = DeviceTaskStatusEnumType.Wait,
|
||||||
Version = 0,
|
Version = 0,
|
||||||
CancellationId = 0,
|
CancellationId = 0,
|
||||||
Source = DeviceTaskSourceEnumType.Manually,
|
Source = source,
|
||||||
Priority = 90,
|
Priority = 90,
|
||||||
TenantId = device.TenantId
|
TenantId = device.TenantId
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -55,6 +55,6 @@ public class GainfoPermissionsController : ControllerBase
|
|||||||
[HttpPost("reset")]
|
[HttpPost("reset")]
|
||||||
public async Task<DevicePermissionAssignResponse> ResetPermissionsAsync(GainfoPermissionResetRequest request)
|
public async Task<DevicePermissionAssignResponse> ResetPermissionsAsync(GainfoPermissionResetRequest request)
|
||||||
{
|
{
|
||||||
return await _gainfoPermissions.ResetPermissionsAsync(request.UserNo, request.Status ? DeviceTaskEnumType.Add : DeviceTaskEnumType.Delete, null);
|
return await _gainfoPermissions.ResetPermissionsAsync(request.UserNo, request.Status ? DeviceTaskEnumType.Add : DeviceTaskEnumType.Delete, null, "admin手动操作重置");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -13,5 +13,5 @@ public interface IGainfoPermissionService : IScopeDependency
|
|||||||
|
|
||||||
Task<Pagination<GainfoDevicePermissionResponse>> GetAssignDeviceCodesAsync(DeviceAssRequest request);
|
Task<Pagination<GainfoDevicePermissionResponse>> GetAssignDeviceCodesAsync(DeviceAssRequest request);
|
||||||
|
|
||||||
Task<DevicePermissionAssignResponse> ResetPermissionsAsync(string userNo, DeviceTaskEnumType type, List<Guid> deviceCodes);
|
Task<DevicePermissionAssignResponse> ResetPermissionsAsync(string userNo, DeviceTaskEnumType type, List<Guid> deviceCodes, string source);
|
||||||
}
|
}
|
||||||
@@ -137,7 +137,7 @@ public class GainfoFaceService : IGainfoFaceService
|
|||||||
await _faceDbContext.UpdateAsync(face);
|
await _faceDbContext.UpdateAsync(face);
|
||||||
}
|
}
|
||||||
|
|
||||||
await _devicePermissionService.GenerateDeviceTasksAsync(gainfo.No, taskType, DeviceTaskSourceEnumType.Photo);
|
await _devicePermissionService.GenerateDeviceTasksAsync(gainfo.No, taskType, "照片上传生成");
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<string> GetExternalFaceAsync(string idno)
|
public async Task<string> GetExternalFaceAsync(string idno)
|
||||||
@@ -264,7 +264,7 @@ public class GainfoFaceService : IGainfoFaceService
|
|||||||
}
|
}
|
||||||
|
|
||||||
//生成任务
|
//生成任务
|
||||||
await _devicePermissionService.GenerateDeviceTasksAsync(gainfo.No, taskType, DeviceTaskSourceEnumType.Photo);
|
await _devicePermissionService.GenerateDeviceTasksAsync(gainfo.No, taskType, "照片上传生成");
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task UploadFacesAsync(List<GainfoUploadFaceRequest> requests)
|
public async Task UploadFacesAsync(List<GainfoUploadFaceRequest> requests)
|
||||||
@@ -309,7 +309,7 @@ public class GainfoFaceService : IGainfoFaceService
|
|||||||
}
|
}
|
||||||
|
|
||||||
//生成任务
|
//生成任务
|
||||||
await _devicePermissionService.GenerateDeviceTasksAsync(gainfo.No, taskType, DeviceTaskSourceEnumType.Photo);
|
await _devicePermissionService.GenerateDeviceTasksAsync(gainfo.No, taskType, "照片上传生成");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -178,7 +178,7 @@ public class GainfoGroupService : IGainfoGroupService
|
|||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteTasks.Add(new DeviceTaskEntity
|
deleteTasks.Add(new DeviceTaskEntity
|
||||||
{
|
{
|
||||||
Type = DeviceTaskEnumType.Delete,
|
Type = DeviceTaskEnumType.Delete,
|
||||||
@@ -190,7 +190,7 @@ public class GainfoGroupService : IGainfoGroupService
|
|||||||
Version = 0,
|
Version = 0,
|
||||||
ResultMessage = null,
|
ResultMessage = null,
|
||||||
CancellationId = 0,
|
CancellationId = 0,
|
||||||
Source = DeviceTaskSourceEnumType.Manually,
|
Source = "手动操作人员分组关系",
|
||||||
Priority = 0,
|
Priority = 0,
|
||||||
TenantId = device.TenantId
|
TenantId = device.TenantId
|
||||||
});
|
});
|
||||||
@@ -210,7 +210,7 @@ public class GainfoGroupService : IGainfoGroupService
|
|||||||
Version = 0,
|
Version = 0,
|
||||||
ResultMessage = null,
|
ResultMessage = null,
|
||||||
CancellationId = 0,
|
CancellationId = 0,
|
||||||
Source = DeviceTaskSourceEnumType.Manually,
|
Source = "手动操作人员分组关系",
|
||||||
Priority = 0,
|
Priority = 0,
|
||||||
TenantId = device.TenantId
|
TenantId = device.TenantId
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -148,7 +148,7 @@ public class GainfoOutsourceService : IGainfoOutsourceService
|
|||||||
await _gainfoService.ResignAsync(new GainfoResignRequest
|
await _gainfoService.ResignAsync(new GainfoResignRequest
|
||||||
{
|
{
|
||||||
Id = outsource.Id,
|
Id = outsource.Id,
|
||||||
Reason = $"{setting.NoRecordAutoResignOutsourceDays}天无打开记录",
|
Reason = $"{setting.NoRecordAutoResignOutsourceDays}天无通行记录",
|
||||||
Date = DateTime.Now,
|
Date = DateTime.Now,
|
||||||
IsOutsource = true
|
IsOutsource = true
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,10 +1,8 @@
|
|||||||
using Dlhis.Basic.Device.Dtos;
|
using Dlhis.Basic.Device.Dtos;
|
||||||
using Dlhis.Basic.Device.Request;
|
|
||||||
using Dlhis.Basic.Device.Response;
|
using Dlhis.Basic.Device.Response;
|
||||||
using Dlhis.Basic.Device.Services;
|
using Dlhis.Basic.Device.Services;
|
||||||
using Dlhis.Basic.Organization.Request;
|
using Dlhis.Basic.Organization.Request;
|
||||||
using Dlhis.Basic.Organization.Response;
|
using Dlhis.Basic.Organization.Response;
|
||||||
using Dlhis.Basic.Places.Response;
|
|
||||||
using Dlhis.Entity.Basic.Entity;
|
using Dlhis.Entity.Basic.Entity;
|
||||||
using Dlhis.Entity.Device.Entities;
|
using Dlhis.Entity.Device.Entities;
|
||||||
using Dlhis.Entity.Device.Enums;
|
using Dlhis.Entity.Device.Enums;
|
||||||
@@ -18,13 +16,11 @@ namespace Dlhis.Basic.Organization.Services.Implements;
|
|||||||
|
|
||||||
public class GainfoPermissionService : IGainfoPermissionService
|
public class GainfoPermissionService : IGainfoPermissionService
|
||||||
{
|
{
|
||||||
private readonly IGainfoStore _gainfoStore;
|
|
||||||
private readonly IDevicePermissionAnalyzeService _devicePermissionAnalyzeService;
|
private readonly IDevicePermissionAnalyzeService _devicePermissionAnalyzeService;
|
||||||
private readonly IDbContext _dbContext;
|
private readonly IDbContext _dbContext;
|
||||||
|
|
||||||
public GainfoPermissionService(IGainfoStore gainfoStore, IDevicePermissionAnalyzeService devicePermissionAnalyzeService, IDbContext dbContext)
|
public GainfoPermissionService(IDevicePermissionAnalyzeService devicePermissionAnalyzeService, IDbContext dbContext)
|
||||||
{
|
{
|
||||||
_gainfoStore = gainfoStore;
|
|
||||||
_devicePermissionAnalyzeService = devicePermissionAnalyzeService;
|
_devicePermissionAnalyzeService = devicePermissionAnalyzeService;
|
||||||
_dbContext = dbContext;
|
_dbContext = dbContext;
|
||||||
}
|
}
|
||||||
@@ -154,7 +150,7 @@ public class GainfoPermissionService : IGainfoPermissionService
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public async Task<DevicePermissionAssignResponse> ResetPermissionsAsync(string userNo, DeviceTaskEnumType type, List<Guid> deviceCodes)
|
public async Task<DevicePermissionAssignResponse> ResetPermissionsAsync(string userNo, DeviceTaskEnumType type, List<Guid> deviceCodes, string source)
|
||||||
{
|
{
|
||||||
var gainfo = await _dbContext.Queryable<GainfoEntity>()
|
var gainfo = await _dbContext.Queryable<GainfoEntity>()
|
||||||
.Where(x => x.No == userNo)
|
.Where(x => x.No == userNo)
|
||||||
@@ -193,7 +189,7 @@ public class GainfoPermissionService : IGainfoPermissionService
|
|||||||
DeviceType = x.Type,
|
DeviceType = x.Type,
|
||||||
TenantId = x.TenantId,
|
TenantId = x.TenantId,
|
||||||
Priority = 10,
|
Priority = 10,
|
||||||
Source = DeviceTaskSourceEnumType.Manually,
|
Source = source,
|
||||||
}).ToList();
|
}).ToList();
|
||||||
|
|
||||||
await _dbContext.InsertAsync(tasks);
|
await _dbContext.InsertAsync(tasks);
|
||||||
|
|||||||
@@ -254,8 +254,8 @@ public class GainfoService : IGainfoService
|
|||||||
(outsource == null).ThrowIfTrue("非外包人员不可手动离职");
|
(outsource == null).ThrowIfTrue("非外包人员不可手动离职");
|
||||||
}
|
}
|
||||||
|
|
||||||
await _gainfoPermissionService.ResetPermissionsAsync(gainfo.No, DeviceTaskEnumType.Delete, null);
|
await _gainfoPermissionService.ResetPermissionsAsync(gainfo.No, DeviceTaskEnumType.Delete, null, request.Reason);
|
||||||
|
|
||||||
await _dbContext.Deleteable<GainfoGroupRelationshipEntity>().Where(x => x.UserNo != gainfo.No).ExecuteCommandAsync();
|
await _dbContext.Deleteable<GainfoGroupRelationshipEntity>().Where(x => x.UserNo != gainfo.No).ExecuteCommandAsync();
|
||||||
await _dbContext.Deleteable<DevicePermissionEntity>().Where(x => x.AssignType == AssignTypeEnumType.User && x.AssignValue == gainfo.No).ExecuteCommandAsync();
|
await _dbContext.Deleteable<DevicePermissionEntity>().Where(x => x.AssignType == AssignTypeEnumType.User && x.AssignValue == gainfo.No).ExecuteCommandAsync();
|
||||||
|
|
||||||
@@ -288,7 +288,7 @@ public class GainfoService : IGainfoService
|
|||||||
|
|
||||||
await _dbContext.UpdateAsync(gainfo);
|
await _dbContext.UpdateAsync(gainfo);
|
||||||
|
|
||||||
var deviceCodes = await _devicePermissionService.GetAssignDeviceCodesAsync(gainfo.Code);
|
var deviceCodes = await _devicePermissionService.GetUserDeviceCodesByNoAsync(gainfo.No);
|
||||||
|
|
||||||
var dhDevices = await _dbContext.Queryable<DeviceEntity>().LeftJoin<DeviceTemplateEntity>((x, xt) => x.TemplateCode == xt.Code)
|
var dhDevices = await _dbContext.Queryable<DeviceEntity>().LeftJoin<DeviceTemplateEntity>((x, xt) => x.TemplateCode == xt.Code)
|
||||||
.Where((x, xt) => xt.Name == "大华人脸机")
|
.Where((x, xt) => xt.Name == "大华人脸机")
|
||||||
@@ -306,7 +306,7 @@ public class GainfoService : IGainfoService
|
|||||||
Version = 0,
|
Version = 0,
|
||||||
ResultMessage = null,
|
ResultMessage = null,
|
||||||
CancellationId = 0,
|
CancellationId = 0,
|
||||||
Source = DeviceTaskSourceEnumType.Manually,
|
Source = "安全级别提高",
|
||||||
Priority = 60,
|
Priority = 60,
|
||||||
TenantId = x.TenantId
|
TenantId = x.TenantId
|
||||||
}).ToList());
|
}).ToList());
|
||||||
@@ -451,7 +451,7 @@ public class GainfoService : IGainfoService
|
|||||||
//海宁触发权限下发
|
//海宁触发权限下发
|
||||||
if (gainfo.Workplace == "5")
|
if (gainfo.Workplace == "5")
|
||||||
{
|
{
|
||||||
await _devicePermissionService.GenerateDeviceTasksAsync(gainfo.No, DeviceTaskEnumType.Add, DeviceTaskSourceEnumType.Migration);
|
await _devicePermissionService.GenerateDeviceTasksAsync(gainfo.No, DeviceTaskEnumType.Add, "人员迁移生成");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -175,7 +175,7 @@ public class GainfoUpdateService : IGainfoUpdateService
|
|||||||
{
|
{
|
||||||
await _dbContext.InsertAsync(info);
|
await _dbContext.InsertAsync(info);
|
||||||
await _identityUserSyncService.SyncAccountAsync(info.Code, info.Name, info.IdNo, info.Factory);
|
await _identityUserSyncService.SyncAccountAsync(info.Code, info.Name, info.IdNo, info.Factory);
|
||||||
}, new List<string> { info.No });
|
}, new List<string> { info.No }, "入职生成");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -283,7 +283,7 @@ public class GainfoUpdateService : IGainfoUpdateService
|
|||||||
}).Where(x => x.Code == item.ename).ExecuteCommandAsync();
|
}).Where(x => x.Code == item.ename).ExecuteCommandAsync();
|
||||||
|
|
||||||
await _identityUserSyncService.SyncAccountAsync(gainfo.Code, gainfo.Name, gainfo.IdNo, factory);
|
await _identityUserSyncService.SyncAccountAsync(gainfo.Code, gainfo.Name, gainfo.IdNo, factory);
|
||||||
}, new List<string> { gainfo.No });
|
}, new List<string> { gainfo.No }, "人员数据变更");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -307,7 +307,7 @@ public class GainfoUpdateService : IGainfoUpdateService
|
|||||||
|
|
||||||
gainfo.Id = gainfo.IdentityUserId;
|
gainfo.Id = gainfo.IdentityUserId;
|
||||||
await _dbContext.DeleteReallyAsync(gainfo);
|
await _dbContext.DeleteReallyAsync(gainfo);
|
||||||
}, new List<string> { gainfo.No });
|
}, new List<string> { gainfo.No }, "人员离职生成");
|
||||||
|
|
||||||
await _dbContext.Client.Ado.CommitTranAsync();
|
await _dbContext.Client.Ado.CommitTranAsync();
|
||||||
}
|
}
|
||||||
@@ -420,7 +420,7 @@ public class GainfoUpdateService : IGainfoUpdateService
|
|||||||
var native = GetNative(person.ZZ_SFZH);
|
var native = GetNative(person.ZZ_SFZH);
|
||||||
var sex = person.GESCH == "2" ? "F" : "M";
|
var sex = person.GESCH == "2" ? "F" : "M";
|
||||||
|
|
||||||
person.ZZ_SFZH = person.ZZ_SFZH?.TrimStart();
|
person.ZZ_SFZH = person.ZZ_SFZH.TrimStart();
|
||||||
GainfoSapEntity o = new()
|
GainfoSapEntity o = new()
|
||||||
{
|
{
|
||||||
gname = person.NAME,
|
gname = person.NAME,
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ public class SapBusinessTripService : ISapBusinessTripService
|
|||||||
await _dbContext.UpdateAsync(todayTripInfo);
|
await _dbContext.UpdateAsync(todayTripInfo);
|
||||||
|
|
||||||
//下发
|
//下发
|
||||||
await _gainfoPermissionService.ResetPermissionsAsync(gainfo.No, DeviceTaskEnumType.Add, deviceCodes);
|
await _gainfoPermissionService.ResetPermissionsAsync(gainfo.No, DeviceTaskEnumType.Add, deviceCodes, "出差昨天今天都有");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -120,7 +120,7 @@ public class SapBusinessTripService : ISapBusinessTripService
|
|||||||
.ExecuteCommandAsync();
|
.ExecuteCommandAsync();
|
||||||
|
|
||||||
await _dbContext.UpdateAsync(yesterdayTripInfo);
|
await _dbContext.UpdateAsync(yesterdayTripInfo);
|
||||||
await _gainfoPermissionService.ResetPermissionsAsync(gainfo.No, DeviceTaskEnumType.Delete, deviceCodes);
|
await _gainfoPermissionService.ResetPermissionsAsync(gainfo.No, DeviceTaskEnumType.Delete, deviceCodes, "出差昨天有今天无");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (yesterdayTripInfo == null)
|
if (yesterdayTripInfo == null)
|
||||||
@@ -149,7 +149,7 @@ public class SapBusinessTripService : ISapBusinessTripService
|
|||||||
todayTripInfo.Status = BusinessTripStatusEnumType.Generated;
|
todayTripInfo.Status = BusinessTripStatusEnumType.Generated;
|
||||||
await _dbContext.UpdateAsync(todayTripInfo);
|
await _dbContext.UpdateAsync(todayTripInfo);
|
||||||
|
|
||||||
await _gainfoPermissionService.ResetPermissionsAsync(gainfo.No, DeviceTaskEnumType.Add, deviceCodes);
|
await _gainfoPermissionService.ResetPermissionsAsync(gainfo.No, DeviceTaskEnumType.Add, deviceCodes, "出差昨天无今天有");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
|
|||||||
@@ -68,8 +68,8 @@ public class DeviceTaskEntity : SugarBaseEntity, ITenantId, IVersion
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 任务来源
|
/// 任务来源
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)", SqlParameterDbType = typeof(EnumToStringConvert))]
|
[SugarColumn(IsNullable = true, ColumnDataType = "varchar(255)")]
|
||||||
public DeviceTaskSourceEnumType? Source { get; set; }
|
public string Source { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 优先级
|
/// 优先级
|
||||||
|
|||||||
@@ -1,40 +0,0 @@
|
|||||||
using System.ComponentModel;
|
|
||||||
|
|
||||||
namespace Dlhis.Entity.Device.Enums;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 设备任务来源
|
|
||||||
/// </summary>
|
|
||||||
[Description("设备任务来源")]
|
|
||||||
public enum DeviceTaskSourceEnumType
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 手动分配
|
|
||||||
/// </summary>
|
|
||||||
[Description("手动分配")]
|
|
||||||
Manually = 1,
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 上传照片
|
|
||||||
/// </summary>
|
|
||||||
[Description("上传照片")]
|
|
||||||
Photo = 2,
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 数据迁移
|
|
||||||
/// </summary>
|
|
||||||
[Description("数据迁移")]
|
|
||||||
Migration = 3,
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 任务调度
|
|
||||||
/// </summary>
|
|
||||||
[Description("任务调度")]
|
|
||||||
Schedule = 4,
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 预约
|
|
||||||
/// </summary>
|
|
||||||
[Description("预约")]
|
|
||||||
Appointment = 10,
|
|
||||||
}
|
|
||||||
@@ -55,7 +55,7 @@ public class AutoConfirmAppointmentJob : BaseJob
|
|||||||
Type = DeviceTaskEnumType.Add,
|
Type = DeviceTaskEnumType.Add,
|
||||||
Priority = 100,
|
Priority = 100,
|
||||||
TenantId = x.TenantId,
|
TenantId = x.TenantId,
|
||||||
Source = DeviceTaskSourceEnumType.Appointment,
|
Source = "定时任务判断触发车间下发任务",
|
||||||
Version = 0
|
Version = 0
|
||||||
}).ToList());
|
}).ToList());
|
||||||
|
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ public class AutoRemoveAppointmentJob : BaseJob
|
|||||||
Type = DeviceTaskEnumType.Delete,
|
Type = DeviceTaskEnumType.Delete,
|
||||||
Priority = 100,
|
Priority = 100,
|
||||||
TenantId = x.TenantId,
|
TenantId = x.TenantId,
|
||||||
Source = DeviceTaskSourceEnumType.Appointment,
|
Source = "定时任务判断触发移除",
|
||||||
Version = 0
|
Version = 0
|
||||||
}).ToList());
|
}).ToList());
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ public class CreateGetUploadRecordJob : BaseJob
|
|||||||
Type = DeviceTaskEnumType.UploadRecord,
|
Type = DeviceTaskEnumType.UploadRecord,
|
||||||
CancellationId = 0,
|
CancellationId = 0,
|
||||||
Priority = 50,
|
Priority = 50,
|
||||||
Source = DeviceTaskSourceEnumType.Schedule
|
Source = "定时任务创建设备获取通行记录任务"
|
||||||
}).ToList();
|
}).ToList();
|
||||||
|
|
||||||
await DbContext.InsertAsync(tasks);
|
await DbContext.InsertAsync(tasks);
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ public class CreateSyncServerDateTimeJob : BaseJob
|
|||||||
Type = DeviceTaskEnumType.SyncDateTime,
|
Type = DeviceTaskEnumType.SyncDateTime,
|
||||||
DeviceType = x.Type,
|
DeviceType = x.Type,
|
||||||
Priority = 49,
|
Priority = 49,
|
||||||
Source = DeviceTaskSourceEnumType.Schedule
|
Source = "定时任务创建设备同步时间任务"
|
||||||
}).ToList();
|
}).ToList();
|
||||||
|
|
||||||
await DbContext.InsertAsync(tasks);
|
await DbContext.InsertAsync(tasks);
|
||||||
|
|||||||
Reference in New Issue
Block a user