Browse Source

Merge branch 'master' of http://110.188.24.182:10023/Fengwo/hotline

xf 1 năm trước cách đây
mục cha
commit
070a6d17f0

+ 14 - 27
src/Hotline.Api/Controllers/KnowledgeController.cs

@@ -320,9 +320,9 @@ namespace Hotline.Api.Controllers
 
 			var knowledgeInfoDto = _mapper.Map<KnowledgeInfoDto>(know);
 			//分类
-			var type = await _knowledgeTypeRepository.GetAsync(know.KnowledgeTypeId, HttpContext.RequestAborted);
-			if (type != null)
-				knowledgeInfoDto.KnowledgeTypeName = type.SpliceName;
+			//var type = await _knowledgeTypeRepository.GetAsync(know.KnowledgeTypeId, HttpContext.RequestAborted);
+			//if (type != null)
+			//	knowledgeInfoDto.KnowledgeTypeName = type.SpliceName;
 
 			//热点
 			var hot = await _hotspotTypeRepository.GetAsync(know.HotspotId, HttpContext.RequestAborted);
@@ -352,12 +352,12 @@ namespace Hotline.Api.Controllers
 			//转化
 			var knowledgeShowInfoDto = _mapper.Map<KnowledgeInfoDto>(knowledge);
 
-			var type = await _knowledgeTypeRepository.GetAsync(knowledge.KnowledgeTypeId, HttpContext.RequestAborted);
-			if (type != null)
-			{
-				knowledgeShowInfoDto.KnowledgeTypeName = type.SpliceName;
-				knowledgeShowInfoDto.KnowledgeType = _mapper.Map<KnowledgeTypeDto>(type);
-			}
+			//var type = await _knowledgeTypeRepository.GetAsync(knowledge.KnowledgeTypeId, HttpContext.RequestAborted);
+			//if (type != null)
+			//{
+			//	knowledgeShowInfoDto.KnowledgeTypeName = type.SpliceName;
+			//	knowledgeShowInfoDto.KnowledgeType = _mapper.Map<KnowledgeTypeDto>(type);
+			//}
 			var hot = await _hotspotTypeRepository.GetAsync(knowledge.HotspotId, HttpContext.RequestAborted);
 			if (hot != null)
 				knowledgeShowInfoDto.HotspotName = hot.HotSpotFullName;
@@ -428,10 +428,8 @@ namespace Hotline.Api.Controllers
 			var (total, items) = await _knowledgeRepository
 			 .Queryable()
 			 .Includes(it => it.User)
-			 .Includes(it => it.KnowledgeType)
 			 .Where(p => p.CreatorId == _sessionContext.RequiredUserId && p.Status == EKnowledgeStatus.Drafts)
 			 .WhereIF(!string.IsNullOrEmpty(pagedDto.Keyword), d => d.Title.Contains(pagedDto.Keyword!))
-			 .WhereIF(!string.IsNullOrEmpty(pagedDto.KnowledgeTypeId), d => d.KnowledgeTypeId == pagedDto.KnowledgeTypeId)
 			 .WhereIF(pagedDto.StartTime != null, d => d.CreationTime >= pagedDto.StartTime)
 			 .WhereIF(pagedDto.EndTime != null, d => d.CreationTime <= pagedDto.EndTime)
 			 .OrderByDescending(p => p.CreationTime)
