xf 1 年間 前
コミット
34f9e4eeeb
1 ファイル変更78 行追加75 行削除
  1. 78 75
      src/Hotline.Api/Controllers/OrderController.cs

+ 78 - 75
src/Hotline.Api/Controllers/OrderController.cs

@@ -717,74 +717,74 @@ public class OrderController : BaseController
         //update order
         //if (dto.IsPutThrough)
         //{
-            visit.VisitState = Share.Enums.Order.EVisitState.Visited;
-            visit.VisitTime = DateTime.Now;
-            if (!string.IsNullOrEmpty(visit.CallId))
-            {
-                visit.VisitType = EVisitType.CallVisit;
-            }
-            if (visit.VisitType is null)
-            {
-                visit.VisitType = EVisitType.ArtificialVisit;
-            }
-            if (first != null)
-            {
-                visit.Order.Visited(first.OrgProcessingResults.Key, first.OrgProcessingResults.Value);
-            }
+        visit.VisitState = Share.Enums.Order.EVisitState.Visited;
+        visit.VisitTime = DateTime.Now;
+        if (!string.IsNullOrEmpty(visit.CallId))
+        {
+            visit.VisitType = EVisitType.CallVisit;
+        }
+        if (visit.VisitType is null)
+        {
+            visit.VisitType = EVisitType.ArtificialVisit;
+        }
+        if (first != null)
+        {
+            visit.Order.Visited(first.OrgProcessingResults.Key, first.OrgProcessingResults.Value);
+        }
 
-            //_mapper.Map(dto.VisitDetails,visit.OrderVisitDetails);
-            for (int i = 0; i < visit.OrderVisitDetails.Count; i++)
+        //_mapper.Map(dto.VisitDetails,visit.OrderVisitDetails);
+        for (int i = 0; i < visit.OrderVisitDetails.Count; i++)
+        {
+            var detail = visit.OrderVisitDetails[i];
+            var detaildto = dto.VisitDetails.FirstOrDefault(x => x.Id == detail.Id);
+            if (detaildto != null)
             {
-                var detail = visit.OrderVisitDetails[i];
-                var detaildto = dto.VisitDetails.FirstOrDefault(x => x.Id == detail.Id);
-                if (detaildto != null)
-                {
-                    _mapper.Map(detaildto, visit.OrderVisitDetails[i]);
-                }
+                _mapper.Map(detaildto, visit.OrderVisitDetails[i]);
             }
+        }
 
-            await _orderVisitRepository.UpdateAsync(visit, HttpContext.RequestAborted);
-            await _orderVisitedDetailRepository.UpdateRangeAsync(visit.OrderVisitDetails, HttpContext.RequestAborted);
-            await _orderRepository.UpdateAsync(visit.Order, HttpContext.RequestAborted);
-            var orderDto = _mapper.Map<OrderDto>(visit.Order);
-            if (first != null)
-            {
-                //推省上
-                await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderVisited,
-                        new PublishVisitDto()
-                        {
-                            Order = orderDto,
-                            No = visit.No,
-                            VisitType = visit.VisitType,
-                            VisitName = visit.CreatorName,
-                            VisitTime = visit.VisitTime,
-                            VisitRemark = first.VisitContent,
-                            AreaCode = visit.Order.AreaCode!,
-                            SubjectResultSatifyCode = first.OrgProcessingResults.Key,
-                            FirstSatisfactionCode = visit.Order.FirstVisitResultCode!,
-                            ClientGuid = ""
-                        }, cancellationToken: HttpContext.RequestAborted);
-
-                //推门户
-                await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderVisitedWeb, new PublishVisitAllDto()
-                {
-                    Id = visit.Id,
-                    Order = orderDto,
-                    OrderVisitDetails = _mapper.Map<List<VisitDetailDto>>(visit.OrderVisitDetails),
-                    VisitName = _sessionContext.UserName,
-                    VisitTime = visit.VisitTime,
-                    VisitType = visit.VisitType,
-                    VisitState = visit.VisitState,
-                    PublishTime = visit.PublishTime,
-                }, cancellationToken: HttpContext.RequestAborted);
-            }
+        await _orderVisitRepository.UpdateAsync(visit, HttpContext.RequestAborted);
+        await _orderVisitedDetailRepository.UpdateRangeAsync(visit.OrderVisitDetails, HttpContext.RequestAborted);
+        await _orderRepository.UpdateAsync(visit.Order, HttpContext.RequestAborted);
+        var orderDto = _mapper.Map<OrderDto>(visit.Order);
+        if (first != null)
+        {
+            //推省上
+            await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderVisited,
+                    new PublishVisitDto()
+                    {
+                        Order = orderDto,
+                        No = visit.No,
+                        VisitType = visit.VisitType,
+                        VisitName = visit.CreatorName,
+                        VisitTime = visit.VisitTime,
+                        VisitRemark = first.VisitContent,
+                        AreaCode = visit.Order.AreaCode!,
+                        SubjectResultSatifyCode = first.OrgProcessingResults.Key,
+                        FirstSatisfactionCode = visit.Order.FirstVisitResultCode!,
+                        ClientGuid = ""
+                    }, cancellationToken: HttpContext.RequestAborted);
 
