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 70a428c..875d071 100644 --- a/src/main/java/cn/palmte/work/controller/backend/ProjectController.java +++ b/src/main/java/cn/palmte/work/controller/backend/ProjectController.java @@ -188,7 +188,6 @@ public class ProjectController extends BaseController{ Project project = projectService.getProject(jsonObject.getInteger("projectId")); - projectBudgetService.clearBudgetIncomeDetail(project); projectBudgetService.saveBudgetIncomeDetail(project, detailList); return ResponseMsg.buildSuccessMsg("成功"); @@ -209,7 +208,6 @@ public class ProjectController extends BaseController{ Project project = projectService.getProject(jsonObject.getInteger("projectId")); - projectBudgetService.clearBudgetCostDetail(project); projectBudgetService.saveBudgetCostDetail(project, detailList); return ResponseMsg.buildSuccessMsg("成功"); @@ -230,7 +228,6 @@ public class ProjectController extends BaseController{ Project project = projectService.getProject(jsonObject.getInteger("projectId")); - projectBudgetService.clearBudgetCostProjectManageDetail(project); projectBudgetService.saveBudgetCostProjectManageDetail(project, detailList); return ResponseMsg.buildSuccessMsg("成功"); @@ -251,7 +248,6 @@ public class ProjectController extends BaseController{ Project project = projectService.getProject(jsonObject.getInteger("projectId")); - projectBudgetService.clearBudgetPlanDetail(project); projectBudgetService.saveBudgetPlanDetail(project, detailList); return ResponseMsg.buildSuccessMsg("成功"); diff --git a/src/main/java/cn/palmte/work/service/ProjectBudgetService.java b/src/main/java/cn/palmte/work/service/ProjectBudgetService.java index 92a7260..75e4881 100644 --- a/src/main/java/cn/palmte/work/service/ProjectBudgetService.java +++ b/src/main/java/cn/palmte/work/service/ProjectBudgetService.java @@ -5,6 +5,7 @@ import cn.palmte.work.model.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import top.jfunc.common.utils.CollectionUtil; import java.math.BigDecimal; @@ -225,7 +226,9 @@ public class ProjectBudgetService { /** * 保存项目的收入明细 */ + @Transactional(rollbackFor = RuntimeException.class) public void saveBudgetIncomeDetail(Project project, List detailList){ + clearBudgetIncomeDetail(project); if(CollectionUtil.isNotEmpty(detailList)){ for (ProjectBudgetIncomeDetail projectBudgetIncomeDetail : detailList) { projectBudgetIncomeDetail.setProjectId(project.getId()); @@ -253,7 +256,10 @@ public class ProjectBudgetService { /** * 保存项目的成本明细 */ + @Transactional(rollbackFor = RuntimeException.class) public void saveBudgetCostDetail(Project project, List detailList){ + clearBudgetCostDetail(project); + if(CollectionUtil.isNotEmpty(detailList)){ for (ProjectBudgetCostDetail projectBudgetCostDetail : detailList) { projectBudgetCostDetail.setProjectId(project.getId()); @@ -281,7 +287,9 @@ public class ProjectBudgetService { /** * 保存项目的项目管理成本明细 */ + @Transactional(rollbackFor = RuntimeException.class) public void saveBudgetCostProjectManageDetail(Project project, List detailList){ + clearBudgetCostProjectManageDetail(project); if(CollectionUtil.isNotEmpty(detailList)){ for (ProjectBudgetCostProjectManageDetail projectBudgetCostProjectManageDetail : detailList) { projectBudgetCostProjectManageDetail.setProjectId(project.getId()); @@ -332,7 +340,9 @@ public class ProjectBudgetService { /** * 保存项目的资金计划明细 */ + @Transactional(rollbackFor = RuntimeException.class) public void saveBudgetPlanDetail(Project project, List detailList){ + clearBudgetPlanDetail(project); if(CollectionUtil.isNotEmpty(detailList)){ for (ProjectBudgetPlanDetail projectBudgetPlanDetail : detailList) { projectBudgetPlanDetail.setProjectId(project.getId()); diff --git a/src/main/resources/static/assets/js/project_budget_plan.js b/src/main/resources/static/assets/js/project_budget_plan.js index 3764cd9..448ab80 100644 --- a/src/main/resources/static/assets/js/project_budget_plan.js +++ b/src/main/resources/static/assets/js/project_budget_plan.js @@ -69,6 +69,12 @@ function bindBudgetPlanDeleteBtn() { //更新余额 updateEachFundBalance(); + //更新垫资计划 + updateEachUnderwrittenPlan(); + //更新回款计划 + updateEachRepaymentPlan(); + //更新资金利息 + updateEachCapitalInterest(); }); } @@ -91,6 +97,12 @@ function bindChangeableInputBudgetPlanDetail() { updateBudgetPlanTotal("input-changeable-total-cost-budget-plan","input-total-total-cost-budget-plan"); //更新余额 updateEachFundBalance(); + //更新垫资计划 + updateEachUnderwrittenPlan(); + //更新回款计划 + updateEachRepaymentPlan(); + //更新资金利息 + updateEachCapitalInterest(); }); //工程支出改变 $(".input-changeable-engineer-cost-budget-plan").change(function () { @@ -109,6 +121,12 @@ function bindChangeableInputBudgetPlanDetail() { updateBudgetPlanTotal("input-changeable-total-cost-budget-plan","input-total-total-cost-budget-plan"); //更新余额 updateEachFundBalance(); + //更新垫资计划 + updateEachUnderwrittenPlan(); + //更新回款计划 + updateEachRepaymentPlan(); + //更新资金利息 + updateEachCapitalInterest(); }); //经营性支出改变 $(".input-changeable-project-manage-cost-budget-plan").change(function () { @@ -127,6 +145,12 @@ function bindChangeableInputBudgetPlanDetail() { updateBudgetPlanTotal("input-changeable-total-cost-budget-plan","input-total-total-cost-budget-plan"); //更新余额 updateEachFundBalance(); + //更新垫资计划 + updateEachUnderwrittenPlan(); + //更新回款计划 + updateEachRepaymentPlan(); + //更新资金利息 + updateEachCapitalInterest(); }); //保证金改变 $(".input-changeable-earnest-money-cost-budget-plan").change(function () { @@ -145,6 +169,12 @@ function bindChangeableInputBudgetPlanDetail() { updateBudgetPlanTotal("input-changeable-total-cost-budget-plan","input-total-total-cost-budget-plan"); //更新余额 updateEachFundBalance(); + //更新垫资计划 + updateEachUnderwrittenPlan(); + //更新回款计划 + updateEachRepaymentPlan(); + //更新资金利息 + updateEachCapitalInterest(); }); //销售收款改变 @@ -162,6 +192,12 @@ function bindChangeableInputBudgetPlanDetail() { updateBudgetPlanTotal("input-changeable-total-income-budget-plan","input-total-total-income-budget-plan"); //更新余额 updateEachFundBalance(); + //更新垫资计划 + updateEachUnderwrittenPlan(); + //更新回款计划 + updateEachRepaymentPlan(); + //更新资金利息 + updateEachCapitalInterest(); }); //保证金收款改变 $(".input-changeable-earnest-money-income-budget-plan").change(function () { @@ -178,6 +214,12 @@ function bindChangeableInputBudgetPlanDetail() { updateBudgetPlanTotal("input-changeable-total-income-budget-plan","input-total-total-income-budget-plan"); //更新余额 updateEachFundBalance(); + //更新垫资计划 + updateEachUnderwrittenPlan(); + //更新回款计划 + updateEachRepaymentPlan(); + //更新资金利息 + updateEachCapitalInterest(); }); @@ -238,6 +280,111 @@ function updateEachFundBalance() { } +/** + * 更新每一行【即每个月】的垫资计划 + */ +function updateEachUnderwrittenPlan() { + var total = 0; + //找到每个月的垫资计划输入框 + $(".input-changeable-underwritten-plan-budget-plan").each(function (t) { + //找到当前月的收入和支出 + var income = parseFloat($(this).parent().parent().find(".input-changeable-total-income-budget-plan").val()); + var cost = parseFloat($(this).parent().parent().find(".input-changeable-total-cost-budget-plan").val()); + //我的上月余额 + var prevFundBalance = parseFloat($(this).parent().parent().prev("tr").find(".input-changeable-fund-balance-budget-plan").val()); + if(!prevFundBalance){ + //第一个月的话,上月余额就为0 + prevFundBalance = 0; + } + + var underwrittenPlan = 0; + + if(income - cost >= 0){ + underwrittenPlan = 0; + }else { + if(prevFundBalance<0){ + underwrittenPlan = cost - income; + }else { + if(prevFundBalance <= cost - income){ + underwrittenPlan = cost - income - prevFundBalance; + }else { + underwrittenPlan = 0; + } + } + } + + total += underwrittenPlan; + + $(this).val(underwrittenPlan); + }); + + //总垫资计划=所有月累加 + $(".input-total-underwritten-plan-budget-plan").val(total); +} +/** + * 更新每一行【即每个月】的还款计划 + */ +function updateEachRepaymentPlan() { + var total = 0; + //找到每个月的回款计划输入框 + $(".input-changeable-repayment-plan-budget-plan").each(function (t) { + //找到当前月的收入和支出 + var income = parseFloat($(this).parent().parent().find(".input-changeable-total-income-budget-plan").val()); + var cost = parseFloat($(this).parent().parent().find(".input-changeable-total-cost-budget-plan").val()); + //我的上月余额 + var prevFundBalance = parseFloat($(this).parent().parent().prev("tr").find(".input-changeable-fund-balance-budget-plan").val()); + if(!prevFundBalance){ + //第一个月的话,上月余额就为0 + prevFundBalance = 0; + } + + var repaymentPlan = 0; + if(income - cost <= 0){ + repaymentPlan = 0; + }else { + if(prevFundBalance >= 0){ + repaymentPlan = 0; + }else { + if(income - cost <= -prevFundBalance){ + repaymentPlan = income - cost; + }else { + repaymentPlan = -prevFundBalance; + } + } + } + + + total += repaymentPlan; + + $(this).val(repaymentPlan); + + }); + + //总回款计划=所有月累加 + $(".input-total-repayment-plan-budget-plan").val(total); +} +/** + * 更新每一行【即每个月】的资金利息 + */ +function updateEachCapitalInterest() { + var total = 0; + //找到每个月的资金利息输入框 + $(".input-changeable-capital-interest-budget-plan").each(function (t) { + //找到当前月的垫资计划 + var underwrittenPlan = parseFloat($(this).parent().parent().find(".input-changeable-underwritten-plan-budget-plan").val()); + var capitalInterest = underwrittenPlan*0.0566/12; + total += capitalInterest; + + $(this).val(capitalInterest); + + }); + + //总资金利息=所有月累加 + $(".input-total-capital-interest-budget-plan").val(total); +} + + + /** * 更新页面收入的数据 */