Ver código fonte

更新工单时,不判断自贡工单状态

qinchaoyue 6 meses atrás
pai
commit
0d0b84bcab
1 arquivos alterados com 92 adições e 88 exclusões
  1. 92 88
      src/Hotline.Api/Controllers/OrderController.cs

+ 92 - 88
src/Hotline.Api/Controllers/OrderController.cs

@@ -354,7 +354,7 @@ public class OrderController : BaseController
         foreach (var item in dto.Ids)
         {
             var order = await _orderRepository.GetAsync(item, HttpContext.RequestAborted);
-            if (order != null &&  order.Status == EOrderStatus.Filed)
+            if (order != null && order.Status == EOrderStatus.Filed)
             {
                 try
                 {
@@ -910,8 +910,8 @@ public class OrderController : BaseController
             .WhereIF(dto.IsOverTime == false,
                 d => (d.Order.ExpiredTime > DateTime.Now && d.Order.Status < EOrderStatus.Filed) ||
                      (d.Order.ExpiredTime > d.Order.ActualHandleTime && d.Order.Status >= EOrderStatus.Filed)) //否 超期
-            .WhereIF(dto.StartTime.HasValue,d=>d.VisitTime>= dto.StartTime)
-            .WhereIF(dto.EndTime.HasValue,d=>d.VisitTime<= dto.EndTime)
+            .WhereIF(dto.StartTime.HasValue, d => d.VisitTime >= dto.StartTime)
+            .WhereIF(dto.EndTime.HasValue, d => d.VisitTime <= dto.EndTime)
             .OrderByDescending(x => x.PublishTime)
             .WhereIF(dto.Channel.NotNullOrEmpty(), d => d.Order.SourceChannelCode == dto.Channel)
             .OrderByDescending(d => d.PublishTime)
@@ -1979,7 +1979,7 @@ public class OrderController : BaseController
             .Where(x => x.OrderScreens.Any(s => s.Status == EScreenStatus.SendBack && s.ScreenType == dto.ScreenType && s.SendBackApply == true) || x.OrderScreens.Any() == false
             //|| x.OrderScreens.Any(s => (s.Status != EScreenStatus.SendBack && s.SendBackApply != true)) == false
             )
-            .WhereIF(dto.ScreenType == EOrderScreenType.Seat , x=>x.OrderVisit.Order.IsProvince == false)
+            .WhereIF(dto.ScreenType == EOrderScreenType.Seat, x => x.OrderVisit.Order.IsProvince == false)
             .WhereIF(dto.ScreenSendBack is 1, x => x.OrderScreens.Any(s => s.Status == EScreenStatus.SendBack && s.ScreenType == dto.ScreenType && s.SendBackApply == true))
             .WhereIF(dto.ScreenSendBack is 2, x => x.OrderScreens.Any(s => (s.Status != EScreenStatus.SendBack && s.ScreenType == dto.ScreenType && s.SendBackApply != true)) == false)
             .WhereIF(!string.IsNullOrEmpty(dto.No), x => x.OrderVisit.Order!.No!.Contains(dto.No!))
@@ -2029,14 +2029,14 @@ public class OrderController : BaseController
             query.WhereIF(!string.IsNullOrEmpty(dto.Keyword),
                     x => x.OrderVisit.Order.Title.Contains(dto.Keyword!) ||
                          x.OrderVisit.Order.No.Contains(dto.Keyword!))
-                .WhereIF(dto.ScreenType == EOrderScreenType.Org,x => x.VisitTarget == EVisitTarget.Org && (
+                .WhereIF(dto.ScreenType == EOrderScreenType.Org, x => x.VisitTarget == EVisitTarget.Org && (
                     SqlFunc.JsonField(x.OrgProcessingResults, "Key") == "1" ||
                     SqlFunc.JsonField(x.OrgProcessingResults, "Key") == "2" ||
                     SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == "1" ||
                     SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == "2"
                 ))
-                .WhereIF(dto.ScreenType == EOrderScreenType.Seat, x => x.VisitTarget == EVisitTarget.Seat && (x.SeatEvaluate == ESeatEvaluate.VeryNoSatisfied || x.SeatEvaluate  == ESeatEvaluate.NoSatisfied))
-				;
+                .WhereIF(dto.ScreenType == EOrderScreenType.Seat, x => x.VisitTarget == EVisitTarget.Seat && (x.SeatEvaluate == ESeatEvaluate.VeryNoSatisfied || x.SeatEvaluate == ESeatEvaluate.NoSatisfied))
+                ;
         }
 
         var (total, items) = await query
@@ -2062,50 +2062,50 @@ public class OrderController : BaseController
     [HttpGet("screen")]
     public async Task<PagedDto<OrderScreenListDto>> ScreenList([FromQuery] ScreenListDto dto)
     {
-        var (total, items) = await  _orderApplication.OrderScreenList(dto)
+        var (total, items) = await _orderApplication.OrderScreenList(dto)
             .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
         return new PagedDto<OrderScreenListDto>(total, _mapper.Map<IReadOnlyList<OrderScreenListDto>>(items));
     }
 
 
-	/// <summary>
-	/// 工单甄别列表导出
-	/// </summary>
-	/// <returns></returns>
-	[HttpPost("screen_list/_export")]
+    /// <summary>
+    /// 工单甄别列表导出
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("screen_list/_export")]
     public async Task<FileStreamResult> ScreenListExport([FromBody] ExportExcelDto<ScreenListDto> dto)
     {
-	    var query = _orderApplication.OrderScreenList(dto.QueryDto);
-	    List<OrderScreen> data;
-	    if (dto.IsExportAll)
-	    {
-		    data = await query.ToListAsync(HttpContext.RequestAborted);
-	    }
-	    else
-	    {
-		    var (_, items) = await query.ToPagedListAsync(dto.QueryDto, HttpContext.RequestAborted);
-		    data = items;
-	    }
+        var query = _orderApplication.OrderScreenList(dto.QueryDto);
+        List<OrderScreen> data;
+        if (dto.IsExportAll)
+        {
+            data = await query.ToListAsync(HttpContext.RequestAborted);
+        }
+        else
+        {
+            var (_, items) = await query.ToPagedListAsync(dto.QueryDto, HttpContext.RequestAborted);
+            data = items;
+        }
 
-	    var dataDtos = _mapper.Map<ICollection<OrderScreenListDto>>(data);
+        var dataDtos = _mapper.Map<ICollection<OrderScreenListDto>>(data);
 
-	    dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
+        dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
 
-	    var dtos = dataDtos
-		    .Select(stu => _mapper.Map(stu, typeof(OrderScreenListDto), dynamicClass))
-		    .Cast<object>()
-		    .ToList();
+        var dtos = dataDtos
+            .Select(stu => _mapper.Map(stu, typeof(OrderScreenListDto), dynamicClass))
+            .Cast<object>()
+            .ToList();
 
-	    var stream = ExcelHelper.CreateStream(dtos);
+        var stream = ExcelHelper.CreateStream(dtos);
 
-	    return ExcelStreamResult(stream, "工单甄别列表数据");
+        return ExcelStreamResult(stream, "工单甄别列表数据");
     }
 
 
-	/// <summary>
-	/// 开始工单甄别流程
-	/// </summary>
-	[Permission(EPermission.ApplyScreen)]
+    /// <summary>
+    /// 开始工单甄别流程
+    /// </summary>
+    [Permission(EPermission.ApplyScreen)]
     [HttpPost("screen/startflow")]
     [LogFilter("开始工单甄别流程")]
     public async Task StartFlow([FromBody] StartWorkflowDto<OrderScreenDto> dto)
@@ -2150,14 +2150,14 @@ public class OrderController : BaseController
         var order = await _orderRepository.GetAsync(dto.Data.OrderId, HttpContext.RequestAborted);
         if (order.IsProvince)
         {
-			var orderAny = await _orderScreenRepository.AnyAsync(x =>
-				x.OrderId == dto.Data.OrderId &&
-				(x.Status == EScreenStatus.Apply || x.Status == EScreenStatus.Approval));
-			if (orderAny)
-			{
-				throw UserFriendlyException.SameMessage("当前工单为省工单,已发起甄别申请,请等待省上返回结果!");
-			}
-		}
+            var orderAny = await _orderScreenRepository.AnyAsync(x =>
+                x.OrderId == dto.Data.OrderId &&
+                (x.Status == EScreenStatus.Apply || x.Status == EScreenStatus.Approval));
+            if (orderAny)
+            {
+                throw UserFriendlyException.SameMessage("当前工单为省工单,已发起甄别申请,请等待省上返回结果!");
+            }
+        }
 
         var model = _mapper.Map<OrderScreen>(dto.Data);
         model.Status = EScreenStatus.Approval;
@@ -2304,7 +2304,7 @@ public class OrderController : BaseController
         {
             ScreenStatus = EnumExts.GetDescriptions<EScreenStatus>(),
             OrderScreenType = EnumExts.GetDescriptions<EOrderScreenType>(),
-			ScreenType = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.ScreenType),
+            ScreenType = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.ScreenType),
             CounterSignType = EnumExts.GetDescriptions<ECounterSignType>(),
             AcceptType = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.AcceptType),
             SourceChannel = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.SourceChannel),
