xf 6 сар өмнө
parent
commit
39f01ff148

+ 20 - 20
src/Hotline.Api/Controllers/OrderController.cs

@@ -2994,7 +2994,7 @@ public class OrderController : BaseController
             dto.IsReturnUnderApproval = true;
         }
         //省退回
-        var orderSendback = await _orderSendBackRepository.Queryable().Where(x => x.OrderId == order.Id).OrderByDescending(x=>x.AuditTime).FirstAsync();
+        var orderSendback = await _orderSendBackRepository.Queryable().Where(x => x.OrderId == order.Id).OrderByDescending(x => x.AuditTime).FirstAsync();
         if (orderSendback is not null)
         {
             string stateStr = "";
@@ -3014,7 +3014,7 @@ public class OrderController : BaseController
                     stateStr = "未知";
                     break;
             }
-            dto.ProvinceSendBackString = "该工单已向省平台发送退回申请!退回状态:"+ stateStr;
+            dto.ProvinceSendBackString = "该工单已向省平台发送退回申请!退回状态:" + stateStr;
         }
 
         var isProvinceorderRevoke = await _orderRevokeRepository.Queryable().AnyAsync(x => x.OrderId == order.Id && x.IsProRevoke == true);
@@ -3708,9 +3708,9 @@ public class OrderController : BaseController
         var (total, items) = await _orderRepository
             .Queryable(hasHandled: isHandled, isAdmin: isAdmin)
             .Includes(d => d.OrderSpecials)
-            .Where(d => d.Status != EOrderStatus.WaitForAccept && 
-                        d.Status != EOrderStatus.BackToUnAccept && 
-                        d.Status != EOrderStatus.SpecialToUnAccept && 
+            .Where(d => d.Status != EOrderStatus.WaitForAccept &&
+                        d.Status != EOrderStatus.BackToUnAccept &&
+                        d.Status != EOrderStatus.SpecialToUnAccept &&
                         d.Status != EOrderStatus.HandOverToUnAccept)
             .WhereIF(dto.IsProvince.HasValue, d => d.IsProvince == dto.IsProvince)
             .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Title.StartsWith(dto.Keyword))
@@ -3732,7 +3732,7 @@ public class OrderController : BaseController
             .WhereIF(dto.IsUrgent.HasValue, d => d.IsUrgent == dto.IsUrgent!.Value)
             .OrderByDescending(d => new { d.IsUrgent, d.StartTime })
             .ToPagedListAsync(dto, HttpContext.RequestAborted);
-        
+
         return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
     }
 
@@ -4005,16 +4005,16 @@ public class OrderController : BaseController
             TraceId = currentStep.Id
         };
         audit.InitId();
-		if (dto.Files.Any())
-	        audit.FileJson = await _fileRepository.AddFileAsync(dto.Files, audit.Id, "", HttpContext.RequestAborted);
-		if (_appOptions.Value.IsZiGong && prevStep.BusinessType == EBusinessType.Send)
+        if (dto.Files.Any())
+            audit.FileJson = await _fileRepository.AddFileAsync(dto.Files, audit.Id, "", HttpContext.RequestAborted);
+        if (_appOptions.Value.IsZiGong && prevStep.BusinessType == EBusinessType.Send)
         {
             // 平均派单
             var averageSendOrder = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.AverageSendOrder).SettingValue[0]);
             if (averageSendOrder)
             {
                 var handler = await _orderDomainService.AverageOrder(HttpContext.RequestAborted);
-                dto.NextHandlers = new List<FlowStepHandler> { handler };
+                dto.Handler = handler;
             }
         }
 
