优化,增加实例字段

release_1.0.0
liu 8 months ago
parent 6a370ccb3f
commit 3d337e3770

@ -66,11 +66,11 @@ public class KnowledgeFlowController {
@Operation(summary = "查询知识库流转记录")
@Parameters({
@Parameter(name = "knowledgeId", description = "审批状态 1未审批 2已审批", in = ParameterIn.QUERY),
@Parameter(name = "flowId", description = "流程ID,可不填", in = ParameterIn.QUERY)
@Parameter(name = "flowInstanceId", description = "流程实例ID,可不填", in = ParameterIn.QUERY)
})
@GetMapping("queryKnowledgeFlowRecord")
public List<KnowledgeFlowRecordResVO> queryKnowledgeFlowRecord(String knowledgeId, @RequestParam(required = false) String flowId) {
return knowledgeFlowService.queryKnowledgeFlowRecord(knowledgeId, flowId);
public List<KnowledgeFlowRecordResVO> queryKnowledgeFlowRecord(String knowledgeId, @RequestParam(required = false) String flowInstanceId) {
return knowledgeFlowService.queryKnowledgeFlowRecord(knowledgeId, flowInstanceId);
}

@ -24,5 +24,5 @@ public interface KnowledgeFlowService {
void processKnowledgeFlow(ProcessFlowReqVO reqVO);
List<KnowledgeFlowRecordResVO> queryKnowledgeFlowRecord(String knowledgeId, String flowId);
List<KnowledgeFlowRecordResVO> queryKnowledgeFlowRecord(String knowledgeId, String flowInstanceId);
}

@ -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();

@ -37,6 +37,11 @@ public class KnowledgeFlowRecord implements Serializable {
*/
private String knowledgeId;
/**
* ID
*/
private String flowInstanceId;
/**
* ID
*/

@ -26,6 +26,11 @@ public class KnowledgeFlowTodo extends Model<KnowledgeFlowTodo> implements Seria
*/
private String flowId;
/**
* ID
*/
private String flowInstanceId;
/**
* 1 2: 3
*/

@ -11,6 +11,8 @@ public class KnowledgeFlowResVO {
private String todoId;
@Schema(description = "流程ID")
private String flowId;
@Schema(description = "流程实例ID")
private String flowInstanceId;
@Schema(description = "知识ID")
private String knowledgeId;
@Schema(description = "标题")

@ -33,6 +33,7 @@
<select id="queryKnowledgeFlowTodoPage" resultType="com.supervision.knowsub.vo.knowledge.KnowledgeFlowResVO">
select t1.id as todoId,
t1.flow_id as flowId,
t1.flow_instance_id as flowInstanceId,
t2.id as knowledgeId,
t2.status as status,
t2.title as title,
@ -74,6 +75,7 @@
select
t1.flow_id as flowId,
t2.id as knowledgeId,
t1.flow_instance_id as flowInstanceId,
t2.title as title,
t2.status as status,
t1.flow_type as flowType,

Loading…
Cancel
Save