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