xf 2 месяцев назад
Родитель
Сommit
302c7382d6
1 измененных файлов с 33 добавлено и 110 удалено
  1. 33 110
      src/Hotline.Api/Controllers/OrderController.cs

+ 33 - 110
src/Hotline.Api/Controllers/OrderController.cs

@@ -5940,31 +5940,12 @@ public class OrderController : BaseController
         if (specialAny) throw UserFriendlyException.SameMessage("工单已存在待审批特提信息!");
         var order = await _orderRepository.Queryable().Includes(d => d.Workflow).FirstAsync(d => d.Id == dto.OrderId);
         await _orderApplication.SpecialVerify(dto, order, HttpContext.RequestAborted);
-        if (string.IsNullOrEmpty(dto.Cause))
-        {
-            dto.Cause = dto.Reason;
-        }
-
-        // var workflow = await _workflowDomainService.GetWorkflowAsync(order.WorkflowId, withSteps: true,
-        //     cancellationToken: HttpContext.RequestAborted);
-        // var currentStep = workflow.Steps.FirstOrDefault(x => x.Status != EWorkflowStepStatus.Handled);
-        // if (currentStep is null)
-        //     currentStep = workflow.Steps.OrderByDescending(x => x.CreationTime).FirstOrDefault(x => x.StepType == EStepType.End);
 
-        if (string.IsNullOrEmpty(dto.Cause))
-        {
-            dto.Cause = dto.Reason;
-        }
-
-        var model = _mapper.Map<OrderSpecial>(dto);
-        // model.OrgId = currentStep is null ? _sessionContext.RequiredOrgId : currentStep.HandlerOrgId;
-        // model.OrgName = currentStep is null ? _sessionContext.OrgName : currentStep.HandlerOrgName;
-        model.OrgId = _sessionContext.RequiredOrgId;
-        model.OrgName = _sessionContext.OrgName;
-        //var step = await _workflowDomainService.FindLastStepAsync(model.WorkflowId, HttpContext.RequestAborted);
-        // model.StepName = step.Name;
-        // model.StepCode = step.Code;
-        model.Status = order.Status;
+        dto.Cause ??= dto.Reason;
+        var orderSpecial = _mapper.Map<OrderSpecial>(dto);
+        orderSpecial.OrgId = _sessionContext.RequiredOrgId;
+        orderSpecial.OrgName = _sessionContext.OrgName;
+        orderSpecial.Status = order.Status;
 
         var audit = true;
         var specialAduit = _systemSettingCacheManager.GetSetting(SettingConstants.SpecialAduit);
@@ -5985,28 +5966,14 @@ public class OrderController : BaseController
             audit = false;
         }
 
-        if (!audit) model.State = 1;
+        if (!audit) orderSpecial.State = 1;
 
-        model.InitId();
+        orderSpecial.InitId();
         if (dto.Files.Any())
-            model.FileJson = await _fileRepository.AddFileAsync(dto.Files, model.Id, "", HttpContext.RequestAborted);
-        //await _orderSpecialRepository.AddAsync(model, HttpContext.RequestAborted);
-        if (model.State == 1)
-        {
-            //var handler = dto.NextHandlers.FirstOrDefault();
-            // if (_appOptions.Value.IsZiGong && dto.BusinessType == EBusinessType.Send)
-            // {
-            //     // 平均派单
-            //     var averageSendOrder = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.AverageSendOrder).SettingValue[0]);
-            //     if (averageSendOrder)
-            //     {
-            //         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();
-            //     }
-            // }
+            orderSpecial.FileJson = await _fileRepository.AddFileAsync(dto.Files, orderSpecial.Id, "", HttpContext.RequestAborted);
 
+        if (orderSpecial.State == 1)
+        {
             var recall = new RecallDto
             {
                 WorkflowId = dto.WorkflowId!,
@@ -6018,10 +5985,6 @@ public class OrderController : BaseController
                 HandlerType = dto.HandlerType,
                 BusinessType = dto.BusinessType
             };
-            // 计算期满时间
-            //if (dto.AlterTime)
-            //{
-            // var expiredTime = _timeLimitDomainService.CalcEndTime(DateTime.Now, order.AcceptTypeCode);
 
             ExpiredTimeWithConfig? expiredTime = new ExpiredTimeWithConfig();
 
@@ -6051,41 +6014,19 @@ public class OrderController : BaseController
                 }
             }
 