-            if (first != null)
+            //推门户
+            await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderVisitedWeb, new PublishVisitAllDto()
             {
-                //写入质检
-                await _qualityApplication.AddQualityAsync(EQualitySource.Visit, visit.Order.Id, visit.Id,
-                    HttpContext.RequestAborted);
-            }
+                Id = visit.Id,
+                Order = orderDto,
+                OrderVisitDetails = _mapper.Map<List<VisitDetailDto>>(visit.OrderVisitDetails),
+                VisitName = _sessionContext.UserName,
+                VisitTime = visit.VisitTime,
+                VisitType = visit.VisitType,
+                VisitState = visit.VisitState,
+                PublishTime = visit.PublishTime,
+            }, cancellationToken: HttpContext.RequestAborted);
+        }
+
+        if (first != null)
+        {
+            //写入质检
+            await _qualityApplication.AddQualityAsync(EQualitySource.Visit, visit.Order.Id, visit.Id,
+                HttpContext.RequestAborted);
+        }
         //}
         //else
         //{
@@ -1389,7 +1389,7 @@ public class OrderController : BaseController
     {
         dto.CreationTimeEnd = DateTime.Now;
         dto.CreationTimeStart = DateTime.Now;
-        if (dto.IsHomePage!=null && dto.IsHomePage==true)
+        if (dto.IsHomePage != null && dto.IsHomePage == true)
         {
             dto.CreationTimeStart = _timeLimitDomainService.CalcWorkTimeReduce(DateTime.Now, 5);
         }
@@ -1400,7 +1400,7 @@ public class OrderController : BaseController
             .Includes(x => x.OrderVisit, y => y.Employee)
             .LeftJoin<OrderScreen>((x, s) => x.Id == s.VisitDetailId && (int)s.Status < 2 && s.IsDeleted == false)
             .Where((x, s) => s.Id == null)
-            .WhereIF(dto.IsHomePage.HasValue && dto.IsHomePage==true ,x=>x.OrderVisit.VisitTime< dto.CreationTimeEnd && x.OrderVisit.VisitTime> dto.CreationTimeStart)
+            .WhereIF(dto.IsHomePage.HasValue && dto.IsHomePage == true, x => x.OrderVisit.VisitTime < dto.CreationTimeEnd && x.OrderVisit.VisitTime > dto.CreationTimeStart)
             .Where((x, s) => x.OrderVisit.VisitState != EVisitState.None && x.OrderVisit.IsCanHandle);
         if (_sessionContext.OrgId != null && !_sessionContext.OrgIsCenter)
         {
@@ -1770,7 +1770,7 @@ public class OrderController : BaseController
         await _orderSuperviseRepository.UpdateAsync(supervise, HttpContext.RequestAborted);
         var order = await _orderRepository.GetAsync(supervise.OrderId, HttpContext.RequestAborted);
         //推省上
-        if (supervise.Province.HasValue  && supervise.Province.Value)
+        if (supervise.Province.HasValue && supervise.Province.Value)
         {
             var orderDto = _mapper.Map<OrderDto>(order);
             var superviseDto = _mapper.Map<SuperviseOrderDto>(supervise);
@@ -2062,12 +2062,12 @@ public class OrderController : BaseController
             .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Title.Contains(dto.Keyword!)) //标题
             .WhereIF(!string.IsNullOrEmpty(dto.ProvinceNo), d => d.ProvinceNo.Contains(dto.ProvinceNo)) //省本地编号
             .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.No.Contains(dto.No)) //工单编码
-            //.WhereIF(!string.IsNullOrEmpty(dto.Content), d => d.Content.Contains(dto.Content!))
+                                                                                //.WhereIF(!string.IsNullOrEmpty(dto.Content), d => d.Content.Contains(dto.Content!))
             .WhereIF(dto.AcceptTypes.Any(), d => dto.AcceptTypes.Contains(d.AcceptType)) //受理类型
             .WhereIF(dto.Channels.Any(), d => dto.Channels.Contains(d.SourceChannelCode)) //来源渠道
             .WhereIF(dto.HotspotIds.Any(), d => dto.HotspotIds.Contains(d.HotspotId)) //热点类型
             .WhereIF(!string.IsNullOrEmpty(dto.TransferPhone), d => d.TransferPhone.Contains(dto.TransferPhone!)) //转接号码
-            //.WhereIF(dto.OrgCodes.Any(), d => d.Workflow.Assigns.Any(s => dto.OrgCodes.Contains(s.OrgCode)))
+                                                                                                                  //.WhereIF(dto.OrgCodes.Any(), d => d.Workflow.Assigns.Any(s => dto.OrgCodes.Contains(s.OrgCode)))
             .WhereIF(dto.OrgCodes.Any(), d => dto.OrgCodes.Contains(d.ActualHandleOrgCode)) //接办部门
             .WhereIF(!string.IsNullOrEmpty(dto.NameOrNo), d => d.AcceptorName.Contains(dto.NameOrNo!) || d.AcceptorStaffNo.Contains(dto.NameOrNo!)) //受理人/坐席
             .WhereIF(dto.CreationTimeStart.HasValue, d => d.CreationTime >= dto.CreationTimeStart) //受理时间开始
@@ -2621,8 +2621,8 @@ public class OrderController : BaseController
                 d => d.No.Contains(dto.Keyword) || d.Title.Contains(dto.Keyword))
             .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == true, d => d.CounterSignType.HasValue)
             .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == false, d => !d.CounterSignType.HasValue)
