فهرست منبع

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

tangjiang 6 ماه پیش
والد
کامیت
92d599bf03

+ 11 - 2
src/Hotline.Api/Controllers/OrderController.cs

@@ -2146,8 +2146,17 @@ public class OrderController : BaseController
     public async Task InitialNextFlow([FromBody] ScreenNextFlowDto dto)
     {
         var screen = await _orderScreenRepository.GetAsync(dto.Data.Id);
+        var visitDetail = await _orderVisitedDetailRepository.GetAsync(screen.VisitDetailId, HttpContext.RequestAborted);
+        if (_appOptions.Value.IsZiGong && visitDetail.ScreenByEndTime.HasValue)
+        {
+	        if (DateTime.Now > visitDetail.ScreenByEndTime && !_sessionContext.OrgIsCenter)
+	        {
+		        throw UserFriendlyException.SameMessage("超过2个工作日不能申请甄别,不能申请");
+	        }
+        }
 
-        if (dto.Data.Files.Any())
+
+		if (dto.Data.Files.Any())
             screen.FileJson = await _fileRepository.AddFileAsync(dto.Data.Files, screen.Id, "", HttpContext.RequestAborted);
         else
             screen.FileJson = new List<Share.Dtos.File.FileJson>();
@@ -2290,7 +2299,7 @@ public class OrderController : BaseController
     [LogFilter("更新甄别提起截至时限")]
     public async Task Update([FromBody] OrderScreenEndTimeDto dto)
     {
-        await _orderVisitedDetailRepository.Updateable().SetColumns(x => new OrderVisitDetail { ScreenByEndTime = dto.ScreenByEndTime }).Where(x => x.Id == dto.VisitDetailId).ExecuteCommandAsync();
+        await _orderVisitedDetailRepository.Updateable().SetColumns(x => new OrderVisitDetail { ScreenByEndTime = dto.ScreenByEndTime }).Where(x => x.Id == dto.Id).ExecuteCommandAsync();
     }
 
     #endregion

+ 16 - 0
src/Hotline.Api/Controllers/TestController.cs

@@ -41,6 +41,7 @@ using Hotline.Share.Enums.FlowEngine;
 using Hotline.Share.Enums.JudicialManagement;
 using Hotline.Share.Enums.Order;
 using Hotline.Share.Enums.Quality;
+using Hotline.Share.Mq;
 using Hotline.Users;
 using MapsterMapper;
 using MediatR;
@@ -969,4 +970,19 @@ ICallApplication callApplication,
 
         _logger.LogWarning($"推送完成");
     }
+
+
+    /// <summary>
+    /// 自动延期测试
+    /// </summary>
+    /// <param name="ExpiredTime"></param>
+    /// <param name="orderId"></param>
+    /// <returns></returns>
+    [HttpGet("automatic_delay")]
+    [AllowAnonymous]
+    public async Task AutomaticDelay(DateTime ExpiredTime, string orderId) {
+
+	    _capPublisher.PublishDelay(ExpiredTime - DateTime.Now.AddHours(1), EventNames.HotlineOrderAutomaticDelay, new PublishAutomaticDelayDto() { OrderId = orderId });
+	}
+
 }

+ 6 - 5
src/Hotline.Application/Subscribers/InternalCapSubscriber.cs

