feat 用户集团消费数据

This commit is contained in:
2024-08-16 14:46:14 +08:00
parent 9b3a4fd0b5
commit d72fc4a7b1
4 changed files with 71 additions and 0 deletions

View File

@@ -111,6 +111,18 @@ public class BalancesController : ControllerBase
return await _balanceService.GetPageByUserAsync(request);
}
/// <summary>
/// 用户集团消费记录
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpGet("user/group/page")]
[IgnoreTenant]
public async Task<Pagination<BalanceRecordUserPageResponse>> GetUserBalanceGroupAsync(BalanceRecordUserGroupPageRequest request)
{
return await _balanceService.GetUserBalanceGroupAsync(request);
}
/// <summary>
/// 获取消费机总数、离线设备数量、营业点数量、可消费人数、人均日消费额
/// </summary>

View File

@@ -0,0 +1,30 @@
using System.ComponentModel.DataAnnotations;
using Kurisu.AspNetCore.CustomClass;
using Kurisu.AspNetCore.DataAccess.Dto;
namespace Dlhis.Canteen.Order.Request;
public class BalanceRecordUserGroupPageRequest : PageDto, IValidatableObject
{
/// <summary>
/// 日期范围查询
/// </summary>
public DateTimePeriod SearchDateTimePeriod { get; set; }
/// <summary>
/// 工号
/// </summary>
[Required(ErrorMessage = "工号不可为空")]
public string UserCode { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (SearchDateTimePeriod is { End: not null })
{
SearchDateTimePeriod.End = SearchDateTimePeriod.End.Value.AddDays(1).AddSeconds(-1);
}
yield break;
}
}

View File

@@ -12,6 +12,10 @@ public interface IBalanceService : IScopeDependency
Task<BalanceRecordUserResultResponse> GetPageByUserAsync(BalanceRecordUserPageRequest request);
Task<Pagination<BalanceRecordUserPageResponse>> GetUserBalanceGroupAsync(BalanceRecordUserGroupPageRequest request);
Task SupplementBalanceAsync(BalanceSupplementRequest request);
/// <summary>

View File

@@ -382,6 +382,31 @@ public class BalanceService : IBalanceService
};
}
public async Task<Pagination<BalanceRecordUserPageResponse>> GetUserBalanceGroupAsync(BalanceRecordUserGroupPageRequest request)
{
return await _dbContext.Queryable<BalanceRecordEntity>()
.LeftJoin<GainfoEntity>((record, ga) => record.UserNo == ga.No)
.LeftJoin<DepartmentEntity>((record, ga, department) => ga.DepartmentNo == department.No)
.LeftJoin<BusinessPlaceEntity>((record, ga, department, bPlace) => record.BusinessPlaceCode == bPlace.Code)
.Where((record, ga) => record.UserCode == request.UserCode)
.Where(record => record.Status == BalanceRecordStatusEnumType.Valid && record.Type == BalanceRecordTypeEnumType.Out)
.Where(record => record.Source != BalanceRecordSourceEnumType.EMealVoucher) //不展示电子餐券信息
.WhereIF(request.SearchDateTimePeriod.HasValue(), record => record.CostDate >= request.SearchDateTimePeriod.Start && record.CostDate <= request.SearchDateTimePeriod.End)
.OrderBy(record => record.CostDateTime)
.Select((record, ga, department, bPlace) => new BalanceRecordUserPageResponse
{
Id = record.Id,
CurrentAmount = SqlFunc.Abs(record.Amount),
Source = record.Source,
No = record.No,
BusinessPlaceName = bPlace.Name,
ShiftType = record.ShiftType,
CostDateTime = record.CostDateTime,
ApplicationType = record.ApplicationType,
})
.ToPageListAsync(request);
}
public async Task<ConsumeNumberResponse> GetConsumeNumberAsync()
{