Переглянути джерело

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

tangjiang 1 місяць тому
батько
коміт
e924b6596f

+ 22 - 6
src/Hotline.Api/Controllers/OrderController.cs

@@ -62,6 +62,7 @@ using Hotline.Validators.FlowEngine;
 using Hotline.YbEnterprise.Sdk;
 using Mapster;
 using MapsterMapper;
+using MathNet.Numerics.LinearAlgebra.Factorization;
 using MediatR;
 using Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Mvc;
@@ -1968,6 +1969,20 @@ public class OrderController : BaseController
         return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
     }
 
+	/// <summary>
+	/// 工单延期修改延期时限
+	/// </summary>
+	/// <param name="dto"></param>
+	/// <returns></returns>
+	[HttpPost("alter_delay_day")]
+	[LogFilter("工单延期修改延期时限")]
+	public async Task AlterDelayDay([FromBody] AlterDelayDayDto dto) {
+        if (dto.DelayNum < 1) throw UserFriendlyException.SameMessage("延期申请天数需大于等于1天!");
+        var deday = await _orderDelayRepository.Queryable().Includes(x => x.Order).FirstAsync(x => x.Id == dto.Id, HttpContext.RequestAborted);
+        if (_appOptions.Value.IsLuZhou &&  dto.DelayNum >  deday.Order.TimeLimitCount) throw UserFriendlyException.SameMessage("申请天数需小于等于工单办理时限!");
+        await _orderDelayRepository.Updateable().SetColumns(x => new OrderDelay { DelayNum = dto.DelayNum }).Where(x => x.Id == dto.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
+	}
+
     /// <summary>
     /// 申请延期
     /// </summary>
@@ -2210,7 +2225,7 @@ public class OrderController : BaseController
     /// <param name="workflowId"></param>
     /// <returns></returns>
     [HttpGet("delay/{workflowId}/nextsteps")]
-    public async Task<NextStepsDto> OrderDelayNextsteps(string workflowId)
+    public async Task<object> OrderDelayNextsteps(string workflowId)
     {
         //var workflow = await _workflowRepository.GetAsync(workflowId, HttpContext.RequestAborted);
         var workflow = await _workflowDomainService.GetWorkflowAsync(workflowId, withDefine: true, withSteps: true,
@@ -2239,8 +2254,9 @@ public class OrderController : BaseController
                         result.Steps.Remove(result.Steps.First(x => x.Value == "中心终审"));
                     }
                 }
+                var IsAlterDay = _appOptions.Value.IsLuZhou && currentStep.Name != "班长审批";
 
-                return result;
+                return new { Steps = result, IsAlterDay = IsAlterDay };
             }
         }
 
@@ -6098,10 +6114,10 @@ public class OrderController : BaseController
                 },
                 HttpContext.RequestAborted);
 
-            //         if (order.ActualHandleOrgCode != OrgSeedData.CenterId && order.Status < EOrderStatus.Filed)
-            //         {
-            //             await _circularRecordDomainService.OrderSpecialCircularMessage(special, order, HttpContext.RequestAborted);
-            //}
+            if (_appOptions.Value.IsYiBin && order.ActualHandleOrgCode != OrgSeedData.CenterId && order.Status < EOrderStatus.Filed)
+            {
+                await _circularRecordDomainService.OrderSpecialCircularMessage(special, order, HttpContext.RequestAborted);
+            }
 
             if (string.IsNullOrEmpty(currentStep?.HandlerOrgId))
             {

+ 28 - 8
src/Hotline.Application/Orders/OrderApplication.cs

@@ -113,8 +113,9 @@ public class OrderApplication : IOrderApplication, IScopeDependency
     private readonly IRepository<OrderSpecial> _orderSpecialRepository;
     private readonly IWorkflowApplication _workflowApplication;
     private readonly ICircularRecordDomainService _circularRecordDomainService;
+	private readonly IRepository<User> _userRepository;
 
-    public OrderApplication(
+	public OrderApplication(
         IOrderDomainService orderDomainService,
         IOrderRepository orderRepository,
         IWorkflowDomainService workflowDomainService,
@@ -159,7 +160,8 @@ public class OrderApplication : IOrderApplication, IScopeDependency
         IRepository<KnowledgeQuote> knowledgeQuoteRepository,
         IRepository<OrderSpecial> orderSpecialRepository,
         IWorkflowApplication workflowApplication,
-        ICircularRecordDomainService circularRecordDomainService)
+        ICircularRecordDomainService circularRecordDomainService,
+		IRepository<User> userRepository)
     {
         _orderDomainService = orderDomainService;
         _workflowDomainService = workflowDomainService;
@@ -206,7 +208,8 @@ public class OrderApplication : IOrderApplication, IScopeDependency
         _orderSpecialRepository = orderSpecialRepository;
         _workflowApplication = workflowApplication;
         _circularRecordDomainService = circularRecordDomainService;
-    }
+        _userRepository = userRepository;
+	}
 
     /// <summary>
     /// 更新工单办理期满时间(延期调用,其他不调用)
