From c53df0d684ede7c51d0c3c94915812bb745bdd2e Mon Sep 17 00:00:00 2001 From: OathK1per Date: Thu, 18 Aug 2022 09:01:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AF=BC=E5=87=BA=E6=80=BB?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/backend/ProjectController.java | 91 ++++- .../work/service/ProjectBudgetService.java | 2 +- .../work/utils/excel/ExportExcelUtils.java | 229 +++++++++-- .../templates/admin/project_approve.ftl | 23 -- .../templates/admin/project_budget_edit.ftl | 381 +++++++++--------- .../templates/admin/project_estimate_add.ftl | 138 +++---- .../templates/admin/project_estimate_edit.ftl | 186 +++++---- .../templates/admin/project_list.ftl | 185 +++++---- 8 files changed, 740 insertions(+), 495 deletions(-) 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 a572459..ecfa689 100644 --- a/src/main/java/cn/palmte/work/controller/backend/ProjectController.java +++ b/src/main/java/cn/palmte/work/controller/backend/ProjectController.java @@ -28,6 +28,7 @@ import top.jfunc.common.utils.CollectionUtil; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; @@ -125,11 +126,12 @@ public class ProjectController extends BaseController { public void export(@RequestParam(value = "keywords", required = false) String keywords, HttpServletResponse httpServletResponse) throws IOException { Map searchInfo = getSearchInfo(keywords); downloadHeader(httpServletResponse, Utils.generateExcelName("项目报表"), "application/octet-stream"); - String[] headers = {"项目编号", "项目名称", "项目类型", "项目合同金额", "华智产品金额", "汇智产品金额", "华三产品金额", "其他产品金额", "项目状态", "垫资模式", "合作对象", "项目把握度", "行业场景应用", "客户名称", "终端客户名称", - "项目毛利", "项目毛利率", "项目负责人", "预计合同签订时间", "项目计划招标时间", "是否二次合作", "签单方式", "垫资利息", "垫资峰值", "审核状态", "当前审核人", "项目创建者", "部门名称", "项目开始时间", "项目结束时间", "最后更新时间"}; - String[] exportColumns = {"projectNo", "name", "typeDesc", "contractRound", "huazhiRound", "huizhiRound", "huasanRound", "ziguangRound", "statusDesc", "underwrittenModeDesc", "collaborator", - "certaintyStr", "industryScenario", "customer", "terminalCustomer", "grossProfit", "grossProfitMargin", "principal", "contractTime", "bidsTime", "isSecondStr", "signTypeStr", - "advanceInterestAmount", "advancePeakAmount", "approveStatusDesc", "approveName", "creatorName", "deptName", "startDateYM", "endDateYM", "lastUpdateTime"}; + String[] headers = {"项目编号", "项目名称", "项目类型", "垫资模式", "垫资利息", "垫资峰值", "项目合同金额", "项目毛利", "项目毛利率", "项目把握度", "汇智产品金额", "华智产品金额", + "华三产品金额", "其他产品金额", "项目状态", "行业场景应用", "解决方案", "客户名称", "终端客户名称", "预计合同签订时间", "项目计划招标时间", "是否二次合作", "签单方式", "合作对象", + "项目负责人", "价值及风险", "主合同收款条款", "主合同具体解决方案", "计收计划", "审核状态", "当前审核人", "项目创建者", "部门名称", "项目开始时间", "项目结束时间", "最后更新时间"}; + String[] exportColumns = {"projectNo", "name", "typeDesc", "underwrittenModeDesc", "advanceInterestAmount", "advancePeakAmount", "contractRound", "grossProfit", "grossProfitMargin", "certaintyStr", "huizhiRound", "huazhiRound", + "huasanRound", "ziguangRound", "statusDesc", "industryScenario", "resolvePlan", "customer", "terminalCustomer", "contractTime", "bidsTime", "isSecondStr", "signTypeStr", "collaborator", + "principal", "valueRisk", "mainContractCollectionTerms", "mainContractResolvePlan", "calculationCollection", "approveStatusDesc", "approveName", "creatorName", "deptName", "startDateYM", "endDateYM", "lastUpdateTime"}; ExportUtils.exportToExcel(headers, exportColumns, 1, 10000, httpServletResponse.getOutputStream(), (pN, pS) -> projectService.list(searchInfo, pN, pS).getList()); } @@ -140,30 +142,39 @@ public class ProjectController extends BaseController { @RequestMapping("/exportAll") public void exportAll(HttpServletResponse response, Integer id) throws IOException { Project project = projectRepository.findOne(id); -// downloadHeader(httpServletResponse, Utils.generateExcelName("项目信息总表"), "application/vnd.ms-excel"); - response.setHeader("Content-Disposition", "attachment;filename=".concat(Utils.generateExcelName("项目信息总表"))); -// response.setHeader("Content-Disposition", "attachment;filename*=UTF-8''" + java.net.URLEncoder.encode("项目信息总表", "UTF-8")); + response.setHeader("Content-Disposition", "attachment;filename=".concat(new String((Utils.generateExcelName("项目信息总表")).getBytes(), StandardCharsets.ISO_8859_1))); response.setHeader("Connection", "close"); response.setHeader("Content-Type", "application/vnd.ms-excel"); ServletOutputStream outputStream = response.getOutputStream(); ExportExcelUtils exportExcelUtils = new ExportExcelUtils(); - String[] headers0 = {"部门名称", "项目编号", "项目名称", "项目类型", "项目计划开始时间", "项目计划结束时间", "垫资模式", "项目把握度", "行业场景应用", "客户名称", "终端客户名称", "合同金额", "项目毛利", "项目毛利率", "华智产品金额", "汇智产品金额", "华三产品金额", "其他产品金额", "价值及风险"}; - String[] columns0 = {"deptName", "projectNo", "name", "typeDesc", "startDate", "endDate", "underwrittenModeDesc", "certainty", "industryScenario", "customer", "terminalCustomer", "contractAmount", "grossProfit", "grossProfitMargin", "huazhiProductAmount", "huizhiProductAmount", "huasanProductAmount", "ziguangOtherAmount", "valueRisk"}; + String[] headers0 = {"部门名称", "项目编号", "项目名称", "项目类型", "项目计划开始时间", "项目计划结束时间", "垫资模式", "合作对象", "垫资利息", "垫资峰值", "合同金额", "项目毛利", "项目毛利率", "华智产品金额", "汇智产品金额", "华三产品金额", "其他产品金额", "项目把握度", "行业场景应用", "项目解决方案", "客户名称", "终端客户名称", "价值及风险"}; + String[] columns0 = {"deptName", "projectNo", "name", "typeDesc", "startDate", "endDate", "underwrittenModeStr", "collaborator", "advanceInterestAmount", "advancePeakAmount", "contractAmount", "grossProfit", "grossProfitMargin", "huazhiProductAmount", "huizhiProductAmount", "huasanProductAmount", "ziguangOtherAmount", "certaintyStr", "industryScenario", "resolvePlanStr", "customer", "terminalCustomer", "valueRisk"}; exportExcelUtils.exportProjectExcel(headers0, columns0, project, "yyyy-MM-dd", 0, "项目基本信息", outputStream); - String[] headers1 = {"项目负责人", "预计合同签订时间", "项目计划招标时间", "是否二次合作", "签单方式", "项目解决方案", "垫资利息", "垫资峰值", "主合同收款条款", "主合具体解决方案", "计收计划"}; - String[] columns1 = {"principal", "contractTime", "bidsTime", "isSecond", "signType", "resolvePlan", "advanceInterestAmount", "advancePeakAmount", "mainContractCollectionTerms", "mainContractResolvePlan", "calculationCollection"}; + String[] headers1 = {"项目负责人", "预计合同签订时间", "项目计划招标时间", "是否二次合作", "签单方式", "主合同收款条款", "主合具体解决方案", "计收计划"}; + String[] columns1 = {"principal", "contractTime", "bidsTime", "isSecondStr", "signTypeStr", "mainContractCollectionTerms", "mainContractResolvePlan", "calculationCollection"}; exportExcelUtils.exportProjectExcel(headers1, columns1, project, "yyyy-MM-dd", 0, "项目其他信息", outputStream); BudgetBean budgetBean = projectBudgetService.getBudget(project); if (project.getStatus() < 5) { exportExcelUtils.end(outputStream); return; } - List projectBudgetPlanDetails = projectBudgetService.getProjectBudgetPlanDetails(project); - CashFlowBean cashFlowBean = projectBudgetService.getCashFlowBean(project, projectBudgetPlanDetails); - exportExcelUtils.exportBudgetExcel(budgetBean, cashFlowBean, 0, "项目预算信息", outputStream, project.getOtherName()); //收入明细 List budgetIncomeDetail = projectBudgetService.getBudgetIncomeDetail(project); Integer incomeTotalAmount = projectBudgetService.getBudgetIncomeAmount(project); + Set rates = new HashSet<>(); + StringBuilder incomeTaxSb = new StringBuilder(); + String incomeTaxRates; + for (ProjectBudgetIncomeDetail projectBudgetIncomeDetail : budgetIncomeDetail) { + if (!rates.contains(projectBudgetIncomeDetail.getTaxRate().toPlainString())) { + incomeTaxSb.append(projectBudgetIncomeDetail.getTaxRate().toPlainString()).append(","); + rates.add(projectBudgetIncomeDetail.getTaxRate().toPlainString()); + } + } + if (incomeTaxSb.lastIndexOf(",") > 0 && incomeTaxSb.lastIndexOf(",") == incomeTaxSb.length() - 1) { + incomeTaxRates = incomeTaxSb.substring(0, incomeTaxSb.length() - 2); + } else { + incomeTaxRates = incomeTaxSb.toString(); + } String[] headers2 = {"序号", "类别", "名称", "单位", "数量", "单价", "税率(%)", "含税总金额(元)", "不含税金额(元)", "税金(元)"}; String[] columns2 = {"tempId", "type", "name", "unit", "amount", "price", "taxRate", "totalTaxInclude", "totalTaxExclude", "totalTax"}; exportExcelUtils.exportIncomeDetailExcel(headers2, columns2, project, budgetBean, budgetIncomeDetail, incomeTotalAmount, "yyyy-MM-dd", 0, "收入明细表", outputStream); @@ -172,6 +183,20 @@ public class ProjectController extends BaseController { Integer costTotalAmount = projectBudgetService.getBudgetCostAmount(project); List procurementTypes = procurementTypeService.allProcurementTypeList(); Map procurementMap = procurementTypes.stream().collect(Collectors.toMap(ProcurementType::getId, ProcurementType::getName)); + Set rates2 = new HashSet<>(); + StringBuilder costTaxSb = new StringBuilder(); + String costTaxRates; + for (ProjectBudgetCostDetail projectBudgetCostDetail : budgetCostDetail) { + if (!rates2.contains(projectBudgetCostDetail.getTaxRate().toPlainString())) { + costTaxSb.append(projectBudgetCostDetail.getTaxRate().toPlainString()).append(","); + rates2.add(projectBudgetCostDetail.getTaxRate().toPlainString()); + } + } + if (costTaxSb.lastIndexOf(",") > 0 && costTaxSb.lastIndexOf(",") == costTaxSb.length() - 1) { + costTaxRates = costTaxSb.substring(0, costTaxSb.length() - 2); + } else { + costTaxRates = costTaxSb.toString(); + } String[] headers3 = {"序号", "大类", "类别", "名称", "单位", "数量", "单价", "税率(%)", "含税总金额(元)", "不含税金额(元)", "税金(元)"}; String[] columns3 = {"tempId", "type", "category", "name", "unit", "amount", "price", "taxRate", "totalTaxInclude", "totalTaxExclude", "totalTax"}; exportExcelUtils.exportCostDetailExcel(headers3, columns3, project, budgetBean, budgetCostDetail, costTotalAmount, procurementMap, "yyyy-MM-dd", 0, "采购成本明细表", outputStream); @@ -187,11 +212,15 @@ public class ProjectController extends BaseController { // budgetCostDetail, // budgetCostProjectManageDetail, // projectBudgetPlanDetails); + List projectBudgetPlanDetails = projectBudgetService.getProjectBudgetPlanDetails(project); ProjectBudgetPlanDetail projectBudgetPlanDetailTotal = projectBudgetService.getProjectBudgetPlanDetailTotal(project, projectBudgetPlanDetails); String[] headers5 = {"月份", "设备支出", "工程支出(含服务+施工+其他)", "经营性开支", "保证金支出", "支出合计", "销售收款", "保证金收款", "收款合计", "资金余额", "资金利息", "垫资计划", "还款计划"}; String[] row5 = {"month", "deviceCost", "engineerCost", "projectManageCost", "earnestMoneyCost", "totalCost", "saleIncome", "earnestMoneyIncome", "totalIncome", "fundBalance", "capitalInterest", "underwrittenPlan", "repaymentPlan"}; exportExcelUtils.exportPlanDetailExcel(headers5, row5, project, budgetBean, projectBudgetPlanDetails, projectBudgetPlanDetailTotal, "yyyy-MM-dd", 0, "资金计划表", outputStream); + CashFlowBean cashFlowBean = projectBudgetService.getCashFlowBean(project, projectBudgetPlanDetails); + exportExcelUtils.exportBudgetExcel(budgetBean, cashFlowBean, 0, "项目预算信息", outputStream, project.getOtherName(), incomeTaxRates, costTaxRates); + List timeList = projectSettleIncomeRepository.findAllByProjectIdAndGroupByTime(project.getId()); for (String time : timeList) { SettleBean settleBean = projectSettleService.getMonthSettle(project, time); @@ -532,10 +561,12 @@ public class ProjectController extends BaseController { model.put("procurementTypes", procurementTypeService.allProcurementTypeList()); model.put("budgetBean", budgetBean); //收入明细 - model.put("incomeDetails", projectBudgetService.getBudgetIncomeDetail(project)); + List budgetIncomeDetail = projectBudgetService.getBudgetIncomeDetail(project); + model.put("incomeDetails", budgetIncomeDetail); model.put("incomeTotalAmount", projectBudgetService.getBudgetIncomeAmount(project)); //成本明细 - model.put("costDetails", projectBudgetService.getBudgetCostDetail(project)); + List budgetCostDetail = projectBudgetService.getBudgetCostDetail(project); + model.put("costDetails", budgetCostDetail); model.put("costTotalAmount", projectBudgetService.getBudgetCostAmount(project)); //项目管理成本明细 model.put("costProjectManageDetails", projectBudgetService.getBudgetCostProjectManageDetail(project)); @@ -549,7 +580,33 @@ public class ProjectController extends BaseController { model.put("underwrittenPlanStatistic", projectBudgetService.getProjectUnderwrittenPlanStatisticBean(projectBudgetPlanDetails)); //现金表 model.put("cashFlowBean", projectBudgetService.getCashFlowBean(project, projectBudgetPlanDetails)); + Set rates = new HashSet<>(); + StringBuilder incomeTaxSb = new StringBuilder(); + for (ProjectBudgetIncomeDetail projectBudgetIncomeDetail : budgetIncomeDetail) { + if (!rates.contains(projectBudgetIncomeDetail.getTaxRate().toPlainString())) { + incomeTaxSb.append(projectBudgetIncomeDetail.getTaxRate().toPlainString()).append(","); + rates.add(projectBudgetIncomeDetail.getTaxRate().toPlainString()); + } + } + if (incomeTaxSb.lastIndexOf(",") > 0 && incomeTaxSb.lastIndexOf(",") == incomeTaxSb.length() - 1) { + model.put("incomeTaxRates", incomeTaxSb.substring(0, incomeTaxSb.length() - 2)); + } else { + model.put("incomeTaxRates", incomeTaxSb.toString()); + } + Set rates2 = new HashSet<>(); + StringBuilder costTaxSb = new StringBuilder(); + for (ProjectBudgetCostDetail projectBudgetCostDetail : budgetCostDetail) { + if (!rates2.contains(projectBudgetCostDetail.getTaxRate().toPlainString())) { + costTaxSb.append(projectBudgetCostDetail.getTaxRate().toPlainString()).append(","); + rates2.add(projectBudgetCostDetail.getTaxRate().toPlainString()); + } + } + if (costTaxSb.lastIndexOf(",") > 0 && costTaxSb.lastIndexOf(",") == costTaxSb.length() - 1) { + model.put("costTaxRates", costTaxSb.substring(0, costTaxSb.length() - 2)); + } else { + model.put("costTaxRates", costTaxSb.toString()); + } //结算信息 model.put("keywords",keywords); ConcurrentHashMap searchInfo = getSearchInfo(keywords,model); diff --git a/src/main/java/cn/palmte/work/service/ProjectBudgetService.java b/src/main/java/cn/palmte/work/service/ProjectBudgetService.java index 7e621ae..1b02e85 100644 --- a/src/main/java/cn/palmte/work/service/ProjectBudgetService.java +++ b/src/main/java/cn/palmte/work/service/ProjectBudgetService.java @@ -795,7 +795,7 @@ public class ProjectBudgetService { */ @Transactional(rollbackFor = RuntimeException.class) public Project budgetEditSave(Project project, Project projectInDb, BudgetBean budgetBean, Admin admin, ApproveStatusEnum approveStatusEnum) { - Project p = projectService.editProject(project, projectInDb); + Project p = projectService.estimateEditProject(project, projectInDb); p.setStatus(StatusEnum.BUDGET_ACCOUNTS.getStatus()); p.setStatusDesc(StatusEnum.BUDGET_ACCOUNTS.getStatusDesc()); p.setApproveStatusBudget(approveStatusEnum.getApproveStatus()); diff --git a/src/main/java/cn/palmte/work/utils/excel/ExportExcelUtils.java b/src/main/java/cn/palmte/work/utils/excel/ExportExcelUtils.java index 0b9d520..7d064f3 100644 --- a/src/main/java/cn/palmte/work/utils/excel/ExportExcelUtils.java +++ b/src/main/java/cn/palmte/work/utils/excel/ExportExcelUtils.java @@ -127,7 +127,7 @@ public class ExportExcelUtils { } } - public void exportBudgetExcel(BudgetBean budgetBean, CashFlowBean cashFlowBean, int rowIndex, String sheetName, ServletOutputStream outputStream, String otherName) { + public void exportBudgetExcel(BudgetBean budgetBean, CashFlowBean cashFlowBean, int rowIndex, String sheetName, ServletOutputStream outputStream, String otherName, String incomeTaxRates, String costTaxRates) { // 遍历集合数据,产生数据行 int index = rowIndex; XSSFSheet sheet = workbook.createSheet(sheetName); @@ -137,12 +137,12 @@ public class ExportExcelUtils { // 收入 Row incomeRow = sheet.createRow(index++); createTitleRow(incomeRow, "收入"); - index = createIncomeRow(budgetBean, sheet, index); + index = createIncomeRow(budgetBean, sheet, index, incomeTaxRates); index = index + 3; // 成本 Row costRow = sheet.createRow(index++); createTitleRow(costRow, "成本"); - index = createCostRow(budgetBean, sheet, index, otherName); + index = createCostRow(budgetBean, sheet, index, otherName, costTaxRates); index = index + 3; // 管理 Row manageRow = sheet.createRow(index++); @@ -168,12 +168,17 @@ public class ExportExcelUtils { cell.setCellValue(titleName); } - private int createIncomeRow(BudgetBean budgetBean, XSSFSheet sheet, int index) { + private int createIncomeRow(BudgetBean budgetBean, XSSFSheet sheet, int index, String incomeTaxRates) { createSubTitleIncomeRow(sheet, index++); createDeviceIncomeRow(budgetBean, sheet, index++); createEngineerIncomeRow(budgetBean, sheet, index++); createServiceIncomeRow(budgetBean, sheet, index++); createTotalIncomeRow(budgetBean, sheet, index++); + Row row = sheet.createRow(index++); + Cell remarkCell = row.createCell(0); + remarkCell.setCellStyle(style); + remarkCell.setCellType(CellType.STRING); + remarkCell.setCellValue("(备注:本表所用税率为:" + incomeTaxRates + ")"); return index; } @@ -195,6 +200,10 @@ public class ExportExcelUtils { fourthCell.setCellStyle(style); fourthCell.setCellType(CellType.STRING); fourthCell.setCellValue("不含税金额(元)"); + Cell fifthCell = row.createCell(4); + fifthCell.setCellStyle(style); + fifthCell.setCellType(CellType.STRING); + fifthCell.setCellValue("税金(元)"); } private void createDeviceIncomeRow(BudgetBean budgetBean, XSSFSheet sheet, int index) { @@ -215,6 +224,10 @@ public class ExportExcelUtils { fourthCell.setCellStyle(style2); fourthCell.setCellType(CellType.NUMERIC); fourthCell.setCellValue(Utils.format(budgetBean.getIncomeDeviceTaxExclude())); + Cell fifthCell = row.createCell(4); + fifthCell.setCellStyle(style2); + fifthCell.setCellType(CellType.NUMERIC); + fifthCell.setCellValue(Utils.format(budgetBean.getIncomeDeviceTax())); } private void createEngineerIncomeRow(BudgetBean budgetBean, XSSFSheet sheet, int index) { @@ -235,6 +248,10 @@ public class ExportExcelUtils { fourthCell.setCellStyle(style2); fourthCell.setCellType(CellType.NUMERIC); fourthCell.setCellValue(Utils.format(budgetBean.getIncomeEngineerTaxExclude())); + Cell fifthCell = row.createCell(4); + fifthCell.setCellStyle(style2); + fifthCell.setCellType(CellType.NUMERIC); + fifthCell.setCellValue(Utils.format(budgetBean.getIncomeEngineerTax())); } private void createServiceIncomeRow(BudgetBean budgetBean, XSSFSheet sheet, int index) { @@ -255,6 +272,10 @@ public class ExportExcelUtils { fourthCell.setCellStyle(style2); fourthCell.setCellType(CellType.NUMERIC); fourthCell.setCellValue(Utils.format(budgetBean.getIncomeServiceTaxExclude())); + Cell fifthCell = row.createCell(4); + fifthCell.setCellStyle(style2); + fifthCell.setCellType(CellType.NUMERIC); + fifthCell.setCellValue(Utils.format(budgetBean.getIncomeServiceTax())); } private void createTotalIncomeRow(BudgetBean budgetBean, XSSFSheet sheet, int index) { @@ -275,9 +296,13 @@ public class ExportExcelUtils { fourthCell.setCellStyle(style2); fourthCell.setCellType(CellType.NUMERIC); fourthCell.setCellValue(Utils.format(budgetBean.getIncomeTotalTaxExclude())); + Cell fifthCell = row.createCell(4); + fifthCell.setCellStyle(style2); + fifthCell.setCellType(CellType.NUMERIC); + fifthCell.setCellValue(Utils.format(budgetBean.getIncomeTotalTax())); } - private int createCostRow(BudgetBean budgetBean, XSSFSheet sheet, int index, String otherName) { + private int createCostRow(BudgetBean budgetBean, XSSFSheet sheet, int index, String otherName, String costTaxRates) { createSubTitleCostRow(sheet, index++); createDeviceCostRow(budgetBean, sheet, index++); createEngineerCostRow(budgetBean, sheet, index++); @@ -286,6 +311,11 @@ public class ExportExcelUtils { createManageCostRow(budgetBean, sheet, index++); createOtherRow(budgetBean, sheet, index++, otherName); createTotalCostRow(budgetBean, sheet, index++); + Row row = sheet.createRow(index++); + Cell remarkCell = row.createCell(0); + remarkCell.setCellStyle(style); + remarkCell.setCellType(CellType.STRING); + remarkCell.setCellValue("(备注:本表所用税率为:" + costTaxRates + ")"); return index; } @@ -311,6 +341,10 @@ public class ExportExcelUtils { fifthCell.setCellStyle(style); fifthCell.setCellType(CellType.STRING); fifthCell.setCellValue("不含税金额(元)"); + Cell sixthCell = row.createCell(5); + sixthCell.setCellStyle(style); + sixthCell.setCellType(CellType.STRING); + sixthCell.setCellValue("税金(元)"); } private void createDeviceCostRow(BudgetBean budgetBean, XSSFSheet sheet, int index) { @@ -335,6 +369,10 @@ public class ExportExcelUtils { fifthCell.setCellStyle(style2); fifthCell.setCellType(CellType.NUMERIC); fifthCell.setCellValue(Utils.format(budgetBean.getCostPurchaseDeviceTaxExclude())); + Cell sixthCell = row.createCell(5); + sixthCell.setCellStyle(style2); + sixthCell.setCellType(CellType.NUMERIC); + sixthCell.setCellValue(Utils.format(budgetBean.getCostPurchaseDeviceTax())); } private void createEngineerCostRow(BudgetBean budgetBean, XSSFSheet sheet, int index) { @@ -359,6 +397,10 @@ public class ExportExcelUtils { fifthCell.setCellStyle(style2); fifthCell.setCellType(CellType.NUMERIC); fifthCell.setCellValue(Utils.format(budgetBean.getCostPurchaseBuildTaxExclude())); + Cell sixthCell = row.createCell(5); + sixthCell.setCellStyle(style2); + sixthCell.setCellType(CellType.NUMERIC); + sixthCell.setCellValue(Utils.format(budgetBean.getCostPurchaseBuildTax())); } private void createServiceCostRow(BudgetBean budgetBean, XSSFSheet sheet, int index) { @@ -383,6 +425,10 @@ public class ExportExcelUtils { fifthCell.setCellStyle(style2); fifthCell.setCellType(CellType.NUMERIC); fifthCell.setCellValue(Utils.format(budgetBean.getCostPurchaseServiceTaxExclude())); + Cell sixthCell = row.createCell(5); + sixthCell.setCellStyle(style2); + sixthCell.setCellType(CellType.NUMERIC); + sixthCell.setCellValue(Utils.format(budgetBean.getCostPurchaseServiceTax())); } private void createOtherCostRow(BudgetBean budgetBean, XSSFSheet sheet, int index) { @@ -407,6 +453,10 @@ public class ExportExcelUtils { fifthCell.setCellStyle(style2); fifthCell.setCellType(CellType.NUMERIC); fifthCell.setCellValue(Utils.format(budgetBean.getCostPurchaseOtherTaxExclude())); + Cell sixthCell = row.createCell(5); + sixthCell.setCellStyle(style2); + sixthCell.setCellType(CellType.NUMERIC); + sixthCell.setCellValue(Utils.format(budgetBean.getCostPurchaseOtherTax())); } private void createManageCostRow(BudgetBean budgetBean, XSSFSheet sheet, int index) { @@ -431,6 +481,10 @@ public class ExportExcelUtils { fifthCell.setCellStyle(style2); fifthCell.setCellType(CellType.NUMERIC); fifthCell.setCellValue(Utils.format(budgetBean.getCostProjectManageTaxExclude())); + Cell sixthCell = row.createCell(5); + sixthCell.setCellStyle(style2); + sixthCell.setCellType(CellType.STRING); + sixthCell.setCellValue("财务计取以不含税方式核算"); } private void createOtherRow(BudgetBean budgetBean, XSSFSheet sheet, int index, String otherName) { @@ -455,6 +509,10 @@ public class ExportExcelUtils { fifthCell.setCellStyle(style2); fifthCell.setCellType(CellType.NUMERIC); fifthCell.setCellValue(Utils.format(budgetBean.getCostOtherOtherTaxExclude())); + Cell sixthCell = row.createCell(5); + sixthCell.setCellStyle(style2); + sixthCell.setCellType(CellType.NUMERIC); + sixthCell.setCellValue(Utils.format(budgetBean.getCostOtherOtherTax())); } private void createTotalCostRow(BudgetBean budgetBean, XSSFSheet sheet, int index) { @@ -479,12 +537,21 @@ public class ExportExcelUtils { fifthCell.setCellStyle(style2); fifthCell.setCellType(CellType.NUMERIC); fifthCell.setCellValue(Utils.format(budgetBean.getCostTotalTaxExclude())); + Cell sixthCell = row.createCell(5); + sixthCell.setCellStyle(style2); + sixthCell.setCellType(CellType.NUMERIC); + sixthCell.setCellValue(Utils.format(budgetBean.getCostTotalTax())); } private int createManageRow(BudgetBean budgetBean, XSSFSheet sheet, int index) { createSubTitleManageRow(sheet, index++); createExpropriationRow(budgetBean, sheet, index++); createCompanyManageRow(budgetBean, sheet, index++); + Row row = sheet.createRow(index++); + Cell remarkCell = row.createCell(0); + remarkCell.setCellStyle(style); + remarkCell.setCellType(CellType.STRING); + remarkCell.setCellValue("(备注:财务记取以不含税方式核算)"); return index; } @@ -539,9 +606,9 @@ public class ExportExcelUtils { private int createProfitRow(BudgetBean budgetBean, XSSFSheet sheet, int index) { createSubTitleProfitRow(sheet, index++); createGrossProfitRow(budgetBean, sheet, index++); - createGrossProfitMarginRow(budgetBean, sheet, index++); +// createGrossProfitMarginRow(budgetBean, sheet, index++); createContributionProfitRow(budgetBean, sheet, index++); - createContributionProfitRateRow(budgetBean, sheet, index++); +// createContributionProfitRateRow(budgetBean, sheet, index++); return index; } @@ -554,7 +621,16 @@ public class ExportExcelUtils { Cell secondCell = row.createCell(1); secondCell.setCellStyle(style); secondCell.setCellType(CellType.STRING); - secondCell.setCellValue(""); + secondCell.setCellValue("利润率(%)"); + Cell thirdCell = row.createCell(2); + thirdCell.setCellStyle(style); + thirdCell.setCellType(CellType.STRING); + thirdCell.setCellValue("不含税金额(元)"); + Cell fourthCell = row.createCell(3); + fourthCell.setCellStyle(style); + fourthCell.setCellType(CellType.STRING); + fourthCell.setCellValue("计算方式"); + } private void createGrossProfitRow(BudgetBean budgetBean, XSSFSheet sheet, int index) { @@ -566,20 +642,28 @@ public class ExportExcelUtils { Cell secondCell = row.createCell(1); secondCell.setCellStyle(style2); secondCell.setCellType(CellType.NUMERIC); - secondCell.setCellValue(Utils.format(budgetBean.getProjectGrossProfit())); + secondCell.setCellValue(Utils.format(budgetBean.getProjectGrossProfitRate())); + Cell thirdCell = row.createCell(2); + thirdCell.setCellStyle(style2); + thirdCell.setCellType(CellType.NUMERIC); + thirdCell.setCellValue(Utils.format(budgetBean.getProjectGrossProfit())); + Cell fourthCell = row.createCell(3); + fourthCell.setCellStyle(style2); + fourthCell.setCellType(CellType.STRING); + fourthCell.setCellValue("毛利=收入总计(不含税)-成本总计(不含税)-财务费用总计(不含税)"); } - private void createGrossProfitMarginRow(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("项目毛利率(%)"); - Cell secondCell = row.createCell(1); - secondCell.setCellStyle(style2); - secondCell.setCellType(CellType.NUMERIC); - secondCell.setCellValue(Utils.format(budgetBean.getProjectGrossProfitRate())); - } +// private void createGrossProfitMarginRow(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("项目毛利率(%)"); +// Cell secondCell = row.createCell(1); +// secondCell.setCellStyle(style2); +// secondCell.setCellType(CellType.NUMERIC); +// secondCell.setCellValue(Utils.format(budgetBean.getProjectGrossProfitRate())); +// } private void createContributionProfitRow(BudgetBean budgetBean, XSSFSheet sheet, int index) { Row row = sheet.createRow(index); @@ -590,20 +674,28 @@ public class ExportExcelUtils { Cell secondCell = row.createCell(1); secondCell.setCellStyle(style2); secondCell.setCellType(CellType.NUMERIC); - secondCell.setCellValue(Utils.format(budgetBean.getProjectContributionProfit())); + secondCell.setCellValue(Utils.format(budgetBean.getProjectContributionProfitRate())); + Cell thirdCell = row.createCell(2); + thirdCell.setCellStyle(style2); + thirdCell.setCellType(CellType.NUMERIC); + thirdCell.setCellValue(Utils.format(budgetBean.getProjectContributionProfit())); + Cell fourthCell = row.createCell(3); + fourthCell.setCellStyle(style2); + fourthCell.setCellType(CellType.STRING); + fourthCell.setCellValue("贡献利润=项目毛利(不含税)-公司管理费用总计(不含税)"); } - private void createContributionProfitRateRow(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("项目贡献利润率(%)"); - Cell secondCell = row.createCell(1); - secondCell.setCellStyle(style2); - secondCell.setCellType(CellType.NUMERIC); - secondCell.setCellValue(Utils.format(budgetBean.getProjectContributionProfitRate())); - } +// private void createContributionProfitRateRow(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("项目贡献利润率(%)"); +// Cell secondCell = row.createCell(1); +// secondCell.setCellStyle(style2); +// secondCell.setCellType(CellType.NUMERIC); +// secondCell.setCellValue(Utils.format(budgetBean.getProjectContributionProfitRate())); +// } private int createCashFlowRow(CashFlowBean cashFlowBean, XSSFSheet sheet, int index) { @@ -635,6 +727,10 @@ public class ExportExcelUtils { secondCell.setCellStyle(style); secondCell.setCellType(CellType.STRING); secondCell.setCellValue("金额(元)"); + Cell thirdCell = row.createCell(2); + thirdCell.setCellStyle(style); + thirdCell.setCellType(CellType.STRING); + thirdCell.setCellValue("计算方式"); } private void createSaleIncomeCashRow(CashFlowBean cashFlowBean, XSSFSheet sheet, int index) { @@ -647,6 +743,10 @@ public class ExportExcelUtils { secondCell.setCellStyle(style2); secondCell.setCellType(CellType.NUMERIC); secondCell.setCellValue(Utils.format(cashFlowBean.getSaleIncomeCash())); + Cell thirdCell = row.createCell(2); + thirdCell.setCellStyle(style2); + thirdCell.setCellType(CellType.STRING); + thirdCell.setCellValue("从资金计划表查(销售收款)"); } private void createTaxReturnRow(CashFlowBean cashFlowBean, XSSFSheet sheet, int index) { @@ -659,6 +759,10 @@ public class ExportExcelUtils { secondCell.setCellStyle(style2); secondCell.setCellType(CellType.STRING); secondCell.setCellValue("/"); + Cell thirdCell = row.createCell(2); + thirdCell.setCellStyle(style2); + thirdCell.setCellType(CellType.STRING); + thirdCell.setCellValue("/"); } private void createEarnestMoneyIncomeRow(CashFlowBean cashFlowBean, XSSFSheet sheet, int index) { @@ -671,6 +775,10 @@ public class ExportExcelUtils { secondCell.setCellStyle(style2); secondCell.setCellType(CellType.NUMERIC); secondCell.setCellValue(Utils.format(cashFlowBean.getEarnestMoneyIncome())); + Cell thirdCell = row.createCell(2); + thirdCell.setCellStyle(style2); + thirdCell.setCellType(CellType.STRING); + thirdCell.setCellValue("从资金计划表查(保证金收款)"); } private void createPurchaseCostRow(CashFlowBean cashFlowBean, XSSFSheet sheet, int index) { @@ -683,6 +791,10 @@ public class ExportExcelUtils { secondCell.setCellStyle(style2); secondCell.setCellType(CellType.NUMERIC); secondCell.setCellValue(Utils.format(cashFlowBean.getPurchaseCost())); + Cell thirdCell = row.createCell(2); + thirdCell.setCellStyle(style2); + thirdCell.setCellType(CellType.STRING); + thirdCell.setCellValue("从资金计划表查(设备支出+工程支出)"); } private void createTaxCostRow(CashFlowBean cashFlowBean, XSSFSheet sheet, int index) { @@ -695,6 +807,10 @@ public class ExportExcelUtils { secondCell.setCellStyle(style2); secondCell.setCellType(CellType.STRING); secondCell.setCellValue("/"); + Cell thirdCell = row.createCell(2); + thirdCell.setCellStyle(style2); + thirdCell.setCellType(CellType.STRING); + thirdCell.setCellValue("/"); } private void createEarnestMoneyCostRow(CashFlowBean cashFlowBean, XSSFSheet sheet, int index) { @@ -707,6 +823,10 @@ public class ExportExcelUtils { secondCell.setCellStyle(style2); secondCell.setCellType(CellType.NUMERIC); secondCell.setCellValue(Utils.format(cashFlowBean.getEarnestMoneyCost())); + Cell thirdCell = row.createCell(2); + thirdCell.setCellStyle(style2); + thirdCell.setCellType(CellType.STRING); + thirdCell.setCellValue("从资金计划表查(经营性开支+保证金支出+资金利息)"); } private void createNetCashFlowRow(CashFlowBean cashFlowBean, XSSFSheet sheet, int index) { @@ -719,6 +839,10 @@ public class ExportExcelUtils { secondCell.setCellStyle(style2); secondCell.setCellType(CellType.NUMERIC); secondCell.setCellValue(Utils.format(cashFlowBean.getNetCashFlow())); + Cell thirdCell = row.createCell(2); + thirdCell.setCellStyle(style2); + thirdCell.setCellType(CellType.STRING); + thirdCell.setCellValue("销售商品、提供劳务收到的现金+收到其他与经营活动有关的现金-购买商品、接受劳务支付的现金-支付其他与经营活动有关的现金"); } private void createCashInflowFromInvestingActivitiesRow(CashFlowBean cashFlowBean, XSSFSheet sheet, int index) { @@ -731,6 +855,10 @@ public class ExportExcelUtils { secondCell.setCellStyle(style2); secondCell.setCellType(CellType.STRING); secondCell.setCellValue("/"); + Cell thirdCell = row.createCell(2); + thirdCell.setCellStyle(style2); + thirdCell.setCellType(CellType.STRING); + thirdCell.setCellValue("/"); } private void createCashOutflowFromInvestingActivitiesRow(CashFlowBean cashFlowBean, XSSFSheet sheet, int index) { @@ -743,6 +871,10 @@ public class ExportExcelUtils { secondCell.setCellStyle(style2); secondCell.setCellType(CellType.STRING); secondCell.setCellValue("/"); + Cell thirdCell = row.createCell(2); + thirdCell.setCellStyle(style2); + thirdCell.setCellType(CellType.STRING); + thirdCell.setCellValue("/"); } private void createNetCashFromInvestingActivitiesRow(CashFlowBean cashFlowBean, XSSFSheet sheet, int index) { @@ -755,6 +887,10 @@ public class ExportExcelUtils { secondCell.setCellStyle(style2); secondCell.setCellType(CellType.STRING); secondCell.setCellValue("/"); + Cell thirdCell = row.createCell(2); + thirdCell.setCellStyle(style2); + thirdCell.setCellType(CellType.STRING); + thirdCell.setCellValue("/"); } private void createFinancingCapitalInflowRow(CashFlowBean cashFlowBean, XSSFSheet sheet, int index) { @@ -767,6 +903,10 @@ public class ExportExcelUtils { secondCell.setCellStyle(style2); secondCell.setCellType(CellType.NUMERIC); secondCell.setCellValue(Utils.format(cashFlowBean.getFinancingCapitalInflow())); + Cell thirdCell = row.createCell(2); + thirdCell.setCellStyle(style2); + thirdCell.setCellType(CellType.STRING); + thirdCell.setCellValue("从资金计划表查(垫资计划)"); } private void createFinancingCapitalOutflowRow(CashFlowBean cashFlowBean, XSSFSheet sheet, int index) { @@ -779,6 +919,10 @@ public class ExportExcelUtils { secondCell.setCellStyle(style2); secondCell.setCellType(CellType.NUMERIC); secondCell.setCellValue(Utils.format(cashFlowBean.getFinancingCapitalOutflow())); + Cell thirdCell = row.createCell(2); + thirdCell.setCellStyle(style2); + thirdCell.setCellType(CellType.STRING); + thirdCell.setCellValue("从资金计划表查(还款计划)"); } private void createFinancingCapitalCashflowRow(CashFlowBean cashFlowBean, XSSFSheet sheet, int index) { @@ -791,6 +935,10 @@ public class ExportExcelUtils { secondCell.setCellStyle(style2); secondCell.setCellType(CellType.NUMERIC); secondCell.setCellValue(Utils.format(cashFlowBean.getFinancingCapitalCashflow())); + Cell thirdCell = row.createCell(2); + thirdCell.setCellStyle(style2); + thirdCell.setCellType(CellType.STRING); + thirdCell.setCellValue("融资资金流入-还款资金流出"); } private void createNetIncreaseMonetaryFundsRow(CashFlowBean cashFlowBean, XSSFSheet sheet, int index) { @@ -803,6 +951,10 @@ public class ExportExcelUtils { secondCell.setCellStyle(style2); secondCell.setCellType(CellType.NUMERIC); secondCell.setCellValue(Utils.format(cashFlowBean.getNetIncreaseMonetaryFunds())); + Cell thirdCell = row.createCell(2); + thirdCell.setCellStyle(style2); + thirdCell.setCellType(CellType.STRING); + thirdCell.setCellValue("经营活动产生的现金流量净额+投资活动产生的现金流量净额+筹资活动产生的现金流量净额"); } public void exportSettleExcel(BudgetBean budgetBean, CashFlowBean cashFlowBean, FormerBean formerBean, SettleBean settleBean, FormerBean currentBean, int rowIndex, String sheetName, ServletOutputStream outputStream, String otherName) { @@ -897,6 +1049,9 @@ public class ExportExcelUtils { } else if (i == 8) { totalCell.setCellType(CellType.NUMERIC); totalCell.setCellValue(Utils.format(budgetBean.getIncomeTotalTaxExclude())); + } else if (i == 9) { + totalCell.setCellType(CellType.NUMERIC); + totalCell.setCellValue(Utils.format(budgetBean.getIncomeTotalTax())); } else { totalCell.setCellType(CellType.STRING); totalCell.setCellValue(""); @@ -983,6 +1138,9 @@ public class ExportExcelUtils { } else if (i == 9) { totalCell.setCellType(CellType.NUMERIC); totalCell.setCellValue(Utils.format(budgetBean.getCostTotalTaxExclude())); + } else if (i == 10) { + totalCell.setCellType(CellType.NUMERIC); + totalCell.setCellValue(Utils.format(budgetBean.getCostTotalTax())); } else { totalCell.setCellType(CellType.STRING); totalCell.setCellValue(""); @@ -1049,7 +1207,7 @@ public class ExportExcelUtils { } } } - Row total = sheet.createRow(index); + Row total = sheet.createRow(index++); for (int i = 0; i < headers.length; i++) { Cell totalCell = total.createCell(i); totalCell.setCellStyle(style2); @@ -1067,6 +1225,11 @@ public class ExportExcelUtils { totalCell.setCellValue(""); } } + Row remark = sheet.createRow(index); + Cell remarkCell = remark.createCell(0); + remarkCell.setCellStyle(style2); + remarkCell.setCellType(CellType.STRING); + remarkCell.setCellValue("备注:本表展示不含税金额"); } public void exportPlanDetailExcel(String[] headers, String[] rows, Project project, BudgetBean budgetBean, List projectBudgetPlanDetails, ProjectBudgetPlanDetail projectBudgetPlanDetailTotal, String pattern, int rowIndex, String sheetName, ServletOutputStream outputStream) { diff --git a/src/main/resources/templates/admin/project_approve.ftl b/src/main/resources/templates/admin/project_approve.ftl index e1315d6..9a446cd 100644 --- a/src/main/resources/templates/admin/project_approve.ftl +++ b/src/main/resources/templates/admin/project_approve.ftl @@ -362,29 +362,6 @@
- <#--
--> - <#--
*垫资利息
--> - <#--
--> - <#-- ${Utils.format(project.advanceInterestAmount)}元--> - <#--
--> - <#--
--> - <#--
--> - <#--
--> - <#--
*垫资峰值
--> - <#--
--> - <#-- ${Utils.format(project.advancePeakAmount)}元--> - <#--
--> - <#--
--> - <#--
--> - - -
-
-
- -
-
-
diff --git a/src/main/resources/templates/admin/project_budget_edit.ftl b/src/main/resources/templates/admin/project_budget_edit.ftl index 98ab20d..a05fcf6 100644 --- a/src/main/resources/templates/admin/project_budget_edit.ftl +++ b/src/main/resources/templates/admin/project_budget_edit.ftl @@ -44,7 +44,7 @@
@@ -163,49 +163,20 @@
-
*项目把握度
+
*垫资利息
- +
-
-
*行业场景应用
+
*垫资峰值
- -
-
-
- -
-
*客户名称
-
- -
-
-
- -
-
*终端客户名称
-
- +
@@ -214,7 +185,7 @@
*合同金额
@@ -240,31 +211,32 @@
-
-
*华智产品金额
-
- -
-
-
-
*汇智产品金额
+
+
*华智产品金额
+
+ +
+
+
+ +
*华三产品金额
@@ -274,12 +246,79 @@
*其他产品金额
+
+
*项目把握度
+
+ +
+
+
+ +
+
*行业场景应用
+
+ +
+
+
+ +
+
*项目解决方案
+
+ +
+
+
+ +
+
*客户名称
+
+ +
+
+
+ +
+
*终端客户名称
+
+ +
+
+
+ +
*价值及风险
@@ -295,147 +334,115 @@
-<#--
--> -<#--
--> +
+
-<#--
--> -<#--
*项目负责人
--> -<#--
--> -<#-- -<#-- name="principal" placeholder="请输入项目负责人" maxlength="20"--> -<#-- value="${project.principal!}" required />--> -<#--
--> -<#--
--> -<#--
--> +
+
项目负责人
+
+ +
+
+
-<#--
--> -<#--
*预计合同签订时间
--> -<#--
--> -<#--
--> -<#-- --> -<#-- -<#-- name="contractTime" autocomplete="off"--> -<#-- value="${(project.contractTime?string("yyyy-MM-dd"))!}" placeholder="预计合同签订时间"--> -<#-- data-am-datepicker required>--> -<#--
--> -<#--
--> -<#--
--> -<#--
--> -<#--
--> -<#--
*项目计划招标时间
--> -<#--
--> -<#--
--> -<#-- --> -<#-- -<#-- name="bidsTime" autocomplete="off"--> -<#-- value="${(project.bidsTime?string("yyyy-MM-dd"))!}" placeholder="项目计划招标时间"--> -<#-- data-am-datepicker required>--> -<#--
--> -<#--
--> -<#--
--> -<#--
--> +
+
预计合同签订时间
+
+
+ + +
+
+
+
+
+
项目计划招标时间
+
+
+ + +
+
+
+
-<#--
--> -<#--
*是否二次合作
--> -<#--
--> -<#-- --> -<#--
--> -<#--
--> -<#--
--> +
+
是否二次合作
+
+ +
+
+
-<#--
--> -<#--
*签单方式
--> -<#--
--> -<#-- --> -<#--
--> -<#--
--> -<#--
--> +
+
签单方式
+
+ +
+
+
-<#--
--> -<#--
*项目解决方案
--> -<#--
--> -<#-- --> -<#--
--> -<#--
--> -<#--
--> -<#--
--> -<#--
*垫资利息
--> -<#--
--> -<#-- -<#-- name="advanceInterestAmount" placeholder="单位(元)" maxlength="16"--> -<#-- value="${Utils.format(project.advanceInterestAmount)}" required />--> -<#--
--> -<#--
--> -<#--
--> -<#--
--> -<#--
*垫资峰值
--> -<#--
--> -<#-- -<#-- name="advancePeakAmount" placeholder="单位(元)" maxlength="16"--> -<#-- value="${Utils.format(project.advancePeakAmount)}" required />--> -<#--
--> -<#--
--> -<#--
--> +
+
主合同收款条款
+
+ +
+
+
-<#--
--> -<#--
*主合同收款条款
--> -<#--
--> -<#-- --> -<#--
--> -<#--
--> -<#--
--> +
+
主合同具体解决方案
+
+ +
+
+
-<#--
--> -<#--
*主合同具体解决方案
--> -<#--
--> -<#-- --> -<#--
--> -<#--
--> -<#--
--> - -<#--
--> -<#--
*计收计划
--> -<#--
--> -<#-- --> -<#--
--> -<#--
--> -<#--
--> -<#--
--> -<#--
--> +
+
计收计划
+
+ +
+
+
+
+
<#-- 收入--> <#-- --> <#-- --> diff --git a/src/main/resources/templates/admin/project_estimate_add.ftl b/src/main/resources/templates/admin/project_estimate_add.ftl index 9192c5d..519f412 100644 --- a/src/main/resources/templates/admin/project_estimate_add.ftl +++ b/src/main/resources/templates/admin/project_estimate_add.ftl @@ -123,43 +123,20 @@
-
*项目把握度
+
*垫资利息
- +
-
-
*行业场景应用
+
*垫资峰值
- -
-
-
- -
-
*客户名称
-
- -
-
-
- -
-
*终端客户名称
-
- +
@@ -195,19 +172,19 @@
-
*华智产品金额
+
*汇智产品金额
- +
-
*汇智产品金额
+
*华智产品金额
- +
@@ -230,6 +207,60 @@
+
+
*项目把握度
+
+ +
+
+
+ +
+
*行业场景应用
+
+ +
+
+
+ +
+
*项目解决方案
+
+ +
+
+
+ +
+
*客户名称
+
+ +
+
+
+ +
+
*终端客户名称
+
+ +
+
+
+
*价值及风险
@@ -288,6 +319,7 @@
是否二次合作
@@ -299,43 +331,13 @@
签单方式
-
-
项目解决方案
-
- -
-
-
- -
-
垫资利息
-
- -
-
-
-
-
垫资峰值
-
- -
-
-
-
主合同收款条款
diff --git a/src/main/resources/templates/admin/project_estimate_edit.ftl b/src/main/resources/templates/admin/project_estimate_edit.ftl index f14f552..9258cdd 100644 --- a/src/main/resources/templates/admin/project_estimate_edit.ftl +++ b/src/main/resources/templates/admin/project_estimate_edit.ftl @@ -30,7 +30,7 @@
*部门名称
- ${project.deptName} + ${project.deptName!}
@@ -61,7 +61,7 @@
@@ -74,7 +74,7 @@
@@ -87,7 +87,7 @@
@@ -133,43 +133,20 @@
-
*项目把握度
+
*垫资利息
- +
-
-
*行业场景应用
+
*垫资峰值
- -
-
-
- -
-
*客户名称
-
- -
-
-
- -
-
*终端客户名称
-
- +
@@ -204,6 +181,16 @@
+
+
*汇智产品金额
+
+ +
+
+
+
*华智产品金额
@@ -214,15 +201,6 @@
-
-
*汇智产品金额
-
- -
-
-
*华三产品金额
@@ -244,6 +222,73 @@
+
+
*项目把握度
+
+ +
+
+
+ +
+
*行业场景应用
+
+ +
+
+
+ +
+
*项目解决方案
+
+ +
+
+
+ +
+
*客户名称
+
+ +
+
+
+ +
+
*终端客户名称
+
+ +
+
+
+ +
*价值及风险
@@ -303,8 +348,15 @@
是否二次合作
@@ -314,42 +366,18 @@
签单方式
-
-
项目解决方案
-
- -
-
-
- -
-
垫资利息
-
- -
-
-
-
-
垫资峰值
-
- -
-
-
主合同收款条款
@@ -376,10 +404,10 @@
计收计划
- + >${project.CalculationCollection!}
diff --git a/src/main/resources/templates/admin/project_list.ftl b/src/main/resources/templates/admin/project_list.ftl index 46c3ae8..384b90d 100644 --- a/src/main/resources/templates/admin/project_list.ftl +++ b/src/main/resources/templates/admin/project_list.ftl @@ -24,22 +24,22 @@
- - + - - + - - + - - + - - - - - - - - - - - - + - - + - - + - - + + - - - - + - - + - - + + + + - - + + + + + + + + + + + + - - + - - + - + + + + - + - + + - - + + @@ -329,21 +339,22 @@ - + - + + - +
项目编号 + 项目编号
项目名称 + 项目名称
项目状态 + 项目状态
项目创建者 + 项目创建者
@@ -60,52 +60,8 @@
是否二次合作 -
- -
-
签单方式 -
- -
-
项目解决方案 -
- -
-
审核状态 -
- -
-
部门名称 + 部门名称
项目类型 + 项目类型
垫资模式 + 垫资模式
项目把握度 + 项目把握度
行业场景应用 -
- -
-
客户名称 + 客户名称
终端客户名称 + 终端客户名称
项目负责人 + 项目负责人
审核状态 +
+ +
+
最后更新时间 + 是否二次合作 +
+ +
+
签单方式 +
+ +
+
行业场景 +
+ +
+
项目解决方案 +
+ +
+
最后更新时间
@@ -201,8 +204,8 @@
项目周期 + 项目周期
@@ -219,8 +222,8 @@
预计合同签订时间 + 预计合同签订时间
@@ -237,7 +240,13 @@
+ + +
<@shiro.hasPermission name="PROJECT_QUERY">
项目毛利 项目毛利率项目状态项目把握度 汇智产品金额 华智产品金额 华三产品金额 其他产品金额项目把握度项目状态 行业场景应用解决方案 客户名称 终端客户名称项目负责人 预计合同签订时间 项目计划招标时间 是否二次合作 签单方式合作对象战略合作对象项目负责人 审核状态 当前审核人 项目创建者${Utils.format(list.contractAmount, "0.00")} ${Utils.format(list.grossProfit, "0.00")} ${Utils.format(list.grossProfitMargin, "0.00")}${list.statusDesc!}${list.certaintyStr!} ${Utils.format(list.huizhiProductAmount, "0.00")} ${Utils.format(list.huazhiProductAmount, "0.00")} ${Utils.format(list.huasanProductAmount, "0.00")} ${Utils.format(list.ziguangOtherAmount, "0.00")}${list.certaintyStr!}${list.statusDesc!} ${list.industryScenario!}${list.resolvePlanStr!} ${list.customer!} ${list.terminalCustomer!}${list.principal!} ${(list.contractTime?string("yyyy-MM-dd HH:mm:ss"))!} ${(list.bidsTime?string("yyyy-MM-dd HH:mm:ss"))!} ${list.isSecondStr!} ${list.signTypeStr!} ${list.collaborator!}${list.principal!} ${list.approveStatusDesc!} ${list.approveName!} ${list.creatorName!}