Parcourir la source

Merge branch 'test' into test_tj

tangjiang il y a 4 mois
Parent
commit
1517cf0eb9

+ 8 - 4
src/Hotline.Api/Controllers/WebPortalController.cs

@@ -58,6 +58,7 @@ namespace Hotline.Api.Controllers
         private readonly ISystemDicDataCacheManager _systemDicDataCacheManager;
         private readonly IOptionsSnapshot<AppConfiguration> _appOptions;
         private readonly ITypedCache<string> _getVailData;
+        private readonly IRepository<KnowledgeWord> _knowledgeWordRepository;
 
         public WebPortalController(IMapper mapper,
             IMediator mediator,
@@ -81,7 +82,8 @@ namespace Hotline.Api.Controllers
             IRepository<Knowledge> knowledgeRepository,
             ISystemDicDataCacheManager systemDicDataCacheManager,
             IOptionsSnapshot<AppConfiguration> appOptions,
-            ITypedCache<string> getVailData
+            ITypedCache<string> getVailData,
+            IRepository<KnowledgeWord> knowledgeWordRepository
             )
         {
             _mapper = mapper;
@@ -107,6 +109,7 @@ namespace Hotline.Api.Controllers
             _systemDicDataCacheManager = systemDicDataCacheManager;
             _appOptions = appOptions;
             _getVailData = getVailData;
+            _knowledgeWordRepository = knowledgeWordRepository;
         }
 
         #region 通知
@@ -1360,14 +1363,15 @@ namespace Hotline.Api.Controllers
             var typeSpliceNameTags = string.Empty;
             if (!string.IsNullOrEmpty(dto.KnowledgeBaseTags))
             {
-                var type = await _knowledgeTypeRepository.GetAsync(x => x.Name == dto.KnowledgeBaseTags);
-                typeSpliceNameTags = type?.SpliceName;
+                var type = await _knowledgeWordRepository.GetAsync(x => x.Tag == dto.KnowledgeBaseTags && x.IsEnable == 0);
+                typeSpliceNameTags = type?.Id;
             }
 
             var (total, items) = await _knowledgeRepository.Queryable()
                 .Where(p => p.IsPublic == true && p.Status == EKnowledgeStatus.OnShelf)
                 .WhereIF(!string.IsNullOrEmpty(dto.Title), p => p.Title.Contains(dto.Title))
-                .WhereIF(!string.IsNullOrEmpty(typeSpliceNameTags), p => p.KnowledgeType.Any(t => t.KnowledgeTypeSpliceName.EndsWith(typeSpliceNameTags)))
+                // .WhereIF(!string.IsNullOrEmpty(typeSpliceNameTags), p => p.KnowledgeType.Any(t => t.KnowledgeTypeSpliceName.EndsWith(typeSpliceNameTags)))
+                .WhereIF(!string.IsNullOrEmpty(typeSpliceNameTags), p => p.Keywords.Contains(typeSpliceNameTags))
                 .WhereIF(!string.IsNullOrEmpty(typeSpliceName), x => x.KnowledgeType.Any(t => t.KnowledgeTypeSpliceName.EndsWith(typeSpliceName)))
                 .OrderByDescending(p => p.CreationTime)
                 .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);

+ 72 - 71
src/Hotline.Application/Orders/OrderSecondaryHandlingApplication.cs

@@ -26,6 +26,7 @@ using Novacode;
 using Hotline.Share.Enums.FlowEngine;
 using Hotline.Settings.TimeLimitDomain;
 using Microsoft.Extensions.Options;
+using DocumentFormat.OpenXml.Office2010.Excel;
 
 namespace Hotline.Application.Orders
 {
@@ -230,79 +231,79 @@ namespace Hotline.Application.Orders
         }
 
 