@@ -4112,10 +4115,10 @@ public class OrderApplication : IOrderApplication, IScopeDependency
                 cancellation);
 
 
-        //if (order.ActualHandleOrgCode != OrgSeedData.CenterId && order.Status < EOrderStatus.Filed)
-        //{
-        //	await _circularRecordDomainService.OrderSpecialCircularMessage(special, order, cancellation);
-        //}
+        if (_appOptions.Value.IsYiBin && order.ActualHandleOrgCode != OrgSeedData.CenterId && order.Status < EOrderStatus.Filed)
+        {
+            await _circularRecordDomainService.OrderSpecialCircularMessage(special, order, cancellation);
+        }
 
         if (_appOptions.Value.IsZiGong && dto.BusinessType == EBusinessType.Send)
         {
@@ -5235,7 +5238,24 @@ public class OrderApplication : IOrderApplication, IScopeDependency
             await _orderRepository.Updateable().SetColumns(o => new Order() { ProcessType = processType, SendBackNum = order.SendBackNum })
                 .Where(o => o.Id == order.Id).ExecuteCommandAsync(cancellationToken);
         }
-    }
+
+		if (_appOptions.Value.IsYiBin && order.IsProvince && sendBack.ApplyOrgId.Length == 6 && sendBack.SendBackOrgId == OrgSeedData.CenterId )
+		{
+            if (currentStep.FlowAssignType == EFlowAssignType.User)
+            {
+                await _circularRecordDomainService.OrderSendBackCircularMessage(currentStep.HandlerId, currentStep.HandlerName, order, cancellationToken);
+            }
+            else if (currentStep.FlowAssignType == EFlowAssignType.Role && !string.IsNullOrEmpty(currentStep.RoleId))
+            {
+
+                var users = await _userRepository.Queryable().Includes(x => x.Roles).Where(x => x.Roles.Where(x => x.Id == currentStep.RoleId).Any()).ToListAsync();
+                foreach (var user in users)
+                {
+                    await _circularRecordDomainService.OrderSendBackCircularMessage(user.Id, user.Name, order, cancellationToken);
+                }
+            }
+		}
+	}
 
     #endregion
 }

+ 8 - 1
src/Hotline.Share/Dtos/Order/QueryOrderDto.cs

@@ -265,7 +265,14 @@ namespace Hotline.Share.Dtos.Order
         public string Id { get; set; }
     }
 
-    public record ApplyDelayDto
+    public record AlterDelayDayDto {
+		public string Id { get; set; }
+        public int DelayNum { get; set; }
+
+	}
+
+
+	public record ApplyDelayDto
     {
         public string OrderId { get; set; }
 

+ 27 - 0
src/Hotline/Article/CircularRecordDomainService.cs

@@ -202,5 +202,32 @@ namespace Hotline.Article
 
 		}
 
+        /// <summary>
+        /// 信件退回公告通知
+        /// </summary>
+        /// <returns></returns>
+		public async Task OrderSendBackCircularMessage(string userId,string userName, Order order, CancellationToken cancellationToken = default)
+		{
+
+			var cMessage = new AddCircularDto
+			{
+				Title = "信件退回信息",
+				Content = $"工单编码为{order.No}的工单,已被退回,请及时处理!",
+				CircularTypeId = "1",
+				CircularTypeName = "公告通知",
+				CircularType = ECircularType.Person,
+				IsMustRead = false,
+				SourceOrgId = _sessionContext.RequiredOrgId,
+				SourceOrgName = _sessionContext.OrgName
+			};
+			var groups = new CircularReadGroupDto
+			{
+				UserId = userId,
+				UserName = userName
+			};
+			cMessage.CircularReadGroups = new List<CircularReadGroupDto> { groups };
+
+		}
+
 	}
 }

+ 2 - 0
src/Hotline/Article/ICircularRecordDomainService.cs

@@ -21,5 +21,7 @@ namespace Hotline.Article
 
         Task OrderSpecialCircularMessage(OrderSpecial special, Order order, CancellationToken cancellationToken = default);
 
+        Task OrderSendBackCircularMessage(string userId, string userName, Order order, CancellationToken cancellationToken = default);
+
 	}
 }