fourcal/src/main/java/cn/palmte/work/service/ProjectInstanceService.java

110 lines
4.2 KiB
Java
Raw Normal View History

2021-11-12 04:11:28 +00:00
package cn.palmte.work.service;
import cn.palmte.work.bean.ApproveStatusEnum;
2021-11-12 04:11:28 +00:00
import cn.palmte.work.config.activiti.ActConstant;
import cn.palmte.work.model.*;
2021-11-12 04:11:28 +00:00
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 ProjectRepository projectRepository;
@Autowired
private AdminService adminService;
2021-11-12 04:11:28 +00:00
@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<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());
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);
}
/**
*
* @param projectId id
* @param adminId id
*/
public void updateApprover(int projectId, int adminId){
Project project = projectRepository.findOne(projectId);
Admin admin = adminService.getAdminById(adminId);
project.setApproveId(adminId);
project.setApproveName(admin.getUserName());
project.setLastUpdateTime(new Date());
projectRepository.saveAndFlush(project);
}
/**
*
* @param projectId id
* @param approveStatusEnum 123
* @see ApproveStatusEnum
* @param processKey
* @see ActConstant#PROCESS_DEFKEY_ESTIMATE
* @see ActConstant#PROCESS_DEFKEY_BUDGET
* @see ActConstant#PROCESS_DEFKEY_SETTLE
* @see ActConstant#PROCESS_DEFKEY_FINAL
*/
public void updateApproveStatus(int projectId, ApproveStatusEnum approveStatusEnum, String processKey){
Project project = projectRepository.findOne(projectId);
if(ActConstant.PROCESS_DEFKEY_ESTIMATE.equals(processKey)){
project.setApproveStatusEstimate(approveStatusEnum.getApproveStatus());
}else if(ActConstant.PROCESS_DEFKEY_BUDGET.equals(processKey)){
project.setApproveStatusBudget(approveStatusEnum.getApproveStatus());
}else if(ActConstant.PROCESS_DEFKEY_SETTLE.equals(processKey)){
project.setApproveStatusSettle(approveStatusEnum.getApproveStatus());
}else if(ActConstant.PROCESS_DEFKEY_FINAL.equals(processKey)){
project.setApproveStatusFinal(approveStatusEnum.getApproveStatus());
}
project.setLastUpdateTime(new Date());
projectRepository.saveAndFlush(project);
}
2021-11-12 04:11:28 +00:00
}