diff --git a/Src/Dlhis.Basic.Api/Dlhis.Basic.Api.csproj b/Src/Dlhis.Basic.Api/Dlhis.Basic.Api.csproj index b41f2841..2ddebbf0 100644 --- a/Src/Dlhis.Basic.Api/Dlhis.Basic.Api.csproj +++ b/Src/Dlhis.Basic.Api/Dlhis.Basic.Api.csproj @@ -10,4 +10,8 @@ + + + + diff --git a/Src/Dlhis.Basic.Api/Request/GainfoPermissionResetRequest.cs b/Src/Dlhis.Basic.Api/Request/GainfoPermissionResetRequest.cs deleted file mode 100644 index c089772f..00000000 --- a/Src/Dlhis.Basic.Api/Request/GainfoPermissionResetRequest.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace Dlhis.Basic.Api.Request; - -public class GainfoPermissionResetRequest -{ - public string UserNo { get; set; } - - /// - /// 是否是离职 - /// - public bool IsLeave { get; set; } -} diff --git a/Src/Dlhis.Basic/Organization/Request/GainfoPermissionResetRequest.cs b/Src/Dlhis.Basic/Organization/Request/GainfoPermissionResetRequest.cs deleted file mode 100644 index b92bb469..00000000 --- a/Src/Dlhis.Basic/Organization/Request/GainfoPermissionResetRequest.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace Dlhis.Basic.Organization.Request; - -public class GainfoPermissionResetRequest -{ - /// - /// 档案号 - /// - [Required] - public string UserNo { get; set; } - - /// - /// 是否是离职 - /// - public bool IsLeave { get; set; } -} diff --git a/Src/Dlhis.Basic/Organization/Services/IGainfoPermissionService.cs b/Src/Dlhis.Basic/Organization/Services/IGainfoPermissionService.cs index e2fa9f2e..a5f6d054 100644 --- a/Src/Dlhis.Basic/Organization/Services/IGainfoPermissionService.cs +++ b/Src/Dlhis.Basic/Organization/Services/IGainfoPermissionService.cs @@ -2,6 +2,7 @@ using Dlhis.Basic.Organization.Request; using Dlhis.Basic.Organization.Response; using Dlhis.Basic.Places.Response; +using Dlhis.Entity.Device.Enums; using Kurisu.AspNetCore.DataAccess.Dto; namespace Dlhis.Basic.Organization.Services; @@ -16,5 +17,5 @@ public interface IGainfoPermissionService : IScopeDependency Task> GetAssignGroupAsync(string userNo); - Task ResetPermissionsAsync(GainfoPermissionResetRequest request); -} + Task ResetPermissionsAsync(string userNo, DeviceTaskEnumType type); +} \ No newline at end of file diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissionService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissionService.cs index 89cec74a..7a379f8d 100644 --- a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissionService.cs +++ b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissionService.cs @@ -143,25 +143,31 @@ public class GainfoPermissionService : IGainfoPermissionService } - public async Task ResetPermissionsAsync(GainfoPermissionResetRequest request) + public async Task ResetPermissionsAsync(string userNo, DeviceTaskEnumType type) { var gainfo = await _dbContext.Queryable() - .Where(x => x.No == request.UserNo) + .Where(x => x.No == userNo) .SingleAsync(); - if (gainfo == null && request.IsLeave) + + var msg = gainfo == null ? "不存在职数据" : string.Empty; + + //如果找不到就为离职人员 + if (gainfo == null) { gainfo = await _dbContext.Queryable().AS("GainfoLeave") - .Where(x => x.No == request.UserNo) + .Where(x => x.No == userNo) .SingleAsync(); if (gainfo != null) { gainfo.Id = gainfo.IdentityUserId; } + + msg += gainfo == null ? "并且不存在离职数据" : string.Empty; } - gainfo.ThrowIfNull("档案数据不存在"); + gainfo.ThrowIfNull($"档案数据有误:{msg}"); //获取人员的设备权限 var deviceCodes = await _devicePermissionService.GetAssignDeviceCodesAsync(gainfo!.Code); @@ -173,10 +179,8 @@ public class GainfoPermissionService : IGainfoPermissionService DeviceUniqueNo = x.UniqueNo, Status = DeviceTaskStatusEnumType.Wait, Version = 0, - UserNo = request.UserNo, - Type = request.IsLeave - ? DeviceTaskEnumType.Delete - : DeviceTaskEnumType.Add, + UserNo = userNo, + Type = type, DeviceType = x.Type, TenantId = x.TenantId, Priority = 10, diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs index 2943a9dc..156bca6f 100644 --- a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs +++ b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs @@ -252,11 +252,6 @@ public class GainfoService : IGainfoService (outsource == null).ThrowIfTrue("非外包人员不可手动离职"); } - await _gainfoPermissionService.ResetPermissionsAsync(new GainfoPermissionResetRequest - { - UserNo = gainfo.No, - IsLeave = true - }); //先写入离职表 gainfo.IdentityUserId = (int)gainfo.Id; //记录原始id @@ -271,6 +266,8 @@ public class GainfoService : IGainfoService gainfo.Id = gainfo.IdentityUserId; await _dbContext.DeleteReallyAsync(gainfo); + + await _gainfoPermissionService.ResetPermissionsAsync(gainfo.No, DeviceTaskEnumType.Delete); } public async Task SetSecurityWhiteAsync(string userCode) diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/SapBusinessTripService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/SapBusinessTripService.cs index 77e259c4..7a94b2b2 100644 --- a/Src/Dlhis.Basic/Organization/Services/Implements/SapBusinessTripService.cs +++ b/Src/Dlhis.Basic/Organization/Services/Implements/SapBusinessTripService.cs @@ -18,17 +18,17 @@ public class SapBusinessTripService : ISapBusinessTripService { private readonly IJinkoJipApi _jinkoJipApi; private readonly IDbContext _dbContext; - private readonly IDevicePermissionService _devicePermissionService; + private readonly IGainfoPermissionService _gainfoPermissionService; private readonly ILogger _logger; public SapBusinessTripService(IJinkoJipApi jinkoJipApi, IDbContext dbContext, - IDevicePermissionService devicePermissionService, + IGainfoPermissionService gainfoPermissionService, ILogger logger) { _jinkoJipApi = jinkoJipApi; _dbContext = dbContext; - _devicePermissionService = devicePermissionService; + _gainfoPermissionService = gainfoPermissionService; _logger = logger; } @@ -96,42 +96,57 @@ public class SapBusinessTripService : ISapBusinessTripService { todayTripInfo.Status = BusinessTripStatusEnumType.Generated; await _dbContext.UpdateAsync(todayTripInfo); - continue; + + //下发 } - await _devicePermissionService.GenerateDeviceTasksAsync(async () => + if (yesterdayTripInfo != null) { - if (yesterdayTripInfo != null) - { - yesterdayTripInfo.Status = BusinessTripStatusEnumType.Deleted; - await _dbContext.Updateable() - .SetColumns(x => x.IsDeleted == true) + //todayTripInfo == null + yesterdayTripInfo.Status = BusinessTripStatusEnumType.Deleted; + await _dbContext.Updateable() + .SetColumns(x => x.IsDeleted == true) + .Where(x => x.AssignType == AssignTypeEnumType.User) + .Where(x => x.AssignValue == gainfo.No) + .Where(x => x.UniqueType == DeviceAssignmentTypeEnumType.Group) + .Where(x => x.UniqueValue == tripGroup.Code) + .Where(x => x.Type == tripGroup.Type) + .Where(x => x.TenantId == factory) + .ExecuteCommandAsync(); + + await _dbContext.UpdateAsync(yesterdayTripInfo); + + await _gainfoPermissionService.ResetPermissionsAsync(gainfo.No, DeviceTaskEnumType.Delete); + } + + if (yesterdayTripInfo == null) + { + //todayTripInfo != null + if (!await _dbContext.Queryable() .Where(x => x.AssignType == AssignTypeEnumType.User) .Where(x => x.AssignValue == gainfo.No) .Where(x => x.UniqueType == DeviceAssignmentTypeEnumType.Group) .Where(x => x.UniqueValue == tripGroup.Code) .Where(x => x.Type == tripGroup.Type) .Where(x => x.TenantId == factory) - .ExecuteCommandAsync(); - await _dbContext.UpdateAsync(yesterdayTripInfo); - } - - if (yesterdayTripInfo == null) + .AnyAsync()) { - todayTripInfo.Status = BusinessTripStatusEnumType.Generated; await _dbContext.InsertAsync(new DevicePermissionEntity { AssignType = AssignTypeEnumType.User, AssignValue = gainfo.No, UniqueType = DeviceAssignmentTypeEnumType.Group, UniqueValue = tripGroup.Code, - TenantId = factory, Type = tripGroup.Type, - IsDeleted = false + TenantId = factory }); - await _dbContext.UpdateAsync(todayTripInfo); } - }, new List { gainfo.No }); + + todayTripInfo.Status = BusinessTripStatusEnumType.Generated; + await _dbContext.UpdateAsync(todayTripInfo); + + await _gainfoPermissionService.ResetPermissionsAsync(gainfo.No, DeviceTaskEnumType.Add); + } } catch (Exception e) {