增加驳回的一些状态

release_1.0.0
liu 8 months ago
parent 026ced7ca7
commit 9db1cbe498

@ -1,21 +1,21 @@
package com.supervision.knowsub.enums;
/**
* 1稿 2 3 4 5 6 10() 11() 12()
*
*
* 1稿 2 4 5 6 10() 11() 12() 15() 16() 17()
*/
public enum StatusEnum {
DRAFT(1, "草稿"),
PASS(2, "通过"),
REJECT(3, "驳回"),
RECALL(4, "已撤回"),
INVALID(5, "已失效"),
DELETE(6, "已删除"),
WAIT_APPROVAL(10, "待审批(新增)"),
WAIT_APPROVAL_DELETE(11, "待审批(删除)"),
WAIT_APPROVAL_RECALL(12, "待审批(撤回)");
WAIT_APPROVAL_RECALL(12, "待审批(撤回)"),
RECALL_APPROVAL_SUBMIT(15, "驳回(新增)"),
RECALL_APPROVAL_DELETE(16, "驳回(删除)"),
RECALL_APPROVAL_RECALL(17, "驳回(撤回)");
private final Integer status;

@ -1,5 +1,6 @@
package com.supervision.knowsub.service.impl;
import cn.hutool.core.util.NumberUtil;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.supervision.knowsub.domain.UserInfo;
import com.supervision.knowsub.entity.vo.homepage.MyKnowledgeStatisticsResVO;
@ -28,8 +29,6 @@ public class HomepageServiceImpl implements HomepageService {
private final KnowledgeFlowTodoService knowledgeFlowTodoService;
private final SystemFlowRuleService systemFlowRuleService;
private final KnowledgeFlowRecordService knowledgeFlowRecordService;
private final KnowledgeSubmitRecordService knowledgeSubmitRecordService;
@ -90,7 +89,11 @@ public class HomepageServiceImpl implements HomepageService {
resVO.setKnowledgeCount(passTotalCount + userSelfCount);
// 待审批:我提交的且当前处于“待审批”状态的知识数量。
resVO.setWaitProcessCount(knowledgeSubmitRecordService.queryKnowledgeSubmitTodoCount(user.getId()));
resVO.setRejectProcessCount(knowledgeSubmitRecordService.queryKnowledgeSubmitStatusCount(user.getId(), StatusEnum.REJECT.getStatus()));
// 驳回的数量
Long recallSubmitCount = knowledgeSubmitRecordService.queryKnowledgeSubmitStatusCount(user.getId(), StatusEnum.RECALL_APPROVAL_SUBMIT.getStatus());
Long recallDeleteCount = knowledgeSubmitRecordService.queryKnowledgeSubmitStatusCount(user.getId(), StatusEnum.RECALL_APPROVAL_DELETE.getStatus());
Long recallRecallCount = knowledgeSubmitRecordService.queryKnowledgeSubmitStatusCount(user.getId(), StatusEnum.RECALL_APPROVAL_RECALL.getStatus());
resVO.setRejectProcessCount(NumberUtil.add(recallSubmitCount, recallDeleteCount, recallRecallCount).longValue());
resVO.setInvalidProcessCount(knowledgeSubmitRecordService.queryKnowledgeSubmitStatusCount(user.getId(), StatusEnum.INVALID.getStatus()));
resVO.setPassProcessCount(knowledgeSubmitRecordService.queryKnowledgeSubmitStatusCount(user.getId(), StatusEnum.PASS.getStatus()));
}

@ -234,11 +234,8 @@ public class KnowledgeFlowServiceImpl implements KnowledgeFlowService {
knowledgeService.lambdaUpdate().set(Knowledge::getStatus, StatusEnum.PASS.getStatus()).set(Knowledge::getDraftBelongUserId, null)
.eq(Knowledge::getId, reqVO.getKnowledgeId()).update();
} else if (flowType.equals(FlowTypeEnum.RECALL.getFlowType())) {
// 如果是撤回,就置为草稿
knowledgeService.lambdaUpdate().set(Knowledge::getStatus, StatusEnum.DRAFT.getStatus()).set(Knowledge::getDraftBelongUserId, null)
.eq(Knowledge::getId, reqVO.getKnowledgeId()).update();
// 并且草稿所属人应该是提交流程的人
knowledgeService.lambdaUpdate().set(Knowledge::getDraftBelongUserId, submitFlowRecord.getSubmitUserId())
// 如果是撤回,就置为草稿,并且草稿所属人应该是提交流程的人
knowledgeService.lambdaUpdate().set(Knowledge::getStatus, StatusEnum.DRAFT.getStatus()).set(Knowledge::getDraftBelongUserId, submitFlowRecord.getSubmitUserId())
.eq(Knowledge::getId, reqVO.getKnowledgeId()).update();
} else if (flowType.equals(FlowTypeEnum.DELETE.getFlowType())) {
knowledgeService.lambdaUpdate().set(Knowledge::getStatus, StatusEnum.DELETE.getStatus()).set(Knowledge::getDraftBelongUserId, null)
@ -299,9 +296,22 @@ public class KnowledgeFlowServiceImpl implements KnowledgeFlowService {
.submitUserId(submitFlowRecord.getSubmitUserId())
.submitDeptId(submitFlowRecord.getSubmitDeptId()).build();
knowledgeFlowRecordService.save(newKnowledgeFlowRecord);
// 将知识的状态进行修改
knowledgeService.lambdaUpdate().set(Knowledge::getStatus, StatusEnum.REJECT.getStatus())
.eq(Knowledge::getId, reqVO.getKnowledgeId()).update();
// 驳回,需要分辨驳回的状态是什么
if (knowledgeFlowTodo.getFlowType().equals(FlowTypeEnum.SUBMIT.getFlowType())) {
// 如果是知识报送,就置为驳回(审批)
knowledgeService.lambdaUpdate().set(Knowledge::getStatus, StatusEnum.RECALL_APPROVAL_SUBMIT.getStatus()).set(Knowledge::getDraftBelongUserId, knowledgeFlowTodo.getSubmitUserId())
.eq(Knowledge::getId, reqVO.getKnowledgeId()).update();
} else if (knowledgeFlowTodo.getFlowType().equals(FlowTypeEnum.RECALL.getFlowType())) {
// 如果是撤回,就置为驳回(撤回)
knowledgeService.lambdaUpdate().set(Knowledge::getStatus, StatusEnum.RECALL_APPROVAL_RECALL.getStatus()).set(Knowledge::getDraftBelongUserId, submitFlowRecord.getSubmitUserId())
.eq(Knowledge::getId, reqVO.getKnowledgeId()).update();
} else if (knowledgeFlowTodo.getFlowType().equals(FlowTypeEnum.DELETE.getFlowType())) {
// 如果是删除,就置为驳回(删除)
knowledgeService.lambdaUpdate().set(Knowledge::getStatus, StatusEnum.RECALL_APPROVAL_DELETE.getStatus()).set(Knowledge::getDraftBelongUserId, submitFlowRecord.getSubmitUserId())
.eq(Knowledge::getId, reqVO.getKnowledgeId()).update();
} else {
throw new BusinessException("未知的流程类型");
}
} else {
throw new BusinessException("暂不支持的审批类型");
}

@ -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) {

@ -46,13 +46,17 @@
where 1 = 1
<choose>
<when test="status == null">
-- 如果为空,是查全部通过的,不分人
and ( status = 2)
-- 如果为空,是查全部通过的,不分人(驳回的删除和撤回,其实也属于正常上线的)
and ( status = 2 or status = 16 or status = 17 )
</when>
<when test="status == 1">
-- 如果是1,只查自己的草稿
and ( draft_belong_user_id = #{userId} and status = 1)
</when>
<when test="status == 3">
-- 如果为3,则查驳回的
and ( status in (15,16,17) and t3.submitKnowledgeId is not null)
</when>
<when test="status == 9">
and ( status in (10,11,12) and t3.submitKnowledgeId is not null)
</when>

Loading…
Cancel
Save