fix 就餐人员餐补总额显示

This commit is contained in:
2024-06-19 14:36:40 +08:00
parent 8a45ec51e9
commit 396593b239
10 changed files with 77 additions and 35 deletions

View File

@@ -57,7 +57,7 @@ public class DeviceService : IDeviceService
public async Task SaveAsync(DeviceSaveRequest request) public async Task SaveAsync(DeviceSaveRequest request)
{ {
await CheckUniqueNoExistsAsync(request); await CheckUniqueNoExistsAsync(request);
var template = await CheckTemplateExistsAsync(request.TemplateCode); await CheckTemplateExistsAsync(request.TemplateCode);
await CheckTemplateFieldAsync(request.TemplateCode, request.ConnectionInfo); await CheckTemplateFieldAsync(request.TemplateCode, request.ConnectionInfo);
DeviceEntity entity; DeviceEntity entity;
@@ -128,7 +128,6 @@ public class DeviceService : IDeviceService
if (item.Type == DeviceTypeEnumType.Meal) if (item.Type == DeviceTypeEnumType.Meal)
{ {
var registry = await _dbContext.Queryable<DeviceRegistryEntity>().Where(x => x.DeviceUniqueNo == item.UniqueNo).FirstAsync(); var registry = await _dbContext.Queryable<DeviceRegistryEntity>().Where(x => x.DeviceUniqueNo == item.UniqueNo).FirstAsync();
businessPlaces.Any(x => x.Code == item.BusinessPlaceCode).ThrowIfFalse("营业点不存在"); businessPlaces.Any(x => x.Code == item.BusinessPlaceCode).ThrowIfFalse("营业点不存在");
registry.BusinessPlaceCode = item.BusinessPlaceCode; registry.BusinessPlaceCode = item.BusinessPlaceCode;

View File

@@ -16,9 +16,9 @@ namespace Dlhis.Basic.Organization.Controllers;
[ApiController] [ApiController]
public class GainfoMealController : ControllerBase public class GainfoMealController : ControllerBase
{ {
private readonly IMealUserService _mealUserService; private readonly IGainfoMealService _mealUserService;
public GainfoMealController(IMealUserService mealUserService) public GainfoMealController(IGainfoMealService mealUserService)
{ {
_mealUserService = mealUserService; _mealUserService = mealUserService;
} }
@@ -29,7 +29,7 @@ public class GainfoMealController : ControllerBase
/// <param name="request"></param> /// <param name="request"></param>
/// <returns></returns> /// <returns></returns>
[HttpGet("page")] [HttpGet("page")]
public async Task<Pagination<MealUserResponse>> GetPageAsync([FromQuery] PageDto request) public async Task<Pagination<GainfoMealResponse>> GetPageAsync([FromQuery] GainfoMealPageRequest request)
{ {
return await _mealUserService.GetPageAsync(request); return await _mealUserService.GetPageAsync(request);
} }

View File

@@ -13,5 +13,5 @@ public class GainfoAssignRequest
/// <summary> /// <summary>
/// 档案号 /// 档案号
/// </summary> /// </summary>
public List<string> UserNos { get; set; } = new List<string>(); public List<string> UserNos { get; set; } = new();
} }

View File

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

View File

@@ -4,7 +4,7 @@ using Dlhis.Entity.Basic.Enums;
namespace Dlhis.Basic.Organization.Request; namespace Dlhis.Basic.Organization.Request;
public class GainfoOutsourceRequest public class GainfoOutsourceRequest : IValidatableObject
{ {
public long? Id { get; set; } public long? Id { get; set; }
@@ -68,4 +68,13 @@ public class GainfoOutsourceRequest
/// </summary> /// </summary>
[Required] [Required]
public GainfoOutSourceExternalInfoDto ExternalInfo { get; set; } public GainfoOutSourceExternalInfoDto ExternalInfo { get; set; }
/// <inheritdoc />
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (Code == ExternalInfo.SapCode)
{
yield return new ValidationResult("工号和对接人工号不可相同", new[] { nameof(Code) });
}
}
} }

View File

@@ -1,6 +1,6 @@
namespace Dlhis.Basic.Organization.Response; namespace Dlhis.Basic.Organization.Response;
public class MealUserResponse public class GainfoMealResponse
{ {
/// <summary> /// <summary>
/// 档案号 /// 档案号
@@ -19,19 +19,24 @@ public class MealUserResponse
/// </summary> /// </summary>
public decimal Balance { get; set; } public decimal Balance { get; set; }
/// <summary> // /// <summary>
/// 余额(充值) // /// 余额(充值)
/// </summary> // /// </summary>
public decimal BalanceOfRecharge { get; set; } // public decimal BalanceOfRecharge { get; set; }
//
//
/// <summary> // /// <summary>
/// 余额(餐补) // /// 余额(餐补)
/// </summary> // /// </summary>
public decimal BalanceOfSubsidies { get; set; } // public decimal BalanceOfSubsidies { get; set; }
/// <summary> /// <summary>
/// 部门名称 /// 部门名称
/// </summary> /// </summary>
public string DepartmentName { get; set; } public string DepartmentName { get; set; }
/// <summary>
/// 餐补总额
/// </summary>
public decimal? MealSupplementAmount { get; set; }
} }

View File

@@ -4,9 +4,9 @@ using Kurisu.AspNetCore.DataAccess.Dto;
namespace Dlhis.Basic.Organization.Services; namespace Dlhis.Basic.Organization.Services;
public interface IMealUserService : IScopeDependency public interface IGainfoMealService : IScopeDependency
{ {
Task<Pagination<MealUserResponse>> GetPageAsync(PageDto request); Task<Pagination<GainfoMealResponse>> GetPageAsync(GainfoMealPageRequest request);
Task MigrationAsync(GainfoBalanceMigrationRequest request); Task MigrationAsync(GainfoBalanceMigrationRequest request);
} }

View File

@@ -107,9 +107,7 @@ public class GainfoGroupService : IGainfoGroupService
var entities = request.UserNos.Select(x => new GainfoGroupRelationshipEntity var entities = request.UserNos.Select(x => new GainfoGroupRelationshipEntity
{ {
GroupCode = request.GroupCode, GroupCode = request.GroupCode,
UserNo = x, UserNo = x
}).ToList(); }).ToList();
await _dbContext.InsertAsync(entities); await _dbContext.InsertAsync(entities);

View File

@@ -13,18 +13,18 @@ using SqlSugar;
namespace Dlhis.Basic.Organization.Services.Implements; namespace Dlhis.Basic.Organization.Services.Implements;
public class MealUserService : IMealUserService public class GainfoMealService : IGainfoMealService
{ {
private readonly IDbContext _dbContext; private readonly IDbContext _dbContext;
private readonly ICurrentUser _currentUser; private readonly ICurrentUser _currentUser;
public MealUserService(IDbContext dbContext, ICurrentUser currentUser) public GainfoMealService(IDbContext dbContext, ICurrentUser currentUser)
{ {
_dbContext = dbContext; _dbContext = dbContext;
_currentUser = currentUser; _currentUser = currentUser;
} }
public async Task<Pagination<MealUserResponse>> GetPageAsync(PageDto request) public async Task<Pagination<GainfoMealResponse>> GetPageAsync(GainfoMealPageRequest request)
{ {
var tenantId = _currentUser.GetStringTenantId(); var tenantId = _currentUser.GetStringTenantId();
@@ -37,11 +37,11 @@ public class MealUserService : IMealUserService
|| gainfo.Name.Contains(request.Search) || gainfo.Name.Contains(request.Search)
|| gainfoLeave.Name.Contains(request.Search)) || gainfoLeave.Name.Contains(request.Search))
.Where((meal, gainfo, gainfoLeave) => gainfo.Factory == tenantId || gainfoLeave.Factory == tenantId) .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, Balance = meal.Balance,
BalanceOfRecharge = meal.BalanceOfRecharge, // BalanceOfRecharge = meal.BalanceOfRecharge,
BalanceOfSubsidies = meal.BalanceOfSubsidies, // BalanceOfSubsidies = meal.BalanceOfSubsidies,
UserCode = meal.UserCode, UserCode = meal.UserCode,
UserName = SqlFunc.IsNull(gainfo.Name, gainfoLeave.Name), UserName = SqlFunc.IsNull(gainfo.Name, gainfoLeave.Name),
UserNo = SqlFunc.IsNull(gainfo.No, gainfoLeave.No), UserNo = SqlFunc.IsNull(gainfo.No, gainfoLeave.No),
@@ -49,6 +49,21 @@ public class MealUserService : IMealUserService
}) })
.ToPageListAsync(request); .ToPageListAsync(request);
var userCodes = page.Data.Select(x => x.UserCode).ToList();
var summary = await _dbContext.Queryable<MealSupplementRecordEntity>()
.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; return page;
} }

View File

@@ -27,8 +27,15 @@ public class GainfoOutsourceService : IGainfoOutsourceService
public async Task SaveAsync(GainfoOutsourceRequest request) public async Task SaveAsync(GainfoOutsourceRequest request)
{ {
await CheckDuplicate(request.IdNo, request.Code); 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(); var sapCodeExists = await _dbContext.Queryable<GainfoEntity>()
sapCodeExists.ThrowIfFalse("对接人不属于当前基地"); .Where(x => x.Code == request.ExternalInfo.SapCode)
.AnyAsync();
sapCodeExists.ThrowIfFalse("对接人不存在");
var isOutsource = await _dbContext.Queryable<OutsourceEntity>()
.Where(x => x.Code == request.ExternalInfo.SapCode)
.AnyAsync();
isOutsource.ThrowIfTrue("对接人不可为外包人员");
if (!request.Id.HasValue) if (!request.Id.HasValue)
{ {