Merge remote-tracking branch 'origin/1.2.0' into 1.2.0

master
OathK1per 2023-01-06 13:56:31 +08:00
commit c6455af9da
4 changed files with 59 additions and 18 deletions

View File

@ -388,17 +388,7 @@ public class ProcessController {
contract = processService.findProcurementContract(id); contract = processService.findProcurementContract(id);
supplierMaterials = processService.getSupplierMaterials(id); supplierMaterials = processService.getSupplierMaterials(id);
procurementDetails = processService.getProcurementDetails(project.getId(), id); procurementDetails = processService.getProcurementDetails(project.getId(), id);
BigDecimal contractAmount = BigDecimal.ZERO; BigDecimal contractAmount = ProjectProcess.getContractAmount(procurementDetails);
for (ProcurementDetail procurementDetail : procurementDetails) {
if (!CollectionUtils.isEmpty(procurementDetail.getPurchaseDetails())) {
for (BudgetPurchaseDetail purchaseDetail : procurementDetail.getPurchaseDetails()) {
BigDecimal totalTaxInclude = purchaseDetail.getTotalTaxInclude();
if (totalTaxInclude != null) {
contractAmount = contractAmount.add(totalTaxInclude);
}
}
}
}
detail.setContractAmount(contractAmount); detail.setContractAmount(contractAmount);
} }
@ -720,6 +710,9 @@ public class ProcessController {
@Transactional @Transactional
@PostMapping("/audit") @PostMapping("/audit")
public void audit(@RequestBody @Valid AuditForm form) { public void audit(@RequestBody @Valid AuditForm form) {
if (form.processId == null) {
throw ErrorMessageException.failed("表单错误");
}
ProjectProcess process = obtainProjectProcess(form.processId); ProjectProcess process = obtainProjectProcess(form.processId);
ActApproveTypeEnum approveType = form.processStatus == ProcessStatus.audit_passed ? ActApproveTypeEnum.APPROVAL_PASSED : ActApproveTypeEnum approveType = form.processStatus == ProcessStatus.audit_passed ? ActApproveTypeEnum.APPROVAL_PASSED :
ActApproveTypeEnum.APPROVAL_UN_PASS; ActApproveTypeEnum.APPROVAL_UN_PASS;

View File

@ -7,11 +7,14 @@ import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.GenericGenerator;
import org.springframework.util.CollectionUtils;
import java.io.IOException; import java.io.IOException;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
import javax.persistence.Convert; import javax.persistence.Convert;
import javax.persistence.Entity; import javax.persistence.Entity;
@ -129,6 +132,32 @@ public class ProjectProcess implements Serializable {
this.lastUpdateAt = this.createAt; this.lastUpdateAt = this.createAt;
} }
public static BigDecimal getContractAmount(List<ProcurementDetail> procurementDetails) {
BigDecimal contractAmount = BigDecimal.ZERO;
for (ProcurementDetail procurementDetail : procurementDetails) {
if (!CollectionUtils.isEmpty(procurementDetail.getPurchaseDetails())) {
for (BudgetPurchaseDetail purchaseDetail : procurementDetail.getPurchaseDetails()) {
BigDecimal totalTaxInclude = purchaseDetail.getTotalTaxInclude();
if (totalTaxInclude != null) {
contractAmount = contractAmount.add(totalTaxInclude);
}
}
}
}
return contractAmount;
}
public static BigDecimal getContractAmountByPurchaseDetail(List<BudgetPurchaseDetail> purchaseDetails) {
BigDecimal contractAmount = BigDecimal.ZERO;
for (BudgetPurchaseDetail purchaseDetail : purchaseDetails) {
BigDecimal totalTaxInclude = purchaseDetail.getTotalTaxInclude();
if (totalTaxInclude != null) {
contractAmount = contractAmount.add(totalTaxInclude);
}
}
return contractAmount;
}
static class SealTypeArraySerializer extends JsonSerializer<SealTypeArray> { static class SealTypeArraySerializer extends JsonSerializer<SealTypeArray> {
@Override @Override

View File

@ -108,9 +108,9 @@ public class ProjectProcessService {
return queryProject.getProcessType() == ProcessType.sale_contract; return queryProject.getProcessType() == ProcessType.sale_contract;
} }
public BigDecimal getContractAmount(int id) { public BigDecimal getContractAmount(int projectId) {
Map<String, Object> map = jdbcTemplate.queryForMap( Map<String, Object> map = jdbcTemplate.queryForMap(
"select ifnull(sum(amount * price), 0) contractAmount from project_budget_income_detail where project_id = ?", id); "select ifnull(sum(amount * price), 0) contractAmount from project_budget_income_detail where project_id = ?", projectId);
return (BigDecimal) map.values().iterator().next(); return (BigDecimal) map.values().iterator().next();
} }
@ -362,6 +362,13 @@ public class ProjectProcessService {
return query.getResultList(); return query.getResultList();
} }
private List<BudgetPurchaseDetail> getBudgetPurchaseDetailsByProcessId(int processId) {
TypedQuery<BudgetPurchaseDetail> query = entityManager.createQuery(
"from BudgetPurchaseDetail where processId=:processId", BudgetPurchaseDetail.class);
query.setParameter("processId", processId);
return query.getResultList();
}
private ProjectBudgetCostDetail getCostDetailById(int budgetCostId) { private ProjectBudgetCostDetail getCostDetailById(int budgetCostId) {
return entityManager.find(ProjectBudgetCostDetail.class, budgetCostId); return entityManager.find(ProjectBudgetCostDetail.class, budgetCostId);
} }
@ -486,8 +493,18 @@ public class ProjectProcessService {
// 垫资金额 // 垫资金额
BigDecimal repaidAmount = getProjectRepaidAmount(entity.getProjectId()); BigDecimal repaidAmount = getProjectRepaidAmount(entity.getProjectId());
variables.put("repaidAmount", repaidAmount); variables.put("repaidAmount", repaidAmount);
// 合同金额
variables.put("contractAmount", project.getContractAmount() == null ? 0 : project.getContractAmount()); if (entity.getProcessType() == ProcessType.procurement_contract) {
// 合同金额
List<BudgetPurchaseDetail> purchaseDetails = getBudgetPurchaseDetailsByProcessId(entity.getId());
BigDecimal contractAmount = ProjectProcess.getContractAmountByPurchaseDetail(purchaseDetails);
variables.put("contractAmount", contractAmount);
}
else {
// 合同金额
BigDecimal contractAmount = getContractAmount(project.getId());
variables.put("contractAmount", contractAmount);
}
// 项目类型 // 项目类型
variables.put("projectType", project.getType()); variables.put("projectType", project.getType());
// 合作类型 // 合作类型

View File

@ -377,6 +377,7 @@
auditForm: { auditForm: {
processStatus: null processStatus: null
}, },
processId: null,
auditFormVisible: false, auditFormVisible: false,
supplierMaterials: [] supplierMaterials: []
} }
@ -531,9 +532,9 @@
.finally(() => loading.close()) .finally(() => loading.close())
}, },
auditProcess(row, scope) { auditProcess() {
this.auditForm = { this.auditForm = {
processId: row.id, processId: this.processId,
processStatus: null processStatus: null
} }
this.auditFormVisible = true this.auditFormVisible = true
@ -560,7 +561,7 @@
}).then(checkStatus).then(data => { }).then(checkStatus).then(data => {
// 关闭对话框 // 关闭对话框
this.auditFormVisible = false this.auditFormVisible = false
this.queryTable() this.backLastPage()
this.$message({ this.$message({
showClose: true, showClose: true,
message: '审核成功', message: '审核成功',
@ -601,6 +602,7 @@
}, },
mounted() { mounted() {
const processId = ${processId} const processId = ${processId}
this.processId = processId
this.loadProject(processId) this.loadProject(processId)
}, },
filters: { filters: {