fix 任务生成描述

This commit is contained in:
2024-12-18 11:53:32 +08:00
parent 7cfd0b7365
commit df299bb019
27 changed files with 151 additions and 218 deletions

View File

@@ -109,7 +109,7 @@ public class AppointmentAreaService : IAppointmentAreaService
Status = DeviceTaskStatusEnumType.Wait,
Version = 0,
CancellationId = 0,
Source = DeviceTaskSourceEnumType.Appointment,
Source = "预约区域和设备组关系变更生成",
Priority = 99
}));
@@ -122,7 +122,7 @@ public class AppointmentAreaService : IAppointmentAreaService
Status = DeviceTaskStatusEnumType.Wait,
Version = 0,
CancellationId = 0,
Source = DeviceTaskSourceEnumType.Appointment,
Source = "预约区域和设备组关系变更生成",
Priority = 99
}));
}

View File

@@ -114,7 +114,7 @@ public class AppointmentService : IAppointmentService
Face = request.Base64Image
});
await GenerateDeviceTasksAsync(detail, false, DeviceTaskEnumType.Add);
await GenerateDeviceTasksAsync(detail, false, DeviceTaskEnumType.Add, "访客门岗认证生成");
try
{
@@ -189,7 +189,7 @@ public class AppointmentService : IAppointmentService
detail.FocusLeaveDateTime = DateTime.Now;
detail.Remark += "强制离场原因:" + reason;
await GenerateDeviceTasksAsync(detail, true, DeviceTaskEnumType.Delete);
await GenerateDeviceTasksAsync(detail, true, DeviceTaskEnumType.Delete, "访客手动强制离场");
}
public async Task<Pagination<AppointmentDetailResponse>> GetRecordPageByIdNoAsync(AppointmentIdNoPageRequest request)
@@ -306,17 +306,17 @@ public class AppointmentService : IAppointmentService
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();
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
@@ -337,11 +337,10 @@ public class AppointmentService : IAppointmentService
Type = deviceTaskType,
Priority = 100,
TenantId = x.TenantId,
Source = DeviceTaskSourceEnumType.Appointment,
Source = source,
Version = 0
}).ToList());
}
}
private static IEnumerable<string> GetValidAreaCodes(VisitorAppointmentDetailEntity detail, bool withWorkplace)
{

View File

@@ -46,9 +46,9 @@ public class DevicePermissionsController : ControllerBase
[AssignPermissionLimit]
[Transactional]
[CrossTenant]
public async Task AssignToUniqueAsync(DevicePermissionsAssignToDeviceRequest request)
public async Task<DevicePermissionAssignResponse> AssignToUniqueAsync(DevicePermissionsAssignToDeviceRequest request)
{
await _devicePermissionService.AssignToUniqueAsync(request);
return await _devicePermissionService.AssignToUniqueAsync(request);
}
[AllowAnonymous]
@@ -98,13 +98,6 @@ public class DevicePermissionsController : ControllerBase
[CrossTenant]
public async Task ResetGainfoPageByDeviceAsync(DeviceGainfoReset request)
{
await _devicePermissionService.ResetGainfoPageByDeviceAsync(request);
}
[HttpGet("userPermissionCodes")]
[IgnoreTenant]
public async Task<List<Guid>> GetAssignDeviceCodesAsync(string userCode)
{
return await _devicePermissionService.GetAssignDeviceCodesAsync(userCode);
await _devicePermissionService.ResetGainfoPageByDeviceAsync(request.Code);
}
}

View File

@@ -14,7 +14,7 @@ public interface IDevicePermissionAnalyzeService : IScopeDependency
{
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);

View File

