feat 单独导出接口

This commit is contained in:
2025-04-18 13:45:10 +08:00
parent 61bf7e67e0
commit 4f9cd67fea
3 changed files with 82 additions and 11 deletions

View File

@@ -36,6 +36,19 @@ public class BalancesController : ControllerBase
return await _balanceService.GetPageAsync(request);
}
/// <summary>
/// 数据导出
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpGet("export")]
[IgnoreTenant]
public async Task<List<BalanceRecordResponse>> GetPageToExportAsync([FromQuery] BalanceRecordPageRequest request)
{
return await _balanceService.GetPageToExportAsync(request);
}
/// <summary>
/// 修补餐补明细
/// </summary>

View File

@@ -8,12 +8,14 @@ public interface IBalanceService : IScopeDependency
{
Task<Pagination<BalanceRecordResponse>> GetPageAsync(BalanceRecordPageRequest request);
Task<List<BalanceRecordResponse>> GetPageToExportAsync(BalanceRecordPageRequest request);
Task<Pagination<BalanceRecordDeviceResponse>> GetPageByDeviceUniqueNoAsync(BalanceRecordPageByDeviceUniqueNoRequest request);
Task<BalanceRecordUserResultResponse> GetPageByUserAsync(BalanceRecordUserPageRequest request);
Task<Pagination<BalanceRecordResponse>> GetUserBalanceGroupAsync(BalanceRecordUserGroupPageRequest request);
Task SupplementBalanceAsync(BalanceSupplementRequest request);
/// <summary>

View File

@@ -57,20 +57,18 @@ public class BalanceService : IBalanceService
var page = await _dbContext.Queryable<BalanceRecordEntity>()
.LeftJoin<DepartmentEntity>((record, department) => record.DepartmentNo == department.No)
.LeftJoin<BusinessPlaceEntity>((record, department, bPlace) => record.BusinessPlaceCode == bPlace.Code)
.LeftJoin<CanteenOrderEntity>((record, department, bPlace, order) => record.No == order.No)
.WhereIF(request.Factory.IsPresent(), record => record.TenantId == request.Factory)
.WhereIF(request.SearchDateTimePeriod.HasValue(), record => record.CostDate >= request.SearchDateTimePeriod.Start && record.CostDate <= request.SearchDateTimePeriod.End)
.WhereIF(request.Factory.IsPresent(), record => record.TenantId == request.Factory)
.WhereIF(request.Type.HasValue, record => record.Type == request.Type)
.WhereIF(request.ShiftTypes.IsPresent(), record => request.ShiftTypes.Contains(record.ShiftType))
.WhereIF(request.UserCode.IsPresent(), record => record.UserCode == request.UserCode)
.WhereIF(request.UserName.IsPresent(), record => record.Name == request.UserName)
.WhereIF(request.FromFactory.IsPresent(), record => record.OriginTenantId == request.FromFactory)
.OrderBy(record => record.CreateTime, OrderByType.Desc)
.Select((record, department, bPlace, order) => new BalanceRecordResponse
.Select((record, department, bPlace) => new BalanceRecordResponse
{
Id = record.Id,
No = record.No,
IsOffline = order.IsOffline,
Amount = record.Amount,
CostDate = record.CostDate,
CostId = record.CostId,
@@ -111,6 +109,64 @@ public class BalanceService : IBalanceService
return page;
}
/// <inheritdoc />
public async Task<List<BalanceRecordResponse>> GetPageToExportAsync(BalanceRecordPageRequest request)
{
var rows = await _dbContext.Queryable<BalanceRecordEntity>()
.LeftJoin<DepartmentEntity>((record, department) => record.DepartmentNo == department.No)
.LeftJoin<BusinessPlaceEntity>((record, department, bPlace) => record.BusinessPlaceCode == bPlace.Code)
.WhereIF(request.SearchDateTimePeriod.HasValue(), record => record.CostDate >= request.SearchDateTimePeriod.Start && record.CostDate <= request.SearchDateTimePeriod.End)
.WhereIF(request.Factory.IsPresent(), record => record.TenantId == request.Factory)
.WhereIF(request.Type.HasValue, record => record.Type == request.Type)
.WhereIF(request.ShiftTypes.IsPresent(), record => request.ShiftTypes.Contains(record.ShiftType))
.WhereIF(request.UserCode.IsPresent(), record => record.UserCode == request.UserCode)
.WhereIF(request.UserName.IsPresent(), record => record.Name == request.UserName)
.WhereIF(request.FromFactory.IsPresent(), record => record.OriginTenantId == request.FromFactory)
.OrderBy(record => record.CreateTime, OrderByType.Desc)
.Select((record, department, bPlace) => new BalanceRecordResponse
{
Id = record.Id,
No = record.No,
Amount = record.Amount,
CostDate = record.CostDate,
CostId = record.CostId,
DepartmentNo = record.DepartmentNo,
DeviceInfo = record.DeviceUniqueNo,
UserNo = record.UserNo,
UserCode = record.UserCode,
Type = record.Type,
Status = record.Status,
Source = record.Source,
OriginTenantId = record.OriginTenantId,
Name = record.Name,
DepartmentName = department.Name,
BusinessPlaceName = bPlace.Name,
CostDateTime = record.CostDateTime,
Factory = record.TenantId,
ShiftType = record.ShiftType,
Remark = record.Remark,
Werks = record.Werks
})
.ToListAsync();
try
{
var tenants = await _tenantApi.GetTenantsInternalAsync();
rows.ForEach(item =>
{
item.OriginTenantId = tenants.FirstOrDefault(x => x.Code == item.OriginTenantId)?.Name;
item.Factory = tenants.FirstOrDefault(x => x.Code == item.Factory)?.Name;
});
}
catch (Exception)
{
//ignore
}
return rows;
}
public async Task RefundAsync(string no)
{
var cache = App.GetServiceProvider().GetService<RedisCache>();
@@ -234,11 +290,11 @@ public class BalanceService : IBalanceService
public async Task<BalanceRecordByBusinessPlaceResponse> RecordPageDetailsAsync(BalanceRecordPageDetailRequest request)
{
var myCodes = (await _businessPlacePermissionsApi.GetMyAsync()).Select(x => (Guid?)x.Code).ToList();
if (request.BusinessplaceCodes.IsPresent())
{
myCodes = myCodes.Where(x => request.BusinessplaceCodes.Contains(x)).ToList();
}
var myCodes = (await _businessPlacePermissionsApi.GetMyAsync()).Select(x => (Guid?)x.Code).ToList();
if (request.BusinessplaceCodes.IsPresent())
{
myCodes = myCodes.Where(x => request.BusinessplaceCodes.Contains(x)).ToList();
}
//var myCodes = request.BusinessplaceCodes;