-        /// <summary>
-        /// 获取申请列表
-        /// </summary>
-        /// <returns></returns>
-        public ISugarQueryable<OrderVisitDetail> ApplyQuery(MayScreenListDto dto, CancellationToken cancellationToken)
-        {
-            //dto.CreationTimeEnd = DateTime.Now;
-            ////dto.CreationTimeStart = DateTime.Now;
-            //dto.CreationTimeStart = _timeLimitDomainService.CalcWorkTimeReduce(DateTime.Now, 5);
-            var isAdmin = _orderDomainService.IsCheckAdmin();
-            var query = _orderVisitedDetailRepository.Queryable(false, true)
-                .Includes(x => x.OrderVisit)
-                .Includes(x => x.OrderVisit, y => y.Order)
-                .Includes(x => x.OrderVisit, y => y.Employee)
-                .Includes(x => x.SecondaryHandling)
-                .Where(x => x.OrderVisit.Order.IsProvince == false)
-                .LeftJoin<OrderScreen>((x, s) => x.Id == s.VisitDetailId && s.Status < EScreenStatus.End && s.IsDeleted == false)
-                //.Where((x, s) => s.Id == null && (x.SecondaryHandling.State == ESecondaryHandlingState.NotApply || x.SecondaryHandling.Id == null))
-                .Where(x=> SqlFunc.Subqueryable<OrderSecondaryHandling>().Where(osh => osh.VisitDetailId == x.Id &&  osh.State == ESecondaryHandlingState.NotApply).NotAny())
-                //.Where(x => x.OrderVisit.VisitTime < dto.CreationTimeEnd && x.OrderVisit.VisitTime > dto.CreationTimeStart)
-                .WhereIF(!string.IsNullOrEmpty(dto.No), x => x.OrderVisit.Order!.No!.Contains(dto.No!))
-                .WhereIF(dto.IsProvince.HasValue, x => x.OrderVisit.Order!.IsProvince == dto.IsProvince)
-                .WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.OrderVisit.Order!.Title!.Contains(dto.Title!))
-                .WhereIF(!string.IsNullOrEmpty(dto.SourceChannel), x => x.OrderVisit.Order!.SourceChannelCode! == dto.SourceChannel!)
-                .WhereIF(!string.IsNullOrEmpty(dto.AcceptType), x => x.OrderVisit.Order!.AcceptTypeCode! == dto.AcceptType!)
-                .WhereIF(dto.CounterSignType.HasValue, x => x.OrderVisit.Order!.CounterSignType == dto.CounterSignType)
-                .WhereIF(!string.IsNullOrEmpty(dto.OrgLevelOneName), x => x.OrderVisit.Order!.OrgLevelOneName!.Contains(dto.OrgLevelOneName!))
-                .WhereIF(!string.IsNullOrEmpty(dto.CurrentHandleOrgName), x => x.OrderVisit.Order!.CurrentHandleOrgName!.Contains(dto.CurrentHandleOrgName!))
-                .WhereIF(dto.CurrentHandleTime.HasValue && dto.EndCurrentHandleTime.HasValue, x => x.OrderVisit.Order!.ActualHandleTime >= dto.CurrentHandleTime && x.OrderVisit.Order!.ActualHandleTime <= dto.EndCurrentHandleTime)
-                .WhereIF(dto.FiledTime.HasValue && dto.EndFiledTime.HasValue, x => x.OrderVisit.Order!.FiledTime >= dto.FiledTime && x.OrderVisit.Order!.FiledTime <= dto.EndFiledTime)
-                .WhereIF(dto.CreationTime.HasValue && dto.EndCreationTime.HasValue, x => x.OrderVisit.Order!.CreationTime >= dto.CreationTime && x.OrderVisit.Order!.CreationTime <= dto.EndCreationTime)
-                .WhereIF(dto.VisitTime.HasValue && dto.EndVisitTime.HasValue, x => x.OrderVisit.VisitTime >= dto.VisitTime && x.OrderVisit.VisitTime <= dto.EndVisitTime)
-                .WhereIF(!string.IsNullOrEmpty(dto.VisitOrgName), x => x.VisitOrgName!.Contains(dto.VisitOrgName!))
-                .WhereIF(!string.IsNullOrEmpty(dto.OrgProcessingResults), x => SqlFunc.JsonField(x.OrgProcessingResults, "Key") == dto.OrgProcessingResults)
-                .WhereIF(!string.IsNullOrEmpty(dto.OrgHandledAttitude), x => SqlFunc.JsonListObjectAny(x.OrgHandledAttitude, "Key", dto.OrgHandledAttitude))
-                .WhereIF(!string.IsNullOrEmpty(dto.OrgNoSatisfiedReason), x => SqlFunc.JsonField(x.OrgNoSatisfiedReason, "Key") == dto.OrgNoSatisfiedReason)
-                .Where(x => SqlFunc.Subqueryable<OrderVisit>().Where(ov => ov.Id == x.VisitId && ov.VisitState == EVisitState.Visited && ov.IsCanHandle).Any())
-                //.Where((x, s) => x.OrderVisit.VisitState == EVisitState.Visited && x.OrderVisit.IsCanHandle)
-                .WhereIF(!isAdmin, (x, s) => (x.OrderVisit.Order.CounterSignType ==  ECounterSignType.Department || x.OrderVisit.Order.CounterSignType == null) && x.VisitOrgCode.StartsWith(_sessionContext.OrgId))
-                ;
-            if (_sessionContext.OrgId != null && !_sessionContext.OrgIsCenter)
-            {
-                query.WhereIF(!string.IsNullOrEmpty(dto.Keyword),
-                        (x, s) => x.OrderVisit.Order.Title.Contains(dto.Keyword!) ||
-                                  x.OrderVisit.Order.No.Contains(dto.Keyword!))
-                    .Where((x, s) => x.VisitTarget == EVisitTarget.Org && x.VisitOrgCode.StartsWith(_sessionContext.OrgId) && (
-                        SqlFunc.JsonField(x.OrgProcessingResults, "Key") == "1" ||
-                        SqlFunc.JsonField(x.OrgProcessingResults, "Key") == "2"
-                        || SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == "1" ||
-                        SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == "2"
-                    ));
-            }
-            else
-            {
-                query.WhereIF(!string.IsNullOrEmpty(dto.Keyword),
-                        (x, s) => x.OrderVisit.Order.Title.Contains(dto.Keyword!) ||
-                                  x.OrderVisit.Order.No.Contains(dto.Keyword!))
-                    .Where((x, s) => x.VisitTarget == EVisitTarget.Org && (
-                        SqlFunc.JsonField(x.OrgProcessingResults, "Key") == "1" ||
-                        SqlFunc.JsonField(x.OrgProcessingResults, "Key") == "2"
-                        || SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == "1" ||
-                        SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == "2"
-                    ));
-            }
+		/// <summary>
+		/// 获取申请列表
+		/// </summary>
+		/// <returns></returns>
+		public ISugarQueryable<OrderVisitDetail> ApplyQuery(MayScreenListDto dto, CancellationToken cancellationToken)
+		{
+			//dto.CreationTimeEnd = DateTime.Now;
+			////dto.CreationTimeStart = DateTime.Now;
+			//dto.CreationTimeStart = _timeLimitDomainService.CalcWorkTimeReduce(DateTime.Now, 5);
+			var isAdmin = _orderDomainService.IsCheckAdmin();
+			var query = _orderVisitedDetailRepository.Queryable(false, true)
+				.Includes(x => x.OrderVisit)
+				.Includes(x => x.OrderVisit, y => y.Order)
+				.Includes(x => x.OrderVisit, y => y.Employee)
+				.Includes(x => x.SecondaryHandling)
+				.Where(x => x.OrderVisit.Order.IsProvince == false)
+				.LeftJoin<OrderScreen>((x, s) => x.Id == s.VisitDetailId && s.Status < EScreenStatus.End && s.IsDeleted == false)
+				//.Where((x, s) => s.Id == null && (x.SecondaryHandling.State == ESecondaryHandlingState.NotApply || x.SecondaryHandling.Id == null))
+				.Where(x => SqlFunc.Subqueryable<OrderSecondaryHandling>().Where(osh => osh.VisitDetailId == x.Id && osh.State == ESecondaryHandlingState.NotApply).NotAny())
+				//.Where(x => x.OrderVisit.VisitTime < dto.CreationTimeEnd && x.OrderVisit.VisitTime > dto.CreationTimeStart)
+				.WhereIF(!string.IsNullOrEmpty(dto.No), x => x.OrderVisit.Order!.No!.Contains(dto.No!))
+				.WhereIF(dto.IsProvince.HasValue, x => x.OrderVisit.Order!.IsProvince == dto.IsProvince)
+				.WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.OrderVisit.Order!.Title!.Contains(dto.Title!))
+				.WhereIF(!string.IsNullOrEmpty(dto.SourceChannel), x => x.OrderVisit.Order!.SourceChannelCode! == dto.SourceChannel!)
+				.WhereIF(!string.IsNullOrEmpty(dto.AcceptType), x => x.OrderVisit.Order!.AcceptTypeCode! == dto.AcceptType!)
+				.WhereIF(dto.CounterSignType.HasValue, x => x.OrderVisit.Order!.CounterSignType == dto.CounterSignType)
+				.WhereIF(!string.IsNullOrEmpty(dto.OrgLevelOneName), x => x.OrderVisit.Order!.OrgLevelOneName!.Contains(dto.OrgLevelOneName!))
+				.WhereIF(!string.IsNullOrEmpty(dto.CurrentHandleOrgName), x => x.OrderVisit.Order!.CurrentHandleOrgName!.Contains(dto.CurrentHandleOrgName!))
+				.WhereIF(dto.CurrentHandleTime.HasValue && dto.EndCurrentHandleTime.HasValue, x => x.OrderVisit.Order!.ActualHandleTime >= dto.CurrentHandleTime && x.OrderVisit.Order!.ActualHandleTime <= dto.EndCurrentHandleTime)
+				.WhereIF(dto.FiledTime.HasValue && dto.EndFiledTime.HasValue, x => x.OrderVisit.Order!.FiledTime >= dto.FiledTime && x.OrderVisit.Order!.FiledTime <= dto.EndFiledTime)
+				.WhereIF(dto.CreationTime.HasValue && dto.EndCreationTime.HasValue, x => x.OrderVisit.Order!.CreationTime >= dto.CreationTime && x.OrderVisit.Order!.CreationTime <= dto.EndCreationTime)
+				.WhereIF(dto.VisitTime.HasValue && dto.EndVisitTime.HasValue, x => x.OrderVisit.VisitTime >= dto.VisitTime && x.OrderVisit.VisitTime <= dto.EndVisitTime)
+				.WhereIF(!string.IsNullOrEmpty(dto.VisitOrgName), x => x.VisitOrgName!.Contains(dto.VisitOrgName!))
+				.WhereIF(!string.IsNullOrEmpty(dto.OrgProcessingResults), x => SqlFunc.JsonField(x.OrgProcessingResults, "Key") == dto.OrgProcessingResults)
+				.WhereIF(!string.IsNullOrEmpty(dto.OrgHandledAttitude), x => SqlFunc.JsonListObjectAny(x.OrgHandledAttitude, "Key", dto.OrgHandledAttitude))
+				.WhereIF(!string.IsNullOrEmpty(dto.OrgNoSatisfiedReason), x => SqlFunc.JsonField(x.OrgNoSatisfiedReason, "Key") == dto.OrgNoSatisfiedReason)
+				//.Where(x => SqlFunc.Subqueryable<OrderVisit>().Where(ov => ov.Id == x.VisitId && ov.VisitState == EVisitState.Visited && ov.IsCanHandle).Any())
+				.Where((x, s) => x.OrderVisit.VisitState == EVisitState.Visited && x.OrderVisit.IsCanHandle)
+				.WhereIF(!isAdmin, (x, s) => (x.OrderVisit.Order.CounterSignType == ECounterSignType.Department || x.OrderVisit.Order.CounterSignType == null) && x.VisitOrgCode.StartsWith(_sessionContext.OrgId))
+				;
+			if (_sessionContext.OrgId != null && !_sessionContext.OrgIsCenter)
+			{
+				query.WhereIF(!string.IsNullOrEmpty(dto.Keyword),
+						(x, s) => x.OrderVisit.Order.Title.Contains(dto.Keyword!) ||
+								  x.OrderVisit.Order.No.Contains(dto.Keyword!))
+					.Where((x, s) => x.VisitTarget == EVisitTarget.Org && x.VisitOrgCode.StartsWith(_sessionContext.OrgId) && (
+						SqlFunc.JsonField(x.OrgProcessingResults, "Key") == "1" ||
+						SqlFunc.JsonField(x.OrgProcessingResults, "Key") == "2"
+						|| SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == "1" ||
+						SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == "2"
+					));
+			}
+			else
+			{
+				query.WhereIF(!string.IsNullOrEmpty(dto.Keyword),
+						(x, s) => x.OrderVisit.Order.Title.Contains(dto.Keyword!) ||
+								  x.OrderVisit.Order.No.Contains(dto.Keyword!))
+					.Where((x, s) => x.VisitTarget == EVisitTarget.Org && (
+						SqlFunc.JsonField(x.OrgProcessingResults, "Key") == "1" ||
+						SqlFunc.JsonField(x.OrgProcessingResults, "Key") == "2"
+						|| SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == "1" ||
+						SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == "2"
+					));
+			}
 
