Explorar o código

修复取消发布后多条回访记录

qinchaoyue hai 5 meses
pai
achega
dd3eb5ead5
Modificáronse 1 ficheiros con 67 adicións e 55 borrados
  1. 67 55
      src/Hotline.Api/Controllers/OrderController.cs

+ 67 - 55
src/Hotline.Api/Controllers/OrderController.cs

@@ -311,8 +311,8 @@ public class OrderController : BaseController
             .WhereIF(!string.IsNullOrEmpty(dto.AcceptType), d => d.AcceptTypeCode == dto.AcceptType) //受理类型
             .WhereIF(!string.IsNullOrEmpty(dto.Hotspot), d => d.HotspotSpliceName != null && d.HotspotSpliceName.Contains(dto.Hotspot))
             .WhereIF(!string.IsNullOrEmpty(dto.FromPhone), d => d.FromPhone == dto.FromPhone) //来电号码
-            //.WhereIF(!string.IsNullOrEmpty(dto.PubMan),
-            //    d => d.AcceptorName.Contains(dto.PubMan!) || d.AcceptorStaffNo.Contains(dto.PubMan!))
+                                                                                              //.WhereIF(!string.IsNullOrEmpty(dto.PubMan),
+                                                                                              //    d => d.AcceptorName.Contains(dto.PubMan!) || d.AcceptorStaffNo.Contains(dto.PubMan!))
             .WhereIF(dto.PubRange == EPublicState.Pub, d => d.OrderPublish.PublishState)
             .WhereIF(dto.PubRange == EPublicState.NoPub, d => !d.OrderPublish.PublishState)
             .WhereIF(dto.IsProvinceOrder.HasValue && dto.IsProvinceOrder == true, d => d.Source == ESource.ProvinceStraight)
@@ -432,17 +432,29 @@ public class OrderController : BaseController
 
         // 取消发布功能开关
         var cancelPublishOrderEnabled = _systemSettingCacheManager.CancelPublishOrderEnabled;
-        // 取消发布的工单数量
-        var orderPublishDeletedCount = await _orderPublishRepository.Queryable(includeDeleted: true)
+        // 取消发布的工单
+        var publishOrder = await _orderPublishRepository.Queryable(includeDeleted: true)
             .Where(m => m.OrderId == order.Id && m.IsDeleted == true)
-            .CountAsync(HttpContext.RequestAborted);
-        var orderVisitVisitedCount = await _orderVisitRepository.Queryable()
-            .Where(m => m.OrderId == order.Id && m.VisitState == EVisitState.Visited)
-            .CountAsync(HttpContext.RequestAborted);
+            .FirstAsync(HttpContext.RequestAborted);
 
         // 若取消发布的工单,已经被回访过了,没有经过重新办理,再次发布后,自动跳过回访环节,展示取消发布前的回访结果
-        if (orderPublishDeletedCount != 0 && orderVisitVisitedCount != 0 && cancelPublishOrderEnabled == true)
+        if (publishOrder != null && cancelPublishOrderEnabled == true)
         {
+            var history = new OrderPublishHistory
+            {
+                ArrangeTitleBefor = publishOrder.ArrangeTitle,
+                ArrangeTitleAfter = dto.ArrangeTitle,
+                ArrangeContentBefor = publishOrder.ArrangeContent,
+                ArrangeContentAfter = dto.ArrangeContent,
+                ArrangeOpinionBefor = publishOrder.ArrangeOpinion,
+                ArrangeOpinionAfter = dto.ArrangeOpinion,
+                PublishStateBefor = publishOrder.PublishState,
+                PublishStateAfter = dto.PublishState,
+                No = publishOrder.No,
+                OrderId = publishOrder.OrderId,
+                OrderPublishId = publishOrder.Id
+            };
+            await _orderPublishHistoryRepository.AddAsync(history, HttpContext.RequestAborted);
             return;
         }
 
