Sfoglia il codice sorgente

优化工单处理逻辑,增加安全隐患判断

调整了 OrderController.cs 中 Includes 的顺序,并注释掉了关于 isAqyh 和 isSnapshotEnable 的代码块。在 GetNextStepsWithRecommendCommission 方法中,增加了对 isAqyh 的处理逻辑,并根据 isAqyh 的值过滤 rsp.Steps。

修改了 IOrderSnapshotApplication.cs 中 GetNextStepsDatabaseAsync 方法的返回类型,从 Task 改为 Task<bool>,并更新了注释。

修正了 SnapshotOrderApplication.cs 中 AddOrderPublishAsync 方法的参数格式,修改了 GetNextStepsDatabaseAsync 方法的返回类型,并增加了 isAqyh 的判断逻辑。

在 NextStepsDto.cs 中的 NextStepsWithOpinionDto 类中,增加了 IsDangerDepartment 属性,用于标识部门是否存在安全隐患。
xf 1 mese fa
parent
commit
b34bd2038e

+ 18 - 12
src/Hotline.Api/Controllers/OrderController.cs

@@ -2989,7 +2989,7 @@ public class OrderController : BaseController
     {
         var model = await _orderScreenRepository.Queryable(canView: false)
             .Includes(x => x.Order)
-            .Includes(x=>x.VisitDetail)
+            .Includes(x => x.VisitDetail)
             .Includes(x => x.Workflow, d => d.Steps)
             .Includes(x => x.Visit, d => d.Order)
             .FirstAsync(x => x.Id == id);
@@ -5501,15 +5501,15 @@ public class OrderController : BaseController
         if (string.IsNullOrEmpty(order.WorkflowId))
             throw UserFriendlyException.SameMessage("该工单未开启流程");
         var dto = await _workflowApplication.GetNextStepsAsync(order.WorkflowId, HttpContext.RequestAborted);
-        var isAqyh = false;//行业类型是否为随手拍安全隐患
-        if (isSnapshotEnable)
-        {
-            var orderSnapShot = await _orderSnapshotRepository.GetAsync(orderId, HttpContext.RequestAborted);
-            isAqyh = orderSnapShot != null && string.CompareOrdinal(orderSnapShot.IndustryName, "安全隐患") == 0;
-        }
-        if (!isAqyh)
-            dto.Steps = dto.Steps.Where(d => string.CompareOrdinal(d.Value, "网格员") != 0
-                                             && string.CompareOrdinal(d.Value, "工单标记") != 0).ToList();
+        //var isAqyh = false;//行业类型是否为随手拍安全隐患
+        //if (isSnapshotEnable)
+        //{
+        //    var orderSnapShot = await _orderSnapshotRepository.GetAsync(orderId, HttpContext.RequestAborted);
+        //    isAqyh = orderSnapShot != null && string.CompareOrdinal(orderSnapShot.IndustryName, "安全隐患") == 0;
+        //}
+        //if (!isAqyh)
+        //    dto.Steps = dto.Steps.Where(d => string.CompareOrdinal(d.Value, "网格员") != 0
+        //                                     && string.CompareOrdinal(d.Value, "工单标记") != 0).ToList();
 
         dto.ExpiredTime = order.ExpiredTime;
         dto.Content = order.Content;
@@ -5538,7 +5538,13 @@ public class OrderController : BaseController
             .ToList().Adapt<List<SystemDicDataOutDto>>();
 
         rsp.CounterSignType = order.CounterSignType;
-        await _orderSnapshotApplication.GetNextStepsDatabaseAsync(rsp, orderId);
+
+        //随手拍业务逻辑处理,并查询行业类型是否为随手拍安全隐患
+        var isAqyh = await _orderSnapshotApplication.GetNextStepsDatabaseAsync(rsp, orderId);
+        if (!isAqyh)
+            rsp.Steps = rsp.Steps.Where(d => string.CompareOrdinal(d.Value, "网格员") != 0
+                                             && string.CompareOrdinal(d.Value, "工单标记") != 0).ToList();
+        
         return rsp;
     }
 
@@ -5554,7 +5560,7 @@ public class OrderController : BaseController
     }
 
     /// <summary>
-    /// 查询工单办理下一步可选节点(带推荐部门)
+    /// 查询工单办理下一步可选节点(带推荐部门)工单代办业务
     /// </summary>
     [HttpGet("nextsteps_commission/{orderId}")]
     public async Task<NextStepsWithOpinionDto<RecommendStepOption>> GetNextStepsWithRecommendCommission(string orderId)