@@ -465,11 +463,6 @@ namespace Hotline.Api.Controllers
 		{
 			var typeSpliceName = string.Empty;
 			var hotspotHotSpotFullName = string.Empty;
-			if (!string.IsNullOrEmpty(pagedDto.KnowledgeTypeId))
-			{
-				var type = await _knowledgeTypeRepository.GetAsync(x => x.Id == pagedDto.KnowledgeTypeId);
-				typeSpliceName = type?.SpliceName;
-			}
 			if (!string.IsNullOrEmpty(pagedDto.HotspotId))
 			{
 				var hotspot = await _hotspotTypeRepository.GetAsync(x => x.Id == pagedDto.HotspotId);
@@ -479,9 +472,8 @@ namespace Hotline.Api.Controllers
 			var (total, temp) = await _knowledgeRepository.Queryable(false,false,false)
 				.Includes(x => x.User)
 				.Includes(x => x.SystemOrganize)
-				.Includes(x => x.KnowledgeType)
-				.Includes(x => x.HotspotType)
 				.Includes(x => x.SourceOrganize)
+				.Includes(x => x.HotspotType)
 				.Includes(x=>x.Workflow)
 				.Where(x => x.IsDeleted == false)
 				.Where(x => (x.Status == EKnowledgeStatus.Drafts && x.CreatorId == _sessionContext.UserId) || (x.Status != EKnowledgeStatus.Drafts))
@@ -491,7 +483,7 @@ namespace Hotline.Api.Controllers
 				.WhereIF(pagedDto.Status.HasValue && pagedDto.Status == EKnowledgeStatus.OffShelf, x => x.Status == pagedDto.Status || (x.ExpiredTime != null && x.ExpiredTime < DateTime.Now && x.Status != EKnowledgeStatus.Drafts))
 				.WhereIF(pagedDto.IsPublic.HasValue, x => x.IsPublic == pagedDto.IsPublic)
 				.WhereIF(!string.IsNullOrEmpty(pagedDto.Summary), x => x.Summary != null && x.Summary.Contains(pagedDto.Summary!))
-				.WhereIF(!string.IsNullOrEmpty(typeSpliceName), x => x.KnowledgeType.SpliceName.EndsWith(typeSpliceName!))
+				.WhereIF(!string.IsNullOrEmpty(typeSpliceName), x => SqlFunc.JsonListObjectAny(x.KnowledgeType, "Value", typeSpliceName))
 				.WhereIF(!string.IsNullOrEmpty(hotspotHotSpotFullName), x => x.HotspotType.HotSpotFullName.EndsWith(hotspotHotSpotFullName!))
 				.WhereIF(!string.IsNullOrEmpty(pagedDto.CreateOrgId), x =>  x.CreatorOrgId != null && x.CreatorOrgId.EndsWith(pagedDto.CreateOrgId!))
 				.OrderByDescending(d => d.CreationTime)
@@ -525,7 +517,6 @@ namespace Hotline.Api.Controllers
 				.Queryable(false,false,false)
 				.Includes(x => x.User)
 				.Includes(x => x.SystemOrganize)
-				.Includes(x => x.KnowledgeType)
 				.Includes(x => x.HotspotType)
 				.Where(x => x.IsDeleted == false)
 				.Where(x=>x.Status == EKnowledgeStatus.OnShelf)
@@ -533,7 +524,7 @@ namespace Hotline.Api.Controllers
 				.WhereIF(pagedDto.RetrievalType == EKnowledgeRetrievalType.Title && !string.IsNullOrEmpty(pagedDto.Keyword), d => d.Title.Contains(pagedDto.Keyword!))
 				.WhereIF(pagedDto.RetrievalType == EKnowledgeRetrievalType.Content && !string.IsNullOrEmpty(pagedDto.Keyword), d => d.Content.Contains(pagedDto.Keyword!))
 				.WhereIF(pagedDto.RetrievalType == EKnowledgeRetrievalType.Summary && !string.IsNullOrEmpty(pagedDto.Keyword), d => d.Summary != null && d.Summary.Contains(pagedDto.Keyword!))
-				.WhereIF(!string.IsNullOrEmpty(typeSpliceName), x => x.KnowledgeType.SpliceName.EndsWith(typeSpliceName!))
+				.WhereIF(!string.IsNullOrEmpty(typeSpliceName), x => SqlFunc.JsonListObjectAny(x.KnowledgeType, "Value", typeSpliceName))
 				.WhereIF(!string.IsNullOrEmpty(hotspotHotSpotFullName), x => x.HotspotType.HotSpotFullName.EndsWith(hotspotHotSpotFullName!))
 				.WhereIF(!string.IsNullOrEmpty(pagedDto.HotspotName), x => x.HotspotType.HotSpotFullName.EndsWith(pagedDto.HotspotName!))
 				.WhereIF(!string.IsNullOrEmpty(pagedDto.CreateOrgId), x => x.CreatorOrgId != null && x.CreatorOrgId.EndsWith(pagedDto.CreateOrgId!))
@@ -623,7 +614,6 @@ namespace Hotline.Api.Controllers
 				.Includes(it => it.Knowledge)
 				.Includes(it => it.User)
 				.Includes(it => it.SystemOrganize)
-				.Includes(it => it.Knowledge, it => it.KnowledgeType)
 				.Includes(it => it.Workflow)
 				.Where(it => it.WorkflowId != null)
 				.WhereIF(pagedDto.EKnowledgeApplyType.HasValue, d => d.WorkflowModuleStatus == pagedDto.EKnowledgeApplyType)
@@ -935,8 +925,7 @@ namespace Hotline.Api.Controllers
 		{
 			var (total, items) = await _knowledgeCorrectionRepository.Queryable()
 				.Includes(x => x.Knowledge)
-				.Includes(x => x.Knowledge, y => y.KnowledgeType)
-				.WhereIF(!string.IsNullOrEmpty(dto.KnowledgeTypeId), x => x.Knowledge.KnowledgeTypeId == dto.KnowledgeTypeId!)
+				//.WhereIF(!string.IsNullOrEmpty(dto.KnowledgeTypeId), x => x.Knowledge.KnowledgeTypeId == dto.KnowledgeTypeId!)
 				.WhereIF(!string.IsNullOrEmpty(dto.CreatorName), x => x.CreatorName == dto.CreatorName!)
 				.Where(x=> !string.IsNullOrEmpty(x.Knowledge.Id))
 				.OrderByDescending(x => x.CreationTime)
@@ -1033,8 +1022,7 @@ namespace Hotline.Api.Controllers
 		{
 			var (total, items) = await _knowledgeQuestionsRepository.Queryable()
 				.Includes(x => x.Knowledge)
-				.Includes(x => x.Knowledge, y => y.KnowledgeType)
-				.WhereIF(!string.IsNullOrEmpty(dto.KnowledgeTypeId), x => x.Knowledge.KnowledgeTypeId == dto.KnowledgeTypeId!)
+				//.WhereIF(!string.IsNullOrEmpty(dto.KnowledgeTypeId), x => x.Knowledge.KnowledgeTypeId == dto.KnowledgeTypeId!)
 				.WhereIF(!string.IsNullOrEmpty(dto.CreatorName), x => x.CreatorName == dto.CreatorName!)
 				.Where(x => !string.IsNullOrEmpty(x.Knowledge.Id))
 				.OrderByDescending(x => x.CreationTime)
@@ -1070,7 +1058,6 @@ namespace Hotline.Api.Controllers
 		{
 			var (total, items) = await _knowledgeCollectRepository.Queryable()
 				.Includes(x=>x.Knowledge)
-				.Includes(x=>x.Knowledge,t=>t.KnowledgeType)
 				.WhereIF(!string.IsNullOrEmpty(dto.Keyword),x=>x.Knowledge.Title.Contains(dto.Keyword!)||( x.Knowledge.Summary != null &&  x.Knowledge.Summary.Contains(dto.Keyword!)))
 				.Where(x=>x.CreatorId == _sessionContext.UserId)
 				.Where(x => !string.IsNullOrEmpty(x.Knowledge.Id))

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

@@ -1224,7 +1224,10 @@ public class OrderController : BaseController
             orderDelay.DelayState = EDelayState.Withdraw;
             await _orderDelayRepository.UpdateAsync(orderDelay, HttpContext.RequestAborted);
         }
-
+        else
+        {
+            throw UserFriendlyException.SameMessage("无效数据");
+        }
     }
 
 
@@ -2007,24 +2010,35 @@ public class OrderController : BaseController
     public async Task<PagedDto<OrderDto>> Query([FromQuery] QueryOrderDto dto)
     {
         var (total, items) = await _orderRepository.Queryable()
-            .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Title.Contains(dto.Keyword!) || d.No.Contains(dto.Keyword!))
-            .WhereIF(!string.IsNullOrEmpty(dto.Content), d => d.Content.Contains(dto.Content!))
-            .WhereIF(dto.AcceptTypes.Any(), d => dto.AcceptTypes.Contains(d.AcceptType))
-            .WhereIF(dto.Channels.Any(), d => dto.Channels.Contains(d.SourceChannel))
-            .WhereIF(dto.HotspotIds.Any(), d => dto.HotspotIds.Contains(d.HotspotId))
-            .WhereIF(!string.IsNullOrEmpty(dto.TransferPhone), d => d.TransferPhone.Contains(dto.TransferPhone!))
+            .Includes(x=>x.OrderScreens)
+            .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Title.Contains(dto.Keyword!)) //标题
+            .WhereIF(!string.IsNullOrEmpty(dto.ProvinceNo), d=> d.ProvinceNo.Contains(dto.ProvinceNo)) //省本地编号
+            //.WhereIF(!string.IsNullOrEmpty(dto.Content), d => d.Content.Contains(dto.Content!))
+            .WhereIF(dto.AcceptTypes.Any(), d => dto.AcceptTypes.Contains(d.AcceptType)) //受理类型
+            .WhereIF(dto.Channels.Any(), d => dto.Channels.Contains(d.SourceChannel)) //来源渠道
+            .WhereIF(dto.HotspotIds.Any(), d => dto.HotspotIds.Contains(d.HotspotId)) //热点类型
+            .WhereIF(!string.IsNullOrEmpty(dto.TransferPhone), d => d.TransferPhone.Contains(dto.TransferPhone!)) //转接号码
             //.WhereIF(dto.OrgCodes.Any(), d => d.Workflow.Assigns.Any(s => dto.OrgCodes.Contains(s.OrgCode)))
-            .WhereIF(dto.OrgCodes.Any(), d => dto.OrgCodes.Contains(d.Workflow.ActualHandleOrgCode))
-            .WhereIF(!string.IsNullOrEmpty(dto.NameOrNo), d => d.AcceptorName.Contains(dto.NameOrNo!) || d.AcceptorStaffNo.Contains(dto.NameOrNo!))
-            .WhereIF(dto.CreationTimeStart.HasValue, d => d.CreationTime >= dto.CreationTimeStart)
-            .WhereIF(dto.CreationTimeEnd.HasValue, d => d.CreationTime <= dto.CreationTimeEnd)
-            .WhereIF(dto.EmergencyLevels.Any(), d => dto.EmergencyLevels.Contains(d.EmergencyLevel))
-            .WhereIF(!string.IsNullOrEmpty(dto.PhoneNo), d => d.FromPhone.Contains(dto.PhoneNo!) || d.Contact.Contains(dto.PhoneNo!))
-            .WhereIF(!string.IsNullOrEmpty(dto.PushTypeCode), d => d.PushTypeCode == dto.PushTypeCode)
-            .WhereIF(dto.ExpiredTimeStart.HasValue, d => d.ExpiredTime >= dto.ExpiredTimeStart)
-            .WhereIF(dto.ExpiredTimeEnd.HasValue, d => d.ExpiredTime <= dto.ExpiredTimeEnd)
-            .WhereIF(dto.Statuses.Any(), d => dto.Statuses.Contains(d.Status))
-            .WhereIF(dto.Statuses.Any(d => d == EOrderStatus.BackToUnAccept), d => d.Status <= EOrderStatus.BackToUnAccept)
+            .WhereIF(dto.OrgCodes.Any(), d => dto.OrgCodes.Contains(d.Workflow.ActualHandleOrgCode)) //接办部门
+            .WhereIF(!string.IsNullOrEmpty(dto.NameOrNo), d => d.AcceptorName.Contains(dto.NameOrNo!) || d.AcceptorStaffNo.Contains(dto.NameOrNo!)) //受理人/坐席
+            .WhereIF(dto.CreationTimeStart.HasValue, d => d.CreationTime >= dto.CreationTimeStart) //受理时间开始
+            .WhereIF(dto.CreationTimeEnd.HasValue, d => d.CreationTime <= dto.CreationTimeEnd) //受理时间结束
+            .WhereIF(dto.EmergencyLevels.Any(), d => dto.EmergencyLevels.Contains(d.EmergencyLevel))  //紧急成都
+            .WhereIF(!string.IsNullOrEmpty(dto.PhoneNo), d => d.FromPhone.Contains(dto.PhoneNo!) || d.Contact.Contains(dto.PhoneNo!)) //来电或联系电话
+            .WhereIF(!string.IsNullOrEmpty(dto.PushTypeCode), d => d.PushTypeCode == dto.PushTypeCode) //推送分类
+            .WhereIF(dto.ExpiredTimeStart.HasValue, d => d.ExpiredTime >= dto.ExpiredTimeStart) //超期时间开始
+            .WhereIF(dto.ExpiredTimeEnd.HasValue, d => d.ExpiredTime <= dto.ExpiredTimeEnd) //超期时间结束
+            .WhereIF(dto.Statuses.Any(), d => dto.Statuses.Contains(d.Status))  //工单状态
+            .WhereIF(dto.Statuses.Any(d => d == EOrderStatus.BackToUnAccept), d => d.Status <= EOrderStatus.BackToUnAccept) 
+            .WhereIF(!string.IsNullOrEmpty(dto.ActualHandlerName),d=>d.ActualHandlerName.Contains(dto.ActualHandlerName)) //接办人
+            .WhereIF(dto.IsScreen==true,d=>d.OrderScreens.Any(x=>x.Status != EScreenStatus.Refuse)) //有甄别
+            .WhereIF(dto.IsScreen==false,d=>!d.OrderScreens.Any(x=>x.Status != EScreenStatus.Refuse)) //无甄别
+            .WhereIF(!string.IsNullOrEmpty(dto.CurrentStepCode),d=> d.CurrentStepCode == dto.CurrentStepCode) //当前办理节点
+            .WhereIF(dto.ActualHandleTimeStart.HasValue,d=>d.ActualHandleTime>= dto.ActualHandleTimeStart) //办结时间开始
+            .WhereIF(dto.ActualHandleTimeEnd.HasValue,d=>d.ActualHandleTime<= dto.ActualHandleTimeEnd) //办结时间结束
+            .WhereIF(dto.IsOverTime==true,d=>d.ExpiredTime<DateTime.Now) //是 超期
+            .WhereIF(dto.IsOverTime==false,d=>d.ExpiredTime>DateTime.Now) //否 超期
+            .WhereIF(dto.IdentityType!=null, d=>d.IdentityType == dto.IdentityType) //来电主体
             .OrderByDescending(d => d.CreationTime)
             .ToPagedListAsync(dto, HttpContext.RequestAborted);
 
@@ -2970,7 +2984,7 @@ public class OrderController : BaseController
         var query = _orderRepository.Queryable()
             .WhereIF(!string.IsNullOrEmpty(dto.Keyword),
                 d => d.Title.Contains(dto.Keyword!) || d.No.Contains(dto.Keyword!))
-            .WhereIF(!string.IsNullOrEmpty(dto.Content), d => d.Content.Contains(dto.Content!))
+            //.WhereIF(!string.IsNullOrEmpty(dto.Content), d => d.Content.Contains(dto.Content!))
             .WhereIF(dto.AcceptTypes.Any(), d => dto.AcceptTypes.Contains(d.AcceptType))
             .WhereIF(dto.Channels.Any(), d => dto.Channels.Contains(d.SourceChannel))
             .WhereIF(dto.HotspotIds.Any(), d => dto.HotspotIds.Contains(d.HotspotId))

+ 0 - 1
src/Hotline.Application.Contracts/Validators/Knowledge/AddKnowledgeDtoValidator.cs

@@ -11,7 +11,6 @@ namespace Hotline.Application.Contracts.Validators.Knowledge
         public AddKnowledgeDtoValidator()
         {
             RuleFor(d => d.Title).NotEmpty();
-            RuleFor(d => d.KnowledgeTypeId).NotEmpty();
         }
     }
 }