@@ -3127,7 +3139,7 @@ public class OrderController : BaseController
                 cancellationToken: HttpContext.RequestAborted);
 
             List<OrderRemarksDto> remarks = workflow.Steps.Where(x => !string.IsNullOrEmpty(x.Remark)).Select(x => new OrderRemarksDto
-                { Remark = x.Remark, RemarkTime = x.HandleTime, RemarkUser = x.HandlerName }).ToList();
+            { Remark = x.Remark, RemarkTime = x.HandleTime, RemarkUser = x.HandlerName }).ToList();
             dto.OrderRemarks = remarks;
             if (order.Status == EOrderStatus.SendBack || order.Status == EOrderStatus.SendBackAudit || order.Status == EOrderStatus.BackToUnAccept)
             {
@@ -4320,7 +4332,7 @@ public class OrderController : BaseController
             .Includes(d => d.Workflow)
             .FirstAsync(d => d.Id == workflow.ExternalId);
         dto.ExpiredTime = order.ExpiredTime;
-		var (currentStep, prevStep, isOrgToCenter, isSecondToFirstOrgLevel) = await _workflowApplication.GetPreviousInformationAsync(
+        var (currentStep, prevStep, isOrgToCenter, isSecondToFirstOrgLevel) = await _workflowApplication.GetPreviousInformationAsync(
             dto.WorkflowId, _sessionContext.RequiredUserId, _sessionContext.RequiredOrgId, _sessionContext.Roles, HttpContext.RequestAborted);
         var audit = new OrderSendBackAudit
         {
@@ -4921,7 +4933,7 @@ public class OrderController : BaseController
                     var handler = await _orderDomainService.AverageOrder(HttpContext.RequestAborted);
                     dto.NextHandlers = new List<FlowStepHandler> { handler };
                     await _orderSpecialRepository.Updateable().SetColumns(x => new OrderSpecial { NextHandlers = dto.NextHandlers }).Where(x => x.Id == model.Id).ExecuteCommandAsync();
-				}
+                }
             }
 
             var recall = new RecallDto
@@ -4981,13 +4993,13 @@ public class OrderController : BaseController
             //	ETimeType.WorkDay,
             //	dto.TimeLimit.Value, order.AcceptTypeCode);
             await _orderRepository.Updateable().SetColumns(o => new Orders.Order()
-                {
-                    ExpiredTime = expiredTime.ExpiredTime,
-                    NearlyExpiredTime = expiredTime.NearlyExpiredTime,
-                    NearlyExpiredTimeOne = expiredTime.NearlyExpiredTimeOne,
-                    ProcessType = processType,
-                    Status = EOrderStatus.Special
-                })
+            {
+                ExpiredTime = expiredTime.ExpiredTime,
+                NearlyExpiredTime = expiredTime.NearlyExpiredTime,
+                NearlyExpiredTimeOne = expiredTime.NearlyExpiredTimeOne,
+                ProcessType = processType,
+                Status = EOrderStatus.Special
+            })
                 .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
             var orderDto = _mapper.Map<OrderDto>(order);
             await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderExpiredTimeUpdate, orderDto,
@@ -5129,7 +5141,7 @@ public class OrderController : BaseController
                     var handler = await _orderDomainService.AverageOrder(HttpContext.RequestAborted);
                     dto.NextHandlers = new List<FlowStepHandler> { handler };
                     await _orderSpecialRepository.Updateable().SetColumns(x => new OrderSpecial { NextHandlers = dto.NextHandlers }).Where(x => x.Id == model.Id).ExecuteCommandAsync();
-				}
+                }
             }
 
             var recall = new RecallDto
@@ -5162,11 +5174,11 @@ public class OrderController : BaseController
 
                 endTime = expiredTime.EndTime;
                 await _orderRepository.Updateable().SetColumns(o => new Orders.Order()
-                    {
-                        ExpiredTime = expiredTime.EndTime,
-                        NearlyExpiredTime = expiredTime.NearlyExpiredTime,
-                        NearlyExpiredTimeOne = expiredTime.NearlyExpiredTimeOne
-                    })
+                {
+                    ExpiredTime = expiredTime.EndTime,
+                    NearlyExpiredTime = expiredTime.NearlyExpiredTime,
+                    NearlyExpiredTimeOne = expiredTime.NearlyExpiredTimeOne
+                })
                     .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
                 var orderDto = _mapper.Map<OrderDto>(order);
                 await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderExpiredTimeUpdate, orderDto,
@@ -5258,7 +5270,7 @@ public class OrderController : BaseController
                     var handler = await _orderDomainService.AverageOrder(HttpContext.RequestAborted);
                     special.NextHandlers = new List<FlowStepHandler> { handler };
                     await _orderSpecialRepository.Updateable().SetColumns(x => new OrderSpecial { NextHandlers = special.NextHandlers }).Where(x => x.Id == special.Id).ExecuteCommandAsync();
-				}
+                }
             }
 
             var recall = new RecallDto
@@ -5310,13 +5322,13 @@ public class OrderController : BaseController
                 ? EProcessType.Zhiban
                 : EProcessType.Jiaoban;
             await _orderRepository.Updateable().SetColumns(o => new Orders.Order()
-                {
-                    ExpiredTime = expiredTime.ExpiredTime,
-                    NearlyExpiredTime = expiredTime.NearlyExpiredTime,
-                    NearlyExpiredTimeOne = expiredTime.NearlyExpiredTimeOne,
-                    ProcessType = processType,
-                    Status = EOrderStatus.Special
-                })
+            {
+                ExpiredTime = expiredTime.ExpiredTime,
+                NearlyExpiredTime = expiredTime.NearlyExpiredTime,
+                NearlyExpiredTimeOne = expiredTime.NearlyExpiredTimeOne,
+                ProcessType = processType,
+                Status = EOrderStatus.Special
+            })
                 .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
             var orderDto = _mapper.Map<OrderDto>(order);
             await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderExpiredTimeUpdate, orderDto,
