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); + } + /// /// 计算剩余任务时间(秒) ///