From eb005347c2de05228b665462007d5d71121e0d24 Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Mon, 18 Dec 2023 10:26:34 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=87=E8=B4=AD=E9=99=90=E6=97=B6=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=9B=B4=E6=96=B0=E4=B8=BA5=E5=B0=8F=E6=97=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TimeLimitTask/TimeLimitRules.cs | 50 ++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/BBWYB.Server.Business/TimeLimitTask/TimeLimitRules.cs b/BBWYB.Server.Business/TimeLimitTask/TimeLimitRules.cs index fd19236..3fc4d9f 100644 --- a/BBWYB.Server.Business/TimeLimitTask/TimeLimitRules.cs +++ b/BBWYB.Server.Business/TimeLimitTask/TimeLimitRules.cs @@ -14,7 +14,7 @@ namespace BBWYB.Server.Business { calculateExpirationTimeAlgorithmDictionary = new Dictionary>() { - { Enums.TimeLimitTaskType.采购任务, CalculateExpirationTimeFor8WorkHour }, + { Enums.TimeLimitTaskType.采购任务, CalculateExpirationTimeFor5WorkHour }, { Enums.TimeLimitTaskType.合格证拟定任务, CalculateExpirationTimeFor8WorkHour }, { Enums.TimeLimitTaskType.待核算任务, CalculateExpirationTimeFor8WorkHour }, { Enums.TimeLimitTaskType.待议价任务, CalculateExpirationTimeFor8WorkHour }, @@ -171,6 +171,54 @@ namespace BBWYB.Server.Business return startTime.Date.AddDays(addDay).AddHours(addHour).AddSeconds(addSeconds); } + private DateTime CalculateExpirationTimeFor5WorkHour(DateTime startTime) + { + int addDay = 0, addHour = 0, addSeconds = 0; + //先确定是否为周日 + if (startTime.DayOfWeek == DayOfWeek.Sunday) + { + addDay = 1; + addHour = 14; + } + else + { + if (startTime.Hour < 9) + addHour = 14; + else if (startTime.Hour >= 9 && startTime.Hour < 12) + { + addHour = 13; + var to12senconds = Convert.ToInt32((startTime.Date.AddHours(12) - startTime).TotalSeconds); + addSeconds = 18000 - to12senconds; + } + else if (startTime.Hour >= 12 && startTime.Hour < 13) + { + addHour = 18; + } + else if (startTime.Hour >= 13 && startTime.Hour < 18) + { + if (startTime.Hour == 13 && startTime.Minute <= 5) + { + //从16点开始小于5分钟以内,以当天18点结束 + addHour = 18; + } + else + { + addDay = CalculateAddDay(startTime.DayOfWeek); + addHour = 9; + var to18senconds = Convert.ToInt32((startTime.Date.AddHours(18) - startTime).TotalSeconds); + addSeconds = 18000 - to18senconds; + } + } + else if (startTime.Hour >= 18) + { + //下一个工作日的18点结束 + addDay = CalculateAddDay(startTime.DayOfWeek); + addHour = 14; + } + } + return startTime.Date.AddDays(addDay).AddHours(addHour).AddSeconds(addSeconds); + } + /// /// 计算剩余任务时间(秒) ///