diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs index b24373cd..f3c56a47 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs @@ -27,20 +27,20 @@ public class DevicePermissionService : IDevicePermissionService public async Task AssignAsync(DevicePermissionSaveReuqest reuqest) { - var tenantId = reuqest.AssignType == AssignTypeEnumType.Department ? reuqest.TenantId : _currentUser.GetStringTenantId(); - - //删除当前匹配的基地权限 - var p = await _dbContext.Queryable() - .Where(x => x.AssignType == reuqest.AssignType) - .Where(x => x.AssignValue == reuqest.AssignValue) - .Where(x => x.UniqueType == reuqest.UniqueType) - .Where(x => x.TenantId == tenantId) - .ToListAsync(); - - await _dbContext.DeleteReallyAsync(p); - await GenerateDeviceTasksAsync(async () => { + var tenantId = reuqest.AssignType == AssignTypeEnumType.Department ? reuqest.TenantId : _currentUser.GetStringTenantId(); + + //删除当前匹配的基地权限 + var p = await _dbContext.Queryable() + .Where(x => x.AssignType == reuqest.AssignType) + .Where(x => x.AssignValue == reuqest.AssignValue) + .Where(x => x.UniqueType == reuqest.UniqueType) + .Where(x => x.TenantId == tenantId) + .ToListAsync(); + + await _dbContext.DeleteReallyAsync(p); + //保存配置的权限 if (reuqest.Codes.IsPresent()) { @@ -481,12 +481,13 @@ public class DevicePermissionService : IDevicePermissionService //获取人员的分组,跨基地 var gainfoGroups = gainfoGroupRelationships.Where(x => x.UserNo == userNo).Select(x => x.GroupCode).ToList(); - //按User获取权限 + //按用户 var du = GetAssignCodesInternal(devicePermissions, deviceGroups, DeviceAssignmentTypeEnumType.Device, AssignTypeEnumType.User, userNo); var gu = GetAssignCodesInternal(devicePermissions, deviceGroups, DeviceAssignmentTypeEnumType.Group, AssignTypeEnumType.User, userNo); deviceCodes.AddRange(du); deviceGroupCodes.AddRange(gu); + //按用户组 foreach (var groupCode in gainfoGroups) { var dg = GetAssignCodesInternal(devicePermissions, deviceGroups, DeviceAssignmentTypeEnumType.Device, AssignTypeEnumType.Group, groupCode.ToString()); @@ -495,12 +496,14 @@ public class DevicePermissionService : IDevicePermissionService deviceGroupCodes.AddRange(gg); } + //按部门 var gainfoFactoryDevicePermissions = devicePermissions.Where(x => x.TenantId == gainfo.Factory).ToList(); var dd = GetAssignCodesInternal(gainfoFactoryDevicePermissions, deviceGroups, DeviceAssignmentTypeEnumType.Device, AssignTypeEnumType.Department, gainfo.DepartmentNo); var gd = GetAssignCodesInternal(gainfoFactoryDevicePermissions, deviceGroups, DeviceAssignmentTypeEnumType.Group, AssignTypeEnumType.Department, gainfo.DepartmentNo); deviceCodes.AddRange(dd); deviceGroupCodes.AddRange(gd); + //按厂区 var dt = GetAssignCodesInternal(devicePermissions, deviceGroups, DeviceAssignmentTypeEnumType.Device, AssignTypeEnumType.Tenant, gainfo.Factory); var gt = GetAssignCodesInternal(devicePermissions, deviceGroups, DeviceAssignmentTypeEnumType.Group, AssignTypeEnumType.Tenant, gainfo.Factory); deviceCodes.AddRange(du); diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs index c7ceda84..4b61a811 100644 --- a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs +++ b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs @@ -233,8 +233,11 @@ public class GainfoService : IGainfoService gainfo.ThrowIfNull("人员档案信息不存在"); - var dbContext = _dbContext.ChangeDb("face"); - var face = await dbContext.Queryable().Where(x => x.UserCode == gainfo.Code).SingleAsync(); + + var userId = _currentUser.GetIntSubjectId(); + + var faceContext = _dbContext.ChangeDb("face"); + var face = await faceContext.Queryable().Where(x => x.UserCode == gainfo.Code).SingleAsync(); var taskType = face == null ? DeviceTaskEnumType.Add : DeviceTaskEnumType.Update; @@ -244,10 +247,14 @@ public class GainfoService : IGainfoService face = new GainfoFaceEntity { UserCode = gainfo.Code, - Face = request.Face + Face = request.Face, + CreateTime = DateTime.Now, + ModifiedTime = DateTime.Now, + CreatedBy = userId, + ModifiedBy = userId }; - await dbContext.InsertAsync(face); + await faceContext.InsertAsync(face); } else { @@ -258,7 +265,9 @@ public class GainfoService : IGainfoService } face.Face = request.Face; - await dbContext.UpdateAsync(face); + face.ModifiedBy = userId; + face.ModifiedTime = DateTime.Now; + await faceContext.UpdateAsync(face); } //生成任务 diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs index c2cabe68..cb345396 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs @@ -64,15 +64,32 @@ public class OrderService : IOrderService .FirstAsync(); gainfo.ThrowIfNull($"用户{request.UserUniqueNo}不存在,无法操作"); - - var canteenUserExists = await _dbContext.Queryable() - .Where(x => x.UserNo == gainfo.No) - .AnyAsync(); - canteenUserExists.ThrowIfFalse($"就餐用户{request.UserUniqueNo}不存在,无法操作"); - //消费权限控制 await CheckPAsync(gainfo.No, request.DeviceUniqueNo); + var canteenUserExists = await _dbContext.Queryable() + .Where(x => x.UserNo == gainfo.No) + .AnyAsync(); + + if (!canteenUserExists) + { + await _dbContext.InsertAsync(new CanteenUserEntity + { + UserNo = gainfo.No, + Balance = 0, + BalanceOfRecharge = 0, + BalanceOfSubsidies = 0, + UserType = CanteenUserEnumType.LocalTenant, + TenantId = gainfo.Factory, + Version = 0, + + CreatedBy = 1, + CreateTime = DateTime.Now, + ModifiedBy = 1, + ModifiedTime = DateTime.Now, + }); + } + //消费 if (request.Type == BalanceRecordTypeEnumType.Out) { diff --git a/Src/Dlhis.ScheduledTask/SyncSapInfo/Job/SyncOriginCardInfoJob.cs b/Src/Dlhis.ScheduledTask/SyncSapInfo/Job/SyncOriginCardInfoJob.cs index 96a7daa4..88f2c0f5 100644 --- a/Src/Dlhis.ScheduledTask/SyncSapInfo/Job/SyncOriginCardInfoJob.cs +++ b/Src/Dlhis.ScheduledTask/SyncSapInfo/Job/SyncOriginCardInfoJob.cs @@ -30,6 +30,8 @@ public class SyncOriginCardInfoJob public async Task RunAsync() { + _logger.LogInformation("调度任务:{job}.开始执行", nameof(SyncOriginCardInfoJob)); + _dbContext.Client.QueryFilter.ClearAndBackup(); _sqlSugarOptionsService.IgnoreTenant = true; try @@ -49,14 +51,14 @@ public class SyncOriginCardInfoJob //获取人员信息 var userCodes = logs.Select(x => x.UserUniqueNo).ToList(); - var gainfos = await _dbContext.Queryable().Where(x => userCodes.Contains(x.Code)).Select(x => new { x.Code, x.CardNo }).ToListAsync(); + var gainfoCodes = await _dbContext.Queryable().Where(x => userCodes.Contains(x.Code)).Select(x => x.Code).ToListAsync(); var requests = logs.Select(x => new UploadAttendanceRequest { Id = x.Id, RaiseDateTime = x.RaiseDateTime, ZNOTE = devices.First(item => item.UniqueNo == x.DeviceUniqueNo).DeployPlace, - ZWORKCODE = gainfos.FirstOrDefault(item => item.Code == x.UserUniqueNo)?.Code?.TrimEnd('\0'), + ZWORKCODE = gainfoCodes.Contains(x.UserUniqueNo) ? x.UserUniqueNo?.TrimEnd('\0') : string.Empty, }).Where(x => x.ZWORKCODE.IsPresent()).ToList(); @@ -86,6 +88,8 @@ public class SyncOriginCardInfoJob { _sqlSugarOptionsService.IgnoreTenant = false; _dbContext.Client.QueryFilter.Restore(); + + _logger.LogInformation("调度任务:{job}.结束", nameof(SyncOriginCardInfoJob)); } } } diff --git a/Src/Dlhis.ScheduledTask/SyncSapInfo/Job/SyncPersonJob.cs b/Src/Dlhis.ScheduledTask/SyncSapInfo/Job/SyncPersonJob.cs index 8a30c9f7..944774bf 100644 --- a/Src/Dlhis.ScheduledTask/SyncSapInfo/Job/SyncPersonJob.cs +++ b/Src/Dlhis.ScheduledTask/SyncSapInfo/Job/SyncPersonJob.cs @@ -36,6 +36,7 @@ public class SyncPersonJob public async Task RunAsync() { + _logger.LogInformation("开始获取SAP人员"); var personResp = await _jinkoSapService.GetPersonsAsync(); var persons = personResp.Person.Items; _departmentChanges = personResp.DepartmentInfo.Items; @@ -56,6 +57,8 @@ public class SyncPersonJob } }); } + + _logger.LogInformation("同步SAP人员数据结束"); } private async Task SavePerson(List persons) diff --git a/Src/Dlhis.ScheduledTask/SyncSapInfo/Services/Implements/JinkoSapService.cs b/Src/Dlhis.ScheduledTask/SyncSapInfo/Services/Implements/JinkoSapService.cs index 05ceed7c..bfd27a08 100644 --- a/Src/Dlhis.ScheduledTask/SyncSapInfo/Services/Implements/JinkoSapService.cs +++ b/Src/Dlhis.ScheduledTask/SyncSapInfo/Services/Implements/JinkoSapService.cs @@ -115,7 +115,7 @@ public class JinkoSapService : IJinkoSapService } catch (Exception ex) { - _logger.LogError(ex, "获取人事范围{werk}失败:" + ex.Message, item); + _logger.LogError(ex, "获取人事范围{werk}失败:" + ex.Message, item.Werk); } }