+ 0 - 1
src/Hotline.Application.Contracts/Validators/Knowledge/UpdateKnowledgeDtoValidator.cs

@@ -11,7 +11,6 @@ namespace Hotline.Application.Contracts.Validators.Knowledge
         public UpdateKnowledgeDtoValidator()
         {
             RuleFor(d => d.Id).IsGuidStructureString();
-            RuleFor(d => d.KnowledgeTypeId).NotEmpty();
             RuleFor(d => d.Title).NotEmpty();
             RuleFor(d => d.Content).NotEmpty();
         }

+ 8 - 10
src/Hotline.Application/Knowledge/KnowApplication.cs

@@ -49,17 +49,16 @@ namespace Hotline.Application.Knowledge
 			   .Queryable()
 			   .InnerJoin<User>((o, cus) => o.CreatorId == cus.Id)
 			   .InnerJoin<SystemOrganize>((o, cus, sys) => o.CreatorOrgId == sys.Id)
-			   .InnerJoin<KnowledgeType>((o, cus, sys, kn) => o.KnowledgeTypeId == kn.Id)
-			   .LeftJoin<Hotspot>((o, cus, sys, kn, hst) => o.HotspotId == hst.Id)
-			   .Where((o, cus, sys, kn, hst) => o.IsDeleted == false && o.Status != EKnowledgeStatus.Revert && o.Status != EKnowledgeStatus.Drafts)
+			   .LeftJoin<Hotspot>((o, cus, sys, hst) => o.HotspotId == hst.Id)
+			   .Where((o, cus, sys, hst) => o.IsDeleted == false && o.Status != EKnowledgeStatus.Revert && o.Status != EKnowledgeStatus.Drafts)
 			   //关键词查询标题、创建人、创建部门
