diff --git a/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs b/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs
index d5e49acb..ee707e15 100644
--- a/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs
+++ b/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs
@@ -36,6 +36,19 @@ public class BalancesController : ControllerBase
return await _balanceService.GetPageAsync(request);
}
+ ///
+ /// 数据导出
+ ///
+ ///
+ ///
+ [HttpGet("export")]
+ [IgnoreTenant]
+ public async Task> GetPageToExportAsync([FromQuery] BalanceRecordPageRequest request)
+ {
+ return await _balanceService.GetPageToExportAsync(request);
+ }
+
+
///
/// 修补餐补明细
///
diff --git a/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs b/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs
index 0c7b9c39..00961c61 100644
--- a/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs
+++ b/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs
@@ -8,12 +8,14 @@ public interface IBalanceService : IScopeDependency
{
Task> GetPageAsync(BalanceRecordPageRequest request);
+ Task> GetPageToExportAsync(BalanceRecordPageRequest request);
+
Task> GetPageByDeviceUniqueNoAsync(BalanceRecordPageByDeviceUniqueNoRequest request);
Task GetPageByUserAsync(BalanceRecordUserPageRequest request);
-
+
Task> GetUserBalanceGroupAsync(BalanceRecordUserGroupPageRequest request);
-
+
Task SupplementBalanceAsync(BalanceSupplementRequest request);
///
diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs
index af215b13..45c01310 100644
--- a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs
+++ b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs
@@ -57,20 +57,18 @@ public class BalanceService : IBalanceService
var page = await _dbContext.Queryable()
.LeftJoin((record, department) => record.DepartmentNo == department.No)
.LeftJoin((record, department, bPlace) => record.BusinessPlaceCode == bPlace.Code)
- .LeftJoin((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;
}
+ ///
+ public async Task> GetPageToExportAsync(BalanceRecordPageRequest request)
+ {
+ var rows = await _dbContext.Queryable()
+ .LeftJoin((record, department) => record.DepartmentNo == department.No)
+ .LeftJoin((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();
@@ -234,11 +290,11 @@ public class BalanceService : IBalanceService
public async Task 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;