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); } }