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)
{
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<DeviceRegistryEntity>().Where(x => x.DeviceUniqueNo == item.UniqueNo).FirstAsync();
businessPlaces.Any(x => x.Code == item.BusinessPlaceCode).ThrowIfFalse("营业点不存在");
registry.BusinessPlaceCode = item.BusinessPlaceCode;

View File

@@ -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
/// <param name="request"></param>
/// <returns></returns>
[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);
}

View File

@@ -13,5 +13,5 @@ public class GainfoAssignRequest
/// <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;
public class GainfoOutsourceRequest
public class GainfoOutsourceRequest : IValidatableObject
{
public long? Id { get; set; }
@@ -68,4 +68,13 @@ public class GainfoOutsourceRequest
/// </summary>
[Required]
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;
public class MealUserResponse
public class GainfoMealResponse
{
/// <summary>
/// 档案号
@@ -19,19 +19,24 @@ public class MealUserResponse
/// </summary>
public decimal Balance { get; set; }
/// <summary>
/// 余额(充值)
/// </summary>
public decimal BalanceOfRecharge { get; set; }
/// <summary>
/// 余额(餐补)
/// </summary>
public decimal BalanceOfSubsidies { get; set; }
// /// <summary>
// /// 余额(充值)
// /// </summary>
// public decimal BalanceOfRecharge { get; set; }
//
//
// /// <summary>
// /// 余额(餐补)
// /// </summary>
// public decimal BalanceOfSubsidies { get; set; }
/// <summary>
/// 部门名称
/// </summary>
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;
public interface IMealUserService : IScopeDependency
public interface IGainfoMealService : IScopeDependency
{
Task<Pagination<MealUserResponse>> GetPageAsync(PageDto request);
Task<Pagination<GainfoMealResponse>> GetPageAsync(GainfoMealPageRequest request);
Task MigrationAsync(GainfoBalanceMigrationRequest request);
}

View File

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

View File

@@ -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<Pagination<MealUserResponse>> GetPageAsync(PageDto request)
public async Task<Pagination<GainfoMealResponse>> 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<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;
}

View File

@@ -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<GainfoEntity>().Where(x => x.Factory == request.Factory).Where(x => x.Code == request.ExternalInfo.SapCode).AnyAsync();
sapCodeExists.ThrowIfFalse("对接人不属于当前基地");
var sapCodeExists = await _dbContext.Queryable<GainfoEntity>()
.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)
{