Files
jinko.yikatong/Src/Dlhis.Basic/Organization/Services/Implements/FactorySettingService.cs
2024-08-05 16:49:37 +08:00

61 lines
2.1 KiB
C#

using Dlhis.Basic.Organization.Request;
using Dlhis.Basic.Organization.Response;
using Dlhis.Entity.Sys.Entities;
using Dlhis.Sys.Api;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
using Mapster;
namespace Dlhis.Basic.Organization.Services.Implements;
public class FactorySettingService : IFactorySettingService
{
private readonly IDbContext _dbContext;
private readonly ITenantApi _tenantApi;
public FactorySettingService(IDbContext dbContext, ITenantApi tenantApi)
{
_dbContext = dbContext;
_tenantApi = tenantApi;
}
public async Task<List<FactorySettingResponse>> GetListAsync()
{
var apiResult = await _tenantApi.GetMyTenantsAsync();
var factories = apiResult.Data;
var factoryCodes = factories.Select(x => x.Code).ToList();
var settings = await _dbContext.Queryable<FactorySettingEntity>().Where(x => factoryCodes.Contains(x.TenantId))
.ToListAsync();
return factories.Select(item =>
{
var factory = factories.FirstOrDefault(x => x.Code == item.Code);
return new FactorySettingResponse
{
Factory = factory?.Code,
FactoryName = factory?.Name,
EnableOutsourceDown = settings.FirstOrDefault(x => x.TenantId == item.Code)?.EnableOutsourceDown ?? false,
UserQrCodeExpiration = settings.FirstOrDefault(x => x.TenantId == item.Code)?.UserQrCodeExpiration
};
}).ToList();
}
public async Task SaveAsync(FactorySettingSaveRequest request)
{
var setting = await _dbContext.Queryable<FactorySettingEntity>().Where(x => request.Factory == x.TenantId).SingleAsync();
if (setting == null)
{
setting = request.Adapt<FactorySettingEntity>();
setting.TenantId = request.Factory;
await _dbContext.InsertAsync(setting);
}
else
{
request.Adapt(setting);
setting.TenantId = request.Factory;
await _dbContext.UpdateAsync(setting);
}
}
}