@@ -4237,18 +4237,18 @@ public class OrderController : BaseController
     [HttpGet("order_previous/{id}")]
     public async Task<SendBackDto> OrderSendBackEntity(string id)
     {
-        var res =  await _orderSendBackAuditRepository.Queryable()
+        var res = await _orderSendBackAuditRepository.Queryable()
             .Includes(x => x.Order)
             .FirstAsync(x => x.Id == id);
         var resDto = _mapper.Map<SendBackDto>(res);
         if (res.FileJson != null && res.FileJson.Any())
         {
-	        var ids = res.FileJson.Select(x => x.Id).ToList();
-	        var files = await _fileRepository.GetFilesAsync(ids, HttpContext.RequestAborted);
-	        resDto.Files = files.Where(x => x.Classify == "退回附件" && string.IsNullOrEmpty(x.FlowKey)).ToList();
+            var ids = res.FileJson.Select(x => x.Id).ToList();
+            var files = await _fileRepository.GetFilesAsync(ids, HttpContext.RequestAborted);
+            resDto.Files = files.Where(x => x.Classify == "退回附件" && string.IsNullOrEmpty(x.FlowKey)).ToList();
         }
         return resDto;
-	}
+    }
 
     /// <summary>
     /// 列表页面基础数据
@@ -4314,7 +4314,7 @@ public class OrderController : BaseController
                 continue;
             }
 
