diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs index 346ad05f..049b31a1 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs @@ -57,7 +57,7 @@ public class DeviceService : IDeviceService public async Task SaveAsync(DeviceSaveRequest request) { await CheckUniqueNoExistsAsync(request); - var template = await CheckTemplateExistsAsync(request.TemplateCode); + await CheckTemplateExistsAsync(request.TemplateCode); await CheckTemplateFieldAsync(request.TemplateCode, request.ConnectionInfo); DeviceEntity entity; @@ -128,7 +128,6 @@ public class DeviceService : IDeviceService if (item.Type == DeviceTypeEnumType.Meal) { - var registry = await _dbContext.Queryable().Where(x => x.DeviceUniqueNo == item.UniqueNo).FirstAsync(); businessPlaces.Any(x => x.Code == item.BusinessPlaceCode).ThrowIfFalse("营业点不存在"); registry.BusinessPlaceCode = item.BusinessPlaceCode; diff --git a/Src/Dlhis.Basic/Organization/Controllers/GainfoMealController.cs b/Src/Dlhis.Basic/Organization/Controllers/GainfoMealController.cs index 07df5daf..b599aa87 100644 --- a/Src/Dlhis.Basic/Organization/Controllers/GainfoMealController.cs +++ b/Src/Dlhis.Basic/Organization/Controllers/GainfoMealController.cs @@ -16,9 +16,9 @@ namespace Dlhis.Basic.Organization.Controllers; [ApiController] public class GainfoMealController : ControllerBase { - private readonly IMealUserService _mealUserService; + private readonly IGainfoMealService _mealUserService; - public GainfoMealController(IMealUserService mealUserService) + public GainfoMealController(IGainfoMealService mealUserService) { _mealUserService = mealUserService; } @@ -29,7 +29,7 @@ public class GainfoMealController : ControllerBase /// /// [HttpGet("page")] - public async Task> GetPageAsync([FromQuery] PageDto request) + public async Task> GetPageAsync([FromQuery] GainfoMealPageRequest request) { return await _mealUserService.GetPageAsync(request); } diff --git a/Src/Dlhis.Basic/Organization/Request/GainfoAssignRequest.cs b/Src/Dlhis.Basic/Organization/Request/GainfoAssignRequest.cs index 6741f83a..ad80334a 100644 --- a/Src/Dlhis.Basic/Organization/Request/GainfoAssignRequest.cs +++ b/Src/Dlhis.Basic/Organization/Request/GainfoAssignRequest.cs @@ -13,5 +13,5 @@ public class GainfoAssignRequest /// /// 档案号 /// - public List UserNos { get; set; } = new List(); + public List UserNos { get; set; } = new(); } diff --git a/Src/Dlhis.Basic/Organization/Request/GainfoMealPageRequest.cs b/Src/Dlhis.Basic/Organization/Request/GainfoMealPageRequest.cs new file mode 100644 index 00000000..ed70f63e --- /dev/null +++ b/Src/Dlhis.Basic/Organization/Request/GainfoMealPageRequest.cs @@ -0,0 +1,9 @@ +using Kurisu.AspNetCore.CustomClass; +using Kurisu.AspNetCore.DataAccess.Dto; + +namespace Dlhis.Basic.Organization.Request; + +public class GainfoMealPageRequest : PageDto +{ + public DateTimePeriod DateTimePeriod { get; set; } +} \ No newline at end of file diff --git a/Src/Dlhis.Basic/Organization/Request/GainfoOutsourceRequest.cs b/Src/Dlhis.Basic/Organization/Request/GainfoOutsourceRequest.cs index 8e3177f3..c2b33a89 100644 --- a/Src/Dlhis.Basic/Organization/Request/GainfoOutsourceRequest.cs +++ b/Src/Dlhis.Basic/Organization/Request/GainfoOutsourceRequest.cs @@ -4,7 +4,7 @@ using Dlhis.Entity.Basic.Enums; namespace Dlhis.Basic.Organization.Request; -public class GainfoOutsourceRequest +public class GainfoOutsourceRequest : IValidatableObject { public long? Id { get; set; } @@ -56,8 +56,8 @@ public class GainfoOutsourceRequest /// 离职日期 /// public DateTime? ResignationDate { get; set; } - - + + /// /// 备注 /// @@ -68,4 +68,13 @@ public class GainfoOutsourceRequest /// [Required] public GainfoOutSourceExternalInfoDto ExternalInfo { get; set; } + + /// + public IEnumerable Validate(ValidationContext validationContext) + { + if (Code == ExternalInfo.SapCode) + { + yield return new ValidationResult("工号和对接人工号不可相同", new[] { nameof(Code) }); + } + } } \ No newline at end of file diff --git a/Src/Dlhis.Basic/Organization/Response/MealUserResponse.cs b/Src/Dlhis.Basic/Organization/Response/GainfoMealResponse.cs similarity index 58% rename from Src/Dlhis.Basic/Organization/Response/MealUserResponse.cs rename to Src/Dlhis.Basic/Organization/Response/GainfoMealResponse.cs index 15df3687..639bc76c 100644 --- a/Src/Dlhis.Basic/Organization/Response/MealUserResponse.cs +++ b/Src/Dlhis.Basic/Organization/Response/GainfoMealResponse.cs @@ -1,6 +1,6 @@ namespace Dlhis.Basic.Organization.Response; -public class MealUserResponse +public class GainfoMealResponse { /// /// 档案号 @@ -19,19 +19,24 @@ public class MealUserResponse /// public decimal Balance { get; set; } - /// - /// 余额(充值) - /// - public decimal BalanceOfRecharge { get; set; } - - - /// - /// 余额(餐补) - /// - public decimal BalanceOfSubsidies { get; set; } + // /// + // /// 余额(充值) + // /// + // public decimal BalanceOfRecharge { get; set; } + // + // + // /// + // /// 余额(餐补) + // /// + // public decimal BalanceOfSubsidies { get; set; } /// /// 部门名称 /// public string DepartmentName { get; set; } -} + + /// + /// 餐补总额 + /// + public decimal? MealSupplementAmount { get; set; } +} \ No newline at end of file diff --git a/Src/Dlhis.Basic/Organization/Services/IMealUserService.cs b/Src/Dlhis.Basic/Organization/Services/IGainfoMealService.cs similarity index 62% rename from Src/Dlhis.Basic/Organization/Services/IMealUserService.cs rename to Src/Dlhis.Basic/Organization/Services/IGainfoMealService.cs index 1403dfd0..f657d625 100644 --- a/Src/Dlhis.Basic/Organization/Services/IMealUserService.cs +++ b/Src/Dlhis.Basic/Organization/Services/IGainfoMealService.cs @@ -4,9 +4,9 @@ using Kurisu.AspNetCore.DataAccess.Dto; namespace Dlhis.Basic.Organization.Services; -public interface IMealUserService : IScopeDependency +public interface IGainfoMealService : IScopeDependency { - Task> GetPageAsync(PageDto request); + Task> GetPageAsync(GainfoMealPageRequest request); Task MigrationAsync(GainfoBalanceMigrationRequest request); } \ No newline at end of file diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoGroupService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoGroupService.cs index 5c44750a..3e7e213a 100644 --- a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoGroupService.cs +++ b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoGroupService.cs @@ -107,9 +107,7 @@ public class GainfoGroupService : IGainfoGroupService var entities = request.UserNos.Select(x => new GainfoGroupRelationshipEntity { GroupCode = request.GroupCode, - UserNo = x, - - + UserNo = x }).ToList(); await _dbContext.InsertAsync(entities); diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/MealUserService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoMealService.cs similarity index 81% rename from Src/Dlhis.Basic/Organization/Services/Implements/MealUserService.cs rename to Src/Dlhis.Basic/Organization/Services/Implements/GainfoMealService.cs index a4a4ec13..5273418d 100644 --- a/Src/Dlhis.Basic/Organization/Services/Implements/MealUserService.cs +++ b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoMealService.cs @@ -13,18 +13,18 @@ using SqlSugar; namespace Dlhis.Basic.Organization.Services.Implements; -public class MealUserService : IMealUserService +public class GainfoMealService : IGainfoMealService { private readonly IDbContext _dbContext; private readonly ICurrentUser _currentUser; - public MealUserService(IDbContext dbContext, ICurrentUser currentUser) + public GainfoMealService(IDbContext dbContext, ICurrentUser currentUser) { _dbContext = dbContext; _currentUser = currentUser; } - public async Task> GetPageAsync(PageDto request) + public async Task> GetPageAsync(GainfoMealPageRequest request) { var tenantId = _currentUser.GetStringTenantId(); @@ -37,11 +37,11 @@ public class MealUserService : IMealUserService || gainfo.Name.Contains(request.Search) || gainfoLeave.Name.Contains(request.Search)) .Where((meal, gainfo, gainfoLeave) => gainfo.Factory == tenantId || gainfoLeave.Factory == tenantId) - .Select((meal, gainfo, gainfoLeave, dept1, dept2) => new MealUserResponse + .Select((meal, gainfo, gainfoLeave, dept1, dept2) => new GainfoMealResponse { Balance = meal.Balance, - BalanceOfRecharge = meal.BalanceOfRecharge, - BalanceOfSubsidies = meal.BalanceOfSubsidies, + // BalanceOfRecharge = meal.BalanceOfRecharge, + // BalanceOfSubsidies = meal.BalanceOfSubsidies, UserCode = meal.UserCode, UserName = SqlFunc.IsNull(gainfo.Name, gainfoLeave.Name), UserNo = SqlFunc.IsNull(gainfo.No, gainfoLeave.No), @@ -49,6 +49,21 @@ public class MealUserService : IMealUserService }) .ToPageListAsync(request); + var userCodes = page.Data.Select(x => x.UserCode).ToList(); + var summary = await _dbContext.Queryable() + .Where(x => userCodes.Contains(x.Code)) + .WhereIF(request.DateTimePeriod?.Start.HasValue == true && request.DateTimePeriod?.End.HasValue == true, + x => x.Date >= request.DateTimePeriod.Start && x.Date <= request.DateTimePeriod.End) + .GroupBy(x => x.Code) + .Select(x => new + { + x.Code, + Amount = SqlFunc.AggregateSum(x.Amount) + }) + .ToListAsync(); + + page.Data.ForEach(x => { x.MealSupplementAmount = summary.FirstOrDefault(item => item.Code == x.UserCode)?.Amount ?? 0; }); + return page; } @@ -72,7 +87,7 @@ public class MealUserService : IMealUserService .SetColumns(x => x.Version == x.Version + 1) .Where(x => x.UserCode == request.BeforeCode) //不需要判断version .ExecuteCommandAsync(); - + //转移到现有人员 var gainfo = await _dbContext.Queryable().Where(x => x.Code == request.NowCode).SingleAsync(); gainfo.ThrowIfNull("目标人员不存在"); diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoOutsourceService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoOutsourceService.cs index a20dd2d1..c4913e66 100644 --- a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoOutsourceService.cs +++ b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoOutsourceService.cs @@ -27,8 +27,15 @@ public class GainfoOutsourceService : IGainfoOutsourceService public async Task SaveAsync(GainfoOutsourceRequest request) { 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("对接人不属于当前基地"); + var sapCodeExists = await _dbContext.Queryable() + .Where(x => x.Code == request.ExternalInfo.SapCode) + .AnyAsync(); + sapCodeExists.ThrowIfFalse("对接人不存在"); + var isOutsource = await _dbContext.Queryable() + .Where(x => x.Code == request.ExternalInfo.SapCode) + .AnyAsync(); + isOutsource.ThrowIfTrue("对接人不可为外包人员"); + if (!request.Id.HasValue) {