@@ -235,11 +235,11 @@ namespace Hotline.Application.Subscribers
         public async Task AutomaticDelay(PublishAutomaticDelayDto dto, CancellationToken cancellationToken) 
         {
             var order = await _orderRepository.GetAsync(dto.OrderId, cancellationToken);
-            var expiredTime = DateTime.Now.AddHours(-1);
-            if (order != null && order.Status < EOrderStatus.Filed && order.ExpiredTime <= DateTime.Now)
-            {
-                if (order.ExpiredTime >= expiredTime)
-                {
+			var expiredTime = DateTime.Now.AddHours(1);
+			if (order != null && order.Status < EOrderStatus.Filed && order.ExpiredTime >= DateTime.Now)
+			{
+				if (order.ExpiredTime <= expiredTime)
+				{
                     var delayAny= await _orderDelayRepository.Queryable().Where(x => x.OrderId == order.Id && x.DelayState == EDelayState.Examining).AnyAsync();
                     if (!delayAny)
                     {
@@ -253,6 +253,7 @@ namespace Hotline.Application.Subscribers
 						}
 						else
 						{
+                            delay.OrderId = order.Id;
 							delay.EmployeeId = "";
 							delay.EmployeeName = "系统自动延期";
 							delay.ApplyOrgName = OrgSeedData.CenterName;

+ 1 - 1
src/Hotline.Share/Dtos/Order/OrderScreenDto.cs

@@ -336,7 +336,7 @@ namespace Hotline.Share.Dtos.Order
 		/// <summary>
 		/// 回访明细id
 		/// </summary>
-		public string VisitDetailId { get; set; }
+		public string Id { get; set; }
 
 		/// <summary>
 		/// 截至甄别时间

+ 35 - 0
src/Hotline.Share/Enums/FlowEngine/EDynamicPolicyCountersign.cs

@@ -30,4 +30,39 @@ public enum EDynamicPolicyCountersign
     /// </summary>
     [Description("直属下级(中心作为一级部门)")]
     OrgDown = 3,
+    /// <summary>
+    /// 直属上级部门(中心作为顶级部门)经办人
+    /// </summary>
+    [Description("直属上级(中心作为顶级部门) 经办人")]
+    OrgUpHandleCenterTop = 4,
+
+    /// <summary>
+    /// 直属上级(中心作为一级部门)
+    /// </summary>
+    [Description("直属上级(中心作为一级部门)经办人")]
+    OrgUpHandle = 5,
+
+    /// <summary>
+    /// 直属上级部门(中心作为顶级部门) 经办人与领导
+    /// </summary>
+    [Description("直属上级(中心作为顶级部门)经办人与领导")]
+    OrgUpLeadCenterTop = 6,
+
+    /// <summary>
+    /// 直属上级(中心作为一级部门)经办人与领导
+    /// </summary>
+    [Description("直属上级(中心作为一级部门)经办人与领导")]
+    OrgUpLead = 7,
+
+    /// <summary>
+    /// 直达中心
+    /// </summary>
+    [Description("直达中心")]
+    ArriveCenter = 8,
+
+    /// <summary>
+    /// 直达一级部门
+    /// </summary>
+    [Description("直达一级部门")]
+    ArriveOneOrg = 9,
 }

+ 21 - 3
src/Hotline/FlowEngine/Workflows/WorkflowDomainService.cs

@@ -1768,7 +1768,13 @@ namespace Hotline.FlowEngine.Workflows
             {
                 EDynamicPolicy.OrgUpCenterTop => EHandlerType.OrgLevel,
                 EDynamicPolicy.OrgUp => EHandlerType.OrgLevel,
-                EDynamicPolicy.OrgDownCenterTop => EHandlerType.OrgLevel,
+                EDynamicPolicy.OrgUpHandleCenterTop => EHandlerType.OrgLevel,
+                EDynamicPolicy.OrgUpHandle => EHandlerType.OrgLevel,
+                EDynamicPolicy.OrgUpLeadCenterTop => EHandlerType.OrgLevel,
+                EDynamicPolicy.OrgUpLead => EHandlerType.OrgLevel,
+                EDynamicPolicy.ArriveCenter => EHandlerType.OrgLevel,
+                EDynamicPolicy.ArriveOneOrg => EHandlerType.OrgLevel,
+				EDynamicPolicy.OrgDownCenterTop => EHandlerType.OrgLevel,
                 EDynamicPolicy.OrgDown => EHandlerType.OrgLevel,
                 null => throw new ArgumentOutOfRangeException(),
                 _ => throw new ArgumentOutOfRangeException()
@@ -1798,7 +1804,13 @@ namespace Hotline.FlowEngine.Workflows
             {
                 EDynamicPolicyCountersign.OrgUpCenterTop => EHandlerType.OrgLevel,
                 EDynamicPolicyCountersign.OrgUp => EHandlerType.OrgLevel,
-                EDynamicPolicyCountersign.OrgDownCenterTop => EHandlerType.OrgLevel,
+                EDynamicPolicyCountersign.OrgUpHandleCenterTop => EHandlerType.OrgLevel,
+                EDynamicPolicyCountersign.OrgUpHandle => EHandlerType.OrgLevel,
+                EDynamicPolicyCountersign.OrgUpLeadCenterTop => EHandlerType.OrgLevel,
+                EDynamicPolicyCountersign.OrgUpLead => EHandlerType.OrgLevel,
+                EDynamicPolicyCountersign.ArriveCenter => EHandlerType.OrgLevel,
+                EDynamicPolicyCountersign.ArriveOneOrg => EHandlerType.OrgLevel,
+				EDynamicPolicyCountersign.OrgDownCenterTop => EHandlerType.OrgLevel,
                 EDynamicPolicyCountersign.OrgDown => EHandlerType.OrgLevel,
                 null => throw new ArgumentOutOfRangeException(),
                 _ => throw new ArgumentOutOfRangeException()
@@ -2535,7 +2547,13 @@ namespace Hotline.FlowEngine.Workflows
             {
                 case EDynamicPolicy.OrgUpCenterTop:
                 case EDynamicPolicy.OrgUp:
-                    if (!int.TryParse(currentStepDefine.TerminalDynamicMark, out var tMark))
+                case EDynamicPolicy.OrgUpHandleCenterTop:
+                case EDynamicPolicy.OrgUpHandle:
+                case EDynamicPolicy.OrgUpLeadCenterTop:
+                case EDynamicPolicy.OrgUpLead:
+                case EDynamicPolicy.ArriveCenter:
+                case EDynamicPolicy.ArriveOneOrg:
+					if (!int.TryParse(currentStepDefine.TerminalDynamicMark, out var tMark))
                         throw new UserFriendlyException(
                             $"TerminalDynamicMark parse to int failed, tMark: {currentStepDefine.TerminalDynamicMark}");
                     return currentOrgLevel <= tMark;

+ 2 - 1
src/Hotline/Settings/TimeLimitDomain/ExpireTimeLimitBase.cs

@@ -151,7 +151,8 @@ public abstract class ExpireTimeLimitBase
         {
             EFlowDirection.CenterToOrg => GetOrderTimeLimitConfig(order.AcceptTypeCode),
             EFlowDirection.OrgToCenter => GetOrderTimeLimitConfig(),
-            EFlowDirection.CenterToCenter => GetOrderTimeLimitConfig(order.AcceptTypeCode),
+            EFlowDirection.FiledToCenter => GetOrderTimeLimitConfig(),
+			EFlowDirection.CenterToCenter => GetOrderTimeLimitConfig(order.AcceptTypeCode),
             EFlowDirection.FiledToOrg => GetOrderTimeLimitConfig(order.AcceptTypeCode),
 			_ => throw new ArgumentOutOfRangeException(nameof(flowDirection), flowDirection, null)
         };