-            var processType = dto.FlowDirection is EFlowDirection.OrgToCenter or EFlowDirection.CenterToCenter or EFlowDirection.FiledToCenter
+            order.ProcessType = dto.FlowDirection is EFlowDirection.OrgToCenter or EFlowDirection.CenterToCenter or EFlowDirection.FiledToCenter
                 ? EProcessType.Zhiban
                 : EProcessType.Jiaoban;
-            if (expiredTime.ExpiredTime < order.ExpiredTime)
+            if (expiredTime.ExpiredTime > order.ExpiredTime)
             {
-                expiredTime.ExpiredTime = order.ExpiredTime.Value;
-                expiredTime.NearlyExpiredTime = order.NearlyExpiredTime.Value;
-                expiredTime.NearlyExpiredTimeOne = order.NearlyExpiredTimeOne.Value;
-            }
-
-            // await _orderRepository.Updateable().SetColumns(o => new Orders.Order()
-            //     {
-            //         ExpiredTime = expiredTime.ExpiredTime,
-            //         NearlyExpiredTime = expiredTime.NearlyExpiredTime,
-            //         NearlyExpiredTimeOne = expiredTime.NearlyExpiredTimeOne,
-            //         ProcessType = processType,
-            //         Status = EOrderStatus.Special
-            //     })
-            //     .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
-            order.ExpiredTime = expiredTime.ExpiredTime;
-            order.NearlyExpiredTime = expiredTime.NearlyExpiredTime;
-            order.NearlyExpiredTimeOne = expiredTime.NearlyExpiredTimeOne;
-            order.ProcessType = processType;
-            order.Status = EOrderStatus.Special;
+                order.ExpiredTime = expiredTime.ExpiredTime;
+                order.NearlyExpiredTime = expiredTime.NearlyExpiredTime;
+                order.NearlyExpiredTimeOne = expiredTime.NearlyExpiredTimeOne;
 
