fix 人员同步,下发任务创建

This commit is contained in:
2024-03-09 18:03:33 +08:00
parent 3bf767281e
commit 3fb820bd2d
17 changed files with 261 additions and 59 deletions

View File

@@ -3,11 +3,15 @@
<PropertyGroup> <PropertyGroup>
<TargetFramework>net6.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable> <Nullable>disable</Nullable>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Kurisu.RemoteCall" Version="0.0.3" /> <PackageReference Include="Kurisu.RemoteCall" Version="0.0.3" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Folder Include="Response\" />
</ItemGroup>
</Project> </Project>

View File

@@ -0,0 +1,14 @@
namespace Dlhis.Basic.Api.Dtos;
public class PermissionUsersInfoDto
{
/// <summary>
/// 拥有权限的用户
/// </summary>
public List<string> UserNos { get; set; }
/// <summary>
/// 用户对应的 [ 厂区--设备Code ]
/// </summary>
public Dictionary<string, List<UserTenantDeviceCodeDto>> PermissionInfos { get; set; }
}

View File

@@ -0,0 +1,14 @@
namespace Dlhis.Basic.Api.Dtos;
public class UserTenantDeviceCodeDto
{
/// <summary>
/// 租户
/// </summary>
public string Tenant { get; set; }
/// <summary>
/// 设备权限
/// </summary>
public List<Guid> Codes { get; set; }
}

View File

@@ -1,4 +1,5 @@
using Kurisu.Core.Result; using Dlhis.Basic.Api.Dtos;
using Kurisu.Core.Result;
using Kurisu.RemoteCall.Attributes; using Kurisu.RemoteCall.Attributes;
namespace Dlhis.Basic.Api; namespace Dlhis.Basic.Api;
@@ -9,4 +10,20 @@ public interface IDevicePermissionApi
[Auth] [Auth]
[Get("/api/devicepermissions/canteen/uniqueNos")] [Get("/api/devicepermissions/canteen/uniqueNos")]
Task<DefaultApiResult<List<string>>> GetCanteenDeviceUniqueNosByUserNoAsync(string userNo); Task<DefaultApiResult<List<string>>> GetCanteenDeviceUniqueNosByUserNoAsync(string userNo);
/// <summary>
/// 获取所有人的权限信息
/// </summary>
/// <returns></returns>
[Get("/api/devicepermissions/all-permission")]
Task<DefaultApiResult<PermissionUsersInfoDto>> GetPermissionUsersInfoAsync();
/// <summary>
/// 重新生成权限
/// </summary>
/// <param name="beforeDto"></param>
/// <returns></returns>
[Post("/api/devicepermissions/re-permission")]
Task<DefaultApiResult<int>> RePermissionUsersInfoAsync(PermissionUsersInfoDto beforeDto);
} }

View File

@@ -1,4 +1,5 @@
using Dlhis.Basic.Device.Request; 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 Kurisu.AspNetCore.DataAccess.SqlSugar.Aop; using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop;
@@ -57,7 +58,7 @@ public class DevicePermissionsController : ControllerBase
/// <summary> /// <summary>
/// 就餐设备唯一号权限 /// 获取就餐设备唯一号权限
/// </summary> /// </summary>
/// <param name="userNo"></param> /// <param name="userNo"></param>
/// <returns></returns> /// <returns></returns>
@@ -67,4 +68,20 @@ public class DevicePermissionsController : ControllerBase
{ {
return await _devicePermissionService.GetCanteenDeviceUniqueNosByUserNoAsync(userNo); return await _devicePermissionService.GetCanteenDeviceUniqueNosByUserNoAsync(userNo);
} }
[AllowAnonymous]
[HttpGet("all-permission")]
[IgnoreTenant]
public async Task<PermissionUsersInfoDto> GetPermissionUsersInfoAsync()
{
return await _devicePermissionService.GetPermissionUsersInfoAsync();
}
[AllowAnonymous]
[IgnoreTenant]
[HttpPost("re-permission")]
public async Task<int> ReGeneratePermissionUsersInfoAsync(PermissionUsersInfoDto beforeDto)
{
return await _devicePermissionService.ReGeneratePermissionUsersInfoAsync(beforeDto);
}
} }

View File

@@ -0,0 +1,15 @@
namespace Dlhis.Basic.Device.Dtos
{
public class PermissionUsersInfoDto
{
/// <summary>
/// 拥有权限的用户
/// </summary>
public List<string> UserNos { get; set; }
/// <summary>
/// 用户对应的 [ 厂区--设备Code ]
/// </summary>
public Dictionary<string, List<UserTenantDeviceCodeDto>> PermissionInfos { get; set; }
}
}

