From 4f9cd67fea866bc9d88d117ce6491abf5452b18d Mon Sep 17 00:00:00 2001 From: liguoyang Date: Fri, 18 Apr 2025 13:45:10 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E5=8D=95=E7=8B=AC=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Order/Controllers/BalancesController.cs | 13 ++++ .../Order/Services/IBalanceService.cs | 6 +- .../Services/Implements/BalanceService.cs | 74 ++++++++++++++++--- 3 files changed, 82 insertions(+), 11 deletions(-) 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;