fix 处理已知异常
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user