Преглед изворни кода

325 新增知识引用和知识归属等功能

田爽 пре 1 месец
родитељ
комит
75328a51b5

+ 1 - 0
src/Hotline.Application/Orders/OrderApplication.cs

@@ -3463,6 +3463,7 @@ public class OrderApplication : IOrderApplication, IScopeDependency
             {
                 var workflowStep = await _workflowStepRepository.Queryable().Where(x => x.Id == order.Workflow.TopCountersignStepId)
                     .FirstAsync(cancellationToken);
+
                 if (workflowStep != null)
                 {
                     var dtoEnd = new EndCountersignDto() { CountersignId = workflowStep.StartCountersignId };

+ 14 - 4
src/Hotline.Share/Dtos/Knowledge/KnowledgeDto.cs

@@ -57,10 +57,15 @@ namespace Hotline.Share.Dtos.Knowledge
         /// </summary>
         public List<KnowledgeRelationTypeDto> KnowledgeType { get; set; }
 
-        /// <summary>
-        /// 到期时间
-        /// </summary>
-        public DateTime? ExpiredTime { get; set; }
+		/// <summary>
+		/// 知识归属
+		/// </summary>
+		public List<string> KnowledgeOrg { get; set; }
+
+		/// <summary>
+		/// 到期时间
+		/// </summary>
+		public DateTime? ExpiredTime { get; set; }
 
         /// <summary>
         /// 是否公开
@@ -141,6 +146,11 @@ namespace Hotline.Share.Dtos.Knowledge
 		public string KnowledgeTypeSpliceName { get; set; }
 	}
 
+	public record KnowledgeRelationOrgDto
+	{
+		public string OrgId { get; set; }
+	}
+
 	/// <summary>
 	/// 基础
 	/// </summary>

+ 12 - 6
src/Hotline/KnowledgeBase/Knowledge.cs

@@ -131,16 +131,22 @@ public class Knowledge : WorkflowEntity//   WorkflowEntity  FullStateEntity
     [Navigate(NavigateType.OneToMany, nameof(KnowledgeRelationType.KnowledgeId))]
     public List<KnowledgeRelationType> KnowledgeType { get; set; }
 
-    /// <summary>
-    /// 知识库分类
-    /// </summary>
-    [Navigate(typeof(KnowledgeRelationType), nameof(KnowledgeRelationType.KnowledgeId), nameof(KnowledgeRelationType.KnowledgeTypeId))]
+	/// <summary>
+	/// 知识库分类
+	/// </summary>
+	[Navigate(typeof(KnowledgeRelationType), nameof(KnowledgeRelationType.KnowledgeId), nameof(KnowledgeRelationType.KnowledgeTypeId))]
     public List<KnowledgeType> KnowledgeTypes { get; set; }
 
     /// <summary>
-    /// 部门
+    /// 知识库归属
     /// </summary>
-    [Navigate(NavigateType.OneToOne, nameof(CreatorOrgId))]//一对一 
+    [Navigate(typeof(KnowledgeRelationOrg), nameof(KnowledgeRelationOrg.KnowledgeId), nameof(KnowledgeRelationOrg.OrgId))]
+	public List<SystemOrganize> KnowledgeOrganizes { get; set; }
+
+	/// <summary>
+	/// 部门
+	/// </summary>
+	[Navigate(NavigateType.OneToOne, nameof(CreatorOrgId))]//一对一 
     public SystemOrganize SystemOrganize { get; set; }
 
     /// <summary>

+ 41 - 17
src/Hotline/KnowledgeBase/KnowledgeDomainService.cs

@@ -423,9 +423,14 @@ namespace Hotline.KnowledgeBase
                 var knTypes = _mapper.Map<List<KnowledgeType>>(dto.KnowledgeType);
                 kn.KnowledgeTypes = knTypes;
             }
+            if (dto.KnowledgeOrg.Any())
+            {
+                kn.KnowledgeOrganizes = dto.KnowledgeOrg.Select(x => new SystemOrganize { Id = x }).ToList();
+			}
 
             await _knowledgeRepository.AddNav(kn)
                 .Include(d => d.KnowledgeTypes)
