|
@@ -33,6 +33,8 @@ namespace Hotline.Api.Controllers
|
|
|
private readonly IMediator _mediator;
|
|
|
private readonly IWorkflowApplication _workflowApplication;
|
|
|
private readonly IWorkflowDomainService _workflowDomainService;
|
|
|
+ private readonly IKnowledgeWorkFlowRepository _knowledgeWorkFlowRepository;
|
|
|
+
|
|
|
|
|
|
/// <summary>
|
|
|
///
|
|
@@ -46,9 +48,10 @@ namespace Hotline.Api.Controllers
|
|
|
/// <param name="mediator"></param>
|
|
|
/// <param name="workflowApplication"></param>
|
|
|
/// <param name="workflowDomainService"></param>
|
|
|
+ /// <param name="knowledgeWorkFlowRepository"></param>
|
|
|
public KnowledgeController(IKnowledgeRepository knowledgeRepository, IKnowledgeTempRepository knowledgeTempRepository,
|
|
|
ISessionContext sessionContext, IKnowledgeDomainService knowledgeDomainService, IMapper mapper, IKnowApplication knowApplication,
|
|
|
- IMediator mediator, IWorkflowApplication workflowApplication, IWorkflowDomainService workflowDomainService)
|
|
|
+ IMediator mediator, IWorkflowApplication workflowApplication, IWorkflowDomainService workflowDomainService, IKnowledgeWorkFlowRepository knowledgeWorkFlowRepository)
|
|
|
{
|
|
|
_knowledgeRepository = knowledgeRepository;
|
|
|
_knowledgeTempRepository = knowledgeTempRepository;
|
|
@@ -59,6 +62,7 @@ namespace Hotline.Api.Controllers
|
|
|
_mediator = mediator;
|
|
|
_workflowApplication = workflowApplication;
|
|
|
_workflowDomainService = workflowDomainService;
|
|
|
+ _knowledgeWorkFlowRepository = knowledgeWorkFlowRepository;
|
|
|
}
|
|
|
#region 草稿箱
|
|
|
/// <summary>
|
|
@@ -185,15 +189,21 @@ namespace Hotline.Api.Controllers
|
|
|
//处理流程
|
|
|
if (!string.IsNullOrEmpty(knowId))
|
|
|
{
|
|
|
+ KnowledgeWorkFlow workFlow = new()
|
|
|
+ {
|
|
|
+ KnowledgeId = knowId,
|
|
|
+ WorkflowModuleStatus = EKnowledgeApplyType.Add,
|
|
|
+ WorkFlowApplyStatus = EKnowledgeWorkFlowStatus.Auditing
|
|
|
+ };
|
|
|
+ var workId = await _knowledgeWorkFlowRepository.AddAsync(workFlow);
|
|
|
+
|
|
|
//调用流程创建
|
|
|
- var exists = await _workflowDomainService.ExsitsAsync(WorkflowModuleConsts.KnowledgeAdd, knowId, HttpContext.RequestAborted);
|
|
|
- if (exists)
|
|
|
- throw UserFriendlyException.SameMessage($"该知识已发起过{WorkflowModule.Modules[WorkflowModuleConsts.KnowledgeAdd]}流程");
|
|
|
- var workFlowId = await _workflowApplication.StartWorkflowAsync(dto.StartWorkflowDto, knowId, HttpContext.RequestAborted);
|
|
|
+ var workFlowId = await _workflowApplication.StartWorkflowAsync(dto.StartWorkflowDto, workId, HttpContext.RequestAborted);
|
|
|
if (string.IsNullOrEmpty(workFlowId))
|
|
|
{
|
|
|
//创建流程失败
|
|
|
await _knowledgeRepository.RemoveAsync(p => p.Id == knowId, false, HttpContext.RequestAborted);
|
|
|
+ await _knowledgeWorkFlowRepository.RemoveAsync(p => p.Id == workFlow.Id, false, HttpContext.RequestAborted);
|
|
|
}
|
|
|
}
|
|
|
return knowId;
|
|
@@ -212,12 +222,20 @@ namespace Hotline.Api.Controllers
|
|
|
var knowId = await _knowledgeDomainService.KnowledgeUpdate(dto, HttpContext.RequestAborted);
|
|
|
if (!string.IsNullOrEmpty(knowId))
|
|
|
{
|
|
|
+ KnowledgeWorkFlow workFlow = new()
|
|
|
+ {
|
|
|
+ KnowledgeId = knowId,
|
|
|
+ WorkflowModuleStatus = EKnowledgeApplyType.Update,
|
|
|
+ WorkFlowApplyStatus = EKnowledgeWorkFlowStatus.Auditing
|
|
|
+ };
|
|
|
+ var workId = await _knowledgeWorkFlowRepository.AddAsync(workFlow);
|
|
|
//知识更新流程创建
|
|
|
- var workFlowId = await _workflowApplication.StartWorkflowAsync(dto.StartWorkflowDto, knowId, HttpContext.RequestAborted);
|
|
|
+ var workFlowId = await _workflowApplication.StartWorkflowAsync(dto.StartWorkflowDto, workId, HttpContext.RequestAborted);
|
|
|
if (string.IsNullOrEmpty(workFlowId))
|
|
|
{
|
|
|
//创建流程失败
|
|
|
await _knowledgeRepository.RemoveAsync(p => p.Id == knowId, false, HttpContext.RequestAborted);
|
|
|
+ await _knowledgeWorkFlowRepository.RemoveAsync(p => p.Id == workFlow.Id, false, HttpContext.RequestAborted);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -235,20 +253,19 @@ namespace Hotline.Api.Controllers
|
|
|
var know = await _knowledgeRepository.GetAsync(Id, HttpContext.RequestAborted);
|
|
|
if (know != null && know.IsDeleted == false)
|
|
|
{
|
|
|
- //如果审批不通过可以直接删除此条信息
|
|
|
- if (know.Status == EKnowledgeStatus.Failed)
|
|
|
- {
|
|
|
- await _knowledgeRepository.RemoveAsync(know, false, HttpContext.RequestAborted);
|
|
|
- }
|
|
|
- else//审批通过需要走删除流程
|
|
|
+ KnowledgeWorkFlow workFlow = new()
|
|
|
{
|
|
|
- //调用流程创建
|
|
|
- var exists = await _workflowDomainService.ExsitsAsync(WorkflowModuleConsts.KnowledgeDelete, Id, HttpContext.RequestAborted);
|
|
|
- if (exists)
|
|
|
- throw UserFriendlyException.SameMessage($"该知识已发起过{WorkflowModule.Modules[WorkflowModuleConsts.KnowledgeDelete]}流程");
|
|
|
-
|
|
|
- await _workflowApplication.StartWorkflowAsync(workDto, know.Id, HttpContext.RequestAborted);
|
|
|
- }
|
|
|
+ KnowledgeId = know.Id,
|
|
|
+ WorkflowModuleStatus = EKnowledgeApplyType.Delete,
|
|
|
+ WorkFlowApplyStatus = EKnowledgeWorkFlowStatus.Auditing
|
|
|
+ };
|
|
|
+ var workId = await _knowledgeWorkFlowRepository.AddAsync(workFlow);
|
|
|
+ //验证是否已经发起过知识删除流程
|
|
|
+ var exists = _knowledgeWorkFlowRepository.GetAsync(p => p.KnowledgeId == know.Id && p.WorkflowModuleStatus == EKnowledgeApplyType.Delete);//await _workflowDomainService.ExsitsAsync(WorkflowModuleConsts.KnowledgeDelete, Id, HttpContext.RequestAborted);
|
|
|
+ if (exists != null)
|
|
|
+ throw UserFriendlyException.SameMessage($"该知识已发起过{WorkflowModule.Modules[WorkflowModuleConsts.KnowledgeDelete]}流程");
|
|
|
+ //调用流程创建
|
|
|
+ await _workflowApplication.StartWorkflowAsync(workDto, workId, HttpContext.RequestAborted);
|
|
|
}
|
|
|
else
|
|
|
throw UserFriendlyException.SameMessage("知识删除失败");
|
|
@@ -330,7 +347,7 @@ namespace Hotline.Api.Controllers
|
|
|
RefAsync<int> total = 0;
|
|
|
var temp = await _knowledgeRepository
|
|
|
.Queryable(true)
|
|
|
- .Where(p => p.Status == EKnowledgeStatus.OnShelf)
|
|
|
+ .Where(p => p.Status == EKnowledgeStatus.OnShelf && p.IsDeleted == false)
|
|
|
.WhereIF(pagedDto.RetrievalType == null || pagedDto.RetrievalType == EKnowledgeRetrievalType.All, d => d.Title.Contains(pagedDto.Keyword) || d.Content.Contains(pagedDto.Keyword) || d.Additions.Contains(pagedDto.Keyword))
|
|
|
.WhereIF(pagedDto.RetrievalType == EKnowledgeRetrievalType.Title, d => d.Title.Contains(pagedDto.Keyword))
|
|
|
.WhereIF(pagedDto.RetrievalType == EKnowledgeRetrievalType.Content, d => d.Content.Contains(pagedDto.Keyword))
|
|
@@ -354,108 +371,64 @@ namespace Hotline.Api.Controllers
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
- #region 审核管理----查询业务需要等工作流统一提供查询方式
|
|
|
+ #region 我的知识删除列表
|
|
|
/// <summary>
|
|
|
- /// 审核管理-全部
|
|
|
+ /// 我的知识删除列表
|
|
|
/// </summary>
|
|
|
/// <param name="pagedDto"></param>
|
|
|
/// <returns></returns>
|
|
|
- [Permission(EPermission.KnowledgeApprovedAllList)]
|
|
|
- [HttpGet("approvedalllist")]
|
|
|
- public async Task<PagedDto<KnowledgeApprovalDataDto>> ApprovedAllList([FromBody] KnowledgeApprovalPagedListDto pagedDto)
|
|
|
+ [HttpGet("deletelist")]
|
|
|
+ public async Task<PagedDto<KnowledgeDataDto>> GetDeleteApplyList([FromBody] KnowledgeDeletelPagedListDto pagedDto)
|
|
|
{
|
|
|
- var (total, items) = await _knowledgeRepository
|
|
|
- .Queryable(true)
|
|
|
- .Includes(it => it.User)
|
|
|
- .Includes(it => it.SystemOrganize)
|
|
|
- .Includes(it => it.KnowledgeType)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateUserName), d => d.User.Name.Contains(pagedDto.CreateUserName!))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateOrgName), d => d.SystemOrganize.OrgName.Contains(pagedDto.CreateOrgName!))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(pagedDto.Title), d => d.Title.Contains(pagedDto.Title!))
|
|
|
-
|
|
|
- .OrderByDescending(p => p.CreationTime)
|
|
|
- .ToPagedListAsync(pagedDto.PageIndex, pagedDto.PageSize, HttpContext.RequestAborted);
|
|
|
+ var (total, items) = await _knowledgeWorkFlowRepository
|
|
|
+ .Queryable(true)
|
|
|
+ .Includes(it => it.Knowledge)
|
|
|
+ .Includes(it => it.Knowledge.User)
|
|
|
+ .Includes(it => it.Knowledge.SystemOrganize)
|
|
|
+ .Includes(it => it.Knowledge.KnowledgeType)
|
|
|
+ .Includes(it => it.Workflow)
|
|
|
+ .WhereIF(pagedDto.EKnowledgeWorkFlowStatus.HasValue, d => d.WorkFlowApplyStatus == pagedDto.EKnowledgeWorkFlowStatus)
|
|
|
+ .WhereIF(pagedDto.StartApplyTime.HasValue, d => d.CreationTime >= pagedDto.StartApplyTime)
|
|
|
+ .WhereIF(pagedDto.EndApplyTime.HasValue, d => d.CreationTime <= pagedDto.EndApplyTime)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(pagedDto.Keyword), d => d.Knowledge.User.Name.Contains(pagedDto.Keyword!)
|
|
|
+ || d.Knowledge.SystemOrganize.OrgName.Contains(pagedDto.Keyword!)
|
|
|
+ || d.Knowledge.Title.Contains(pagedDto.Keyword!))
|
|
|
+
|
|
|
+ .OrderByDescending(p => p.CreationTime)
|
|
|
+ .ToPagedListAsync(pagedDto.PageIndex, pagedDto.PageSize, HttpContext.RequestAborted);
|
|
|
|
|
|
- return new PagedDto<KnowledgeApprovalDataDto>(total, _mapper.Map<IReadOnlyList<KnowledgeApprovalDataDto>>(items));
|
|
|
+ return new PagedDto<KnowledgeDataDto>(total, _mapper.Map<IReadOnlyList<KnowledgeDataDto>>(items));
|
|
|
}
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 待审核
|
|
|
- /// </summary>
|
|
|
- /// <param name="pagedDto"></param>
|
|
|
- /// <returns></returns>
|
|
|
- [Permission(EPermission.KnowledgeToBeReviewed)]
|
|
|
- [HttpGet("tobereviewed")]
|
|
|
- public async Task<PagedDto<KnowledgeApprovalDataDto>> ToBeReviewed([FromBody] KnowledgeApprovalPagedListDto pagedDto)
|
|
|
- {
|
|
|
- //审核类型字段加在哪里
|
|
|
- //我审核通过的和我审核不通过的怎么查询
|
|
|
- //
|
|
|
- //还需要增加审核类型查询条件
|
|
|
- var (total, items) = await _knowledgeRepository
|
|
|
- .Queryable(true)
|
|
|
- .Includes(it => it.User)
|
|
|
- .Includes(it => it.SystemOrganize)
|
|
|
- .Includes(it => it.KnowledgeType)
|
|
|
- .Where(p => p.Status == EKnowledgeStatus.Auditing && p.AssignUserIds.Contains(_sessionContext.UserId!))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateUserName), d => d.User.Name.Contains(pagedDto.CreateUserName!))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateOrgName), d => d.SystemOrganize.OrgName.Contains(pagedDto.CreateOrgName!))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(pagedDto.Title), d => d.Title.Contains(pagedDto.Title!))
|
|
|
-
|
|
|
- .OrderByDescending(p => p.CreationTime)
|
|
|
- .ToPagedListAsync(pagedDto.PageIndex, pagedDto.PageSize, HttpContext.RequestAborted);
|
|
|
-
|
|
|
- return new PagedDto<KnowledgeApprovalDataDto>(total, _mapper.Map<IReadOnlyList<KnowledgeApprovalDataDto>>(items));
|
|
|
- }
|
|
|
+ #endregion
|
|
|
|
|
|
+ #region 审核管理
|
|
|
/// <summary>
|
|
|
- /// 审核通过
|
|
|
+ /// 审核管理
|
|
|
/// </summary>
|
|
|
/// <param name="pagedDto"></param>
|
|
|
/// <returns></returns>
|
|
|
- [Permission(EPermission.KnowledgeApprovedList)]
|
|
|
+ [Permission(EPermission.KnowledgeApprovedAllList)]
|
|
|
[HttpGet("approvedlist")]
|
|
|
public async Task<PagedDto<KnowledgeApprovalDataDto>> ApprovedList([FromBody] KnowledgeApprovalPagedListDto pagedDto)
|
|
|
{
|
|
|
- //自己审批了哪些数据,通过什么方式去查询这个数据是属于自己的
|
|
|
-
|
|
|
- var (total, items) = await _knowledgeRepository
|
|
|
- .Queryable(true)
|
|
|
- .Includes(it => it.User)
|
|
|
- .Includes(it => it.SystemOrganize)
|
|
|
- .Includes(it => it.KnowledgeType)
|
|
|
- .Where(p => p.Status == EKnowledgeStatus.OnShelf || p.Status == EKnowledgeStatus.OffShelf)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateUserName), d => d.User.Name.Contains(pagedDto.CreateUserName!))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateOrgName), d => d.SystemOrganize.OrgName.Contains(pagedDto.CreateOrgName!))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(pagedDto.Title), d => d.Title.Contains(pagedDto.Title!))
|
|
|
-
|
|
|
- .OrderByDescending(p => p.CreationTime)
|
|
|
- .ToPagedListAsync(pagedDto.PageIndex, pagedDto.PageSize, HttpContext.RequestAborted);
|
|
|
+ var (total, items) = await _knowledgeWorkFlowRepository
|
|
|
+ .Queryable(true)
|
|
|
+ .Includes(it => it.Knowledge)
|
|
|
+ .Includes(it => it.Knowledge.User)
|
|
|
+ .Includes(it => it.Knowledge.SystemOrganize)
|
|
|
+ .Includes(it => it.Knowledge.KnowledgeType)
|
|
|
+ .Includes(it=>it.Workflow)
|
|
|
+
|
|
|
+ .WhereIF(pagedDto.EKnowledgeApplyType.HasValue, d => d.WorkflowModuleStatus== pagedDto.EKnowledgeApplyType)
|
|
|
+ .WhereIF(pagedDto.EKnowledgeWorkFlowStatus.HasValue, d=>d.WorkFlowApplyStatus == pagedDto.EKnowledgeWorkFlowStatus)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(pagedDto.Keyword), d => d.Knowledge.User.Name.Contains(pagedDto.Keyword!)
|
|
|
+ || d.Knowledge.SystemOrganize.OrgName.Contains(pagedDto.Keyword!)
|
|
|
+ || d.Knowledge.Title.Contains(pagedDto.Keyword!))
|
|
|
+
|
|
|
+ .OrderByDescending(p => p.CreationTime)
|
|
|
+ .ToPagedListAsync(pagedDto.PageIndex, pagedDto.PageSize, HttpContext.RequestAborted);
|
|
|
|
|
|
- return new PagedDto<KnowledgeApprovalDataDto>(total, _mapper.Map<IReadOnlyList<KnowledgeApprovalDataDto>>(items));
|
|
|
- }
|
|
|
-
|
|
|
- /// <summary>
|
|
|
- /// 审核不通过
|
|
|
- /// </summary>
|
|
|
- /// <param name="pagedDto"></param>
|
|
|
- /// <returns></returns>
|
|
|
- [Permission(EPermission.KnowledgeApprovedFailedList)]
|
|
|
- [HttpGet("approvedfailedlist")]
|
|
|
- public async Task<PagedDto<KnowledgeApprovalDataDto>> ApprovedFailedList([FromBody] KnowledgeApprovalPagedListDto pagedDto)
|
|
|
- {
|
|
|
- var (total, items) = await _knowledgeRepository
|
|
|
- .Queryable(true)
|
|
|
- .Includes(it => it.User)
|
|
|
- .Includes(it => it.SystemOrganize)
|
|
|
- .Includes(it => it.KnowledgeType)
|
|
|
- .Where(p => p.Status == EKnowledgeStatus.Failed)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateUserName), d => d.User.Name.Contains(pagedDto.CreateUserName!))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateOrgName), d => d.SystemOrganize.OrgName.Contains(pagedDto.CreateOrgName!))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(pagedDto.Title), d => d.Title.Contains(pagedDto.Title!))
|
|
|
-
|
|
|
- .OrderByDescending(p => p.CreationTime)
|
|
|
- .ToPagedListAsync(pagedDto.PageIndex, pagedDto.PageSize, HttpContext.RequestAborted);
|
|
|
|
|
|
return new PagedDto<KnowledgeApprovalDataDto>(total, _mapper.Map<IReadOnlyList<KnowledgeApprovalDataDto>>(items));
|
|
|
}
|