-			   .WhereIF(!string.IsNullOrEmpty(pagedDto.Keyword), (o, cus, sys, kn, hst) => o.Title.Contains(pagedDto.Keyword!) || cus.Name.Contains(pagedDto.Keyword!) || sys.Name.Contains(pagedDto.Keyword!))
+			   .WhereIF(!string.IsNullOrEmpty(pagedDto.Keyword), (o, cus, sys,  hst) => o.Title.Contains(pagedDto.Keyword!) || cus.Name.Contains(pagedDto.Keyword!) || sys.Name.Contains(pagedDto.Keyword!))
 			   //分类
-			   .WhereIF(!string.IsNullOrEmpty(pagedDto.KnowledgeTypeId), (o, cus, sys, kn, hst) => o.KnowledgeTypeId == pagedDto.KnowledgeTypeId)
+			   .WhereIF(!string.IsNullOrEmpty(pagedDto.KnowledgeTypeId), (o, cus, sys,  hst) => SqlFunc.JsonListObjectAny(o.KnowledgeType,"Key", pagedDto.KnowledgeTypeId))
 			   //热点
-			   .WhereIF(!string.IsNullOrEmpty(pagedDto.HotspotId), (o, cus, sys, kn, hst) => o.HotspotId == pagedDto.HotspotId)
+			   .WhereIF(!string.IsNullOrEmpty(pagedDto.HotspotId), (o, cus, sys,  hst) => o.HotspotId == pagedDto.HotspotId)
 			   //部门
