|
|
|
@ -59,10 +59,10 @@ public class KnowledgeManageServiceImpl implements KnowledgeManageService {
|
|
|
|
|
String submitDeptId,
|
|
|
|
|
LocalDate publishDateBegin,
|
|
|
|
|
LocalDate publishDateEnd, LocalDate submitDateBegin,
|
|
|
|
|
LocalDate submitDateEnd,Integer pageNum, Integer pageSize) {
|
|
|
|
|
LocalDate submitDateEnd, Integer pageNum, Integer pageSize) {
|
|
|
|
|
String userId = UserUtil.getUser().getId();
|
|
|
|
|
// 除全部可以看所有外,其他tab都是看到自己报送的知识的状态(或参与过的)
|
|
|
|
|
IPage<KnowledgePageResVO> knowledgeIPage = knowledgeService.queryKnowledgePage(status, title, publishDeptId, baseId, submitDeptId, publishDateBegin, publishDateEnd,submitDateBegin,submitDateEnd, userId, pageNum, pageSize);
|
|
|
|
|
IPage<KnowledgePageResVO> knowledgeIPage = knowledgeService.queryKnowledgePage(status, title, publishDeptId, baseId, submitDeptId, publishDateBegin, publishDateEnd, submitDateBegin, submitDateEnd, userId, pageNum, pageSize);
|
|
|
|
|
List<KnowledgePageResVO> records = knowledgeIPage.getRecords();
|
|
|
|
|
if (CollUtil.isEmpty(records)) {
|
|
|
|
|
return knowledgeIPage;
|
|
|
|
@ -83,7 +83,7 @@ public class KnowledgeManageServiceImpl implements KnowledgeManageService {
|
|
|
|
|
return node;
|
|
|
|
|
}).toList();
|
|
|
|
|
// 进行只是的标记操作
|
|
|
|
|
markKnowledgeOperationFlag(list, status);
|
|
|
|
|
markKnowledgeOperationFlag(list);
|
|
|
|
|
knowledgeIPage.setRecords(list);
|
|
|
|
|
return knowledgeIPage;
|
|
|
|
|
}
|
|
|
|
@ -91,7 +91,7 @@ public class KnowledgeManageServiceImpl implements KnowledgeManageService {
|
|
|
|
|
/**
|
|
|
|
|
* 标记知识的操作状态
|
|
|
|
|
*/
|
|
|
|
|
private void markKnowledgeOperationFlag(List<KnowledgePageResVO> list, Integer status) {
|
|
|
|
|
private void markKnowledgeOperationFlag(List<KnowledgePageResVO> list) {
|
|
|
|
|
// 获取用户所有子库的操作权限
|
|
|
|
|
UserInfo user = UserUtil.getUser();
|
|
|
|
|
List<UserBaseOperateAuthDTO> baseOperateAuthDTOList = systemBaseService.queryUserBaseOperateAuth(user.getId());
|
|
|
|
@ -100,16 +100,12 @@ public class KnowledgeManageServiceImpl implements KnowledgeManageService {
|
|
|
|
|
// 首先需要看用户对这个子库的权限是什么,如果用户有该子库的对应的操作权限,则允许进行对应操作
|
|
|
|
|
for (KnowledgePageResVO knowledgePageResVO : list) {
|
|
|
|
|
String baseId = knowledgePageResVO.getBaseId();
|
|
|
|
|
if (ObjectUtils.isEmpty(status)) {
|
|
|
|
|
// 如果为空,查询是否具有撤回权限
|
|
|
|
|
if (baseOperateAuthMap.containsKey(baseId) && baseOperateAuthMap.get(baseId).contains(FlowTypeEnum.RECALL.getFlowType())) {
|
|
|
|
|
knowledgePageResVO.setRecallFlag(1);
|
|
|
|
|
}
|
|
|
|
|
} else if (StatusEnum.DRAFT.getStatus().equals(status)) {
|
|
|
|
|
|
|
|
|
|
if (StatusEnum.DRAFT.getStatus().equals(knowledgePageResVO.getStatus())) {
|
|
|
|
|
// 如果是草稿,就只允许编辑和删除
|
|
|
|
|
knowledgePageResVO.setModifyFlag(1);
|
|
|
|
|
knowledgePageResVO.setDeleteFlag(1);
|
|
|
|
|
} else if (StatusEnum.PASS.getStatus().equals(status)) {
|
|
|
|
|
} else if (StatusEnum.PASS.getStatus().equals(knowledgePageResVO.getStatus())) {
|
|
|
|
|
// 如果是已发布,就只允许撤回.需要有该子库权限
|
|
|
|
|
if (baseOperateAuthMap.containsKey(baseId) && baseOperateAuthMap.get(baseId).contains(FlowTypeEnum.RECALL.getFlowType())) {
|
|
|
|
|
knowledgePageResVO.setRecallFlag(1);
|
|
|
|
@ -119,15 +115,24 @@ public class KnowledgeManageServiceImpl implements KnowledgeManageService {
|
|
|
|
|
knowledgePageResVO.setDeleteFlag(1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} else if (StatusEnum.REJECT.getStatus().equals(status)) {
|
|
|
|
|
// 如果是驳回,就可以支持编辑和删除,但是需要校验是否需要有权限
|
|
|
|
|
} else if (StatusEnum.RECALL_APPROVAL_SUBMIT.getStatus().equals(knowledgePageResVO.getStatus())) {
|
|
|
|
|
// 如果是新增驳回,就可以支持编辑和删除,但是需要校验是否需要有权限
|
|
|
|
|
if (baseOperateAuthMap.containsKey(baseId) && baseOperateAuthMap.get(baseId).contains(FlowTypeEnum.SUBMIT.getFlowType())) {
|
|
|
|
|
knowledgePageResVO.setModifyFlag(1);
|
|
|
|
|
}
|
|
|
|
|
if (baseOperateAuthMap.containsKey(baseId) && baseOperateAuthMap.get(baseId).contains(FlowTypeEnum.DELETE.getFlowType())) {
|
|
|
|
|
knowledgePageResVO.setDeleteFlag(1);
|
|
|
|
|
}
|
|
|
|
|
} else if (StatusEnum.INVALID.getStatus().equals(status)) {
|
|
|
|
|
} else if (StatusEnum.RECALL_APPROVAL_DELETE.getStatus().equals(knowledgePageResVO.getStatus())
|
|
|
|
|
|| StatusEnum.RECALL_APPROVAL_RECALL.getStatus().equals(knowledgePageResVO.getStatus())) {
|
|
|
|
|
// 如果是删除驳回和撤回驳回,就可以继续支持撤回和删除流程,但是需要校验是否需要有权限
|
|
|
|
|
if (baseOperateAuthMap.containsKey(baseId) && baseOperateAuthMap.get(baseId).contains(FlowTypeEnum.SUBMIT.getFlowType())) {
|
|
|
|
|
knowledgePageResVO.setRecallFlag(1);
|
|
|
|
|
}
|
|
|
|
|
if (baseOperateAuthMap.containsKey(baseId) && baseOperateAuthMap.get(baseId).contains(FlowTypeEnum.DELETE.getFlowType())) {
|
|
|
|
|
knowledgePageResVO.setDeleteFlag(1);
|
|
|
|
|
}
|
|
|
|
|
} else if (StatusEnum.INVALID.getStatus().equals(knowledgePageResVO.getStatus())) {
|
|
|
|
|
// 如果是已失效,支持编辑撤回删除,但是需要校验是否有对应的权限
|
|
|
|
|
if (baseOperateAuthMap.containsKey(baseId) && baseOperateAuthMap.get(baseId).contains(FlowTypeEnum.SUBMIT.getFlowType())) {
|
|
|
|
|
knowledgePageResVO.setModifyFlag(1);
|
|
|
|
@ -223,7 +228,7 @@ public class KnowledgeManageServiceImpl implements KnowledgeManageService {
|
|
|
|
|
|
|
|
|
|
Knowledge knowledge = knowledgeService.getOptById(reqVO.getKnowledgeId()).orElseThrow(() -> new BusinessException("未找到知识"));
|
|
|
|
|
// 首先校验状态,草稿/已撤回/已失效/驳回,才能修改(通过的,要先撤回才能修改)
|
|
|
|
|
Set<Integer> canModifyStatusSet = Set.of(StatusEnum.DRAFT.getStatus(), StatusEnum.RECALL.getStatus(), StatusEnum.INVALID.getStatus(), StatusEnum.REJECT.getStatus());
|
|
|
|
|
Set<Integer> canModifyStatusSet = Set.of(StatusEnum.DRAFT.getStatus(), StatusEnum.RECALL.getStatus(), StatusEnum.INVALID.getStatus(), StatusEnum.RECALL_APPROVAL_SUBMIT.getStatus());
|
|
|
|
|
if (!canModifyStatusSet.contains(knowledge.getStatus())) {
|
|
|
|
|
throw new BusinessException("当前状态不支持修改");
|
|
|
|
|
}
|
|
|
|
@ -360,7 +365,7 @@ public class KnowledgeManageServiceImpl implements KnowledgeManageService {
|
|
|
|
|
// 删除是逻辑删除,如果当前状态是草稿,且没有走过审批流程,则可以直接删除
|
|
|
|
|
Knowledge knowledge = knowledgeService.getOptById(knowledgeId).orElseThrow(() -> new BusinessException("未找到知识"));
|
|
|
|
|
// 如果非草稿,则校验是否是通过/驳回/已撤回/已失效状态,如果是,则需要走审批流程进行删除
|
|
|
|
|
Set<Integer> canDeleteStatusSet = Set.of(StatusEnum.PASS.getStatus(), StatusEnum.REJECT.getStatus(), StatusEnum.INVALID.getStatus());
|
|
|
|
|
Set<Integer> canDeleteStatusSet = Set.of(StatusEnum.PASS.getStatus(), StatusEnum.RECALL_APPROVAL_RECALL.getStatus(), StatusEnum.RECALL_APPROVAL_DELETE.getStatus(), StatusEnum.INVALID.getStatus());
|
|
|
|
|
if (Objects.equals(StatusEnum.DRAFT.getStatus(), knowledge.getStatus())) {
|
|
|
|
|
// 需要判断之前是否走过审批流程
|
|
|
|
|
if (flowRecordService.lambdaQuery().eq(KnowledgeFlowRecord::getKnowledgeId, knowledgeId).count() == 0) {
|
|
|
|
|