Jelajahi Sumber

期满时间

田爽 1 tahun lalu
induk
melakukan
1def8a292f

+ 41 - 29
src/Hotline.Api/Controllers/OrderController.cs

@@ -3255,25 +3255,19 @@ public class OrderController : BaseController
                 NextHandlers = dto.NextHandlers,
                 Opinion = dto.Cause
             };
-            //if (dto.AlterTime) 
-            //{
-
-            //}
-            var time = _timeLimitDomainService.CalcEndTime(DateTime.Now, order.AcceptTypeCode);
-			recall.External = new External { TimeLimit = time.Count, TimeLimitUnit = ETimeType.WorkDay };
-            //if (dto.Files.Any()) recall.Files = dto.Files;
-
-            //todo 特提重办,按审批通过时间依据中心派至部门的规则计算期满时间,更新order
-            //期满时间
-            //if (recall is 特提)
-            //{
-            //    var expiredTimeConfig = _timeLimitDomainService.CalcExpiredTime(DateTime.Now, EFlowDirection.CenterToOrg, order.AcceptTypeCode);
-            //    _mapper.Map(expiredTimeConfig, order);
-            //    await _orderRepository.UpdateAsync(order, HttpContext.RequestAborted);
-
-            //}
-
-            await _workflowApplication.RecallAsync(recall, order.ExpiredTime, HttpContext.RequestAborted);
+			// 计算期满时间
+			//if (dto.AlterTime)
+			//{
+			var expiredTime = _timeLimitDomainService.CalcEndTime(DateTime.Now, order.AcceptTypeCode);
+			//var expiredTime = _timeLimitDomainService.CalcEndTime(DateTime.Now,
+			//	ETimeType.WorkDay,
+			//	dto.TimeLimit.Value, order.AcceptTypeCode);
+			await _orderRepository.Updateable().SetColumns(o => new Order() { ExpiredTime = expiredTime.ExpiredTime, NearlyExpiredTime = expiredTime.NearlyExpiredTime })
+				.Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
+			var orderDto = _mapper.Map<OrderDto>(order);
+			await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderExpiredTimeUpdate, orderDto, cancellationToken: HttpContext.RequestAborted);
+			//}
+			await _workflowApplication.RecallAsync(recall, order.ExpiredTime, HttpContext.RequestAborted);
             var publish = await _orderPublishRepository.GetAsync(x => x.OrderId == dto.OrderId);
             if (publish != null)
             {
@@ -3370,11 +3364,18 @@ public class OrderController : BaseController
 				NextHandlers = dto.NextHandlers,
 				Opinion = dto.Cause
 			};
+            // 计算期满时间
             if (dto.AlterTime)
-                recall.External = new External { TimeLimit = dto.TimeLimit, TimeLimitUnit = ETimeType.WorkDay };
-
+            {
+	            var expiredTime = _timeLimitDomainService.CalcEndTime(DateTime.Now,
+		             ETimeType.WorkDay,
+					 dto.TimeLimit.Value, order.AcceptTypeCode);
+				await _orderRepository.Updateable().SetColumns(o => new Order() { ExpiredTime = expiredTime.EndTime, NearlyExpiredTime = expiredTime.NearlyExpiredTime })
+                    .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
+				var orderDto = _mapper.Map<OrderDto>(order);
+	            await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderExpiredTimeUpdate, orderDto,cancellationToken: HttpContext.RequestAborted);
+            }
             await _workflowApplication.RecallAsync(recall, order.ExpiredTime, HttpContext.RequestAborted);
