package cn.palmte.work.service; import cn.palmte.work.config.activiti.ActConstant; import cn.palmte.work.model.Admin; import cn.palmte.work.model.Project; import cn.palmte.work.model.ProjectInstanceRelation; import cn.palmte.work.model.ProjectInstanceRelationRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Date; import java.util.HashMap; /** * @author xiongshiyan at 2021/10/29 , contact me with email yanshixiong@126.com or phone 15208384257 */ @Service public class ProjectInstanceService { @Autowired private ActProcInsService actProcInsService; @Autowired private ProjectInstanceRelationRepository projectInstanceRelationRepository; /** * 开启一个概算流程实例 */ public void startEstimateProcessInstance(Project p, Admin admin) throws Exception { startProcess(p, admin, ActConstant.PROCESS_DEFKEY_ESTIMATE); } /** * 开启一个预算流程实例 */ public void startBudgetProcessInstance(Project p, Admin admin) throws Exception { startProcess(p, admin, ActConstant.PROCESS_DEFKEY_BUDGET); } /** * 开启一个结算流程实例 */ public void startSettleProcessInstance(Project p, Admin admin) throws Exception { startProcess(p, admin, ActConstant.PROCESS_DEFKEY_SETTLE); } /** * 开启一个决算流程实例 */ public void startFinalProcessInstance(Project p, Admin admin) throws Exception { startProcess(p, admin, ActConstant.PROCESS_DEFKEY_FINAL); } private void startProcess(Project p, 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()); String processInstanceId = actProcInsService.startProcessInstance(processDefkey, variables); //保存流程实例id与项目的关联关系 ProjectInstanceRelation relation = new ProjectInstanceRelation(); relation.setProjectId(p.getId()); relation.setProcessType(processDefkey); relation.setProcessInsId(processInstanceId); relation.setCreateTime(new Date()); projectInstanceRelationRepository.saveAndFlush(relation); } }