Jason 1 gadu atpakaļ
vecāks
revīzija
89ccf0f156

+ 29 - 0
src/Hotline.Share/Dtos/Settings/TimeLimitDto.cs

@@ -204,4 +204,33 @@ namespace Hotline.Share.Dtos.Settings
 
     #endregion
 
+    #region 工作日计算时间常量配置
+
+    public record CalcTimeSetting
+    {
+        /// <summary>
+        /// 业务Code
+        /// </summary>
+        public string BugCode { get; set; }
+
+        /// <summary>
+        /// 时间类型
+        /// </summary>
+        public ETimeType TimeType { get; set; }
+
+        /// <summary>
+        /// 时间值
+        /// </summary>
+        public int TimeValue { get; set; }
+
+        /// <summary>
+        /// 业务名称
+        /// </summary>
+        public string BusName { get; set; }
+    }
+
+
+    #endregion
+
+
 }

+ 9 - 0
src/Hotline/Settings/TimeLimits/ITimeLimitDomainService.cs

@@ -29,6 +29,15 @@ namespace Hotline.Settings.TimeLimits
         /// <returns></returns>
         TimeResult CalcEndTime(DateTime beginTime, ETimeType timeType, int timeValue);
 
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="beginTime"></param>
+        /// <param name="busCode"></param>
+        /// <returns></returns>
+        TimeResult? CalcEndTime(DateTime beginTime, string busCode);
+
+
         /// <summary>
         /// 
         /// </summary>

+ 45 - 2
src/Hotline/Settings/TimeLimits/TimeLimitDomainService.cs

@@ -9,11 +9,24 @@ namespace Hotline.Settings.TimeLimits
     {
         private readonly ITimeLimitRepository _timeLimitRepository;
         private readonly IDaySettingRepository _daySettingRepository;
+        private List<CalcTimeSetting> timeSettingList;
+        
+
 
         public TimeLimitDomainService(ITimeLimitRepository timeLimitRepository, IDaySettingRepository daySettingRepository)
         {
             _timeLimitRepository = timeLimitRepository;
             _daySettingRepository = daySettingRepository;
+
+
+            //初始化常量
+            timeSettingList = new List<CalcTimeSetting>();
+            CalcTimeSetting setting1 = new CalcTimeSetting() { BugCode = "", BusName = "", TimeType = ETimeType.WorkDay, TimeValue = 5 };
+            timeSettingList.Add(setting1);
+            CalcTimeSetting setting2 = new CalcTimeSetting() { BugCode = "", BusName = "", TimeType = ETimeType.WorkDay, TimeValue = 5 };
+            timeSettingList.Add(setting2);
+            CalcTimeSetting setting3 = new CalcTimeSetting() { BugCode = "", BusName = "", TimeType = ETimeType.WorkDay, TimeValue = 5 };
+            timeSettingList.Add(setting3);
         }
 
         public async Task<string> AddAsync(TimeLimit model, CancellationToken cancellationToken)
@@ -31,7 +44,16 @@ namespace Hotline.Settings.TimeLimits
             await _timeLimitRepository.UpdateAsync(model, cancellationToken);
         }
 
-        
+
+
+
+
+        /// <summary>
+        /// 计算工作时间分钟数
+        /// </summary>
+        /// <param name="beginTime"></param>
+        /// <param name="endTime"></param>
+        /// <returns></returns>
         public int CalcWorkTime(DateTime beginTime,DateTime endTime)
         {
             //计算时间差
@@ -77,8 +99,29 @@ namespace Hotline.Settings.TimeLimits
             return minutes;
         }
 
+        /// <summary>
+        /// 计算工作日
+        /// </summary>
+        /// <param name="beginTime"></param>
+        /// <param name="busCode"></param>
+        /// <returns></returns>
+        public TimeResult? CalcEndTime(DateTime beginTime,string busCode)
+        {
+            var setting = timeSettingList.FirstOrDefault(x => x.BugCode == busCode);
+            if (setting!=null)
+            {
+                return CalcEndTime(beginTime, setting.TimeType, setting.TimeValue);
+            }
+            return null;
+        }
 
-
+        /// <summary>
+        /// 计算工作日
+        /// </summary>
+        /// <param name="beginTime"></param>
+        /// <param name="timeType"></param>
+        /// <param name="timeValue"></param>
+        /// <returns></returns>
         public TimeResult CalcEndTime(DateTime beginTime,ETimeType timeType,int timeValue)
         {
             switch (timeType)