From ae8b48a78299606bf8fb56985f1422de7abb4ef1 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Fri, 23 Feb 2024 18:57:02 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E7=B4=A2=E5=BC=95,=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Implements/BusinessPlaceShiftService.cs | 6 +- .../BusinessShift/TimePeriodExtensions.cs | 73 +++++++++++++++++++ .../Basic/Entity/BasicTypeEntity.cs | 4 +- 3 files changed, 78 insertions(+), 5 deletions(-) create mode 100644 Src/Dlhis.Basic/BusinessShift/TimePeriodExtensions.cs diff --git a/Src/Dlhis.Basic/BusinessShift/Services/Implements/BusinessPlaceShiftService.cs b/Src/Dlhis.Basic/BusinessShift/Services/Implements/BusinessPlaceShiftService.cs index 68227dc9..84931863 100644 --- a/Src/Dlhis.Basic/BusinessShift/Services/Implements/BusinessPlaceShiftService.cs +++ b/Src/Dlhis.Basic/BusinessShift/Services/Implements/BusinessPlaceShiftService.cs @@ -116,8 +116,8 @@ public class BusinessPlaceShiftService : IBusinessPlaceShiftService } else { - var entity = await _dbContext.Queryable().FirstAsync(x => x.Id == request.Id); - entity.ThrowIfNull("餐次不存在"); + var entity = await _dbContext.Queryable().FirstAsync(x => x.Id == request.Id); + entity.ThrowIfNull("餐次段不存在"); request.Adapt(entity); await _dbContext.UpdateAsync(entity); @@ -210,7 +210,7 @@ public class BusinessPlaceShiftService : IBusinessPlaceShiftService foreach (var period in periods) { - period.IsDuplicate(request.TimePeriod).ThrowIfTrue($"存在时间段重合[{period.Start}-{period.End}]"); + period.IsDuplicate1(request.TimePeriod).ThrowIfTrue($"存在时间段重合[{period.Start}-{period.End}]"); } } diff --git a/Src/Dlhis.Basic/BusinessShift/TimePeriodExtensions.cs b/Src/Dlhis.Basic/BusinessShift/TimePeriodExtensions.cs new file mode 100644 index 00000000..15d4c69d --- /dev/null +++ b/Src/Dlhis.Basic/BusinessShift/TimePeriodExtensions.cs @@ -0,0 +1,73 @@ +using Kurisu.Core.CustomClass; + +namespace Dlhis.Basic.BusinessShift; + + +/// +/// 临时的扩展类 todo: 嵌入框架 +/// +public static class TimePeriodExtensions +{ + public static bool IsDuplicate1(this TimePeriod current, TimePeriod period) + { + return !Check(); + + bool Check() + { + if (current.IsCrossDay()) + { + if (period.IsCrossDay()) + { + return true; + } + else + { + return period.Start > current.End && period.End < current.Start; + } + } + else + { + if (period.IsCrossDay()) + { + return period.Start > current.End && period.End < current.Start; + } + else + { + return period.Start > current.End || period.End < current.Start; + } + } + } + } + + + public static bool IsPresent1(this TimePeriod period, DateTime dateTime) + { + DateTime start; + DateTime end; + + if (period.IsCrossDay()) + { + var currentStart = DateTime.Today.Add(period.Start.Value.ToTimeSpan()); + var endOfDay = DateTime.Today.AddHours(23).AddMinutes(59).AddSeconds(59); + + if (dateTime >= currentStart && dateTime <= endOfDay) + { + start = DateTime.Today.Add(period.Start.Value.ToTimeSpan()); + end = DateTime.Today.AddDays(1).Add(period.End.Value.ToTimeSpan()); + } + else + { + //第二天 + start = DateTime.Today.AddDays(-1).Add(period.Start.Value.ToTimeSpan()); + end = DateTime.Today.Add(period.End.Value.ToTimeSpan()); + } + } + else + { + start = DateTime.Today.Add(period.Start.Value.ToTimeSpan()); + end = DateTime.Today.Add(period.End.Value.ToTimeSpan()); + } + + return dateTime >= start && dateTime <= end; + } +} diff --git a/Src/Dlhis.Entity/Basic/Entity/BasicTypeEntity.cs b/Src/Dlhis.Entity/Basic/Entity/BasicTypeEntity.cs index e6173c9f..14e5a309 100644 --- a/Src/Dlhis.Entity/Basic/Entity/BasicTypeEntity.cs +++ b/Src/Dlhis.Entity/Basic/Entity/BasicTypeEntity.cs @@ -12,13 +12,13 @@ public class BasicTypeEntity : SugarBaseEntity /// /// 类型 /// - [SugarColumn(ColumnDescription = "类型")] + [SugarColumn(ColumnDescription = "类型", UniqueGroupNameList = new[] { "idx_BasicType_type_code" })] public string Type { get; set; } /// /// 编码 /// - [SugarColumn(ColumnDescription = "编码")] + [SugarColumn(ColumnDescription = "编码", UniqueGroupNameList = new[] { "idx_BasicType_type_code" })] public string Code { get; set; } ///