@@ -3378,8 +3378,11 @@ public class OrderController : BaseController
             .FirstAsync(d => d.Id == dto.Id);
         if (order == null)
             throw UserFriendlyException.SameMessage("无效工单编号");
-        if (dto.IsEdit != true && order.Status > EOrderStatus.HandOverToUnAccept)
-            throw UserFriendlyException.SameMessage("工单已发起流程,不可编辑");
+        if (_appOptions.Value.IsZiGong != true)
+        {
+            if (dto.IsEdit != true && order.Status > EOrderStatus.HandOverToUnAccept)
+                throw UserFriendlyException.SameMessage("工单已发起流程,不可编辑");
+        }
 
         // 副本工单
         var copy = new OrderCopy();
@@ -3574,12 +3577,12 @@ public class OrderController : BaseController
     /// </summary>
     /// <returns></returns>
     [HttpGet("startflow")]
-    public async Task<NextStepsDto> GetFlowStartOptions([FromQuery]string? orderId)
+    public async Task<NextStepsDto> GetFlowStartOptions([FromQuery] string? orderId)
     {
         var outDto = await _workflowApplication.GetStartStepsAsync(WorkflowModuleConsts.OrderHandle,
             HttpContext.RequestAborted);
         if (orderId.NotNullOrEmpty())
-        { 
+        {
             outDto.Opinion = await _typeCache.GetAsync($"tmp_opinion_{orderId}{_sessionContext.UserId}", HttpContext.RequestAborted);
         }
         return outDto;
@@ -3625,11 +3628,11 @@ public class OrderController : BaseController
                 var averageSendOrder = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.AverageSendOrder).SettingValue[0]);
                 if (averageSendOrder)
                 {
-	                if (!dto.Workflow.NextHandlers.Any())
-	                {
-						var handler = await _orderDomainService.AverageOrder(HttpContext.RequestAborted);
-						dto.Workflow.NextHandlers = new List<FlowStepHandler> { handler };
-					}
+                    if (!dto.Workflow.NextHandlers.Any())
+                    {
+                        var handler = await _orderDomainService.AverageOrder(HttpContext.RequestAborted);
+                        dto.Workflow.NextHandlers = new List<FlowStepHandler> { handler };
+                    }
                 }
             }
         }
