流程审批变量

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") @GetMapping("/new")
public String newProcess(Model model) { public String newProcess(Model model) {
model.addAttribute("sealTypes", SealType.values()); model.addAttribute("sealTypes", SealType.values());
model.addAttribute("procurementMode", ProcurementMode.values());
model.addAttribute("taxRate", Arrays.asList(0, 1, 3, 4, 5, 6, 9, 10, 13)); model.addAttribute("taxRate", Arrays.asList(0, 1, 3, 4, 5, 6, 9, 10, 13));
return "/admin/business/process-new"; return "/admin/business/process-new";
} }
@ -198,9 +199,7 @@ public class ProcessController {
} }
private BigDecimal getRepaidAmount(int id) { private BigDecimal getRepaidAmount(int id) {
Map<String, Object> map = jdbcTemplate.queryForMap( return processService.getProjectRepaidAmount(id);
"select ifnull(sum(underwritten_plan), 0) repaidAmount from project_budget_plan_detail where project_id = ?", id);
return (BigDecimal) map.values().iterator().next();
} }
@ResponseBody @ResponseBody
@ -281,8 +280,8 @@ public class ProcessController {
.build(); .build();
} }
private static String isPrepaid(Project project) { private String isPrepaid(Project project) {
return project.getUnderwrittenMode() == 2 || project.getUnderwrittenMode() == 3 ? "是" : "否"; return processService.isProjectPrepaid(project) ? "是" : "否";
} }
@ResponseBody @ResponseBody
@ -342,20 +341,17 @@ public class ProcessController {
entityManager.persist(entity); entityManager.persist(entity);
HashMap<String, Object> variables = new HashMap<>();
if (entity.getProcessType() != null) { if (entity.getProcessType() != null) {
switch (entity.getProcessType()) { switch (entity.getProcessType()) {
case sale_contract: case sale_contract:
SaleContract saleContract = SaleContract.from(form); SaleContract saleContract = SaleContract.from(form);
saleContract.setProcessId(entity.getId()); saleContract.setProcessId(entity.getId());
entityManager.persist(saleContract); entityManager.persist(saleContract);
variables.put("contract", saleContract);
break; break;
case business_procurement: case business_procurement:
ProcurementContract procurementContract = ProcurementContract.from(form); ProcurementContract procurementContract = ProcurementContract.from(form);
procurementContract.setProcessId(entity.getId()); procurementContract.setProcessId(entity.getId());
entityManager.persist(procurementContract); entityManager.persist(procurementContract);
variables.put("contract", procurementContract);
break; break;
default: default:
throw new UnsupportedOperationException("还不支持"); throw new UnsupportedOperationException("还不支持");
@ -365,7 +361,8 @@ public class ProcessController {
processService.updateIncomeDetails(form.getIncomeDetails()); processService.updateIncomeDetails(form.getIncomeDetails());
if (form.getStatus() == ProcessStatus.to_be_audit) { if (form.getStatus() == ProcessStatus.to_be_audit) {
processService.startAuditProgress(entity, variables); // 发起流程
processService.startAuditProgress(entity);
} }
} }
@ -385,16 +382,13 @@ public class ProcessController {
entityManager.merge(entity); entityManager.merge(entity);
HashMap<String, Object> variables = new HashMap<>();
switch (entity.getProcessType()) { switch (entity.getProcessType()) {
case sale_contract: { case sale_contract: {
SaleContract contract = processService.findSaleContract(form.getId()); SaleContract contract = processService.findSaleContract(form.getId());
contract.setClientName(form.getClientName()); contract.setClientName(form.getClientName());
contract.setPaymentTerms(form.getPaymentTerms()); contract.setPaymentTerms(form.getPaymentTerms());
contract.setApplyPersonPhone(form.getApplyPersonPhone()); contract.setApplyPersonPhone(form.getApplyPersonPhone());
entityManager.merge(contract); entityManager.merge(contract);
variables.put("contract", contract);
break; break;
} }
case business_procurement: { case business_procurement: {
@ -402,9 +396,7 @@ public class ProcessController {
contract.setMode(form.getProcurementMode()); contract.setMode(form.getProcurementMode());
contract.setPaymentTerms(form.getPaymentTerms()); contract.setPaymentTerms(form.getPaymentTerms());
contract.setSupplierName(form.getSupplierName()); contract.setSupplierName(form.getSupplierName());
entityManager.merge(contract); entityManager.merge(contract);
variables.put("contract", contract);
break; break;
} }
default: default:
@ -414,7 +406,7 @@ public class ProcessController {
processService.updateIncomeDetails(form.getIncomeDetails()); processService.updateIncomeDetails(form.getIncomeDetails());
if (form.getStatus() == ProcessStatus.to_be_audit) { 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; package cn.palmte.work.service;
import cn.palmte.work.config.activiti.ActProjectTypeEnum;
import org.springframework.jdbc.core.BatchPreparedStatementSetter; import org.springframework.jdbc.core.BatchPreparedStatementSetter;
import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.HashMap; import java.util.HashMap;
@ -16,8 +16,14 @@ import java.util.stream.Collectors;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.TypedQuery; import javax.persistence.TypedQuery;
import cn.palmte.work.config.activiti.ActProjectTypeEnum;
import cn.palmte.work.model.Admin; 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.ProcessStatus;
import cn.palmte.work.model.enums.ProjectType;
import cn.palmte.work.model.process.ProcurementContract; import cn.palmte.work.model.process.ProcurementContract;
import cn.palmte.work.model.process.ProjectProcess; import cn.palmte.work.model.process.ProjectProcess;
import cn.palmte.work.model.process.SaleContract; import cn.palmte.work.model.process.SaleContract;
@ -36,6 +42,7 @@ public class ProjectProcessService {
private final JdbcTemplate jdbcTemplate; private final JdbcTemplate jdbcTemplate;
private final EntityManager entityManager; private final EntityManager entityManager;
private final ProjectInstanceService projectInstanceService; 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) { public void startAuditProgress(ProjectProcess entity) {
HashMap<String, Object> variables = new HashMap<>(); 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); startAuditProgress(entity, variables);
} }
/**
*
*/
public boolean isProjectPrepaid(Project project) {
return project.getUnderwrittenMode() == 2 || project.getUnderwrittenMode() == 3;
}
/** /**
* *
*/ */
@SneakyThrows @SneakyThrows
public void startAuditProgress(ProjectProcess entity, Map<String, Object> variables) { public void startAuditProgress(ProjectProcess entity, Map<String, Object> variables) {
if (entity.getStatus() == ProcessStatus.to_be_audit) { if (entity.getStatus() == ProcessStatus.to_be_audit) {
variables.put("process", entity);
switch (entity.getProcessType()) { switch (entity.getProcessType()) {
case sale_contract: case sale_contract:
projectInstanceService.startProcessByProjectId(entity.getId(), ActProjectTypeEnum.SALE_CONTRACT, variables); projectInstanceService.startProcessByProjectId(entity.getId(), ActProjectTypeEnum.SALE_CONTRACT, variables);