@@ -1,7 +1,6 @@
using Dlhis.Basic.Device.Dtos;
using Dlhis.Basic.Device.Request;
using Dlhis.Basic.Device.Response;
using Dlhis.Basic.Organization.Dto;
using Dlhis.Entity.Device.Enums;
using Kurisu.AspNetCore.DataAccess.Dto;
@@ -36,21 +35,21 @@ public interface IDevicePermissionService : IScopeDependency
/// <param name="taskType"></param>
/// <param name="source"></param>
/// <returns></returns>
Task GenerateDeviceTasksAsync(string userNo, DeviceTaskEnumType taskType, DeviceTaskSourceEnumType source);
Task GenerateDeviceTasksAsync(string userNo, DeviceTaskEnumType taskType, string source);
/// <summary>
/// 获取用户所有设备权限
/// </summary>
/// <param name="userCode"></param>
/// <param name="userNo"></param>
/// <returns></returns>
Task<List<Guid>> GetAssignDeviceCodesAsync(string userCode);
Task<List<Guid>> GetUserDeviceCodesByNoAsync(string userNo);
Task<Pagination<DeviceGainfoResponse>> GetGainfoPageByDeviceAsync(DeviceWithGainfoRequest request);
/// <summary>
/// 重新下载设备中所有人员
/// </summary>
/// <param name="request"></param>
/// <param name="code"></param>
/// <returns></returns>
Task ResetGainfoPageByDeviceAsync(DeviceGainfoReset request);
Task ResetGainfoPageByDeviceAsync(Guid code);
}

View File

@@ -15,5 +15,5 @@ public interface IDeviceTimePeriodService : IScopeDependency
Task DeleteCardTypeAsync(DeviceTimePeriodDeleteCardTypeRequest request);
Task GenerateDeviceTimePeriodTasksAsync(Func<Task> func);
Task GenerateDeviceTimePeriodTasksAsync(Func<Task> func, string source);
}

View File

@@ -35,6 +35,8 @@ public abstract class BasePermissionAnalyzeService : IPermissionAnalyzeService
public async Task<DevicePermissionAssignResponse> AnalyzeAsync(DevicePermissionSaveRequest request)
{
var source = request.ToJson();
var tasksToAdd = 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)
: new Dictionary<string, List<TenantAssignTypeDeviceCode>>();
foreach (var gainfoNo in gainfoNos)
{
IEnumerable<DeviceEntity> currentDevicesToDelete = devicesToDelete;
@@ -83,7 +84,7 @@ public abstract class BasePermissionAnalyzeService : IPermissionAnalyzeService
Version = 0,
ResultMessage = null,
CancellationId = 0,
Source = DeviceTaskSourceEnumType.Manually,
Source = source,
Priority = 0,
TenantId = x.TenantId,
}).ToList());
@@ -99,7 +100,7 @@ public abstract class BasePermissionAnalyzeService : IPermissionAnalyzeService
Version = 0,
ResultMessage = null,
CancellationId = 0,
Source = DeviceTaskSourceEnumType.Manually,
Source = source,
Priority = 0,
TenantId = x.TenantId,
}).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)
{
@@ -167,15 +179,6 @@ 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()
{

View File

@@ -196,14 +196,13 @@ public class DeviceGroupService : IDeviceGroupService
.Where(x => deviceGroupCodes.Contains(x.UniqueValue))
.ToListAsync();
if (!dps.Any())
if (dps.IsEmpty())
{
return new DevicePermissionAssignResponse(0, 0);
}
var gainfoNos = await GetPermissionUserNosAsync(dps);
var userTenantDeviceCodes = codesToDelete.IsPresent() && dps.Exists(x => x.AssignType != AssignTypeEnumType.Tenant)
? await _devicePermissionAnalyzeService.GetUserAssignDeviceCodesWithTypeInTenantAsync(gainfoNos)
: new Dictionary<string, List<TenantAssignTypeDeviceCode>>();
@@ -227,13 +226,11 @@ public class DeviceGroupService : IDeviceGroupService
Version = 0,
ResultMessage = null,
CancellationId = 0,
Source = DeviceTaskSourceEnumType.Manually,
Source = "人员分组分配",
Priority = 0,
TenantId = x.TenantId,
TenantId = x.TenantId
}).ToList());
if (userTenantDeviceCodes.Any())
{
if (userTenantDeviceCodes.TryGetValue(gainfoNo, out var permissions))
{
foreach (var permission in permissions)
@@ -263,13 +260,12 @@ public class DeviceGroupService : IDeviceGroupService
Version = 0,
ResultMessage = null,
CancellationId = 0,
Source = DeviceTaskSourceEnumType.Manually,
Source = "人员分组分配",
Priority = 0,
TenantId = x.TenantId,
}).ToList());
}
}
}
await _dbContext.InsertAsync(tasksToAdd);
await _dbContext.InsertAsync(tasksToDelete);

