Przeglądaj źródła

Merge branch 'test' of http://110.188.24.182:10023/Fengwo/hotline into test

田爽 2 miesięcy temu
rodzic
commit
645aa336f7

+ 35 - 112
src/Hotline.Api/Controllers/OrderController.cs

@@ -3927,7 +3927,7 @@ public class OrderController : BaseController
                 throw UserFriendlyException.SameMessage("保存失败,投诉类型受理内容字数需要至少25个字!");
 
             if (dto.Title.Contains("咨询") || dto.Title.Contains("建议") || dto.Title.Contains("求助") || dto.Title.Contains("举报")
-                || dto.Content.Contains("咨询") || dto.Content.Contains("建议") || dto.Content.Contains("求助") || dto.Title.Contains("举报"))
+                || dto.Content.Contains("咨询") || dto.Content.Contains("建议") || dto.Content.Contains("求助") || dto.Content.Contains("举报"))
                 throw UserFriendlyException.SameMessage("保存失败!投诉类型标题和受理内容不能出现'咨询、建议、求助、举报'");
         }
 
@@ -4157,7 +4157,7 @@ public class OrderController : BaseController
                 throw UserFriendlyException.SameMessage("保存失败,投诉类型受理内容字数需要至少25个字!");
 
             if (dto.Title.Contains("咨询") || dto.Title.Contains("建议") || dto.Title.Contains("求助") || dto.Title.Contains("举报")
-                || dto.Content.Contains("咨询") || dto.Content.Contains("建议") || dto.Content.Contains("求助") || dto.Title.Contains("举报"))
+                || dto.Content.Contains("咨询") || dto.Content.Contains("建议") || dto.Content.Contains("求助") || dto.Content.Contains("举报"))
                 throw UserFriendlyException.SameMessage("保存失败!投诉类型标题和受理内容不能出现'咨询、建议、求助、举报'");
         }
 
@@ -6050,31 +6050,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);
@@ -6095,28 +6076,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!,
@@ -6128,10 +6095,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();
 
@@ -6161,41 +6124,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,
@@ -6215,24 +6156,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);
@@ -6241,7 +6179,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)
@@ -6269,33 +6207,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
         {
@@ -6303,7 +6226,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>

+ 5 - 3
src/Hotline.Application/Orders/OrderApplication.cs

@@ -368,9 +368,11 @@ public class OrderApplication : IOrderApplication, IScopeDependency
             .WhereIF(dto.ExpiredTimeStart.HasValue, d => d.ExpiredTime >= dto.ExpiredTimeStart) //超期时间开始
             .WhereIF(dto.ExpiredTimeEnd.HasValue, d => d.ExpiredTime <= dto.ExpiredTimeEnd) //超期时间结束
             .WhereIF(!string.IsNullOrEmpty(dto.ActualHandleOrgName), d => d.ActualHandleOrgName.Contains(dto.ActualHandleOrgName)) //接办部门
-            //&& stTime >= d.ExpiredTime.Value && stTime2 <= d.ExpiredTime.Value
-            //.Where(d => d.ExpiredTime != null &&
-            //         d.Status != EOrderStatus.Filed && d.Status != EOrderStatus.Published && d.Status != EOrderStatus.Visited && stTime >= d.ExpiredTime.Value && stTime2 <= d.ExpiredTime.Value)
+            .WhereIF(!string.IsNullOrEmpty(dto.CurrentStepCode), d => d.CurrentStepCode == dto.CurrentStepCode) //当前办理节点
+            .WhereIF(!string.IsNullOrEmpty(dto.OrgLevelOneName), d => d.OrgLevelOneName.Contains(dto.OrgLevelOneName)) //一级部门
+                                                                                                                                 //&& stTime >= d.ExpiredTime.Value && stTime2 <= d.ExpiredTime.Value
+                                                                                                                                 //.Where(d => d.ExpiredTime != null &&
+                                                                                                                                 //         d.Status != EOrderStatus.Filed && d.Status != EOrderStatus.Published && d.Status != EOrderStatus.Visited && stTime >= d.ExpiredTime.Value && stTime2 <= d.ExpiredTime.Value)
             .Where(d => d.Status < EOrderStatus.Filed && dateTime > d.NearlyExpiredTime && dateTime < d.ExpiredTime)
             .OrderByIF(dto is { SortField: "no", SortRule: 0 }, x => x.No, OrderByType.Asc) //工单编号升序
             .OrderByIF(dto is { SortField: "no", SortRule: 1 }, x => x.No, OrderByType.Desc) //工单编号降序

+ 5 - 0
src/Hotline.Share/Dtos/Order/PublishedDto.cs

@@ -610,6 +610,11 @@ public class AboutToExpireDto : OrderDto
 
 public record AboutToExpireListDto : PagedKeywordRequest
 {
+    /// <summary>
+    /// 一级部门
+    /// </summary>
+    public string? OrgLevelOneName { get; set; }
+
     /// <summary>
     /// 受理时间(工单创建时间)
     /// </summary>