From 089f0201100f35ecb58f92d4239beac4d72acb2a Mon Sep 17 00:00:00 2001 From: liguoyang Date: Mon, 22 Apr 2024 14:09:58 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Device/Request/DeviceSaveRequest.cs | 2 +- .../Order/Services/Implements/OrderService.cs | 103 +++++------------- .../Jobs/SyncOriginCardInfoJob.cs | 39 ++++--- 3 files changed, 56 insertions(+), 88 deletions(-) diff --git a/Src/Dlhis.Basic/Device/Request/DeviceSaveRequest.cs b/Src/Dlhis.Basic/Device/Request/DeviceSaveRequest.cs index f7e4a84c..7dce3210 100644 --- a/Src/Dlhis.Basic/Device/Request/DeviceSaveRequest.cs +++ b/Src/Dlhis.Basic/Device/Request/DeviceSaveRequest.cs @@ -27,7 +27,7 @@ public class DeviceSaveRequest : IValidatableObject public string Supplier { get; set; } /// - /// 设备功能 + /// 设备功能 DeviceFuncEnumType /// [MinLength(1, ErrorMessage = "设备功能不能为空")] [Required(ErrorMessage = "设备功能不能为空")] diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs index 5fdb28a8..fae9e5a3 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs @@ -182,25 +182,7 @@ public class OrderService : BaseOrderService, IOrderService }.IsPresent1(request.CostDateTime)); - var switchTime = await GetSettingAsync(businessPlaceInfo.TenantId, CanteenSettingItemEnumType.BusinessSwitchTime); - - //计算成本日期 todo 优化 - var costDate = DateTime.Now; - if (shift == null) - { - costDate = DateTime.Now; - } - else - { - if (switchTime.HasValue) - { - var beginOfDay = DateTime.Today; - - var setTime = beginOfDay.Add(switchTime.Value.ToTimeSpan()); - if (DateTime.Now < setTime) - costDate = DateTime.Now.AddDays(-1); - } - } + var costDate = await GetCostDateAsync(shift, request.CostDateTime); var order = new CanteenOrderEntity { @@ -334,25 +316,7 @@ public class OrderService : BaseOrderService, IOrderService }.IsPresent1(request.CostDateTime)); shift.ThrowIfNull("非就餐时间,无法消费"); - var switchTime = await GetSettingAsync(businessPlaceInfo.TenantId, CanteenSettingItemEnumType.BusinessSwitchTime); - - //计算成本日期 todo 优化 - var costDate = DateTime.Now; - if (shift == null) - { - costDate = DateTime.Now; - } - else - { - if (switchTime.HasValue) - { - var beginOfDay = DateTime.Today; - - var setTime = beginOfDay.Add(switchTime.Value.ToTimeSpan()); - if (DateTime.Now < setTime) - costDate = DateTime.Now.AddDays(-1); - } - } + var costDate = await GetCostDateAsync(shift, request.CostDateTime); var order = new CanteenOrderEntity { @@ -395,7 +359,7 @@ public class OrderService : BaseOrderService, IOrderService var orderId = await DbContext.InsertReturnIdentityAsync(order); try { - await GenerateConsumeRecordAsync(orderId, shifts, request.CostDateTime); + await GenerateConsumeRecordAsync(orderId); } catch (Exception ex) { @@ -416,7 +380,6 @@ public class OrderService : BaseOrderService, IOrderService .ExecuteCommandAsync(); } - public async Task> GetOrdersAggregationAsync(PageDto page) { var subjectId = CurrentUser.GetIntSubjectId(); @@ -511,25 +474,7 @@ public class OrderService : BaseOrderService, IOrderService }.IsPresent1(request.CostDateTime)); - var switchTime = await GetSettingAsync(businessPlaceInfo.TenantId, CanteenSettingItemEnumType.BusinessSwitchTime); - - //计算成本日期 todo 优化 - var costDate = request.CostDateTime.Date; - if (shift == null) - { - costDate = request.CostDateTime.Date; - } - else - { - if (switchTime.HasValue) - { - var beginOfDay = request.CostDateTime.Date; - - var setTime = beginOfDay.Add(switchTime.Value.ToTimeSpan()); - if (request.CostDateTime < setTime) - costDate = request.CostDateTime.Date.AddDays(-1); - } - } + var costDate = await GetCostDateAsync(shift, request.CostDateTime); var shiftType = shift?.ShiftType; @@ -553,26 +498,40 @@ public class OrderService : BaseOrderService, IOrderService //******************************************************* help methods ************************************************************/ + /// + /// 获取成本日期 + /// + /// + /// + /// + private async Task GetCostDateAsync(BusinessShiftMealRelationshipEntity shift, DateTime costDateTime) + { + var switchTime = await GetSettingAsync(shift.TenantId, CanteenSettingItemEnumType.BusinessSwitchTime); + + var costDate = costDateTime.Date; + + if (shift != null && switchTime.HasValue) + { + var beginOfDay = costDateTime.Date; + + var setTime = beginOfDay.Add(switchTime.Value.ToTimeSpan()); + if (costDateTime < setTime) + costDate = costDateTime.Date.AddDays(-1); + } + + return costDate; + } /// /// 验证参数 /// - /// - /// /// /// /// - private async Task Verify(List shifts, DateTime costDateTime, CanteenOrderEntity order) + private async Task Verify(CanteenOrderEntity order) { - shifts.FirstOrDefault(x => new TimePeriod() - { - Start = x.Start, - End = x.End, - - }.IsPresent1(costDateTime)).ThrowIfNull("当前非就餐时间,无法消费"); - var beginOfDay = DateTime.Today; var endOfDay = beginOfDay.AddDays(1).AddSeconds(-1); @@ -637,16 +596,14 @@ public class OrderService : BaseOrderService, IOrderService /// 生成充值记录 /// /// - /// - /// /// /// /// - private async Task GenerateConsumeRecordAsync(long orderId, List shifts, DateTime costDateTime) + private async Task GenerateConsumeRecordAsync(long orderId) { var order = await DbContext.Queryable().Where(x => x.Id == orderId).FirstAsync(); //校验 - await Verify(shifts, costDateTime, order); + await Verify(order); var allowNoBalance = await GetSettingAsync(order.TenantId, CanteenSettingItemEnumType.AllowNoBalance); diff --git a/Src/Dlhis.ScheduledTask/Jobs/SyncOriginCardInfoJob.cs b/Src/Dlhis.ScheduledTask/Jobs/SyncOriginCardInfoJob.cs index 69dc34ad..746a035b 100644 --- a/Src/Dlhis.ScheduledTask/Jobs/SyncOriginCardInfoJob.cs +++ b/Src/Dlhis.ScheduledTask/Jobs/SyncOriginCardInfoJob.cs @@ -6,6 +6,7 @@ using Dlhis.ScheduledTask.Common.Services; using Kurisu.AspNetCore.Utils.Extensions; using Kurisu.Scheduled; using Kurisu.Scheduled.Attributes; +using Microsoft.Extensions.Logging; using SqlSugar; namespace Dlhis.ScheduledTask.Jobs; @@ -13,7 +14,7 @@ namespace Dlhis.ScheduledTask.Jobs; /// /// 上传考勤记录 /// -[RecurringJob(nameof(SyncOriginCardInfoJob), "0/20 * * * * ?", Name = "上传考勤记录")] +[RecurringJob(nameof(SyncOriginCardInfoJob), "0 0/15 * * * ?", Name = "上传考勤记录")] public class SyncOriginCardInfoJob : BaseJob { private readonly IJinkoJIPService _jinkoJIPService; @@ -51,21 +52,31 @@ public class SyncOriginCardInfoJob : BaseJob }).Where(x => x.ZWORKCODE.IsPresent()).ToList(); - var ids = requests.Select(x => x.Id).ToList(); - if (ids.Any()) + if (requests.Any()) { - var r = await _jinkoJIPService.UploadAttendancesAsync(requests); - if (r.OLX == "0") + foreach (var items in requests.Chunk(500)) { - await DbContext.Updateable() - .SetColumns(x => x.Sync == true) - .SetColumns(x => x.ModifiedTime == DateTime.Now) - .Where(x => ids.Contains(x.Id)) - .ExecuteCommandAsync(); - } - else - { - Logger.LogError(r.OMS); + try + { + var ids = items.Select(x => x.Id).ToList(); + var r = await _jinkoJIPService.UploadAttendancesAsync(items.ToList()); + if (r.OLX == "0") + { + await DbContext.Updateable() + .SetColumns(x => x.Sync == true) + .SetColumns(x => x.ModifiedTime == DateTime.Now) + .Where(x => ids.Contains(x.Id)) + .ExecuteCommandAsync(); + } + else + { + Logger.LogError(r.OMS); + } + } + catch (Exception ex) + { + Logger.LogError(ex, "考勤分配上传异常:{message}", ex.Message); + } } } }