Compare commits

...

10 Commits

Author SHA1 Message Date
mula.liu 4e495c3eff 1.0.1 2024-10-18 17:01:41 +08:00
ZhangYP 01e4db1415 去掉ABCD 2024-03-04 17:06:32 +08:00
OathK1per 600ad2a773 修改行宽 2023-11-08 12:35:28 +08:00
OathK1per e927912aed 导出功能自动换行 2023-11-06 14:03:46 +08:00
OathK1per 9750722925 项目审核页面优化 2023-11-01 14:50:58 +08:00
OathK1per 25188514ac 修改MySQL密码 2023-10-29 12:05:48 +08:00
OathK1per 4a95260a26 毛利A计算更新 2023-10-17 16:55:13 +08:00
OathK1per 19dbd05ad9 毛利A计算 2023-10-13 16:22:25 +08:00
OathK1per 1eadf7fd26 项目预算基本信息同步预算计算方式 2023-08-29 15:06:58 +08:00
OathK1per 3b36524aca 修改bug 2023-07-17 17:54:39 +08:00
891 changed files with 509735 additions and 458614 deletions

BIN
.DS_Store vendored 100644

Binary file not shown.

50811
db/fourcal_db.sql 100644

File diff suppressed because one or more lines are too long

View File

@ -479,6 +479,39 @@ public abstract class IncomeCostBean {
return getCostTotalTaxInclude().subtract(getCostTotalTaxExclude());
}
/**
*
* --
*/
public BigDecimal getProjectGrossProfitA() {
BigDecimal incomeTotalTaxExclude = getIncomeTotalTaxExclude();
BigDecimal costTotalTaxExclude = getCostPurchaseDeviceTaxExclude().add(getCostPurchaseBuildTaxExclude()).add(getCostPurchaseServiceTaxExclude()).add(getCostPurchaseOtherTaxExclude());
if (null == incomeTotalTaxExclude) {
return handleSpecial(null);
}
return incomeTotalTaxExclude
.subtract(costTotalTaxExclude);
}
/**
*
* /
*/
public BigDecimal getProjectGrossProfitARate() {
BigDecimal projectGrossProfit = getProjectGrossProfitA();
BigDecimal incomeTotalTaxExclude = getIncomeTotalTaxExclude();
if (null == projectGrossProfit || null == incomeTotalTaxExclude) {
return handleSpecial(null);
}
BigDecimal zero = new BigDecimal(0);
if (projectGrossProfit.compareTo(zero) == 0 || incomeTotalTaxExclude.compareTo(zero) == 0) {
return handleSpecial(null);
}
return projectGrossProfit
.multiply(new BigDecimal(100))
.divide(incomeTotalTaxExclude, 2, BigDecimal.ROUND_HALF_UP);
}
/**
*
* --

View File

@ -5,10 +5,10 @@ package cn.palmte.work.bean;
*/
public enum UnderwrittenModeEnum {
PLAN_O(-1,""),
PLAN_A(1,"A类-不垫资"),
// PLAN_B(2,"B类-不垫资(背靠背)"),
PLAN_C(3,"B类-垫资(账期覆盖)"),
PLAN_D(4,"C类-垫资(账期不覆盖)");
PLAN_A(1,"不垫资"),
// PLAN_B(2,"不垫资(背靠背)"),
PLAN_C(3,"垫资(账期覆盖)"),
PLAN_D(4,"垫资(账期不覆盖)");
private int underwrittenMode;
private String underwrittenModeStr;

View File

@ -138,7 +138,7 @@ public class AdminController extends BaseController {
request.getSession().setAttribute("message", "");
}
message = login(userName, newPassword, false, false);
message = login(userName, admin.getPassword(), false, false);
if (!message.isEmpty()) {
attr.addAttribute("errorMessages", message);

View File

@ -150,10 +150,10 @@ public class ProjectController extends BaseController {
public void export(@RequestParam(value = "keywords", required = false) String keywords, HttpServletResponse httpServletResponse) throws IOException {
Map<String, String> searchInfo = getSearchInfo(keywords);
downloadHeader(httpServletResponse, Utils.generateExcelName("项目报表"), "application/octet-stream");
String[] headers = {"项目编号", "项目名称", "项目类型", "垫资模式", "垫资利息", "垫资峰值", "项目合同金额", "项目毛利", "项目毛利率", "项目把握度", "汇智产品金额", "华智产品金额",
String[] headers = {"项目编号", "项目名称", "项目类型", "垫资模式", "垫资利息", "垫资峰值", "项目合同金额", "项目毛利A", "项目毛利A利率", "项目毛利", "项目毛利率", "项目把握度", "汇智产品金额", "华智产品金额",
"华三产品金额", "其他产品金额", "项目当前状态", "行业场景应用", "解决方案", "客户名称", "最终用户名称", "预计合同签订时间", "项目计划招标时间", "是否二次合作", "直签", "战略合作对象",
"项目负责人", "价值及风险", "主合同收款条款", "主合同具体解决方案", "计收计划", "审核状态", "当前审核人", "项目创建者", "部门名称","项目阶段", "公司销售阶段", "当前进度描述", "下一步计划", "项目开始时间", "项目结束时间", "最后更新时间"};
String[] exportColumns = {"projectNo", "name", "typeDesc", "underwrittenModeStr", "advanceInterestAmountRound", "advancePeakAmountRound", "contractRound", "grossProfitRound", "grossProfitMarginRound", "certaintyStr", "huizhiRound", "huazhiRound",
String[] exportColumns = {"projectNo", "name", "typeDesc", "underwrittenModeStr", "advanceInterestAmountRound", "advancePeakAmountRound", "contractRound", "grossProfitARound", "grossProfitAMarginRound", "grossProfitRound", "grossProfitMarginRound", "certaintyStr", "huizhiRound", "huazhiRound",
"huasanRound", "ziguangRound", "statusDesc", "industryScenario", "resolvePlanStr", "customer", "terminalCustomer", "contractTimeStr", "bidsTimeStr", "isSecondStr", "signTypeStr", "collaborator",
"principal", "valueRisk", "mainContractCollectionTerms", "mainContractResolvePlan", "calculationCollection", "approveStatusDesc", "approveName", "creatorName", "deptName","stageName", "saleStageName", "stageRemark", "nextPlan", "startDateStr", "endDateStr", "lastUpdateTimeStr"};
ExportUtils.exportToExcel(headers, exportColumns, 1, 10000,
@ -186,10 +186,10 @@ public class ProjectController extends BaseController {
ProjectBudget projectBudget = projectService.findBudgetByProjectId(project.getId());
String[] headers1 = {"部门名称", "项目编号", "项目名称", "合同名称", "项目类型", "项目计划开始时间", "项目计划结束时间", "垫资模式", "合作对象", "垫资利息", "垫资峰值", "合同金额",
"项目毛利", "项目毛利率", "华智产品金额", "汇智产品金额", "华三产品金额", "其他产品金额", "项目把握度", "行业场景应用", "项目解决方案", "客户名称", "最终用户名称",
"项目毛利A", "项目毛利A利率", "项目毛利", "项目毛利率", "华智产品金额", "汇智产品金额", "华三产品金额", "其他产品金额", "项目把握度", "行业场景应用", "项目解决方案", "客户名称", "最终用户名称",
"价值及风险", "项目负责人", "预计合同签订时间", "项目计划招标时间", "是否二次合作", "直签", "主合同收款条款", "主合同具体解决方案", "计收计划"};
String[] columns1 = {"deptNameBudget", "projectNoBudget", "nameBudget", "contractBudget", "typeDescBudget", "startDateBudget", "endDateBudget", "underwrittenModeStrBudget", "collaboratorBudget", "advanceInterestAmountRoundBudget", "advancePeakAmountRoundBudget", "contractRoundBudget",
"grossProfitRoundBudget", "grossProfitMarginRoundBudget", "huazhiRoundBudget", "huizhiRoundBudget", "huasanRoundBudget", "ziguangRoundBudget", "certaintyStrBudget", "industryScenarioBudget", "resolvePlanStrBudget", "customerBudget", "terminalCustomerBudget",
"grossProfitARoundBudget", "grossProfitAMarginRoundBudget", "grossProfitRoundBudget", "grossProfitMarginRoundBudget", "huazhiRoundBudget", "huizhiRoundBudget", "huasanRoundBudget", "ziguangRoundBudget", "certaintyStrBudget", "industryScenarioBudget", "resolvePlanStrBudget", "customerBudget", "terminalCustomerBudget",
"valueRiskBudget", "principalBudget", "contractTimeBudget", "bidsTimeBudget", "isSecondStrBudget", "signTypeStrBudget", "mainContractCollectionTermsBudget", "mainContractResolvePlanBudget", "calculationCollectionBudget"};
exportExcelUtils.exportProjectBudgetExcel(headers1, columns1, projectBudget, "yyyy-MM-dd", 0, "项目基本信息", outputStream);
BudgetBean budgetBean = projectBudgetService.getBudget(project);
@ -455,6 +455,7 @@ public class ProjectController extends BaseController {
public String budgetEditSave(Project project, ProjectBudget projectBudget, BindingResult bindingResult, BudgetBean budgetBean, Map<String, Object> model) {
Project projectInDb = projectService.getProject(project.getId());
projectBudgetService.budgetEditSave(project, projectInDb, budgetBean, InterfaceUtil.getAdmin(), ApproveStatusEnum.APPROVAL_UNCOMMIT, projectBudget);
projectBudgetService.saveProjectBudget(projectInDb, projectBudget);
return "redirect:/project/list";
}
@ -1202,10 +1203,10 @@ public class ProjectController extends BaseController {
ExportExcelUtils exportExcelUtils = new ExportExcelUtils();
ProjectBudget projectBudget = projectService.findBudgetByProjectId(project.getId());
String[] headers1 = {"部门名称", "项目编号", "项目名称", "合同名称", "项目类型", "项目计划开始时间", "项目计划结束时间", "垫资模式", "合作对象", "垫资利息", "垫资峰值", "合同金额",
"项目毛利", "项目毛利率", "华智产品金额", "汇智产品金额", "华三产品金额", "其他产品金额", "项目把握度", "行业场景应用", "项目解决方案", "客户名称", "最终用户名称",
"项目毛利A", "项目毛利A利率", "项目毛利", "项目毛利率", "华智产品金额", "汇智产品金额", "华三产品金额", "其他产品金额", "项目把握度", "行业场景应用", "项目解决方案", "客户名称", "最终用户名称",
"价值及风险", "项目负责人", "预计合同签订时间", "项目计划招标时间", "是否二次合作", "直签", "主合同收款条款", "主合同具体解决方案", "计收计划"};
String[] columns1 = {"deptNameBudget", "projectNoBudget", "nameBudget", "contractBudget", "typeDescBudget", "startDateBudget", "endDateBudget", "underwrittenModeStrBudget", "collaboratorBudget", "advanceInterestAmountRoundBudget", "advancePeakAmountRoundBudget", "contractRoundBudget",
"grossProfitRoundBudget", "grossProfitMarginRoundBudget", "huazhiRoundBudget", "huizhiRoundBudget", "huasanRoundBudget", "ziguangRoundBudget", "certaintyStrBudget", "industryScenarioBudget", "resolvePlanStrBudget", "customerBudget", "terminalCustomerBudget",
"grossProfitARoundBudget", "grossProfitAMarginRoundBudget", "grossProfitRoundBudget", "grossProfitMarginRoundBudget", "huazhiRoundBudget", "huizhiRoundBudget", "huasanRoundBudget", "ziguangRoundBudget", "certaintyStrBudget", "industryScenarioBudget", "resolvePlanStrBudget", "customerBudget", "terminalCustomerBudget",
"valueRiskBudget", "principalBudget", "contractTimeBudget", "bidsTimeBudget", "isSecondStrBudget", "signTypeStrBudget", "mainContractCollectionTermsBudget", "mainContractResolvePlanBudget", "calculationCollectionBudget"};
exportExcelUtils.exportProjectBudgetExcel(headers1, columns1, projectBudget, "yyyy-MM-dd", 0, "项目基本信息", outputStream);

View File

@ -93,7 +93,7 @@ public class Project {
@Temporal(TemporalType.TIMESTAMP)
private Date endDate;
/**
* 1A-2B-3C-4D-
* 1234
*/
@Column(name = "underwritten_mode")
private int underwrittenMode;
@ -211,6 +211,12 @@ public class Project {
@Column(name = "certainty_str")
private String certaintyStr;
@Column(name = "gross_profit_a")
private BigDecimal grossProfitA;
@Column(name = "gross_profit_a_margin")
private BigDecimal grossProfitAMargin;
@Column(name = "gross_profit")
private BigDecimal grossProfit;
@ -283,6 +289,12 @@ public class Project {
@Transient
private String huasanRound;
@Transient
private String grossProfitARound;
@Transient
private String grossProfitAMarginRound;
@Transient
private String grossProfitRound;
@ -310,6 +322,12 @@ public class Project {
@Transient
private String huasanRound2;
@Transient
private String grossProfitARound2;
@Transient
private String grossProfitAMarginRound2;
@Transient
private String grossProfitRound2;
@ -1134,4 +1152,52 @@ public class Project {
public void setSaleStageName(String saleStageName) {
this.saleStageName = saleStageName;
}
public BigDecimal getGrossProfitA() {
return grossProfitA;
}
public void setGrossProfitA(BigDecimal grossProfitA) {
this.grossProfitA = grossProfitA;
}
public BigDecimal getGrossProfitAMargin() {
return grossProfitAMargin;
}
public void setGrossProfitAMargin(BigDecimal grossProfitAMargin) {
this.grossProfitAMargin = grossProfitAMargin;
}
public String getGrossProfitARound() {
return grossProfitARound;
}
public void setGrossProfitARound(String grossProfitARound) {
this.grossProfitARound = grossProfitARound;
}
public String getGrossProfitAMarginRound() {
return grossProfitAMarginRound;
}
public void setGrossProfitAMarginRound(String grossProfitAMarginRound) {
this.grossProfitAMarginRound = grossProfitAMarginRound;
}
public String getGrossProfitARound2() {
return grossProfitARound2;
}
public void setGrossProfitARound2(String grossProfitARound2) {
this.grossProfitARound2 = grossProfitARound2;
}
public String getGrossProfitAMarginRound2() {
return grossProfitAMarginRound2;
}
public void setGrossProfitAMarginRound2(String grossProfitAMarginRound2) {
this.grossProfitAMarginRound2 = grossProfitAMarginRound2;
}
}

View File

@ -72,7 +72,7 @@ public class ProjectBudget {
@Temporal(TemporalType.TIMESTAMP)
private Date endDateBudget;
/**
* 1A-2B-3C-4D-
* 1234
*/
@Column(name = "underwritten_mode_budget")
private int underwrittenModeBudget;
@ -157,6 +157,12 @@ public class ProjectBudget {
@Column(name = "certainty_str_budget")
private String certaintyStrBudget;
@Column(name = "gross_profit_a_budget")
private BigDecimal grossProfitABudget;
@Column(name = "gross_profit_a_margin_budget")
private BigDecimal grossProfitAMarginBudget;
@Column(name = "gross_profit_budget")
private BigDecimal grossProfitBudget;
@ -217,6 +223,12 @@ public class ProjectBudget {
@Transient
private String huasanRoundBudget;
@Transient
private String grossProfitARoundBudget;
@Transient
private String grossProfitAMarginRoundBudget;
@Transient
private String grossProfitRoundBudget;
@ -660,4 +672,36 @@ public class ProjectBudget {
public void setAdvancePeakAmountRoundBudget(String advancePeakAmountRoundBudget) {
this.advancePeakAmountRoundBudget = advancePeakAmountRoundBudget;
}
public BigDecimal getGrossProfitABudget() {
return grossProfitABudget;
}
public void setGrossProfitABudget(BigDecimal grossProfitABudget) {
this.grossProfitABudget = grossProfitABudget;
}
public BigDecimal getGrossProfitAMarginBudget() {
return grossProfitAMarginBudget;
}
public void setGrossProfitAMarginBudget(BigDecimal grossProfitAMarginBudget) {
this.grossProfitAMarginBudget = grossProfitAMarginBudget;
}
public String getGrossProfitARoundBudget() {
return grossProfitARoundBudget;
}
public void setGrossProfitARoundBudget(String grossProfitARoundBudget) {
this.grossProfitARoundBudget = grossProfitARoundBudget;
}
public String getGrossProfitAMarginRoundBudget() {
return grossProfitAMarginRoundBudget;
}
public void setGrossProfitAMarginRoundBudget(String grossProfitAMarginRoundBudget) {
this.grossProfitAMarginRoundBudget = grossProfitAMarginRoundBudget;
}
}

View File

@ -53,6 +53,12 @@ public class ProjectExtend {
@Column(name = "ziguang_other_amount")
private BigDecimal ziguangOtherAmount;
@Column(name = "gross_profit_a")
private BigDecimal grossProfitA;
@Column(name = "gross_profit_a_margin")
private BigDecimal grossProfitAMargin;
@Column(name = "gross_profit")
private BigDecimal grossProfit;
@ -129,6 +135,22 @@ public class ProjectExtend {
this.ziguangOtherAmount = ziguangOtherAmount;
}
public BigDecimal getGrossProfitA() {
return grossProfitA;
}
public void setGrossProfitA(BigDecimal grossProfitA) {
this.grossProfitA = grossProfitA;
}
public BigDecimal getGrossProfitAMargin() {
return grossProfitAMargin;
}
public void setGrossProfitAMargin(BigDecimal grossProfitAMargin) {
this.grossProfitAMargin = grossProfitAMargin;
}
public BigDecimal getGrossProfit() {
return grossProfit;
}

View File

@ -874,6 +874,8 @@ public class ProjectBudgetService {
budgetEditSave(project, projectInDb, budgetBean, admin, ApproveStatusEnum.APPROVAL_PENDING, projectBudget);
saveProjectBudget(projectInDb, projectBudget);
saveProjectExtend(projectInDb);
budgetApprove(approveStatusBudget, projectInDb, admin);
@ -922,7 +924,6 @@ public class ProjectBudgetService {
p.setApproveStatusBudget(approveStatusEnum.getApproveStatus());
p = projectRepository.saveAndFlush(p);
saveProjectBudget(p, projectBudget);
//清空重新保存概算信息
clearBudget(p);
saveBudget(p, budgetBean);
@ -933,9 +934,10 @@ public class ProjectBudgetService {
return p;
}
private void saveProjectBudget(Project p, ProjectBudget budget) {
public void saveProjectBudget(Project p, ProjectBudget budget) {
ProjectBudget projectBudget = projectBudgetRepository.findFirstByProjectId(p.getId());
BeanUtils.copyProperties(budget, projectBudget, "id");
saveProjectBudgetByCal(p, projectBudget);
projectBudget.setTypeDescBudget(TypeEnum.parseType(projectBudget.getTypeBudget()).getTypeDesc());
projectBudget.setUnderwrittenModeStrBudget(UnderwrittenModeEnum.parseUnderwrittenMode(projectBudget.getUnderwrittenModeBudget()).getUnderwrittenModeStr());
@ -948,6 +950,46 @@ public class ProjectBudgetService {
projectBudgetRepository.save(projectBudget);
}
private void saveProjectBudgetByCal(Project p, ProjectBudget budget) {
List<ProjectBudgetPlanDetail> projectBudgetPlanDetails = projectBudgetService.getProjectBudgetPlanDetails(p);
ProjectUnderwrittenPlanStatisticBean bean = projectBudgetService.getProjectUnderwrittenPlanStatisticBean(projectBudgetPlanDetails);
budget.setAdvanceInterestAmountBudget(bean.getCapitalInterest());
budget.setAdvancePeakAmountBudget(bean.getAmount());
BudgetBean budgetBean = projectBudgetService.getBudget(p);
BigDecimal grossProfitA = budgetBean.getProjectGrossProfitA();
if (grossProfitA != null) {
budget.setGrossProfitABudget(grossProfitA);
budget.setGrossProfitAMarginBudget(budgetBean.getProjectGrossProfitARate());
}
BigDecimal grossProfit = budgetBean.getProjectGrossProfit();
if (grossProfit != null) {
budget.setGrossProfitBudget(grossProfit);
budget.setGrossProfitMarginBudget(budgetBean.getProjectGrossProfitRate());
}
List<ProjectBudgetIncomeDetail> projectBudgetIncomeDetails = projectBudgetIncomeDetailRepository.findAllByProjectIdEquals(p.getId());
if (projectBudgetIncomeDetails.size() > 0) {
BigDecimal contractAmount = projectBudgetIncomeDetails.stream().map(ProjectBudgetIncomeDetail::getTotalTaxInclude).reduce(new BigDecimal(0), BigDecimal::add);
budget.setContractAmountBudget(contractAmount);
}
List<ProjectBudgetCostDetail> projectBudgetCostDetails = projectBudgetCostDetailRepository.findAllByProjectIdEquals(p.getId());
if (projectBudgetCostDetails.size() > 0) {
ProcurementType huizhiType = procurementTypeRepository.findByName("汇智产品");
BigDecimal huizhi = projectBudgetCostDetails.stream().filter(a -> a.getCategory() == huizhiType.getId()).map(ProjectBudgetCostDetail::getTotalTaxInclude).reduce(new BigDecimal(0), BigDecimal::add);
budget.setHuizhiProductAmountBudget(huizhi);
ProcurementType huazhiType = procurementTypeRepository.findByName("华智产品");
BigDecimal huazhi = projectBudgetCostDetails.stream().filter(a -> a.getCategory() == huazhiType.getId()).map(ProjectBudgetCostDetail::getTotalTaxInclude).reduce(new BigDecimal(0), BigDecimal::add);
budget.setHuazhiProductAmountBudget(huazhi);
ProcurementType huasanType = procurementTypeRepository.findByName("华三产品");
BigDecimal huasan = projectBudgetCostDetails.stream().filter(a -> a.getCategory() == huasanType.getId()).map(ProjectBudgetCostDetail::getTotalTaxInclude).reduce(new BigDecimal(0), BigDecimal::add);
budget.setHuasanProductAmountBudget(huasan);
BigDecimal other = projectBudgetCostDetails.stream().filter(a -> a.getCategory() != huizhiType.getId() && a.getCategory() != huazhiType.getId() && a.getCategory() != huasanType.getId()).map(ProjectBudgetCostDetail::getTotalTaxInclude).reduce(new BigDecimal(0), BigDecimal::add);
budget.setZiguangOtherAmountBudget(other);
}
}
private void saveProjectExtend(Project p) {
ProjectExtend extend = projectExtendRepository.findByProjectId(p.getId());
if (extend == null) {
@ -962,6 +1004,11 @@ public class ProjectBudgetService {
extend.setAdvancePeakAmount(bean.getAmount());
BudgetBean budgetBean = projectBudgetService.getBudget(p);
BigDecimal grossProfitA = budgetBean.getProjectGrossProfitA();
if (grossProfitA != null) {
extend.setGrossProfitA(grossProfitA);
extend.setGrossProfitAMargin(budgetBean.getProjectGrossProfitARate());
}
BigDecimal grossProfit = budgetBean.getProjectGrossProfit();
if (grossProfit != null) {
extend.setGrossProfit(grossProfit);

View File

@ -340,6 +340,8 @@ public class ProjectEstimateService {
projectBudget.setContractAmountBudget(estimateProject.getContractAmount());
projectBudget.setIndustryScenarioBudget(estimateProject.getIndustryScenario());
projectBudget.setIndustrySceneBudget(estimateProject.getIndustryScene());
projectBudget.setGrossProfitABudget(estimateProject.getGrossProfitA());
projectBudget.setGrossProfitAMarginBudget(estimateProject.getGrossProfitAMargin());
projectBudget.setGrossProfitBudget(estimateProject.getGrossProfit());
projectBudget.setGrossProfitMarginBudget(estimateProject.getGrossProfitMargin());
projectBudget.setHuazhiProductAmountBudget(estimateProject.getHuazhiProductAmount());

View File

@ -65,6 +65,7 @@ public class ProjectService {
"CASE p.approve_status WHEN 0 THEN '待审核' WHEN 1 THEN '审核通过' WHEN 2 THEN '审核不通过' ELSE '未知' AS approveStatusDesc," +
*/
QueryHelper queryHelper = new QueryHelper("SELECT p.*, FORMAT(p.contract_amount,2) as contractRound, FORMAT(p.huazhi_product_amount,2) as huazhiRound, FORMAT(p.huizhi_product_amount,2) as huizhiRound, FORMAT(p.huasan_product_amount,2) as huasanRound, FORMAT(p.ziguang_other_amount,2) as ziguangRound" +
", FORMAT(p.gross_profit_a,2) as grossProfitARound, FORMAT(p.gross_profit_a_margin,2) as grossProfitAMarginRound, FORMAT(pe.gross_profit_a,2) as grossProfitARound2, FORMAT(pe.gross_profit_a_margin,2) as grossProfitAMarginRound2" +
", FORMAT(p.gross_profit,2) as grossProfitRound, FORMAT(p.gross_profit_margin,2) as grossProfitMarginRound, FORMAT(p.advance_interest_amount,2) as advanceInterestAmountRound, FORMAT(p.advance_peak_amount,2) as advancePeakAmountRound, pe.is_budget as isBudget" +
", FORMAT(pe.contract_amount,2) as contractRound2, FORMAT(pe.huazhi_product_amount,2) as huazhiRound2, FORMAT(pe.huizhi_product_amount,2) as huizhiRound2, FORMAT(pe.huasan_product_amount,2) as huasanRound2, FORMAT(pe.ziguang_other_amount,2) as ziguangRound2" +
", FORMAT(pe.gross_profit,2) as grossProfitRound2, FORMAT(pe.gross_profit_margin,2) as grossProfitMarginRound2, FORMAT(pe.advance_interest_amount,2) as advanceInterestAmountRound2, FORMAT(pe.advance_peak_amount,2) as advancePeakAmountRound2" +
@ -286,6 +287,8 @@ public class ProjectService {
project.setHuazhiRound(project.getHuazhiRound2());
project.setHuasanRound(project.getHuasanRound2());
project.setZiguangRound(project.getZiguangRound2());
project.setGrossProfitARound(project.getGrossProfitARound2());
project.setGrossProfitAMarginRound(project.getGrossProfitAMarginRound2());
project.setGrossProfitRound(project.getGrossProfitRound2());
project.setGrossProfitMarginRound(project.getGrossProfitMarginRound2());
project.setAdvancePeakAmountRound(project.getAdvancePeakAmountRound2());
@ -1006,6 +1009,7 @@ public class ProjectService {
project.setSaleStage(saleStage);
project.setStageRemark(stageRemark);
project.setNextPlan(nextPlan);
project.setLastUpdateTime(new Date());
projectRepository.saveAndFlush(project);
return ResponseMsg.buildSuccessMsg("保存成功");
}

View File

@ -42,6 +42,7 @@ public class ExportExcelUtils {
style.setBorderRight(BorderStyle.THIN);
style.setBorderTop(BorderStyle.THIN);
style.setAlignment(HorizontalAlignment.CENTER);
style.setWrapText(true);
// 生成一个字体
Font font = workbook.createFont();
font.setBold(false);
@ -58,6 +59,7 @@ public class ExportExcelUtils {
style2.setBorderTop(BorderStyle.THIN);
style2.setAlignment(HorizontalAlignment.LEFT);
style2.setVerticalAlignment(VerticalAlignment.CENTER);
style2.setWrapText(true);
// 生成另一个字体
Font font2 = workbook.createFont();
font2.setBold(false);
@ -87,7 +89,7 @@ public class ExportExcelUtils {
// 遍历集合数据,产生数据行
int index = rowIndex;
XSSFSheet sheet = workbook.createSheet(sheetName);
sheet.setDefaultColumnWidth((short)20);
sheet.setDefaultColumnWidth((short)60);
Font font3 = workbook.createFont();
font3.setColor(HSSFColor.HSSFColorPredefined.BLUE.getIndex());
for (int i = 0; i < columns.length; i++){
@ -140,7 +142,7 @@ public class ExportExcelUtils {
// 遍历集合数据,产生数据行
int index = rowIndex;
XSSFSheet sheet = workbook.createSheet(sheetName);
sheet.setDefaultColumnWidth((short)20);
sheet.setDefaultColumnWidth((short)60);
Font font3 = workbook.createFont();
font3.setColor(HSSFColor.HSSFColorPredefined.BLUE.getIndex());
for (int i = 0; i < columns.length; i++){
@ -184,7 +186,7 @@ public class ExportExcelUtils {
// 遍历集合数据,产生数据行
int index = rowIndex;
XSSFSheet sheet = workbook.createSheet(sheetName);
sheet.setDefaultColumnWidth((short)20);
sheet.setDefaultColumnWidth((short)30);
Font font3 = workbook.createFont();
font3.setColor(HSSFColor.HSSFColorPredefined.BLUE.getIndex());
// 收入
@ -658,6 +660,7 @@ public class ExportExcelUtils {
private int createProfitRow(BudgetBean budgetBean, XSSFSheet sheet, int index) {
createSubTitleProfitRow(sheet, index++);
createGrossProfitARow(budgetBean, sheet, index++);
createGrossProfitRow(budgetBean, sheet, index++);
// createGrossProfitMarginRow(budgetBean, sheet, index++);
createContributionProfitRow(budgetBean, sheet, index++);
@ -686,6 +689,26 @@ public class ExportExcelUtils {
}
private void createGrossProfitARow(BudgetBean budgetBean, XSSFSheet sheet, int index) {
Row row = sheet.createRow(index);
Cell firstCell = row.createCell(0);
firstCell.setCellStyle(style2);
firstCell.setCellType(CellType.STRING);
firstCell.setCellValue("项目毛利A(元)");
Cell secondCell = row.createCell(1);
secondCell.setCellStyle(style2);
secondCell.setCellType(CellType.NUMERIC);
secondCell.setCellValue(Utils.format(budgetBean.getProjectGrossProfitARate()));
Cell thirdCell = row.createCell(2);
thirdCell.setCellStyle(style2);
thirdCell.setCellType(CellType.NUMERIC);
thirdCell.setCellValue(Utils.format(budgetBean.getProjectGrossProfitA()));
Cell fourthCell = row.createCell(3);
fourthCell.setCellStyle(style2);
fourthCell.setCellType(CellType.STRING);
fourthCell.setCellValue("毛利=收入总计(不含税)-成本总计(不含税)");
}
private void createGrossProfitRow(BudgetBean budgetBean, XSSFSheet sheet, int index) {
Row row = sheet.createRow(index);
Cell firstCell = row.createCell(0);
@ -1031,7 +1054,7 @@ public class ExportExcelUtils {
// 遍历集合数据,产生数据行
int index = rowIndex;
XSSFSheet sheet = workbook.createSheet(sheetName);
sheet.setDefaultColumnWidth((short)20);
sheet.setDefaultColumnWidth((short)30);
Font font3 = workbook.createFont();
font3.setColor(HSSFColor.HSSFColorPredefined.BLUE.getIndex());
Row title = sheet.createRow(index++);
@ -1117,7 +1140,7 @@ public class ExportExcelUtils {
// 遍历集合数据,产生数据行
int index = rowIndex;
XSSFSheet sheet = workbook.createSheet(sheetName);
sheet.setDefaultColumnWidth((short)20);
sheet.setDefaultColumnWidth((short)30);
Font font3 = workbook.createFont();
font3.setColor(HSSFColor.HSSFColorPredefined.BLUE.getIndex());
Row title = sheet.createRow(index++);
@ -1185,7 +1208,7 @@ public class ExportExcelUtils {
// 遍历集合数据,产生数据行
int index = rowIndex;
XSSFSheet sheet = workbook.createSheet(sheetName);
sheet.setDefaultColumnWidth((short)20);
sheet.setDefaultColumnWidth((short)30);
Font font3 = workbook.createFont();
font3.setColor(HSSFColor.HSSFColorPredefined.BLUE.getIndex());
Row title = sheet.createRow(index++);
@ -1288,7 +1311,7 @@ public class ExportExcelUtils {
// 遍历集合数据,产生数据行
int index = rowIndex;
XSSFSheet sheet = workbook.createSheet(sheetName);
sheet.setDefaultColumnWidth((short)20);
sheet.setDefaultColumnWidth((short)30);
Font font3 = workbook.createFont();
font3.setColor(HSSFColor.HSSFColorPredefined.BLUE.getIndex());
Row title = sheet.createRow(index++);
@ -1377,7 +1400,7 @@ public class ExportExcelUtils {
// 遍历集合数据,产生数据行
int index = rowIndex;
XSSFSheet sheet = workbook.createSheet(sheetName);
sheet.setDefaultColumnWidth((short)20);
sheet.setDefaultColumnWidth((short)30);
Font font3 = workbook.createFont();
font3.setColor(HSSFColor.HSSFColorPredefined.BLUE.getIndex());
for (int i = 0; i < rows.length; i++){

View File

@ -33,7 +33,7 @@ public class ExportUtils {
workbook = new SXSSFWorkbook(ROW_ACCESS_WINDOW_SIZE);
sheet = workbook.createSheet();
sheet.setDefaultColumnWidth((short)20);
sheet.setDefaultColumnWidth((short)40);
style = workbook.createCellStyle();
// 设置这些样式
style.setFillForegroundColor(HSSFColor.HSSFColorPredefined.WHITE.getIndex());
@ -44,6 +44,7 @@ public class ExportUtils {
style.setBorderRight(BorderStyle.THIN);
style.setBorderTop(BorderStyle.THIN);
style.setAlignment(HorizontalAlignment.CENTER);
style.setWrapText(true);
// 生成一个字体
Font font = workbook.createFont();
font.setBold(false);
@ -60,6 +61,7 @@ public class ExportUtils {
style2.setBorderTop(BorderStyle.THIN);
style2.setAlignment(HorizontalAlignment.LEFT);
style2.setVerticalAlignment(VerticalAlignment.CENTER);
style2.setWrapText(true);
// 生成另一个字体
Font font2 = workbook.createFont();
font2.setBold(false);

View File

@ -1,5 +1,5 @@
spring.datasource.url=jdbc:mysql://192.168.1.100:3306/fourcal?\
characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2b8&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true
spring.datasource.url=jdbc:mysql://117.172.29.81:3306/fourcal?\
characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2b8&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=Qwer123!@#$

View File

@ -1,7 +1,7 @@
spring.datasource.url=jdbc:mysql://localhost:3306/fourcal?\
characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2b8&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/fourcal?\
characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2b8&rewriteBatchedStatements=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.password=sagacity
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
#spring.jpa.properties.hibernate.hbm2ddl.auto=update
@ -9,5 +9,5 @@ spring.jpa.show-sql=true
admin.domain=https://dzgtest.palmte.cn
upload.path=/mnt/dzg/image
upload.path=/home/data/dzg/fourcal
upload.prefix=https://dzgtest.palmte.cn/fourcal/upload

View File

@ -1,4 +1,4 @@
spring.datasource.url=jdbc:mysql://192.168.1.100:3306/fourcal?\
spring.datasource.url=jdbc:mysql://localhost:3306/fourcal?\
characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2b8&rewriteBatchedStatements=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=Qwer123!@#$

View File

@ -3,7 +3,7 @@ server.port=8282
server.session.timeout=-1
server.context-path=/fourcal
app.version=0.0.1
spring.profiles.active=sit
spring.profiles.active=local
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

View File

@ -5570,7 +5570,7 @@ CREATE TABLE `project` (
`dept_name` varchar(255) DEFAULT NULL COMMENT '部门名称',
`start_date` datetime NOT NULL COMMENT '项目开始时间,精确到月',
`end_date` datetime NOT NULL COMMENT '项目结束时间,精确到月',
`underwritten_mode` int(11) NOT NULL COMMENT '垫资模式1A类-不垫资战略合作2B类-不垫资背靠背3C类-垫资账期覆盖4D类-垫资(账期不覆盖)',
`underwritten_mode` int(11) NOT NULL COMMENT '垫资模式1不垫资战略合作2不垫资背靠背3垫资账期覆盖4垫资账期不覆盖',
`customer` varchar(255) NOT NULL COMMENT '客户名称',
`terminal_customer` varchar(255) NOT NULL COMMENT '最终用户名称',
`advance_interest_amount` decimal(16,2) NOT NULL COMMENT '垫资利息(元为单位)',

View File

@ -7577,7 +7577,7 @@ CREATE TABLE `project` (
`dept_name` varchar(255) DEFAULT NULL COMMENT '部门名称',
`start_date` datetime NOT NULL COMMENT '项目开始时间,精确到月',
`end_date` datetime NOT NULL COMMENT '项目结束时间,精确到月',
`underwritten_mode` int(11) NOT NULL COMMENT '垫资模式1A类-不垫资战略合作2B类-不垫资背靠背3C类-垫资账期覆盖4D类-垫资(账期不覆盖)',
`underwritten_mode` int(11) NOT NULL COMMENT '垫资模式1不垫资战略合作2不垫资背靠背3垫资账期覆盖4垫资账期不覆盖',
`customer` varchar(255) NOT NULL COMMENT '客户名称',
`terminal_customer` varchar(255) NOT NULL COMMENT '最终用户名称',
`advance_interest_amount` decimal(16,2) NOT NULL COMMENT '垫资利息(元为单位)',

View File

@ -809,11 +809,21 @@ function updateProjectContributionProfitRate() {
//公司管理费用
var costCompanyManageTaxExclude = f2(inputVal("costCompanyManageTaxExclude"));
//采购成本不含税
var costPurchaseDeviceTaxExclude = f2(inputVal("costPurchaseDeviceTaxExclude"));
var costPurchaseBuildTaxExclude = f2(inputVal("costPurchaseBuildTaxExclude"));
var costPurchaseServiceTaxExclude = f2(inputVal("costPurchaseServiceTaxExclude"));
var costPurchaseOtherTaxExclude = f2(inputVal("costPurchaseOtherTaxExclude"));
var projectGrossProfitA = f2Fixed(incomeTotalTaxExclude - (costPurchaseDeviceTaxExclude + costPurchaseBuildTaxExclude + costPurchaseServiceTaxExclude + costPurchaseOtherTaxExclude));
var projectGrossProfitARate = f2Fixed(rate(f2(projectGrossProfitA), incomeTotalTaxExclude));
var projectGrossProfit = f2Fixed(incomeTotalTaxExclude - costTotalTaxExclude - costExpropriationTaxExclude);
var projectGrossProfitRate = f2Fixed(rate(f2(projectGrossProfit), incomeTotalTaxExclude));
var projectContributionProfit = f2Fixed(f2(projectGrossProfit) - costCompanyManageTaxExclude);
var projectContributionProfitRate = f2Fixed(rate(f2(projectContributionProfit), incomeTotalTaxExclude));
$("input[name='projectGrossProfitA']").val(projectGrossProfitA);
$("input[name='projectGrossProfitARate']").val(projectGrossProfitARate);
$("input[name='projectGrossProfit']").val(projectGrossProfit);
$("input[name='projectGrossProfitRate']").val(projectGrossProfitRate);
$("input[name='projectContributionProfit']").val(projectContributionProfit);

View File

@ -74,7 +74,7 @@
<td>
<div class="am-btn-toolbar">
<div class="am-btn-group am-btn-group-xs">
<#if list.procDefKey! !='estimate' && list.procDefKey! !='budget' && list.procDefKey! !='settle' && list.procDefKey! !='final'>
<#--<#if list.procDefKey! !='estimate' && list.procDefKey! !='budget' && list.procDefKey! !='settle' && list.procDefKey! !='final'>-->
<button type="button"
class="am-btn am-btn-default am-btn-xs am-text-secondary"
onclick="design(${list.id?c})" >
@ -88,7 +88,7 @@
<span class="am-icon-pencil-square-o"></span>
部署
</button>
</#if>
<#--</#if>-->
</div>
</div>

View File

@ -240,11 +240,11 @@
<td class="table-title" <#if project.underwrittenMode! <= 2> colspan="5" <#else> colspan="1" </#if> >
<#if project.underwrittenMode??>
<#if (project.underwrittenMode) =1>
<input readonly value="A类-不垫资"/>
<input readonly value="不垫资"/>
<#elseif (project.underwrittenMode) =3>
<input readonly value="B类-垫资(账期覆盖)"/>
<input readonly value="垫资(账期覆盖)"/>
<#elseif (project.underwrittenMode) =4>
<input readonly value="C类-垫资(账期不覆盖)"/>
<input readonly value="垫资(账期不覆盖)"/>
</#if>
<#else>
<input readonly value=""/>
@ -561,11 +561,11 @@
<td class="table-title" colspan="1" >
<#if projectBudget.underwrittenModeBudget??>
<#if (projectBudget.underwrittenModeBudget) =1>
<input readonly value="A类-不垫资"/>
<input readonly value="不垫资"/>
<#elseif (projectBudget.underwrittenModeBudget) =3>
<input readonly value="B类-垫资(账期覆盖)"/>
<input readonly value="垫资(账期覆盖)"/>
<#elseif (projectBudget.underwrittenModeBudget) =4>
<input readonly value="C类-垫资(账期不覆盖)"/>
<input readonly value="垫资(账期不覆盖)"/>
</#if>
<#else>
<input readonly value=""/>
@ -619,6 +619,18 @@
<td class="table-title" colspan="1" >
<input readonly value="${Utils.format(projectBudget.contractAmountBudget)}" />
</td>
<th class="table-title" colspan="1" ><span style="font-size: 15px">项目毛利A:</span></th>
<td class="table-title" colspan="1" >
<input readonly value="${Utils.format(projectBudget.grossProfitABudget)}" />
</td>
<th class="table-title" colspan="1" ><span style="font-size: 15px">项目毛利A利率:</span></th>
<td class="table-title" colspan="1" >
<input readonly value="${Utils.format(projectBudget.grossProfitAMarginBudget)}" />
</td>
</tr>
<tr class="am-text-nowrap">
<th class="table-title" colspan="2"></th>
<th class="table-title" colspan="1" ><span style="font-size: 15px">项目毛利:</span></th>
<td class="table-title" colspan="1" >
<input readonly value="${Utils.format(projectBudget.grossProfitBudget)}" />
@ -1249,6 +1261,12 @@
<button type="button" class="am-btn am-btn-default" onclick="location.href='${base}/project/budgetPlanExport?id=${project.id!}'">
<span class="am-icon-archive"></span> 导出
</button>
<button type="button" class="am-btn am-btn-default" onclick="openDetail()">
<span class="am-icon-archive"></span> 拓展明细
</button>
<button type="button" class="am-btn am-btn-default" onclick="closeDetail()">
<span class="am-icon-archive"></span> 隐藏明细
</button>
<#-- <button type="button" class="am-btn am-btn-default" onclick="printPage('tab34')">-->
<#-- <span class="am-icon-archive"></span> 打印-->
<#-- </button>-->
@ -1259,16 +1277,16 @@
<table class="am-table table-main" style="display: flex;border-collapse: collapse;padding:0;"
id="budgetPlanDetailTable">
<thead style="display: inline-block;">
<thead style="display: inline-block;white-space: nowrap;flex-shrink: 0;">
<tr style="display: inline-block;">
<td style="display: block;border-top: 1px solid #ddd;"><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail" value="月份" readonly></td>
<td style="display: block;border-top: 1px solid #ddd;"><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail" value="设备支出" readonly></td>
<td style="display: block;border-top: 1px solid #ddd;"><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail" value="工程支出(含服务+施工+其他)" readonly></td>
<td style="display: block;border-top: 1px solid #ddd;"><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail" value="经营性开支" readonly></td>
<td style="display: block;border-top: 1px solid #ddd;"><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail" value="保证金支出" readonly></td>
<td style="display: none;border-top: 1px solid #ddd;" class="am-modal-prompt-input-budget-plan-cost"><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail" value="设备支出" readonly></td>
<td style="display: none;border-top: 1px solid #ddd;" class="am-modal-prompt-input-budget-plan-cost"><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail" value="工程支出(含服务+施工+其他)" readonly></td>
<td style="display: none;border-top: 1px solid #ddd;" class="am-modal-prompt-input-budget-plan-cost"><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail" value="经营性开支" readonly></td>
<td style="display: none;border-top: 1px solid #ddd;" class="am-modal-prompt-input-budget-plan-cost"><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail" value="保证金支出" readonly></td>
<td style="display: block;border-top: 1px solid #ddd;"><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail" value="支出合计" readonly></td>
<td style="display: block;border-top: 1px solid #ddd;"><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail" value="销售收款" readonly></td>
<td style="display: block;border-top: 1px solid #ddd;"><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail" value="保证金收款" readonly></td>
<td style="display: none;border-top: 1px solid #ddd;" class="am-modal-prompt-input-budget-plan-income"><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail" value="销售收款" readonly></td>
<td style="display: none;border-top: 1px solid #ddd;" class="am-modal-prompt-input-budget-plan-income"><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail" value="保证金收款" readonly></td>
<td style="display: block;border-top: 1px solid #ddd;"><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail" value="收款合计" readonly></td>
<td style="display: block;border-top: 1px solid #ddd;"><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail" value="资金余额" readonly></td>
<td style="display: block;border-top: 1px solid #ddd;"><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail" value="资金利息" readonly></td>
@ -1282,19 +1300,19 @@
<tr style="display: inline-block;">
<td style="display: block;"><input type="text" class="am-modal-prompt-input input-total-month-budget-plan"
value="${projectBudgetPlanDetailTotal.month}" readonly/></td>
<td style="display: block;"><input type="text"
<td style="display: none;" class="am-modal-prompt-input-budget-plan-cost"><input type="text"
class="am-modal-prompt-input input-total-device-cost-budget-plan"
value="${Utils.format(projectBudgetPlanDetailTotal.deviceCost)}"
readonly/></td>
<td style="display: block;"><input type="text"
<td style="display: none;" class="am-modal-prompt-input-budget-plan-cost"><input type="text"
class="am-modal-prompt-input input-total-engineer-cost-budget-plan"
value="${Utils.format(projectBudgetPlanDetailTotal.engineerCost)}"
readonly/></td>
<td style="display: block;"><input type="text"
<td style="display: none;" class="am-modal-prompt-input-budget-plan-cost"><input type="text"
class="am-modal-prompt-input input-total-project-manage-cost-budget-plan"
value="${Utils.format(projectBudgetPlanDetailTotal.projectManageCost)}"
readonly/></td>
<td style="display: block;"><input type="text"
<td style="display: none;" class="am-modal-prompt-input-budget-plan-cost"><input type="text"
class="am-modal-prompt-input input-total-earnest-money-cost-budget-plan"
value="${Utils.format(projectBudgetPlanDetailTotal.earnestMoneyCost)}"
readonly/></td>
@ -1302,11 +1320,11 @@
class="am-modal-prompt-input input-total-total-cost-budget-plan"
value="${Utils.format(projectBudgetPlanDetailTotal.totalCost)}"
readonly/></td>
<td style="display: block;"><input type="text"
<td style="display: none;" class="am-modal-prompt-input-budget-plan-income"><input type="text"
class="am-modal-prompt-input input-total-sale-income-budget-plan"
value="${Utils.format(projectBudgetPlanDetailTotal.saleIncome)}"
readonly/></td>
<td style="display: block;"><input type="text"
<td style="display: none;" class="am-modal-prompt-input-budget-plan-income"><input type="text"
class="am-modal-prompt-input input-total-earnest-money-income-budget-plan"
value="${Utils.format(projectBudgetPlanDetailTotal.earnestMoneyIncome)}"
readonly/></td>
@ -1338,19 +1356,19 @@
<td style="display: block;"><input type="text" readonly
class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail input-changeable-month-budget-plan"
value="${projectBudgetPlanDetail.month!}"></td>
<td style="display: block;"><input type="text" readonly
<td style="display: none;" class="am-modal-prompt-input-budget-plan-cost"><input type="text" readonly
class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail input-changeable-device-cost-budget-plan"
value="${Utils.format(projectBudgetPlanDetail.deviceCost)}">
</td>
<td style="display: block;"><input type="text" readonly
<td style="display: none;" class="am-modal-prompt-input-budget-plan-cost"><input type="text" readonly
class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail input-changeable-engineer-cost-budget-plan"
value="${Utils.format(projectBudgetPlanDetail.engineerCost)}">
</td>
<td style="display: block;"><input type="text" readonly
<td style="display: none;" class="am-modal-prompt-input-budget-plan-cost"><input type="text" readonly
class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail input-changeable-project-manage-cost-budget-plan"
value="${Utils.format(projectBudgetPlanDetail.projectManageCost)}">
</td>
<td style="display: block;"><input type="text" readonly
<td style="display: none;" class="am-modal-prompt-input-budget-plan-cost"><input type="text" readonly
class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail input-changeable-earnest-money-cost-budget-plan"
value="${Utils.format(projectBudgetPlanDetail.earnestMoneyCost)}">
</td>
@ -1358,11 +1376,11 @@
class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail input-changeable-total-cost-budget-plan"
value="${Utils.format(projectBudgetPlanDetail.totalCost)}"
readonly></td>
<td style="display: block;"><input type="text" readonly
<td style="display: none;" class="am-modal-prompt-input-budget-plan-income"><input type="text" readonly
class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail input-changeable-sale-income-budget-plan"
value="${Utils.format(projectBudgetPlanDetail.saleIncome)}">
</td>
<td style="display: block;"><input type="text" readonly
<td style="display: none;" class="am-modal-prompt-input-budget-plan-income"><input type="text" readonly
class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail input-changeable-earnest-money-income-budget-plan"
value="${Utils.format(projectBudgetPlanDetail.earnestMoneyIncome)}">
</td>
@ -1646,6 +1664,12 @@
<td>不含税金额(元)</td>
<td>计算方式</td>
</tr>
<tr>
<td>项目毛利A</td>
<td><input type="text" class="number" name="projectGrossProfitARate" value="${Utils.format(budgetBean.projectGrossProfitARate,'0')}" readonly title="毛利A不含税/收入总计(不含税)"></td>
<td><input type="text" class="number" name="projectGrossProfitA" value="${Utils.format(budgetBean.projectGrossProfitA,'0')}" readonly title="收入总计(不含税)-成本总计(不含税)"></td>
<td>毛利A=收入明细表金额总计(不含税)-采购成本明细表金额总计(不含税)</td>
</tr>
<tr>
<td>项目毛利(元)</td>
<td><input type="text" class="number" name="projectGrossProfitRate" value="${Utils.format(budgetBean.projectGrossProfitRate,'0')}" readonly required title="毛利(不含税)/收入总计(不含税)"></td>
@ -3304,4 +3328,14 @@
}
});
};
var closeDetail = function () {
$('.am-modal-prompt-input-budget-plan-income').css('display', 'none');
$('.am-modal-prompt-input-budget-plan-cost').css('display', 'none');
};
var openDetail = function () {
$('.am-modal-prompt-input-budget-plan-income').css('display', 'block');
$('.am-modal-prompt-input-budget-plan-cost').css('display', 'block');
};
</script>

View File

@ -157,11 +157,11 @@
<td class="table-title" <#if project.underwrittenMode! <= 2> colspan="5" <#else> colspan="1" </#if> >
<#if project.underwrittenMode??>
<#if (project.underwrittenMode) =1>
<input readonly value="A类-不垫资"/>
<input readonly value="不垫资"/>
<#elseif (project.underwrittenMode) =3>
<input readonly value="B类-垫资(账期覆盖)"/>
<input readonly value="垫资(账期覆盖)"/>
<#elseif (project.underwrittenMode) =4>
<input readonly value="C类-垫资(账期不覆盖)"/>
<input readonly value="垫资(账期不覆盖)"/>
</#if>
<#else>
<input readonly value=""/>
@ -454,9 +454,9 @@
<th class="table-title" colspan="1" ><span style="color: red;">*</span><span style="font-size: 15px">垫资模式:</span></th>
<td class="table-title" colspan="1" >
<select data-am-selected="{btnSize: 'sm',btnWidth: '80%',searchBox: 1}" id="underwrittenModeBudget" name="underwrittenModeBudget" onchange="changeCheckB()">
<option value="1" <#if projectBudget.underwrittenModeBudget=1>selected</#if>>A类-不垫资</option>
<option value="3" <#if projectBudget.underwrittenModeBudget=3>selected</#if>>B类-垫资(账期覆盖)</option>
<option value="4" <#if projectBudget.underwrittenModeBudget=4>selected</#if>>C类-垫资(账期不覆盖)</option>
<option value="1" <#if projectBudget.underwrittenModeBudget=1>selected</#if>>不垫资</option>
<option value="3" <#if projectBudget.underwrittenModeBudget=3>selected</#if>>垫资(账期覆盖)</option>
<option value="4" <#if projectBudget.underwrittenModeBudget=4>selected</#if>>垫资(账期不覆盖)</option>
</select>
</td>
@ -513,6 +513,22 @@
name="contractAmountBudget" id="contractAmountBudget" placeholder="单位(元)" maxlength="16"
value="${Utils.format(projectBudget.contractAmountBudget)}" />
</td>
<th class="table-title" colspan="1" ><span style="color: red;">*</span><span style="font-size: 15px">项目毛利A:</span></th>
<td class="table-title" colspan="1" >
<input type="text" class="number am-input" style="border-style:none;" data-validate-async data-validation-message="请输入项目毛利A"
name="grossProfitABudget" id="grossProfitABudget" placeholder="单位(元)" maxlength="16"
value="${Utils.format(projectBudget.grossProfitABudget)}" />
</td>
<th class="table-title" colspan="1" ><span style="color: red;">*</span><span style="font-size: 15px">项目毛利A利率:</span></th>
<td class="table-title" colspan="1" >
<input type="text" class="number am-input" style="border-style:none;" data-validate-async data-validation-message="请输入项目毛利A利率"
name="grossProfitAMarginBudget" id="grossProfitAMarginBudget" placeholder="单位(%" maxlength="16"
value="${Utils.format(projectBudget.grossProfitAMarginBudget)}" />
</td>
</tr>
<tr class="am-text-nowrap">
<th class="table-title" colspan="2"></th>
<th class="table-title" colspan="1" ><span style="color: red;">*</span><span style="font-size: 15px">项目毛利:</span></th>
<td class="table-title" colspan="1" >
<input type="text" class="number am-input" style="border-style:none;" data-validate-async data-validation-message="请输入项目毛利"
@ -1362,6 +1378,12 @@
<td>不含税金额(元)</td>
<td>计算方式</td>
</tr>
<tr>
<td>项目毛利A</td>
<td><input type="text" class="number" name="projectGrossProfitARate" value="${Utils.format(budgetBean.projectGrossProfitARate,'0')}" readonly title="毛利A不含税/收入总计(不含税)"></td>
<td><input type="text" class="number" name="projectGrossProfitA" value="${Utils.format(budgetBean.projectGrossProfitA,'0')}" readonly title="收入总计(不含税)-成本总计(不含税)"></td>
<td>毛利A=收入明细表金额总计(不含税)-采购成本明细表金额总计(不含税)</td>
</tr>
<tr>
<td>项目毛利(元)</td>
<td><input type="text" class="number" name="projectGrossProfitRate" value="${Utils.format(budgetBean.projectGrossProfitRate,'0')}" readonly title="毛利(不含税)/收入总计(不含税)"></td>

View File

@ -94,9 +94,9 @@
<th class="table-title" colspan="1" ><span style="color: red;">*</span><span style="font-size: 15px">垫资模式:</span></th>
<td class="table-title" colspan="1" id="spanMode" >
<select data-am-selected="{btnSize: 'sm',btnWidth: '80%',searchBox: 1}" id="underwrittenMode" name="underwrittenMode" onchange="changeCheck()">
<option value="1" >A类-不垫资</option>
<option value="3" >B类-垫资(账期覆盖)</option>
<option value="4" >C类-垫资(账期不覆盖)</option>
<option value="1" >不垫资</option>
<option value="3" >垫资(账期覆盖)</option>
<option value="4" >垫资(账期不覆盖)</option>
</select>
</td>

View File

@ -98,9 +98,9 @@
<th class="table-title" colspan="1" ><span style="color: red;">*</span><span style="font-size: 15px">垫资模式:</span></th>
<td class="table-title" colspan="1" >
<select data-am-selected="{btnSize: 'sm',btnWidth: '80%',searchBox: 1}" id="underwrittenMode" name="underwrittenMode" onchange="changeCheck()">
<option value="1" <#if project.underwrittenMode=1>selected</#if>>A类-不垫资</option>
<option value="3" <#if project.underwrittenMode=3>selected</#if>>B类-垫资(账期覆盖)</option>
<option value="4" <#if project.underwrittenMode=4>selected</#if>>C类-垫资(账期不覆盖)</option>
<option value="1" <#if project.underwrittenMode=1>selected</#if>>不垫资</option>
<option value="3" <#if project.underwrittenMode=3>selected</#if>>垫资(账期覆盖)</option>
<option value="4" <#if project.underwrittenMode=4>selected</#if>>垫资(账期不覆盖)</option>
</select>
</td>
@ -420,7 +420,7 @@
<textarea rows="3" cols="20" id="nextPlan" name="nextPlan" maxlength="1000"
class="am-input" style="border-style:none;" data-validate-async data-validation-message="下一步计划"
placeholder="下一步计划"
>${project.stageRemark!}</textarea>
>${project.nextPlan!}</textarea>
</td>
</tr>
</table>

View File

@ -296,10 +296,10 @@
<div class="st-col-field">
<select data-am-selected="{btnSize: 'sm',btnWidth: '100%',maxHeight: 500,searchBox: 1}" id="underwrittenMode" name="underwrittenMode">
<option value="-1">全部</option>
<option value="1" <#if underwrittenMode?? && underwrittenMode='1'>selected</#if>>A类-不垫资</option>
<#-- <option value="2" <#if underwrittenMode?? && underwrittenMode='2'>selected</#if>>B类-不垫资(背靠背)</option>-->
<option value="3" <#if underwrittenMode?? && underwrittenMode='3'>selected</#if>>B类-垫资(账期覆盖)</option>
<option value="4" <#if underwrittenMode?? && underwrittenMode='4'>selected</#if>>C类-垫资(账期不覆盖)</option>
<option value="1" <#if underwrittenMode?? && underwrittenMode='1'>selected</#if>>不垫资</option>
<#-- <option value="2" <#if underwrittenMode?? && underwrittenMode='2'>selected</#if>>不垫资(背靠背)</option>-->
<option value="3" <#if underwrittenMode?? && underwrittenMode='3'>selected</#if>>垫资(账期覆盖)</option>
<option value="4" <#if underwrittenMode?? && underwrittenMode='4'>selected</#if>>垫资(账期不覆盖)</option>
</select>
</div>
</div>
@ -634,10 +634,10 @@
<#-- <div class="am-u-sm-10">-->
<#-- <select data-am-selected="{btnSize: 'sm',btnWidth: '150px',maxHeight: 500,searchBox: 1}" id="underwrittenMode" name="underwrittenMode">-->
<#-- <option value="-1">全部</option>-->
<#-- <option value="1" <#if underwrittenMode?? && underwrittenMode='1'>selected</#if>>A类-不垫资(战略合作)</option>-->
<#-- <option value="2" <#if underwrittenMode?? && underwrittenMode='2'>selected</#if>>B类-不垫资(背靠背)</option>-->
<#-- <option value="3" <#if underwrittenMode?? && underwrittenMode='3'>selected</#if>>C类-垫资(账期覆盖)</option>-->
<#-- <option value="4" <#if underwrittenMode?? && underwrittenMode='4'>selected</#if>>D类-垫资(账期不覆盖)</option>-->
<#-- <option value="1" <#if underwrittenMode?? && underwrittenMode='1'>selected</#if>>不垫资(战略合作)</option>-->
<#-- <option value="2" <#if underwrittenMode?? && underwrittenMode='2'>selected</#if>>不垫资(背靠背)</option>-->
<#-- <option value="3" <#if underwrittenMode?? && underwrittenMode='3'>selected</#if>>垫资(账期覆盖)</option>-->
<#-- <option value="4" <#if underwrittenMode?? && underwrittenMode='4'>selected</#if>>垫资(账期不覆盖)</option>-->
<#-- </select>-->
<#-- </div>-->
<#-- </td>-->

View File

@ -233,10 +233,10 @@
<div class="st-col-field">
<select data-am-selected="{btnSize: 'sm',btnWidth: '100%',maxHeight: 500,searchBox: 1}" id="underwrittenMode" name="underwrittenMode">
<option value="-1">全部</option>
<option value="1" <#if underwrittenMode?? && underwrittenMode='1'>selected</#if>>A类-不垫资(战略合作)</option>
<#-- <option value="2" <#if underwrittenMode?? && underwrittenMode='2'>selected</#if>>B类-不垫资(背靠背)</option>-->
<option value="3" <#if underwrittenMode?? && underwrittenMode='3'>selected</#if>>B类-垫资(账期覆盖)</option>
<option value="4" <#if underwrittenMode?? && underwrittenMode='4'>selected</#if>>C类-垫资(账期不覆盖)</option>
<option value="1" <#if underwrittenMode?? && underwrittenMode='1'>selected</#if>>不垫资(战略合作)</option>
<#-- <option value="2" <#if underwrittenMode?? && underwrittenMode='2'>selected</#if>>不垫资(背靠背)</option>-->
<option value="3" <#if underwrittenMode?? && underwrittenMode='3'>selected</#if>>垫资(账期覆盖)</option>
<option value="4" <#if underwrittenMode?? && underwrittenMode='4'>selected</#if>>垫资(账期不覆盖)</option>
</select>
</div>
</div>