using System.ComponentModel.DataAnnotations;
using Dlhis.Basic.Organization.Dto;
using Dlhis.Basic.Organization.Request;
using Dlhis.Basic.Organization.Response;
using Dlhis.Basic.Organization.Services;
using Dlhis.Basic.Organization.Services.Implements;
using Kurisu.AspNetCore.DataAccess.Dto;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop;
using Kurisu.AspNetCore.Utils.Extensions;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace Dlhis.Basic.Organization.Controllers;
///
/// 外包人员
///
[Authorize]
[Route("api/[controller]")]
[ApiController]
public class GainfoOutsourceController : ControllerBase
{
private readonly IGainfoOutsourceService _gainfoOutSourceService;
private readonly IOutsourceWhiteListService _outsourceWhiteList;
public GainfoOutsourceController(IGainfoOutsourceService gainfoOutSourceService, IOutsourceWhiteListService outsourceWhiteList)
{
_gainfoOutSourceService = gainfoOutSourceService;
_outsourceWhiteList = outsourceWhiteList;
}
///
/// 入职
///
///
[HttpPost("entry")]
[Transactional]
public async Task EntryAsync(GainfoOutsourceRequest request)
{
await _gainfoOutSourceService.SaveAsync(request);
}
///
/// 批量入职
///
///
[HttpPost("batchEntry")]
[Transactional]
public async Task EntryAsync(List requests)
{
(requests.DistinctBy(x => x.Factory).Count() > 1).ThrowIfTrue("仅支持单个基地外包人员导入");
foreach (var request in requests)
{
await _gainfoOutSourceService.SaveAsync(request);
}
}
///
/// 编辑
///
///
[HttpPost("edit")]
[Transactional]
public async Task EditAsync(GainfoOutsourceRequest request)
{
await _gainfoOutSourceService.SaveAsync(request);
}
///
/// 获取外包人员额外信息
///
///
///
[AllowAnonymous]
[HttpGet("info")]
public async Task GetExternalInfoAsync([Required] string userNo)
{
return await _gainfoOutSourceService.GetExternalInfoAsync(userNo);
}
///
/// 自动离职处理
///
[AllowAnonymous]
[HttpPost("autoResign")]
[IgnoreTenant]
public async Task AutoResignAsync()
{
await _gainfoOutSourceService.AutoResignAsync();
}
///
/// 获取外包白名单分页数据
///
///
///
[HttpPost("whiteListPage")]
public async Task> GetPageAsync(OutsourceWhiteListPageRequest request)
{
return await _outsourceWhiteList.GetPageAsync(request);
}
///
/// 添加外包白名单
///
///
///
[HttpPost("setWhiteList")]
public async Task AddAsync(OutsourceWhiteListAddAndRemoveRequest request)
{
await _outsourceWhiteList.AddAsync(request.UserCode);
}
///
/// 移除外包白名单
///
///
///
[HttpPost("removeWhiteList")]
public async Task RemoveAsync(OutsourceWhiteListAddAndRemoveRequest request)
{
await _outsourceWhiteList.RemoveAsync(request.UserCode);
}
}