View File

@@ -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);
@@ -130,7 +130,7 @@ public class DevicePermissionAnalyzeService : IDevicePermissionAnalyzeService
UserNo = userNo,
Version = 0,
TenantId = tenant,
Source = DeviceTaskSourceEnumType.Manually
Source = source
}));
addItems.ForEach(x => waitAddTasks.Add(new DeviceTaskEntity
@@ -142,7 +142,7 @@ public class DevicePermissionAnalyzeService : IDevicePermissionAnalyzeService
UserNo = userNo,
Version = 0,
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();
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();

View File

@@ -101,8 +101,8 @@ public class DevicePermissionService : IDevicePermissionService
Status = DeviceTaskStatusEnumType.Wait,
Version = 0,
ResultMessage = null,
CancellationId = 20,
Source = DeviceTaskSourceEnumType.Manually,
CancellationId = 0,
Source = "人员分配到设备unique",
Priority = 0,
TenantId = currentTenantId,
}));
@@ -113,7 +113,9 @@ public class DevicePermissionService : IDevicePermissionService
{
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();
@@ -130,7 +132,7 @@ public class DevicePermissionService : IDevicePermissionService
Version = 0,
ResultMessage = null,
CancellationId = 20,
Source = DeviceTaskSourceEnumType.Manually,
Source = "人员分配到设备unique",
Priority = 0,
TenantId = currentTenantId
});
@@ -208,7 +210,7 @@ public class DevicePermissionService : IDevicePermissionService
Version = 0,
ResultMessage = null,
CancellationId = 0,
Source = DeviceTaskSourceEnumType.Manually,
Source = "人员分配到设备import",
Priority = 0,
TenantId = device.TenantId,
}).ToList();
@@ -274,8 +276,7 @@ public class DevicePermissionService : IDevicePermissionService
var arr = permission.AssignValue.Split(":");
var tenantId = arr.First();
var currentDepartmentNo = arr.Last();
var departmentNos = new List<string> { currentDepartmentNo };
DepartmentRecursionGetNext(currentDepartmentNo, departments, departmentNos);
var departmentNos = RecursionHelper.HandlerDepartmentNextCodes(currentDepartmentNo, departments);
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 />
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("设备不存在");
var departments = await _dbContext.Queryable<DepartmentEntity>().ToListAsync();
@@ -363,8 +364,8 @@ public class DevicePermissionService : IDevicePermissionService
break;
case AssignTypeEnumType.Group:
{
var code = Guid.Parse(permission.AssignValue);
gainfoNos.AddRange(await _dbContext.Queryable<GainfoGroupEntity>().Where(x => x.Code == code)
var groupCode = Guid.Parse(permission.AssignValue);
gainfoNos.AddRange(await _dbContext.Queryable<GainfoGroupEntity>().Where(x => x.Code == groupCode)
.LeftJoin<GainfoGroupRelationshipEntity>((a, b) => a.Code == b.GroupCode)
.LeftJoin<GainfoEntity>((a, b, c) => b.UserNo == c.No)
.Select((a, b, c) => c.No).ToListAsync());
@@ -376,8 +377,7 @@ public class DevicePermissionService : IDevicePermissionService
var arr = permission.AssignValue.Split(":");
var tenantId = arr.First();
var currentDepartmentNo = arr.Last();
var departmentNos = new List<string> { currentDepartmentNo };
DepartmentRecursionGetNext(currentDepartmentNo, departments, departmentNos);
var departmentNos = RecursionHelper.HandlerDepartmentNextCodes(currentDepartmentNo, departments);
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,
Version = 0,
TenantId = device.TenantId,
Source = DeviceTaskSourceEnumType.Manually
Source = "重新生成设备下的人员"
}).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);
foreach (var item in next)
{
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 deviceCodes = await GetUserDeviceCodesByNoAsync(userNo);
if (deviceCodes.IsEmpty()) return;
var devices = await _dbContext.Queryable<DeviceEntity>()
.Where(x => x.Enable)
.Where(x => deviceCodes.Contains(x.Code))
.ToListAsync();
var tasks = devices.Select(x => new DeviceTaskEntity
await _dbContext.InsertAsync(devices.Select(x => new DeviceTaskEntity
{
DeviceUniqueNo = x.UniqueNo,
Status = DeviceTaskStatusEnumType.Wait,
@@ -440,20 +430,17 @@ public class DevicePermissionService : IDevicePermissionService
Version = 0,
TenantId = x.TenantId,
Source = source
}).ToList();
await _dbContext.InsertAsync(tasks);
}).ToList());
}
/// <summary>
/// 获取用户所有设备权限
/// </summary>
/// <param name="userCode"></param>
/// <param name="userNo"></param>
/// <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 });
return result.First().Value.SelectMany(x => x.AssignTypes.SelectMany(p => p.Codes)).Distinct().ToList();
}