-            if (order.Status >= EOrderStatus.Filed || order.Status == EOrderStatus.BackToProvince || !order.IsProvince || order.ActualHandleOrgCode!="001")
+            if (order.Status >= EOrderStatus.Filed || order.Status == EOrderStatus.BackToProvince || !order.IsProvince || order.ActualHandleOrgCode != "001")
             {
                 errorCount++;
                 continue;
@@ -6122,7 +6122,7 @@ public class OrderController : BaseController
 
                     order.FirstVisitResultCode = _sysDicDataCacheManager
                         .GetSysDicDataCache(SysDicTypeConsts.VisitSatisfaction)
-                        .FirstOrDefault(m => m.DicDataName == item.VisitResult)?.DicDataValue 
+                        .FirstOrDefault(m => m.DicDataName == item.VisitResult)?.DicDataValue
                         ?? order.FirstVisitResultCode;
 
                     #endregion
@@ -6130,7 +6130,7 @@ public class OrderController : BaseController
                     if (order.Id.IsNullOrEmpty())
                     {
                         //order.Source = item;
-                        var id = await _orderDomainService.AddAsync(order,false,  HttpContext.RequestAborted);
+                        var id = await _orderDomainService.AddAsync(order, false, HttpContext.RequestAborted);
                         if (!string.IsNullOrEmpty(id))
                         {
                             addCount++;
@@ -6495,10 +6495,10 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpPost("modify-externalcitizens")]
-    public async Task ModifyExternalcitizens([FromBody]ModifyExternalcitizensDto dto)
+    public async Task ModifyExternalcitizens([FromBody] ModifyExternalcitizensDto dto)
     {
         var model = await _externalCitizensRepository.GetAsync(dto.Id, HttpContext.RequestAborted);
-        if( model == null )
+        if (model == null)
             throw UserFriendlyException.SameMessage("无效数据");
         model.PhoneNum = dto.PhoneNum;
         model.Name = dto.Name;

+ 0 - 2
src/Hotline.Api/Controllers/WorkflowController.cs

@@ -24,8 +24,6 @@ using Hotline.File;
 using Hotline.Orders;
 using Hotline.Share.Dtos.Order;
 using Hotline.Share.Dtos.FlowEngine.Definition;
-using Microsoft.AspNetCore.Authorization;
-using Hotline.Caching.Services;
 using Hotline.Settings.TimeLimits;
 using Hotline.SeedData;
 

+ 10 - 6
src/Hotline.Share/Dtos/FlowEngine/PreviousWorkflowDto.cs

@@ -12,12 +12,16 @@ public class PreviousWorkflowDto : EndWorkflowIdDto
     /// </summary>
     public DateTime? ExpiredTime { get; set; }
 
+    ///// <summary>
+    ///// 根据办理者类型不同,此字段为不同内容
+    ///// <example>
+    ///// 部门等级/分类为:depCodes, 角色为:userIds
+    ///// </example>
+    ///// </summary>
+    //public List<FlowStepHandler> NextHandlers { get; set; } = new();
+
     /// <summary>
-    /// 根据办理者类型不同,此字段为不同内容
-    /// <example>
-    /// 部门等级/分类为:depCodes, 角色为:userIds
-    /// </example>
+    /// 指定办理对象
     /// </summary>
-    public List<FlowStepHandler> NextHandlers { get; set; } = new();
-
+    public FlowStepHandler? Handler { get; set; }
 }

+ 12 - 10
src/Hotline/FlowEngine/Workflows/WorkflowDomainService.cs

@@ -21,6 +21,7 @@ using XF.Domain.Dependency;
 using XF.Domain.Entities;
 using XF.Domain.Exceptions;
 using XF.Domain.Repository;
+using System.Reflection.Metadata;
 
 namespace Hotline.FlowEngine.Workflows
 {
@@ -258,7 +259,7 @@ namespace Hotline.FlowEngine.Workflows
 
             var unhandlePreviousTrace = workflow.Traces.FirstOrDefault(d =>
                     d.Status is not EWorkflowStepStatus.Handled
-                //&& d.TraceType is EWorkflowTraceType.Previous
+            //&& d.TraceType is EWorkflowTraceType.Previous
             );
             //var previousOpinion = unhandlePreviousTrace?.Opinion ?? null;
 
@@ -626,17 +627,18 @@ namespace Hotline.FlowEngine.Workflows
             //如果有传入期满时间 新节点为传入的期满时间
             if (dto.ExpiredTime.HasValue)
                 prevStep.StepExpiredTime = dto.ExpiredTime;
-            //退给派单组节点,需按照平均分配原则派给一个派单员 禅道299 TODO
-            if (dto.NextHandlers.Any())
-            {
-                var handle = dto.NextHandlers.FirstOrDefault();
-                prevStep.Assign(handle.UserId, handle.Username, handle.OrgId, handle.OrgName, handle.RoleId, handle.RoleName);
-            }
-
+            
             //复制上一个节点为待接办
             var newPrevStep =
                 await DuplicateStepWithTraceAsync(workflow, prevStep, EWorkflowTraceType.Previous, cancellationToken);
 
+            //退给派单组节点,需按照平均分配原则派给一个派单员 禅道299 TODO
+            if (dto.Handler != null)//todo 改为按策略判断
+            {
+                var handle = dto.Handler;
+                newPrevStep.Assign(handle.UserId, handle.Username, handle.OrgId, handle.OrgName, handle.RoleId, handle.RoleName);
+            }
+
             //remove workflow.steps
             await _workflowStepRepository.RemoveRangeAsync(removeSteps, cancellationToken);
             //await _workflowStepRepository.RemoveNav(removeSteps)
@@ -1092,7 +1094,7 @@ namespace Hotline.FlowEngine.Workflows
             var workflow = await GetWorkflowAsync(workflowId, withDefine: true, withSteps: true, withTraces: true,
                 cancellationToken: cancellationToken);
             var startStep = workflow.Steps.First(d => d.StepType == EStepType.Start);
-            if(startStep is null)
+            if (startStep is null)
                 throw new UserFriendlyException($"数据异常, workflowId: {workflowId}", "该流程无开始节点");
 
             await RecallToTargetStepAsync(workflow, startStep, opinion, current, cancellationToken);
@@ -1130,7 +1132,7 @@ namespace Hotline.FlowEngine.Workflows
             else
             {
                 var startStep = workflow.Steps.First(d => d.StepType == EStepType.Start);
-                if(startStep is null)
+                if (startStep is null)
                     throw new UserFriendlyException($"数据异常, workflowId: {workflowId}", "该流程无开始节点");
                 await RecallToTargetStepAsync(workflow, startStep, opinion, current, cancellationToken);
             }