From 6b2b91249a45146f0165f4e0a32d398a0a1aa49a Mon Sep 17 00:00:00 2001 From: lzm <2316711944@qq.com> Date: Fri, 15 May 2026 17:56:54 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=9F=BA=E7=A1=80=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E3=80=81=E5=90=88=E7=BA=A6=E8=A7=84=E5=88=92=E3=80=81?= =?UTF-8?q?=E6=8C=87=E5=AF=BC=E4=BB=B7=E6=B3=95=E6=98=8E=E7=BB=86=E3=80=81?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E6=88=90=E6=9C=AC=E6=B5=8B=E7=AE=97=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E8=B0=83=E6=95=B4=E3=80=81=E8=8F=9C=E5=8D=95=E5=90=8D?= =?UTF-8?q?=E7=A7=B0=E8=B0=83=E6=95=B4=E3=80=81=E4=B8=93=E4=B8=9A=E4=BA=BA?= =?UTF-8?q?=E5=91=98=E6=8A=A5=E8=A1=A8=E4=B8=8E=E5=AF=BC=E5=87=BA=E5=86=85?= =?UTF-8?q?=E5=AE=B9=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vo/ProjectPlanningGuideDetailRespVO.java | 2 +- .../ProjectPlanningGuideDetailSaveReqVO.java | 6 +-- .../admin/profit/vo/ProjectProfitRespVO.java | 24 ++++++---- .../admin/project/vo/ProjectRespVO.java | 16 +++---- .../admin/project/vo/ProjectSaveReqVO.java | 14 +++--- .../tjt/dal/dataobject/project/ProjectDO.java | 8 ++-- .../ProjectPlanningBizTypeConstants.java | 20 ++++++-- .../profit/ProjectProfitServiceImpl.java | 14 ++++-- .../ProjectOutputReportServiceImpl.java | 48 +++++++++++++------ .../builder/ProjectBudgetExcelBuilder.java | 4 +- .../ProjectLeadQuarterOutputExcelBuilder.java | 3 +- .../ProjectQuarterOutputExcelBuilder.java | 6 ++- .../SpecialtyPersonOutputExcelBuilder.java | 7 ++- 13 files changed, 111 insertions(+), 61 deletions(-) diff --git a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/planningguidedetail/vo/ProjectPlanningGuideDetailRespVO.java b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/planningguidedetail/vo/ProjectPlanningGuideDetailRespVO.java index 8bbb5ad..cd7c4bd 100644 --- a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/planningguidedetail/vo/ProjectPlanningGuideDetailRespVO.java +++ b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/planningguidedetail/vo/ProjectPlanningGuideDetailRespVO.java @@ -22,7 +22,7 @@ public class ProjectPlanningGuideDetailRespVO { @Schema(description = "设计部位") private String designPart; - @Schema(description = "建筑类型") + @Schema(description = "设计内容/设计类型") private String buildingType; @Schema(description = "设计面积") diff --git a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/planningguidedetail/vo/ProjectPlanningGuideDetailSaveReqVO.java b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/planningguidedetail/vo/ProjectPlanningGuideDetailSaveReqVO.java index 7e3d8a9..d27342f 100644 --- a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/planningguidedetail/vo/ProjectPlanningGuideDetailSaveReqVO.java +++ b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/planningguidedetail/vo/ProjectPlanningGuideDetailSaveReqVO.java @@ -22,9 +22,9 @@ public class ProjectPlanningGuideDetailSaveReqVO { @Size(max = 20, message = "设计部位长度不能超过 20 个字符") private String designPart; - @Schema(description = "建筑类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "住宅") - @NotBlank(message = "建筑类型不能为空") - @Size(max = 100, message = "建筑类型长度不能超过 100 个字符") + @Schema(description = "设计内容/设计类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "住宅") + @NotBlank(message = "设计内容/设计类型不能为空") + @Size(max = 100, message = "设计内容/设计类型长度不能超过 100 个字符") private String buildingType; @Schema(description = "设计面积", requiredMode = Schema.RequiredMode.REQUIRED, example = "12000") 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 94f110b..0924cf2 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 @@ -22,25 +22,31 @@ public class ProjectProfitRespVO { @Schema(description = "是否签订合同") private Boolean contractSignedFlag; - @Schema(description = "合同产值") + @Schema(description = "合同总产值") private BigDecimal contractAmount; - @Schema(description = "最终结算金额") + @Schema(description = "结算合同总产值") private BigDecimal finalSettlementAmount; - @Schema(description = "有效结算金额,最终结算金额大于 0 时取最终结算金额,否则取合同产值") + @Schema(description = "项目预算产值总计,结算合同总产值大于 0 时取结算合同总产值,否则取合同总产值") private BigDecimal effectiveSettlementAmount; - @Schema(description = "综合所协作金额") + @Schema(description = "综合所人工成本") private BigDecimal comprehensivePlanningAmount; - @Schema(description = "专业分包金额") + @Schema(description = "专项/源头合作分包人工成本合计") private BigDecimal subcontractPlanningAmount; - @Schema(description = "专业所产值") + @Schema(description = "专项分包人工成本") + private BigDecimal specialSubcontractPlanningAmount; + + @Schema(description = "源头合作分包人工成本") + private BigDecimal sourceCoopSubcontractPlanningAmount; + + @Schema(description = "专业所考核产值") private BigDecimal majorOutputValue; - @Schema(description = "专业所预计绩效") + @Schema(description = "专业所人工成本") private BigDecimal majorExpectedPerformance; @Schema(description = "科创产值比例") @@ -52,10 +58,10 @@ public class ProjectProfitRespVO { @Schema(description = "其他成本") private BigDecimal otherCost; - @Schema(description = "盈亏值") + @Schema(description = "预算盈亏值") private BigDecimal profitLossValue; - @Schema(description = "盈亏百分比") + @Schema(description = "预算盈亏百分比") private BigDecimal profitLossRate; @Schema(description = "项目开始年度") 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 34f6bca..c7fe3a2 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 @@ -34,12 +34,12 @@ public class ProjectRespVO { @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) - @ExcelProperty("工程总面积") + @Schema(description = "建筑面积", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("建筑面积") private BigDecimal totalConstructionArea; @Schema(description = "建设单位") @@ -71,8 +71,8 @@ public class ProjectRespVO { @ExcelProperty("工程类型") private String projectType; - @Schema(description = "工程类别") - @ExcelProperty("工程类别") + @Schema(description = "设计类型") + @ExcelProperty("设计类型") private String projectCategory; @Schema(description = "项目开始年度") @@ -95,8 +95,8 @@ public class ProjectRespVO { @Schema(description = "中止原因") private String terminateReason; - @Schema(description = "最终结算金额") - @ExcelProperty("最终结算金额") + @Schema(description = "结算合同总产值") + @ExcelProperty("结算合同总产值") private BigDecimal finalSettlementAmount; @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 f9ff8a9..135fe2d 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 @@ -35,12 +35,12 @@ public class ProjectSaveReqVO { @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") - @NotNull(message = "工程总面积不能为空") + @Schema(description = "建筑面积", requiredMode = Schema.RequiredMode.REQUIRED, example = "30000") + @NotNull(message = "建筑面积不能为空") private BigDecimal totalConstructionArea; @Schema(description = "建设单位", example = "XX 建设单位") @@ -64,8 +64,8 @@ public class ProjectSaveReqVO { @Size(max = 50, message = "工程类型长度不能超过 50 个字符") private String projectType; - @Schema(description = "工程类别", example = "住宅") - @Size(max = 50, message = "工程类别长度不能超过 50 个字符") + @Schema(description = "设计类型", example = "住宅") + @Size(max = 50, message = "设计类型长度不能超过 50 个字符") private String projectCategory; @Schema(description = "项目开始年度", requiredMode = Schema.RequiredMode.REQUIRED, example = "2026") @@ -84,7 +84,7 @@ public class ProjectSaveReqVO { @Size(max = 255, message = "中止原因长度不能超过 255 个字符") private String terminateReason; - @Schema(description = "最终结算金额", example = "1200000") + @Schema(description = "结算合同总产值", example = "1200000") private BigDecimal finalSettlementAmount; @Schema(description = "科创产值比例", example = "0.0100") 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 f088c91..717a15c 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 @@ -40,11 +40,11 @@ public class ProjectDO extends TenantBaseDO { */ private Boolean contractSignedFlag; /** - * 合同产值 + * 合同总产值 */ private BigDecimal contractAmount; /** - * 工程总面积 + * 建筑面积 */ private BigDecimal totalConstructionArea; /** @@ -68,7 +68,7 @@ public class ProjectDO extends TenantBaseDO { */ private String projectType; /** - * 工程类别 + * 设计类型 */ private String projectCategory; /** @@ -96,7 +96,7 @@ public class ProjectDO extends TenantBaseDO { */ private String terminateReason; /** - * 最终结算金额 + * 结算合同总产值 */ private BigDecimal finalSettlementAmount; /** diff --git a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/enums/ProjectPlanningBizTypeConstants.java b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/enums/ProjectPlanningBizTypeConstants.java index e30cf56..701e383 100644 --- a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/enums/ProjectPlanningBizTypeConstants.java +++ b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/enums/ProjectPlanningBizTypeConstants.java @@ -13,9 +13,11 @@ public final class ProjectPlanningBizTypeConstants { public static final String OWNERSHIP_TYPE_MAJOR = "专业所"; public static final String OWNERSHIP_TYPE_COMPREHENSIVE = "综合所"; - public static final String OWNERSHIP_TYPE_SUBCONTRACT = "专业分包"; + public static final String OWNERSHIP_TYPE_SPECIAL_SUBCONTRACT = "专项分包"; + public static final String OWNERSHIP_TYPE_SOURCE_COOP_SUBCONTRACT = "源头合作分包"; public static final String DESIGN_PART_REAL_ESTATE = "地上部分"; public static final String DESIGN_PART_UNDERGROUND = "地下部分"; + public static final String DESIGN_PART_OTHER = "其他"; public static final String CALCULATION_METHOD_GUIDANCE_PRICE = "指导价法"; public static final String CALCULATION_METHOD_CONTRACT_PRICE = "合同价法"; @@ -28,7 +30,8 @@ public final class ProjectPlanningBizTypeConstants { private static final Set OWNERSHIP_TYPES = new HashSet<>(Arrays.asList( OWNERSHIP_TYPE_MAJOR, OWNERSHIP_TYPE_COMPREHENSIVE, - OWNERSHIP_TYPE_SUBCONTRACT + OWNERSHIP_TYPE_SPECIAL_SUBCONTRACT, + OWNERSHIP_TYPE_SOURCE_COOP_SUBCONTRACT )); private static final Set CALCULATION_METHODS = new HashSet<>(Arrays.asList( @@ -39,7 +42,8 @@ public final class ProjectPlanningBizTypeConstants { private static final Set DESIGN_PARTS = new HashSet<>(Arrays.asList( DESIGN_PART_REAL_ESTATE, - DESIGN_PART_UNDERGROUND + DESIGN_PART_UNDERGROUND, + DESIGN_PART_OTHER )); private static final Set VIRTUAL_CALCULATION_METHODS = new HashSet<>(Arrays.asList( @@ -76,7 +80,15 @@ public final class ProjectPlanningBizTypeConstants { } public static boolean isSubcontract(String value) { - return OWNERSHIP_TYPE_SUBCONTRACT.equals(value); + return isSpecialSubcontract(value) || isSourceCoopSubcontract(value); + } + + public static boolean isSpecialSubcontract(String value) { + return OWNERSHIP_TYPE_SPECIAL_SUBCONTRACT.equals(value); + } + + public static boolean isSourceCoopSubcontract(String value) { + return OWNERSHIP_TYPE_SOURCE_COOP_SUBCONTRACT.equals(value); } public static boolean isGuidancePrice(String value) { 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 c4fd553..7db2da5 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 @@ -81,7 +81,8 @@ public class ProjectProfitServiceImpl implements ProjectProfitService { private ProjectProfitRespVO buildProjectProfit(ProjectDO project, List planningList) { List safePlanningList = planningList == null ? Collections.emptyList() : planningList; BigDecimal comprehensivePlanningAmount = ZERO_AMOUNT; - BigDecimal subcontractPlanningAmount = ZERO_AMOUNT; + BigDecimal specialSubcontractPlanningAmount = ZERO_AMOUNT; + BigDecimal sourceCoopSubcontractPlanningAmount = ZERO_AMOUNT; BigDecimal majorOutputValue = ZERO_AMOUNT; List majorPlanningList = safePlanningList.stream() .filter(planning -> ProjectPlanningBizTypeConstants.isMajor(planning.getOwnershipType())) @@ -92,8 +93,12 @@ public class ProjectProfitServiceImpl implements ProjectProfitService { comprehensivePlanningAmount = comprehensivePlanningAmount.add(amount(planning.getPlanningAmount())); continue; } - if (ProjectPlanningBizTypeConstants.isSubcontract(planning.getOwnershipType())) { - subcontractPlanningAmount = subcontractPlanningAmount.add(amount(planning.getPlanningAmount())); + if (ProjectPlanningBizTypeConstants.isSpecialSubcontract(planning.getOwnershipType())) { + specialSubcontractPlanningAmount = specialSubcontractPlanningAmount.add(amount(planning.getPlanningAmount())); + continue; + } + if (ProjectPlanningBizTypeConstants.isSourceCoopSubcontract(planning.getOwnershipType())) { + sourceCoopSubcontractPlanningAmount = sourceCoopSubcontractPlanningAmount.add(amount(planning.getPlanningAmount())); continue; } if (ProjectPlanningBizTypeConstants.isMajor(planning.getOwnershipType())) { @@ -112,6 +117,7 @@ public class ProjectProfitServiceImpl implements ProjectProfitService { ? ZERO_AMOUNT : contractAmount.multiply(innovationOutputRate).setScale(2, RoundingMode.HALF_UP); BigDecimal otherCost = amount(project.getOtherCost()); + BigDecimal subcontractPlanningAmount = specialSubcontractPlanningAmount.add(sourceCoopSubcontractPlanningAmount); BigDecimal profitLossValue = effectiveSettlementAmount .subtract(comprehensivePlanningAmount) .subtract(subcontractPlanningAmount) @@ -133,6 +139,8 @@ public class ProjectProfitServiceImpl implements ProjectProfitService { respVO.setEffectiveSettlementAmount(effectiveSettlementAmount); respVO.setComprehensivePlanningAmount(comprehensivePlanningAmount.setScale(2, RoundingMode.HALF_UP)); respVO.setSubcontractPlanningAmount(subcontractPlanningAmount.setScale(2, RoundingMode.HALF_UP)); + respVO.setSpecialSubcontractPlanningAmount(specialSubcontractPlanningAmount.setScale(2, RoundingMode.HALF_UP)); + respVO.setSourceCoopSubcontractPlanningAmount(sourceCoopSubcontractPlanningAmount.setScale(2, RoundingMode.HALF_UP)); respVO.setMajorOutputValue(majorOutputValue.setScale(2, RoundingMode.HALF_UP)); respVO.setMajorExpectedPerformance(majorExpectedPerformance); respVO.setInnovationOutputRate(innovationOutputRate); diff --git a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/report/ProjectOutputReportServiceImpl.java b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/report/ProjectOutputReportServiceImpl.java index bbcc0c4..469bb08 100644 --- a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/report/ProjectOutputReportServiceImpl.java +++ b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/report/ProjectOutputReportServiceImpl.java @@ -269,11 +269,9 @@ public class ProjectOutputReportServiceImpl implements ProjectOutputReportServic ProjectPlanningDO anchorPlanning = validatePlanningExists(reqVO.getPlanningId()); ProjectDO project = validateProjectExists(anchorPlanning.getProjectId()); Integer reportYear = resolveExportYear(reqVO.getYear()); - List planningList = sortPlanningList(projectPlanningMapper.selectListByProjectId(project.getId())); + List planningList = Collections.singletonList(anchorPlanning); Map> quarterMap = getQuarterMap(planningList); - List relevantPlanningList = planningList.stream() - .filter(item -> hasYearAmount(quarterMap.get(item.getId()), reportYear)) - .collect(Collectors.toList()); + List relevantPlanningList = getSpecialtyPersonRelevantPlanningList(anchorPlanning); Map outputSplitMap = getOutputSplitMap(relevantPlanningList); Map> roleSplitMap = getRoleSplitMap(relevantPlanningList); List anchorRoleList = @@ -513,11 +511,9 @@ public class ProjectOutputReportServiceImpl implements ProjectOutputReportServic ProjectPlanningDO anchorPlanning = validatePlanningExists(reqVO.getPlanningId()); ProjectDO project = validateProjectExists(anchorPlanning.getProjectId()); Integer reportYear = resolveExportYear(reqVO.getYear()); - List planningList = sortPlanningList(projectPlanningMapper.selectListByProjectId(project.getId())); + List planningList = Collections.singletonList(anchorPlanning); Map> quarterMap = getQuarterMap(planningList); - List relevantPlanningList = planningList.stream() - .filter(item -> hasYearAmount(quarterMap.get(item.getId()), reportYear)) - .collect(Collectors.toList()); + List relevantPlanningList = getSpecialtyPersonRelevantPlanningList(anchorPlanning); Map outputSplitMap = getOutputSplitMap(relevantPlanningList); Map> roleSplitMap = getRoleSplitMap(relevantPlanningList); List projectRolePersons = projectRolePersonMapper.selectListByProjectId(project.getId()); @@ -565,6 +561,13 @@ public class ProjectOutputReportServiceImpl implements ProjectOutputReportServic return result; } + private List getSpecialtyPersonRelevantPlanningList(ProjectPlanningDO anchorPlanning) { + if (anchorPlanning == null) { + return Collections.emptyList(); + } + return Collections.singletonList(anchorPlanning); + } + @Override public ProjectOverviewPreviewRespVO getProjectOverviewPreview(ProjectOverviewExportReqVO reqVO) { return buildProjectOverviewPreviewResp(buildProjectOverviewExportData(reqVO)); @@ -933,7 +936,8 @@ public class ProjectOutputReportServiceImpl implements ProjectOutputReportServic .in(ProjectPlanningDO::getOwnershipType, Arrays.asList( ProjectPlanningBizTypeConstants.OWNERSHIP_TYPE_MAJOR, ProjectPlanningBizTypeConstants.OWNERSHIP_TYPE_COMPREHENSIVE, - ProjectPlanningBizTypeConstants.OWNERSHIP_TYPE_SUBCONTRACT + ProjectPlanningBizTypeConstants.OWNERSHIP_TYPE_SPECIAL_SUBCONTRACT, + ProjectPlanningBizTypeConstants.OWNERSHIP_TYPE_SOURCE_COOP_SUBCONTRACT ))); } @@ -990,7 +994,8 @@ public class ProjectOutputReportServiceImpl implements ProjectOutputReportServic .in(ProjectPlanningDO::getOwnershipType, Arrays.asList( ProjectPlanningBizTypeConstants.OWNERSHIP_TYPE_MAJOR, ProjectPlanningBizTypeConstants.OWNERSHIP_TYPE_COMPREHENSIVE, - ProjectPlanningBizTypeConstants.OWNERSHIP_TYPE_SUBCONTRACT + ProjectPlanningBizTypeConstants.OWNERSHIP_TYPE_SPECIAL_SUBCONTRACT, + ProjectPlanningBizTypeConstants.OWNERSHIP_TYPE_SOURCE_COOP_SUBCONTRACT ))) .stream() .map(ProjectPlanningDO::getId) @@ -1234,11 +1239,15 @@ public class ProjectOutputReportServiceImpl implements ProjectOutputReportServic planningGroup, ProjectPlanningBizTypeConstants.DESIGN_PART_REAL_ESTATE); List undergroundPlanningList = filterBudgetPartPlanningList( planningGroup, ProjectPlanningBizTypeConstants.DESIGN_PART_UNDERGROUND); + List otherPlanningList = filterBudgetPartPlanningList( + planningGroup, ProjectPlanningBizTypeConstants.DESIGN_PART_OTHER); appendBudgetPartRows(rows, planning, planningContent, ProjectPlanningBizTypeConstants.DESIGN_PART_REAL_ESTATE, groundPlanningList); appendBudgetPartRows(rows, planning, planningContent, ProjectPlanningBizTypeConstants.DESIGN_PART_UNDERGROUND, undergroundPlanningList); + appendBudgetPartRows(rows, planning, planningContent, + ProjectPlanningBizTypeConstants.DESIGN_PART_OTHER, otherPlanningList); rows.add(buildBudgetSummaryRow(ProjectBudgetExcelBuilder.BudgetRowType.PLANNING_TOTAL, planning, planningContent, "总计", planningGroup)); } @@ -1529,6 +1538,9 @@ public class ProjectOutputReportServiceImpl implements ProjectOutputReportServic if (Objects.equals(designPart, ProjectPlanningBizTypeConstants.DESIGN_PART_UNDERGROUND)) { return 2; } + if (Objects.equals(designPart, ProjectPlanningBizTypeConstants.DESIGN_PART_OTHER)) { + return 3; + } return 9; } @@ -1735,8 +1747,11 @@ public class ProjectOutputReportServiceImpl implements ProjectOutputReportServic if (ProjectPlanningBizTypeConstants.isMajor(ownershipType)) { return "六大专业考核产值"; } - if (ProjectPlanningBizTypeConstants.isSubcontract(ownershipType)) { - return "专业分包产值"; + if (ProjectPlanningBizTypeConstants.isSpecialSubcontract(ownershipType)) { + return "专项分包产值"; + } + if (ProjectPlanningBizTypeConstants.isSourceCoopSubcontract(ownershipType)) { + return "源头合作分包产值"; } if (ProjectPlanningBizTypeConstants.isComprehensive(ownershipType)) { return "内部协作产值"; @@ -1749,13 +1764,16 @@ public class ProjectOutputReportServiceImpl implements ProjectOutputReportServic if (Objects.equals(outputType, "六大专业考核产值")) { return 1; } - if (Objects.equals(outputType, "专业分包产值")) { + if (Objects.equals(outputType, "专项分包产值")) { return 2; } - if (Objects.equals(outputType, "内部协作产值")) { + if (Objects.equals(outputType, "源头合作分包产值")) { return 3; } - return 4; + if (Objects.equals(outputType, "内部协作产值")) { + return 4; + } + return 5; } private String buildPlanningDisplayName(ProjectPlanningDO planning) { diff --git a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/report/builder/ProjectBudgetExcelBuilder.java b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/report/builder/ProjectBudgetExcelBuilder.java index 2f90844..16a279d 100644 --- a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/report/builder/ProjectBudgetExcelBuilder.java +++ b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/report/builder/ProjectBudgetExcelBuilder.java @@ -35,7 +35,7 @@ public class ProjectBudgetExcelBuilder extends AbstractProjectOutputExcelBuilder private void buildBudgetSheet(Workbook workbook, ExportData data) { Sheet sheet = createSheet(workbook, BUDGET_SHEET_NAME, BUDGET_SHEET_FALLBACK_NAME); - setColumnWidths(sheet, 16, 14, 18, 16, 18, 14, 12, 12, 12, 18, 12, 14, 16); + setColumnWidths(sheet, 16, 14, 22, 16, 18, 14, 12, 12, 12, 18, 12, 14, 16); CellStyle titleStyle = createTitleStyle(workbook); CellStyle infoStyle = createInfoStyle(workbook); @@ -110,7 +110,7 @@ public class ProjectBudgetExcelBuilder extends AbstractProjectOutputExcelBuilder setMergedRegionText(sheet, firstRow + 1, firstRow + 1, 7, 9, "调整系数", headerStyle); writeRow(sheet, firstRow + 2, headerStyle, (Object[]) new String[]{ - "规划内容", "设计部位", "建筑类型", "", "", "栋数 / 户型数", + "规划内容", "设计部位", "设计内容/设计类型", "", "", "栋数 / 户型数", "套图系数", "规模系数", "修改系数", "复杂系数 / 复杂等级", "", "", "" }); return rowIndex + 3; diff --git a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/report/builder/ProjectLeadQuarterOutputExcelBuilder.java b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/report/builder/ProjectLeadQuarterOutputExcelBuilder.java index 9fdc881..70244fa 100644 --- a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/report/builder/ProjectLeadQuarterOutputExcelBuilder.java +++ b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/report/builder/ProjectLeadQuarterOutputExcelBuilder.java @@ -28,7 +28,8 @@ public class ProjectLeadQuarterOutputExcelBuilder extends AbstractProjectOutputE private static final String DEFAULT_PROJECT_SIGNER = "项目经理/工程负责人(签名):"; private static final List OUTPUT_TYPE_ORDER = Arrays.asList( "六大专业考核产值", - "专业分包产值", + "专项分包产值", + "源头合作分包产值", "内部协作产值", "其他产值" ); diff --git a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/report/builder/ProjectQuarterOutputExcelBuilder.java b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/report/builder/ProjectQuarterOutputExcelBuilder.java index c7e5251..361c6a0 100644 --- a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/report/builder/ProjectQuarterOutputExcelBuilder.java +++ b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/report/builder/ProjectQuarterOutputExcelBuilder.java @@ -36,14 +36,16 @@ public class ProjectQuarterOutputExcelBuilder extends AbstractProjectOutputExcel private static final List OUTPUT_TYPE_ORDER = Arrays.asList( "六大专业考核产值", - "专业分包产值", + "专项分包产值", + "源头合作分包产值", "内部协作产值", "其他产值" ); private static final List FIXED_OUTPUT_TYPES = Arrays.asList( "六大专业考核产值", - "专业分包产值", + "专项分包产值", + "源头合作分包产值", "内部协作产值" ); diff --git a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/report/builder/SpecialtyPersonOutputExcelBuilder.java b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/report/builder/SpecialtyPersonOutputExcelBuilder.java index 09284d5..2be7e26 100644 --- a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/report/builder/SpecialtyPersonOutputExcelBuilder.java +++ b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/report/builder/SpecialtyPersonOutputExcelBuilder.java @@ -534,12 +534,15 @@ public class SpecialtyPersonOutputExcelBuilder extends AbstractProjectOutputExce if (Objects.equals(current, "六大专业考核产值")) { return 1; } - if (Objects.equals(current, "专业分包产值")) { + if (Objects.equals(current, "专项分包产值")) { return 2; } - if (Objects.equals(current, "内部协作产值")) { + if (Objects.equals(current, "源头合作分包产值")) { return 3; } + if (Objects.equals(current, "内部协作产值")) { + return 4; + } return 9; }