View File

@@ -1,4 +1,5 @@
using Dlhis.Basic.Device.Request; using Dlhis.Basic.Device.Dtos;
using Dlhis.Basic.Device.Request;
using Dlhis.Basic.Device.Response; using Dlhis.Basic.Device.Response;
using Dlhis.Entity.Device.Enums; using Dlhis.Entity.Device.Enums;
using Dlhis.Entity.Sys.Enums; using Dlhis.Entity.Sys.Enums;
@@ -64,4 +65,11 @@ public interface IDevicePermissionService : IScopeDependency
/// <param name="request"></param> /// <param name="request"></param>
/// <returns></returns> /// <returns></returns>
Task<Pagination<AssigmentByCodeResponse>> GetAssigmentByCodeAsync(AssigmentByCodeRequest request); Task<Pagination<AssigmentByCodeResponse>> GetAssigmentByCodeAsync(AssigmentByCodeRequest request);
Task<PermissionUsersInfoDto> GetPermissionUsersInfoAsync();
Task<int> ReGeneratePermissionUsersInfoAsync(PermissionUsersInfoDto beforeDto);
} }

View File

@@ -161,6 +161,97 @@ public class DevicePermissionService : IDevicePermissionService
} }
} }
public async Task<PermissionUsersInfoDto> GetPermissionUsersInfoAsync()
{
//获取所有人的权限
var userNos = await GetPermissionUserNosAsync();
var permissions = await GetAssignDeviceCodesInternalAsync(userNos);
return new PermissionUsersInfoDto
{
UserNos = userNos,
PermissionInfos = permissions
};
}
public async Task<int> ReGeneratePermissionUsersInfoAsync(PermissionUsersInfoDto beforeDto)
{
var userNos = beforeDto.UserNos;
var before = beforeDto.PermissionInfos.ToDictionary(x => x.Key, x => x.Value, StringComparer.OrdinalIgnoreCase);
//获取业务处理后所有人的权限
var nextUserNos = await GetPermissionUserNosAsync();
if (nextUserNos.Any())
userNos = userNos.Concat(nextUserNos).Distinct(StringComparer.OrdinalIgnoreCase).ToList();
var current = await GetAssignDeviceCodesInternalAsync(userNos);
var deivces = await _dbContext.Queryable<DeviceEntity>().ToListAsync();
var waitTasks = new List<DeviceTaskEntity>();
foreach (var userNo in userNos)
{
before.TryGetValue(userNo, out var beforeTenantDeviceCodes);
beforeTenantDeviceCodes ??= new();
current.TryGetValue(userNo, out var currentTenantDeviceCodes);
currentTenantDeviceCodes ??= new();
var tenants = beforeTenantDeviceCodes.Select(x => x.Tenant).Concat(currentTenantDeviceCodes.Select(x => x.Tenant)).Distinct().ToList();
foreach (var tenant in tenants)
{
var currentCodes = currentTenantDeviceCodes.FirstOrDefault(x => x.Tenant == tenant)?.Codes ?? new();
var beforeCodes = beforeTenantDeviceCodes.FirstOrDefault(x => x.Tenant == tenant)?.Codes ?? new();
//被删除
var deletedItems = beforeCodes.Where(x => !currentCodes.Contains(x)).ToList();
//新增
var addItems = currentCodes.Where(x => !beforeCodes.Contains(x)).ToList();
if (!deletedItems.Any() && !addItems.Any())
{
continue;
}
var deviceCodes = deivces.Where(x => deletedItems.Contains(x.Code) || addItems.Contains(x.Code)).Select(x => x.Code).ToList();
deletedItems = deletedItems.Where(x => deviceCodes.Contains(x)).ToList();
addItems = addItems.Where(x => deviceCodes.Contains(x)).ToList();
//下发任务创建
var toDeleted = deletedItems.Select(x => new DeviceTaskEntity
{
DeviceUniqueNo = deivces.First(item => item.Code == x).UniqueNo,
Status = DeviceTaskStatusEnumType.Wait,
Type = DeviceTaskEnumType.Delete,
UserNo = userNo,
Version = 0,
TenantId = tenant,
}).ToList();
var toAdd = addItems.Select(x => new DeviceTaskEntity
{
DeviceUniqueNo = deivces.First(item => item.Code == x).UniqueNo,
Status = DeviceTaskStatusEnumType.Wait,
Type = DeviceTaskEnumType.Add,
UserNo = userNo,
Version = 0,
TenantId = tenant,
}).ToList();
waitTasks.AddRange(toDeleted.Concat(toAdd).ToList());
}
}
if (waitTasks.Any())
{
await _dbContext.InsertAsync(waitTasks);
}
return waitTasks.Count;
}
public async Task GenerateDeviceTasksAsync(string userNo, DeviceTaskEnumType taskType) public async Task GenerateDeviceTasksAsync(string userNo, DeviceTaskEnumType taskType)
{ {
var deviceCodes = await GetAssignDeviceCodesAsync(userNo); var deviceCodes = await GetAssignDeviceCodesAsync(userNo);
@@ -193,7 +284,6 @@ public class DevicePermissionService : IDevicePermissionService
await _dbContext.InsertAsync(tasks); await _dbContext.InsertAsync(tasks);
} }
public async Task<List<string>> GetCanteenDeviceUniqueNosByUserNoAsync(string userNo) public async Task<List<string>> GetCanteenDeviceUniqueNosByUserNoAsync(string userNo)
{ {
var all = await GetAssignDeviceCodesAsync(userNo); var all = await GetAssignDeviceCodesAsync(userNo);
@@ -305,40 +395,6 @@ public class DevicePermissionService : IDevicePermissionService
return userNos.Concat(userNosByGroup).Concat(userNosByDepartment).Concat(userNosByWerk).Distinct().ToList(); return userNos.Concat(userNosByGroup).Concat(userNosByDepartment).Concat(userNosByWerk).Distinct().ToList();
} }
private static List<Guid> GetAssignmentsInternal(
List<DevicePermissionEntity> devicePermissions, List<DeviceGroupEntity> deviceGroups,
DeviceAssignmentTypeEnumType uniqueType, AssignTypeEnumType assignType, string assignValue)
{
var devicePermissionCodes = devicePermissions
.Where(x => x.UniqueType == uniqueType)
.Where(x => x.AssignType == assignType)
.Where(x => x.AssignValue == assignValue)
.Select(x => x.UniqueValue).ToList();
//处理获取设备组的情况,递归到最下级获取设备code
if (uniqueType == DeviceAssignmentTypeEnumType.Group)
{
var tops = deviceGroups.Where(x => !x.PCode.HasValue).ToList();
tops.ForEach(x =>
{
RecursionGetNext(x, deviceGroups, devicePermissionCodes, devicePermissionCodes.Contains(x.Code));
});
}
return devicePermissionCodes.Distinct().ToList();
void RecursionGetNext(DeviceGroupEntity current, List<DeviceGroupEntity> deviceGroups, List<Guid> result, bool add)
{
var next = deviceGroups.Where(x => x.PCode == current.Code).ToList();
foreach (var item in next)
{
if (add) result.Add(item.Code);
RecursionGetNext(item, deviceGroups, result, result.Contains(item.Code));
}
}
}
private static List<UserTenantDeviceCodeDto> GetAssignCodesInternal( private static List<UserTenantDeviceCodeDto> GetAssignCodesInternal(
List<DevicePermissionEntity> devicePermissions, List<DeviceGroupEntity> deviceGroups, List<DevicePermissionEntity> devicePermissions, List<DeviceGroupEntity> deviceGroups,
DeviceAssignmentTypeEnumType uniqueType, AssignTypeEnumType assignType, string assignValue) DeviceAssignmentTypeEnumType uniqueType, AssignTypeEnumType assignType, string assignValue)
@@ -400,7 +456,7 @@ public class DevicePermissionService : IDevicePermissionService
var deviceGroups = await _dbContext.Queryable<DeviceGroupEntity>().ToListAsync(); var deviceGroups = await _dbContext.Queryable<DeviceGroupEntity>().ToListAsync();
var deviceRelationships = await _dbContext.Queryable<DeviceGroupRelationshipEntity>().ToListAsync(); var deviceRelationships = await _dbContext.Queryable<DeviceGroupRelationshipEntity>().ToListAsync();
var result = new Dictionary<string, List<UserTenantDeviceCodeDto>>(gainfos.Count); var result = new Dictionary<string, List<UserTenantDeviceCodeDto>>(gainfos.Count, StringComparer.OrdinalIgnoreCase);
foreach (var gainfo in gainfos) foreach (var gainfo in gainfos)
{ {

View File

@@ -1,4 +1,5 @@
using Dlhis.ScheduledTask.DeviceUploadLog.Request; using Dlhis.Basic.Api;
using Dlhis.ScheduledTask.DeviceUploadLog.Request;
using Dlhis.ScheduledTask.DeviceUploadLog.Response; using Dlhis.ScheduledTask.DeviceUploadLog.Response;
using Dlhis.ScheduledTask.DeviceUploadLog.Services; using Dlhis.ScheduledTask.DeviceUploadLog.Services;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop; using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop;
@@ -17,10 +18,12 @@ namespace Dlhis.ScheduledTask.DeviceUploadLog.Controllers;
public class DeviceUploadLogsController : ControllerBase public class DeviceUploadLogsController : ControllerBase
{ {
private readonly IDeviceUploadLogService _deviceUploadLogService; private readonly IDeviceUploadLogService _deviceUploadLogService;
private readonly IDevicePermissionApi _devicePermissionApi;
public DeviceUploadLogsController(IDeviceUploadLogService deviceUploadLogService) public DeviceUploadLogsController(IDeviceUploadLogService deviceUploadLogService, IDevicePermissionApi devicePermissionApi)
{ {
_deviceUploadLogService = deviceUploadLogService; _deviceUploadLogService = deviceUploadLogService;
_devicePermissionApi = devicePermissionApi;
} }
/// <summary> /// <summary>
@@ -57,4 +60,15 @@ public class DeviceUploadLogsController : ControllerBase
{ {
await _deviceUploadLogService.SetUploadLogsBeginDateTimeAsync(requests); await _deviceUploadLogService.SetUploadLogsBeginDateTimeAsync(requests);
} }
//[HttpPost("try")]
//public async Task<int> Test()
//{
// var dtoResult = await _devicePermissionApi.GetPermissionUsersInfoAsync();
// var dto = dtoResult.Data;
// var rResult = await _devicePermissionApi.RePermissionUsersInfoAsync(dto);
// var r = rResult.Data;
// return r;
//}
} }

View File

@@ -21,9 +21,11 @@
<PackageReference Include="Hangfire.Dashboard.BasicAuthorization" Version="1.0.2" /> <PackageReference Include="Hangfire.Dashboard.BasicAuthorization" Version="1.0.2" />
<PackageReference Include="Hangfire.Redis.StackExchange" Version="1.9.3" /> <PackageReference Include="Hangfire.Redis.StackExchange" Version="1.9.3" />
<PackageReference Include="Kurisu.AspNetCore" Version="0.7.0" /> <PackageReference Include="Kurisu.AspNetCore" Version="0.7.0" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.19.4" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Dlhis.Basic.Api\Dlhis.Basic.Api.csproj" />
<ProjectReference Include="..\Dlhis.Entity\Dlhis.Entity.csproj" /> <ProjectReference Include="..\Dlhis.Entity\Dlhis.Entity.csproj" />
<ProjectReference Include="..\Dlhis.Sys.Api\Dlhis.Sys.Api.csproj" /> <ProjectReference Include="..\Dlhis.Sys.Api\Dlhis.Sys.Api.csproj" />
</ItemGroup> </ItemGroup>

View File

@@ -7,6 +7,7 @@ EXPOSE 80
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src WORKDIR /src
COPY ["Src/Dlhis.ScheduledTask/Dlhis.ScheduledTask.csproj", "Src/Dlhis.ScheduledTask/"] COPY ["Src/Dlhis.ScheduledTask/Dlhis.ScheduledTask.csproj", "Src/Dlhis.ScheduledTask/"]
COPY ["Src/Dlhis.Basic.Api/Dlhis.Basic.Api.csproj", "Src/Dlhis.Basic.Api/"]
COPY ["Src/Dlhis.Entity/Dlhis.Entity.csproj", "Src/Dlhis.Entity/"] COPY ["Src/Dlhis.Entity/Dlhis.Entity.csproj", "Src/Dlhis.Entity/"]
COPY ["Src/Dlhis.Sys.Api/Dlhis.Sys.Api.csproj", "Src/Dlhis.Sys.Api/"] COPY ["Src/Dlhis.Sys.Api/Dlhis.Sys.Api.csproj", "Src/Dlhis.Sys.Api/"]
RUN dotnet restore "Src/Dlhis.ScheduledTask/Dlhis.ScheduledTask.csproj" RUN dotnet restore "Src/Dlhis.ScheduledTask/Dlhis.ScheduledTask.csproj"

View File

@@ -1,9 +1,6 @@
using Kurisu.AspNetCore.Startup; using Kurisu.AspNetCore.Startup;
using Kurisu.AspNetCore.Utils;
using Kurisu.AspNetCore.Utils.Extensions; using Kurisu.AspNetCore.Utils.Extensions;
using Kurisu.Startup; using Kurisu.Startup;
using Microsoft.AspNetCore.DataProtection;
using StackExchange.Redis;
class Program class Program
{ {

View File

@@ -11,6 +11,6 @@
/// <summary> /// <summary>
/// 0离职 /// 0离职
/// </summary> /// </summary>
public int STAT2 { get; set; } public string STAT2 { get; set; }
} }
} }

