Browse Source

Merge branch 'master' of http://git.12345lm.cn/Fengwo/hotline

Dun.Jason 1 year ago
parent
commit
bf683e73a0

+ 5 - 4
src/Hotline.Api/Controllers/OrderController.cs

@@ -41,6 +41,7 @@ using Hotline.Share.Dtos.Push;
 using Hotline.Share.Enums.Push;
 using XF.Domain.Cache;
 using Hotline.Api.Filter;
+using Microsoft.AspNetCore.Authorization;
 using XF.Domain.Entities;
 
 namespace Hotline.Api.Controllers;
@@ -65,14 +66,14 @@ public class OrderController : BaseController
     private readonly IRepository<OrderVisit> _orderVisitRepository;
     private readonly IRepository<OrderVisitDetail> _orderVisitedDetailRepository;
     private readonly ICapPublisher _capPublisher;
-    private readonly IRepository<OrderDelay> _orderDelayRepository;
+    private readonly IOrderDelayRepository _orderDelayRepository;
     private readonly ITimeLimitDomainService _timeLimitDomainService;
     private readonly ISystemSettingCacheManager _systemSettingCacheManager;
     private readonly IRepository<OrderRedo> _orderRedoRepository;
     private readonly IRepository<OrderSupervise> _orderSuperviseRepository;
     private readonly IRepository<OrderUrge> _orderUrgeRepository;
     private readonly IFileRepository _fileRepository;
-    private readonly IRepositoryWorkflow<OrderScreen> _orderScreenRepository;
+    private readonly IOrderScreenRepository _orderScreenRepository;
     private readonly IRepository<OrderPublishHistory> _orderPublishHistoryRepository;
     private readonly IRepositoryTextSearch<OrderTs> _repositoryts;
     private readonly IQualityApplication _qualityApplication;
@@ -113,14 +114,14 @@ public class OrderController : BaseController
         IRepository<OrderVisit> orderVisitRepository,
         IRepository<OrderVisitDetail> orderVisitedDetailRepository,
         ICapPublisher capPublisher,
-        IRepository<OrderDelay> orderDelayRepository,
+        IOrderDelayRepository orderDelayRepository,
         ITimeLimitDomainService timeLimitDomainService,
         ISystemSettingCacheManager systemSettingCacheManager,
         IRepository<OrderRedo> orderRedoRepository,
         IRepository<OrderSupervise> orderSuperviseRepository,
         IRepository<OrderUrge> orderUrgeRepository,
         IFileRepository fileRepository,
-        IRepositoryWorkflow<OrderScreen> orderScreenRepository,
+        IOrderScreenRepository orderScreenRepository,
         IRepository<OrderPublishHistory> orderPublishHistoryRepository,
         IRepositoryTextSearch<OrderTs> repositoryts,
         IQualityApplication qualityApplication,

+ 15 - 6
src/Hotline.Application/Handlers/FlowEngine/WorkflowNextHandler.cs

@@ -32,9 +32,9 @@ public class WorkflowNextHandler : INotificationHandler<NextStepNotify>
     private readonly ICapPublisher _capPublisher;
     private readonly IMapper _mapper;
     private readonly ILogger<WorkflowNextHandler> _logger;
-    private readonly IRepositoryWorkflow<OrderScreen> _orderScreenRepository;
+    private readonly IOrderScreenRepository _orderScreenRepository;
     private readonly IQualityApplication _qualityApplication;