-            var orderDto = _mapper.Map<OrderDto>(order);
-            await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderExpiredTimeUpdate, orderDto,
-                cancellationToken: HttpContext.RequestAborted);
-            // if (dto.BusinessType == EBusinessType.Send && recall.NextHandlers.Any())
-            // {
-            //     var flowStepHandler = recall.NextHandlers.FirstOrDefault();
-            //     await _orderRepository.Updateable().SetColumns(o => new Orders.Order()
-            //             { CenterToOrgHandlerId = flowStepHandler.UserId, CenterToOrgHandlerName = flowStepHandler.Username })
-            //         .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
-            // }
+                var orderDto = _mapper.Map<OrderDto>(order);
+                await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderExpiredTimeUpdate, orderDto,
+                    cancellationToken: HttpContext.RequestAborted);
+            }
 
             var (workflow, targetStepDefine, currentStep, targetStep, newStep, isOrgToCenter) = await _workflowDomainService.RecallAsync(recall,
                 dto.NextHandlers.FirstOrDefault(), EWorkflowTraceType.Recall,
@@ -6105,24 +6046,21 @@ public class OrderController : BaseController
 
             if (string.IsNullOrEmpty(currentStep?.HandlerOrgId))
             {
-                model.OrgId = currentStep.HandlerOrgId;
-                model.OrgName = currentStep.HandlerOrgName;
-                model.StepName = currentStep.Name;
-                model.StepCode = currentStep.Code;
+                orderSpecial.OrgId = currentStep.HandlerOrgId;
+                orderSpecial.OrgName = currentStep.HandlerOrgName;
+                orderSpecial.StepName = currentStep.Name;
+                orderSpecial.StepCode = currentStep.Code;
             }
 
             if (_appOptions.Value.IsZiGong && dto.BusinessType == EBusinessType.Send)
             {
-                model.NextHandlers = new List<StepAssignInfo> { newStep.GetWorkflowStepHandler() };
+                orderSpecial.NextHandlers = new List<StepAssignInfo> { newStep.GetWorkflowStepHandler() };
             }
 
             if (dto.BusinessType == EBusinessType.Send)
             {
                 order.CenterToOrgHandlerId = newStep.HandlerId;
                 order.CenterToOrgHandlerName = newStep.HandlerName;
-                // await _orderRepository.Updateable(order)
-                //     .UpdateColumns(d => new { d.CenterToOrgHandlerId, d.CenterToOrgHandlerName })
-                //     .ExecuteCommandAsync(HttpContext.RequestAborted);
             }
 
             _mapper.Map(workflow, order);
@@ -6131,7 +6069,7 @@ public class OrderController : BaseController
                 ? EOrderStatus.SpecialToUnAccept
                 : EOrderStatus.Special;
 
-            if (order.Status >= EOrderStatus.Filed)
+            if (orderSpecial.Status >= EOrderStatus.Filed)
             {
                 var publish = await _orderPublishRepository.GetAsync(x => x.OrderId == dto.OrderId);
                 if (publish != null)
@@ -6159,33 +6097,18 @@ public class OrderController : BaseController
             await _orderRepository.UpdateAsync(order, HttpContext.RequestAborted);
 
             var setting = _systemSettingCacheManager.GetSetting(SettingConstants.CityBaseConfiguration)?.SettingValue[0];
-            CityBaseConfiguration cityBase = JsonSerializer.Deserialize<CityBaseConfiguration>(setting);
-            if (order != null && (cityBase.CityProvince.OrgId.Equals(model.OrgId) ||
-                                  cityBase.CityProvinceAssign.OrgId.Equals(model.OrgId) || cityBase.CityEnterprise.OrgId.Equals(model.OrgId) ||
-                                  cityBase.PublicSecurity.OrgId.Equals(model.OrgId)))
+            var cityBase = JsonSerializer.Deserialize<CityBaseConfiguration>(setting);
+            if (order != null && (cityBase.CityProvince.OrgId.Equals(orderSpecial.OrgId) ||
+                                  cityBase.CityProvinceAssign.OrgId.Equals(orderSpecial.OrgId) || cityBase.CityEnterprise.OrgId.Equals(orderSpecial.OrgId) ||
+                                  cityBase.PublicSecurity.OrgId.Equals(orderSpecial.OrgId)))
             {
-                if (order.Status < EOrderStatus.Filed)
+                if (orderSpecial.Status < EOrderStatus.Filed)
                 {
-                    await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderFlowRecalled,
-                        new PublishSpecialDto { Order = _mapper.Map<OrderDto>(order), Special = _mapper.Map<OrderSpecialDto>(model) },
+                    await _capPublisher.PublishAsync(EventNames.HotlineOrderFlowRecalled,
+                        new PublishSpecialDto { Order = _mapper.Map<OrderDto>(order), Special = _mapper.Map<OrderSpecialDto>(orderSpecial) },
                         cancellationToken: HttpContext.RequestAborted);
                 }
             }
-
-            //await _orderRepository.Updateable(order)
-            //    .UpdateColumns(d => new
-            //    {
-            //        d.CenterToOrgHandlerId,
-            //        d.CenterToOrgHandlerName,
-            //        d.ExpiredTime,
-            //        d.NearlyExpiredTime,
-            //        d.NearlyExpiredTimeOne,
-            //        d.ProcessType,
-            //        d.Status,
-            //    })
-            //    .ExecuteCommandAsync(HttpContext.RequestAborted);
-
-            
         }
         else
         {
@@ -6193,7 +6116,7 @@ public class OrderController : BaseController
                 .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
         }
 
-        await _orderSpecialRepository.AddAsync(model, HttpContext.RequestAborted);
+        await _orderSpecialRepository.AddAsync(orderSpecial, HttpContext.RequestAborted);
     }
 
     /// <summary>