提供获取项目流程实例的方法
parent
fe6bc622da
commit
7f8cc478cf
|
@ -12,7 +12,7 @@ public enum ApproveStatusEnum {
|
|||
private int approveStatus;
|
||||
private String approveStatusDesc;
|
||||
|
||||
private ApproveStatusEnum(int approveStatus, String approveStatusDesc) {
|
||||
ApproveStatusEnum(int approveStatus, String approveStatusDesc) {
|
||||
this.approveStatus = approveStatus;
|
||||
this.approveStatusDesc = approveStatusDesc;
|
||||
}
|
||||
|
|
|
@ -2,5 +2,11 @@ package cn.palmte.work.model;
|
|||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface ProjectInstanceRelationRepository extends JpaRepository<ProjectInstanceRelation,Integer> {
|
||||
/**
|
||||
* 根据项目id和类型找到流程实例id
|
||||
*/
|
||||
List<ProjectInstanceRelation> findAllByProjectIdEqualsAndProcessTypeEqualsOrderByCreateTimeDesc(int projectId, String processType);
|
||||
}
|
||||
|
|
|
@ -5,9 +5,13 @@ import cn.palmte.work.config.activiti.ActConstant;
|
|||
import cn.palmte.work.model.*;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import top.jfunc.common.utils.CollectionUtil;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author xiongshiyan at 2021/10/29 , contact me with email yanshixiong@126.com or phone 15208384257
|
||||
|
@ -27,39 +31,73 @@ public class ProjectInstanceService {
|
|||
/**
|
||||
* 开启一个概算流程实例
|
||||
*/
|
||||
public void startEstimateProcessInstance(Project p, Admin admin) throws Exception {
|
||||
startProcess(p, admin, ActConstant.PROCESS_DEFKEY_ESTIMATE);
|
||||
public void startEstimateProcessInstance(Project project, Admin admin) throws Exception {
|
||||
startProcess(project, admin, ActConstant.PROCESS_DEFKEY_ESTIMATE);
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回概算的所有的实例id,没有则空集合
|
||||
*/
|
||||
public List<String> getEstimateProcessInsIds(Project project){
|
||||
return getApproveInstanceIds(project, ActConstant.PROCESS_DEFKEY_ESTIMATE);
|
||||
}
|
||||
|
||||
/**
|
||||
* 开启一个预算流程实例
|
||||
*/
|
||||
public void startBudgetProcessInstance(Project p, Admin admin) throws Exception {
|
||||
startProcess(p, admin, ActConstant.PROCESS_DEFKEY_BUDGET);
|
||||
public void startBudgetProcessInstance(Project project, Admin admin) throws Exception {
|
||||
startProcess(project, admin, ActConstant.PROCESS_DEFKEY_BUDGET);
|
||||
}
|
||||
/**
|
||||
* 返回预算的所有的实例id,没有则空集合
|
||||
*/
|
||||
public List<String> getBudgetProcessInsIds(Project project){
|
||||
return getApproveInstanceIds(project, ActConstant.PROCESS_DEFKEY_BUDGET);
|
||||
}
|
||||
|
||||
/**
|
||||
* 开启一个结算流程实例
|
||||
*/
|
||||
public void startSettleProcessInstance(Project p, Admin admin) throws Exception {
|
||||
startProcess(p, admin, ActConstant.PROCESS_DEFKEY_SETTLE);
|
||||
public void startSettleProcessInstance(Project project, Admin admin) throws Exception {
|
||||
startProcess(project, admin, ActConstant.PROCESS_DEFKEY_SETTLE);
|
||||
}
|
||||
/**
|
||||
* 返回结算的所有的实例id,没有则空集合
|
||||
*/
|
||||
public List<String> getSettleProcessInsIds(Project project){
|
||||
return getApproveInstanceIds(project, ActConstant.PROCESS_DEFKEY_SETTLE);
|
||||
}
|
||||
/**
|
||||
* 开启一个决算流程实例
|
||||
*/
|
||||
public void startFinalProcessInstance(Project p, Admin admin) throws Exception {
|
||||
startProcess(p, admin, ActConstant.PROCESS_DEFKEY_FINAL);
|
||||
public void startFinalProcessInstance(Project project, Admin admin) throws Exception {
|
||||
startProcess(project, admin, ActConstant.PROCESS_DEFKEY_FINAL);
|
||||
}
|
||||
/**
|
||||
* 返回决算的所有的实例id,没有则空集合
|
||||
*/
|
||||
public List<String> getFinalProcessInsIds(Project project){
|
||||
return getApproveInstanceIds(project, ActConstant.PROCESS_DEFKEY_FINAL);
|
||||
}
|
||||
private List<String> getApproveInstanceIds(Project project, String processDefkey) {
|
||||
List<ProjectInstanceRelation> all = projectInstanceRelationRepository.findAllByProjectIdEqualsAndProcessTypeEqualsOrderByCreateTimeDesc(project.getId(), processDefkey);
|
||||
if (CollectionUtil.isEmpty(all)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return all.stream().map(ProjectInstanceRelation::getProcessInsId).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
private void startProcess(Project p, Admin admin, String processDefkey) throws Exception {
|
||||
private void startProcess(Project project, Admin admin, String processDefkey) throws Exception {
|
||||
HashMap<String, Object> variables = new HashMap<>();
|
||||
variables.put(ActConstant.START_PROCESS_USERID, admin.getId());
|
||||
variables.put(ActConstant.KEY_PROJECT_ID, p.getId());
|
||||
variables.put(ActConstant.KEY_PROJECT_TYPE, p.getType());
|
||||
variables.put(ActConstant.KEY_PROJECT_ID, project.getId());
|
||||
variables.put(ActConstant.KEY_PROJECT_TYPE, project.getType());
|
||||
|
||||
String processInstanceId = actProcInsService.startProcessInstance(processDefkey, variables);
|
||||
|
||||
//保存流程实例id与项目的关联关系
|
||||
ProjectInstanceRelation relation = new ProjectInstanceRelation();
|
||||
relation.setProjectId(p.getId());
|
||||
relation.setProjectId(project.getId());
|
||||
relation.setProcessType(processDefkey);
|
||||
relation.setProcessInsId(processInstanceId);
|
||||
relation.setCreateTime(new Date());
|
||||
|
|
Loading…
Reference in New Issue