-            return query.OrderByDescending((x, s) => x.CreationTime);
-        }
+			return query.OrderByDescending((x, s) => x.CreationTime);
+		}
 
-        /// <summary>
-        /// 二次办理列表查询
-        /// </summary>
-        /// <returns></returns>
-        public ISugarQueryable<OrderSecondaryHandling> Query(SecondaryHandlingListDto dto, CancellationToken cancellationToken)
+		/// <summary>
+		/// 二次办理列表查询
+		/// </summary>
+		/// <returns></returns>
+		public ISugarQueryable<OrderSecondaryHandling> Query(SecondaryHandlingListDto dto, CancellationToken cancellationToken)
         {
             if (dto.CreationTimeEnd.HasValue)
                 dto.CreationTimeEnd = dto.CreationTimeEnd.Value.AddDays(1).AddSeconds(-1);

+ 7 - 1
src/Hotline/FlowEngine/Workflows/StepBasicEntity.cs

@@ -563,7 +563,13 @@ public abstract class StepBasicEntity : CreationEntity
         }
     }
 
-    #endregion
+	#endregion
+
+	/// <summary>
+	/// 老系统Id
+	/// </summary>
+	[SugarColumn(ColumnDescription = "老系统Id")]
+	public string? OldStepId { get; set; }
 }
 
 /*

+ 8 - 2
src/Hotline/Orders/Order.cs

@@ -1086,8 +1086,14 @@ namespace Hotline.Orders
         /// </summary>
         [SugarColumn(ColumnDataType = "json", ColumnDescription = "部门办件结果", IsJson = true, IsNullable = true)]
         public Kv? OrgProcessingResults { get; set; }
-        #endregion
-    }
+		#endregion
+
+        /// <summary>
+        /// 老系统工单Id
+        /// </summary>
+		[SugarColumn(ColumnDescription = "老系统工单Id")]
+		public string? OldOrderId { get; set; }
+	}
 
     public partial class Order
     {

+ 2 - 0
src/Hotline/Orders/OrderScreen.cs

@@ -11,6 +11,8 @@ namespace Hotline.Orders
 {
     [Description("工单甄别")]
     [SugarIndex("index_screen_orderId", nameof(OrderScreen.OrderId), OrderByType.Asc)]
+	[SugarIndex("index_screen_visitDetailId", nameof(OrderScreen.VisitDetailId), OrderByType.Desc)]
+	[SugarIndex("index_screen_visitId", nameof(OrderScreen.VisitId), OrderByType.Desc)]
 	public class OrderScreen : WorkflowEntity
     {
         /// <summary>

+ 2 - 0
src/Hotline/Orders/OrderVisitDetail.cs

@@ -9,6 +9,8 @@ using XF.Utility.EnumExtensions;
 namespace Hotline.Orders
 {
 	[SugarIndex("index_visitDetail_creationtime", nameof(OrderVisitDetail.CreationTime), OrderByType.Desc)]
+	[SugarIndex("index_visitDetail_visitId", nameof(OrderVisitDetail.VisitId), OrderByType.Desc)]
+	[SugarIndex("index_visitDetail_visitOrgCode", nameof(OrderVisitDetail.VisitOrgCode), OrderByType.Desc)]
 	public class OrderVisitDetail : CreationEntity
     {