diff --git a/Src/Dlhis.Canteen/Order/Controllers/BalanceSummaryController.cs b/Src/Dlhis.Canteen/Order/Controllers/BalanceSummaryController.cs
index 898750ae..78876c22 100644
--- a/Src/Dlhis.Canteen/Order/Controllers/BalanceSummaryController.cs
+++ b/Src/Dlhis.Canteen/Order/Controllers/BalanceSummaryController.cs
@@ -35,7 +35,7 @@ public class BalanceSummaryController : ControllerBase
}
///
- /// 餐次用餐分析,统计部门金额和消费人数
+ /// 部门用餐分析,统计部门金额和消费人数
///
[HttpGet("department/analysis/amountAndCount")]
public async Task> BalanceRecordAnalysisByDepartmentAsync([FromQuery] SummaryCommonDto request)
@@ -44,7 +44,7 @@ public class BalanceSummaryController : ControllerBase
}
///
- /// 餐次用餐分析,统计成本中心金额和消费人数
+ /// 成本中心用餐分析,统计成本中心金额和消费人数
///
[HttpGet("costId/analysis/amountAndCount")]
public async Task> BalanceRecordAnalysisByCostAsync([FromQuery] SummaryCommonDto request)
@@ -71,4 +71,15 @@ public class BalanceSummaryController : ControllerBase
{
return await _balanceSummaryService.BalanceRecordShiftAnalysisAmountAndCountAsync(request);
}
+
+ ///
+ /// 厂区就餐分析,统计金额和人数
+ ///
+ ///
+ ///
+ [HttpGet("factory/analysis/amountAndUserCount")]
+ public async Task> BalanceRecordAnalysisByFactoryAsync([FromQuery] SummaryCommonDto request)
+ {
+ return await _balanceSummaryService.BalanceRecordAnalysisByFactoryAsync(request);
+ }
}
\ No newline at end of file
diff --git a/Src/Dlhis.Canteen/Order/Response/BalanceRecordAnalysisFactoryAmountAndCountResponse.cs b/Src/Dlhis.Canteen/Order/Response/BalanceRecordAnalysisFactoryAmountAndCountResponse.cs
new file mode 100644
index 00000000..f07c829c
--- /dev/null
+++ b/Src/Dlhis.Canteen/Order/Response/BalanceRecordAnalysisFactoryAmountAndCountResponse.cs
@@ -0,0 +1,9 @@
+namespace Dlhis.Canteen.Order.Response;
+
+public class BalanceRecordAnalysisFactoryAmountAndCountResponse
+{
+ public string Factory { get; set; }
+ public string FactoryName { get; set; }
+ public decimal Amount { get; set; }
+ public int UserCount { get; set; }
+}
\ No newline at end of file
diff --git a/Src/Dlhis.Canteen/Order/Services/IBalanceSummaryService.cs b/Src/Dlhis.Canteen/Order/Services/IBalanceSummaryService.cs
index 65fdd22e..4bcfa7dd 100644
--- a/Src/Dlhis.Canteen/Order/Services/IBalanceSummaryService.cs
+++ b/Src/Dlhis.Canteen/Order/Services/IBalanceSummaryService.cs
@@ -10,11 +10,12 @@ public interface IBalanceSummaryService : IScopeDependency
Task BalanceRecordAnalysisAsync(BalanceRecordAnalysisRequest request);
Task> BalanceRecordAnalysisByDepartmentAsync(SummaryCommonDto request);
-
+
Task> BalanceRecordAnalysisByCostAsync(SummaryCommonDto request);
Task BalanceRecordShiftAnalysisAmountAsync(BalanceRecordAnalysisByShiftRequest request);
Task BalanceRecordShiftAnalysisAmountAndCountAsync(BalanceRecordAnalysisByShiftRequest request);
+ Task> BalanceRecordAnalysisByFactoryAsync(SummaryCommonDto request);
}
\ No newline at end of file
diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceSummaryService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceSummaryService.cs
index f22fb99a..0282fb22 100644
--- a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceSummaryService.cs
+++ b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceSummaryService.cs
@@ -6,6 +6,7 @@ using Dlhis.Canteen.Order.Response;
using Dlhis.Entity.Basic.Entity;
using Dlhis.Entity.Canteen.Entities;
using Dlhis.Entity.Canteen.Enums;
+using Dlhis.Sys.Api;
using Kurisu.AspNetCore.CustomClass;
using Kurisu.AspNetCore.DataAccess.Dto;
using Kurisu.AspNetCore.DataAccess.Extensions;
@@ -18,10 +19,12 @@ namespace Dlhis.Canteen.Order.Services.Implements;
public class BalanceSummaryService : IBalanceSummaryService
{
private readonly IDbContext _dbContext;
+ private readonly ITenantApi _tenantApi;
- public BalanceSummaryService(IDbContext dbContext)
+ public BalanceSummaryService(IDbContext dbContext, ITenantApi tenantApi)
{
_dbContext = dbContext;
+ _tenantApi = tenantApi;
}
public async Task BalanceRecordAnalysisAsync(BalanceRecordAnalysisRequest request)
@@ -146,6 +149,33 @@ public class BalanceSummaryService : IBalanceSummaryService
};
}
+ public async Task> BalanceRecordAnalysisByFactoryAsync(SummaryCommonDto request)
+ {
+ var queryable = GetQueryable(request);
+
+ var page = await queryable
+ .GroupBy(x => new { x.TenantId })
+ .Select(x => new BalanceRecordAnalysisFactoryAmountAndCountResponse
+ {
+ Factory = x.TenantId,
+ Amount = SqlFunc.AggregateSum(SqlFunc.Abs(x.Amount)),
+ UserCount = SqlFunc.AggregateDistinctCount(x.UserCode)
+ })
+ .ToPageListAsync(request);
+
+ try
+ {
+ var tenants = await _tenantApi.GetTenantsInternalAsync();
+ page.Data.ForEach(item => { item.Factory = tenants.FirstOrDefault(x => x.Code == item.Factory)?.Name; });
+ }
+ catch (Exception)
+ {
+ //ignore
+ }
+
+ return page;
+ }
+
//**************************************************************help method***********************************************************************
///
@@ -156,8 +186,8 @@ public class BalanceSummaryService : IBalanceSummaryService
private ISugarQueryable GetQueryable(SummaryCommonDto request)
{
return _dbContext.Queryable()
- .Where(x => x.Status == BalanceRecordStatusEnumType.Valid && x.Type == BalanceRecordTypeEnumType.Out) //有效,消费数据
.WhereIF(request.SearchDateTimePeriod.HasValue(), x => x.CostDate >= request.SearchDateTimePeriod.Start && x.CostDate <= request.SearchDateTimePeriod.End) //成本日期
+ .Where(x => x.Status == BalanceRecordStatusEnumType.Valid && x.Type == BalanceRecordTypeEnumType.Out) //有效,消费数据
.WhereIF(request.BusinessPlaceCodes?.Any() == true, x => request.BusinessPlaceCodes.Contains(x.BusinessPlaceCode.Value)); //营业点
}
}
\ No newline at end of file
diff --git a/Src/Dlhis.Canteen/Properties/launchSettings.json b/Src/Dlhis.Canteen/Properties/launchSettings.json
index 44a2ded1..34ee36b2 100644
--- a/Src/Dlhis.Canteen/Properties/launchSettings.json
+++ b/Src/Dlhis.Canteen/Properties/launchSettings.json
@@ -6,7 +6,7 @@
"ASPNETCORE_ENVIRONMENT": "Development"
},
"dotnetRunMessages": true,
- "applicationUrl": "http://localhost:5008"
+ "applicationUrl": "http://*:5008"
},
"Container (Dockerfile)": {
"commandName": "Docker",