fix 就餐人员餐补总额显示
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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; }
|
||||||
|
}
|
||||||
@@ -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) });
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -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; }
|
||||||
}
|
}
|
||||||
@@ -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);
|
||||||
}
|
}
|
||||||
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -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)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user