From d06f4732d03d14f8ef69da81951280ace22f7ee2 Mon Sep 17 00:00:00 2001 From: OathK1per Date: Mon, 15 Aug 2022 14:36:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=9B=E7=AE=97=E9=A2=84=E7=AE=97=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/palmte/work/bean/BudgetBean.java | 109 ++++++++++++++++++ .../cn/palmte/work/bean/IncomeCostBean.java | 20 ++++ .../controller/backend/ProjectController.java | 27 +++++ .../work/service/ProjectBudgetService.java | 1 + .../palmte/work/service/ProjectService.java | 21 +++- .../templates/admin/project_budget_edit.ftl | 6 +- 6 files changed, 180 insertions(+), 4 deletions(-) diff --git a/src/main/java/cn/palmte/work/bean/BudgetBean.java b/src/main/java/cn/palmte/work/bean/BudgetBean.java index cba21c5..4609f23 100644 --- a/src/main/java/cn/palmte/work/bean/BudgetBean.java +++ b/src/main/java/cn/palmte/work/bean/BudgetBean.java @@ -15,6 +15,42 @@ public class BudgetBean extends IncomeCostBean{ * 总的采购成本含税 */ private BigDecimal costPurchaseTotalTaxInclude; + /** + * 设备收入税金 + */ + private BigDecimal incomeDeviceTax; + /** + * 设施收入税金 + */ + private BigDecimal incomeEngineerTax; + /** + * 服务收入税金 + */ + private BigDecimal incomeServiceTax; + /** + * 总收入税金 + */ + private BigDecimal incomeTotalTax; + /** + * 采购设备成本税金 + */ + private BigDecimal costPurchaseDeviceTax; + /** + * 采购施工成本税金 + */ + private BigDecimal costPurchaseBuildTax; + /** + * 采购服务成本税金 + */ + private BigDecimal costPurchaseServiceTax; + /** + * 采购其他成本含税 + */ + private BigDecimal costPurchaseOtherTax; + /** + * 采购其他成本含税 + */ + private BigDecimal costOtherOtherTax; /** * null就返回0 */ @@ -38,4 +74,77 @@ public class BudgetBean extends IncomeCostBean{ public void setCostPurchaseTotalTaxInclude(BigDecimal costPurchaseTotalTaxInclude) { this.costPurchaseTotalTaxInclude = costPurchaseTotalTaxInclude; } + + public BigDecimal getIncomeDeviceTax() { + return incomeDeviceTax; + } + + public void setIncomeDeviceTax(BigDecimal incomeDeviceTax) { + this.incomeDeviceTax = incomeDeviceTax; + } + + public BigDecimal getIncomeEngineerTax() { + return incomeEngineerTax; + } + + public void setIncomeEngineerTax(BigDecimal incomeEngineerTax) { + this.incomeEngineerTax = incomeEngineerTax; + } + + public BigDecimal getIncomeServiceTax() { + return incomeServiceTax; + } + + public void setIncomeServiceTax(BigDecimal incomeServiceTax) { + this.incomeServiceTax = incomeServiceTax; + } + + @Override + public BigDecimal getIncomeTotalTax() { + return incomeTotalTax; + } + + public void setIncomeTotalTax(BigDecimal incomeTotalTax) { + this.incomeTotalTax = incomeTotalTax; + } + + public BigDecimal getCostPurchaseDeviceTax() { + return costPurchaseDeviceTax; + } + + public void setCostPurchaseDeviceTax(BigDecimal costPurchaseDeviceTax) { + this.costPurchaseDeviceTax = costPurchaseDeviceTax; + } + + public BigDecimal getCostPurchaseBuildTax() { + return costPurchaseBuildTax; + } + + public void setCostPurchaseBuildTax(BigDecimal costPurchaseBuildTax) { + this.costPurchaseBuildTax = costPurchaseBuildTax; + } + + public BigDecimal getCostPurchaseServiceTax() { + return costPurchaseServiceTax; + } + + public void setCostPurchaseServiceTax(BigDecimal costPurchaseServiceTax) { + this.costPurchaseServiceTax = costPurchaseServiceTax; + } + + public BigDecimal getCostPurchaseOtherTax() { + return costPurchaseOtherTax; + } + + public void setCostPurchaseOtherTax(BigDecimal costPurchaseOtherTax) { + this.costPurchaseOtherTax = costPurchaseOtherTax; + } + + public BigDecimal getCostOtherOtherTax() { + return costOtherOtherTax; + } + + public void setCostOtherOtherTax(BigDecimal costOtherOtherTax) { + this.costOtherOtherTax = costOtherOtherTax; + } } diff --git a/src/main/java/cn/palmte/work/bean/IncomeCostBean.java b/src/main/java/cn/palmte/work/bean/IncomeCostBean.java index f2affd9..57a0b25 100644 --- a/src/main/java/cn/palmte/work/bean/IncomeCostBean.java +++ b/src/main/java/cn/palmte/work/bean/IncomeCostBean.java @@ -406,6 +406,16 @@ public abstract class IncomeCostBean { .add(incomeServiceTaxExclude); } + /** + * 计算所有的成本税金 + */ + public BigDecimal getIncomeTotalTax() { + if (getIncomeTotalTaxInclude() == null || getIncomeTotalTaxInclude() == null) { + return handleSpecial(null); + } + return getIncomeTotalTaxInclude().subtract(getIncomeTotalTaxInclude()); + } + /** * 计算所有的成本含税 */ @@ -458,6 +468,16 @@ public abstract class IncomeCostBean { .add(costOtherOtherTaxExclude); } + /** + * 计算所有的成本税金 + */ + public BigDecimal getCostTotalTax() { + if (getCostTotalTaxExclude() == null || getCostTotalTaxInclude() == null) { + return handleSpecial(null); + } + return getCostTotalTaxInclude().subtract(getCostTotalTaxExclude()); + } + /** * 计算项目毛利 * 收入总计(不含税)-成本总计(不含税)-财务费用总计(不含税) diff --git a/src/main/java/cn/palmte/work/controller/backend/ProjectController.java b/src/main/java/cn/palmte/work/controller/backend/ProjectController.java index 0361039..4293378 100644 --- a/src/main/java/cn/palmte/work/controller/backend/ProjectController.java +++ b/src/main/java/cn/palmte/work/controller/backend/ProjectController.java @@ -30,6 +30,7 @@ import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; +import java.math.BigDecimal; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; @@ -287,10 +288,36 @@ public class ProjectController extends BaseController { model.put("budgetBean", budgetBean); //收入明细 List budgetIncomeDetail = projectBudgetService.getBudgetIncomeDetail(project); + Set rates = new HashSet<>(); + StringBuilder incomeTaxSb = new StringBuilder(); + for (ProjectBudgetIncomeDetail projectBudgetIncomeDetail : budgetIncomeDetail) { + if (!rates.contains(projectBudgetIncomeDetail.getTaxRate().toPlainString())) { + incomeTaxSb.append(projectBudgetIncomeDetail.getTaxRate().toPlainString()).append(","); + rates.add(projectBudgetIncomeDetail.getTaxRate().toPlainString()); + } + } + if (incomeTaxSb.lastIndexOf(",") == incomeTaxSb.length() - 1) { + model.put("incomeTaxRates", incomeTaxSb.substring(0, incomeTaxSb.length() - 2)); + } else { + model.put("incomeTaxRates", incomeTaxSb.toString()); + } model.put("incomeDetails", budgetIncomeDetail); model.put("incomeTotalAmount", projectBudgetService.getBudgetIncomeAmount(project)); //成本明细 List budgetCostDetail = projectBudgetService.getBudgetCostDetail(project); + Set rates2 = new HashSet<>(); + StringBuilder costTaxSb = new StringBuilder(); + for (ProjectBudgetCostDetail projectBudgetCostDetail : budgetCostDetail) { + if (!rates2.contains(projectBudgetCostDetail.getTaxRate().toPlainString())) { + costTaxSb.append(projectBudgetCostDetail.getTaxRate().toPlainString()).append(","); + rates2.add(projectBudgetCostDetail.getTaxRate().toPlainString()); + } + } + if (costTaxSb.lastIndexOf(",") == costTaxSb.length() - 1) { + model.put("costTaxRates", costTaxSb.substring(0, costTaxSb.length() - 2)); + } else { + model.put("costTaxRates", costTaxSb.toString()); + } model.put("costDetails", budgetCostDetail); model.put("costTotalAmount", projectBudgetService.getBudgetCostAmount(project)); //项目管理成本明细 diff --git a/src/main/java/cn/palmte/work/service/ProjectBudgetService.java b/src/main/java/cn/palmte/work/service/ProjectBudgetService.java index 88b167b..e6e6f05 100644 --- a/src/main/java/cn/palmte/work/service/ProjectBudgetService.java +++ b/src/main/java/cn/palmte/work/service/ProjectBudgetService.java @@ -186,6 +186,7 @@ public class ProjectBudgetService { List collectDevice = incomeDetails.stream().filter(d -> d.getType() == ProjectBudgetIncomeDetail.TYPE_DEVICE).collect(Collectors.toList()); budgetBean.setIncomeDeviceTaxInclude(getIncomeTotalTaxInclude(collectDevice)); budgetBean.setIncomeDeviceTaxExclude(getIncomeTotalTaxExclude(collectDevice)); +// budgetBean.setIncomeDeviceTax(); //工程类收入,含税和不含税 List collectEngineer = incomeDetails.stream().filter(d -> d.getType() == ProjectBudgetIncomeDetail.TYPE_ENGINEER).collect(Collectors.toList()); budgetBean.setIncomeEngineerTaxInclude(getIncomeTotalTaxInclude(collectEngineer)); diff --git a/src/main/java/cn/palmte/work/service/ProjectService.java b/src/main/java/cn/palmte/work/service/ProjectService.java index ce2ec90..bd5fb43 100644 --- a/src/main/java/cn/palmte/work/service/ProjectService.java +++ b/src/main/java/cn/palmte/work/service/ProjectService.java @@ -191,7 +191,6 @@ public class ProjectService { //只有如下可以修改 projectInDb.setName(project.getName()); - projectInDb.setProjectNo(project.getProjectNo()); projectInDb.setCustomer(project.getCustomer()); projectInDb.setTerminalCustomer(project.getTerminalCustomer()); projectInDb.setIndustryScenario(project.getIndustryScenario()); @@ -199,13 +198,33 @@ public class ProjectService { projectInDb.setTypeDesc(TypeEnum.parseType(project.getType()).getTypeDesc()); projectInDb.setUnderwrittenMode(project.getUnderwrittenMode()); projectInDb.setUnderwrittenModeStr(UnderwrittenModeEnum.parseUnderwrittenMode(project.getUnderwrittenMode()).getUnderwrittenModeStr()); + projectInDb.setCertainty(project.getCertainty()); + projectInDb.setCertaintyStr(CertaintyEnum.parseCertainty(project.getCertainty()).getCertaintyStr()); + projectInDb.setIsSecond(project.getIsSecond()); + projectInDb.setIsSecondStr(IsSecondEnum.parseIsSecond(project.getIsSecond()).getIsSecondStr()); + projectInDb.setSignType(project.getSignType()); + projectInDb.setSignTypeStr(SignTypeEnum.parseSignType(project.getSignType()).getSignTypeStr()); + projectInDb.setResolvePlan(project.getResolvePlan()); + projectInDb.setResolvePlanStr(ResolvePlanEnum.parseResolvePlan(project.getResolvePlan()).getResolvePlanStr()); + projectInDb.setCollaborator(project.getCollaborator()); + projectInDb.setGrossProfit(project.getGrossProfit()); + projectInDb.setGrossProfitMargin(project.getGrossProfitMargin()); projectInDb.setStartDate(project.getStartDate()); projectInDb.setEndDate(project.getEndDate()); projectInDb.setContractAmount(project.getContractAmount()); projectInDb.setHuazhiProductAmount(project.getHuazhiProductAmount()); + projectInDb.setHuizhiProductAmount(project.getHuizhiProductAmount()); + projectInDb.setHuasanProductAmount(project.getHuasanProductAmount()); projectInDb.setZiguangOtherAmount(project.getZiguangOtherAmount()); + projectInDb.setPrincipal(project.getPrincipal()); + projectInDb.setContractTime(project.getContractTime()); + projectInDb.setBidsTime(project.getBidsTime()); + projectInDb.setAdvanceInterestAmount(project.getAdvanceInterestAmount()); + projectInDb.setAdvancePeakAmount(project.getAdvancePeakAmount()); projectInDb.setMainContractCollectionTerms(project.getMainContractCollectionTerms()); + projectInDb.setMainContractResolvePlan(project.getMainContractResolvePlan()); + projectInDb.setCalculationCollection(project.getCalculationCollection()); projectInDb.setValueRisk(project.getValueRisk()); projectInDb.setOtherName(project.getOtherName()); diff --git a/src/main/resources/templates/admin/project_budget_edit.ftl b/src/main/resources/templates/admin/project_budget_edit.ftl index 47bde6e..c363728 100644 --- a/src/main/resources/templates/admin/project_budget_edit.ftl +++ b/src/main/resources/templates/admin/project_budget_edit.ftl @@ -986,7 +986,7 @@ - 备注:本表所用税率分别为:${Utils.format(budgetBean.incomeTaxRates,'0')} + (备注:本表所用税率分别为:${incomeTaxRates!}) 成本 <#-- 采购成本明细表 @@ -1039,7 +1039,7 @@ 项目管理成本 - + 成本 @@ -1059,7 +1059,7 @@ - 备注:本表所用税率分别为:${Utils.format(budgetBean.costTaxRates,'0')} + (备注:本表所用税率分别为:${costTaxRates!}) 管理 <#--资金计划表-->