View File

@@ -123,7 +123,7 @@ public class DeviceService : IDeviceService
}
await GenerateUploadRecordLogForBeginTimeAsync(entity);
});
}, "设备启用/关闭时段码功能");
}
/// <summary>

View File

@@ -79,7 +79,7 @@ public class DeviceTimePeriodService : IDeviceTimePeriodService
await _dbContext.UpdateAsync(entity);
}
});
}, "时段码变更");
}
/// <inheritdoc />
@@ -121,11 +121,11 @@ public class DeviceTimePeriodService : IDeviceTimePeriodService
entity.ThrowIfNull("数据不存在");
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();
@@ -159,9 +159,9 @@ public class DeviceTimePeriodService : IDeviceTimePeriodService
Status = DeviceTaskStatusEnumType.Wait,
Version = 0,
CancellationId = 0,
Source = DeviceTaskSourceEnumType.Manually,
Source = source,
Priority = 90,
TenantId = device.TenantId,
TenantId = device.TenantId
});
continue;
@@ -192,7 +192,7 @@ public class DeviceTimePeriodService : IDeviceTimePeriodService
Status = DeviceTaskStatusEnumType.Wait,
Version = 0,
CancellationId = 0,
Source = DeviceTaskSourceEnumType.Manually,
Source = source,
Priority = 90,
TenantId = device.TenantId
});

View File

@@ -55,6 +55,6 @@ public class GainfoPermissionsController : ControllerBase
[HttpPost("reset")]
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手动操作重置");
}
}

View File

@@ -13,5 +13,5 @@ public interface IGainfoPermissionService : IScopeDependency
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);
}

View File

@@ -137,7 +137,7 @@ public class GainfoFaceService : IGainfoFaceService
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)
@@ -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)
@@ -309,7 +309,7 @@ public class GainfoFaceService : IGainfoFaceService
}
//生成任务
await _devicePermissionService.GenerateDeviceTasksAsync(gainfo.No, taskType, DeviceTaskSourceEnumType.Photo);
await _devicePermissionService.GenerateDeviceTasksAsync(gainfo.No, taskType, "照片上传生成");
}
}

View File

@@ -190,7 +190,7 @@ public class GainfoGroupService : IGainfoGroupService
Version = 0,
ResultMessage = null,
CancellationId = 0,
Source = DeviceTaskSourceEnumType.Manually,
Source = "手动操作人员分组关系",
Priority = 0,
TenantId = device.TenantId
});
@@ -210,7 +210,7 @@ public class GainfoGroupService : IGainfoGroupService
Version = 0,
ResultMessage = null,
CancellationId = 0,
Source = DeviceTaskSourceEnumType.Manually,
Source = "手动操作人员分组关系",
Priority = 0,
TenantId = device.TenantId
});

View File

@@ -148,7 +148,7 @@ public class GainfoOutsourceService : IGainfoOutsourceService
await _gainfoService.ResignAsync(new GainfoResignRequest
{
Id = outsource.Id,
Reason = $"{setting.NoRecordAutoResignOutsourceDays}天无打开记录",
Reason = $"{setting.NoRecordAutoResignOutsourceDays}天无通行记录",
Date = DateTime.Now,
IsOutsource = true
});