-			   .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateOrgId), (o, cus, sys, kn, hst) => o.CreatorOrgId == pagedDto.CreateOrgId)
+			   .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateOrgId), (o, cus, sys,  hst) => o.CreatorOrgId == pagedDto.CreateOrgId)
 			  //状态
 			  // .WhereIF(pagedDto.Status.HasValue, (o, cus, sys, kn, hst) => o.Status == pagedDto.Status)
 			  //创建时间
@@ -72,18 +71,17 @@ namespace Hotline.Application.Knowledge
 			  // .WhereIF(pagedDto.StartOffShelfTime.HasValue, (o, cus, sys, kn, hst) => o.OffShelfTime >= pagedDto.StartOffShelfTime)
 			  //.WhereIF(pagedDto.EndOffShelfTime.HasValue, (o, cus, sys, kn, hst) => o.OffShelfTime <= pagedDto.EndOffShelfTime)
 			   //重新构建数据
-			   .Select((o, cus, sys, kn, hst) => new
+			   .Select((o, cus, sys,  hst) => new
 			   {
 				   index = SqlFunc.RowNumber($"{o.Version} desc ", $"{o.Code}"),
 				   CreationName = cus.Name,
 				   CreationBMName = sys.Name,
-				   KnowledgeTypeName = kn.SpliceName,
 				   HotspotName = hst.HotSpotFullName,
 				   o.Id,
 				   o.Code,
 				   o.Title,
 				   o.Version,
-				   o.KnowledgeTypeId,
+				   o.KnowledgeType,
 				   o.IsDeleted,
 				   o.HotspotId,
 				   o.OnShelfTime,

+ 0 - 4
src/Hotline.Application/Mappers/KnowledgeMapperConfigs.cs

@@ -15,18 +15,15 @@ public class KnowledgeMapperConfigs : IRegister
 
         config.NewConfig<Hotline.KnowledgeBase.Knowledge, KnowledgeDataDto>()
             .Map(d => d.CreatorName, x => x.User.Name)
-            .Map(d => d.KnowledgeTypeName, x => x.KnowledgeType.SpliceName)
             .Map(d => d.HotspotName, x => x.HotspotType.HotSpotFullName)
             ;
 
         config.NewConfig<Hotline.KnowledgeBase.Knowledge, KnowledgeApprovalDataDto>()
             .Map(d => d.CreatorName, x => x.User.Name)
-            .Map(d => d.KnowledgeTypeName, x => x.KnowledgeType.SpliceName)
             .Map(d => d.CreateBMName, x => x.SystemOrganize.Name);
 
         config.NewConfig<KnowledgeWorkFlow, KnowledgeApprovalDataDto>()
             .Map(d => d.CreatorName, x => x.User.Name)
-            .Map(d => d.KnowledgeTypeName, x => x.Knowledge.KnowledgeType.SpliceName)
             .Map(d => d.CreateBMName, x => x.SystemOrganize.Name)
             .Map(d => d.Id, x => x.Knowledge.Id)
             .Map(d => d.Title, x => x.Knowledge.Title)
@@ -38,7 +35,6 @@ public class KnowledgeMapperConfigs : IRegister
         config.NewConfig<KnowledgeWorkFlow, KnowledgeDeleteApplyDataDto>()
             .Map(d => d.Id, x => x.Knowledge.Id)
             .Map(d => d.Title, x => x.Knowledge.Title)
-            .Map(d => d.KnowledgeTypeName, x => x.Knowledge.KnowledgeType.SpliceName)
             .Map(d => d.HotspotName, x => x.Knowledge.HotspotType.HotSpotFullName)
             .Map(d => d.CreatorName, x => x.User.Name)
             .Map(d => d.CreationBMName, x => x.SystemOrganize.Name)

+ 1 - 1
src/Hotline.Share/Dtos/Knowledge/KnowledgeCorrectionDto.cs

@@ -25,7 +25,7 @@ namespace Hotline.Share.Dtos.Knowledge
 		/// <summary>
 		/// 知识分类
 		/// </summary>
-		public string KnowledgeTypeText => Knowledge != null && Knowledge.KnowledgeType != null ? Knowledge.KnowledgeType.Name : string.Empty;
+		public List<Kv> KnowledgeType { get; set; }
 
 		/// <summary>
 		/// 纠错内容

+ 1 - 10
src/Hotline.Share/Dtos/Knowledge/KnowledgeDto.cs

@@ -65,11 +65,6 @@ namespace Hotline.Share.Dtos.Knowledge
         /// </summary>
         public string Code { get; set; }
 
-        /// <summary>
-        /// 知识分类名称
-        /// </summary>
-        public string KnowledgeTypeName { get; set; }
-
         /// <summary>
         /// 热点名称
         /// </summary>
@@ -94,9 +89,7 @@ namespace Hotline.Share.Dtos.Knowledge
         /// <summary>
         /// 知识分类
         /// </summary>
-        public string KnowledgeTypeId { get; set; }
-
-        public string KnowledgeTypeText => KnowledgeType != null ? KnowledgeType.SpliceName : "-";
+        public List<Kv> KnowledgeType { get; set; }
 
 		/// <summary>
 		/// 热点
@@ -185,8 +178,6 @@ namespace Hotline.Share.Dtos.Knowledge
 		/// </summary>
 		public OrgDto? SourceOrganize { get; set; }
 
-        public KnowledgeTypeDto KnowledgeType { get; set; }
-
         public KnowledgeCollectDto Collect { get; set; }
 
         /// <summary>

+ 1 - 1
src/Hotline.Share/Dtos/Knowledge/KnowledgeQuestionsDto.cs

@@ -24,7 +24,7 @@ namespace Hotline.Share.Dtos.Knowledge
 		/// <summary>
 		/// 知识分类
 		/// </summary>
-		public string KnowledgeTypeText => Knowledge != null && Knowledge.KnowledgeType != null ? Knowledge.KnowledgeType.Name : string.Empty;
+		public List<Kv> KnowledgeType { get; set; }
 
 		/// <summary>
 		/// 提问内容

+ 55 - 14
src/Hotline.Share/Dtos/Order/QueryOrderDto.cs

@@ -15,73 +15,115 @@ namespace Hotline.Share.Dtos.Order
 {
     public record QueryOrderDto : PagedKeywordRequest
     {
+        /// <summary>
+        /// 省本地编号(×)
+        /// </summary>
+        public string ProvinceNo { get; set; }
+
+        /// <summary>
+        /// 本地编号(×)
+        /// </summary>
+        public string No { get; set; }
 
         /// <summary>
         /// 诉求内容
         /// </summary>
-        public string? Content { get; set; }
+        //public string? Content { get; set; }
 
         /// <summary>
-        /// 受理类型
+        /// 受理类型(√)
         /// </summary>
         public List<string> AcceptTypes { get; set; } = new();
 
         /// <summary>
-        /// 来源渠道
+        /// 来源渠道(√)
         /// </summary>
         public List<string> Channels { get; set; } = new();
 
         /// <summary>
-        /// 转接号码(转接来源)
+        /// 转接号码(转接来源)(×)
         /// </summary>
         public string? TransferPhone { get; set; }
 
         /// <summary>
-        /// 热点分类
+        /// 热点分类(√)
         /// </summary>
         public List<string> HotspotIds { get; set; } = new();
 
         /// <summary>
-        /// 接办部门
+        /// 接办部门(√)
         /// </summary>
         public List<string> OrgCodes { get; set; } = new();
 
         /// <summary>
-        /// 受理坐席名字或工号
+        /// 受理坐席名字或工号(√)
         /// </summary>
         public string? NameOrNo { get; set; }
 
         /// <summary>
-        /// 受理时间(工单创建时间)
+        /// 受理时间(工单创建时间)(√)
         /// </summary>
         public DateTime? CreationTimeStart { get; set; }
         public DateTime? CreationTimeEnd { get; set; }
 
         /// <summary>
-        /// 紧急程度
+        /// 紧急程度(×)
         /// </summary>
         public List<EEmergencyLevel> EmergencyLevels { get; set; } = new();
 
         /// <summary>
-        /// 来电或联系电话
+        /// 来电或联系电话(×)
         /// </summary>
         public string? PhoneNo { get; set; }
 
         /// <summary>
-        /// 推送分类
+        /// 推送分类(×)(单选)
         /// </summary>
         public string? PushTypeCode { get; set; }
 
         /// <summary>
-        /// 过期时间
+        /// 过期时间(×)
         /// </summary>
         public DateTime? ExpiredTimeStart { get; set; }
         public DateTime? ExpiredTimeEnd { get; set; }
 
+
         /// <summary>
-        /// 工单状态
+        /// 工单状态(×)
         /// </summary>
         public List<EOrderStatus> Statuses { get; set; } = new();
+
+        /// <summary>
+        /// 接办人(×)
+        /// </summary>
+        public string? ActualHandlerName { get; set; }
+
+        /// <summary>
+        /// 是否甄别(×)
+        /// </summary>
+        public bool? IsScreen { get; set; }
+
+        /// <summary>
+        /// 当前办理节点(×)(单选)
+        /// </summary>
+        public string CurrentStepCode { get; set; }
+        /// <summary>
+        /// 办结时间
+        /// </summary>
+        public DateTime? ActualHandleTimeStart { get; set; }
+        public DateTime? ActualHandleTimeEnd { get; set; }
+
+        /// <summary>
+        /// 是否超期(×)
+        /// </summary>
+        public bool? IsOverTime { get; set; }
+
+        /// <summary>
+        /// 来电主体(×)(单选)
+        /// </summary>
+        public EIdentityType? IdentityType { get; set; }
+
+
     }
 
 
@@ -92,7 +134,6 @@ namespace Hotline.Share.Dtos.Order
         /// </summary>
         public EPubState? PubState { get; set; }
 
-        
 
         /// <summary>
         /// 工单标题

+ 1 - 1
src/Hotline.Share/Dtos/Quality/QualityDto.cs

@@ -221,7 +221,7 @@ namespace Hotline.Share.Dtos.Quality
 		public int? MaxGrade {  get; set; }
 
 		/// <summary>
-		/// 最小质检分数
+		///// 最小质检分数
 		/// </summary>
 		public int? MinGrade { get; set; }
 	}

+ 18 - 11
src/Hotline/KnowledgeBase/Knowledge.cs

@@ -7,6 +7,7 @@ using SqlSugar;
 using System.ComponentModel;
 using Hotline.Share.Dtos.File;
 using XF.Domain.Repository;
+using Hotline.Share.Dtos;
 
 namespace Hotline.KnowledgeBase;
 
@@ -16,17 +17,23 @@ namespace Hotline.KnowledgeBase;
 [Description("知识库文档")]
 public class Knowledge : WorkflowEntity//   WorkflowEntity  FullStateEntity
 {
-	/// <summary>
-	/// 知识分类
-	/// </summary>
-	[SugarColumn(ColumnDescription = "知识分类")]
-	public string KnowledgeTypeId { get; set; }
+	///// <summary>
+	///// 知识分类
+	///// </summary>
+	//[SugarColumn(ColumnDescription = "知识分类")]
+	//public string KnowledgeTypeId { get; set; }
+
+	///// <summary>
+	///// 知识分类
+	///// </summary>
+	[SugarColumn(ColumnDataType = "json", IsJson = true, IsNullable = true, ColumnDescription = "知识分类")]
+	public List<Kv>? KnowledgeType { get; set; }
 
 	/// <summary>
 	/// 热点
 	/// </summary>
 	[SugarColumn(ColumnDescription = "热点")]
-	public string HotspotId { get; set; }
+	public string? HotspotId { get; set; }
 
 	/// <summary>
 	/// 知识编号
@@ -118,11 +125,11 @@ public class Knowledge : WorkflowEntity//   WorkflowEntity  FullStateEntity
     [SugarColumn(ColumnDataType = "json", ColumnDescription = "关联知识", IsJson = true,IsNullable =true)]
     public List<string> Knowledges { get; set; }
 
-    /// <summary>
-    /// 分类
-    /// </summary>
-    [Navigate(NavigateType.OneToOne, nameof(KnowledgeTypeId))]//一对一 
-    public KnowledgeType KnowledgeType { get; set; }
+    ///// <summary>
+    ///// 分类
+    ///// </summary>
+    //[Navigate(NavigateType.OneToOne, nameof(KnowledgeTypeId))]//一对一 
+    //public KnowledgeType KnowledgeType { get; set; }
 
     /// <summary>
     /// 部门

+ 3 - 2
src/Hotline/KnowledgeBase/KnowledgeTypeDomainService.cs

@@ -1,6 +1,7 @@
 using Hotline.Share.Dtos.Knowledge;
 using Hotline.Share.Enums.KnowledgeBase;
 using MapsterMapper;
+using SqlSugar;
 using XF.Domain.Dependency;
 using XF.Domain.Exceptions;
 using XF.Domain.Repository;
@@ -167,7 +168,7 @@ namespace Hotline.KnowledgeBase
                         await _knowledgeTypeRepository.UpdateAsync(item, cancellationToken);
                         //下架知识
                         //查询当前分类下的知识(查询条件:此分类下/未删除/已上架)
-                        var knowList = _knowledgeRepository.Queryable().Where(p => p.KnowledgeTypeId == item.Id && p.Status == EKnowledgeStatus.OnShelf && p.IsDeleted == false).ToList();
+                        var knowList = _knowledgeRepository.Queryable().Where(p => SqlFunc.JsonListObjectAny(p.KnowledgeType,"Key", item.Id) && p.Status == EKnowledgeStatus.OnShelf && p.IsDeleted == false).ToList();
                         if (knowList != null && knowList.Count > 0)
                         {
                             //修改知识为下架状态
@@ -205,7 +206,7 @@ namespace Hotline.KnowledgeBase
                 throw UserFriendlyException.SameMessage("存在子级分类!");
 
             //查询是否有知识分类
-            var checkKnowledge = await _knowledgeRepository.CountAsync(p => p.KnowledgeTypeId == Id, cancellationToken);//&& p.IsDeleted == false
+            var checkKnowledge = await _knowledgeRepository.CountAsync(p => SqlFunc.JsonListObjectAny(p.KnowledgeType, "Key", Id), cancellationToken);//&& p.IsDeleted == false
             if (checkKnowledge > 0)
                 throw UserFriendlyException.SameMessage("分类存在知识!");
 

+ 1 - 1
src/Hotline/Orders/Order.cs

@@ -310,7 +310,7 @@ namespace Hotline.Orders
         public double HandleDuration { get; set; }
 
         /// <summary>
-        /// 办结工作日时长
+        /// 办结工作日时长(分钟)
         /// </summary>
         public double HandleDurationWorkday { get; set; }