概算和预算发起审核逻辑
parent
fd30c37683
commit
eba5c793d9
|
@ -51,4 +51,23 @@ public class ActConstant {
|
|||
public static final String NUMBER_OF_COMPLETED_INSTANCES = "nrOfCompletedInstances";
|
||||
|
||||
|
||||
/**
|
||||
* 概算
|
||||
*/
|
||||
public static final String PROCESS_DEFKEY_ESTIMATE = "estimate";
|
||||
/**
|
||||
* 预算
|
||||
*/
|
||||
public static final String PROCESS_DEFKEY_BUDGET = "budget";
|
||||
/**
|
||||
* 结算
|
||||
*/
|
||||
public static final String PROCESS_DEFKEY_SETTLE = "settle";
|
||||
/**
|
||||
* 决算
|
||||
*/
|
||||
public static final String PROCESS_DEFKEY_FINAL = "final";
|
||||
|
||||
public static final String KEY_PROJECT_ID = "projectId";
|
||||
public static final String KEY_PROJECT_TYPE = "projectType";
|
||||
}
|
||||
|
|
|
@ -109,9 +109,8 @@ public class ProjectController extends BaseController{
|
|||
* 预算保存并提交审核
|
||||
*/
|
||||
@RequestMapping("/estimateAddSaveAndApprove")
|
||||
public String estimateAddSaveAndApprove(Project project, EstimateBean estimateBean, Map<String, Object> model) {
|
||||
projectService.estimateAddSave(project, estimateBean, InterfaceUtil.getAdmin(), ApproveStatusEnum.APPROVAL_PENDING);
|
||||
//TODO 发起审核
|
||||
public String estimateAddSaveAndApprove(Project project, EstimateBean estimateBean, Map<String, Object> model) throws Exception {
|
||||
projectService.estimateAddSaveAndApprove(project, estimateBean, InterfaceUtil.getAdmin());
|
||||
return "redirect:/project/list";
|
||||
}
|
||||
|
||||
|
@ -133,9 +132,8 @@ public class ProjectController extends BaseController{
|
|||
}
|
||||
|
||||
@RequestMapping("/estimateEditSaveAndApprove")
|
||||
public String estimateEditSaveAndApprove(Project project, EstimateBean estimateBean, Map<String, Object> model) {
|
||||
projectService.estimateEditSave(project, estimateBean, InterfaceUtil.getAdmin(), ApproveStatusEnum.APPROVAL_PENDING);
|
||||
//TODO 发起审核
|
||||
public String estimateEditSaveAndApprove(Project project, EstimateBean estimateBean, Map<String, Object> model) throws Exception {
|
||||
projectService.estimateEditSaveAndApprove(project, estimateBean, InterfaceUtil.getAdmin());
|
||||
return "redirect:/project/list";
|
||||
}
|
||||
|
||||
|
@ -181,8 +179,8 @@ public class ProjectController extends BaseController{
|
|||
* 进行项目预算保存并提交审核
|
||||
*/
|
||||
@RequestMapping("/budgetEditSaveAndApprove")
|
||||
public String budgetEditSaveAndApprove(Project project, BudgetBean budgetBean, Map<String, Object> model) {
|
||||
projectService.budgetEditSave(project, budgetBean, InterfaceUtil.getAdmin(), ApproveStatusEnum.APPROVAL_PENDING);
|
||||
public String budgetEditSaveAndApprove(Project project, BudgetBean budgetBean, Map<String, Object> model) throws Exception {
|
||||
projectService.budgetEditSaveAndApprove(project, budgetBean, InterfaceUtil.getAdmin());
|
||||
return "redirect:/project/list";
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,80 @@
|
|||
package cn.palmte.work.model;
|
||||
|
||||
import org.hibernate.annotations.GenericGenerator;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 项目与流程实例的关系
|
||||
*/
|
||||
@Entity
|
||||
@Table(name = "project_instance_relation")
|
||||
public class ProjectInstanceRelation {
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
@GenericGenerator(name = "persistenceGenerator", strategy = "increment")
|
||||
private Integer id;
|
||||
|
||||
@Column(name = "project_id")
|
||||
private int projectId;
|
||||
|
||||
/**
|
||||
* 流程类型:estimate、budget、settle、final
|
||||
*/
|
||||
@Column(name = "process_type")
|
||||
private String processType;
|
||||
|
||||
/**
|
||||
* 流程实例id
|
||||
*/
|
||||
@Column(name = "process_ins_id")
|
||||
private String processInsId;
|
||||
|
||||
@Column(name = "create_time")
|
||||
@Temporal(TemporalType.TIMESTAMP)
|
||||
private Date createTime;
|
||||
|
||||
public Integer getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Integer id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public int getProjectId() {
|
||||
return projectId;
|
||||
}
|
||||
|
||||
public void setProjectId(int projectId) {
|
||||
this.projectId = projectId;
|
||||
}
|
||||
|
||||
public String getProcessType() {
|
||||
return processType;
|
||||
}
|
||||
|
||||
public void setProcessType(String processType) {
|
||||
this.processType = processType;
|
||||
}
|
||||
|
||||
public String getProcessInsId() {
|
||||
return processInsId;
|
||||
}
|
||||
|
||||
public void setProcessInsId(String processInsId) {
|
||||
this.processInsId = processInsId;
|
||||
}
|
||||
|
||||
public Date getCreateTime() {
|
||||
return createTime;
|
||||
}
|
||||
|
||||
public void setCreateTime(Date createTime) {
|
||||
this.createTime = createTime;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
package cn.palmte.work.model;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
public interface ProjectInstanceRelationRepository extends JpaRepository<ProjectInstanceRelation,Integer> {
|
||||
}
|
|
@ -0,0 +1,67 @@
|
|||
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<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);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,9 +1,8 @@
|
|||
package cn.palmte.work.service;
|
||||
|
||||
import cn.palmte.work.bean.*;
|
||||
import cn.palmte.work.model.Admin;
|
||||
import cn.palmte.work.model.Project;
|
||||
import cn.palmte.work.model.ProjectRepository;
|
||||
import cn.palmte.work.config.activiti.ActConstant;
|
||||
import cn.palmte.work.model.*;
|
||||
import cn.palmte.work.utils.InterfaceUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
@ -14,6 +13,7 @@ import top.jfunc.common.db.utils.Pagination;
|
|||
import top.jfunc.common.utils.StrUtil;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
@ -30,6 +30,8 @@ public class ProjectService {
|
|||
private ProjectEstimateService projectEstimateService;
|
||||
@Autowired
|
||||
private ProjectBudgetService projectBudgetService;
|
||||
@Autowired
|
||||
private ProjectInstanceService projectInstanceService;
|
||||
|
||||
|
||||
private QueryHelper getQueryHelper(Map<String, String> searchInfo, int pageNumber, int pageSize) {
|
||||
|
@ -115,17 +117,48 @@ public class ProjectService {
|
|||
return projectRepository.findOne(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增概算保存项目并发起审核
|
||||
*/
|
||||
@Transactional(rollbackFor = RuntimeException.class)
|
||||
public Project estimateAddSaveAndApprove(Project project,
|
||||
EstimateBean estimateBean,
|
||||
Admin admin) throws Exception {
|
||||
Project p = estimateAddSave(project, estimateBean, admin, ApproveStatusEnum.APPROVAL_PENDING);
|
||||
|
||||
projectInstanceService.startEstimateProcessInstance(p, admin);
|
||||
|
||||
return project;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增概算保存项目
|
||||
*/
|
||||
@Transactional(rollbackFor = RuntimeException.class)
|
||||
public Project estimateAddSave(Project project, EstimateBean estimateBean, Admin admin, ApproveStatusEnum approveStatusEnum) {
|
||||
public Project estimateAddSave(Project project,
|
||||
EstimateBean estimateBean,
|
||||
Admin admin,
|
||||
ApproveStatusEnum approveStatusEnum) {
|
||||
Project p = addProject(project, admin, approveStatusEnum);
|
||||
projectEstimateService.saveEstimate(p, estimateBean);
|
||||
|
||||
return project;
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑概算保存项目并发起审核
|
||||
*/
|
||||
@Transactional(rollbackFor = RuntimeException.class)
|
||||
public Project estimateEditSaveAndApprove(Project project,
|
||||
EstimateBean estimateBean,
|
||||
Admin admin) throws Exception {
|
||||
Project p = estimateEditSave(project, estimateBean, admin, ApproveStatusEnum.APPROVAL_PENDING);
|
||||
|
||||
//TODO 此处找到以前的概算审批实例,然后完成任务
|
||||
//projectInstanceService.startEstimateProcessInstance(p, admin);
|
||||
|
||||
return p;
|
||||
}
|
||||
/**
|
||||
* 编辑概算保存项目
|
||||
*/
|
||||
|
@ -146,6 +179,10 @@ public class ProjectService {
|
|||
projectEstimateService.saveEstimate(p, estimateBean);
|
||||
return p;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private Project addProject(Project project, Admin admin, ApproveStatusEnum approveStatusEnum) {
|
||||
project.setTypeDesc(TypeEnum.parseType(project.getType()).getTypeDesc());
|
||||
project.setStatus(StatusEnum.CREATED.getStatus());
|
||||
|
@ -193,6 +230,15 @@ public class ProjectService {
|
|||
return p;
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑预算保存项目并审核
|
||||
*/
|
||||
@Transactional(rollbackFor = RuntimeException.class)
|
||||
public Project budgetEditSaveAndApprove(Project project, BudgetBean budgetBean, Admin admin) throws Exception {
|
||||
Project p = budgetEditSave(project, budgetBean, admin, ApproveStatusEnum.APPROVAL_PENDING);
|
||||
projectInstanceService.startBudgetProcessInstance(p, admin);
|
||||
return p;
|
||||
}
|
||||
/**
|
||||
* 编辑预算保存项目
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue