Kaynağa Gözat

273 调整甄别申请截止日期计算方式

田爽 2 ay önce
ebeveyn
işleme
a209268624

+ 10 - 17
src/Hotline.Api/Controllers/OrderController.cs

@@ -2588,24 +2588,17 @@ public class OrderController : BaseController
 
         var visit = await _orderVisitRepository.GetAsync(dto.Data.VisitId, HttpContext.RequestAborted);
         setting = _systemSettingCacheManager.GetSetting(SettingConstants.ScreenApplyEndTime);
-        var endTime = DateTime.Now;
         if (int.Parse(setting?.SettingValue[0]) > 0)
         {
-            //endTime = _timeLimitDomainService
-            endTime = (await _expireTime
-                .CalcEndTime(visit.VisitTime.Value, visit.VisitTime.Value, ETimeType.WorkDay, int.Parse(setting?.SettingValue[0]), 0, 0)).EndTime;
-            if (DateTime.Now > endTime)
-                throw UserFriendlyException.SameMessage("甄别申请时限已超过系统预定设置,不能申请");
-        }
-
-        var visitDetail = await _orderVisitedDetailRepository.GetAsync(dto.Data.VisitDetailId, HttpContext.RequestAborted);
-        if (_appOptions.Value.IsZiGong && visitDetail.ScreenByEndTime.HasValue)
-        {
-            if (DateTime.Now > visitDetail.ScreenByEndTime && !_sessionContext.OrgIsCenter)
-            {
-                throw UserFriendlyException.SameMessage("超过2个工作日不能申请甄别,不能申请");
-            }
-        }
+			var visitDetail = await _orderVisitedDetailRepository.GetAsync(dto.Data.VisitDetailId, HttpContext.RequestAborted);
+			if (visitDetail.ScreenByEndTime.HasValue)
+			{
+				if (DateTime.Now > visitDetail.ScreenByEndTime && !_sessionContext.OrgIsCenter)
+				{
+					throw UserFriendlyException.SameMessage("超过2个工作日不能申请甄别,不能申请");
+				}
+			}
+		}
 
         var order = await _orderRepository.GetAsync(dto.Data.OrderId, HttpContext.RequestAborted);
         if (order.IsProvince)
@@ -2621,7 +2614,7 @@ public class OrderController : BaseController
 
         var model = _mapper.Map<OrderScreen>(dto.Data);
         model.Status = EScreenStatus.Approval;
-        model.ApplyEndTime = endTime;
+        //model.ApplyEndTime = endTime;
         // model.TimeConsuming = _timeLimitDomainService.CalcWorkTimeToDecimal(visit.VisitTime.Value, DateTime.Now, false);
         model.TimeConsuming = await _expireTime.CalcWorkTimeToDecimal(visit.VisitTime.Value, DateTime.Now, false);
         model.InitId();

+ 1 - 2
src/Hotline.Application/Orders/OrderApplication.cs

@@ -1303,8 +1303,7 @@ public class OrderApplication : IOrderApplication, IScopeDependency
 
                 _mapper.Map(detaildto, visit.OrderVisitDetails[i]);
                 //计算甄别提起时限
-                visit.OrderVisitDetails[i].ScreenByEndTime =
-                    (await _expireTime.CalcEndTime(DateTime.Now, DateTime.Now, ETimeType.WorkDay, 2, 0, 0)).EndTime;
+                visit.OrderVisitDetails[i].ScreenByEndTime = await _orderDomainService.GetScreenByEndTime();
             }
         }
 

+ 8 - 2
src/Hotline/Orders/IOrderDomainService.cs

@@ -115,6 +115,12 @@ namespace Hotline.Orders
         /// <param name="cancellationToken"></param>
         /// <returns></returns>
         Task VisitNoneByCancelPublishAsync(string orderId, CancellationToken cancellationToken);
-        
-    }
+
+		/// <summary>
+		/// 计算甄别申请截至日期
+		/// </summary>
+		/// <returns></returns>
+		Task<DateTime> GetScreenByEndTime();
+
+	}
 }

+ 40 - 6
src/Hotline/Orders/OrderDomainService.cs

@@ -39,6 +39,8 @@ using System.Security.Cryptography;
 using Hotline.FlowEngine.Definitions;
 using Hotline.Share.Dtos.FlowEngine.Workflow;
 using Hotline.Snapshot.Interfaces;
+using Hotline.Share.Enums.Settings;
+using Hotline.Settings.TimeLimitDomain;
 
 namespace Hotline.Orders;
 
@@ -68,8 +70,9 @@ public class OrderDomainService : IOrderDomainService, IScopeDependency
     private readonly IRepository<WorkflowStep> _workflowStepRepository;
     private readonly ISystemLogRepository _systemLogRepository;
     private readonly IOrderSnapshotRepository _orderSnapshotRepository;
+	private readonly ICalcExpireTime _expireTime;
 
-    public OrderDomainService(
+	public OrderDomainService(
         IOrderRepository orderRepository,
         IRepository<OrderRedo> orderRedoRepository,
         IRepository<OrderPublish> orderPublishRepository,
@@ -94,7 +97,8 @@ public class OrderDomainService : IOrderDomainService, IScopeDependency
         IRepository<WorkflowStep> workflowStepRepository,
         ISystemLogRepository systemLogRepository,
         IOptionsSnapshot<AppConfiguration> appOptions,
-        IOrderSnapshotRepository orderSnapshotRepository)
+        IOrderSnapshotRepository orderSnapshotRepository,
+		ICalcExpireTime expireTime)
     {
         _orderRepository = orderRepository;
         _orderRedoRepository = orderRedoRepository;
@@ -120,7 +124,9 @@ public class OrderDomainService : IOrderDomainService, IScopeDependency
         _systemLogRepository = systemLogRepository;
         _appOptions = appOptions;
         _orderSnapshotRepository = orderSnapshotRepository;
-    }
+		_expireTime = expireTime;
+
+	}
 
     /// <summary>
     /// 归档后自动发布
@@ -821,10 +827,38 @@ public class OrderDomainService : IOrderDomainService, IScopeDependency
     }
 
     #endregion
-    
-    #region private
 
-    private async Task<Order> GetOrderByFlowIdAsync(string workflowId, CancellationToken cancellationToken)
+    #region  计算甄别申请截至日期
+
+    public async Task<DateTime>  GetScreenByEndTime() {
+
+        var endTime = DateTime.Now;
+        var beginTime = DateTime.Now;
+        var timeValue = 1;
+		if (_appOptions.Value.IsZiGong)
+        {
+            timeValue = 2;
+		}
+        else if (_appOptions.Value.IsLuZhou)
+        {
+			DateTime firstDayOfMonth = new DateTime(beginTime.Year, beginTime.Month, 1);
+			DateTime lastDayOfMonth = firstDayOfMonth.AddMonths(1).AddDays(-1);
+            beginTime = new DateTime(lastDayOfMonth.Year, lastDayOfMonth.Month, lastDayOfMonth.Day, 23, 59, 59);
+		}
+        else {
+			var setting = _systemSettingCacheManager.GetSetting(SettingConstants.ScreenApplyEndTime);
+            if (int.Parse(setting?.SettingValue[0]) > 0) {
+                timeValue = int.Parse(setting?.SettingValue[0]);
+			}
+		}
+		endTime = (await _expireTime.CalcEndTime(beginTime, beginTime, ETimeType.WorkDay, timeValue, 0, 0)).EndTime;
+		return endTime;
+    }
+	#endregion
+
+	#region private
+
+	private async Task<Order> GetOrderByFlowIdAsync(string workflowId, CancellationToken cancellationToken)
     {
         if (string.IsNullOrEmpty(workflowId))
             throw UserFriendlyException.SameMessage("无效流程编号");