View File

@@ -10,6 +10,7 @@ using Dlhis.Entity.Basic.Enums;
using Dlhis.Sys.Api; using Dlhis.Sys.Api;
using Dlhis.Sys.Api.Response; using Dlhis.Sys.Api.Response;
using SqlSugar; using SqlSugar;
using Dlhis.Basic.Api;
namespace Dlhis.ScheduledTask.SyncSapInfo.Job; namespace Dlhis.ScheduledTask.SyncSapInfo.Job;
@@ -18,20 +19,27 @@ public class SyncPersonJob
private readonly ILogger _logger; private readonly ILogger _logger;
private readonly IJinkoSapService _jinkoSapService; private readonly IJinkoSapService _jinkoSapService;
private readonly ITenantApi _tenantApi; private readonly ITenantApi _tenantApi;
private readonly IDevicePermissionApi _devicePermissionApi;
private List<PositionEntity> _positions; private List<PositionEntity> _positions;
private List<TenantResponse> _tenants; private List<TenantResponse> _tenants;
private List<SapPersonDepartmentStatus> _departmentChanges;
private List<SapPersonJobStatus> _jobChanges;
public SyncPersonJob(ILogger<SyncPersonJob> logger, IJinkoSapService jinkoSapService, ITenantApi tenantApi) public SyncPersonJob(ILogger<SyncPersonJob> logger, IJinkoSapService jinkoSapService,
ITenantApi tenantApi, IDevicePermissionApi devicePermissionApi)
{ {
_logger = logger; _logger = logger;
_jinkoSapService = jinkoSapService; _jinkoSapService = jinkoSapService;
_tenantApi = tenantApi; _tenantApi = tenantApi;
_devicePermissionApi = devicePermissionApi;
} }
public async Task RunAsync() public async Task RunAsync()
{ {
var personResp = await _jinkoSapService.GetPersonsAsync(); var personResp = await _jinkoSapService.GetPersonsAsync();
var persons = personResp.Person.Items; var persons = personResp.Person.Items;
_departmentChanges = personResp.DepartmentInfo.Items;
_jobChanges = personResp.JobStatusInfo.Items;
_logger.LogInformation("获取SAP人员数量为:{count}", persons.Count); _logger.LogInformation("获取SAP人员数量为:{count}", persons.Count);
if (persons.Count > 0) if (persons.Count > 0)
@@ -59,13 +67,15 @@ public class SyncPersonJob
var workCodes = persons.Select(x => x.ZWORKCODE).ToList(); var workCodes = persons.Select(x => x.ZWORKCODE).ToList();
var chunks = workCodes.Chunk(4000).ToList(); var chunks = workCodes.Chunk(4000).ToList();
Scoped.Temp.Value.Create(sp => await Scoped.Temp.Value.Create(async sp =>
{ {
var dbContext = sp.GetService<IDbContext>(); var dbContext = sp.GetService<IDbContext>();
foreach (var searchCodes in chunks) foreach (var searchCodes in chunks)
{ {
_logger.LogInformation("SAP分批处理Chunk数量:{count}", searchCodes.Count()); _logger.LogInformation("SAP分批处理Chunk数量:{count}", searchCodes.Count());
var dtoResult = await _devicePermissionApi.GetPermissionUsersInfoAsync();
var dto = dtoResult.Data;
var existsWorkCodes = dbContext.Queryable<GainfoSapEntity>() var existsWorkCodes = dbContext.Queryable<GainfoSapEntity>()
.Where(x => searchCodes.Contains(x.ename)) .Where(x => searchCodes.Contains(x.ename))
@@ -83,6 +93,7 @@ public class SyncPersonJob
_logger.LogInformation("SAP分批更新数:{count}", updates.Count); _logger.LogInformation("SAP分批更新数:{count}", updates.Count);
var inserts = ToGainfoSap(originInserts); var inserts = ToGainfoSap(originInserts);
_logger.LogInformation("SAP分批新增数:{count}", inserts.Count); _logger.LogInformation("SAP分批新增数:{count}", inserts.Count);
foreach (var item in inserts) foreach (var item in inserts)
{ {
i++; i++;
@@ -114,6 +125,10 @@ public class SyncPersonJob
} }
} }
var rResult = await _devicePermissionApi.RePermissionUsersInfoAsync(dto);
var r = rResult.Data;
_logger.LogInformation("生成下发任务数量:{count}", r);
} }
}); });
@@ -127,7 +142,7 @@ public class SyncPersonJob
var info = new GainfoEntity var info = new GainfoEntity
{ {
No = Guid.NewGuid().ToString(), No = Guid.NewGuid().ToString(),
SapNo = item.ano, SapNo = item.PERNR,
Type = item.@class, Type = item.@class,
Name = item.gname, Name = item.gname,
Code = item.ename, Code = item.ename,
@@ -157,10 +172,9 @@ public class SyncPersonJob
{ {
db.Client.Insertable(info).AS("GainfoLeave").ExecuteCommand(); db.Client.Insertable(info).AS("GainfoLeave").ExecuteCommand();
} }
} }
private void UpdatePerson(IDbContext db, GainfoSapEntity item) private static void UpdatePerson(IDbContext db, GainfoSapEntity item)
{ {
var gainfoSap = db.Queryable<GainfoSapEntity>().Where(x => x.ename == item.ename).First(); var gainfoSap = db.Queryable<GainfoSapEntity>().Where(x => x.ename == item.ename).First();
db.Updateable<GainfoSapEntity>().SetColumns(g => new GainfoSapEntity db.Updateable<GainfoSapEntity>().SetColumns(g => new GainfoSapEntity
@@ -214,12 +228,39 @@ public class SyncPersonJob
return sapList; return sapList;
} }
var now = DateTime.Now;
foreach (var item in sapList)
{
var a = _jobChanges.FirstOrDefault(x => x.ZWORKCODE == item.ZWORKCODE);
if (a != null)
{
if (a.BEGDA >= now && a.ENDDA <= now)
{
if (a.STAT2 == "0")
{
item.STAT2 = "0";
item.ZSTATUS = "5";
}
}
}
var b = _departmentChanges.FirstOrDefault(x => x.ZWORKCODE == item.ZWORKCODE);
if (b != null)
{
if (b.BEGDA >= now && b.ENDDA <= now)
{
item.ORGEH = b.ORGEH;
item.WERKS = b.WERKS;
}
}
}
var needRemove = sapList.Intersect(last, new SapPersonComparer()); var needRemove = sapList.Intersect(last, new SapPersonComparer());
return sapList.Except(needRemove, new SapPersonComparer()).ToList(); return sapList.Except(needRemove, new SapPersonComparer()).ToList();
} }
private List<SapPersonItem> LoadData(IDbContext db) private static List<SapPersonItem> LoadData(IDbContext db)
{ {
var gainfo = db.Queryable<GainfoSapEntity>().ToList(); var gainfo = db.Queryable<GainfoSapEntity>().ToList();

View File

@@ -2,7 +2,7 @@
namespace Dlhis.ScheduledTask.SyncSapInfo.Services; namespace Dlhis.ScheduledTask.SyncSapInfo.Services;
public interface IJinkoSapService : ISingletonDependency public interface IJinkoSapService : IScopeDependency
{ {
Task<SapOrganizationResponse> GetSapOrganizationsAsync(); Task<SapOrganizationResponse> GetSapOrganizationsAsync();

View File

@@ -6,7 +6,8 @@
} }
}, },
"InternalRequest": { "InternalRequest": {
"SysRequestUrl": "http://localhost:5003" "SysRequestUrl": "http://localhost:5003",
"BasicRequestUrl": "http://localhost:5002"
}, },
"FaceUrlOptions": { "FaceUrlOptions": {
"Url": "http://localhost:5002/api/gainfos/face?token=", "Url": "http://localhost:5002/api/gainfos/face?token=",

View File

@@ -6,7 +6,8 @@
} }
}, },
"InternalRequest": { "InternalRequest": {
"SysRequestUrl": "http://sys" "SysRequestUrl": "http://sys",
"BasicRequestUrl": "http://basic"
}, },
"DataProtectionOptions": { "DataProtectionOptions": {
"Enable": true, "Enable": true,