+ 2 - 2
src/Hotline.Application/Snapshot/Contracts/IOrderSnapshotApplication.cs

@@ -101,10 +101,10 @@ public interface IOrderSnapshotApplication
     /// <summary>
     /// 返回办理页面基础数据
     /// </summary>
-    /// <param name="rsp"></param>
+    /// <param name="rsp">isAqyh:是否属于安全隐患,hasInputed:是否已经输入过安全隐患相关字段)</param>
     /// <param name="orderId"></param>
     /// <returns></returns>
-    Task GetNextStepsDatabaseAsync(NextStepsWithOpinionDto<RecommendStepOption> rsp, string orderId);
+    Task<bool> GetNextStepsDatabaseAsync(NextStepsWithOpinionDto<RecommendStepOption> rsp, string orderId);
 
     /// <summary>
     /// 随手拍工单集合

+ 10 - 5
src/Hotline.Application/Snapshot/SnapshotOrderApplication.cs

@@ -74,7 +74,7 @@ public class SnapshotOrderApplication : IOrderSnapshotApplication, IScopeDepende
         dto.ValidateObject();
         var oldPublish = await _snapshotOrderPublishRepository.Queryable().Where(m => m.OrderId == dto.OrderId).FirstAsync(cancellation);
         if (oldPublish != null)
-            await _snapshotOrderPublishRepository.RemoveAsync(oldPublish,cancellationToken: cancellation);
+            await _snapshotOrderPublishRepository.RemoveAsync(oldPublish, cancellationToken: cancellation);
         var snapshotOrder = await _orderSnapshotRepository.GetAsync(dto.OrderId)
             ?? throw UserFriendlyException.SameMessage("工单不存在");
         var order = await _orderRepository.Queryable()
@@ -391,16 +391,17 @@ public class SnapshotOrderApplication : IOrderSnapshotApplication, IScopeDepende
     /// <summary>
     /// 返回办理页面基础数据
     /// </summary>
-    /// <param name="rsp"></param>
+    /// <param name="rsp">isAqyh:是否属于安全隐患,IsDangerDepartment:是否已经输入过安全隐患相关字段)</param>
     /// <param name="orderId"></param>
     /// <returns></returns>
-    public async Task GetNextStepsDatabaseAsync(NextStepsWithOpinionDto<RecommendStepOption> rsp, string orderId)
+    public async Task<bool> GetNextStepsDatabaseAsync(NextStepsWithOpinionDto<RecommendStepOption> rsp, string orderId)
     {
-        if (_systemSettingCacheManager.Snapshot == false) return;
+        if (_systemSettingCacheManager.Snapshot == false) return default;
 
+        var isAqyh = false;
         await _orderSnapshotRepository.Queryable()
             .Where(m => m.Id == orderId)
-            .Select(m => new { m.Id, m.IndustryId, m.IsSafetyDepartment })
+            .Select(m => new { m.Id, m.IndustryId, m.IsSafetyDepartment, m.IndustryName, m.IsDangerDepartment })
             .FirstAsync()
             .Then(async snapshot =>
             {
@@ -424,6 +425,9 @@ public class SnapshotOrderApplication : IOrderSnapshotApplication, IScopeDepende
                             rsp.DocumentFiles = file;
                         });
                     });
+
+                isAqyh = snapshot != null && string.CompareOrdinal(snapshot.IndustryName, "安全隐患") == 0;
+                rsp.IsDangerDepartment = snapshot.IsDangerDepartment;
             }
             );
 
@@ -436,6 +440,7 @@ public class SnapshotOrderApplication : IOrderSnapshotApplication, IScopeDepende
         rsp.SnapshotReplenishType = _systemDicDataCacheManager.SnapshotReplenishType;
         rsp.CompliantType = EnumExts.GetDescriptions<ECompliantType>();
 
+        return isAqyh;
     }
 
     [ExportExcel("随手拍工单")]

+ 6 - 0
src/Hotline.Share/Dtos/FlowEngine/NextStepsDto.cs

@@ -139,6 +139,12 @@ public class NextStepsWithOpinionDto<TSteps> : NextStepsDto<TSteps>
     /// </summary>
     public IEnumerable<KeyValuePair<int, string>>? CompliantType { get; set; }
 
+    /// <summary>
+    /// 部门是否存在安全隐患
+    /// </summary>
+    public bool? IsDangerDepartment { get; set; }
+
+
     #endregion
 }