2021-11-12 04:11:28 +00:00
|
|
|
|
package cn.palmte.work.service;
|
|
|
|
|
|
|
2021-11-12 05:13:20 +00:00
|
|
|
|
import cn.palmte.work.bean.ApproveStatusEnum;
|
2021-11-12 04:11:28 +00:00
|
|
|
|
import cn.palmte.work.config.activiti.ActConstant;
|
2021-11-12 05:13:20 +00:00
|
|
|
|
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 {
|
2021-11-12 05:13:20 +00:00
|
|
|
|
@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);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2021-11-12 05:13:20 +00:00
|
|
|
|
/**
|
|
|
|
|
|
* 更新审批人,用于在任务监听器中更新下个审批人
|
|
|
|
|
|
* @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 审批状态 1待审核,2审核通过,3审核不通过
|
|
|
|
|
|
* @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
|
|
|
|
}
|