@@ -3663,10 +3666,11 @@ public class OrderController : BaseController
                     .SettingValue[0]);
                 if (workflowDto.BusinessType == EBusinessType.Send && averageSendOrder)
                 {
-                    if (!nextDto.NextHandlers.Any()) {
-						var handler = await _orderDomainService.AverageOrder(cancellationToken);
-						nextDto.NextHandlers = new List<FlowStepHandler> { handler };
-					}
+                    if (!nextDto.NextHandlers.Any())
+                    {
+                        var handler = await _orderDomainService.AverageOrder(cancellationToken);
+                        nextDto.NextHandlers = new List<FlowStepHandler> { handler };
+                    }
                 }
 
                 await _workflowDomainService.NextAsync(_sessionContext, nextDto, order.ExpiredTime, cancellationToken);
@@ -3678,7 +3682,7 @@ public class OrderController : BaseController
                 orderHandleFlowDto.CrossSteps = orderHandleFlowDto.CrossSteps.OrderBy(d => d.Sort).ToList();
                 var stepCount = orderHandleFlowDto.CrossSteps.Count;
                 var unhandleSteps = new List<WorkflowStep> { startStep };
-                for (int i = 0; i < stepCount; i++)
+                for (int i = 0;i < stepCount;i++)
                 {
                     var crossStep = orderHandleFlowDto.CrossSteps[i];
                     var tempSteps = new List<WorkflowStep>();
@@ -3691,8 +3695,8 @@ public class OrderController : BaseController
                         nextflowDto.StepId = unhandleStep.Id;
                         nextflowDto.IsStartCountersign = lowerLevelHandlers.Count > 1;
                         nextflowDto.NextHandlers = lowerLevelHandlers;
-                        if(unhandleStep.Id != startStep.Id)
-                          nextflowDto.Opinion = "跨级派单,自动办理";
+                        if (unhandleStep.Id != startStep.Id)
+                            nextflowDto.Opinion = "跨级派单,自动办理";
 
                         var operater = new FakeSessionContext
                         {
@@ -3758,7 +3762,7 @@ public class OrderController : BaseController
         rsp.CounterSignType = order.CounterSignType;
         return rsp;
     }
-    
+
     /// <summary>
     /// 临时保存
     /// </summary>
@@ -3854,7 +3858,7 @@ public class OrderController : BaseController
             CurrentStepOptions = definition?.Steps.Select(x => new Kv(x.Code, x.Name)),
             IdentityTypeOptions = EnumExts.GetDescriptions<EIdentityType>(),
             OrderTags = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.OrderTag)
-		};
+        };
         return rsp;
     }
 
@@ -3984,19 +3988,19 @@ public class OrderController : BaseController
         var query = _orderRepository
             .Queryable(hasHandled: isHandled, isAdmin: isAdmin)
             .Includes(d => d.OrderSpecials);
-        if (dto.QueryType is 1  || dto.QueryType is 2)
-		{
+        if (dto.QueryType is 1 || dto.QueryType is 2)
+        {
             query.WhereIF(dto.QueryType is 1, d => d.IsForwarded == false)
-	            .WhereIF(dto.QueryType is 2, d => d.IsForwarded == true)
-				.Where(d=>SqlFunc.Subqueryable<OrderSpecial>().Where(os=>os.OrderId == d.Id && os.SpecialType == ESpecialType.ReTransact).NotAny());
+                .WhereIF(dto.QueryType is 2, d => d.IsForwarded == true)
+                .Where(d => SqlFunc.Subqueryable<OrderSpecial>().Where(os => os.OrderId == d.Id && os.SpecialType == ESpecialType.ReTransact).NotAny());
         }
 
-		var (total, items) = await query
-			.Where(d => d.Status != EOrderStatus.WaitForAccept &&
+        var (total, items) = await query
+            .Where(d => d.Status != EOrderStatus.WaitForAccept &&
                         d.Status != EOrderStatus.BackToUnAccept &&
                         d.Status != EOrderStatus.SpecialToUnAccept &&
                         d.Status != EOrderStatus.HandOverToUnAccept)
-		    .WhereIF(dto.QueryType is 3, d => SqlFunc.Subqueryable<OrderSpecial>().Where(os => os.OrderId == d.Id && os.SpecialType == ESpecialType.ReTransact).Any())
+            .WhereIF(dto.QueryType is 3, d => SqlFunc.Subqueryable<OrderSpecial>().Where(os => os.OrderId == d.Id && os.SpecialType == ESpecialType.ReTransact).Any())
             .WhereIF(dto.IsProvince.HasValue, d => d.IsProvince == dto.IsProvince)
             .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Title.StartsWith(dto.Keyword))
             .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.No == dto.No)
