概算和预算发起审核逻辑

master
xxssyyyyssxx 2021-11-12 12:11:28 +08:00
parent fd30c37683
commit eba5c793d9
6 changed files with 228 additions and 12 deletions

View File

@ -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";
}

View File

@ -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";
}

View File

@ -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;
/**
* estimatebudgetsettlefinal
*/
@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;
}
}

View File

@ -0,0 +1,6 @@
package cn.palmte.work.model;
import org.springframework.data.jpa.repository.JpaRepository;
public interface ProjectInstanceRelationRepository extends JpaRepository<ProjectInstanceRelation,Integer> {
}

View File

@ -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);
}
}

View File

@ -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;
}
/**
*
*/