-            .WhereIF(dto.ExpiredOrAlmostOverdue.HasValue && dto.ExpiredOrAlmostOverdue == true,d=> d.ExpiredTime < DateTime.Now) //超期 未办
-            .WhereIF(dto.ExpiredOrAlmostOverdue.HasValue && dto.ExpiredOrAlmostOverdue == false,d=>d.NearlyExpiredTime< DateTime.Now &&  d.ExpiredTime>DateTime.Now)//即将超期 未办
+            .WhereIF(dto.ExpiredOrAlmostOverdue.HasValue && dto.ExpiredOrAlmostOverdue == true, d => d.ExpiredTime < DateTime.Now) //超期 未办
+            .WhereIF(dto.ExpiredOrAlmostOverdue.HasValue && dto.ExpiredOrAlmostOverdue == false, d => d.NearlyExpiredTime < DateTime.Now && d.ExpiredTime > DateTime.Now)//即将超期 未办
             .Where(x => x.Source < ESource.MLSQ || x.Source > ESource.WZSC)
             .Where(x => x.Status != EOrderStatus.BackToProvince)
             .OrderByDescending(d => d.StartTime)
@@ -2641,7 +2641,7 @@ public class OrderController : BaseController
         handleStatuses = handleStatuses.WhereIF(dto.IsHandled.HasValue,
                 d => dto.IsHandled!.Value
                     ? d is not EOrderStatus.WaitForAccept and not EOrderStatus.BackToUnAccept and not EOrderStatus.SpecialToUnAccept
-					: d is EOrderStatus.WaitForAccept or EOrderStatus.BackToUnAccept or  EOrderStatus.SpecialToUnAccept)
+                    : d is EOrderStatus.WaitForAccept or EOrderStatus.BackToUnAccept or EOrderStatus.SpecialToUnAccept)
             .ToArray();
 
         var (total, items) = await _orderRepository.Queryable(viewFilter: false)
@@ -3044,7 +3044,7 @@ public class OrderController : BaseController
             //    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);
@@ -3102,7 +3102,10 @@ public class OrderController : BaseController
     [LogFilter("审批工单特提")]
     public async Task Update([FromBody] AuditOrderSpecialDto dto)
     {
-        var special = await _orderSpecialRepository.GetAsync(dto.Id);
+        var special = await _orderSpecialRepository
+            .Queryable()
+            .Includes(d => d.Order)
+            .FirstAsync(d => d.Id == dto.Id);
         if (special is null) throw UserFriendlyException.SameMessage("无效特提审批信息!");
         if (special.State != 0) throw UserFriendlyException.SameMessage("无效特提审批信息,特提审批信息错误,该信息已审核!");
         if (string.IsNullOrEmpty(dto.NextStepName)) dto.NextStepName = special.NextStepName;
@@ -3129,7 +3132,7 @@ public class OrderController : BaseController
 
             //todo 特提重办,按审批通过时间依据中心派至部门的规则计算期满时间,更新order
 
-            await _workflowApplication.RecallAsync(recall, null, HttpContext.RequestAborted);
+            await _workflowApplication.RecallAsync(recall, special.Order.ExpiredTime, HttpContext.RequestAborted);
             var publish = await _orderPublishRepository.GetAsync(x => x.OrderId == special.OrderId);
             if (publish != null)
             {
@@ -3328,12 +3331,12 @@ public class OrderController : BaseController
         {
             step.Steps = step.Steps.Where(x => x.Key == "start").ToList();
         }
-		var rsp = new
+        var rsp = new
         {
             SpecialTimeType = EnumExts.GetDescriptions<ETimeType>(),
             SpecialReason = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.SpecialReason),
             Step = step
-		};
+        };
         return rsp;
     }