feat: 快照功能后端支持
This commit is contained in:
+18
@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.jero.common.api.vo.Result;
|
||||
import com.jero.common.api.vo.ResultCommon;
|
||||
import com.jero.common.aspect.annotation.AutoLog;
|
||||
import com.jero.common.aspect.annotation.Translation;
|
||||
import com.jero.common.system.query.QueryGenerator;
|
||||
import com.jero.common.system.vo.LoginUser;
|
||||
import com.jero.common.util.MessageUtils;
|
||||
@@ -17,6 +18,8 @@ import com.jero.modules.activiti.enums.FinishFlagEnum;
|
||||
import com.jero.modules.activiti.enums.ProcessStatusEnum;
|
||||
import com.jero.modules.activiti.process.common.common.DraftCommon;
|
||||
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.ActFlowCommonService;
|
||||
import com.jero.modules.activiti.process.common.service.ProcessDraftService;
|
||||
import com.jero.modules.activiti.process.fb.service.IProcessHandleService;
|
||||
import com.jero.modules.activiti.service.ProcessAllService;
|
||||
@@ -26,6 +29,7 @@ import com.jero.modules.activiti.vo.ResolveTaskParam;
|
||||
import com.jero.modules.laws.common.util.CurrentUserUtil;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
@@ -54,6 +58,8 @@ public class WorkCenterController {
|
||||
private ProcessApprovalRecordService processApprovalRecordService;
|
||||
@Resource
|
||||
private IProcessHandleService processHandleService;
|
||||
@Resource
|
||||
private ActFlowCommonService actFlowCommonService;
|
||||
|
||||
@ApiOperation(value = "查询待办流程列表")
|
||||
@GetMapping("/getTodoList")
|
||||
@@ -258,4 +264,16 @@ public class WorkCenterController {
|
||||
return Result.OK(processApprovalRecord);
|
||||
}
|
||||
|
||||
/**
|
||||
* 快照跳转
|
||||
* @param snapshotId
|
||||
*/
|
||||
@AutoLog(value = "快照跳转")
|
||||
@ApiOperation(value="快照跳转", notes="快照跳转")
|
||||
@GetMapping("/snapshotHandle")
|
||||
@Translation
|
||||
public Result<ProcessSnapshot> snapshotHandle(@RequestParam("snapshotId") @ApiParam("快照Id") String snapshotId) {
|
||||
return Result.OK(actFlowCommonService.getExistSnapshot(snapshotId));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -206,4 +206,11 @@ public class ProcessApprovalRecord {
|
||||
@TableField(value = "transfer_task_id")
|
||||
@ApiModelProperty(value = "转办任务id")
|
||||
private String transferTaskId;
|
||||
|
||||
/**
|
||||
* 快照Id
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value = "快照Id")
|
||||
private String snapshotId;
|
||||
}
|
||||
+121
@@ -0,0 +1,121 @@
|
||||
package com.jero.modules.activiti.process.common.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.jero.common.aspect.annotation.Dict;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 草稿表
|
||||
* @TableName process_snapshot
|
||||
*/
|
||||
@TableName(value ="process_snapshot")
|
||||
@Data
|
||||
public class ProcessSnapshot implements Serializable {
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
@ApiModelProperty(value = "主键ID")
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* 创建人ID
|
||||
*/
|
||||
@ApiModelProperty(value = "创建人ID")
|
||||
private String createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 修改人ID
|
||||
*/
|
||||
@ApiModelProperty(value = "修改人ID")
|
||||
private String updateBy;
|
||||
|
||||
/**
|
||||
* 修改时间
|
||||
*/
|
||||
@ApiModelProperty(value = "修改时间")
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* 部门code
|
||||
*/
|
||||
@ApiModelProperty(value = "部门code")
|
||||
private String orgCode;
|
||||
|
||||
/**
|
||||
* 流程类型
|
||||
*/
|
||||
@ApiModelProperty(value = "流程类型")
|
||||
private String prcName;
|
||||
|
||||
/**
|
||||
* 流程实例id
|
||||
*/
|
||||
@ApiModelProperty(value = "流程实例id")
|
||||
private String processInstanceId;
|
||||
|
||||
/**
|
||||
* 项目类型
|
||||
*/
|
||||
@Dict(dicCode = "prc_type")
|
||||
@ApiModelProperty(value = "项目类型")
|
||||
private Integer prcType;
|
||||
|
||||
/**
|
||||
* 节点id
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value = "节点id")
|
||||
private String nodeId;
|
||||
|
||||
/**任务id*/
|
||||
@ApiModelProperty(value = "任务id")
|
||||
private java.lang.String taskId;
|
||||
|
||||
/**流程审批信息-备注*/
|
||||
@ApiModelProperty(value = "流程审批信息-备注")
|
||||
private java.lang.String handleText;
|
||||
|
||||
/**流程审批信息-附件*/
|
||||
@ApiModelProperty(value = "流程审批信息-附件")
|
||||
private java.lang.String handleFile;
|
||||
|
||||
/**用户id*/
|
||||
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname")
|
||||
@ApiModelProperty(value = "用户id")
|
||||
private java.lang.String userId;
|
||||
|
||||
/**流程信息-截止日期*/
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd")
|
||||
@ApiModelProperty(value = "流程信息-截止日期")
|
||||
private java.util.Date processDueDate;
|
||||
|
||||
/**流程信息-流程说明*/
|
||||
@ApiModelProperty(value = "流程信息-流程说明")
|
||||
private java.lang.String processDescription;
|
||||
|
||||
/**
|
||||
* 草稿信息json字符串
|
||||
*/
|
||||
@ApiModelProperty(value = "草稿信息json字符串")
|
||||
private String infoJsonStr;
|
||||
|
||||
@TableField(exist = false)
|
||||
private static final long serialVersionUID = 1L;
|
||||
}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
package com.jero.modules.activiti.process.common.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.jero.modules.activiti.process.common.entity.ProcessSnapshot;
|
||||
|
||||
/**
|
||||
* @author ThinkBook
|
||||
* @description 针对表【process_snapshot(草稿表)】的数据库操作Mapper
|
||||
* @createDate 2024-07-10 16:27:54
|
||||
* @Entity com.jero.modules.activiti.process.common.entity.ProcessSnapshot
|
||||
*/
|
||||
public interface ProcessSnapshotMapper extends BaseMapper<ProcessSnapshot> {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
+10
@@ -13,6 +13,7 @@ import com.jero.modules.activiti.enums.ProcessTypeEnum;
|
||||
import com.jero.modules.activiti.process.common.common.DraftCommon;
|
||||
import com.jero.modules.activiti.process.common.entity.CommonVO;
|
||||
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.entity.StandTypeVO;
|
||||
import com.jero.modules.activiti.process.common.enums.StandardStateEnum;
|
||||
import com.jero.modules.activiti.process.esArchive.entity.vo.ESArchiveDataVO;
|
||||
@@ -77,6 +78,9 @@ public class ActFlowCommonService {
|
||||
@Resource
|
||||
private ILawsEnterpriseStandardService esService;
|
||||
|
||||
@Resource
|
||||
private ProcessSnapshotService processSnapshotService;
|
||||
|
||||
/**
|
||||
* 启动流程实例
|
||||
*/
|
||||
@@ -495,4 +499,10 @@ public class ActFlowCommonService {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public ProcessSnapshot getExistSnapshot(String snapshotId) {
|
||||
LambdaQueryWrapper<ProcessSnapshot> draftWrapper = new LambdaQueryWrapper<>();
|
||||
draftWrapper.eq(ProcessSnapshot::getId, snapshotId);
|
||||
return processSnapshotService.getOne(draftWrapper);
|
||||
}
|
||||
}
|
||||
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
package com.jero.modules.activiti.process.common.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.jero.modules.activiti.process.common.entity.ProcessSnapshot;
|
||||
|
||||
/**
|
||||
* @author ThinkBook
|
||||
* @description 针对表【process_snapshot(草稿表)】的数据库操作Service
|
||||
* @createDate 2024-07-10 16:27:54
|
||||
*/
|
||||
public interface ProcessSnapshotService extends IService<ProcessSnapshot> {
|
||||
|
||||
}
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
package com.jero.modules.activiti.process.common.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.jero.modules.activiti.process.common.entity.ProcessSnapshot;
|
||||
import com.jero.modules.activiti.process.common.mapper.ProcessSnapshotMapper;
|
||||
import com.jero.modules.activiti.process.common.service.ProcessSnapshotService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author ThinkBook
|
||||
* @description 针对表【process_snapshot(草稿表)】的数据库操作Service实现
|
||||
* @createDate 2024-07-10 16:27:54
|
||||
*/
|
||||
@Service
|
||||
public class ProcessSnapshotServiceImpl extends ServiceImpl<ProcessSnapshotMapper, ProcessSnapshot>
|
||||
implements ProcessSnapshotService{
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
+2
@@ -161,4 +161,6 @@ public interface IProcessHandleService {
|
||||
List<ProcessInstance> subProcessList(String superProcessInstanceId, String subProcessDefinitionKey);
|
||||
|
||||
void saveNodeUserLink(String processInstanceId, String nodeId, List<String> userIdList);
|
||||
|
||||
void saveToSnapshot(ProcessInfoVO processInfoVO, String userId);
|
||||
}
|
||||
|
||||
+35
@@ -13,7 +13,9 @@ import com.jero.modules.activiti.enums.CommitFlagEnum;
|
||||
import com.jero.modules.activiti.enums.ProcessTypeEnum;
|
||||
import com.jero.modules.activiti.process.common.common.DraftCommon;
|
||||
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.fb.common.ConsultationTaskKey;
|
||||
import com.jero.modules.activiti.process.fb.common.ProcessDefinitionKey;
|
||||
import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO;
|
||||
@@ -67,6 +69,8 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
|
||||
private ProcessNodeLinkService processNodeLinkService; // 流程实例节点关联用户表
|
||||
@Resource
|
||||
private ProcessDraftService processDraftService; // 流程草稿表
|
||||
@Resource
|
||||
private ProcessSnapshotService processSnapshotService; // 流程草稿表
|
||||
|
||||
/**
|
||||
* @Author: liao
|
||||
@@ -489,6 +493,37 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
|
||||
return processDraft.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveToSnapshot(ProcessInfoVO processInfoVO, String userId) {
|
||||
BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO();
|
||||
BasicTaskInfoDTO basicTaskInfoDTO = processInfoVO.getBasicTaskInfoDTO();
|
||||
String taskId = null;
|
||||
String handleText = null;
|
||||
String handleFile = null;
|
||||
if (basicTaskInfoDTO != null) {
|
||||
taskId = basicTaskInfoDTO.getTaskId();
|
||||
handleText = basicTaskInfoDTO.getHandleText();
|
||||
handleFile = basicTaskInfoDTO.getHandleFile();
|
||||
} else {
|
||||
processInfoVO.setBasicTaskInfoDTO(new BasicTaskInfoDTO());
|
||||
}
|
||||
|
||||
ProcessSnapshot processSnapshot = new ProcessSnapshot();
|
||||
|
||||
// 根据是否有taskId区分保存来源(待办、草稿)
|
||||
processSnapshot.setProcessInstanceId(basicProcessInfoDTO.getProcessInstanceId()); // 流程实例id
|
||||
processSnapshot.setPrcName(basicProcessInfoDTO.getProcessName()); // 流程名称
|
||||
processSnapshot.setPrcType(basicProcessInfoDTO.getProcessType()); // 流程类型
|
||||
processSnapshot.setProcessDueDate(basicProcessInfoDTO.getProcessDueDate()); // 流程信息-截止日期
|
||||
processSnapshot.setProcessDescription(basicProcessInfoDTO.getProcessDescription()); // 流程信息-流程说明
|
||||
processSnapshot.setTaskId(taskId); // 任务id
|
||||
processSnapshot.setHandleText(handleText); // 流程审批信息-备注
|
||||
processSnapshot.setHandleFile(handleFile); // 流程审批信息-附件
|
||||
processSnapshot.setUserId(userId); // 用户id
|
||||
processSnapshot.setInfoJsonStr(processInfoVO.getInfoJsonStr());//草稿信息json字符串
|
||||
processSnapshotService.save(processSnapshot);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProcessInfoVO getDraftByDraftId(String draftId) {
|
||||
LambdaQueryWrapper<ProcessDraft> wrapper = new LambdaQueryWrapper<>();
|
||||
|
||||
+18
@@ -1,5 +1,6 @@
|
||||
package com.jero.modules.activiti.service;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
@@ -12,6 +13,8 @@ import com.jero.modules.activiti.entity.ProcessApprovalRecord;
|
||||
import com.jero.modules.activiti.enums.FinishFlagEnum;
|
||||
import com.jero.modules.activiti.enums.ProcessTypeEnum;
|
||||
import com.jero.modules.activiti.mapper.ProcessApprovalRecordMapper;
|
||||
import com.jero.modules.activiti.process.common.entity.ProcessSnapshot;
|
||||
import com.jero.modules.activiti.process.common.service.ProcessSnapshotService;
|
||||
import com.jero.modules.activiti.process.esInitChange.entity.EsInitChangeConstant;
|
||||
import com.jero.modules.laws.common.util.CurrentUserUtil;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
@@ -21,7 +24,9 @@ import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -36,6 +41,9 @@ public class ProcessApprovalRecordService extends ServiceImpl<ProcessApprovalRec
|
||||
@Resource
|
||||
private ProcessAllService processAllService;
|
||||
|
||||
@Resource
|
||||
private ProcessSnapshotService processSnapshotService;
|
||||
|
||||
public ProcessApprovalRecord getToDoByTaskId(String taskId){
|
||||
LambdaQueryWrapper<ProcessApprovalRecord> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(ProcessApprovalRecord::getTaskId,taskId);
|
||||
@@ -60,7 +68,17 @@ public class ProcessApprovalRecordService extends ServiceImpl<ProcessApprovalRec
|
||||
wrapper.last("ORDER BY IF(ISNULL(create_time), 1, 0) DESC ,create_time DESC, end_time DESC");
|
||||
Page<ProcessApprovalRecord> pageList = this.page(page, wrapper);
|
||||
List<ProcessApprovalRecord> records = pageList.getRecords();
|
||||
List<String> taskIdList = records.stream().map(ProcessApprovalRecord::getTaskId).collect(Collectors.toList());
|
||||
LambdaQueryWrapper<ProcessSnapshot> processSnapshotWrapper = new LambdaQueryWrapper<>();
|
||||
processSnapshotWrapper.in(ProcessSnapshot::getTaskId, taskIdList);
|
||||
List<ProcessSnapshot> snapshotList = processSnapshotService.list(processSnapshotWrapper);
|
||||
Map<String, List<ProcessSnapshot>> snapshotMap = snapshotList.stream().collect(Collectors.groupingBy(ProcessSnapshot::getTaskId));
|
||||
for (ProcessApprovalRecord record : records) {
|
||||
List<ProcessSnapshot> processSnapshots = snapshotMap.get(record.getTaskId());
|
||||
if (CollUtil.isNotEmpty(processSnapshots)) {
|
||||
ProcessSnapshot snapshot = processSnapshots.get(0);
|
||||
record.setSnapshotId(snapshot.getId());
|
||||
}
|
||||
String userId = record.getUserId();
|
||||
String taskAcceptor = sysBaseAPI.translateUserRealNameFromTable(userId);
|
||||
String delegateBy = record.getDelegateBy();
|
||||
|
||||
Reference in New Issue
Block a user