feat 外包人员下发配置

This commit is contained in:
2024-07-22 17:24:14 +08:00
parent d27aa2e007
commit 9cd31df6fc
7 changed files with 228 additions and 13 deletions

View File

@@ -0,0 +1,48 @@
using Dlhis.Basic.Device.Filters;
using Dlhis.Basic.Organization.Request;
using Dlhis.Basic.Organization.Services;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace Dlhis.Basic.Organization.Controllers;
/// <summary>
/// 外包人员配置
/// </summary>
[Authorize]
[Route("api/[controller]")]
[ApiController]
public class GainfoOutsourceSettingController : ControllerBase
{
private readonly IGainfoOutsourceSettingService _gainfoOutSourceService;
public GainfoOutsourceSettingController(IGainfoOutsourceSettingService gainfoOutSourceService)
{
_gainfoOutSourceService = gainfoOutSourceService;
}
/// <summary>
/// 保存配置
/// </summary>
/// <param name="request"></param>
[HttpPost("save")]
[AssignPermissionLimit]
[Transactional]
[DataPermission]
public async Task SaveAsync(GainfoOutsourceSettingSaveRequest request)
{
await _gainfoOutSourceService.SaveAsync(request);
}
/// <summary>
/// 获取当前厂区配置
/// </summary>
/// <returns></returns>
[HttpGet("current")]
public async Task<object> GetSettingAsync()
{
return await _gainfoOutSourceService.GetSettingAsync();
}
}

View File

@@ -3,8 +3,16 @@
public class GainfoDto
{
public long Id { get; set; }
public string No { get; set; }
public string Code { get; set; }
public string Name { get; set; }
public string Workplace { get; set; }
public string Factory { get; set; }
public string DepartmentNo { get; set; }
public bool IsOutsource { get; set; }
public bool EnableFactoryPermission { get; set; }
}

View File

@@ -0,0 +1,8 @@
namespace Dlhis.Basic.Organization.Request;
public class GainfoOutsourceSettingSaveRequest
{
public long? Id { get; set; }
public bool EnableFactory { get; set; }
}

View File

@@ -0,0 +1,10 @@
using Dlhis.Basic.Organization.Request;
namespace Dlhis.Basic.Organization.Services;
public interface IGainfoOutsourceSettingService : IScopeDependency
{
Task SaveAsync(GainfoOutsourceSettingSaveRequest request);
Task<object> GetSettingAsync();
}

View File

@@ -0,0 +1,71 @@
using Dlhis.Basic.Device.Services;
using Dlhis.Basic.Organization.Request;
using Dlhis.Entity.Basic.Entity;
using Kurisu.AspNetCore.Authentication.Abstractions;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
using Kurisu.AspNetCore.Utils.Extensions;
using SqlSugar;
namespace Dlhis.Basic.Organization.Services.Implements;
public class GainfoOutsourceSettingService : IGainfoOutsourceSettingService
{
private readonly IDbContext _dbContext;
private readonly ICurrentUser _currentUser;
private readonly IDevicePermissionService _devicePermissionService;
public GainfoOutsourceSettingService(IDbContext dbContext, ICurrentUser currentUser, IDevicePermissionService devicePermissionService)
{
_dbContext = dbContext;
_currentUser = currentUser;
_devicePermissionService = devicePermissionService;
}
public async Task SaveAsync(GainfoOutsourceSettingSaveRequest request)
{
var userNos = await _dbContext.Queryable<GainfoEntity>()
.Where(x => SqlFunc.Subqueryable<OutsourceEntity>().Where(p => p.Code == x.Code).Any())
.Select(x => x.No)
.ToListAsync();
await _devicePermissionService.GenerateDeviceTasksAsync(async () =>
{
var currentTenantId = _currentUser.GetStringTenantId();
(!request.Id.HasValue && await _dbContext.Queryable<OutsourceSettingEntity>()
.Where(x => x.TenantId == currentTenantId)
.AnyAsync()).ThrowIfTrue("保存失败,请检查参数");
if (!request.Id.HasValue)
{
var entity = new OutsourceSettingEntity
{
EnableFactory = request.EnableFactory,
TenantId = currentTenantId
};
await _dbContext.InsertAsync(entity);
}
else
{
var entity = await _dbContext.Queryable<OutsourceSettingEntity>().Where(x => x.Id == request.Id).SingleAsync();
entity.ThrowIfNull("数据不存在,保存失败");
entity.EnableFactory = request.EnableFactory;
await _dbContext.UpdateAsync(entity);
}
}, userNos);
}
public async Task<object> GetSettingAsync()
{
var currentTenantId = _currentUser.GetStringTenantId();
return await _dbContext.Queryable<OutsourceSettingEntity>().Where(x => x.TenantId == currentTenantId).Select(x => new
{
x.Id,
x.EnableFactory
}).SingleAsync();
}
}