+                .Include(d => d.KnowledgeOrganizes)
                 .ExecuteCommandAsync();
 
             return kn;
@@ -485,23 +490,42 @@ namespace Hotline.KnowledgeBase
                 knowledge.CreatorOrgLevel = _sessionContext.OrgLevel;
             }
 
-            if (dto.KnowledgeType.Any())
-            {
-                knowledge.KnowledgeTypes = dto.KnowledgeType.Select(d => new KnowledgeType
-                {
-                    Id = d.KnowledgeTypeId,
-                }).ToList();
-                await _knowledgeRepository.UpdateNav(knowledge)
-                    .Include(d => d.KnowledgeTypes, new UpdateNavOptions
-                    {
-                        ManyToManyIsUpdateA = true
-                    })
-                    .ExecuteCommandAsync();
-            }
-            else
-            {
-                await _knowledgeRepository.UpdateAsync(knowledge, cancellation);
-            }
+            var kobool = dto.KnowledgeOrg.Any();
+            var ktbool = dto.KnowledgeType.Any();
+		
+			if (ktbool)
+			{
+				knowledge.KnowledgeTypes = dto.KnowledgeType.Select(x => new KnowledgeType { Id = x.KnowledgeTypeId }).ToList();
+			}
+			if (kobool)
+			{
+				knowledge.KnowledgeOrganizes = dto.KnowledgeOrg.Select(x => new SystemOrganize { Id = x }).ToList();
+			}
+
+			await _knowledgeRepository.UpdateNav(knowledge)
+				.Include(d => d.KnowledgeTypes, new UpdateNavOptions { ManyToManyIsUpdateA = ktbool })
+				.Include(d => d.KnowledgeOrganizes, new UpdateNavOptions{ ManyToManyIsUpdateA = kobool })
+				.ExecuteCommandAsync();
+            //if (dto.KnowledgeType.Any())
+            //         {
+            //             knowledge.KnowledgeTypes = dto.KnowledgeType.Select(d => new KnowledgeType
+            //             {
+            //                 Id = d.KnowledgeTypeId,
+            //             }).ToList();
+            //             await _knowledgeRepository.UpdateNav(knowledge)
+            //                 .Include(d => d.KnowledgeTypes, new UpdateNavOptions
+            //                 {
+            //                     ManyToManyIsUpdateA = true
+            //                 })
+            //                 .ExecuteCommandAsync();
+            //         }
+            //         else
+            //         {
+            //             await _knowledgeRepository.UpdateAsync(knowledge, cancellation);
+            //         }
+
+
+
 
             return knowledge;
         }

+ 30 - 0
src/Hotline/KnowledgeBase/KnowledgeRelationOrg.cs

@@ -0,0 +1,30 @@
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using XF.Domain.Entities;
+
+namespace Hotline.KnowledgeBase
+{
+	/// <summary>
+	/// 知识归属部门
+	/// </summary>
+	[Description("知识归属部门")]
+	public class KnowledgeRelationOrg : ITable, IEntity
+	{
+		/// <summary>
+		/// 知识库ID
+		/// </summary>
+		[SugarColumn(IsPrimaryKey = true)]
+		public string KnowledgeId { get; set; }
+
+		/// <summary>
+		/// 部门ID
+		/// </summary>
+		[SugarColumn(IsPrimaryKey = true)]
+		public string OrgId { get; set; }
+	}
+}

+ 0 - 2
src/Hotline/KnowledgeBase/KnowledgeRelationType.cs

@@ -14,8 +14,6 @@ namespace Hotline.KnowledgeBase
 	/// 知识库关联类型
 	/// </summary>
 	[Description("知识库关联类型")]
-	//[SugarIndex("index_knowledgeRelationType_knowledgeId", nameof(KnowledgeRelationType.KnowledgeId), OrderByType.Desc)]
-	//[SugarIndex("index_knowledgeRelationType_typeId", nameof(KnowledgeRelationType.KnowledgeTypeId), OrderByType.Desc)]
 	[SugarIndex("index_knowledgeRelationType_spliceName", nameof(KnowledgeRelationType.KnowledgeTypeSpliceName), OrderByType.Desc)]
 	public class KnowledgeRelationType : ITable, IEntity
     {