-
 			var publish = await _orderPublishRepository.GetAsync(x => x.OrderId == dto.OrderId);
 			if (publish != null)
 			{
@@ -3425,7 +3426,8 @@ public class OrderController : BaseController
             special.ReplyFileJson =
                 await _fileRepository.AddFileAsync(dto.Files, special.Id, "", HttpContext.RequestAborted);
         await _orderSpecialRepository.UpdateAsync(special, HttpContext.RequestAborted);
-        if (special.State == 1)
+        var order = await _orderRepository.GetAsync(x => x.Id == special.OrderId);
+		if (special.State == 1)
         {
             var recall = new RecallDto
             {
@@ -3435,13 +3437,24 @@ public class OrderController : BaseController
                 NextHandlers = dto.NextHandlers,
                 Opinion = dto.Opinion
             };
-            //if (dto.AlterTime)
-            //    recall.External = new External { TimeLimit = dto.TimeLimit, TimeLimitUnit = dto.TimeLimitUnit };
-            //if (dto.Files.Any()) recall.Files = dto.Files;
+			//if (dto.AlterTime)
+			//    recall.External = new External { TimeLimit = dto.TimeLimit, TimeLimitUnit = dto.TimeLimitUnit };
+			//if (dto.Files.Any()) recall.Files = dto.Files;
+			// 计算期满时间
+			if (dto.AlterTime)
+			{
+				var expiredTime = _timeLimitDomainService.CalcEndTime(DateTime.Now,
+					ETimeType.WorkDay,
+					dto.TimeLimit.Value, order.AcceptTypeCode);
+				await _orderRepository.Updateable().SetColumns(o => new Order() { ExpiredTime = expiredTime.EndTime, NearlyExpiredTime = expiredTime.NearlyExpiredTime })
+					.Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
+				var orderDto = _mapper.Map<OrderDto>(order);
+				await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderExpiredTimeUpdate, orderDto, cancellationToken: HttpContext.RequestAborted);
+			}
 
-            //todo 特提重办,按审批通过时间依据中心派至部门的规则计算期满时间,更新order
+			//todo 特提重办,按审批通过时间依据中心派至部门的规则计算期满时间,更新order
 
-            await _workflowApplication.RecallAsync(recall, special.Order.ExpiredTime, HttpContext.RequestAborted);
+			await _workflowApplication.RecallAsync(recall, special.Order.ExpiredTime, HttpContext.RequestAborted);
             var publish = await _orderPublishRepository.GetAsync(x => x.OrderId == special.OrderId);
             if (publish != null)
             {
@@ -3464,7 +3477,6 @@ public class OrderController : BaseController
                 await _orderVisitRepository.UpdateAsync(visit, HttpContext.RequestAborted);
             }
 
-            var order = await _orderRepository.GetAsync(x => x.Id == special.OrderId);
             if (order != null && ("001171".Equals(special.OrgId) ||
                                   "001178".Equals(special.OrgId) ||
                                   "001180".Equals(special.OrgId)))

+ 0 - 12
src/Hotline.Application/Handlers/FlowEngine/WorkflowRecallHandler.cs

@@ -60,18 +60,6 @@ public class WorkflowRecallHandler : INotificationHandler<RecallNotify>
                     order.Status = EOrderStatus.SpecialToUnAccept;
                     order.BackToUnsign();
                 }
-                if (data.External != null && data.External.TimeLimit.HasValue && data.External.TimeLimitUnit.HasValue)
-                {
-                    var expiredTime = _timeLimitDomainService.CalcEndTime(DateTime.Now,
-                        data.External.TimeLimitUnit.Value,
-                        data.External.TimeLimit.Value, order.AcceptTypeCode);
-                    order.ExpiredTime = expiredTime.EndTime;
-                    order.NearlyExpiredTime = expiredTime.NearlyExpiredTime;
-					//await _workflowDomainService.UpdateExpiredTimeAsync(workflow, expiredTime.EndTime,
-					//    expiredTime.RuleStr, data.External.TimeLimit, data.External.TimeLimitUnit, expiredTime.NearlyExpiredTime, cancellationToken);
-					var dto = _mapper.Map<OrderDto>(order);
-                    await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderExpiredTimeUpdate, dto, cancellationToken: cancellationToken);
-                }
                 await _orderRepository.UpdateAsync(order, false, cancellationToken);
 				break;
             case WorkflowModuleConsts.KnowledgeAdd: