diff --git a/src/main/java/cn/palmte/work/bean/ApproveStatusEnum.java b/src/main/java/cn/palmte/work/bean/ApproveStatusEnum.java index 83b382b..ef2af42 100644 --- a/src/main/java/cn/palmte/work/bean/ApproveStatusEnum.java +++ b/src/main/java/cn/palmte/work/bean/ApproveStatusEnum.java @@ -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; } diff --git a/src/main/java/cn/palmte/work/model/ProjectInstanceRelationRepository.java b/src/main/java/cn/palmte/work/model/ProjectInstanceRelationRepository.java index 875236d..a51082c 100644 --- a/src/main/java/cn/palmte/work/model/ProjectInstanceRelationRepository.java +++ b/src/main/java/cn/palmte/work/model/ProjectInstanceRelationRepository.java @@ -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 { + /** + * 根据项目id和类型找到流程实例id + */ + List findAllByProjectIdEqualsAndProcessTypeEqualsOrderByCreateTimeDesc(int projectId, String processType); } diff --git a/src/main/java/cn/palmte/work/service/ProjectInstanceService.java b/src/main/java/cn/palmte/work/service/ProjectInstanceService.java index f98b950..e81ec79 100644 --- a/src/main/java/cn/palmte/work/service/ProjectInstanceService.java +++ b/src/main/java/cn/palmte/work/service/ProjectInstanceService.java @@ -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 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 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 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 getFinalProcessInsIds(Project project){ + return getApproveInstanceIds(project, ActConstant.PROCESS_DEFKEY_FINAL); + } + private List getApproveInstanceIds(Project project, String processDefkey) { + List 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 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());