Merge branch 'master' into development

This commit is contained in:
2024-03-11 11:36:21 +08:00
6 changed files with 63 additions and 27 deletions

View File

@@ -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<DevicePermissionEntity>()
.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<DevicePermissionEntity>()
.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);

View File

@@ -233,8 +233,11 @@ public class GainfoService : IGainfoService
gainfo.ThrowIfNull("人员档案信息不存在");
var dbContext = _dbContext.ChangeDb("face");
var face = await dbContext.Queryable<GainfoFaceEntity>().Where(x => x.UserCode == gainfo.Code).SingleAsync();
var userId = _currentUser.GetIntSubjectId();
var faceContext = _dbContext.ChangeDb("face");
var face = await faceContext.Queryable<GainfoFaceEntity>().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);
}
//生成任务

View File

@@ -64,15 +64,32 @@ public class OrderService : IOrderService
.FirstAsync();
gainfo.ThrowIfNull($"用户{request.UserUniqueNo}不存在,无法操作");
var canteenUserExists = await _dbContext.Queryable<CanteenUserEntity>()
.Where(x => x.UserNo == gainfo.No)
.AnyAsync();
canteenUserExists.ThrowIfFalse($"就餐用户{request.UserUniqueNo}不存在,无法操作");
//消费权限控制
await CheckPAsync(gainfo.No, request.DeviceUniqueNo);
var canteenUserExists = await _dbContext.Queryable<CanteenUserEntity>()
.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)
{

View File

@@ -30,6 +30,8 @@ public class SyncOriginCardInfoJob
public async Task RunAsync()
{
_logger.LogInformation("调度任务:{job}.开始执行", nameof(SyncOriginCardInfoJob));
_dbContext.Client.QueryFilter.ClearAndBackup<ITenantId>();
_sqlSugarOptionsService.IgnoreTenant = true;
try
@@ -49,14 +51,14 @@ public class SyncOriginCardInfoJob
//获取人员信息
var userCodes = logs.Select(x => x.UserUniqueNo).ToList();
var gainfos = await _dbContext.Queryable<GainfoEntity>().Where(x => userCodes.Contains(x.Code)).Select(x => new { x.Code, x.CardNo }).ToListAsync();
var gainfoCodes = await _dbContext.Queryable<GainfoEntity>().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));
}
}
}

View File

@@ -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<int> SavePerson(List<SapPersonItem> persons)

View File

@@ -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);
}
}