|
|
|
@ -3,6 +3,7 @@ package com.supervision.knowsub.service.impl;
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
import cn.hutool.core.lang.Assert;
|
|
|
|
|
import cn.hutool.core.lang.UUID;
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
@ -105,6 +106,7 @@ public class KnowledgeFlowServiceImpl implements KnowledgeFlowService {
|
|
|
|
|
*/
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public void submitFlowProcess(Knowledge knowledge, FlowTypeEnum flowTypeEnum, String userId, String deptId, String remark) {
|
|
|
|
|
String flowInstanceId = UUID.fastUUID().toString();
|
|
|
|
|
// 首先查询到知识对应的子库
|
|
|
|
|
String baseId = knowledge.getBaseId();
|
|
|
|
|
if (StrUtil.isBlank(baseId)) {
|
|
|
|
@ -135,6 +137,8 @@ public class KnowledgeFlowServiceImpl implements KnowledgeFlowService {
|
|
|
|
|
.type(1)
|
|
|
|
|
.knowledgeId(knowledge.getId())
|
|
|
|
|
.flowId(systemFlowTypeRelation.getFlowId())
|
|
|
|
|
// 新建的流程需要赋予一个实例ID
|
|
|
|
|
.flowInstanceId(flowInstanceId)
|
|
|
|
|
.flowType(flowTypeEnum.getFlowType())
|
|
|
|
|
.flowRuleId(firstRule.getId())
|
|
|
|
|
.flowRuleOrder(firstRule.getRuleOrder())
|
|
|
|
@ -157,6 +161,7 @@ public class KnowledgeFlowServiceImpl implements KnowledgeFlowService {
|
|
|
|
|
for (SystemFlowRuleUser todoUser : nextRuleUserList) {
|
|
|
|
|
KnowledgeFlowTodo todo = new KnowledgeFlowTodo();
|
|
|
|
|
todo.setFlowId(nextRule.getFlowId());
|
|
|
|
|
todo.setSubmitUserId(flowInstanceId);
|
|
|
|
|
todo.setFlowType(flowTypeEnum.getFlowType());
|
|
|
|
|
todo.setKnowledgeId(knowledge.getId());
|
|
|
|
|
todo.setRuleId(nextRule.getId());
|
|
|
|
@ -186,16 +191,12 @@ public class KnowledgeFlowServiceImpl implements KnowledgeFlowService {
|
|
|
|
|
public void processKnowledgeFlow(ProcessFlowReqVO reqVO) {
|
|
|
|
|
// 首先获取这个审批任务
|
|
|
|
|
KnowledgeFlowTodo knowledgeFlowTodo = knowledgeFlowTodoService.getOptById(reqVO.getTodoId()).orElseThrow(() -> new BusinessException("审批任务不存在"));
|
|
|
|
|
// 找到最开始的节点
|
|
|
|
|
KnowledgeFlowRecord submitFlowRecord = knowledgeFlowRecordService.lambdaQuery().eq(KnowledgeFlowRecord::getKnowledgeId, reqVO.getKnowledgeId())
|
|
|
|
|
.eq(KnowledgeFlowRecord::getFlowId, knowledgeFlowTodo.getFlowId()).eq(KnowledgeFlowRecord::getFlowType, knowledgeFlowTodo.getFlowType())
|
|
|
|
|
// 找到发起节点
|
|
|
|
|
KnowledgeFlowRecord submitFlowRecord = knowledgeFlowRecordService.lambdaQuery().eq(KnowledgeFlowRecord::getFlowInstanceId, knowledgeFlowTodo.getFlowInstanceId())
|
|
|
|
|
.eq(KnowledgeFlowRecord::getType, 1).orderByDesc(KnowledgeFlowRecord::getCreateTime).last(" limit 1").oneOpt().orElse(new KnowledgeFlowRecord());
|
|
|
|
|
UserInfo user = UserUtil.getUser();
|
|
|
|
|
// 将这个任务对应的TODO删除掉
|
|
|
|
|
knowledgeFlowTodoService.lambdaUpdate().eq(KnowledgeFlowTodo::getKnowledgeId, reqVO.getKnowledgeId())
|
|
|
|
|
.eq(KnowledgeFlowTodo::getFlowId, knowledgeFlowTodo.getFlowId())
|
|
|
|
|
.eq(KnowledgeFlowTodo::getFlowType, knowledgeFlowTodo.getFlowType())
|
|
|
|
|
.eq(KnowledgeFlowTodo::getRuleId, knowledgeFlowTodo.getRuleId()).remove();
|
|
|
|
|
knowledgeFlowTodoService.lambdaUpdate().eq(KnowledgeFlowTodo::getFlowInstanceId, knowledgeFlowTodo.getFlowInstanceId()).remove();
|
|
|
|
|
// 然后获取下一个节点
|
|
|
|
|
List<SystemFlowRule> ruleOrderList = queryFlowRuleWithOrder(knowledgeFlowTodo.getFlowId());
|
|
|
|
|
// 从list中找到当前节点
|
|
|
|
@ -219,6 +220,7 @@ public class KnowledgeFlowServiceImpl implements KnowledgeFlowService {
|
|
|
|
|
KnowledgeFlowRecord newKnowledgeFlowRecord = KnowledgeFlowRecord.builder().type(2)
|
|
|
|
|
.knowledgeId(knowledgeFlowTodo.getKnowledgeId())
|
|
|
|
|
.flowId(knowledgeFlowTodo.getFlowId())
|
|
|
|
|
.flowInstanceId(knowledgeFlowTodo.getFlowInstanceId())
|
|
|
|
|
.flowType(knowledgeFlowTodo.getFlowType())
|
|
|
|
|
.flowRuleId(currentRule.getId())
|
|
|
|
|
.flowRuleOrder(currentRule.getRuleOrder())
|
|
|
|
@ -267,6 +269,7 @@ public class KnowledgeFlowServiceImpl implements KnowledgeFlowService {
|
|
|
|
|
KnowledgeFlowTodo todo = new KnowledgeFlowTodo();
|
|
|
|
|
todo.setFlowId(nextRule.getFlowId());
|
|
|
|
|
todo.setKnowledgeId(knowledgeFlowTodo.getKnowledgeId());
|
|
|
|
|
todo.setFlowInstanceId(knowledgeFlowTodo.getFlowInstanceId());
|
|
|
|
|
todo.setTodoUserId(todoUser.getUserId());
|
|
|
|
|
todo.setSubmitUserId(submitFlowRecord.getSubmitUserId());
|
|
|
|
|
todo.setFlowType(knowledgeFlowTodo.getFlowType());
|
|
|
|
@ -282,6 +285,7 @@ public class KnowledgeFlowServiceImpl implements KnowledgeFlowService {
|
|
|
|
|
.flowId(knowledgeFlowTodo.getFlowId())
|
|
|
|
|
.flowType(knowledgeFlowTodo.getFlowType())
|
|
|
|
|
.flowRuleId(currentRule.getId())
|
|
|
|
|
.flowInstanceId(knowledgeFlowTodo.getFlowInstanceId())
|
|
|
|
|
.flowRuleOrder(currentRule.getRuleOrder())
|
|
|
|
|
.processName(currentRule.getRuleName())
|
|
|
|
|
.processStatus(2)
|
|
|
|
@ -301,9 +305,10 @@ public class KnowledgeFlowServiceImpl implements KnowledgeFlowService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<KnowledgeFlowRecordResVO> queryKnowledgeFlowRecord(String knowledgeId, String flowId) {
|
|
|
|
|
public List<KnowledgeFlowRecordResVO> queryKnowledgeFlowRecord(String knowledgeId, String flowInstanceId) {
|
|
|
|
|
List<KnowledgeFlowRecord> list = knowledgeFlowRecordService.lambdaQuery().eq(KnowledgeFlowRecord::getKnowledgeId, knowledgeId)
|
|
|
|
|
.eq(StrUtil.isNotBlank(flowId), KnowledgeFlowRecord::getFlowId, flowId).list();
|
|
|
|
|
.eq(StrUtil.isNotBlank(flowInstanceId), KnowledgeFlowRecord::getFlowInstanceId, flowInstanceId).list();
|
|
|
|
|
|
|
|
|
|
// 根据时间进行排序
|
|
|
|
|
List<KnowledgeFlowRecordResVO> result = list.stream().map(knowledgeFlowRecord -> {
|
|
|
|
|
KnowledgeFlowRecordResVO node = new KnowledgeFlowRecordResVO();
|
|
|
|
|