提供获取项目流程实例的方法

master
xxssyyyyssxx 2021-11-12 14:49:13 +08:00
parent fe6bc622da
commit 7f8cc478cf
3 changed files with 57 additions and 13 deletions

View File

@ -12,7 +12,7 @@ public enum ApproveStatusEnum {
private int approveStatus; private int approveStatus;
private String approveStatusDesc; private String approveStatusDesc;
private ApproveStatusEnum(int approveStatus, String approveStatusDesc) { ApproveStatusEnum(int approveStatus, String approveStatusDesc) {
this.approveStatus = approveStatus; this.approveStatus = approveStatus;
this.approveStatusDesc = approveStatusDesc; this.approveStatusDesc = approveStatusDesc;
} }

View File

@ -2,5 +2,11 @@ package cn.palmte.work.model;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface ProjectInstanceRelationRepository extends JpaRepository<ProjectInstanceRelation,Integer> { public interface ProjectInstanceRelationRepository extends JpaRepository<ProjectInstanceRelation,Integer> {
/**
* idid
*/
List<ProjectInstanceRelation> findAllByProjectIdEqualsAndProcessTypeEqualsOrderByCreateTimeDesc(int projectId, String processType);
} }

View File

@ -5,9 +5,13 @@ import cn.palmte.work.config.activiti.ActConstant;
import cn.palmte.work.model.*; import cn.palmte.work.model.*;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import top.jfunc.common.utils.CollectionUtil;
import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.HashMap; 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 * @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 { public void startEstimateProcessInstance(Project project, Admin admin) throws Exception {
startProcess(p, admin, ActConstant.PROCESS_DEFKEY_ESTIMATE); 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 { public void startBudgetProcessInstance(Project project, Admin admin) throws Exception {
startProcess(p, admin, ActConstant.PROCESS_DEFKEY_BUDGET); 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 { public void startSettleProcessInstance(Project project, Admin admin) throws Exception {
startProcess(p, admin, ActConstant.PROCESS_DEFKEY_SETTLE); 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 { public void startFinalProcessInstance(Project project, Admin admin) throws Exception {
startProcess(p, admin, ActConstant.PROCESS_DEFKEY_FINAL); 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<>(); HashMap<String, Object> variables = new HashMap<>();
variables.put(ActConstant.START_PROCESS_USERID, admin.getId()); variables.put(ActConstant.START_PROCESS_USERID, admin.getId());
variables.put(ActConstant.KEY_PROJECT_ID, p.getId()); variables.put(ActConstant.KEY_PROJECT_ID, project.getId());
variables.put(ActConstant.KEY_PROJECT_TYPE, p.getType()); variables.put(ActConstant.KEY_PROJECT_TYPE, project.getType());
String processInstanceId = actProcInsService.startProcessInstance(processDefkey, variables); String processInstanceId = actProcInsService.startProcessInstance(processDefkey, variables);
//保存流程实例id与项目的关联关系 //保存流程实例id与项目的关联关系
ProjectInstanceRelation relation = new ProjectInstanceRelation(); ProjectInstanceRelation relation = new ProjectInstanceRelation();
relation.setProjectId(p.getId()); relation.setProjectId(project.getId());
relation.setProcessType(processDefkey); relation.setProcessType(processDefkey);
relation.setProcessInsId(processInstanceId); relation.setProcessInsId(processInstanceId);
relation.setCreateTime(new Date()); relation.setCreateTime(new Date());