From 6128e9acd23166d4e123115a682ddee5630a2d8d Mon Sep 17 00:00:00 2001 From: liguoyang Date: Mon, 15 Jul 2024 11:25:15 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E7=A7=BB=E9=99=A4=E6=97=A0=E7=94=A8?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/BalanceSummaryController.cs | 11 +- .../Order/Controllers/BalancesController.cs | 11 -- .../Order/Controllers/OrdersController.cs | 14 -- .../Request/BalanceRecordAnalysisRequest.cs | 2 +- .../Request/BalanceRecordPageDetailRequest.cs | 8 +- .../Order/Request/ConsumptionTrendRequest.cs | 12 -- .../Order/Request/ReCalcOfflineRequest.cs | 10 -- .../Order/Request/UpdateOfflineRequest.cs | 7 - .../Order/Response/AverageDailyResponse.cs | 2 +- .../BalanceRecordAnalysisByCostResponse.cs | 6 + .../Order/Services/IBalanceService.cs | 2 - .../Order/Services/IBalanceSummaryService.cs | 2 + .../Order/Services/IOrderService.cs | 4 - .../Services/Implements/BalanceService.cs | 156 ++++-------------- .../Implements/BalanceSummaryService.cs | 47 +++++- .../Order/Services/Implements/OrderService.cs | 112 ------------- .../Enums/BalanceRecordSourceEnumType.cs | 5 + .../Canteen/Enums/ConsumptionTrendEnumType.cs | 24 --- 18 files changed, 95 insertions(+), 340 deletions(-) delete mode 100644 Src/Dlhis.Canteen/Order/Request/ConsumptionTrendRequest.cs delete mode 100644 Src/Dlhis.Canteen/Order/Request/ReCalcOfflineRequest.cs delete mode 100644 Src/Dlhis.Canteen/Order/Request/UpdateOfflineRequest.cs create mode 100644 Src/Dlhis.Canteen/Order/Response/BalanceRecordAnalysisByCostResponse.cs delete mode 100644 Src/Dlhis.Entity/Canteen/Enums/ConsumptionTrendEnumType.cs diff --git a/Src/Dlhis.Canteen/Order/Controllers/BalanceSummaryController.cs b/Src/Dlhis.Canteen/Order/Controllers/BalanceSummaryController.cs index 54a495de..cbbc899f 100644 --- a/Src/Dlhis.Canteen/Order/Controllers/BalanceSummaryController.cs +++ b/Src/Dlhis.Canteen/Order/Controllers/BalanceSummaryController.cs @@ -32,4 +32,13 @@ public class BalanceSummaryController : ControllerBase { return await _balanceSummaryService.BalanceRecordAnalysisAsync(request); } -} + + /// + /// 用餐分析(成本中心) + /// + [HttpGet("analysis/cost")] + public async Task> BalanceRecordAnalysisByCostIdAsync() + { + return await _balanceSummaryService.BalanceRecordAnalysisByCostIdAsync(); + } +} \ No newline at end of file diff --git a/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs b/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs index ba2cd638..67503ab2 100644 --- a/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs +++ b/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs @@ -126,17 +126,6 @@ public class BalancesController : ControllerBase return await _balanceService.AverageDailyAsync(request); } - /// - /// 获取消费机详情 - /// - /// - /// - [HttpGet("consumeDevices")] - public async Task> GetConsumeDeviceAsync([FromQuery] GetConsumeDeviceRequest request) - { - return await _balanceService.GetConsumeDeviceAsync(request); - } - /// /// 海宁餐补数据写入 /// diff --git a/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs b/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs index 2c0c6012..35bdf155 100644 --- a/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs +++ b/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs @@ -40,20 +40,6 @@ public class OrdersController : ControllerBase return await _orderService.AddAsync(request); } - [IgnoreTenant] - [HttpPost("ReCalcOffline")] - public async Task ReCalcOfflineAsync(ReCalcOfflineRequest request) - { - await _orderService.ReCalcOfflineAsync(request); - } - - [IgnoreTenant] - [HttpPost("UpdateOffline")] - public async Task UpdateOffline(UpdateOfflineRequest outRequest) - { - await _orderService.UpdateOffline(outRequest); - } - /// /// 设备发起订单 /// diff --git a/Src/Dlhis.Canteen/Order/Request/BalanceRecordAnalysisRequest.cs b/Src/Dlhis.Canteen/Order/Request/BalanceRecordAnalysisRequest.cs index e0cb0598..6995147b 100644 --- a/Src/Dlhis.Canteen/Order/Request/BalanceRecordAnalysisRequest.cs +++ b/Src/Dlhis.Canteen/Order/Request/BalanceRecordAnalysisRequest.cs @@ -15,7 +15,7 @@ public class BalanceRecordAnalysisRequest : PageDto, IValidatableObject public IEnumerable Validate(ValidationContext validationContext) { - if (SearchDateTimePeriod != null && SearchDateTimePeriod.End.HasValue) + if (SearchDateTimePeriod is { End: not null }) { SearchDateTimePeriod.End = SearchDateTimePeriod.End.Value.AddDays(1).AddSeconds(-1); } diff --git a/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageDetailRequest.cs b/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageDetailRequest.cs index 6a6d33ed..aa31a2f6 100644 --- a/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageDetailRequest.cs +++ b/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageDetailRequest.cs @@ -23,14 +23,12 @@ public class BalanceRecordPageDetailRequest : PageDto, IValidatableObject [EnumDataType(typeof(ShiftEnumType))] public ShiftEnumType? ShiftType { get; set; } + public IEnumerable Validate(ValidationContext validationContext) { - if (SearchDateTimePeriod != null) + if (SearchDateTimePeriod?.End != null) { - if (SearchDateTimePeriod.End.HasValue) - { - SearchDateTimePeriod.End = SearchDateTimePeriod.End.Value.AddDays(1).AddSeconds(-1); - } + SearchDateTimePeriod.End = SearchDateTimePeriod.End.Value.AddDays(1).AddSeconds(-1); } yield break; diff --git a/Src/Dlhis.Canteen/Order/Request/ConsumptionTrendRequest.cs b/Src/Dlhis.Canteen/Order/Request/ConsumptionTrendRequest.cs deleted file mode 100644 index d87a3ff3..00000000 --- a/Src/Dlhis.Canteen/Order/Request/ConsumptionTrendRequest.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Dlhis.Entity.Canteen.Enums; -using System.ComponentModel.DataAnnotations; - -namespace Dlhis.Canteen.Dishes.Request -{ - public class ConsumptionTrendRequest - { - [Required] - [EnumDataType(typeof(ConsumptionTrendEnumType))] - public ConsumptionTrendEnumType Type { get; set; } - } -} diff --git a/Src/Dlhis.Canteen/Order/Request/ReCalcOfflineRequest.cs b/Src/Dlhis.Canteen/Order/Request/ReCalcOfflineRequest.cs deleted file mode 100644 index 00d6e10b..00000000 --- a/Src/Dlhis.Canteen/Order/Request/ReCalcOfflineRequest.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace Dlhis.Canteen.Order.Request -{ - public class ReCalcOfflineRequest - { - [Required] - public string UserCode { get; set; } - } -} diff --git a/Src/Dlhis.Canteen/Order/Request/UpdateOfflineRequest.cs b/Src/Dlhis.Canteen/Order/Request/UpdateOfflineRequest.cs deleted file mode 100644 index c72a8a42..00000000 --- a/Src/Dlhis.Canteen/Order/Request/UpdateOfflineRequest.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Dlhis.Canteen.Order.Request -{ - public class UpdateOfflineRequest - { - public string No { get; set; } - } -} diff --git a/Src/Dlhis.Canteen/Order/Response/AverageDailyResponse.cs b/Src/Dlhis.Canteen/Order/Response/AverageDailyResponse.cs index e16606a0..01df623b 100644 --- a/Src/Dlhis.Canteen/Order/Response/AverageDailyResponse.cs +++ b/Src/Dlhis.Canteen/Order/Response/AverageDailyResponse.cs @@ -20,5 +20,5 @@ public class AverageDailyResponse /// /// 日消费均额 /// - public int AverageAmount { get; set; } + public decimal AverageAmount { get; set; } } diff --git a/Src/Dlhis.Canteen/Order/Response/BalanceRecordAnalysisByCostResponse.cs b/Src/Dlhis.Canteen/Order/Response/BalanceRecordAnalysisByCostResponse.cs new file mode 100644 index 00000000..d9c97fa5 --- /dev/null +++ b/Src/Dlhis.Canteen/Order/Response/BalanceRecordAnalysisByCostResponse.cs @@ -0,0 +1,6 @@ +namespace Dlhis.Canteen.Order.Response; + +public class BalanceRecordAnalysisByCostResponse +{ + +} \ No newline at end of file diff --git a/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs b/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs index f89f6c86..34cfce93 100644 --- a/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs +++ b/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs @@ -28,8 +28,6 @@ public interface IBalanceService : IScopeDependency Task> AverageDailyAsync(AverageDailyRequest request); - Task> GetConsumeDeviceAsync(GetConsumeDeviceRequest request); - Task HainingImportAsync(BalanceHainingImportRequest request); diff --git a/Src/Dlhis.Canteen/Order/Services/IBalanceSummaryService.cs b/Src/Dlhis.Canteen/Order/Services/IBalanceSummaryService.cs index 360270e7..d264c692 100644 --- a/Src/Dlhis.Canteen/Order/Services/IBalanceSummaryService.cs +++ b/Src/Dlhis.Canteen/Order/Services/IBalanceSummaryService.cs @@ -7,4 +7,6 @@ namespace Dlhis.Canteen.Order.Services; public interface IBalanceSummaryService : IScopeDependency { Task> BalanceRecordAnalysisAsync(BalanceRecordAnalysisRequest request); + + Task> BalanceRecordAnalysisByCostIdAsync(); } diff --git a/Src/Dlhis.Canteen/Order/Services/IOrderService.cs b/Src/Dlhis.Canteen/Order/Services/IOrderService.cs index 929ef4d8..a738db3f 100644 --- a/Src/Dlhis.Canteen/Order/Services/IOrderService.cs +++ b/Src/Dlhis.Canteen/Order/Services/IOrderService.cs @@ -8,10 +8,6 @@ namespace Dlhis.Canteen.Order.Services; public interface IOrderService : IScopeDependency { Task> AddAsync(OrderAddRequest request); - - Task ReCalcOfflineAsync(ReCalcOfflineRequest request); - - Task UpdateOffline(UpdateOfflineRequest outRequest); /// /// 设备消费 diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs index 74382ee9..9732d34d 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs @@ -9,6 +9,7 @@ using Dlhis.Entity.Device.Entities; using Dlhis.Entity.Device.Enums; using Dlhis.Sys.Api; using Kurisu.AspNetCore.Authentication.Abstractions; +using Kurisu.AspNetCore.CustomClass; using Kurisu.AspNetCore.DataAccess.Dto; using Kurisu.AspNetCore.DataAccess.SqlSugar.Extensions; using Kurisu.AspNetCore.DataAccess.SqlSugar.Services; @@ -187,10 +188,9 @@ public class BalanceService : IBalanceService .LeftJoin((record, department) => record.DepartmentNo == department.No) .LeftJoin((record, department, bPlace) => record.BusinessPlaceCode == bPlace.Code) .LeftJoin((record, department, bPlace, gainfo) => record.UserNo == gainfo.No) - .Where((record) => record.Type == BalanceRecordTypeEnumType.Out && record.Status == BalanceRecordStatusEnumType.Valid) + .Where(record => record.Type == BalanceRecordTypeEnumType.Out && record.Status == BalanceRecordStatusEnumType.Valid) .Where(record => myCodes.Contains(record.BusinessPlaceCode)) - .WhereIF(request.SearchDateTimePeriod?.Start.HasValue == true, record => record.CostDate >= request.SearchDateTimePeriod.Start) - .WhereIF(request.SearchDateTimePeriod?.End.HasValue == true, record => record.CostDate <= request.SearchDateTimePeriod.End) + .WhereIF(request.SearchDateTimePeriod.HasValue(), record => record.CostDate >= request.SearchDateTimePeriod.Start && record.CostDate <= request.SearchDateTimePeriod.End) .WhereIF(request.ShiftType.HasValue, record => record.ShiftType == request.ShiftType) .WhereIF(request.Search.IsPresent(), record => record.UserCode == request.Search || record.Name == request.Search); @@ -348,157 +348,59 @@ public class BalanceService : IBalanceService .Where(x => x.Status == CanteenBusinessPlaceStatusEnumType.Opened) .ToListAsync(); - //所有消费数据 var bs = await _dbContext.Queryable() .Where(x => x.Type == BalanceRecordTypeEnumType.Out) + .Where(x => x.Status == BalanceRecordStatusEnumType.Valid) .ToListAsync(); + //可消费人数 - var consumerable = bs.Select(x => x.UserCode).Distinct().Count(); - - var dailyNumber = SameDay(bs, ""); - + var consumerable = bs.DistinctBy(x => x.UserCode).Count(); //消费走势 - var months = await GetConsumptionTrendsAsync(ConsumptionTrendEnumType.Month); - var days = await GetConsumptionTrendsAsync(ConsumptionTrendEnumType.Day); + var months = await GetConsumptionTrendsAsync(1); + var days = await GetConsumptionTrendsAsync(2); - var res = new ConsumeNumberResponse + return new ConsumeNumberResponse { Total = devices.Count, OffNumber = offCount.Count, PlaceNumber = places.Count, ConsumerableNumber = consumerable, - DailyNumber = dailyNumber, + DailyNumber = 0, Days = days, Months = months }; - return res; - } - - /// - /// 获取单日消费数据 - /// - /// - /// - /// - private static int SameDay(List bs, string userCode) - { - var time = DateTime.Now.ToString("yyyy-MM-dd"); - var b = userCode.IsEmpty(); - //当日消费数据 - var monthbs = bs - .Where(x => x.CostDateTime.ToString("yyyy-MM-dd") == time) - .WhereIF(!userCode.IsEmpty(), x => x.UserCode == userCode); - //当日消费额 - var monthlySpending = monthbs.Sum(x => x.Amount); - //当日消费人数 - var monthlyCount = monthbs.Select(x => x.UserCode).Distinct().Count(); - var dailyNumber = monthlyCount != 0 ? Math.Abs((int)Math.Ceiling(monthlySpending / monthlyCount)) : 0; - return dailyNumber; } public async Task> GetSpendingDetailsAsync(SpendingDetailRequest request) { - var brs = await _dbContext + return await _dbContext .Queryable() .Where(x => x.Type == BalanceRecordTypeEnumType.Out) - .ToListAsync(); - var codes = brs.Select(x => x.UserCode).ToList().Distinct().ToList(); - - var lst = new List(); - foreach (var code in codes) - { - var br = brs.Where(x => x.UserCode == code).FirstOrDefault(); - var res = br.Adapt(); - lst.Add(res); - } - - // 分页操作 - var startIndex = (request.PageIndex - 1) * request.PageSize; - var pagedData = lst.Skip(startIndex).Take(request.PageSize).ToList(); - - var pagination = new Pagination - { - PageIndex = request.PageIndex, - PageSize = request.PageSize, - Total = lst.Count, // 使用原始列表的总数进行分页 - Data = pagedData - }; - - return pagination; + .Where(x => x.Status == BalanceRecordStatusEnumType.Valid) + .Select() + .Distinct() + .ToPageListAsync(request); } public async Task> AverageDailyAsync(AverageDailyRequest request) { - //所有消费数据 - var brs = await _dbContext.Queryable() + return await _dbContext.Queryable() .Where(x => x.Type == BalanceRecordTypeEnumType.Out) - .ToListAsync(); - var codes = brs.Select(x => x.UserCode).ToList().Distinct().ToList(); - - var lst = new List(); - foreach (var code in codes) - { - var br = brs.FirstOrDefault(x => x.UserCode == code); - var res = br.Adapt(); - var dailyNumber = SameDay(brs, code); - res.AverageAmount = dailyNumber; - lst.Add(res); - } - - // 分页操作 - var startIndex = (request.PageIndex - 1) * request.PageSize; - var pagedData = lst.Skip(startIndex).Take(request.PageSize).ToList(); - - var pagination = new Pagination - { - PageIndex = request.PageIndex, - PageSize = request.PageSize, - Total = lst.Count, // 使用原始列表的总数进行分页 - Data = pagedData - }; - - return pagination; - } - - public async Task> GetConsumeDeviceAsync(GetConsumeDeviceRequest request) - { - if (request.IsOff) - { - //消费机离线设备 - var devices = await _dbContext.Queryable() - .Where(x => x.Type == DeviceTypeEnumType.Meal) - .ToListAsync(); - - var offs = await GetOfflineDevicesCount(devices); - var offUniqueNos = offs.Select(x => x.UniqueNo).ToList(); - - var offpage = await _dbContext.Queryable() - .LeftJoin((d, dt) => d.TemplateCode == dt.Code) - .Where(d => offUniqueNos.Contains(d.UniqueNo)) - .Select((d, dt) => new DevicePageResponse - { - FuncsStr = d.Funcs.ToString(), - Brand = dt.Brand, - Type = d.Type, - }, true) - .ToPageListAsync(request); - return offpage; - } - - //消费机总数 - var page = await _dbContext.Queryable() - .LeftJoin((d, dt) => d.TemplateCode == dt.Code) - .Where(d => d.Type == DeviceTypeEnumType.Meal) - .Select((d, dt) => new DevicePageResponse + .Where(x => x.Status == BalanceRecordStatusEnumType.Valid) + .GroupBy(x => new { - FuncsStr = d.Funcs.ToString(), - Brand = dt.Brand, - Type = d.Type, - }, true) + x.UserNo, x.Name, x.UserCode, x.CostDate + }) + .Select(x => new AverageDailyResponse + { + UserNo = x.UserNo, + Name = x.Name, + UserCode = x.UserCode, + AverageAmount = SqlFunc.AggregateSum(SqlFunc.Abs(x.Amount)) / SqlFunc.AggregateDistinctCount(x.CostDate) + }) .ToPageListAsync(request); - return page; } public async Task HainingImportAsync(BalanceHainingImportRequest request) @@ -772,7 +674,7 @@ public class BalanceService : IBalanceService return list; } - private async Task> GetConsumptionTrendsAsync(ConsumptionTrendEnumType type) + private async Task> GetConsumptionTrendsAsync(int type) { var bs = await _dbContext.Queryable() .Where(x => x.Type == BalanceRecordTypeEnumType.Out) @@ -781,7 +683,7 @@ public class BalanceService : IBalanceService var totalAmount = Math.Round(Math.Abs(bs.Sum(x => x.Amount)), 2); var list = new List(); - if (type == ConsumptionTrendEnumType.Month) + if (type == 1) { //月与总额对比 var months = GetMonthsOfYear(); diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceSummaryService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceSummaryService.cs index 714141a3..49fd2e77 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceSummaryService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceSummaryService.cs @@ -21,11 +21,11 @@ public class BalanceSummaryService : IBalanceSummaryService public async Task> BalanceRecordAnalysisAsync(BalanceRecordAnalysisRequest request) { var list = await _dbContext.Queryable() - .WhereIF(request.SearchDateTimePeriod?.Start.HasValue == true && request.SearchDateTimePeriod?.End.HasValue == true, - record => record.CostDate >= request.SearchDateTimePeriod.Start && record.CostDate <= request.SearchDateTimePeriod.End) - .WhereIF(request.BusinessPlaceCode.HasValue, record => record.BusinessPlaceCode == request.BusinessPlaceCode) - .Where(record => record.Type == BalanceRecordTypeEnumType.Out && record.Status == BalanceRecordStatusEnumType.Valid) - .ToListAsync(); + .WhereIF(request.SearchDateTimePeriod.HasValue(), + record => record.CostDate >= request.SearchDateTimePeriod.Start && record.CostDate <= request.SearchDateTimePeriod.End) + .WhereIF(request.BusinessPlaceCode.HasValue, record => record.BusinessPlaceCode == request.BusinessPlaceCode) + .Where(record => record.Type == BalanceRecordTypeEnumType.Out && record.Status == BalanceRecordStatusEnumType.Valid) + .ToListAsync(); var shifts = Enum.GetValues().ToList(); @@ -44,10 +44,39 @@ public class BalanceSummaryService : IBalanceSummaryService }).ToList(), Total = grp.Where(x => x.CostDate == grp.Key).Select(x => x.UserNo).Distinct().Count() }; - }) - .OrderByDescending(x => x.Date) - .ToPage(request); + }).OrderByDescending(x => x.Date).ToPage(request); return page; } -} + + + public async Task> BalanceRecordAnalysisByCostIdAsync() + { + var list = await _dbContext.Queryable() + // .WhereIF(request.SearchDateTimePeriod?.Start.HasValue == true && request.SearchDateTimePeriod?.End.HasValue == true, + // record => record.CostDate >= request.SearchDateTimePeriod.Start && record.CostDate <= request.SearchDateTimePeriod.End) + //.WhereIF(request.BusinessPlaceCode.HasValue, record => record.BusinessPlaceCode == request.BusinessPlaceCode) + .Where(record => record.Type == BalanceRecordTypeEnumType.Out && record.Status == BalanceRecordStatusEnumType.Valid) + .ToListAsync(); + + var shifts = Enum.GetValues().ToList(); + var page = list.GroupBy(record => record.CostDate.Date).Select(grp => + { + return new BalanceRecordAnalysisResponse + { + Date = DateOnly.FromDateTime(grp.Key), + Items = shifts.Select(shift => + { + return new KeyValueDto + { + Key = shift, + Value = grp.Where(x => x.ShiftType == shift).Select(x => x.UserNo).Distinct().Count() + }; + }).ToList(), + Total = grp.Where(x => x.CostDate == grp.Key).Select(x => x.UserNo).Distinct().Count() + }; + }).OrderByDescending(x => x.Date); + + return null; + } +} \ No newline at end of file diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs index 2babc612..703badda 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs @@ -430,68 +430,6 @@ public class OrderService : BaseOrderService, IOrderService return pageResult; } - - public async Task UpdateOffline(UpdateOfflineRequest outRequest) - { - var orders = await DbContext.Queryable().Where(x => x.IsOffline) - .Where(x => x.Status == BalanceRecordStatusEnumType.Valid) - .Where(x => x.OrderStatus == CanteenOrderStatusEnumType.Success) - .Where(x => x.ApplicationType == CanteenApplicationTypeEnumType.Device) - .Where(x => SqlFunc.IsNullOrEmpty(x.BusinessShiftCode)) - .WhereIF(outRequest.No.IsPresent(), x => x.No == outRequest.No) - .ToListAsync(); - - foreach (var item in orders) - { - var request = item.RequestJson.ToObject(); - - var registry = await DbContext.Queryable() - .Where(x => x.DeviceUniqueNo == request.DeviceUniqueNo) - .FirstAsync(); - - var businessPlaceInfo = await DbContext.Queryable() - .LeftJoin((x, sr) => x.Code == sr.PlaceCode) - .Where(x => x.Code == registry.BusinessPlaceCode) - .Select((x, sr) => new - { - x.Code, - sr.ShiftCode, - x.TenantId - }) - .FirstAsync(); - - - //获取当前消费餐次 - var shifts = await DbContext.Queryable().Where(x => x.ShiftCode == businessPlaceInfo.ShiftCode).ToListAsync(); - - var shift = shifts.FirstOrDefault(x => new TimePeriod() - { - Start = x.Start, - End = x.End - }.IsPresent1(request.CostDateTime)); - - var costDate = await GetCostDateAsync(shift, request.CostDateTime); - - var shiftType = shift?.ShiftType; - - await DbContext.Updateable() - .SetColumns(x => x.BusinessShiftCode == businessPlaceInfo.ShiftCode) - .SetColumns(x => x.CostDate == costDate) - .SetColumns(x => x.CostDateTime == request.CostDateTime) - .SetColumns(x => x.ShiftType == shiftType) - .Where(x => x.No == item.No) - .ExecuteCommandAsync(); - - await DbContext.Updateable() - .SetColumns(x => x.BusinessShiftCode == businessPlaceInfo.ShiftCode) - .SetColumns(x => x.CostDate == costDate) - .SetColumns(x => x.CostDateTime == request.CostDateTime) - .SetColumns(x => x.ShiftType == shiftType) - .Where(x => x.No == item.No) - .ExecuteCommandAsync(); - } - } - //******************************************************* help methods ************************************************************/ /// @@ -637,56 +575,6 @@ public class OrderService : BaseOrderService, IOrderService // } } - public async Task ReCalcOfflineAsync(ReCalcOfflineRequest request) - { - var gainfo = await DbContext.Queryable().Where(x => x.Code == request.UserCode).FirstAsync(); - var nos = await DbContext.Queryable().Where(x => x.UserCode == request.UserCode).Select(x => x.No).ToListAsync(); - - var orders = await DbContext.Queryable() - .Where(x => x.IsOffline) - .Where(x => !nos.Contains(x.No)) - .Where(x => x.UserCode == request.UserCode) - .ToListAsync(); - - - var gainfoMeal = await DbContext.Queryable().Where(x => x.UserNo == gainfo.No).FirstAsync(); - if (gainfoMeal == null) - { - gainfoMeal = new GainfoMealEntity - { - Balance = 0, - BalanceOfRecharge = 0, - BalanceOfSubsidies = 0, - Version = 0, - UserNo = gainfo.No, - UserCode = gainfo.Code, - }; - - await DbContext.InsertAsync(gainfoMeal); - } - - foreach (var order in orders) - { - await CommonHelper.RetryAsync(async () => - { - var currentGainfoMeal = await DbContext.Queryable().Where(x => x.UserNo == order.UserNo).FirstAsync(); - //金额+- - currentGainfoMeal.Balance += order.Amount; - - await DbContext.Updateable() - .SetColumns(x => x.Balance == currentGainfoMeal.Balance) - .SetColumns(x => x.Version == x.Version + 1) - .SetColumns(x => x.ModifiedTime == DateTime.Now) - .Where(x => x.UserNo == order.UserNo && x.Version == currentGainfoMeal.Version) //必须与查询时的version一致 - .ExecuteCommandThrowVersionAsync(); - //写入记录 - var balanceRecord = order.Adapt(); - balanceRecord.Id = 0; - await DbContext.InsertAsync(balanceRecord); - }, 5); - } - } - /// /// 根据二维码获取消费用户 /// diff --git a/Src/Dlhis.Entity/Canteen/Enums/BalanceRecordSourceEnumType.cs b/Src/Dlhis.Entity/Canteen/Enums/BalanceRecordSourceEnumType.cs index aea4c07e..587169b8 100644 --- a/Src/Dlhis.Entity/Canteen/Enums/BalanceRecordSourceEnumType.cs +++ b/Src/Dlhis.Entity/Canteen/Enums/BalanceRecordSourceEnumType.cs @@ -32,6 +32,11 @@ public enum BalanceRecordSourceEnumType [Description("现场支付")] Cash, + /// + /// 电子餐券 + /// + [Description("电子餐券")] + EVoucher, //********************************************************************************************************* /// diff --git a/Src/Dlhis.Entity/Canteen/Enums/ConsumptionTrendEnumType.cs b/Src/Dlhis.Entity/Canteen/Enums/ConsumptionTrendEnumType.cs deleted file mode 100644 index e8573b48..00000000 --- a/Src/Dlhis.Entity/Canteen/Enums/ConsumptionTrendEnumType.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Dlhis.Entity.Canteen.Enums -{ - public enum ConsumptionTrendEnumType - { - /// - /// 日 - /// - [Description("日")] - Day = 1, - - /// - /// 月 - /// - [Description("月")] - Month = 2, - } -}