@@ -4525,7 +4529,7 @@ public class OrderController : BaseController
         var order = await _orderDomainService.GetOrderAsync(orderId, cancellationToken: HttpContext.RequestAborted);
         if (string.IsNullOrEmpty(order.WorkflowId))
             throw UserFriendlyException.SameMessage("该工单未开启流程");
-        
+
         var (currentStep, prevStep, isOrgToCenter, isSecondToFirstOrgLevel) = await _workflowApplication.GetPreviousInformationAsync(
             order.WorkflowId, _sessionContext.RequiredUserId, _sessionContext.RequiredOrgId, _sessionContext.Roles, HttpContext.RequestAborted);
 
@@ -4535,7 +4539,7 @@ public class OrderController : BaseController
             TargetBusinessType = prevStep.BusinessType
         };
     }
-    
+
     #endregion
 
     #region 省工单退回
@@ -4745,7 +4749,7 @@ public class OrderController : BaseController
             throw UserFriendlyException.SameMessage("该工单存在正在审核中的退回,不能办理");
         }
 
-        if (_appOptions.Value.IsZiGong &&  string.IsNullOrEmpty(dto.Cause))
+        if (_appOptions.Value.IsZiGong && string.IsNullOrEmpty(dto.Cause))
         {
             dto.Cause = dto.Reason;
         }
@@ -5027,7 +5031,7 @@ public class OrderController : BaseController
             //宜宾需求:1. 坐席申请特提:指派给申请人办理 2. 派单员申请特提:所有派单员都能办 3.其他特提场景:按节点原配置办理
 
             var processType = dto.FlowDirection is EFlowDirection.OrgToCenter or EFlowDirection.CenterToCenter or EFlowDirection.FiledToCenter
-				? EProcessType.Zhiban
+                ? EProcessType.Zhiban
                 : EProcessType.Jiaoban;
             await _workflowApplication.RecallAsync(recall, endTime, order.Status >= EOrderStatus.Filed, EWorkflowTraceType.Redo,
                 HttpContext.RequestAborted);
@@ -5476,20 +5480,20 @@ public class OrderController : BaseController
         var baseTypeId = string.Empty;
         if (!_sessionContext.Roles.Contains("banzhang"))
         {
-			if (step != null && step.Steps.Any() && _sessionContext.Roles.Contains("zuoxi") && specialSeats &&
-			    !_sessionContext.Roles.Contains("paidanyuan"))
-			{
-				step.Steps = step.Steps.Where(x => x.Key.ToLower() == "start").ToList();
-				if (step.Steps.Any()) baseTypeId = step.Steps[0].Key;
-			}
-
-			if (step != null && step.Steps.Any() && _sessionContext.Roles.Contains("paidanyuan") && specialSendOrder &&
-			    !_sessionContext.Roles.Contains("zuoxi"))
-			{
-				step.Steps = step.Steps.Where(d => d.BusinessType is EBusinessType.Send).ToList();
-				if (step.Steps.Any()) baseTypeId = step.Steps[0].Key;
-			}
-		}
+            if (step != null && step.Steps.Any() && _sessionContext.Roles.Contains("zuoxi") && specialSeats &&
+                !_sessionContext.Roles.Contains("paidanyuan"))
+            {
+                step.Steps = step.Steps.Where(x => x.Key.ToLower() == "start").ToList();
+                if (step.Steps.Any()) baseTypeId = step.Steps[0].Key;
+            }
+
+            if (step != null && step.Steps.Any() && _sessionContext.Roles.Contains("paidanyuan") && specialSendOrder &&
+                !_sessionContext.Roles.Contains("zuoxi"))
+            {
+                step.Steps = step.Steps.Where(d => d.BusinessType is EBusinessType.Send).ToList();
+                if (step.Steps.Any()) baseTypeId = step.Steps[0].Key;
+            }
+        }
 
         var rsp = new
         {