更新资金计划下面的小表的统计数字
parent
0e98b14671
commit
9cff2184bd
|
@ -0,0 +1,34 @@
|
||||||
|
package cn.palmte.work.bean;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目相关的配置
|
||||||
|
* @author xiongshiyan at 2021/11/5 , contact me with email yanshixiong@126.com or phone 15208384257
|
||||||
|
*/
|
||||||
|
public class ProjectConfigBean {
|
||||||
|
/**
|
||||||
|
* 资金利率
|
||||||
|
*/
|
||||||
|
private BigDecimal underwrittenTaxRate;
|
||||||
|
/**
|
||||||
|
* 项目贡献利润率阀值
|
||||||
|
*/
|
||||||
|
private BigDecimal projectContributionProfitRateThreshold;
|
||||||
|
|
||||||
|
public BigDecimal getUnderwrittenTaxRate() {
|
||||||
|
return underwrittenTaxRate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUnderwrittenTaxRate(BigDecimal underwrittenTaxRate) {
|
||||||
|
this.underwrittenTaxRate = underwrittenTaxRate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getProjectContributionProfitRateThreshold() {
|
||||||
|
return projectContributionProfitRateThreshold;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProjectContributionProfitRateThreshold(BigDecimal projectContributionProfitRateThreshold) {
|
||||||
|
this.projectContributionProfitRateThreshold = projectContributionProfitRateThreshold;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
package cn.palmte.work.bean;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目预算资金计划表统计信息
|
||||||
|
* @author xiongshiyan at 2021/11/5 , contact me with email yanshixiong@126.com or phone 15208384257
|
||||||
|
*/
|
||||||
|
public class ProjectUnderwrittenPlanStatisticBean {
|
||||||
|
/**
|
||||||
|
* 峰值月份
|
||||||
|
*/
|
||||||
|
private String maxMonth;
|
||||||
|
/**
|
||||||
|
* 峰值金额
|
||||||
|
*/
|
||||||
|
private BigDecimal amount;
|
||||||
|
/**
|
||||||
|
* 资金利息
|
||||||
|
*/
|
||||||
|
private BigDecimal capitalInterest;
|
||||||
|
|
||||||
|
public String getMaxMonth() {
|
||||||
|
return maxMonth;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMaxMonth(String maxMonth) {
|
||||||
|
this.maxMonth = maxMonth;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getAmount() {
|
||||||
|
return amount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAmount(BigDecimal amount) {
|
||||||
|
this.amount = amount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getCapitalInterest() {
|
||||||
|
return capitalInterest;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCapitalInterest(BigDecimal capitalInterest) {
|
||||||
|
this.capitalInterest = capitalInterest;
|
||||||
|
}
|
||||||
|
}
|
|
@ -8,6 +8,7 @@ import cn.palmte.work.model.*;
|
||||||
import cn.palmte.work.service.ProjectBudgetService;
|
import cn.palmte.work.service.ProjectBudgetService;
|
||||||
import cn.palmte.work.service.ProjectEstimateService;
|
import cn.palmte.work.service.ProjectEstimateService;
|
||||||
import cn.palmte.work.service.ProjectService;
|
import cn.palmte.work.service.ProjectService;
|
||||||
|
import cn.palmte.work.utils.FreeMarkerUtil;
|
||||||
import cn.palmte.work.utils.InterfaceUtil;
|
import cn.palmte.work.utils.InterfaceUtil;
|
||||||
import cn.palmte.work.utils.Utils;
|
import cn.palmte.work.utils.Utils;
|
||||||
import cn.palmte.work.utils.excel.ExportUtils;
|
import cn.palmte.work.utils.excel.ExportUtils;
|
||||||
|
@ -150,8 +151,12 @@ public class ProjectController extends BaseController{
|
||||||
List<ProjectBudgetPlanDetail> projectBudgetPlanDetails = projectBudgetService.getProjectBudgetPlanDetails(project);
|
List<ProjectBudgetPlanDetail> projectBudgetPlanDetails = projectBudgetService.getProjectBudgetPlanDetails(project);
|
||||||
//资金计划明细
|
//资金计划明细
|
||||||
model.put("projectBudgetPlanDetails", projectBudgetPlanDetails);
|
model.put("projectBudgetPlanDetails", projectBudgetPlanDetails);
|
||||||
//资金计划总
|
//资金计划总【上面汇总表】
|
||||||
model.put("projectBudgetPlanDetailTotal", projectBudgetService.getProjectBudgetPlanDetailTotal(projectBudgetPlanDetails));
|
model.put("projectBudgetPlanDetailTotal", projectBudgetService.getProjectBudgetPlanDetailTotal(project, projectBudgetPlanDetails));
|
||||||
|
//资金计划表中的统计信息【下面资金小表】
|
||||||
|
model.put("underwrittenPlanStatistic", projectBudgetService.getProjectUnderwrittenPlanStatisticBean(projectBudgetPlanDetails));
|
||||||
|
//freemarker可以利用的静态方法
|
||||||
|
model.put("Utils", FreeMarkerUtil.fromStaticPackage("cn.palmte.work.utils.Utils"));
|
||||||
return "admin/project_budget_edit";
|
return "admin/project_budget_edit";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -134,6 +134,16 @@ public class Project {
|
||||||
*/
|
*/
|
||||||
@Column(name = "main_contract_collection_terms")
|
@Column(name = "main_contract_collection_terms")
|
||||||
private String mainContractCollectionTerms;
|
private String mainContractCollectionTerms;
|
||||||
|
/**
|
||||||
|
* 项目创建时的配置的阀值
|
||||||
|
*/
|
||||||
|
@Column(name = "project_contribution_profit_rate_threshold")
|
||||||
|
private BigDecimal projectContributionProfitRateThreshold;
|
||||||
|
/**
|
||||||
|
* 项目创建配置的年利率
|
||||||
|
*/
|
||||||
|
@Column(name = "underwritten_tax_rate")
|
||||||
|
private BigDecimal underwrittenTaxRate;
|
||||||
/**
|
/**
|
||||||
* 创建时间
|
* 创建时间
|
||||||
*/
|
*/
|
||||||
|
@ -389,6 +399,22 @@ public class Project {
|
||||||
this.mainContractCollectionTerms = mainContractCollectionTerms;
|
this.mainContractCollectionTerms = mainContractCollectionTerms;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public BigDecimal getProjectContributionProfitRateThreshold() {
|
||||||
|
return projectContributionProfitRateThreshold;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProjectContributionProfitRateThreshold(BigDecimal projectContributionProfitRateThreshold) {
|
||||||
|
this.projectContributionProfitRateThreshold = projectContributionProfitRateThreshold;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getUnderwrittenTaxRate() {
|
||||||
|
return underwrittenTaxRate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUnderwrittenTaxRate(BigDecimal underwrittenTaxRate) {
|
||||||
|
this.underwrittenTaxRate = underwrittenTaxRate;
|
||||||
|
}
|
||||||
|
|
||||||
public Date getCreateTime() {
|
public Date getCreateTime() {
|
||||||
return createTime;
|
return createTime;
|
||||||
}
|
}
|
||||||
|
|
|
@ -69,6 +69,11 @@ public class ProjectBudgetPlanDetail {
|
||||||
*/
|
*/
|
||||||
@Column(name = "fund_balance")
|
@Column(name = "fund_balance")
|
||||||
private BigDecimal fundBalance;
|
private BigDecimal fundBalance;
|
||||||
|
/**
|
||||||
|
* 项目创建配置的年利率
|
||||||
|
*/
|
||||||
|
@Column(name = "underwritten_tax_rate")
|
||||||
|
private BigDecimal underwrittenTaxRate;
|
||||||
/**
|
/**
|
||||||
*资金利息
|
*资金利息
|
||||||
*/
|
*/
|
||||||
|
@ -181,6 +186,14 @@ public class ProjectBudgetPlanDetail {
|
||||||
this.fundBalance = fundBalance;
|
this.fundBalance = fundBalance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public BigDecimal getUnderwrittenTaxRate() {
|
||||||
|
return underwrittenTaxRate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUnderwrittenTaxRate(BigDecimal underwrittenTaxRate) {
|
||||||
|
this.underwrittenTaxRate = underwrittenTaxRate;
|
||||||
|
}
|
||||||
|
|
||||||
public BigDecimal getCapitalInterest() {
|
public BigDecimal getCapitalInterest() {
|
||||||
return capitalInterest;
|
return capitalInterest;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package cn.palmte.work.service;
|
package cn.palmte.work.service;
|
||||||
|
|
||||||
import cn.palmte.work.bean.BudgetBean;
|
import cn.palmte.work.bean.BudgetBean;
|
||||||
|
import cn.palmte.work.bean.ProjectConfigBean;
|
||||||
|
import cn.palmte.work.bean.ProjectUnderwrittenPlanStatisticBean;
|
||||||
import cn.palmte.work.model.*;
|
import cn.palmte.work.model.*;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
@ -346,6 +348,7 @@ public class ProjectBudgetService {
|
||||||
if(CollectionUtil.isNotEmpty(detailList)){
|
if(CollectionUtil.isNotEmpty(detailList)){
|
||||||
for (ProjectBudgetPlanDetail projectBudgetPlanDetail : detailList) {
|
for (ProjectBudgetPlanDetail projectBudgetPlanDetail : detailList) {
|
||||||
projectBudgetPlanDetail.setProjectId(project.getId());
|
projectBudgetPlanDetail.setProjectId(project.getId());
|
||||||
|
projectBudgetPlanDetail.setUnderwrittenTaxRate(project.getUnderwrittenTaxRate());
|
||||||
}
|
}
|
||||||
projectBudgetPlanDetailRepository.save(detailList);
|
projectBudgetPlanDetailRepository.save(detailList);
|
||||||
}
|
}
|
||||||
|
@ -361,7 +364,7 @@ public class ProjectBudgetService {
|
||||||
/**
|
/**
|
||||||
* 根据每个月的计算资金计划的总
|
* 根据每个月的计算资金计划的总
|
||||||
*/
|
*/
|
||||||
public ProjectBudgetPlanDetail getProjectBudgetPlanDetailTotal(List<ProjectBudgetPlanDetail> projectBudgetPlanDetails) {
|
public ProjectBudgetPlanDetail getProjectBudgetPlanDetailTotal(Project project, List<ProjectBudgetPlanDetail> projectBudgetPlanDetails) {
|
||||||
ProjectBudgetPlanDetail projectBudgetPlanDetail = new ProjectBudgetPlanDetail();
|
ProjectBudgetPlanDetail projectBudgetPlanDetail = new ProjectBudgetPlanDetail();
|
||||||
BigDecimal deviceCost = new BigDecimal(0);
|
BigDecimal deviceCost = new BigDecimal(0);
|
||||||
BigDecimal engineerCost = new BigDecimal(0);
|
BigDecimal engineerCost = new BigDecimal(0);
|
||||||
|
@ -375,6 +378,7 @@ public class ProjectBudgetService {
|
||||||
BigDecimal capitalInterest = new BigDecimal(0);
|
BigDecimal capitalInterest = new BigDecimal(0);
|
||||||
BigDecimal underwrittenPlan = new BigDecimal(0);
|
BigDecimal underwrittenPlan = new BigDecimal(0);
|
||||||
BigDecimal repaymentPlan = new BigDecimal(0);
|
BigDecimal repaymentPlan = new BigDecimal(0);
|
||||||
|
/*BigDecimal underwrittenTaxRate = project.getUnderwrittenTaxRate();*/
|
||||||
|
|
||||||
if(CollectionUtil.isNotEmpty(projectBudgetPlanDetails)){
|
if(CollectionUtil.isNotEmpty(projectBudgetPlanDetails)){
|
||||||
for (ProjectBudgetPlanDetail budgetPlan : projectBudgetPlanDetails) {
|
for (ProjectBudgetPlanDetail budgetPlan : projectBudgetPlanDetails) {
|
||||||
|
@ -407,9 +411,51 @@ public class ProjectBudgetService {
|
||||||
projectBudgetPlanDetail.setEarnestMoneyIncome(earnestMoneyIncome);
|
projectBudgetPlanDetail.setEarnestMoneyIncome(earnestMoneyIncome);
|
||||||
projectBudgetPlanDetail.setTotalIncome(totalIncome);
|
projectBudgetPlanDetail.setTotalIncome(totalIncome);
|
||||||
projectBudgetPlanDetail.setFundBalance(fundBalance);
|
projectBudgetPlanDetail.setFundBalance(fundBalance);
|
||||||
|
/*projectBudgetPlanDetail.setUnderwrittenTaxRate(underwrittenTaxRate);*/
|
||||||
projectBudgetPlanDetail.setCapitalInterest(capitalInterest);
|
projectBudgetPlanDetail.setCapitalInterest(capitalInterest);
|
||||||
projectBudgetPlanDetail.setUnderwrittenPlan(underwrittenPlan);
|
projectBudgetPlanDetail.setUnderwrittenPlan(underwrittenPlan);
|
||||||
projectBudgetPlanDetail.setRepaymentPlan(repaymentPlan);
|
projectBudgetPlanDetail.setRepaymentPlan(repaymentPlan);
|
||||||
return projectBudgetPlanDetail;
|
return projectBudgetPlanDetail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ProjectConfigBean getProjectConfigBeanConfig(){
|
||||||
|
//TODO 从数据库配置中来
|
||||||
|
ProjectConfigBean projectConfigBean = new ProjectConfigBean();
|
||||||
|
projectConfigBean.setUnderwrittenTaxRate(new BigDecimal("5.66"));
|
||||||
|
projectConfigBean.setProjectContributionProfitRateThreshold(new BigDecimal("5"));
|
||||||
|
return projectConfigBean;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据资金计划获取资金使用统计值
|
||||||
|
* 月份去峰值月份
|
||||||
|
* 峰值累计
|
||||||
|
* 资金利息累计
|
||||||
|
*/
|
||||||
|
public ProjectUnderwrittenPlanStatisticBean getProjectUnderwrittenPlanStatisticBean(List<ProjectBudgetPlanDetail> projectBudgetPlanDetails){
|
||||||
|
ProjectUnderwrittenPlanStatisticBean bean = new ProjectUnderwrittenPlanStatisticBean();
|
||||||
|
if(CollectionUtil.isEmpty(projectBudgetPlanDetails)){
|
||||||
|
return bean;
|
||||||
|
}
|
||||||
|
|
||||||
|
BigDecimal amount = new BigDecimal(0);
|
||||||
|
BigDecimal capitalInterest = new BigDecimal(0);
|
||||||
|
BigDecimal max = new BigDecimal(0);
|
||||||
|
String maxMonth = "";
|
||||||
|
for (ProjectBudgetPlanDetail projectBudgetPlanDetail : projectBudgetPlanDetails) {
|
||||||
|
capitalInterest = capitalInterest.add(projectBudgetPlanDetail.getCapitalInterest());
|
||||||
|
BigDecimal underwrittenPlan = projectBudgetPlanDetail.getUnderwrittenPlan();
|
||||||
|
amount = amount.add(underwrittenPlan);
|
||||||
|
if(underwrittenPlan.compareTo(max)>0){
|
||||||
|
max = underwrittenPlan;
|
||||||
|
maxMonth = projectBudgetPlanDetail.getMonth();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bean.setMaxMonth(maxMonth);
|
||||||
|
bean.setAmount(amount);
|
||||||
|
bean.setCapitalInterest(capitalInterest);
|
||||||
|
|
||||||
|
return bean;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -104,6 +104,11 @@ public class ProjectService {
|
||||||
p.setStatus(StatusEnum.CREATED.getStatus());
|
p.setStatus(StatusEnum.CREATED.getStatus());
|
||||||
p.setStatusDesc(StatusEnum.CREATED.getStatusDesc());
|
p.setStatusDesc(StatusEnum.CREATED.getStatusDesc());
|
||||||
p.setApproveStatusEstimate(approveStatusEnum.getApproveStatus());
|
p.setApproveStatusEstimate(approveStatusEnum.getApproveStatus());
|
||||||
|
|
||||||
|
ProjectConfigBean projectConfigBeanConfig = projectBudgetService.getProjectConfigBeanConfig();
|
||||||
|
project.setProjectContributionProfitRateThreshold(projectConfigBeanConfig.getProjectContributionProfitRateThreshold());
|
||||||
|
project.setUnderwrittenTaxRate(projectConfigBeanConfig.getUnderwrittenTaxRate());
|
||||||
|
|
||||||
p = projectRepository.saveAndFlush(p);
|
p = projectRepository.saveAndFlush(p);
|
||||||
//清空重新保存概算信息
|
//清空重新保存概算信息
|
||||||
projectEstimateService.clearEstimate(p);
|
projectEstimateService.clearEstimate(p);
|
||||||
|
@ -118,6 +123,10 @@ public class ProjectService {
|
||||||
project.setCreatorId(admin.getId());
|
project.setCreatorId(admin.getId());
|
||||||
project.setCreatorName(admin.getUserName());
|
project.setCreatorName(admin.getUserName());
|
||||||
|
|
||||||
|
ProjectConfigBean projectConfigBeanConfig = projectBudgetService.getProjectConfigBeanConfig();
|
||||||
|
project.setProjectContributionProfitRateThreshold(projectConfigBeanConfig.getProjectContributionProfitRateThreshold());
|
||||||
|
project.setUnderwrittenTaxRate(projectConfigBeanConfig.getUnderwrittenTaxRate());
|
||||||
|
|
||||||
project.setApproveId(null);
|
project.setApproveId(null);
|
||||||
project.setApproveName("");
|
project.setApproveName("");
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
package cn.palmte.work.utils;
|
||||||
|
|
||||||
|
import freemarker.ext.beans.BeansWrapper;
|
||||||
|
import freemarker.ext.beans.BeansWrapperBuilder;
|
||||||
|
import freemarker.template.TemplateHashModel;
|
||||||
|
import freemarker.template.Version;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author xiongshiyan at 2021/11/5 , contact me with email yanshixiong@126.com or phone 15208384257
|
||||||
|
*/
|
||||||
|
public class FreeMarkerUtil {
|
||||||
|
public static TemplateHashModel fromStaticPackage(String packageName) {
|
||||||
|
try
|
||||||
|
{
|
||||||
|
BeansWrapperBuilder beansWrapperBuilder = new BeansWrapperBuilder(new Version(2,3,26));
|
||||||
|
//BeansWrapper wrapper = BeansWrapper.getDefaultInstance();
|
||||||
|
BeansWrapper wrapper = beansWrapperBuilder.build();
|
||||||
|
TemplateHashModel staticModels = wrapper.getStaticModels();
|
||||||
|
return (TemplateHashModel) staticModels.get(packageName);
|
||||||
|
}catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -46,6 +46,23 @@ public class Utils {
|
||||||
return PHONE_PATTERN.matcher(str).matches();
|
return PHONE_PATTERN.matcher(str).matches();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 小数则保留两位小数
|
||||||
|
* 整数就是整数
|
||||||
|
*/
|
||||||
|
public static String format(Number number, String defaultValue){
|
||||||
|
if (null == number) {
|
||||||
|
return defaultValue;
|
||||||
|
}else {
|
||||||
|
return new java.text.DecimalFormat("#0.##").format(number);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static String format(Number number){
|
||||||
|
return format(number, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
AesCrypto aesCrypto = new AesCrypto("CDGXQHCJ-HHYC2021017");
|
AesCrypto aesCrypto = new AesCrypto("CDGXQHCJ-HHYC2021017");
|
||||||
String encoded = "fdKQaLHH1kt/pW3s4APoUA==";
|
String encoded = "fdKQaLHH1kt/pW3s4APoUA==";
|
||||||
|
|
|
@ -25,7 +25,7 @@ $(function () {
|
||||||
*/
|
*/
|
||||||
function appendTrBudgetPlan() {
|
function appendTrBudgetPlan() {
|
||||||
var template = '<tr>\n' +
|
var template = '<tr>\n' +
|
||||||
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail"></td>\n' +
|
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail input-changeable-month-budget-plan"></td>\n' +
|
||||||
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail input-changeable-device-cost-budget-plan"></td>\n' +
|
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail input-changeable-device-cost-budget-plan"></td>\n' +
|
||||||
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail input-changeable-engineer-cost-budget-plan"></td>\n' +
|
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail input-changeable-engineer-cost-budget-plan"></td>\n' +
|
||||||
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail input-changeable-project-manage-cost-budget-plan"></td>\n' +
|
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail input-changeable-project-manage-cost-budget-plan"></td>\n' +
|
||||||
|
@ -75,6 +75,8 @@ function bindBudgetPlanDeleteBtn() {
|
||||||
updateEachRepaymentPlan();
|
updateEachRepaymentPlan();
|
||||||
//更新资金利息
|
//更新资金利息
|
||||||
updateEachCapitalInterest();
|
updateEachCapitalInterest();
|
||||||
|
//更新垫资峰值月
|
||||||
|
updateUnderwrittenInfo();
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -103,6 +105,8 @@ function bindChangeableInputBudgetPlanDetail() {
|
||||||
updateEachRepaymentPlan();
|
updateEachRepaymentPlan();
|
||||||
//更新资金利息
|
//更新资金利息
|
||||||
updateEachCapitalInterest();
|
updateEachCapitalInterest();
|
||||||
|
//更新垫资峰值月
|
||||||
|
updateUnderwrittenInfo();
|
||||||
});
|
});
|
||||||
//工程支出改变
|
//工程支出改变
|
||||||
$(".input-changeable-engineer-cost-budget-plan").change(function () {
|
$(".input-changeable-engineer-cost-budget-plan").change(function () {
|
||||||
|
@ -127,6 +131,8 @@ function bindChangeableInputBudgetPlanDetail() {
|
||||||
updateEachRepaymentPlan();
|
updateEachRepaymentPlan();
|
||||||
//更新资金利息
|
//更新资金利息
|
||||||
updateEachCapitalInterest();
|
updateEachCapitalInterest();
|
||||||
|
//更新垫资峰值月
|
||||||
|
updateUnderwrittenInfo();
|
||||||
});
|
});
|
||||||
//经营性支出改变
|
//经营性支出改变
|
||||||
$(".input-changeable-project-manage-cost-budget-plan").change(function () {
|
$(".input-changeable-project-manage-cost-budget-plan").change(function () {
|
||||||
|
@ -151,6 +157,8 @@ function bindChangeableInputBudgetPlanDetail() {
|
||||||
updateEachRepaymentPlan();
|
updateEachRepaymentPlan();
|
||||||
//更新资金利息
|
//更新资金利息
|
||||||
updateEachCapitalInterest();
|
updateEachCapitalInterest();
|
||||||
|
//更新垫资峰值月
|
||||||
|
updateUnderwrittenInfo();
|
||||||
});
|
});
|
||||||
//保证金改变
|
//保证金改变
|
||||||
$(".input-changeable-earnest-money-cost-budget-plan").change(function () {
|
$(".input-changeable-earnest-money-cost-budget-plan").change(function () {
|
||||||
|
@ -175,6 +183,8 @@ function bindChangeableInputBudgetPlanDetail() {
|
||||||
updateEachRepaymentPlan();
|
updateEachRepaymentPlan();
|
||||||
//更新资金利息
|
//更新资金利息
|
||||||
updateEachCapitalInterest();
|
updateEachCapitalInterest();
|
||||||
|
//更新垫资峰值月
|
||||||
|
updateUnderwrittenInfo();
|
||||||
});
|
});
|
||||||
|
|
||||||
//销售收款改变
|
//销售收款改变
|
||||||
|
@ -198,6 +208,8 @@ function bindChangeableInputBudgetPlanDetail() {
|
||||||
updateEachRepaymentPlan();
|
updateEachRepaymentPlan();
|
||||||
//更新资金利息
|
//更新资金利息
|
||||||
updateEachCapitalInterest();
|
updateEachCapitalInterest();
|
||||||
|
//更新垫资峰值月
|
||||||
|
updateUnderwrittenInfo();
|
||||||
});
|
});
|
||||||
//保证金收款改变
|
//保证金收款改变
|
||||||
$(".input-changeable-earnest-money-income-budget-plan").change(function () {
|
$(".input-changeable-earnest-money-income-budget-plan").change(function () {
|
||||||
|
@ -220,6 +232,8 @@ function bindChangeableInputBudgetPlanDetail() {
|
||||||
updateEachRepaymentPlan();
|
updateEachRepaymentPlan();
|
||||||
//更新资金利息
|
//更新资金利息
|
||||||
updateEachCapitalInterest();
|
updateEachCapitalInterest();
|
||||||
|
//更新垫资峰值月
|
||||||
|
updateUnderwrittenInfo();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
@ -306,6 +320,8 @@ function updateEachUnderwrittenPlan() {
|
||||||
|
|
||||||
//总垫资计划=所有月累加
|
//总垫资计划=所有月累加
|
||||||
$(".input-total-underwritten-plan-budget-plan").val(total);
|
$(".input-total-underwritten-plan-budget-plan").val(total);
|
||||||
|
//下放小表的垫资峰值金额
|
||||||
|
$(".input-underwritten-plan-statistic-amount-budget-plan").val(total);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -405,12 +421,13 @@ function calRepaymentPlan(income, cost, prevFundBalance) {
|
||||||
* 更新每一行【即每个月】的资金利息
|
* 更新每一行【即每个月】的资金利息
|
||||||
*/
|
*/
|
||||||
function updateEachCapitalInterest() {
|
function updateEachCapitalInterest() {
|
||||||
|
var underwrittenPlanTaxRate = parseFloat($(".input-underwritten-plan-statistic-tax-rate-budget-plan").val());
|
||||||
var total = 0;
|
var total = 0;
|
||||||
//找到每个月的资金利息输入框
|
//找到每个月的资金利息输入框
|
||||||
$(".input-changeable-capital-interest-budget-plan").each(function (t) {
|
$(".input-changeable-capital-interest-budget-plan").each(function (t) {
|
||||||
//找到当前月的垫资计划
|
//找到当前月的垫资计划
|
||||||
var underwrittenPlan = parseFloat($(this).parent().parent().find(".input-changeable-underwritten-plan-budget-plan").val());
|
var underwrittenPlan = parseFloat($(this).parent().parent().find(".input-changeable-underwritten-plan-budget-plan").val());
|
||||||
var capitalInterest = underwrittenPlan*0.0566/12;
|
var capitalInterest = underwrittenPlan*underwrittenPlanTaxRate/100/12;
|
||||||
total += capitalInterest;
|
total += capitalInterest;
|
||||||
|
|
||||||
$(this).val(capitalInterest);
|
$(this).val(capitalInterest);
|
||||||
|
@ -419,6 +436,35 @@ function updateEachCapitalInterest() {
|
||||||
|
|
||||||
//总资金利息=所有月累加
|
//总资金利息=所有月累加
|
||||||
$(".input-total-capital-interest-budget-plan").val(total);
|
$(".input-total-capital-interest-budget-plan").val(total);
|
||||||
|
//下方小表的资金利息
|
||||||
|
$(".input-underwritten-plan-statistic-capital-interest-budget-plan").val(total);
|
||||||
|
//主页面上的财务费用
|
||||||
|
$("input[name='costExpropriationTaxExclude']").val(total);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新资金相关信息
|
||||||
|
*
|
||||||
|
垫资峰值时间 垫资最大的那一个月
|
||||||
|
垫资峰值金额 垫资累计 @see updateEachUnderwrittenPlan
|
||||||
|
资金利息 垫资每月利息累加 @see updateEachCapitalInterest
|
||||||
|
*/
|
||||||
|
function updateUnderwrittenInfo() {
|
||||||
|
var max = 0;
|
||||||
|
var month = '';
|
||||||
|
//找到每个月的垫资计划输入框
|
||||||
|
$(".input-changeable-underwritten-plan-budget-plan").each(function (t) {
|
||||||
|
//找到当前月垫资计划
|
||||||
|
var underwrittenPlan = parseFloat($(this).val());
|
||||||
|
//当月比最大的还大,就取当月的
|
||||||
|
if(underwrittenPlan > max){
|
||||||
|
month = $(this).parent().parent().find(".input-changeable-month-budget-plan").val();
|
||||||
|
max = underwrittenPlan;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
//垫资峰值时间为每个月最大的那个月
|
||||||
|
$(".input-underwritten-plan-statistic-max-month-budget-plan").val(month);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
<#assign base=request.contextPath />
|
<#assign base=request.contextPath />
|
||||||
|
|
||||||
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
<#import "../common/defaultLayout.ftl" as defaultLayout>
|
||||||
<@defaultLayout.layout>
|
<@defaultLayout.layout>
|
||||||
|
|
||||||
|
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
/**让所有的模态对话框都居中*/
|
/**让所有的模态对话框都居中*/
|
||||||
|
|
||||||
|
@ -306,7 +306,7 @@
|
||||||
<tr>
|
<tr>
|
||||||
<td>财务费用</td>
|
<td>财务费用</td>
|
||||||
<td>资金占用成本</td>
|
<td>资金占用成本</td>
|
||||||
<td><input name="costExpropriationTaxExclude" value="${budgetBean.costExpropriationTaxExclude!20}" required readonly title="资金占用成本不含税总额"></td>
|
<td><input name="costExpropriationTaxExclude" value="${budgetBean.costExpropriationTaxExclude!0}" required readonly title="资金占用成本不含税总额"></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>公司管理费用</td>
|
<td>公司管理费用</td>
|
||||||
|
@ -607,7 +607,7 @@
|
||||||
<td>操作</td>
|
<td>操作</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><input type="text" class="am-modal-prompt-input" value="${projectBudgetPlanDetailTotal.month}" readonly/></td>
|
<td><input type="text" class="am-modal-prompt-input input-total-month-budget-plan" value="${projectBudgetPlanDetailTotal.month}" readonly/></td>
|
||||||
<td><input type="text" class="am-modal-prompt-input input-total-device-cost-budget-plan" value="${projectBudgetPlanDetailTotal.deviceCost}" readonly/></td>
|
<td><input type="text" class="am-modal-prompt-input input-total-device-cost-budget-plan" value="${projectBudgetPlanDetailTotal.deviceCost}" readonly/></td>
|
||||||
<td><input type="text" class="am-modal-prompt-input input-total-engineer-cost-budget-plan" value="${projectBudgetPlanDetailTotal.engineerCost}" readonly/></td>
|
<td><input type="text" class="am-modal-prompt-input input-total-engineer-cost-budget-plan" value="${projectBudgetPlanDetailTotal.engineerCost}" readonly/></td>
|
||||||
<td><input type="text" class="am-modal-prompt-input input-total-project-manage-cost-budget-plan" value="${projectBudgetPlanDetailTotal.projectManageCost}" readonly/></td>
|
<td><input type="text" class="am-modal-prompt-input input-total-project-manage-cost-budget-plan" value="${projectBudgetPlanDetailTotal.projectManageCost}" readonly/></td>
|
||||||
|
@ -626,7 +626,7 @@
|
||||||
<#if projectBudgetPlanDetails??>
|
<#if projectBudgetPlanDetails??>
|
||||||
<#list projectBudgetPlanDetails as projectBudgetPlanDetail>
|
<#list projectBudgetPlanDetails as projectBudgetPlanDetail>
|
||||||
<tr>
|
<tr>
|
||||||
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail" value="${projectBudgetPlanDetail.month!}"></td>
|
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail input-changeable-month-budget-plan" value="${projectBudgetPlanDetail.month!}"></td>
|
||||||
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail input-changeable-device-cost-budget-plan" value="${projectBudgetPlanDetail.deviceCost!}"></td>
|
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail input-changeable-device-cost-budget-plan" value="${projectBudgetPlanDetail.deviceCost!}"></td>
|
||||||
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail input-changeable-engineer-cost-budget-plan" value="${projectBudgetPlanDetail.engineerCost!}"></td>
|
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail input-changeable-engineer-cost-budget-plan" value="${projectBudgetPlanDetail.engineerCost!}"></td>
|
||||||
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail input-changeable-project-manage-cost-budget-plan" value="${projectBudgetPlanDetail.projectManageCost!}"></td>
|
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail input-changeable-project-manage-cost-budget-plan" value="${projectBudgetPlanDetail.projectManageCost!}"></td>
|
||||||
|
@ -647,6 +647,25 @@
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<button type="button" id="budgetPlanDetailAddBtn" class="am-btn am-btn-primary am-btn-xs am-round"><span class="am-icon-plus"></span></button>
|
<button type="button" id="budgetPlanDetailAddBtn" class="am-btn am-btn-primary am-btn-xs am-round"><span class="am-icon-plus"></span></button>
|
||||||
|
|
||||||
|
<table class="am-table am-table-bordered am-table-radius table-main" style="padding:0;">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>垫资峰值时间</td>
|
||||||
|
<td>垫资峰值金额</td>
|
||||||
|
<td>利率</td>
|
||||||
|
<td>资金利息</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><input type="text" class="am-modal-prompt-input input-underwritten-plan-statistic-max-month-budget-plan" value="${underwrittenPlanStatistic.maxMonth!}" readonly/></td>
|
||||||
|
<td><input type="text" class="am-modal-prompt-input input-underwritten-plan-statistic-amount-budget-plan" value="${Utils.format(underwrittenPlanStatistic.amount,'')}" readonly/></td>
|
||||||
|
<td><input type="text" class="am-modal-prompt-input input-underwritten-plan-statistic-tax-rate-budget-plan" value="${Utils.format(project.underwrittenTaxRate,'')}" readonly/></td>
|
||||||
|
<td><input type="text" class="am-modal-prompt-input input-underwritten-plan-statistic-capital-interest-budget-plan" value="${Utils.format(underwrittenPlanStatistic.capitalInterest,'')}" readonly/></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="am-modal-footer">
|
<div class="am-modal-footer">
|
||||||
<span class="am-modal-btn" data-am-modal-cancel>取消</span>
|
<span class="am-modal-btn" data-am-modal-cancel>取消</span>
|
||||||
|
|
Loading…
Reference in New Issue