Pārlūkot izejas kodu

Merge branch 'master' of http://git.12345lm.cn/Fengwo/hotline

Dun.Jason 1 gadu atpakaļ
vecāks
revīzija
471a2eaddd

+ 42 - 23
src/Hotline.Api/Controllers/OrderController.cs

@@ -1175,12 +1175,37 @@ public class OrderController : BaseController
         }
     }
 
+
     /// <summary>
-    /// 延期列表
-    /// </summary>
-    /// <returns></returns>
-    //[Permission(EPermission.DelayList)]
-    [HttpGet("delay")]
+    /// 工单延期修改后下一步流程
+    /// </summary>
+    [HttpPost("delay/initial_nextFlow")]
+    [LogFilter("开始工单延期流程")]
+    public async Task InitialNextFlow([FromBody] DelayNextFlowDto dto)
+    {
+	    var delay = await _orderDelayRepository.GetAsync(dto.Data.Id);
+	    _mapper.Map(dto.Data, delay);
+	    if (dto.Data.Files.Any())
+		    delay.FileJson = await _fileRepository.AddFileAsync(dto.Data.Files, delay.Id, "", HttpContext.RequestAborted);
+	    await _orderDelayRepository.UpdateAsync(delay, HttpContext.RequestAborted);
+	    try
+	    {
+		    dto.NextWorkflow.WorkflowId = delay.WorkflowId;
+		    await _workflowApplication.NextAsync(dto.NextWorkflow,
+			    cancellationToken: HttpContext.RequestAborted);
+	    }
+	    catch (Exception e)
+	    {
+		    throw new UserFriendlyException($"工单延期下一步流程失败!, {e.Message}", "工单延期下一步流程失败");
+	    }
+    }
+
+	/// <summary>
+	/// 延期列表
+	/// </summary>
+	/// <returns></returns>
+	//[Permission(EPermission.DelayList)]
+	[HttpGet("delay")]
     public async Task<PagedDto<OrderDelayDto>> DelayList([FromQuery] DelayListDto dto)
     {
         var (total, items) = await _orderDelayRepository.Queryable(viewFilter: false)
@@ -1234,7 +1259,8 @@ public class OrderController : BaseController
             .FirstAsync(x => x.Id == id);
         var rspModel = _mapper.Map<OrderDelayDto>(model);
         rspModel.IsCanHandle = model.CanHandle(_sessionContext.RequiredUserId, _sessionContext.RequiredOrgId);
-        if (rspModel.FileJson != null && rspModel.FileJson.Any())
+        rspModel.Handle = await _workflowDomainService.CheckCurrentIsStartStepAsync(rspModel.WorkflowId, _sessionContext.RequiredUserId, _sessionContext.RequiredOrgId, HttpContext.RequestAborted);
+		if (rspModel.FileJson != null && rspModel.FileJson.Any())
         {
             var ids = rspModel.FileJson.Select(x => x.Id).ToList();
             rspModel.Files = await _fileRepository.GetFilesAsync(ids, HttpContext.RequestAborted);
@@ -1339,7 +1365,10 @@ public class OrderController : BaseController
     [HttpGet("screen")]
     public async Task<PagedDto<OrderScreenListDto>> ScreenList([FromQuery] ScreenListDto dto)
     {
-        var query = _orderScreenRepository.Queryable(viewFilter: false)
+        var view = dto.source == 1;
+        var handler = dto.source == 1 && dto.Status is EScreenStatus.Apply;
+
+		var query = _orderScreenRepository.Queryable(viewFilter: view, handlerFilter: handler)
             .Includes(x => x.Order)
             .Includes(x => x.VisitDetail)
             .Includes(x => x.Visit, d => d.Order)
@@ -1348,21 +1377,11 @@ public class OrderController : BaseController
                 x => x.Visit.Order.Title.Contains(dto.Keyword!) || x.Visit.Order.No.Contains(dto.Keyword!));
         if (dto.Status is EScreenStatus.Apply)
         {
-            query.Where(x => (x.Status == EScreenStatus.Apply || x.Status == EScreenStatus.Approval)
-                            && ((SqlFunc.JsonArrayLength(x.Workflow.HandlerUsers) > 0
-                            && SqlFunc.JsonListObjectAny(x.Workflow.HandlerUsers, "Key", _sessionContext.RequiredUserId))
-                            || (SqlFunc.JsonArrayLength(x.Workflow.HandlerUsers) == 0
-                            && SqlFunc.JsonListObjectAny(x.Workflow.HandlerOrgs, "Key",
-                                _sessionContext.RequiredOrgId))));
+            query.Where(x => (x.Status == EScreenStatus.Apply || x.Status == EScreenStatus.Approval));
         }
         if (dto.Status.HasValue && dto.Status == EScreenStatus.MyHandle)
         {
-            query.Where(x => (x.Status != EScreenStatus.Apply)
-                              && ((SqlFunc.JsonArrayLength(x.Workflow.HandlerUsers) > 0
-                                   && SqlFunc.JsonListObjectAny(x.Workflow.HandlerUsers, "Key", _sessionContext.RequiredUserId))
-                                  || (SqlFunc.JsonArrayLength(x.Workflow.HandlerUsers) == 0
-                                      && SqlFunc.JsonListObjectAny(x.Workflow.HandlerOrgs, "Key",
-                                          _sessionContext.RequiredOrgId))));
+            query.Where(x => (x.Status != EScreenStatus.Apply));
         }
         var (total, items) = await query
             //.WhereIF(dto.Status.HasValue && dto.Status == EScreenStatus.MyHandle,
@@ -1376,10 +1395,10 @@ public class OrderController : BaseController
     }
 
 
-    /// <summary>
-    /// 开始工单甄别流程
-    /// </summary>
-    [Permission(EPermission.ApplyScreen)]
+	/// <summary>
+	/// 开始工单甄别流程
+	/// </summary>
+	[Permission(EPermission.ApplyScreen)]
     [HttpPost("screen/startflow")]
     [LogFilter("开始工单甄别流程")]
     public async Task StartFlow([FromBody] ScreenStartFlowDto dto)

+ 0 - 4
src/Hotline.Api/Controllers/TemplateDomainController.cs

@@ -68,8 +68,6 @@ namespace Hotline.Api.Controllers
 
             _mapper.Map(dto,model);
 
-
-
             Regex regex = new(@"\{[a-zA-Z0-9]{1,}\}");
             var matches = regex.Matches(model.Content);
             List<string> list = new List<string>();
@@ -84,8 +82,6 @@ namespace Hotline.Api.Controllers
             await _messageTemplateRepository.UpdateAsync(model, HttpContext.RequestAborted);
         }
 
