fix 处理已知异常

This commit is contained in:
2025-10-28 11:14:28 +08:00
parent d273610214
commit ad144a9e16
2 changed files with 51 additions and 26 deletions

View File

@@ -76,6 +76,22 @@ public class GainfoFaceService : IGainfoFaceService
public async Task<GainfoFacePageSummaryResponse> GetPageAsync(GainfoFacePageRequest request) public async Task<GainfoFacePageSummaryResponse> GetPageAsync(GainfoFacePageRequest request)
{ {
var tenantIds = _currentUser.GetUserClaim("tenants").Split(",").ToList(); var tenantIds = _currentUser.GetUserClaim("tenants").Split(",").ToList();
if (tenantIds.IsEmpty())
{
return new GainfoFacePageSummaryResponse
{
Total = 0,
Exists = 0,
Page = new Pagination<GainfoFacePageResponse>
{
PageIndex = request.PageIndex,
PageSize = request.PageSize,
Total = 0,
Data = null
}
};
}
var factories = request.Factories; var factories = request.Factories;
factories = factories.Where(x => tenantIds.Contains(x)).ToList(); factories = factories.Where(x => tenantIds.Contains(x)).ToList();
@@ -186,7 +202,7 @@ public class GainfoFaceService : IGainfoFaceService
} }
} }
} }
face.Face = request.Face; face.Face = request.Face;
face.ModifiedBy = 1; face.ModifiedBy = 1;
face.ModifiedTime = DateTime.Now; face.ModifiedTime = DateTime.Now;

View File

@@ -14,6 +14,7 @@ using Dlhis.Jip.Api.Requests;
using Dlhis.ScheduledTask.DeviceUploadLog.Request; using Dlhis.ScheduledTask.DeviceUploadLog.Request;
using Dlhis.ScheduledTask.DeviceUploadLog.Response; using Dlhis.ScheduledTask.DeviceUploadLog.Response;
using Kurisu.AspNetCore.Authentication.Abstractions; using Kurisu.AspNetCore.Authentication.Abstractions;
using Kurisu.AspNetCore.Cache;
using Kurisu.AspNetCore.CustomClass; using Kurisu.AspNetCore.CustomClass;
using Kurisu.AspNetCore.DataAccess.Dto; using Kurisu.AspNetCore.DataAccess.Dto;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services; using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
@@ -25,6 +26,7 @@ namespace Dlhis.ScheduledTask.DeviceUploadLog.Services.Implements;
public class DeviceUploadLogService : IDeviceUploadLogService public class DeviceUploadLogService : IDeviceUploadLogService
{ {
private readonly IDbContext _dbContext; private readonly IDbContext _dbContext;
private readonly RedisCache _redisCache;
private readonly IDormitoryRoomPowerSwitchApi _dormitoryRoomPowerSwitchApi; private readonly IDormitoryRoomPowerSwitchApi _dormitoryRoomPowerSwitchApi;
private readonly ICurrentUser _currentUser; private readonly ICurrentUser _currentUser;
private readonly IJinkoJipApi _jinkoJipApi; private readonly IJinkoJipApi _jinkoJipApi;
@@ -32,6 +34,7 @@ public class DeviceUploadLogService : IDeviceUploadLogService
private readonly IDingTalkApi _dingTalkApi; private readonly IDingTalkApi _dingTalkApi;
public DeviceUploadLogService(IDbContext dbContext, public DeviceUploadLogService(IDbContext dbContext,
RedisCache redisCache,
IDormitoryRoomPowerSwitchApi dormitoryRoomPowerSwitchApi, IDormitoryRoomPowerSwitchApi dormitoryRoomPowerSwitchApi,
ICurrentUser currentUser, ICurrentUser currentUser,
IJinkoJipApi jinkoJipApi, IJinkoJipApi jinkoJipApi,
@@ -39,6 +42,7 @@ public class DeviceUploadLogService : IDeviceUploadLogService
IDingTalkApi dingTalkApi) IDingTalkApi dingTalkApi)
{ {
_dbContext = dbContext; _dbContext = dbContext;
_redisCache = redisCache;
_dormitoryRoomPowerSwitchApi = dormitoryRoomPowerSwitchApi; _dormitoryRoomPowerSwitchApi = dormitoryRoomPowerSwitchApi;
_currentUser = currentUser; _currentUser = currentUser;
_jinkoJipApi = jinkoJipApi; _jinkoJipApi = jinkoJipApi;
@@ -310,39 +314,44 @@ public class DeviceUploadLogService : IDeviceUploadLogService
_logger.LogInformation("MCB未开启, userCode:{userCode} directionType:{directionType}", userCode, directionType); _logger.LogInformation("MCB未开启, userCode:{userCode} directionType:{directionType}", userCode, directionType);
return; return;
} }
var room = await _dbContext.Queryable<DormitoryRoomEntity>().Where(x => x.RoomId == roomInfo.RoomId).SingleAsync(); var room = await _dbContext.Queryable<DormitoryRoomEntity>().Where(x => x.RoomId == roomInfo.RoomId).SingleAsync();
if (room == null) if (room == null)
{ {
room = new DormitoryRoomEntity //这里会有并发问题,加分布式锁
await using var lockHandler = await _redisCache.LockAsync("dormitory_room_key_" + roomInfo.RoomId, TimeSpan.FromSeconds(10), retryCount: 5);
if (lockHandler.Acquired)
{ {
EFenceCode = eFenceCode, room = new DormitoryRoomEntity
RoomId = roomInfo.RoomId,
RoomNo = roomInfo.RoomNo,
HotelId = roomInfo.HotelId,
PowerSwitch = true
};
await _dbContext.InsertAsync(room);
var personEntities = roomInfo.Persons.Select(x => new DormitoryRoomPersonEntity
{ {
EFenceCode = eFenceCode,
RoomId = roomInfo.RoomId, RoomId = roomInfo.RoomId,
UserCode = x.UserCode, RoomNo = roomInfo.RoomNo,
UserName = x.UserName, HotelId = roomInfo.HotelId,
In = true, PowerSwitch = true
IsDeleted = false };
})
.ToList();
await _dbContext.InsertAsync(personEntities); await _dbContext.InsertAsync(room);
var person = await _dbContext.Queryable<DormitoryRoomPersonEntity>() var personEntities = roomInfo.Persons.Select(x => new DormitoryRoomPersonEntity
.Where(x => x.RoomId != roomInfo.RoomId && x.UserCode == userCode) {
.FirstAsync(); RoomId = roomInfo.RoomId,
if (person != null) UserCode = x.UserCode,
{ UserName = x.UserName,
await _dbContext.DeleteAsync(person); In = true,
IsDeleted = false
})
.ToList();
await _dbContext.InsertAsync(personEntities);
var person = await _dbContext.Queryable<DormitoryRoomPersonEntity>()
.Where(x => x.RoomId != roomInfo.RoomId && x.UserCode == userCode)
.FirstAsync();
if (person != null)
{
await _dbContext.DeleteAsync(person);
}
} }
} }
else else