@@ -5397,19 +5409,19 @@ public class OrderController : BaseController
             var order = await _orderRepository.GetAsync(x => x.Id == special.OrderId);
             if (special.State == 1)
             {
-	            if (_appOptions.Value.IsZiGong && special.BusinessType == EBusinessType.Send)
-	            {
-		            // 平均派单
-		            var averageSendOrder = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.AverageSendOrder).SettingValue[0]);
-		            if (averageSendOrder)
-		            {
-			            var handler = await _orderDomainService.AverageOrder(HttpContext.RequestAborted);
-			            special.NextHandlers = new List<FlowStepHandler> { handler };
-			            await _orderSpecialRepository.Updateable().SetColumns(x => new OrderSpecial { NextHandlers = special.NextHandlers }).Where(x => x.Id == special.Id).ExecuteCommandAsync();
-					}
-	            }
-
-				var recall = new RecallDto
+                if (_appOptions.Value.IsZiGong && special.BusinessType == EBusinessType.Send)
+                {
+                    // 平均派单
+                    var averageSendOrder = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.AverageSendOrder).SettingValue[0]);
+                    if (averageSendOrder)
+                    {
+                        var handler = await _orderDomainService.AverageOrder(HttpContext.RequestAborted);
+                        special.NextHandlers = new List<FlowStepHandler> { handler };
+                        await _orderSpecialRepository.Updateable().SetColumns(x => new OrderSpecial { NextHandlers = special.NextHandlers }).Where(x => x.Id == special.Id).ExecuteCommandAsync();
+                    }
+                }
+
+                var recall = new RecallDto
                 {
                     WorkflowId = special.WorkflowId!,
                     NextStepCode = special.NextStepCode,
@@ -5458,13 +5470,13 @@ public class OrderController : BaseController
                     ? EProcessType.Zhiban
                     : EProcessType.Jiaoban;
                 await _orderRepository.Updateable().SetColumns(o => new Orders.Order()
-                    {
-                        ExpiredTime = expiredTime.ExpiredTime,
-                        NearlyExpiredTime = expiredTime.NearlyExpiredTime,
-                        NearlyExpiredTimeOne = expiredTime.NearlyExpiredTimeOne,
-                        ProcessType = processType,
-                        Status = EOrderStatus.Special
-                    })
+                {
+                    ExpiredTime = expiredTime.ExpiredTime,
+                    NearlyExpiredTime = expiredTime.NearlyExpiredTime,
+                    NearlyExpiredTimeOne = expiredTime.NearlyExpiredTimeOne,
+                    ProcessType = processType,
+                    Status = EOrderStatus.Special
+                })
                     .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
                 var orderDto = _mapper.Map<OrderDto>(order);
                 await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderExpiredTimeUpdate, orderDto,
@@ -5607,7 +5619,7 @@ public class OrderController : BaseController
                 d => d.Title.Contains(dto.Keyword!) || d.No.Contains(dto.Keyword!))
             //.WhereIF(!string.IsNullOrEmpty(dto.Content), d => d.Content.Contains(dto.Content!))
             .WhereIF(!string.IsNullOrEmpty(dto.AcceptType), d => d.AcceptTypeCode == dto.AcceptType) //受理类型
-            //.WhereIF(dto.AcceptTypes.Any(), d => dto.AcceptTypes.Contains(d.AcceptTypeCode)) //受理类型
+                                                                                                     //.WhereIF(dto.AcceptTypes.Any(), d => dto.AcceptTypes.Contains(d.AcceptTypeCode)) //受理类型
             .WhereIF(!string.IsNullOrEmpty(dto.Channel), d => d.SourceChannelCode == dto.Channel) //来源渠道
             .WhereIF(!string.IsNullOrEmpty(dto.Hotspot), d => d.HotspotSpliceName != null && d.HotspotSpliceName.Contains(dto.Hotspot))
             .WhereIF(!string.IsNullOrEmpty(dto.TransferPhone), d => d.TransferPhone.Contains(dto.TransferPhone!))
@@ -7346,7 +7358,7 @@ public class OrderController : BaseController
         {
             await _orderRepository.Updateable()
                 .SetColumns(o => new Orders.Order()
-                    { SignerId = dto.Handler.UserId, SignerName = dto.Handler.Username, Status = EOrderStatus.HandOverToUnAccept })
+                { SignerId = dto.Handler.UserId, SignerName = dto.Handler.Username, Status = EOrderStatus.HandOverToUnAccept })
                 .Where(o => o.Id == dto.OrderId).ExecuteCommandAsync(HttpContext.RequestAborted);
         }
         else