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);
supplierMaterials = processService.getSupplierMaterials(id);
procurementDetails = processService.getProcurementDetails(project.getId(), id);
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);
}
}
}
}
BigDecimal contractAmount = ProjectProcess.getContractAmount(procurementDetails);
detail.setContractAmount(contractAmount);
}
@ -720,6 +710,9 @@ public class ProcessController {
@Transactional
@PostMapping("/audit")
public void audit(@RequestBody @Valid AuditForm form) {
if (form.processId == null) {
throw ErrorMessageException.failed("表单错误");
}
ProjectProcess process = obtainProjectProcess(form.processId);
ActApproveTypeEnum approveType = form.processStatus == ProcessStatus.audit_passed ? ActApproveTypeEnum.APPROVAL_PASSED :
ActApproveTypeEnum.APPROVAL_UN_PASS;

View File

@ -7,11 +7,14 @@ import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import org.hibernate.annotations.GenericGenerator;
import org.springframework.util.CollectionUtils;
import java.io.IOException;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import javax.persistence.Convert;
import javax.persistence.Entity;
@ -129,6 +132,32 @@ public class ProjectProcess implements Serializable {
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> {
@Override

View File

@ -108,9 +108,9 @@ public class ProjectProcessService {
return queryProject.getProcessType() == ProcessType.sale_contract;
}
public BigDecimal getContractAmount(int id) {
public BigDecimal getContractAmount(int projectId) {
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();
}
@ -362,6 +362,13 @@ public class ProjectProcessService {
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) {
return entityManager.find(ProjectBudgetCostDetail.class, budgetCostId);
}
@ -486,8 +493,18 @@ public class ProjectProcessService {
// 垫资金额
BigDecimal repaidAmount = getProjectRepaidAmount(entity.getProjectId());
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());
// 合作类型

View File

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