流程审批变量

master
Harry Yang 2022-12-26 16:43:15 +08:00
parent e8d0a3c77a
commit ba4675994d
2 changed files with 41 additions and 17 deletions

View File

@ -121,6 +121,7 @@ public class ProcessController {
@GetMapping("/new")
public String newProcess(Model model) {
model.addAttribute("sealTypes", SealType.values());
model.addAttribute("procurementMode", ProcurementMode.values());
model.addAttribute("taxRate", Arrays.asList(0, 1, 3, 4, 5, 6, 9, 10, 13));
return "/admin/business/process-new";
}
@ -198,9 +199,7 @@ public class ProcessController {
}
private BigDecimal getRepaidAmount(int id) {
Map<String, Object> map = jdbcTemplate.queryForMap(
"select ifnull(sum(underwritten_plan), 0) repaidAmount from project_budget_plan_detail where project_id = ?", id);
return (BigDecimal) map.values().iterator().next();
return processService.getProjectRepaidAmount(id);
}
@ResponseBody
@ -281,8 +280,8 @@ public class ProcessController {
.build();
}
private static String isPrepaid(Project project) {
return project.getUnderwrittenMode() == 2 || project.getUnderwrittenMode() == 3 ? "是" : "否";
private String isPrepaid(Project project) {
return processService.isProjectPrepaid(project) ? "是" : "否";
}
@ResponseBody
@ -342,20 +341,17 @@ public class ProcessController {
entityManager.persist(entity);
HashMap<String, Object> variables = new HashMap<>();
if (entity.getProcessType() != null) {
switch (entity.getProcessType()) {
case sale_contract:
SaleContract saleContract = SaleContract.from(form);
saleContract.setProcessId(entity.getId());
entityManager.persist(saleContract);
variables.put("contract", saleContract);
break;
case business_procurement:
ProcurementContract procurementContract = ProcurementContract.from(form);
procurementContract.setProcessId(entity.getId());
entityManager.persist(procurementContract);
variables.put("contract", procurementContract);
break;
default:
throw new UnsupportedOperationException("还不支持");
@ -365,7 +361,8 @@ public class ProcessController {
processService.updateIncomeDetails(form.getIncomeDetails());
if (form.getStatus() == ProcessStatus.to_be_audit) {
processService.startAuditProgress(entity, variables);
// 发起流程
processService.startAuditProgress(entity);
}
}
@ -385,16 +382,13 @@ public class ProcessController {
entityManager.merge(entity);
HashMap<String, Object> variables = new HashMap<>();
switch (entity.getProcessType()) {
case sale_contract: {
SaleContract contract = processService.findSaleContract(form.getId());
contract.setClientName(form.getClientName());
contract.setPaymentTerms(form.getPaymentTerms());
contract.setApplyPersonPhone(form.getApplyPersonPhone());
entityManager.merge(contract);
variables.put("contract", contract);
break;
}
case business_procurement: {
@ -402,9 +396,7 @@ public class ProcessController {
contract.setMode(form.getProcurementMode());
contract.setPaymentTerms(form.getPaymentTerms());
contract.setSupplierName(form.getSupplierName());
entityManager.merge(contract);
variables.put("contract", contract);
break;
}
default:
@ -414,7 +406,7 @@ public class ProcessController {
processService.updateIncomeDetails(form.getIncomeDetails());
if (form.getStatus() == ProcessStatus.to_be_audit) {
processService.startAuditProgress(entity, variables);
processService.startAuditProgress(entity);
}
}

View File

@ -1,11 +1,11 @@
package cn.palmte.work.service;
import cn.palmte.work.config.activiti.ActProjectTypeEnum;
import org.springframework.jdbc.core.BatchPreparedStatementSetter;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.HashMap;
@ -16,8 +16,14 @@ import java.util.stream.Collectors;
import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;
import cn.palmte.work.config.activiti.ActProjectTypeEnum;
import cn.palmte.work.model.Admin;
import cn.palmte.work.model.Project;
import cn.palmte.work.model.ProjectRepository;
import cn.palmte.work.model.enums.CooperationType;
import cn.palmte.work.model.enums.Enumerable;
import cn.palmte.work.model.enums.ProcessStatus;
import cn.palmte.work.model.enums.ProjectType;
import cn.palmte.work.model.process.ProcurementContract;
import cn.palmte.work.model.process.ProjectProcess;
import cn.palmte.work.model.process.SaleContract;
@ -36,6 +42,7 @@ public class ProjectProcessService {
private final JdbcTemplate jdbcTemplate;
private final EntityManager entityManager;
private final ProjectInstanceService projectInstanceService;
private final ProjectRepository projectRepository;
/**
*
@ -126,21 +133,46 @@ public class ProjectProcessService {
}
}
public BigDecimal getProjectRepaidAmount(int projectId) {
Map<String, Object> map = jdbcTemplate.queryForMap(
"select ifnull(sum(underwritten_plan), 0) repaidAmount from project_budget_plan_detail where project_id = ?", projectId);
return (BigDecimal) map.values().iterator().next();
}
/**
*
*/
public void startAuditProgress(ProjectProcess entity) {
HashMap<String, Object> variables = new HashMap<>();
Project project = projectRepository.findById(entity.getProjectId());
// 是否垫资
variables.put("isPrepaid", isProjectPrepaid(project));
// 垫资金额
BigDecimal repaidAmount = getProjectRepaidAmount(entity.getProjectId());
variables.put("repaidAmount", repaidAmount);
// 合同金额
variables.put("contractAmount", project.getContractAmount());
// 项目类型
variables.put("projectType", Enumerable.of(ProjectType.class, project.getType()));
// 合作类型
variables.put("cooperationType", Enumerable.of(CooperationType.class, project.getCooperateType()));
startAuditProgress(entity, variables);
}
/**
*
*/
public boolean isProjectPrepaid(Project project) {
return project.getUnderwrittenMode() == 2 || project.getUnderwrittenMode() == 3;
}
/**
*
*/
@SneakyThrows
public void startAuditProgress(ProjectProcess entity, Map<String, Object> variables) {
if (entity.getStatus() == ProcessStatus.to_be_audit) {
variables.put("process", entity);
switch (entity.getProcessType()) {
case sale_contract:
projectInstanceService.startProcessByProjectId(entity.getId(), ActProjectTypeEnum.SALE_CONTRACT, variables);