View File

@@ -1,10 +1,8 @@
using Dlhis.Basic.Device.Dtos;
using Dlhis.Basic.Device.Request;
using Dlhis.Basic.Device.Response;
using Dlhis.Basic.Device.Services;
using Dlhis.Basic.Organization.Request;
using Dlhis.Basic.Organization.Response;
using Dlhis.Basic.Places.Response;
using Dlhis.Entity.Basic.Entity;
using Dlhis.Entity.Device.Entities;
using Dlhis.Entity.Device.Enums;
@@ -18,13 +16,11 @@ namespace Dlhis.Basic.Organization.Services.Implements;
public class GainfoPermissionService : IGainfoPermissionService
{
private readonly IGainfoStore _gainfoStore;
private readonly IDevicePermissionAnalyzeService _devicePermissionAnalyzeService;
private readonly IDbContext _dbContext;
public GainfoPermissionService(IGainfoStore gainfoStore, IDevicePermissionAnalyzeService devicePermissionAnalyzeService, IDbContext dbContext)
public GainfoPermissionService(IDevicePermissionAnalyzeService devicePermissionAnalyzeService, IDbContext dbContext)
{
_gainfoStore = gainfoStore;
_devicePermissionAnalyzeService = devicePermissionAnalyzeService;
_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>()
.Where(x => x.No == userNo)
@@ -193,7 +189,7 @@ public class GainfoPermissionService : IGainfoPermissionService
DeviceType = x.Type,
TenantId = x.TenantId,
Priority = 10,
Source = DeviceTaskSourceEnumType.Manually,
Source = source,
}).ToList();
await _dbContext.InsertAsync(tasks);

View File

@@ -254,7 +254,7 @@ public class GainfoService : IGainfoService
(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<DevicePermissionEntity>().Where(x => x.AssignType == AssignTypeEnumType.User && x.AssignValue == gainfo.No).ExecuteCommandAsync();
@@ -288,7 +288,7 @@ public class GainfoService : IGainfoService
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)
.Where((x, xt) => xt.Name == "大华人脸机")
@@ -306,7 +306,7 @@ public class GainfoService : IGainfoService
Version = 0,
ResultMessage = null,
CancellationId = 0,
Source = DeviceTaskSourceEnumType.Manually,
Source = "安全级别提高",
Priority = 60,
TenantId = x.TenantId
}).ToList());
@@ -451,7 +451,7 @@ public class GainfoService : IGainfoService
//海宁触发权限下发
if (gainfo.Workplace == "5")
{
await _devicePermissionService.GenerateDeviceTasksAsync(gainfo.No, DeviceTaskEnumType.Add, DeviceTaskSourceEnumType.Migration);
await _devicePermissionService.GenerateDeviceTasksAsync(gainfo.No, DeviceTaskEnumType.Add, "人员迁移生成");
}
}
}

View File

@@ -175,7 +175,7 @@ public class GainfoUpdateService : IGainfoUpdateService
{
await _dbContext.InsertAsync(info);
await _identityUserSyncService.SyncAccountAsync(info.Code, info.Name, info.IdNo, info.Factory);
}, new List<string> { info.No });
}, new List<string> { info.No }, "入职生成");
}
else
{
@@ -283,7 +283,7 @@ public class GainfoUpdateService : IGainfoUpdateService
}).Where(x => x.Code == item.ename).ExecuteCommandAsync();
await _identityUserSyncService.SyncAccountAsync(gainfo.Code, gainfo.Name, gainfo.IdNo, factory);
}, new List<string> { gainfo.No });
}, new List<string> { gainfo.No }, "人员数据变更");
}
else
{
@@ -307,7 +307,7 @@ public class GainfoUpdateService : IGainfoUpdateService
gainfo.Id = gainfo.IdentityUserId;
await _dbContext.DeleteReallyAsync(gainfo);
}, new List<string> { gainfo.No });
}, new List<string> { gainfo.No }, "人员离职生成");
await _dbContext.Client.Ado.CommitTranAsync();
}
@@ -420,7 +420,7 @@ public class GainfoUpdateService : IGainfoUpdateService
var native = GetNative(person.ZZ_SFZH);
var sex = person.GESCH == "2" ? "F" : "M";
person.ZZ_SFZH = person.ZZ_SFZH?.TrimStart();
person.ZZ_SFZH = person.ZZ_SFZH.TrimStart();
GainfoSapEntity o = new()
{
gname = person.NAME,

View File

@@ -101,7 +101,7 @@ public class SapBusinessTripService : ISapBusinessTripService
await _dbContext.UpdateAsync(todayTripInfo);
//下发
await _gainfoPermissionService.ResetPermissionsAsync(gainfo.No, DeviceTaskEnumType.Add, deviceCodes);
await _gainfoPermissionService.ResetPermissionsAsync(gainfo.No, DeviceTaskEnumType.Add, deviceCodes, "出差昨天今天都有");
continue;
}
@@ -120,7 +120,7 @@ public class SapBusinessTripService : ISapBusinessTripService
.ExecuteCommandAsync();
await _dbContext.UpdateAsync(yesterdayTripInfo);
await _gainfoPermissionService.ResetPermissionsAsync(gainfo.No, DeviceTaskEnumType.Delete, deviceCodes);
await _gainfoPermissionService.ResetPermissionsAsync(gainfo.No, DeviceTaskEnumType.Delete, deviceCodes, "出差昨天有今天无");
}
if (yesterdayTripInfo == null)
@@ -149,7 +149,7 @@ public class SapBusinessTripService : ISapBusinessTripService
todayTripInfo.Status = BusinessTripStatusEnumType.Generated;
await _dbContext.UpdateAsync(todayTripInfo);
await _gainfoPermissionService.ResetPermissionsAsync(gainfo.No, DeviceTaskEnumType.Add, deviceCodes);
await _gainfoPermissionService.ResetPermissionsAsync(gainfo.No, DeviceTaskEnumType.Add, deviceCodes, "出差昨天无今天有");
}
}
catch (Exception e)

View File

@@ -68,8 +68,8 @@ public class DeviceTaskEntity : SugarBaseEntity, ITenantId, IVersion
/// <summary>
/// 任务来源
/// </summary>
[SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)", SqlParameterDbType = typeof(EnumToStringConvert))]
public DeviceTaskSourceEnumType? Source { get; set; }
[SugarColumn(IsNullable = true, ColumnDataType = "varchar(255)")]
public string Source { get; set; }
/// <summary>
/// 优先级

View File

@@ -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,
}

View File

@@ -55,7 +55,7 @@ public class AutoConfirmAppointmentJob : BaseJob
Type = DeviceTaskEnumType.Add,
Priority = 100,
TenantId = x.TenantId,
Source = DeviceTaskSourceEnumType.Appointment,
Source = "定时任务判断触发车间下发任务",
Version = 0
}).ToList());

View File

@@ -57,7 +57,7 @@ public class AutoRemoveAppointmentJob : BaseJob
Type = DeviceTaskEnumType.Delete,
Priority = 100,
TenantId = x.TenantId,
Source = DeviceTaskSourceEnumType.Appointment,
Source = "定时任务判断触发移除",
Version = 0
}).ToList());

View File

@@ -39,7 +39,7 @@ public class CreateGetUploadRecordJob : BaseJob
Type = DeviceTaskEnumType.UploadRecord,
CancellationId = 0,
Priority = 50,
Source = DeviceTaskSourceEnumType.Schedule
Source = "定时任务创建设备获取通行记录任务"
}).ToList();
await DbContext.InsertAsync(tasks);

View File

@@ -40,7 +40,7 @@ public class CreateSyncServerDateTimeJob : BaseJob
Type = DeviceTaskEnumType.SyncDateTime,
DeviceType = x.Type,
Priority = 49,
Source = DeviceTaskSourceEnumType.Schedule
Source = "定时任务创建设备同步时间任务"
}).ToList();
await DbContext.InsertAsync(tasks);