-
-
         /// <summary>
         /// 查询详情
         /// </summary>

+ 7 - 0
src/Hotline.Share/Dtos/Order/OrderStartFlowDto.cs

@@ -25,6 +25,13 @@ namespace Hotline.Share.Dtos.Order
 		public NextWorkflowDto NextWorkflow { get; set; }
 	}
 
+    public class DelayNextFlowDto
+	{
+	    public OrderDelayDto Data { get; set; }
+
+	    public NextWorkflowDto NextWorkflow { get; set; }
+    }
+
 	public class DelayStartFlowDto : StartWorkflowDto<ApplyDelayDto>
     {
 

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

@@ -373,6 +373,11 @@ namespace Hotline.Share.Dtos.Order
         public List<FileDto> Files { get; set; }
 
         public List<FileJson> FileJson { get; set; }
+
+        /// <summary>
+        /// 办理 true  审批 false 
+        /// </summary>
+        public bool Handle { get; set; }
 	}
 
 
@@ -422,9 +427,15 @@ namespace Hotline.Share.Dtos.Order
 	    public DateTime? CreationTimeEnd { get; set; }
 
         public string? OrderId { get; set; }
+
+        /// <summary>
+        /// 甄别查询来源  1 甄别待办  2 甄别列表
+        /// </summary>
+        public int source { get; set; }
+
 	}
 
-    public record MayScreenListDto : PagedKeywordRequest
+	public record MayScreenListDto : PagedKeywordRequest
     {
 	    /// <summary>
 	    /// 部门编号

+ 4 - 4
src/XF.Domain.Repository/Entity.cs

@@ -157,13 +157,13 @@ public abstract class WorkflowEntity : FullStateEntity, IWorkflow
     /// 办理人id
     /// </summary>
     [SugarColumn(ColumnDataType = "json", IsJson = true)]
-    public List<HandlerGroupItem> HandlerUsers { get; set; } = new();
+    public List<HandlerGroupItem>? HandlerUsers { get; set; } = new();
 
     /// <summary>
     /// 办理部门id
     /// </summary>
     [SugarColumn(ColumnDataType = "json", IsJson = true)]
-    public List<HandlerGroupItem> HandlerOrgs { get; set; } = new();
+    public List<HandlerGroupItem>? HandlerOrgs { get; set; } = new();
 
     #endregion
 
@@ -333,13 +333,13 @@ public abstract class PositionWorkflowEntity : PositionEntity, IWorkflow
     /// 办理人id
     /// </summary>
     [SugarColumn(ColumnDataType = "json", IsJson = true)]
-    public List<HandlerGroupItem> HandlerUsers { get; set; } = new();
+    public List<HandlerGroupItem>? HandlerUsers { get; set; } = new();
 
     /// <summary>
     /// 办理部门id
     /// </summary>
     [SugarColumn(ColumnDataType = "json", IsJson = true)]
-    public List<HandlerGroupItem> HandlerOrgs { get; set; } = new();
+    public List<HandlerGroupItem>? HandlerOrgs { get; set; } = new();
 
     #endregion