Просмотр исходного кода

Merge branch 'release' of http://110.188.24.182:10023/Fengwo/hotline into release

tangjiang 7 месяцев назад
Родитель
Сommit
7288b42331

+ 10 - 4
src/Hotline.Api/Controllers/SettingController.cs

@@ -180,13 +180,19 @@ namespace Hotline.Api.Controllers
         [HttpPost("setdaysettings")]
         public async Task SetDaySettings([FromBody]SetDaySettingsRequest request)
         {
-            List<DaySetting> daysettings = new List<DaySetting>();
             foreach (var item in request.list)
             {
-                daysettings.Add(new DaySetting() { Day = item, IsWorkDay = request.isWorkDay });
+                var day = await _daysettingRepository.GetAsync(x => x.Day.Date == item.Date, HttpContext.RequestAborted);
+                if (day != null)
+                {
+                    day.IsWorkDay = request.isWorkDay;
+                    await _daysettingRepository.UpdateAsync(day, HttpContext.RequestAborted);
+                }
+                else
+                {
+                    await _daysettingRepository.AddAsync(new DaySetting() { Day = item, IsWorkDay = request.isWorkDay },HttpContext.RequestAborted);
+                }
             }
-
-            await _daysettingRepository.AddRangeAsync(daysettings);
         }
 
         #endregion

+ 4 - 2
src/Hotline.Api/Controllers/TestController.cs

@@ -146,7 +146,7 @@ public class TestController : BaseController
         IDistributedLock distributedLock,
         IRepository<OrderUrge> orderUrgeRepository,
         IRepositoryTextSearch<OrderTs> repositoryts,
-        //ITimeLimitDomainService timeLimitDomainService,
+        ITimeLimitDomainService timeLimitDomainService,
         IWfModuleDomainService wfModuleDomainService,
         IDaySettingRepository daySettingRepository,
         //ITrClient trClient,
@@ -193,7 +193,7 @@ ICallApplication callApplication,
         _distributedLock = distributedLock;
         _orderUrgeRepository = orderUrgeRepository;
         _repositoryts = repositoryts;
-        //_timeLimitDomainService = timeLimitDomainService;
+        _timeLimitDomainService = timeLimitDomainService;
         _wfModuleDomainService = wfModuleDomainService;
         _daySettingRepository = daySettingRepository;
         //_trClient = trClient;
@@ -278,6 +278,8 @@ ICallApplication callApplication,
         //var r = await _aiVisitService.QueryAiVisitTaskResult(batchId, DateTime.Parse("2024-07-28"), DateTime.Parse("2024-08-01"), HttpContext.RequestAborted);
 
         //var r = _timeLimitDomainService.CalcExpiredTime(DateTime.Now, EFlowDirection.CenterToCenter, batchId);
+        var r = _timeLimitDomainService.CalcEndTime(DateTime.Parse("2024-09-12 22:01:28"), Share.Enums.Settings.ETimeType.WorkDay, 3, 80, 50);
+
 
         return OpenResponse.Ok(DateTime.Now.ToString("F"));
     }

+ 9 - 0
src/Hotline/Settings/TimeLimitDomain/ExpireTimeSupplier/WorkDaySupplier.cs

@@ -43,6 +43,15 @@ public class WorkDaySupplier : IExpireTimeSupplier, IScopeDependency
             }
         }
 
+        while (true)
+        {
+            if (await IsWorkDay(beginTime))
+            {
+                break;
+            }
+            beginTime = beginTime.AddDays(1);
+        }
+
         int day = 1;
         for (int i = 1;i < timeConfig.Count + 1;i++)
         {

+ 101 - 90
src/Hotline/Settings/TimeLimits/TimeLimitDomainService.cs

@@ -744,98 +744,100 @@ namespace Hotline.Settings.TimeLimits
             //如果是部门,采用部门计算方式
             switch (timeType)
             {
+                #region 小时计算
                 //新增对应小时
                 //case ETimeType.Hour:
-                    //if (isCenter)
-                    //{
-                    //    //中心计算自然时间
-                    //    return new TimeResult { EndTime = beginTime.AddHours(timeValue), RuleStr = timeValue + "小时" };
-                    //}
-                    //else
-                    //{
-                    //    //部门计算工作时间
-                    //    //查询统一部门工作时间
-                    //    var workTime = _systemSettingRepository.Get(x => x.Code == "WorkTime");
-                    //    if (workTime != null)
-                    //    {
-                    //        //计算一天工作时间(分钟)
-                    //        DateTime WorkBeginTime = DateTime.Parse(DateTime.Now.ToShortDateString() + " " + workTime.SettingValue[0] + ":00");
-                    //        DateTime WorkEndTime = DateTime.Parse(DateTime.Now.ToShortDateString() + " " + workTime.SettingValue[1] + ":00");
-                    //        TimeSpan minuteSpan = new TimeSpan(WorkEndTime.Ticks - WorkBeginTime.Ticks);
-                    //        //一天工作时间(分钟)
-                    //        int minutes = (int)minuteSpan.TotalMinutes;
-                    //        //延期总时间(分钟)
-                    //        int timeValueMinutes = timeValue * 60;
-
-                    //        //判断开始时间不在工时间段修正时间复位至当天或者第二天的开始时间(如果大于结束时间则复位至第二天的开始时间)
-                    //        if (beginTime < WorkBeginTime)
-                    //        {
-                    //            beginTime = WorkBeginTime;
-                    //        }
-                    //        else
-                    //        {
-                    //            if (beginTime > WorkEndTime)
-                    //            {
-                    //                beginTime = WorkBeginTime.AddDays(1);
-                    //            }
-                    //        }
-
-                    //        //判断第一天时间是否足够
-                    //        TimeSpan firstMinuteSpan = new TimeSpan(WorkEndTime.Ticks - beginTime.Ticks);
-                    //        //计算开始时间的第一天时间
-                    //        int firstMinute = (int)firstMinuteSpan.TotalMinutes;
-                    //        //判断第一天时间是否足够
-                    //        if (firstMinute > timeValueMinutes)
-                    //        {
-                    //            //足够
-                    //            bool canWhile = true;
-                    //            while (canWhile)
-                    //            {
-                    //                //判断开始时间是否在工作日
-                    //                if (IsWorkDay(beginTime))
-                    //                {
-                    //                    return new TimeResult { EndTime = beginTime.AddHours(timeValue), RuleStr = timeValue + "小时" };
-                    //                }
-                    //                else
-                    //                {
-                    //                    //如果不是工作日就加一天
-                    //                    beginTime = beginTime.AddDays(1);
-                    //                }
-                    //            }
-                    //            return new TimeResult { EndTime = beginTime.AddHours(timeValue), RuleStr = timeValue + "小时" };
-                    //        }
-                    //        else
-                    //        {
-                    //            //不够
-                    //            bool canWhile = true;
-                    //            while (canWhile)
-                    //            {
-                    //                //判断开始时间是否在工作日
-                    //                if (IsWorkDay(beginTime))
-                    //                {
-                    //                    //在工作日
-                    //                    timeValueMinutes = timeValueMinutes - minutes;
-                    //                    if (timeValueMinutes > 0)
-                    //                    {
-                    //                        beginTime = beginTime.AddDays(1);
-                    //                    }
-                    //                    else
-                    //                    {
-                    //                        return new TimeResult { EndTime = beginTime.AddMinutes(timeValueMinutes), RuleStr = timeValue + "小时" };
-                    //                    }
-                    //                }
-                    //                else
-                    //                {
-                    //                    //如果不是工作日
-                    //                    beginTime = beginTime.AddDays(1);
-                    //                }
-                    //            }
-                    //        }
-
-                    //    }
-                    //    return new TimeResult { EndTime = beginTime.AddHours(timeValue), RuleStr = timeValue + "小时" };
-                    //}
-                 //   return null;
+                //if (isCenter)
+                //{
+                //    //中心计算自然时间
+                //    return new TimeResult { EndTime = beginTime.AddHours(timeValue), RuleStr = timeValue + "小时" };
+                //}
+                //else
+                //{
+                //    //部门计算工作时间
+                //    //查询统一部门工作时间
+                //    var workTime = _systemSettingRepository.Get(x => x.Code == "WorkTime");
+                //    if (workTime != null)
+                //    {
+                //        //计算一天工作时间(分钟)
+                //        DateTime WorkBeginTime = DateTime.Parse(DateTime.Now.ToShortDateString() + " " + workTime.SettingValue[0] + ":00");
+                //        DateTime WorkEndTime = DateTime.Parse(DateTime.Now.ToShortDateString() + " " + workTime.SettingValue[1] + ":00");
+                //        TimeSpan minuteSpan = new TimeSpan(WorkEndTime.Ticks - WorkBeginTime.Ticks);
+                //        //一天工作时间(分钟)
+                //        int minutes = (int)minuteSpan.TotalMinutes;
+                //        //延期总时间(分钟)
+                //        int timeValueMinutes = timeValue * 60;
+
+                //        //判断开始时间不在工时间段修正时间复位至当天或者第二天的开始时间(如果大于结束时间则复位至第二天的开始时间)
+                //        if (beginTime < WorkBeginTime)
+                //        {
+                //            beginTime = WorkBeginTime;
+                //        }
+                //        else
+                //        {
+                //            if (beginTime > WorkEndTime)
+                //            {
+                //                beginTime = WorkBeginTime.AddDays(1);
+                //            }
+                //        }
+
+                //        //判断第一天时间是否足够
+                //        TimeSpan firstMinuteSpan = new TimeSpan(WorkEndTime.Ticks - beginTime.Ticks);
+                //        //计算开始时间的第一天时间
+                //        int firstMinute = (int)firstMinuteSpan.TotalMinutes;
+                //        //判断第一天时间是否足够
+                //        if (firstMinute > timeValueMinutes)
+                //        {
+                //            //足够
+                //            bool canWhile = true;
+                //            while (canWhile)
+                //            {
+                //                //判断开始时间是否在工作日
+                //                if (IsWorkDay(beginTime))
+                //                {
+                //                    return new TimeResult { EndTime = beginTime.AddHours(timeValue), RuleStr = timeValue + "小时" };
+                //                }
+                //                else
+                //                {
+                //                    //如果不是工作日就加一天
+                //                    beginTime = beginTime.AddDays(1);
+                //                }
+                //            }
+                //            return new TimeResult { EndTime = beginTime.AddHours(timeValue), RuleStr = timeValue + "小时" };
+                //        }
+                //        else
+                //        {
+                //            //不够
+                //            bool canWhile = true;
+                //            while (canWhile)
+                //            {
+                //                //判断开始时间是否在工作日
+                //                if (IsWorkDay(beginTime))
+                //                {
+                //                    //在工作日
+                //                    timeValueMinutes = timeValueMinutes - minutes;
+                //                    if (timeValueMinutes > 0)
+                //                    {
+                //                        beginTime = beginTime.AddDays(1);
+                //                    }
+                //                    else
+                //                    {
+                //                        return new TimeResult { EndTime = beginTime.AddMinutes(timeValueMinutes), RuleStr = timeValue + "小时" };
+                //                    }
+                //                }
+                //                else
+                //                {
+                //                    //如果不是工作日
+                //                    beginTime = beginTime.AddDays(1);
+                //                }
+                //            }
+                //        }
+
+                //    }
+                //    return new TimeResult { EndTime = beginTime.AddHours(timeValue), RuleStr = timeValue + "小时" };
+                //}
+                //   return null;
+                #endregion
                 //新增工作日
                 case ETimeType.WorkDay:
 
@@ -865,6 +867,15 @@ namespace Hotline.Settings.TimeLimits
                                 beginTime = WorkBeginTime.AddDays(1);
                             }
                         }
+                        while (true)
+                        {
+                            if(IsWorkDay(beginTime))
+                            {
+                                break;
+                            }
+                            beginTime = beginTime.AddDays(1);
+                        }
+
 
                         int day = 1;
                         for (int i = 1; i < timeValue + 1; i++)