fix 批量入职外包人员

This commit is contained in:
2024-06-16 01:35:03 +08:00
parent 24d4608f72
commit b8020e3e20
5 changed files with 38 additions and 41 deletions

View File

@@ -430,12 +430,12 @@ public class DevicePermissionService : IDevicePermissionService
return;
}
var deivces = await _dbContext.Queryable<DeviceEntity>()
var devices = await _dbContext.Queryable<DeviceEntity>()
.Where(x => x.Enable)
.Where(x => deviceCodes.Contains(x.Code))
.ToListAsync();
var tasks = deivces.Select(x => new DeviceTaskEntity
var tasks = devices.Select(x => new DeviceTaskEntity
{
DeviceUniqueNo = x.UniqueNo,
Status = DeviceTaskStatusEnumType.Wait,

View File

@@ -1,34 +0,0 @@
using Dlhis.Basic.Organization.Response;
using Dlhis.Basic.Organization.Services;
using Kurisu.AspNetCore.DataAccess.Dto;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace Dlhis.Basic.MealUser.Controllers;
/// <summary>
/// 就餐人员
/// </summary>
[Authorize]
[Route("api/[controller]")]
[ApiController]
public class MealUsersController : ControllerBase
{
private readonly IMealUserService _mealUserService;
public MealUsersController(IMealUserService mealUserService)
{
_mealUserService = mealUserService;
}
/// <summary>
/// 就餐人员分页
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpGet("page")]
public async Task<Pagination<MealUserResponse>> GetPageAsync([FromQuery] PageDto request)
{
return await _mealUserService.GetPageAsync(request);
}
}

View File

@@ -3,6 +3,7 @@ using Dlhis.Basic.Organization.Request;
using Dlhis.Basic.Organization.Response;
using Dlhis.Basic.Organization.Services;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop;
using Kurisu.AspNetCore.Utils.Extensions;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
@@ -34,6 +35,21 @@ public class GainfoOutsourceController : ControllerBase
await _gainfoOutSourceService.SaveAsync(request);
}
/// <summary>
/// 批量入职
/// </summary>
/// <param name="requests"></param>
[HttpPost("batchEntry")]
[Transactional]
public async Task EntryAsync(List<GainfoOutsourceRequest> requests)
{
(requests.DistinctBy(x => x.Factory).Count() > 1).ThrowIfTrue("仅支持单个基地外包人员导入");
foreach (var request in requests)
{
await _gainfoOutSourceService.SaveAsync(request);
}
}
/// <summary>
/// 编辑
/// </summary>

View File

@@ -1,6 +1,8 @@
using Dlhis.Basic.Organization.Request;
using Dlhis.Basic.Device.Services;
using Dlhis.Basic.Organization.Request;
using Dlhis.Basic.Organization.Response;
using Dlhis.Entity.Basic.Entity;
using Dlhis.Entity.Device.Enums;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
using Kurisu.AspNetCore.Utils;
using Kurisu.AspNetCore.Utils.Extensions;
@@ -13,16 +15,20 @@ public class GainfoOutsourceService : IGainfoOutsourceService
{
private readonly IDbContext _dbContext;
private readonly RedisCache _redisCache;
private readonly IDevicePermissionService _devicePermissionService;
public GainfoOutsourceService(IDbContext dbContext, RedisCache redisCache)
public GainfoOutsourceService(IDbContext dbContext, RedisCache redisCache, IDevicePermissionService devicePermissionService)
{
_dbContext = dbContext;
_redisCache = redisCache;
_devicePermissionService = devicePermissionService;
}
public async Task SaveAsync(GainfoOutsourceRequest request)
{
await CheckIdNoDuplicate(request.IdNo);
await CheckDuplicate(request.IdNo, request.Code);
var sapCodeExists = await _dbContext.Queryable<GainfoEntity>().Where(x => x.Factory == request.Factory).Where(x => x.Code == request.ExternalInfo.SapCode).AnyAsync();
sapCodeExists.ThrowIfFalse("对接人不属于当前基地");
if (!request.Id.HasValue)
{
@@ -40,6 +46,8 @@ public class GainfoOutsourceService : IGainfoOutsourceService
SapCode = request.ExternalInfo.SapCode,
SapPhone = request.ExternalInfo.SapPhone
});
await _devicePermissionService.GenerateDeviceTasksAsync(entity.No, DeviceTaskEnumType.Add);
}
else
{
@@ -103,9 +111,16 @@ public class GainfoOutsourceService : IGainfoOutsourceService
/// 检查证件号重复
/// </summary>
/// <param name="idNo"></param>
private async Task CheckIdNoDuplicate(string idNo)
/// <param name="code"></param>
private async Task CheckDuplicate(string idNo, string code)
{
var exists = await _dbContext.Queryable<GainfoEntity>().Where(x => x.IdNo == idNo).AnyAsync();
exists.ThrowIfTrue($"证件号{idNo}重复");
if (code.IsPresent())
{
exists = await _dbContext.Queryable<GainfoEntity>().Where(x => x.Code == code).AnyAsync();
exists.ThrowIfTrue($"工号{code}重复");
}
}
}