-    private readonly IRepository<OrderDelay> _orderDelayRepository;
+    private readonly IOrderDelayRepository _orderDelayRepository;
 
     public WorkflowNextHandler(
         IOrderDomainService orderDomainService,
@@ -45,9 +45,9 @@ public class WorkflowNextHandler : INotificationHandler<NextStepNotify>
         ICapPublisher capPublisher,
         IMapper mapper,
         ILogger<WorkflowNextHandler> logger,
-        IRepositoryWorkflow<OrderScreen> orderScreenRepository,
+        IOrderScreenRepository orderScreenRepository,
         IQualityApplication qualityApplication,
-        IRepository<OrderDelay> orderDelayRepository)
+        IOrderDelayRepository orderDelayRepository)
     {
         _orderDomainService = orderDomainService;
         _knowledgeDomainService = knowledgeDomainService;
@@ -203,14 +203,23 @@ public class WorkflowNextHandler : INotificationHandler<NextStepNotify>
 
                 break;
             case WorkflowModuleConsts.OrderDelay:
+                var orderDelay = await _orderDelayRepository.Queryable().Includes(x => x.Order)
+                    .Where(x => x.Id == workflow.ExternalId).FirstAsync(cancellationToken);
+                if (orderDelay != null)
+                {
+                    orderDelay.Assign(assignInfo.FlowAssignType, assignInfo.GetHandlerIds());
+                    await _orderDelayRepository.UpdateAsync(orderDelay, cancellationToken);
+                }
+
+
                 if (nextTag is not null && nextTag.Type == TagDefaults.TagType.Org)
                 {
                     switch (nextTag.Value)
                     {
                         case TagDefaults.TagValue.Province:
                             //TODO 发起省延期审批
-                            var orderDelay = await _orderDelayRepository.Queryable().Includes(x => x.Order)
-                                .Where(x => x.Id == workflow.ExternalId).FirstAsync(cancellationToken);
+                            //var orderDelay = await _orderDelayRepository.Queryable().Includes(x => x.Order)
+                            //    .Where(x => x.Id == workflow.ExternalId).FirstAsync(cancellationToken);
                             try
                             {
                                 if (orderDelay != null)

+ 44 - 26
src/Hotline.Repository.SqlSugar/Orders/OrderRepository.cs

@@ -25,12 +25,12 @@ namespace Hotline.Repository.SqlSugar.Orders
     {
         private readonly IDataPermissionFilterBuilder _dataPermissionFilterBuilder;
 
-		public OrderRepository(ISugarUnitOfWork<HotlineDbContext> uow,
+        public OrderRepository(ISugarUnitOfWork<HotlineDbContext> uow,
             IDataPermissionFilterBuilder dataPermissionFilterBuilder
-			) : base(uow, dataPermissionFilterBuilder)
+            ) : base(uow, dataPermissionFilterBuilder)
         {
             _dataPermissionFilterBuilder = dataPermissionFilterBuilder;
-		}
+        }
 
         public async Task<string> AddOrderNavAsync(Order order, CancellationToken cancellationToken)
         {
@@ -38,20 +38,21 @@ namespace Hotline.Repository.SqlSugar.Orders
             order.AssignToCreator(_dataPermissionFilterBuilder.DataPermissionManager);
 
             await AddNav(order).Include(d => d.OrderExtension).ExecuteCommandAsync();
-            
+
             return order.Id;
         }
 
-      
 
-		/// <summary>
-		/// 工单词库批量删除
-		/// </summary>
-		/// <param name="ids"></param>
-		/// <param name="cancellationToken"></param>
-		/// <returns></returns>
-		public async Task RemoveOrderWrodBatchAsync(List<string> ids, CancellationToken cancellationToken) { 
-           await  Db.Deleteable<OrderWord>().In(x=>x.Id,ids).ExecuteCommandAsync(cancellationToken);
+
+        /// <summary>
+        /// 工单词库批量删除
+        /// </summary>
+        /// <param name="ids"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task RemoveOrderWrodBatchAsync(List<string> ids, CancellationToken cancellationToken)
+        {
+            await Db.Deleteable<OrderWord>().In(x => x.Id, ids).ExecuteCommandAsync(cancellationToken);
         }
 
 
@@ -63,7 +64,7 @@ namespace Hotline.Repository.SqlSugar.Orders
         /// <returns></returns>
         public async Task RemoveOrderObserveBatchAsync(List<string> ids, CancellationToken cancellationToken)
         {
-	        await Db.Deleteable<OrderObserve>().In(x => x.Id, ids).ExecuteCommandAsync(cancellationToken);
+            await Db.Deleteable<OrderObserve>().In(x => x.Id, ids).ExecuteCommandAsync(cancellationToken);
         }
 
         /// <summary>
@@ -74,18 +75,19 @@ namespace Hotline.Repository.SqlSugar.Orders
         /// <returns></returns>
         public async Task RemoveOrderFinalityBatchAsync(List<string> ids, CancellationToken cancellationToken)
         {
-	        await Db.Deleteable<OrderFinality>().In(x => x.Id, ids).ExecuteCommandAsync(cancellationToken);
+            await Db.Deleteable<OrderFinality>().In(x => x.Id, ids).ExecuteCommandAsync(cancellationToken);
         }
 
-        public async Task OrderScreenRevisionVisit(string VisitId, bool canHandle, CancellationToken cancellationToken) {
+        public async Task OrderScreenRevisionVisit(string VisitId, bool canHandle, CancellationToken cancellationToken)
+        {
 
-            await Db.Updateable<OrderVisit>().SetColumns(x => x.IsCanHandle == canHandle).Where(x=>x.Id == VisitId).ExecuteCommandAsync(cancellationToken);
+            await Db.Updateable<OrderVisit>().SetColumns(x => x.IsCanHandle == canHandle).Where(x => x.Id == VisitId).ExecuteCommandAsync(cancellationToken);
         }
 
         public async Task FileAsync(Order order, CancellationToken cancellationToken)
         {
-			await Db.Updateable<Order>().SetColumns(x=>x.FileJson == order.FileJson).Where(x=>x.Id == order.Id).ExecuteCommandAsync(cancellationToken);
-		}
+            await Db.Updateable<Order>().SetColumns(x => x.FileJson == order.FileJson).Where(x => x.Id == order.Id).ExecuteCommandAsync(cancellationToken);
+        }
 
         private static object GetPropertyValue(object obj, string property)
         {
@@ -101,23 +103,39 @@ namespace Hotline.Repository.SqlSugar.Orders
             foreach (var item in hotSpotList)
             {
                 var table = await Db.Queryable<Order>()
-                    .LeftJoin<SystemOrganize>((it,o)=> it.CurrentHandleOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6")) == o.Id)
-                    .Where((it,o)=> it.StartTime >= StartTime && it.StartTime<= EndTime)
-                    .GroupBy((it,o) => new {
-                        CurrentHandleOrgCode =(it.CurrentHandleOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6"))),
+                    .LeftJoin<SystemOrganize>((it, o) => it.CurrentHandleOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6")) == o.Id)
+                    .Where((it, o) => it.StartTime >= StartTime && it.StartTime <= EndTime)
+                    .GroupBy((it, o) => new
+                    {
+                        CurrentHandleOrgCode = (it.CurrentHandleOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6"))),
                         o.Name
                     })
-                    .Select((it,o) => new
+                    .Select((it, o) => new
                     {
                         OrgCode = it.CurrentHandleOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6")),
-                        Count = SqlFunc.AggregateSum(SqlFunc.IIF(it.HotspotId.Substring(0,2)==item.Id,1,0)),
+                        Count = SqlFunc.AggregateSum(SqlFunc.IIF(it.HotspotId.Substring(0, 2) == item.Id, 1, 0)),
                         Key = item.Id,
                         OrgName = o.Name,
                         HotSorpName = item.HotSpotName
-                    }).ToPivotListAsync(x=>x.Key,x=>new { x.OrgCode,x.OrgName,x.HotSorpName },x=> x.Sum(x=>x.Count));
+                    }).ToPivotListAsync(x => x.Key, x => new { x.OrgCode, x.OrgName, x.HotSorpName }, x => x.Sum(x => x.Count));
                 listReturn.AddRange(table);
             }
             return new { HotSpot = hotSpotList, Data = listReturn };
         }
     }
+
+    public class OrderScreenRepository : BaseRepositoryWorkflow<OrderScreen>, IOrderScreenRepository, IScopeDependency
+    {
+        public OrderScreenRepository(ISugarUnitOfWork<HotlineDbContext> uow, IDataPermissionFilterBuilder dataPermissionFilterBuilder) : base(uow, dataPermissionFilterBuilder)
+        {
+        }
+    }
+
+    public class OrderDelayRepository : BaseRepositoryWorkflow<OrderDelay>, IOrderDelayRepository, IScopeDependency
+    {
+        public OrderDelayRepository(ISugarUnitOfWork<HotlineDbContext> uow, IDataPermissionFilterBuilder dataPermissionFilterBuilder) : base(uow, dataPermissionFilterBuilder)
+        {
+        }
+    }
+
 }

+ 10 - 0
src/Hotline/Orders/IOrderRepository.cs

@@ -22,4 +22,14 @@ namespace Hotline.Orders
         Task<object> HotPortJoinOrgStatistics(DateTime StartTime, DateTime EndTime);
 
     }
+
+    public interface IOrderScreenRepository : IRepositoryWorkflow<OrderScreen>
+    {
+
+    }
+
+    public interface IOrderDelayRepository : IRepositoryWorkflow<OrderDelay>
+    {
+
+    }
 }

+ 6 - 6
src/Hotline/Orders/OrderDelay.cs

@@ -9,11 +9,11 @@ using XF.Domain.Repository;
 
 namespace Hotline.Orders
 {
-	/// <summary>
-	/// 工单延期
-	/// </summary>
-	 [Description("工单延期")]
-	public class OrderDelay : CreationEntity
+    /// <summary>
+    /// 工单延期
+    /// </summary>
+    [Description("工单延期")]
+    public class OrderDelay : WorkflowEntity
     {
         /// <summary>
         /// 工单编号(冗余)
@@ -70,7 +70,7 @@ namespace Hotline.Orders
         /// <summary>
         /// 延期申请单位
         /// </summary>
-        public ETimeType DelayUnit {get;set;}
+        public ETimeType DelayUnit { get; set; }
 
         /// <summary>
         /// 延期申请理由

+ 12 - 7
src/XF.Domain.Repository/IRepositoryWorkflow.cs

@@ -9,14 +9,19 @@ using XF.Domain.Entities;
 
 namespace XF.Domain.Repository
 {
-    public interface IRepositoryWorkflow<TEntity, TKey> : IRepositorySqlSugar<TEntity, TKey>
-        where TEntity : class, IEntity<string>, new()
-        where TKey : IEquatable<TKey>
-    {
-        ISugarQueryable<TEntity> Queryable(bool permissionVerify = false, bool includeDeleted = false, bool workflowFilter = true);
-    }
+    //public interface IRepositoryWorkflow<TEntity, TKey> : IRepositorySqlSugar<TEntity, TKey>
+    //    where TEntity : class, IEntity<string>, new()
+    //    where TKey : IEquatable<TKey>
+    //{
+    //    ISugarQueryable<TEntity> Queryable(bool permissionVerify = false, bool includeDeleted = false, bool workflowFilter = true);
+    //}
 
-    public interface IRepositoryWorkflow<TEntity> : IRepositoryWorkflow<TEntity, string> where TEntity : class, IEntity<string>, new()
+    //public interface IRepositoryWorkflow<TEntity> : IRepositoryWorkflow<TEntity, string> where TEntity : class, IEntity<string>, new()
+    //{
+    //}
+
+    public interface IRepositoryWorkflow<TEntity> : IRepositorySqlSugar<TEntity> where TEntity : class, IEntity<string>, new()
     {
+        ISugarQueryable<TEntity> Queryable(bool permissionVerify = false, bool includeDeleted = false, bool workflowFilter = true);
     }
 }