|
|
|
@ -6,10 +6,9 @@ import com.supervision.knowsub.entity.vo.homepage.MyKnowledgeStatisticsResVO;
|
|
|
|
|
import com.supervision.knowsub.enums.StatusEnum;
|
|
|
|
|
import com.supervision.knowsub.exception.BusinessException;
|
|
|
|
|
import com.supervision.knowsub.model.Knowledge;
|
|
|
|
|
import com.supervision.knowsub.model.KnowledgeFlowTodo;
|
|
|
|
|
import com.supervision.knowsub.model.SystemUser;
|
|
|
|
|
import com.supervision.knowsub.service.HomepageService;
|
|
|
|
|
import com.supervision.knowsub.service.KnowledgeService;
|
|
|
|
|
import com.supervision.knowsub.service.SystemUserService;
|
|
|
|
|
import com.supervision.knowsub.service.*;
|
|
|
|
|
import com.supervision.knowsub.util.UserUtil;
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
@ -24,27 +23,76 @@ public class HomepageServiceImpl implements HomepageService {
|
|
|
|
|
|
|
|
|
|
private final SystemUserService systemUserService;
|
|
|
|
|
|
|
|
|
|
private final KnowledgeFlowTodoService knowledgeFlowTodoService;
|
|
|
|
|
|
|
|
|
|
private final SystemFlowRuleService systemFlowRuleService;
|
|
|
|
|
|
|
|
|
|
private final KnowledgeFlowRecordService knowledgeFlowRecordService;
|
|
|
|
|
|
|
|
|
|
private final KnowledgeSubmitRecordService knowledgeSubmitRecordService;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 先看用户是否具有任意节点的审批权限,
|
|
|
|
|
* 如果被配置审批权限,则认为为知识审批人员视角。
|
|
|
|
|
* 如没有被配置审批权限,则以报送人员视角进行统计
|
|
|
|
|
* 如没有任何角色权限,数据全部显示为0
|
|
|
|
|
* <p>
|
|
|
|
|
* 知识数量:如果多次审批,则进行去重,只保留一次
|
|
|
|
|
* <p>
|
|
|
|
|
* 报送人员视角:
|
|
|
|
|
* 待审批:我提交的且当前处于“待审批”状态的知识数量。
|
|
|
|
|
* 审批通过:我提交的且被标记为“审批通过”的知识数量。
|
|
|
|
|
* 驳回:我提交的且被标记为“驳回”的知识数量。
|
|
|
|
|
* 失效: 我提交的且被标记为“失效”的知识数量。
|
|
|
|
|
* 全量报送:我提交的所有知识数量(无论状态如何)。
|
|
|
|
|
* 报送人员的知识: 只要被我发起过的,即使别人给再次发起,也算我的知识,这是也应该被统计
|
|
|
|
|
* <p>
|
|
|
|
|
* 知识审批人员视角:
|
|
|
|
|
* 待审批:待我审批的知识数量。
|
|
|
|
|
* 审批通过:由我审批并标记为“审批通过”的知识数量。
|
|
|
|
|
* 驳回:由我审批并标记为“驳回”的知识数量。
|
|
|
|
|
* 失效: 由我审批过的知识,并标记为“失效”的知识数量。
|
|
|
|
|
* 全量报送:所有审批通过的知识数量(包括我和其他审批者审批通过的)
|
|
|
|
|
*
|
|
|
|
|
* @return 页面展示的结果
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public MyKnowledgeStatisticsResVO queryMyKnowledgeStatistics() {
|
|
|
|
|
UserInfo user = UserUtil.getUser();
|
|
|
|
|
|
|
|
|
|
SystemUser systemUser = systemUserService.getOptById(user.getId()).orElseThrow(() -> new BusinessException("未找到用户"));
|
|
|
|
|
MyKnowledgeStatisticsResVO resVO = new MyKnowledgeStatisticsResVO();
|
|
|
|
|
resVO.setUserName(user.getUsername());
|
|
|
|
|
resVO.setLastLoginTime(systemUser.getRecentLoginTime());
|
|
|
|
|
// 首先查询所有通过
|
|
|
|
|
Long passTotalCount = knowledgeService.lambdaQuery().eq(Knowledge::getStatus, StatusEnum.PASS.getStatus()).count();
|
|
|
|
|
// 然后找到属于自己的知识的草稿
|
|
|
|
|
Long count1 = knowledgeService.lambdaQuery().ne(Knowledge::getStatus, StatusEnum.PASS.getStatus())
|
|
|
|
|
.eq(Knowledge::getDraftBelongUserId, user.getId()).count();
|
|
|
|
|
// resVO.setKnowledgeCount();
|
|
|
|
|
// resVO.setWaitProcessCount();
|
|
|
|
|
// resVO.setPassProcessCount();
|
|
|
|
|
// resVO.setRejectProcessCount();
|
|
|
|
|
// resVO.setInvalidProcessCount();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
// 首先查询用户是否有审批的权限,
|
|
|
|
|
Integer isConfigProcess = systemFlowRuleService.queryUserIsConfigProcess(user.getId());
|
|
|
|
|
// 如果用户有审批权限,则以审批人的视角
|
|
|
|
|
if (0 < isConfigProcess) {
|
|
|
|
|
// 全量知识,所有审批通过的
|
|
|
|
|
resVO.setKnowledgeCount(knowledgeService.lambdaQuery().eq(Knowledge::getStatus, StatusEnum.PASS.getStatus()).count());
|
|
|
|
|
// 待审批
|
|
|
|
|
resVO.setWaitProcessCount(knowledgeFlowTodoService.lambdaQuery().eq(KnowledgeFlowTodo::getTodoUserId, user.getId()).count());
|
|
|
|
|
// 由我审批并标记为审批通过的数量
|
|
|
|
|
resVO.setPassProcessCount(knowledgeFlowRecordService.queryPassProcessCountByUser(user.getId(), 1, null));
|
|
|
|
|
// 由我审批并标记为“驳回”的知识数量。
|
|
|
|
|
resVO.setRejectProcessCount(knowledgeFlowRecordService.queryPassProcessCountByUser(user.getId(), 2, null));
|
|
|
|
|
// 查询由我审批且目前已失效的
|
|
|
|
|
resVO.setInvalidProcessCount(knowledgeFlowRecordService.queryPassProcessCountByUser(user.getId(), null, null));
|
|
|
|
|
}
|
|
|
|
|
// 没有被配置审批权限,则以报送人员视角进行统计
|
|
|
|
|
else {
|
|
|
|
|
// 首先查询所有通过
|
|
|
|
|
Long passTotalCount = knowledgeService.lambdaQuery().eq(Knowledge::getStatus, StatusEnum.PASS.getStatus()).count();
|
|
|
|
|
// 然后找到属于自己的知识的草稿
|
|
|
|
|
Long userSelfCount = knowledgeService.lambdaQuery().ne(Knowledge::getStatus, StatusEnum.PASS.getStatus())
|
|
|
|
|
.eq(Knowledge::getDraftBelongUserId, user.getId()).count();
|
|
|
|
|
resVO.setKnowledgeCount(passTotalCount + userSelfCount);
|
|
|
|
|
// 待审批:我提交的且当前处于“待审批”状态的知识数量。
|
|
|
|
|
resVO.setWaitProcessCount(knowledgeSubmitRecordService.queryKnowledgeSubmitTodoCount(user.getId()));
|
|
|
|
|
resVO.setRejectProcessCount(knowledgeSubmitRecordService.queryKnowledgeSubmitStatusCount(user.getId(), StatusEnum.REJECT.getStatus()));
|
|
|
|
|
resVO.setInvalidProcessCount(knowledgeSubmitRecordService.queryKnowledgeSubmitStatusCount(user.getId(), StatusEnum.INVALID.getStatus()));
|
|
|
|
|
resVO.setPassProcessCount(knowledgeSubmitRecordService.queryKnowledgeSubmitStatusCount(user.getId(), StatusEnum.PASS.getStatus()));
|
|
|
|
|
}
|
|
|
|
|
return resVO;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|