From 1d26048bc1e526146e847aa0a3dec3f267d77df1 Mon Sep 17 00:00:00 2001 From: lzm <2316711944@qq.com> Date: Fri, 8 May 2026 17:39:39 +0800 Subject: [PATCH] =?UTF-8?q?0509=E6=96=B0=E5=8A=9F=E8=83=BD=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vo/ProjectOutputSplitRespVO.java | 10 +++--- .../vo/ProjectOutputSplitSaveReqVO.java | 4 +-- .../planning/vo/ProjectPlanningPageReqVO.java | 2 +- .../planning/vo/ProjectPlanningRespVO.java | 24 ++++++++++++-- .../planning/vo/ProjectPlanningSaveReqVO.java | 32 +++++++++++++++---- .../profit/vo/ProjectProfitPageReqVO.java | 2 +- .../admin/profit/vo/ProjectProfitRespVO.java | 7 ++-- .../admin/project/vo/ProjectPageReqVO.java | 2 +- .../admin/project/vo/ProjectRespVO.java | 20 +++++++----- .../admin/project/vo/ProjectSaveReqVO.java | 21 ++++++------ .../report/ProjectOutputReportController.java | 2 +- .../ProjectLeadQuarterOutputExportReqVO.java | 2 +- .../report/vo/ProjectOverviewExcelRespVO.java | 2 +- .../vo/SpecialtyRoleSplitRespVO.java | 2 +- .../planning/ProjectPlanningDO.java | 12 +++++++ .../tjt/dal/dataobject/project/ProjectDO.java | 12 ++++--- .../mysql/planning/ProjectPlanningMapper.java | 10 +++++- .../tjt/dal/mysql/project/ProjectMapper.java | 3 +- .../tjt/enums/OutputSplitBizConstants.java | 4 +-- .../service/employee/EmployeeServiceImpl.java | 8 +++-- .../planning/ProjectPlanningServiceImpl.java | 22 +++++++++++-- .../profit/ProjectProfitServiceImpl.java | 4 ++- .../service/project/ProjectServiceImpl.java | 5 ++- 23 files changed, 154 insertions(+), 58 deletions(-) diff --git a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/outputsplit/vo/ProjectOutputSplitRespVO.java b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/outputsplit/vo/ProjectOutputSplitRespVO.java index d712c13..a249cce 100644 --- a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/outputsplit/vo/ProjectOutputSplitRespVO.java +++ b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/outputsplit/vo/ProjectOutputSplitRespVO.java @@ -21,7 +21,7 @@ public class ProjectOutputSplitRespVO { @Schema(description = "项目名称") private String projectName; - @Schema(description = "规划内容") + @Schema(description = "项目任务包") private String planningContent; @Schema(description = "年度") @@ -33,16 +33,16 @@ public class ProjectOutputSplitRespVO { @Schema(description = "项目经理") private String projectManagerName; - @Schema(description = "项目负责人") + @Schema(description = "工程负责人") private String engineeringLeaderName; - @Schema(description = "项目经理/项目负责人") + @Schema(description = "项目经理/工程负责人") private String projectLeadName; - @Schema(description = "项目经理/项目负责人合并比例") + @Schema(description = "项目经理/工程负责人合并比例") private BigDecimal projectLeadRatio; - @Schema(description = "项目经理/项目负责人合并金额") + @Schema(description = "项目经理/工程负责人合并金额") private BigDecimal projectLeadAmount; @Schema(description = "专业所比例") diff --git a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/outputsplit/vo/ProjectOutputSplitSaveReqVO.java b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/outputsplit/vo/ProjectOutputSplitSaveReqVO.java index 3f6a8df..6c85d4c 100644 --- a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/outputsplit/vo/ProjectOutputSplitSaveReqVO.java +++ b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/outputsplit/vo/ProjectOutputSplitSaveReqVO.java @@ -16,8 +16,8 @@ public class ProjectOutputSplitSaveReqVO { @NotNull(message = "合约规划 ID 不能为空") private Long planningId; - @Schema(description = "项目经理/项目负责人合并比例", requiredMode = Schema.RequiredMode.REQUIRED, example = "0.0550") - @NotNull(message = "项目经理/项目负责人合并比例不能为空") + @Schema(description = "项目经理/工程负责人合并比例", requiredMode = Schema.RequiredMode.REQUIRED, example = "0.0550") + @NotNull(message = "项目经理/工程负责人合并比例不能为空") @DecimalMin(value = "0.0000", message = "projectLeadRatio must be >= 0") @DecimalMax(value = "1.0000", message = "projectLeadRatio must be <= 1") private BigDecimal projectLeadRatio; diff --git a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/planning/vo/ProjectPlanningPageReqVO.java b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/planning/vo/ProjectPlanningPageReqVO.java index c11340e..49a2a15 100644 --- a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/planning/vo/ProjectPlanningPageReqVO.java +++ b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/planning/vo/ProjectPlanningPageReqVO.java @@ -24,7 +24,7 @@ public class ProjectPlanningPageReqVO extends PageParam { @Schema(description = "产值计算方式", example = "指导价法") private String calculationMethod; - @Schema(description = "规划内容,模糊匹配", example = "建筑") + @Schema(description = "项目任务包,模糊匹配", example = "建筑") private String planningContent; @Schema(description = "开始年度", example = "2026") diff --git a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/planning/vo/ProjectPlanningRespVO.java b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/planning/vo/ProjectPlanningRespVO.java index 330746d..d0bcb19 100644 --- a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/planning/vo/ProjectPlanningRespVO.java +++ b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/planning/vo/ProjectPlanningRespVO.java @@ -16,25 +16,43 @@ public class ProjectPlanningRespVO { @Schema(description = "项目 ID", example = "1") private Long projectId; + @Schema(description = "排序") + private Integer sortNo; + @Schema(description = "归属类型") private String ownershipType; @Schema(description = "产值计算方式") private String calculationMethod; - @Schema(description = "规划内容") + @Schema(description = "项目任务包") private String planningContent; - @Schema(description = "规划金额") + @Schema(description = "分项合同产值") private BigDecimal planningAmount; + @Schema(description = "合同产值数量") + private BigDecimal contractValueQuantity; + + @Schema(description = "合同产值单价") + private BigDecimal contractValueUnitPrice; + @Schema(description = "管理费率") private BigDecimal managementFeeRate; @Schema(description = "管理费") private BigDecimal managementFee; - @Schema(description = "实施团队") + @Schema(description = "增值税率") + private BigDecimal vatRate; + + @Schema(description = "增值税") + private BigDecimal vatAmount; + + @Schema(description = "项目预算产值") + private BigDecimal projectBudgetOutputValue; + + @Schema(description = "意向实施团队") private String implementationTeam; @Schema(description = "开始年度") diff --git a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/planning/vo/ProjectPlanningSaveReqVO.java b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/planning/vo/ProjectPlanningSaveReqVO.java index b7e144c..a6b44c4 100644 --- a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/planning/vo/ProjectPlanningSaveReqVO.java +++ b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/planning/vo/ProjectPlanningSaveReqVO.java @@ -21,6 +21,9 @@ public class ProjectPlanningSaveReqVO { @NotNull(message = "项目 ID 不能为空") private Long projectId; + @Schema(description = "排序", example = "0") + private Integer sortNo; + @Schema(description = "归属类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "专业所") @NotBlank(message = "归属类型不能为空") @Size(max = 20, message = "归属类型长度不能超过 20 个字符") @@ -30,23 +33,38 @@ public class ProjectPlanningSaveReqVO { @Size(max = 30, message = "产值计算方式长度不能超过 30 个字符") private String calculationMethod; - @Schema(description = "规划内容", requiredMode = Schema.RequiredMode.REQUIRED, example = "建筑设计") - @NotBlank(message = "规划内容不能为空") - @Size(max = 255, message = "规划内容长度不能超过 255 个字符") + @Schema(description = "项目任务包", requiredMode = Schema.RequiredMode.REQUIRED, example = "建筑设计") + @NotBlank(message = "项目任务包不能为空") + @Size(max = 255, message = "项目任务包长度不能超过 255 个字符") private String planningContent; - @Schema(description = "规划金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "500000") - @NotNull(message = "规划金额不能为空") + @Schema(description = "分项合同产值,系统根据合同产值数量和合同产值单价自动计算", example = "500000") private BigDecimal planningAmount; + @Schema(description = "合同产值数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "合同产值数量不能为空") + @DecimalMin(value = "0.0000", message = "contractValueQuantity must be >= 0") + private BigDecimal contractValueQuantity; + + @Schema(description = "合同产值单价", requiredMode = Schema.RequiredMode.REQUIRED, example = "500000") + @NotNull(message = "合同产值单价不能为空") + @DecimalMin(value = "0.0000", message = "contractValueUnitPrice must be >= 0") + private BigDecimal contractValueUnitPrice; + @Schema(description = "管理费率", requiredMode = Schema.RequiredMode.REQUIRED, example = "0.0500") @NotNull(message = "管理费率不能为空") @DecimalMin(value = "0.0000", message = "managementFeeRate must be >= 0") @DecimalMax(value = "1.0000", message = "managementFeeRate must be <= 1") private BigDecimal managementFeeRate; - @Schema(description = "实施团队", example = "建筑一所") - @Size(max = 100, message = "实施团队长度不能超过 100 个字符") + @Schema(description = "增值税率", requiredMode = Schema.RequiredMode.REQUIRED, example = "0.0600") + @NotNull(message = "增值税率不能为空") + @DecimalMin(value = "0.0000", message = "vatRate must be >= 0") + @DecimalMax(value = "1.0000", message = "vatRate must be <= 1") + private BigDecimal vatRate; + + @Schema(description = "意向实施团队", example = "建筑一所") + @Size(max = 100, message = "意向实施团队长度不能超过 100 个字符") private String implementationTeam; @Schema(description = "开始年度", example = "2026") diff --git a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/profit/vo/ProjectProfitPageReqVO.java b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/profit/vo/ProjectProfitPageReqVO.java index 52d619b..71e1b57 100644 --- a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/profit/vo/ProjectProfitPageReqVO.java +++ b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/profit/vo/ProjectProfitPageReqVO.java @@ -15,7 +15,7 @@ import static cn.iocoder.lyzsys.framework.common.util.date.DateUtils.FORMAT_YEAR @EqualsAndHashCode(callSuper = true) public class ProjectProfitPageReqVO extends PageParam { - @Schema(description = "工程名称,模糊匹配", example = "设计") + @Schema(description = "项目名称,模糊匹配", example = "设计") private String projectName; @Schema(description = "是否签订合同", example = "true") diff --git a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/profit/vo/ProjectProfitRespVO.java b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/profit/vo/ProjectProfitRespVO.java index 75d8a89..f216c31 100644 --- a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/profit/vo/ProjectProfitRespVO.java +++ b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/profit/vo/ProjectProfitRespVO.java @@ -13,13 +13,16 @@ public class ProjectProfitRespVO { @Schema(description = "项目 ID", example = "1") private Long projectId; - @Schema(description = "工程名称") + @Schema(description = "项目名称") private String projectName; + @Schema(description = "排序") + private Integer sortNo; + @Schema(description = "是否签订合同") private Boolean contractSignedFlag; - @Schema(description = "合同金额") + @Schema(description = "合同产值") private BigDecimal contractAmount; @Schema(description = "最终结算金额") diff --git a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/project/vo/ProjectPageReqVO.java b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/project/vo/ProjectPageReqVO.java index 773f0ef..6223da4 100644 --- a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/project/vo/ProjectPageReqVO.java +++ b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/project/vo/ProjectPageReqVO.java @@ -15,7 +15,7 @@ import static cn.iocoder.lyzsys.framework.common.util.date.DateUtils.FORMAT_YEAR @EqualsAndHashCode(callSuper = true) public class ProjectPageReqVO extends PageParam { - @Schema(description = "工程名称,模糊匹配", example = "设计") + @Schema(description = "项目名称,模糊匹配", example = "设计") private String projectName; @Schema(description = "是否签订合同", example = "true") diff --git a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/project/vo/ProjectRespVO.java b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/project/vo/ProjectRespVO.java index 3378bbb..34f6bca 100644 --- a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/project/vo/ProjectRespVO.java +++ b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/project/vo/ProjectRespVO.java @@ -22,16 +22,20 @@ public class ProjectRespVO { @ExcelProperty("项目ID") private Long id; - @Schema(description = "工程名称", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("工程名称") + @Schema(description = "项目名称", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("项目名称") private String projectName; + @Schema(description = "排序") + @ExcelProperty("排序") + private Integer sortNo; + @Schema(description = "是否签订合同", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("是否签订合同") private Boolean contractSignedFlag; - @Schema(description = "合同金额", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("合同金额") + @Schema(description = "合同产值", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("合同产值") private BigDecimal contractAmount; @Schema(description = "工程总面积", requiredMode = Schema.RequiredMode.REQUIRED) @@ -42,12 +46,12 @@ public class ProjectRespVO { @ExcelProperty("建设单位") private String constructionUnitName; - @Schema(description = "联系人") - @ExcelProperty("联系人") + @Schema(description = "建设单位联系人") + @ExcelProperty("建设单位联系人") private String contactName; - @Schema(description = "联系方式") - @ExcelProperty("联系方式") + @Schema(description = "建设单位联系电话") + @ExcelProperty("建设单位联系电话") private String contactPhone; @Schema(description = "合同签订日期") diff --git a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/project/vo/ProjectSaveReqVO.java b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/project/vo/ProjectSaveReqVO.java index 0b4971d..f9ff8a9 100644 --- a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/project/vo/ProjectSaveReqVO.java +++ b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/project/vo/ProjectSaveReqVO.java @@ -23,17 +23,20 @@ public class ProjectSaveReqVO { @Schema(description = "项目 ID", example = "1") private Long id; - @Schema(description = "工程名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "XX 设计项目") - @NotBlank(message = "工程名称不能为空") - @Size(max = 200, message = "工程名称长度不能超过 200 个字符") + @Schema(description = "项目名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "XX 设计项目") + @NotBlank(message = "项目名称不能为空") + @Size(max = 200, message = "项目名称长度不能超过 200 个字符") private String projectName; + @Schema(description = "排序", example = "0") + private Integer sortNo; + @Schema(description = "是否签订合同", requiredMode = Schema.RequiredMode.REQUIRED, example = "true") @NotNull(message = "是否签订合同不能为空") private Boolean contractSignedFlag; - @Schema(description = "合同金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "1000000") - @NotNull(message = "合同金额不能为空") + @Schema(description = "合同产值", requiredMode = Schema.RequiredMode.REQUIRED, example = "1000000") + @NotNull(message = "合同产值不能为空") private BigDecimal contractAmount; @Schema(description = "工程总面积", requiredMode = Schema.RequiredMode.REQUIRED, example = "30000") @@ -44,12 +47,12 @@ public class ProjectSaveReqVO { @Size(max = 200, message = "建设单位长度不能超过 200 个字符") private String constructionUnitName; - @Schema(description = "联系人", example = "张三") - @Size(max = 64, message = "联系人长度不能超过 64 个字符") + @Schema(description = "建设单位联系人", example = "张三") + @Size(max = 64, message = "建设单位联系人长度不能超过 64 个字符") private String contactName; - @Schema(description = "联系方式", example = "13800000000") - @Size(max = 32, message = "联系方式长度不能超过 32 个字符") + @Schema(description = "建设单位联系电话", example = "13800000000") + @Size(max = 32, message = "建设单位联系电话长度不能超过 32 个字符") private String contactPhone; @Schema(description = "合同签订日期", example = "2026-04-14") diff --git a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/report/ProjectOutputReportController.java b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/report/ProjectOutputReportController.java index c583200..d048460 100644 --- a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/report/ProjectOutputReportController.java +++ b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/report/ProjectOutputReportController.java @@ -51,7 +51,7 @@ public class ProjectOutputReportController { } @GetMapping("/project-lead-quarter-output/export-excel") - @Operation(summary = "导出项目负责人年度季度计取表") + @Operation(summary = "导出工程负责人年度季度计取表") @PreAuthorize("@ss.hasPermission('tjt:report-project-quarter:export')") @ApiAccessLog(operateType = EXPORT) public void exportProjectLeadQuarterOutputExcel(HttpServletResponse response, diff --git a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/report/vo/ProjectLeadQuarterOutputExportReqVO.java b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/report/vo/ProjectLeadQuarterOutputExportReqVO.java index 2f7ffd7..434a8ee 100644 --- a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/report/vo/ProjectLeadQuarterOutputExportReqVO.java +++ b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/report/vo/ProjectLeadQuarterOutputExportReqVO.java @@ -5,7 +5,7 @@ import lombok.Data; import javax.validation.constraints.NotNull; -@Schema(description = "管理后台 - 项目负责人年度季度计取表导出 Request VO") +@Schema(description = "管理后台 - 工程负责人年度季度计取表导出 Request VO") @Data public class ProjectLeadQuarterOutputExportReqVO { diff --git a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/report/vo/ProjectOverviewExcelRespVO.java b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/report/vo/ProjectOverviewExcelRespVO.java index 81a2daf..09dc2c7 100644 --- a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/report/vo/ProjectOverviewExcelRespVO.java +++ b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/report/vo/ProjectOverviewExcelRespVO.java @@ -18,7 +18,7 @@ public class ProjectOverviewExcelRespVO { @ExcelProperty("项目名称") private String projectName; - @ExcelProperty("规划内容") + @ExcelProperty("项目任务包") private String planningContent; @ExcelProperty("工程进度情况及其它说明") diff --git a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/specialtyrolesplit/vo/SpecialtyRoleSplitRespVO.java b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/specialtyrolesplit/vo/SpecialtyRoleSplitRespVO.java index d23c28d..4f2ecdd 100644 --- a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/specialtyrolesplit/vo/SpecialtyRoleSplitRespVO.java +++ b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/specialtyrolesplit/vo/SpecialtyRoleSplitRespVO.java @@ -22,7 +22,7 @@ public class SpecialtyRoleSplitRespVO { @Schema(description = "项目名称") private String projectName; - @Schema(description = "规划内容") + @Schema(description = "项目任务包") private String planningContent; @Schema(description = "专业编码") diff --git a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/dal/dataobject/planning/ProjectPlanningDO.java b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/dal/dataobject/planning/ProjectPlanningDO.java index 481655d..5f11f9f 100644 --- a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/dal/dataobject/planning/ProjectPlanningDO.java +++ b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/dal/dataobject/planning/ProjectPlanningDO.java @@ -25,6 +25,8 @@ public class ProjectPlanningDO extends TenantBaseDO { private Long projectId; + private Integer sortNo; + private String ownershipType; private String calculationMethod; @@ -33,10 +35,20 @@ public class ProjectPlanningDO extends TenantBaseDO { private BigDecimal planningAmount; + private BigDecimal contractValueQuantity; + + private BigDecimal contractValueUnitPrice; + private BigDecimal managementFeeRate; private BigDecimal managementFee; + private BigDecimal vatRate; + + private BigDecimal vatAmount; + + private BigDecimal projectBudgetOutputValue; + private String implementationTeam; private Integer planningStartYear; diff --git a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/dal/dataobject/project/ProjectDO.java b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/dal/dataobject/project/ProjectDO.java index fdb9cdf..f088c91 100644 --- a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/dal/dataobject/project/ProjectDO.java +++ b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/dal/dataobject/project/ProjectDO.java @@ -28,15 +28,19 @@ public class ProjectDO extends TenantBaseDO { @TableId private Long id; /** - * 工程名称 + * 项目名称 */ private String projectName; + /** + * 排序 + */ + private Integer sortNo; /** * 是否签订合同 */ private Boolean contractSignedFlag; /** - * 合同金额 + * 合同产值 */ private BigDecimal contractAmount; /** @@ -48,11 +52,11 @@ public class ProjectDO extends TenantBaseDO { */ private String constructionUnitName; /** - * 联系人 + * 建设单位联系人 */ private String contactName; /** - * 联系方式 + * 建设单位联系电话 */ private String contactPhone; /** diff --git a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/dal/mysql/planning/ProjectPlanningMapper.java b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/dal/mysql/planning/ProjectPlanningMapper.java index 7718c89..d728434 100644 --- a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/dal/mysql/planning/ProjectPlanningMapper.java +++ b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/dal/mysql/planning/ProjectPlanningMapper.java @@ -25,7 +25,8 @@ public interface ProjectPlanningMapper extends BaseMapperX { .likeIfPresent(ProjectPlanningDO::getPlanningContent, reqVO.getPlanningContent()) .eqIfPresent(ProjectPlanningDO::getPlanningStartYear, reqVO.getPlanningStartYear()) .betweenIfPresent(ProjectPlanningDO::getCreateTime, reqVO.getCreateTime()) - .orderByDesc(ProjectPlanningDO::getId)); + .orderByAsc(ProjectPlanningDO::getSortNo) + .orderByAsc(ProjectPlanningDO::getId)); } default List selectListByProjectId(Long projectId) { @@ -34,4 +35,11 @@ public interface ProjectPlanningMapper extends BaseMapperX { .orderByDesc(ProjectPlanningDO::getId)); } + default List selectDisplayListByProjectId(Long projectId) { + return selectList(new LambdaQueryWrapperX() + .eq(ProjectPlanningDO::getProjectId, projectId) + .orderByAsc(ProjectPlanningDO::getSortNo) + .orderByAsc(ProjectPlanningDO::getId)); + } + } diff --git a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/dal/mysql/project/ProjectMapper.java b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/dal/mysql/project/ProjectMapper.java index 735ce1c..a316774 100644 --- a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/dal/mysql/project/ProjectMapper.java +++ b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/dal/mysql/project/ProjectMapper.java @@ -22,7 +22,8 @@ public interface ProjectMapper extends BaseMapperX { .eqIfPresent(ProjectDO::getProjectStartYear, reqVO.getProjectStartYear()) .eqIfPresent(ProjectDO::getProjectStatus, reqVO.getProjectStatus()) .betweenIfPresent(ProjectDO::getCreateTime, reqVO.getCreateTime()) - .orderByDesc(ProjectDO::getId)); + .orderByAsc(ProjectDO::getSortNo) + .orderByAsc(ProjectDO::getId)); } } diff --git a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/enums/OutputSplitBizConstants.java b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/enums/OutputSplitBizConstants.java index 6255cb3..37001b0 100644 --- a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/enums/OutputSplitBizConstants.java +++ b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/enums/OutputSplitBizConstants.java @@ -33,7 +33,7 @@ public final class OutputSplitBizConstants { public static final String ROLE_ENGINEERING_PRINCIPAL = "engineering_principal"; public static final List ASSIGNMENT_SPECIALTY_ITEMS = Arrays.asList( - new SpecialtyItem(SPECIALTY_PROJECT_LEAD, "项目经理/项目负责人", 0), + new SpecialtyItem(SPECIALTY_PROJECT_LEAD, "项目经理/工程负责人", 0), new SpecialtyItem(SPECIALTY_ARCH, "建筑", 1), new SpecialtyItem(SPECIALTY_DECOR, "装饰", 2), new SpecialtyItem(SPECIALTY_STRUCT, "结构", 3), @@ -63,7 +63,7 @@ public final class OutputSplitBizConstants { public static final List PROJECT_LEAD_ROLE_ITEMS = Arrays.asList( new RoleItem(ROLE_PROJECT_MANAGER, "项目经理", 1), - new RoleItem(ROLE_ENGINEERING_PRINCIPAL, "项目负责人", 2) + new RoleItem(ROLE_ENGINEERING_PRINCIPAL, "工程负责人", 2) ); private OutputSplitBizConstants() { diff --git a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/employee/EmployeeServiceImpl.java b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/employee/EmployeeServiceImpl.java index 3357604..f643d57 100644 --- a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/employee/EmployeeServiceImpl.java +++ b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/employee/EmployeeServiceImpl.java @@ -133,11 +133,13 @@ public class EmployeeServiceImpl implements EmployeeService { if (officeIds == null || officeIds.isEmpty()) { return Collections.emptyMap(); } - officeIds.removeIf(Objects::isNull); - if (officeIds.isEmpty()) { + Set validOfficeIds = officeIds.stream() + .filter(Objects::nonNull) + .collect(java.util.stream.Collectors.toSet()); + if (validOfficeIds.isEmpty()) { return Collections.emptyMap(); } - return CollectionUtils.convertMap(officeMapper.selectBatchIds(officeIds), OfficeDO::getId); + return CollectionUtils.convertMap(officeMapper.selectBatchIds(validOfficeIds), OfficeDO::getId); } private EmployeeRespVO toRespVO(EmployeeDO employee, Map officeMap) { diff --git a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/planning/ProjectPlanningServiceImpl.java b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/planning/ProjectPlanningServiceImpl.java index 222e481..70c2f17 100644 --- a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/planning/ProjectPlanningServiceImpl.java +++ b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/planning/ProjectPlanningServiceImpl.java @@ -51,6 +51,7 @@ public class ProjectPlanningServiceImpl implements ProjectPlanningService { private static final int AMOUNT_SCALE = 2; private static final int RATIO_SCALE = 4; private static final int FACTOR_SCALE = 2; + private static final int QUANTITY_SCALE = 4; private static final BigDecimal ZERO_AMOUNT = BigDecimal.ZERO.setScale(AMOUNT_SCALE, RoundingMode.HALF_UP); private static final BigDecimal ZERO_RATIO = BigDecimal.ZERO.setScale(RATIO_SCALE, RoundingMode.HALF_UP); @@ -142,7 +143,7 @@ public class ProjectPlanningServiceImpl implements ProjectPlanningService { @Override public List getProjectPlanningListByProjectId(Long projectId) { validateProjectExists(projectId); - return projectPlanningMapper.selectListByProjectId(projectId); + return projectPlanningMapper.selectDisplayListByProjectId(projectId); } @Override @@ -197,14 +198,22 @@ public class ProjectPlanningServiceImpl implements ProjectPlanningService { } private void prepareProjectPlanning(ProjectPlanningDO planning, ProjectDO project) { + if (planning.getSortNo() == null) { + planning.setSortNo(0); + } if (planning.getPlanningStartYear() == null) { planning.setPlanningStartYear(project.getProjectStartYear()); } if (planning.getReviewOutsourceFlag() == null) { planning.setReviewOutsourceFlag(Boolean.FALSE); } - planning.setPlanningAmount(amount(planning.getPlanningAmount())); + planning.setContractValueQuantity(quantity(planning.getContractValueQuantity())); + planning.setContractValueUnitPrice(quantity(planning.getContractValueUnitPrice())); + planning.setPlanningAmount(multiplyAmount( + planning.getContractValueQuantity(), + planning.getContractValueUnitPrice())); planning.setManagementFeeRate(ratio(planning.getManagementFeeRate())); + planning.setVatRate(ratio(planning.getVatRate())); if (planning.getPlanningArea() == null) { planning.setPlanningArea(project.getTotalConstructionArea()); } @@ -240,6 +249,10 @@ public class ProjectPlanningServiceImpl implements ProjectPlanningService { private void calculateProjectPlanning(ProjectPlanningDO planning) { planning.setManagementFee(multiplyAmount(planning.getPlanningAmount(), planning.getManagementFeeRate())); + planning.setVatAmount(multiplyAmount(planning.getPlanningAmount(), planning.getVatRate())); + planning.setProjectBudgetOutputValue(amount(planning.getPlanningAmount() + .subtract(planning.getManagementFee()) + .subtract(planning.getVatAmount()))); planning.setContractUnitPrice(divideAmount(planning.getPlanningAmount(), planning.getPlanningArea())); planning.setTotalAdjustmentFactor(ZERO_RATIO); planning.setAssessmentArea(ZERO_AMOUNT); @@ -409,6 +422,11 @@ public class ProjectPlanningServiceImpl implements ProjectPlanningService { return value == null ? null : factor(value); } + private BigDecimal quantity(BigDecimal value) { + return value == null ? BigDecimal.ZERO.setScale(QUANTITY_SCALE, RoundingMode.HALF_UP) + : value.setScale(QUANTITY_SCALE, RoundingMode.HALF_UP); + } + private BigDecimal ratio(BigDecimal value) { return value == null ? ZERO_RATIO : value.setScale(RATIO_SCALE, RoundingMode.HALF_UP); } diff --git a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/profit/ProjectProfitServiceImpl.java b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/profit/ProjectProfitServiceImpl.java index 4c3be72..a1de15d 100644 --- a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/profit/ProjectProfitServiceImpl.java +++ b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/profit/ProjectProfitServiceImpl.java @@ -64,7 +64,8 @@ public class ProjectProfitServiceImpl implements ProjectProfitService { .eqIfPresent(ProjectDO::getContractSignedFlag, pageReqVO.getContractSignedFlag()) .eqIfPresent(ProjectDO::getProjectStartYear, pageReqVO.getProjectStartYear()) .betweenIfPresent(ProjectDO::getCreateTime, pageReqVO.getCreateTime()) - .orderByDesc(ProjectDO::getId)); + .orderByAsc(ProjectDO::getSortNo) + .orderByAsc(ProjectDO::getId)); if (pageResult.getList().isEmpty()) { return new PageResult<>(Collections.emptyList(), pageResult.getTotal()); } @@ -123,6 +124,7 @@ public class ProjectProfitServiceImpl implements ProjectProfitService { ProjectProfitRespVO respVO = new ProjectProfitRespVO(); respVO.setProjectId(project.getId()); respVO.setProjectName(project.getProjectName()); + respVO.setSortNo(project.getSortNo()); respVO.setContractSignedFlag(project.getContractSignedFlag()); respVO.setContractAmount(contractAmount); respVO.setFinalSettlementAmount(finalSettlementAmount); diff --git a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/project/ProjectServiceImpl.java b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/project/ProjectServiceImpl.java index 8863aed..86ce750 100644 --- a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/project/ProjectServiceImpl.java +++ b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/project/ProjectServiceImpl.java @@ -50,7 +50,7 @@ public class ProjectServiceImpl implements ProjectService { private static final String ROLE_CODE_PROJECT_MANAGER = "project_manager"; private static final String ROLE_CODE_ENGINEERING_PRINCIPAL = "engineering_principal"; private static final String ROLE_NAME_PROJECT_MANAGER = "项目经理"; - private static final String ROLE_NAME_ENGINEERING_PRINCIPAL = "项目负责人"; + private static final String ROLE_NAME_ENGINEERING_PRINCIPAL = "工程负责人"; private static final String STATUS_IN_PROGRESS = "进行中"; private static final String STATUS_COMPLETED = "完成"; private static final String STATUS_PAUSED = "暂停"; @@ -147,6 +147,9 @@ public class ProjectServiceImpl implements ProjectService { if (project.getArchiveTime() == null && dbProject != null) { project.setArchiveTime(dbProject.getArchiveTime()); } + if (project.getSortNo() == null) { + project.setSortNo(dbProject == null || dbProject.getSortNo() == null ? 0 : dbProject.getSortNo()); + } } private void saveProjectRolePersons(Long projectId, List reqList) {