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 2d4cdfa..323ada4 100644 --- a/src/main/java/cn/palmte/work/controller/backend/ProjectController.java +++ b/src/main/java/cn/palmte/work/controller/backend/ProjectController.java @@ -196,7 +196,7 @@ public class ProjectController extends BaseController { } 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); + exportExcelUtils.exportIncomeDetailExcel(headers2, columns2, project, budgetBean, budgetIncomeDetail, incomeTotalAmount, "yyyy-MM-dd", 0, "收款明细表", outputStream); //收入计划 List budgetIncomePlanDetail = projectBudgetService.getBudgetIncomePlanDetail(project); BigDecimal incomePlanTotalReceiveAmount = projectBudgetService.getBudgetIncomePlanReceiveAmount(project); @@ -1047,7 +1047,7 @@ public class ProjectController extends BaseController { public void incomeTemplate(HttpServletResponse response) throws Exception{ String[] headers = new String[]{"类别", "名称", "单位", "数量", "单价", "税率(%)"}; - downloadHeader(response , Utils.generateExcelName("收入明细表批量导入模板")); + downloadHeader(response , Utils.generateExcelName("收款明细表批量导入模板")); ExportUtils exportUtils = new ExportUtils(headers); exportUtils.write(response.getOutputStream()); } @@ -1155,7 +1155,7 @@ public class ProjectController extends BaseController { @RequestMapping("/incomeExport") public void incomeExport(HttpServletResponse response, @RequestParam int id) throws Exception{ Project project = projectService.findById(id); - response.setHeader("Content-Disposition", "attachment;filename=".concat(new String((Utils.generateExcelName(project.getName() + "-收入明细表")).getBytes(), StandardCharsets.ISO_8859_1))); + response.setHeader("Content-Disposition", "attachment;filename=".concat(new String((Utils.generateExcelName(project.getName() + "-收款明细表")).getBytes(), StandardCharsets.ISO_8859_1))); response.setHeader("Connection", "close"); response.setHeader("Content-Type", "application/vnd.ms-excel"); ServletOutputStream outputStream = response.getOutputStream(); @@ -1166,7 +1166,7 @@ public class ProjectController extends BaseController { BigDecimal incomeTotalAmount = projectBudgetService.getBudgetIncomeAmount(project); 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); + exportExcelUtils.exportIncomeDetailExcel(headers2, columns2, project, budgetBean, budgetIncomeDetail, incomeTotalAmount, "yyyy-MM-dd", 0, "收款明细表", outputStream); exportExcelUtils.end(outputStream); } diff --git a/src/main/java/cn/palmte/work/model/ProjectBudgetIncomeDetail.java b/src/main/java/cn/palmte/work/model/ProjectBudgetIncomeDetail.java index 6882f88..131e1b1 100644 --- a/src/main/java/cn/palmte/work/model/ProjectBudgetIncomeDetail.java +++ b/src/main/java/cn/palmte/work/model/ProjectBudgetIncomeDetail.java @@ -3,7 +3,7 @@ package cn.palmte.work.model; import javax.persistence.*; /** - * 项目预算收入明细表 + * 项目预算收款明细表 */ @Entity @Table(name = "project_budget_income_detail") diff --git a/src/main/java/cn/palmte/work/model/ProjectBudgetIncomePlanDetail.java b/src/main/java/cn/palmte/work/model/ProjectBudgetIncomePlanDetail.java index 8a23619..a373f45 100644 --- a/src/main/java/cn/palmte/work/model/ProjectBudgetIncomePlanDetail.java +++ b/src/main/java/cn/palmte/work/model/ProjectBudgetIncomePlanDetail.java @@ -4,7 +4,7 @@ import javax.persistence.Entity; import javax.persistence.Table; /** - * 项目预算收入明细表 + * 项目预算收款明细表 */ @Entity @Table(name = "project_budget_income_plan_detail") diff --git a/src/main/java/cn/palmte/work/model/ProjectBudgetIncomePlanDetailTemp.java b/src/main/java/cn/palmte/work/model/ProjectBudgetIncomePlanDetailTemp.java index 4b47ae9..cbbfbac 100644 --- a/src/main/java/cn/palmte/work/model/ProjectBudgetIncomePlanDetailTemp.java +++ b/src/main/java/cn/palmte/work/model/ProjectBudgetIncomePlanDetailTemp.java @@ -4,7 +4,7 @@ import javax.persistence.Entity; import javax.persistence.Table; /** - * 项目预算收入明细表 + * 项目预算收款明细表 */ @Entity @Table(name = "project_budget_income_plan_detail_temp") diff --git a/src/main/java/cn/palmte/work/service/ProjectService.java b/src/main/java/cn/palmte/work/service/ProjectService.java index 6e31d94..e4f7a38 100644 --- a/src/main/java/cn/palmte/work/service/ProjectService.java +++ b/src/main/java/cn/palmte/work/service/ProjectService.java @@ -101,7 +101,9 @@ public class ProjectService { if(StrUtil.isNotEmpty(searchInfo.get("underwrittenMode")) && !"-1".equals(searchInfo.get("underwrittenMode"))){ queryHelper.addCondition("p.underwritten_mode=?", Integer.parseInt(searchInfo.get("underwrittenMode"))); } - + if(StrUtil.isNotEmpty(searchInfo.get("certainty")) && !"-1".equals(searchInfo.get("certainty"))){ + queryHelper.addCondition("p.certainty=?", Integer.parseInt(searchInfo.get("certainty"))); + } if(StrUtil.isNotEmpty(searchInfo.get("estimateStatus")) && !"-1".equals(searchInfo.get("estimateStatus"))){ queryHelper.addCondition("p.approve_status_estimate>=1 and p.approve_status_estimate<=2"); } diff --git a/src/main/java/cn/palmte/work/service/SpaceService.java b/src/main/java/cn/palmte/work/service/SpaceService.java index b59dd06..798fd82 100644 --- a/src/main/java/cn/palmte/work/service/SpaceService.java +++ b/src/main/java/cn/palmte/work/service/SpaceService.java @@ -15,6 +15,7 @@ import top.jfunc.common.db.QueryHelper; import top.jfunc.common.db.bean.Page; import top.jfunc.common.db.bean.Record; import top.jfunc.common.db.utils.Pagination; +import top.jfunc.common.utils.CollectionUtil; import top.jfunc.common.utils.StrUtil; import java.util.List; @@ -34,12 +35,33 @@ public class SpaceService { public Page list(Map searchInfo, int pageNumber, int pageSize){ QueryHelper queryHelper = getQueryHelper(searchInfo); - return pagination.paginate(queryHelper.getSql(), Project.class,pageNumber,pageSize); + + Page page = pagination.paginate(queryHelper.getSql(), Project.class, pageNumber, pageSize); + List list = page.getList(); + if(CollectionUtil.isNotEmpty(list)) { + //查询项目当前审批任务节点 + for (Project project : list) { + if (project.getApproveStatusBudget() > -1 && project.getIsBudget() == 1) { + project.setContractRound(project.getContractRound2()); + project.setHuizhiRound(project.getHuizhiRound2()); + project.setHuazhiRound(project.getHuazhiRound2()); + project.setHuasanRound(project.getHuasanRound2()); + project.setZiguangRound(project.getZiguangRound2()); + project.setGrossProfitRound(project.getGrossProfitRound2()); + project.setGrossProfitMarginRound(project.getGrossProfitMarginRound2()); + project.setAdvancePeakAmountRound(project.getAdvancePeakAmountRound2()); + project.setAdvanceInterestAmountRound(project.getAdvanceInterestAmountRound2()); + } + } + } + return page; } private QueryHelper getQueryHelper(Map searchInfo) { 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,2) as grossProfitRound, '' as remark","project","p"); + ", 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","project","p"); queryHelper.leftJoin("project_extend pe", "p.id = pe.project_id and pe.is_budget = 1"); queryHelper.addCondition(StrUtil.isNotEmpty(searchInfo.get("name")),"p.name LIKE ?", "%"+searchInfo.get("name")+"%"); @@ -123,7 +145,7 @@ public class SpaceService { String sql = "SELECT count(id) as sum, certainty, certainty_str as name FROM project WHERE approve_status_estimate >= 1 and approve_status_estimate <= 2 and dept_name = '销售管理部' GROUP BY certainty"; List pie = pagination.find(sql); - String sql2 = "SELECT sum(IFNULL(contract_amount,0)) as sum, avg(IFNULL(gross_profit_margin, 0)) as average, certainty, certainty_str as name FROM project WHERE approve_status_estimate >= 1 and approve_status_estimate <= 2 and dept_name = '销售管理部' GROUP BY certainty"; + String sql2 = "SELECT sum(IFNULL(IF(pe.is_budget = 1, pe.contract_amount, p.contract_amount),0)) AS sum, avg(IFNULL(IF(pe.is_budget = 1, pe.gross_profit_margin, p.gross_profit_margin),0)) AS average, p.certainty, p.certainty_str as name, pe.is_budget FROM project p LEFT JOIN project_extend pe ON p.id = pe.project_id WHERE p.approve_status_estimate >= 1 AND p.approve_status_estimate <= 2 AND p.dept_name = '销售管理部' GROUP BY p.certainty"; List bar = pagination.find(sql2); return combineData(pie, bar); } diff --git a/src/main/resources/sql/fourcal-purge.sql b/src/main/resources/sql/fourcal-purge.sql index f9fe31e..a45cdf3 100644 --- a/src/main/resources/sql/fourcal-purge.sql +++ b/src/main/resources/sql/fourcal-purge.sql @@ -5753,7 +5753,7 @@ CREATE TABLE `project_budget_income_detail` ( `price` decimal(16,2) NOT NULL COMMENT '单价', `tax_rate` decimal(16,2) NOT NULL COMMENT '税率', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='收入明细表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='收款明细表'; -- ---------------------------- -- Records of project_budget_income_detail @@ -5773,7 +5773,7 @@ CREATE TABLE `project_budget_income_detail_temp` ( `price` decimal(16,2) NOT NULL COMMENT '单价', `tax_rate` decimal(16,2) NOT NULL COMMENT '税率', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='收入明细表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='收款明细表'; -- ---------------------------- -- Records of project_budget_income_detail_temp diff --git a/src/main/resources/sql/fourcal.sql b/src/main/resources/sql/fourcal.sql index bb9e5bc..a47de97 100644 --- a/src/main/resources/sql/fourcal.sql +++ b/src/main/resources/sql/fourcal.sql @@ -8268,7 +8268,7 @@ CREATE TABLE `project_budget_income_detail` ( `price` decimal(16,2) NOT NULL COMMENT '单价', `tax_rate` decimal(16,2) NOT NULL COMMENT '税率', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=711 DEFAULT CHARSET=utf8mb4 COMMENT='收入明细表'; +) ENGINE=InnoDB AUTO_INCREMENT=711 DEFAULT CHARSET=utf8mb4 COMMENT='收款明细表'; -- ---------------------------- -- Records of project_budget_income_detail @@ -8393,7 +8393,7 @@ CREATE TABLE `project_budget_income_detail_temp` ( `price` decimal(16,2) NOT NULL COMMENT '单价', `tax_rate` decimal(16,2) NOT NULL COMMENT '税率', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=701 DEFAULT CHARSET=utf8mb4 COMMENT='收入明细表'; +) ENGINE=InnoDB AUTO_INCREMENT=701 DEFAULT CHARSET=utf8mb4 COMMENT='收款明细表'; -- ---------------------------- -- Records of project_budget_income_detail_temp diff --git a/src/main/resources/static/assets/js/project_budget.js b/src/main/resources/static/assets/js/project_budget.js index de33b65..b4a044c 100644 --- a/src/main/resources/static/assets/js/project_budget.js +++ b/src/main/resources/static/assets/js/project_budget.js @@ -92,12 +92,12 @@ $(function () { var dataIncome = collectData("am-modal-prompt-input-income"); if (dataIncome.length <= 0) { - window.confirm('请填写收入明细表'); + window.confirm('请填写收款明细表'); $("#saveDraft").attr('disabled', false); return; } - var dataIncomeCheck = convertDetailVerifyCheck(dataIncome, INCOME_DETAIL2, "收入明细表"); + var dataIncomeCheck = convertDetailVerifyCheck(dataIncome, INCOME_DETAIL2, "收款明细表"); if (dataIncomeCheck == null) { $("#saveDraft").attr('disabled', false); return; @@ -176,13 +176,13 @@ $(function () { } updateBudgetPlanDetailDataUnsubmit(); - var message = verifyProjectContributionProfitRate(); - if (message) { - $("#saveDraft").attr('disabled', false); - layuiAlert(message); - return; - } - console.log(message); + // var message = verifyProjectContributionProfitRate(); + // if (message) { + // $("#saveDraft").attr('disabled', false); + // layuiAlert(message); + // return; + // } + // console.log(message); var startTime = $("#startDate").val(); var endTime = $("#endDate").val(); @@ -205,12 +205,12 @@ $(function () { var dataIncome = collectData("am-modal-prompt-input-income"); if (dataIncome.length <= 5) { - window.confirm('请填写收入明细表'); + window.confirm('请填写收款明细表'); $("#saveApprove").attr('disabled', false); return; } - var dataIncomeCheck = convertDetailVerifyCheck(dataIncome, INCOME_DETAIL, "收入明细表"); + var dataIncomeCheck = convertDetailVerifyCheck(dataIncome, INCOME_DETAIL, "收款明细表"); if (dataIncomeCheck == null) { $("#saveApprove").attr('disabled', false); return; @@ -291,12 +291,12 @@ $(function () { } updateBudgetPlanDetailDataUnsubmit(); - var message = verifyProjectContributionProfitRate(); - if (message) { - $("#saveApprove").attr('disabled', false); - layuiAlert(message); - return; - } + // var message = verifyProjectContributionProfitRate(); + // if (message) { + // $("#saveApprove").attr('disabled', false); + // layuiAlert(message); + // return; + // } var startTime = $("#startDate").val(); var endTime = $("#endDate").val(); diff --git a/src/main/resources/static/assets/js/project_budget_cost_project_manage.js b/src/main/resources/static/assets/js/project_budget_cost_project_manage.js index b22df1c..82f3874 100644 --- a/src/main/resources/static/assets/js/project_budget_cost_project_manage.js +++ b/src/main/resources/static/assets/js/project_budget_cost_project_manage.js @@ -230,7 +230,7 @@ function bindTypeSelectChangeManager() { categorySelect.attr("style", "display:none"); categoryInput.attr("type", "text"); } else if(SELECT_TYPE_CATEGORY_MAP_DATA_MANAGER[type]){ - categorySelect.attr("style", "width: 180px;float: left;"); + categorySelect.attr("style", "float: left;"); categoryInput.val(""); categoryInput.attr("type", "hidden"); categorySelect.append(""); diff --git a/src/main/resources/static/assets/js/project_budget_income.js b/src/main/resources/static/assets/js/project_budget_income.js index b535633..0cf7863 100644 --- a/src/main/resources/static/assets/js/project_budget_income.js +++ b/src/main/resources/static/assets/js/project_budget_income.js @@ -71,7 +71,7 @@ $(function () { }); }); -//保存收入明细表 +//保存收款明细表 $(function () { $("#incomeTableSave").click(function () { var data = collectData("am-modal-prompt-input-income"); diff --git a/src/main/resources/templates/admin/project_approve.ftl b/src/main/resources/templates/admin/project_approve.ftl index ce3a5f8..cf7af25 100644 --- a/src/main/resources/templates/admin/project_approve.ftl +++ b/src/main/resources/templates/admin/project_approve.ftl @@ -399,7 +399,7 @@
- <#--收入明细表--> + <#--收款明细表-->
@@ -517,7 +517,7 @@
- <#--收入明细表--> + <#--收款明细表-->
@@ -1024,7 +1024,7 @@
- <#--收入明细表 + <#--收款明细表 采购成本明细表 项目管理成本表 资金计划表--> @@ -2129,11 +2129,11 @@
- <#--收入明细表弹窗--> + <#--收款明细表弹窗-->
-
销售收入明细表——${project.name}
+
销售收款明细表——${project.name}
diff --git a/src/main/resources/templates/admin/project_budget_edit.ftl b/src/main/resources/templates/admin/project_budget_edit.ftl index ee90975..a44c2ae 100644 --- a/src/main/resources/templates/admin/project_budget_edit.ftl +++ b/src/main/resources/templates/admin/project_budget_edit.ftl @@ -71,6 +71,17 @@ display: flex; /*position: relative;*/ } + input { + /*width: 600px;*/ + width: 100%; + border:0 none; + outline:none; + } + textarea { + overflow-x: hidden; + overflow-y:hidden; + } +
收入 - <#-- 收入明细表--> + <#-- 收款明细表-->
diff --git a/src/main/resources/templates/admin/project_list.ftl b/src/main/resources/templates/admin/project_list.ftl index 46a8e78..f2cb617 100644 --- a/src/main/resources/templates/admin/project_list.ftl +++ b/src/main/resources/templates/admin/project_list.ftl @@ -222,10 +222,10 @@
diff --git a/src/main/resources/templates/admin/project_list_approve.ftl b/src/main/resources/templates/admin/project_list_approve.ftl index 78a6462..e919f2a 100644 --- a/src/main/resources/templates/admin/project_list_approve.ftl +++ b/src/main/resources/templates/admin/project_list_approve.ftl @@ -220,9 +220,9 @@ @@ -378,6 +378,68 @@ + +
+ +
+
+
汇智产品金额
+
+
+ +
+
+
+ +
+
+
+
+
华智产品金额
+
+
+ +
+
+
+ +
+
+
+
+
华三产品金额
+
+
+ +
+
+
+ +
+
+
+
+
其他产品金额
+
+
+ +
+
+
+ +
+
+
+
+
- - - - + + + + +<#-- --> +<#-- --> +<#-- --> +<#-- --> - - + + +<#-- --> +<#-- -->
${list.name!} ${list.typeDesc!} ${list.underwrittenModeStr!}${Utils.format(list.huazhiProductAmount, "0.00")}${Utils.format(list.huasanProductAmount, "0.00")}${Utils.format(list.huizhiProductAmount, "0.00")}${Utils.format(list.ziguangOtherAmount, "0.00")}${list.huazhiRound!}${list.huasanRound!}${list.huizhiRound!}${list.ziguangRound!}${Utils.format(list.huazhiProductAmount, "0.00")}${Utils.format(list.huasanProductAmount, "0.00")}${Utils.format(list.huizhiProductAmount, "0.00")}${Utils.format(list.ziguangOtherAmount, "0.00")}${list.certaintyStr!} ${(list.bidsTime?string("yyyy-MM-dd"))!} ${(list.contractTime?string("yyyy-MM-dd"))!} ${list.calculationCollection!}${Utils.format(list.grossProfit, "0.00")}${Utils.format(list.contractAmount, "0.00")}${list.grossProfitRound!}${list.contractRound!}${Utils.format(list.grossProfit, "0.00")}${Utils.format(list.contractAmount, "0.00")}${list.resolvePlanStr!} ${list.mainContractResolvePlan!} ${list.isSecondStr!}