diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs index 26655826..38dd2a63 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs @@ -430,12 +430,12 @@ public class DevicePermissionService : IDevicePermissionService return; } - var deivces = await _dbContext.Queryable() + var devices = await _dbContext.Queryable() .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, diff --git a/Src/Dlhis.Basic/MealUser/Controllers/MealUsersController.cs b/Src/Dlhis.Basic/MealUser/Controllers/MealUsersController.cs deleted file mode 100644 index 9ac32fb1..00000000 --- a/Src/Dlhis.Basic/MealUser/Controllers/MealUsersController.cs +++ /dev/null @@ -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; - -/// -/// 就餐人员 -/// -[Authorize] -[Route("api/[controller]")] -[ApiController] -public class MealUsersController : ControllerBase -{ - private readonly IMealUserService _mealUserService; - - public MealUsersController(IMealUserService mealUserService) - { - _mealUserService = mealUserService; - } - - /// - /// 就餐人员分页 - /// - /// - /// - [HttpGet("page")] - public async Task> GetPageAsync([FromQuery] PageDto request) - { - return await _mealUserService.GetPageAsync(request); - } -} diff --git a/Src/Dlhis.Basic/Organization/Controllers/GainfoOutsourceController.cs b/Src/Dlhis.Basic/Organization/Controllers/GainfoOutsourceController.cs index 1882bc50..d38250f1 100644 --- a/Src/Dlhis.Basic/Organization/Controllers/GainfoOutsourceController.cs +++ b/Src/Dlhis.Basic/Organization/Controllers/GainfoOutsourceController.cs @@ -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); } + /// + /// 批量入职 + /// + /// + [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); + } + } + /// /// 编辑 /// diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoOutsourceService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoOutsourceService.cs index 1f1ab7d7..615336f3 100644 --- a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoOutsourceService.cs +++ b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoOutsourceService.cs @@ -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().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 /// 检查证件号重复 /// /// - private async Task CheckIdNoDuplicate(string idNo) + /// + private async Task CheckDuplicate(string idNo, string code) { var exists = await _dbContext.Queryable().Where(x => x.IdNo == idNo).AnyAsync(); exists.ThrowIfTrue($"证件号{idNo}重复"); + + if (code.IsPresent()) + { + exists = await _dbContext.Queryable().Where(x => x.Code == code).AnyAsync(); + exists.ThrowIfTrue($"工号{code}重复"); + } } } \ No newline at end of file diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs index a1396e50..b8fb0e8a 100644 --- a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs +++ b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs @@ -161,7 +161,7 @@ public class GainfoService : IGainfoService public async Task CheckIdNoAndNameMatchAsync(GainfoCheckIdNoAndNameRequest request) { - var gainfo = await _gainfoStore.Queryable(GainfoStatusEnumType.External).FirstAsync(x => x.IdNo == request.IdNo && x.Name == request.Name) + var gainfo = await _gainfoStore.Queryable(GainfoStatusEnumType.External).FirstAsync(x => x.IdNo == request.IdNo && x.Name == request.Name) ?? await _gainfoStore.Queryable(GainfoStatusEnumType.Working).FirstAsync(x => x.IdNo == request.IdNo && x.Name == request.Name); gainfo.ThrowIfNull("验证失败!");