feat(标准解读流程): 快照

This commit is contained in:
yjz
2024-07-11 19:25:42 +08:00
parent aec23370b2
commit 44a16be927
2 changed files with 48 additions and 1 deletions
@@ -10,7 +10,9 @@ import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.enums.FinishFlagEnum;
import com.jero.modules.activiti.process.common.entity.ProcessDraft;
import com.jero.modules.activiti.process.common.entity.ProcessSnapshot;
import com.jero.modules.activiti.process.common.service.ProcessDraftService;
import com.jero.modules.activiti.process.common.service.ProcessSnapshotService;
import com.jero.modules.activiti.process.standardinterpret.vo.FlowApproveInfo;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
@@ -41,6 +43,7 @@ public class FlowUtility {
private final ProcessApprovalRecordService processApprovalRecordService;
private final ProcessDraftService processDraftService;
private final RuntimeService runtimeService;
private final ProcessSnapshotService processSnapshotService;
public void flowApprovalUpdate(ProcessAll processAll, ProcessApprovalRecord processApprovalRecord){
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
@@ -73,6 +76,39 @@ public class FlowUtility {
.set(ProcessApprovalRecord::getCommitFile, processApprovalRecord.getCommitFile()));
}
public void flowSaveSnapshot(ProcessAll processAll, ProcessApprovalRecord processApprovalRecord, String infoJsonStr){
// 保存快照
ProcessSnapshot processSnapshot = new ProcessSnapshot();
BeanUtils.copyProperties(processAll, processSnapshot);
processSnapshot.setId(String.valueOf(SnowflakeUtils.snowflake()));
processSnapshot.setCreateBy(null);
processSnapshot.setCreateTime(null);
processSnapshot.setUpdateBy(null);
processSnapshot.setUpdateTime(null);
if (StringUtils.isNotBlank(processApprovalRecord.getCommitFile())){
processSnapshot.setHandleFile(processApprovalRecord.getCommitFile());
}
if (StringUtils.isNotBlank(processApprovalRecord.getCommitText())){
processSnapshot.setHandleText(processApprovalRecord.getCommitFile());
}
if (!Objects.isNull(processAll.getDueTime())){
processSnapshot.setProcessDueDate(processAll.getDueTime());
}
if (StringUtils.isNotBlank(processAll.getPrcMes())){
processSnapshot.setProcessDescription(processAll.getPrcMes());
}
if (StringUtils.isNotBlank(infoJsonStr)){
processSnapshot.setInfoJsonStr(infoJsonStr);
}
if (StringUtils.isNotBlank(processApprovalRecord.getTaskId())){
processSnapshot.setTaskId(processApprovalRecord.getTaskId());
}
if (StringUtils.isNotBlank(processApprovalRecord.getUserId())){
processSnapshot.setUserId(processApprovalRecord.getUserId());
}
processSnapshotService.save(processSnapshot);
}
public FlowApproveInfo queryFlowApproveInfo(String projectId, String taskId){
FlowApproveInfo flowApproveInfo = new FlowApproveInfo();
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
@@ -150,6 +150,13 @@ public class StandardInterpretFlowServiceImpl implements StandardInterpretFlowSe
// 自动完成第一个节点
taskService.complete(task.getId());
// 保存快照
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
processAll.setProcessInstanceId(task.getProcessInstanceId());
processApprovalRecord.setTaskId(task.getId());
processApprovalRecord.setUserId(loginUser.getId());
flowUtility.flowSaveSnapshot(processAll, processApprovalRecord, standardInterpretFlowDTO.getInfoJsonStr());
}
@Override
@@ -207,13 +214,17 @@ public class StandardInterpretFlowServiceImpl implements StandardInterpretFlowSe
// 特殊节点
String nodeId = processApprovalRecord.getNodeId();
if (StandardInterpretCommon.MASTER_INTERPRET_APPROVE.equals(nodeId)){
if (StandardInterpretCommon.MASTER_INTERPRET_APPROVE.equals(nodeId)
|| StandardInterpretCommon.MASTER_INTERPRET_AGAIN_DISTRIBUTE.equals(nodeId)){
// 更新流程总表状态
processAllService.update(new LambdaUpdateWrapper<ProcessAll>()
.eq(ProcessAll::getProjectId, processAll.getProjectId())
.set(ProcessAll::getPrcStatus, ProcessStatusEnum.INCOMPLETE.getValue()));
}
// 保存快照
flowUtility.flowSaveSnapshot(processAll, processApprovalRecord, standardInterpretFlowDTO.getInfoJsonStr());
// 流程结束
if (flowUtility.isLastNode(processAll.getProcessInstanceId())){
// 查询业务信息