Bläddra i källkod

Merge remote-tracking branch 'origin/master' into master

yangyj 1 år sedan
förälder
incheckning
80767b9faa
100 ändrade filer med 5657 tillägg och 80 borttagningar
  1. 3 3
      blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java
  2. 1 1
      blade-common/src/main/java/org/springblade/common/utils/ForestNodeManagerEx.java
  3. 15 0
      blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/entity/ArchiveProjectConfig.java
  4. 28 0
      blade-service-api/blade-meter-api/pom.xml
  5. 34 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/AttachmentFormDTO.java
  6. 34 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/ChangeTokenFormDTO.java
  7. 34 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/ChangeTokenInventoryDTO.java
  8. 34 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/ChangeTokenMeterDTO.java
  9. 34 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/ContractInventoryFormDTO.java
  10. 34 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/ContractMaterialDTO.java
  11. 34 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/ContractMeterPeriodDTO.java
  12. 34 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/InterimPayCertificateDTO.java
  13. 34 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/InventoryFormApplyDTO.java
  14. 34 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/InventoryFormMeterDTO.java
  15. 34 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/MaterialMeterFormDTO.java
  16. 34 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/MaterialStartStatementDTO.java
  17. 34 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/MeterPeriodDTO.java
  18. 34 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/MiddleMeterApplyDTO.java
  19. 34 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/PayCertificatePayItemDTO.java
  20. 34 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/StartPayMeterFormDTO.java
  21. 34 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/StatementFileFormDTO.java
  22. 4 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/test.java
  23. 73 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/AttachmentForm.java
  24. 130 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/ChangeTokenForm.java
  25. 78 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/ChangeTokenInventory.java
  26. 68 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/ChangeTokenMeter.java
  27. 197 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/ContractInventoryForm.java
  28. 84 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/ContractMaterial.java
  29. 74 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/ContractMeterPeriod.java
  30. 100 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/InterimPayCertificate.java
  31. 68 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/InventoryFormApply.java
  32. 68 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/InventoryFormMeter.java
  33. 129 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/MaterialMeterForm.java
  34. 94 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/MaterialStartStatement.java
  35. 84 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/MeterPeriod.java
  36. 115 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/MiddleMeterApply.java
  37. 89 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/PayCertificatePayItem.java
  38. 90 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/StartPayMeterForm.java
  39. 78 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/StatementFileForm.java
  40. 4 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/test.java
  41. 4 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/feign/test.java
  42. 34 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/AttachmentFormVO.java
  43. 34 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ChangeTokenFormVO.java
  44. 34 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ChangeTokenInventoryVO.java
  45. 34 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ChangeTokenMeterVO.java
  46. 34 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ContractInventoryFormVO.java
  47. 34 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ContractMaterialVO.java
  48. 34 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ContractMeterPeriodVO.java
  49. 61 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/FormTreeVO.java
  50. 34 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/InterimPayCertificateVO.java
  51. 34 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/InventoryFormApplyVO.java
  52. 34 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/InventoryFormMeterVO.java
  53. 34 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/MaterialMeterFormVO.java
  54. 34 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/MaterialStartStatementVO.java
  55. 34 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/MeterPeriodVO.java
  56. 34 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/MiddleMeterApplyVO.java
  57. 34 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/PayCertificatePayItemVO.java
  58. 34 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/StartPayMeterFormVO.java
  59. 34 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/StatementFileFormVO.java
  60. 4 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/test.java
  61. 1 0
      blade-service-api/pom.xml
  62. 3 1
      blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveProjectConfigController.java
  63. 88 8
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java
  64. 57 0
      blade-service/blade-archive/src/main/java/org/springblade/archive/utils/ArchiveTreeUtil.java
  65. 5 2
      blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java
  66. 3 3
      blade-service/blade-business/src/main/java/org/springblade/business/controller/TaskController.java
  67. 12 5
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractServiceImpl.java
  68. 51 33
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractSyncImpl.java
  69. 6 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeServiceImpl.java
  70. 142 23
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java
  71. 32 0
      blade-service/blade-meter/pom.xml
  72. 20 0
      blade-service/blade-meter/src/main/java/org/springblade/MeterApplication.java
  73. 117 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/AttachmentFormController.java
  74. 117 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/ChangeTokenFormController.java
  75. 117 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/ChangeTokenInventoryController.java
  76. 117 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/ChangeTokenMeterController.java
  77. 144 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/ContractInventoryFormController.java
  78. 117 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/ContractMaterialController.java
  79. 117 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/ContractMeterPeriodController.java
  80. 117 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/InterimPayCertificateController.java
  81. 116 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/InventoryFormApplyController.java
  82. 117 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/InventoryFormMeterController.java
  83. 117 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/MaterialMeterFormController.java
  84. 116 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/MaterialStartStatementController.java
  85. 117 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/MeterPeriodController.java
  86. 116 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/MiddleMeterApplyController.java
  87. 117 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/PayCertificatePayItemController.java
  88. 116 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/StartPayMeterFormController.java
  89. 117 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/StatementFileFormController.java
  90. 4 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/test.java
  91. 32 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/AttachmentFormMapper.java
  92. 25 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/AttachmentFormMapper.xml
  93. 31 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ChangeTokenFormMapper.java
  94. 37 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ChangeTokenFormMapper.xml
  95. 31 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ChangeTokenInventoryMapper.java
  96. 26 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ChangeTokenInventoryMapper.xml
  97. 31 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ChangeTokenMeterMapper.java
  98. 25 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ChangeTokenMeterMapper.xml
  99. 36 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractInventoryFormMapper.java
  100. 48 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractInventoryFormMapper.xml

+ 3 - 3
blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java

@@ -27,11 +27,11 @@ import static org.springblade.core.launch.constant.AppConstant.APPLICATION_NAME_
  */
 public interface LauncherConstant {
 
+    String APPLICATION_MANAGER_NAME = APPLICATION_NAME_PREFIX + "manager"; /*后管*/
 
-    String APPLICATION_MANAGER_NAME = APPLICATION_NAME_PREFIX + "manager";
-
-    String APPLICATION_ARCHIVE_NAME = APPLICATION_NAME_PREFIX + "archive";
+    String APPLICATION_METER_NAME = APPLICATION_NAME_PREFIX + "meter"; /*计量*/
 
+    String APPLICATION_ARCHIVE_NAME = APPLICATION_NAME_PREFIX + "archive"; /*档案*/
 
     String APPLICATION_VISUAL_NAME = APPLICATION_NAME_PREFIX + "visual";
 

+ 1 - 1
blade-common/src/main/java/org/springblade/common/utils/ForestNodeManagerEx.java

@@ -28,7 +28,7 @@ public class ForestNodeManagerEx<T extends INodeEx<T>> {
     public List<T> getRoot() {
         List<T> roots = new ArrayList();
         this.nodeMap.forEach((key, node) -> {
-            if (node.getParentId() == 0L || this.parentIdMap.containsKey(node.getId())) {
+            if ((node.getParentId() != null && node.getParentId() == 0L) || this.parentIdMap.containsKey(node.getId())) {
                 roots.add(node);
             }
 

+ 15 - 0
blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/entity/ArchiveProjectConfig.java

@@ -33,6 +33,21 @@ public class ArchiveProjectConfig extends BaseEntity {
      */
     private String factorType;
 
+    /**
+     *  目录类型,0 默认规则,1,主目录规则,从建设单位,或者合同段的子节点开始重新计算
+     */
+    private Integer dirType;
+
+    /**
+     *  流水号类型,0 默认,无虚数, 1 4位虚数
+     */
+    private Integer indexType;
+
+    /**
+     *  序号位数,默认为0
+     */
+    private Integer indexNum;
+
     //是否打页码
     public boolean isPage() {
         return getFactorType().contains("5");

+ 28 - 0
blade-service-api/blade-meter-api/pom.xml

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>blade-service-api</artifactId>
+        <groupId>org.springblade</groupId>
+        <version>2.9.1.RELEASE</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>blade-meter-api</artifactId>
+    <name>${project.artifactId}</name>
+    <version>${bladex.project.version}</version>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-common</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-starter-excel</artifactId>
+        </dependency>
+    </dependencies>
+    <packaging>jar</packaging>
+
+</project>

+ 34 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/AttachmentFormDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.dto;
+
+import org.springblade.meter.entity.AttachmentForm;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 附件表数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class AttachmentFormDTO extends AttachmentForm {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/ChangeTokenFormDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.dto;
+
+import org.springblade.meter.entity.ChangeTokenForm;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 变更令表数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ChangeTokenFormDTO extends ChangeTokenForm {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/ChangeTokenInventoryDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.dto;
+
+import org.springblade.meter.entity.ChangeTokenInventory;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 变更令与合同工程清单	中间表数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ChangeTokenInventoryDTO extends ChangeTokenInventory {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/ChangeTokenMeterDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.dto;
+
+import org.springblade.meter.entity.ChangeTokenMeter;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 变更令与合同计量单元	中间表数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ChangeTokenMeterDTO extends ChangeTokenMeter {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/ContractInventoryFormDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.dto;
+
+import org.springblade.meter.entity.ContractInventoryForm;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 合同工程清单表数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ContractInventoryFormDTO extends ContractInventoryForm {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/ContractMaterialDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.dto;
+
+import org.springblade.meter.entity.ContractMaterial;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 合同材料表数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ContractMaterialDTO extends ContractMaterial {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/ContractMeterPeriodDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.dto;
+
+import org.springblade.meter.entity.ContractMeterPeriod;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 合同计量期表数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ContractMeterPeriodDTO extends ContractMeterPeriod {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/InterimPayCertificateDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.dto;
+
+import org.springblade.meter.entity.InterimPayCertificate;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 中期支付证书数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class InterimPayCertificateDTO extends InterimPayCertificate {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/InventoryFormApplyDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.dto;
+
+import org.springblade.meter.entity.InventoryFormApply;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 工程清单与中间计量申请	中间表数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class InventoryFormApplyDTO extends InventoryFormApply {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/InventoryFormMeterDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.dto;
+
+import org.springblade.meter.entity.InventoryFormMeter;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 工程清单与合同计量单元	中间表数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class InventoryFormMeterDTO extends InventoryFormMeter {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/MaterialMeterFormDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.dto;
+
+import org.springblade.meter.entity.MaterialMeterForm;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 材料计量单数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class MaterialMeterFormDTO extends MaterialMeterForm {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/MaterialStartStatementDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.dto;
+
+import org.springblade.meter.entity.MaterialStartStatement;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 材料和开工报表数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class MaterialStartStatementDTO extends MaterialStartStatement {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/MeterPeriodDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.dto;
+
+import org.springblade.meter.entity.MeterPeriod;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 材料开工计量期表数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class MeterPeriodDTO extends MeterPeriod {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/MiddleMeterApplyDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.dto;
+
+import org.springblade.meter.entity.MiddleMeterApply;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 中间计量申请表数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class MiddleMeterApplyDTO extends MiddleMeterApply {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/PayCertificatePayItemDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.dto;
+
+import org.springblade.meter.entity.PayCertificatePayItem;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 合同中期支付证书	与合同中期支付项	中间表数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PayCertificatePayItemDTO extends PayCertificatePayItem {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/StartPayMeterFormDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.dto;
+
+import org.springblade.meter.entity.StartPayMeterForm;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 开工预付款计量单数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class StartPayMeterFormDTO extends StartPayMeterForm {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/StatementFileFormDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.dto;
+
+import org.springblade.meter.entity.StatementFileForm;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 报表文件表数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class StatementFileFormDTO extends StatementFileForm {
+	private static final long serialVersionUID = 1L;
+
+}

+ 4 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/test.java

@@ -0,0 +1,4 @@
+package org.springblade.meter.dto;
+
+public class test {
+}

+ 73 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/AttachmentForm.java

@@ -0,0 +1,73 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+
+import io.swagger.annotations.ApiModelProperty;
+import org.springblade.core.mp.base.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 附件表实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@TableName("s_attachment_form")
+@EqualsAndHashCode(callSuper = true)
+public class AttachmentForm extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 项目id
+     */
+    @ApiModelProperty(value = "项目id")
+    private Long projectId;
+    /**
+     * 合同段id
+     */
+    @ApiModelProperty(value = "合同段id")
+    private Long contractId;
+    /**
+     * 主件id
+     */
+    @ApiModelProperty(value = "主件id")
+    private Long masterId;
+    /**
+     * 附件名称
+     */
+    @ApiModelProperty(value = "附件名称")
+    private String fileName;
+    /**
+     * 附件地址
+     */
+    @ApiModelProperty(value = "附件地址")
+    private String fileUrl;
+    /**
+     * 附件pdf地址
+     */
+    @ApiModelProperty(value = "附件pdf地址")
+    private String filePdfUrl;
+
+
+}

+ 130 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/ChangeTokenForm.java

@@ -0,0 +1,130 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+import io.swagger.annotations.ApiModelProperty;
+import org.springblade.core.mp.base.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 变更令表实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@TableName("s_change_token_form")
+@EqualsAndHashCode(callSuper = true)
+public class ChangeTokenForm extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 项目id
+     */
+    @ApiModelProperty(value = "项目id")
+    private Long projectId;
+    /**
+     * 合同段id
+     */
+    @ApiModelProperty(value = "合同段id")
+    private Long contractId;
+    /**
+     * 变更令编号
+     */
+    @ApiModelProperty(value = "变更令编号")
+    private String changeNumber;
+    /**
+     * 变更令名称
+     */
+    @ApiModelProperty(value = "变更令名称")
+    private String changeName;
+    /**
+     * 变更发起单位
+     */
+    @ApiModelProperty(value = "变更发起单位")
+    private String changeUnit;
+    /**
+     * 变更类型
+     */
+    @ApiModelProperty(value = "变更类型")
+    private Integer changeType;
+    /**
+     * 业务日期
+     */
+    @ApiModelProperty(value = "业务日期")
+    private LocalDate businessDate;
+    /**
+     * 延长工期
+     */
+    @ApiModelProperty(value = "延长工期")
+    private Integer lengthenDays;
+    /**
+     * 变更申请金额
+     */
+    @ApiModelProperty(value = "项目id")
+    private BigDecimal changeMoney;
+    /**
+     * 设计完成时间
+     */
+    @ApiModelProperty(value = "设计完成时间")
+    private LocalDate designDate;
+    /**
+     * 实际变更桩号
+     */
+    @ApiModelProperty(value = "实际变更桩号")
+    private String realityChangeNumber;
+    /**
+     * 变更批复文号
+     */
+    @ApiModelProperty(value = "变更批复文号")
+    private String changeApprovalNumber;
+    /**
+     * 变更归类
+     */
+    @ApiModelProperty(value = "变更归类")
+    private Integer changeClassify;
+    /**
+     * 变更批复日期
+     */
+    @ApiModelProperty(value = "变更批复日期")
+    private LocalDate changeApprovalDate;
+    /**
+     * 变更原因
+     */
+    @ApiModelProperty(value = "变更原因")
+    private String changeCause;
+    /**
+     * 审批状态
+     */
+    @ApiModelProperty(value = "审批状态")
+    private Integer approveStatus;
+    /**
+     * 下达状态
+     */
+    @ApiModelProperty(value = "下达状态")
+    private String commandStatus;
+
+
+}

+ 78 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/ChangeTokenInventory.java

@@ -0,0 +1,78 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+
+import io.swagger.annotations.ApiModelProperty;
+import org.springblade.core.mp.base.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 变更令与合同工程清单	中间表实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@TableName("s_change_token_inventory")
+@EqualsAndHashCode(callSuper = true)
+public class ChangeTokenInventory extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 项目id
+     */
+    @ApiModelProperty(value = "项目id")
+    private Long projectId;
+    /**
+     * 合同段id
+     */
+    @ApiModelProperty(value = "合同段id")
+    private Long contractId;
+    /**
+     * 变更令id
+     */
+    @ApiModelProperty(value = "变更令id")
+    private Long changeTokenId;
+    /**
+     * 合同工程清单id
+     */
+    @ApiModelProperty(value = "合同工程清单id")
+    private Long inventoryFormId;
+    /**
+     * 变更前数量
+     */
+    @ApiModelProperty(value = "变更前数量")
+    private Integer changeBefore;
+    /**
+     * 变更数量
+     */
+    @ApiModelProperty(value = "变更数量")
+    private Integer changeTotal;
+    /**
+     * 变更后数量
+     */
+    @ApiModelProperty(value = "变更后数量")
+    private Integer changeAfter;
+
+
+}

+ 68 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/ChangeTokenMeter.java

@@ -0,0 +1,68 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+
+import io.swagger.annotations.ApiModelProperty;
+import org.springblade.core.mp.base.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 变更令与合同计量单元	中间表实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@TableName("s_change_token_meter")
+@EqualsAndHashCode(callSuper = true)
+public class ChangeTokenMeter extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 项目id
+     */
+    @ApiModelProperty(value = "项目id")
+    private Long projectId;
+    /**
+     * 合同段id
+     */
+    @ApiModelProperty(value = "合同段id")
+    private Long contractId;
+    /**
+     * 变更令id
+     */
+    @ApiModelProperty(value = "变更令id")
+    private Long changeTokenId;
+    /**
+     * 合同计量单元id
+     */
+    @ApiModelProperty(value = "合同计量单元id")
+    private Long contractMeterId;
+    /**
+     * 合同图号
+     */
+    @ApiModelProperty(value = "合同图号")
+    private String contractPicture;
+
+
+}

+ 197 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/ContractInventoryForm.java

@@ -0,0 +1,197 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.entity;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+import io.swagger.annotations.ApiModelProperty;
+import org.springblade.core.mp.base.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 合同工程清单表实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@TableName("s_contract_inventory_form")
+@EqualsAndHashCode(callSuper = true)
+public class ContractInventoryForm extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 项目id
+     */
+    @ApiModelProperty(value = "项目id")
+    @ExcelIgnore
+    private Long projectId;
+    /**
+     * 合同段id
+     */
+    @ApiModelProperty(value = "合同段id")
+    @ExcelIgnore
+    private Long contractId;
+    /**
+     * 导入编号
+     */
+    @ApiModelProperty(value = "导入编号")
+    @ExcelProperty("导入编号")
+    private String importNumber;
+    /**
+     * 清单编号
+     */
+    @ApiModelProperty(value = "清单编号")
+    @ExcelProperty("清单编号")
+    private String formNumber;
+    /**
+     * 清单名称
+     */
+    @ApiModelProperty(value = "清单名称")
+    @ExcelProperty("清单名称")
+    private String formName;
+    /**
+     * 清单类型
+     */
+    @ApiModelProperty(value = "清单类型")
+    @ExcelProperty("清单类型")
+    private Integer formType;
+    /**
+     * 是否清单节点0否1是
+     */
+    @ApiModelProperty(value = "是否清单节点0否1是")
+    @ExcelIgnore
+    private Integer isFormNode;
+    /**
+     * 单位
+     */
+    @ApiModelProperty(value = "单位")
+    @ExcelProperty("单位")
+    private String unit;
+    /**
+     * 中标单价
+     */
+    @ApiModelProperty(value = "中标单价")
+    @ExcelProperty("单价")
+    private BigDecimal bidPrice;
+    /**
+     * 当前单价
+     */
+    @ApiModelProperty(value = "当前单价")
+    @ExcelIgnore
+    private BigDecimal currentPrice;
+    /**
+     * 变更后单价
+     */
+    @ApiModelProperty(value = "变更后单价")
+    @ExcelIgnore
+    private BigDecimal changePrice;
+    /**
+     * 章编号
+     */
+    @ApiModelProperty(value = "章编号")
+    @ExcelProperty("章编号")
+    private String chapterNumber;
+    /**
+     * 合同数量
+     */
+    @ApiModelProperty(value = "合同数量")
+    @ExcelProperty("数量")
+    private Integer contractTotal;
+    /**
+     * 变更后数量
+     */
+    @ApiModelProperty(value = "变更后数量")
+    @ExcelIgnore
+    private Integer changeTotal;
+    /**
+     * 合同金额
+     */
+    @ApiModelProperty(value = "合同金额")
+    @ExcelIgnore
+    private BigDecimal contractMoney;
+    /**
+     * 变更后金额
+     */
+    @ApiModelProperty(value = "变更后金额")
+    @ExcelIgnore
+    private BigDecimal changeMoney;
+    /**
+     * 清单标识
+     */
+    @ApiModelProperty(value = "清单标识")
+    @ExcelIgnore
+    private String formTag;
+    /**
+     * 父id
+     */
+    @ApiModelProperty(value = "父id")
+    @ExcelIgnore
+    private Long parentId;
+    /**
+     * 父编号
+     */
+    @ApiModelProperty(value = "父编号")
+    @ExcelIgnore
+    private String parentNumber;
+    /**
+     * 祖级节点
+     */
+    @ApiModelProperty(value = "祖级节点")
+    @ExcelIgnore
+    private String ancestors;
+    /**
+     * 备注
+     */
+    @ApiModelProperty(value = "备注")
+    @ExcelProperty("备注")
+    private String remark;
+    /**
+     * 排序
+     */
+    @ApiModelProperty(value = "排序")
+    @ExcelIgnore
+    private Integer sort;
+    /**
+     * 是否锁定
+     */
+    @ApiModelProperty(value = "是否锁定")
+    @ExcelIgnore
+    private Integer isLock;
+    /**
+     * 是否增补
+     */
+    @ApiModelProperty(value = "是否增补")
+    @ExcelIgnore
+    private Integer isSupplement;
+    /**
+     * 节点层级
+     */
+    @ApiModelProperty(value = "节点层级")
+    @ExcelIgnore
+    private Integer nodeTier;
+
+
+
+}

+ 84 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/ContractMaterial.java

@@ -0,0 +1,84 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+import io.swagger.annotations.ApiModelProperty;
+import org.springblade.core.mp.base.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 合同材料表实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@TableName("s_contract_material")
+@EqualsAndHashCode(callSuper = true)
+public class ContractMaterial extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 项目id
+     */
+    @ApiModelProperty(value = "项目id")
+    private Long projectId;
+    /**
+     * 合同段id
+     */
+    @ApiModelProperty(value = "合同段id")
+    private Long contractId;
+    /**
+     * 材料编号
+     */
+    @ApiModelProperty(value = "材料编号")
+    private String materialNumber;
+    /**
+     * 材料名称
+     */
+    @ApiModelProperty(value = "材料名称")
+    private String materialName;
+    /**
+     * 规格型号
+     */
+    @ApiModelProperty(value = "规格型号")
+    private String specification;
+    /**
+     * 单位
+     */
+    @ApiModelProperty(value = "单位")
+    private String unit;
+    /**
+     * 单价
+     */
+    @ApiModelProperty(value = "单价")
+    private BigDecimal price;
+    /**
+     * 数量
+     */
+    @ApiModelProperty(value = "数量")
+    private Integer amount;
+
+
+}

+ 74 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/ContractMeterPeriod.java

@@ -0,0 +1,74 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+import io.swagger.annotations.ApiModelProperty;
+import org.springblade.core.mp.base.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 合同计量期表实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@TableName("s_contract_meter_period")
+@EqualsAndHashCode(callSuper = true)
+public class ContractMeterPeriod extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 项目id
+     */
+    @ApiModelProperty(value = "项目id")
+    private Long projectId;
+    /**
+     * 合同段id
+     */
+    @ApiModelProperty(value = "合同段id")
+    private Long contractId;
+    /**
+     * 期号
+     */
+    @ApiModelProperty(value = "期号")
+    private String periodNumber;
+    /**
+     * 年
+     */
+    @ApiModelProperty(value = "年")
+    private Integer periodYear;
+    /**
+     * 月
+     */
+    @ApiModelProperty(value = "月")
+    private Integer periodMonth;
+    /**
+     * 报表打印日期
+     */
+    @ApiModelProperty(value = "报表打印日期")
+    private LocalDate formPrintDate;
+
+
+}

+ 100 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/InterimPayCertificate.java

@@ -0,0 +1,100 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+import io.swagger.annotations.ApiModelProperty;
+import org.springblade.core.mp.base.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 中期支付证书实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@TableName("s_interim_pay_certificate")
+@EqualsAndHashCode(callSuper = true)
+public class InterimPayCertificate extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 项目id
+     */
+    @ApiModelProperty(value = "项目id")
+    private Long projectId;
+    /**
+     * 合同段id
+     */
+    @ApiModelProperty(value = "合同段id")
+    private Long contractId;
+    /**
+     * 合同计量期id
+     */
+    @ApiModelProperty(value = "合同计量期id")
+    private Long contractPeriodId;
+    /**
+     * 材料计量期id逗号分隔
+     */
+    @ApiModelProperty(value = "材料计量期id逗号分隔")
+    private String materialPeriodIds;
+    /**
+     * 开工计量期id逗号分隔
+     */
+    @ApiModelProperty(value = "开工计量期id逗号分隔")
+    private String startPeriodIds;
+    /**
+     * 证书编号
+     */
+    @ApiModelProperty(value = "证书编号")
+    private String certificateNumber;
+    /**
+     * 开始日期
+     */
+    @ApiModelProperty(value = "开始日期")
+    private LocalDate startDate;
+    /**
+     * 结束日期
+     */
+    @ApiModelProperty(value = "结束日期")
+    private LocalDate endDate;
+    /**
+     * 打印日期
+     */
+    @ApiModelProperty(value = "打印日期")
+    private LocalDate printDate;
+    /**
+     * 计算日期
+     */
+    @ApiModelProperty(value = "计算日期")
+    private LocalDate calculateDate;
+    /**
+     * 支付金额
+     */
+    @ApiModelProperty(value = "支付金额")
+    private BigDecimal payMoney;
+
+
+}

+ 68 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/InventoryFormApply.java

@@ -0,0 +1,68 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+
+import io.swagger.annotations.ApiModelProperty;
+import org.springblade.core.mp.base.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 工程清单与中间计量申请	中间表实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@TableName("s_inventory_form_apply")
+@EqualsAndHashCode(callSuper = true)
+public class InventoryFormApply extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 项目id
+     */
+    @ApiModelProperty(value = "项目id")
+    private Long projectId;
+    /**
+     * 合同段id
+     */
+    @ApiModelProperty(value = "合同段id")
+    private Long contractId;
+    /**
+     * 合同工程清单id
+     */
+    @ApiModelProperty(value = "合同工程清单id")
+    private Long contractFormId;
+    /**
+     * 中间计量申请id
+     */
+    @ApiModelProperty(value = "中间计量申请id")
+    private Long middleMeterId;
+    /**
+     * 本期计量数量
+     */
+    @ApiModelProperty(value = "本期计量数量")
+    private Integer currentMeterTotal;
+
+
+}

+ 68 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/InventoryFormMeter.java

@@ -0,0 +1,68 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+
+import io.swagger.annotations.ApiModelProperty;
+import org.springblade.core.mp.base.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 工程清单与合同计量单元	中间表实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@TableName("s_inventory_form_meter")
+@EqualsAndHashCode(callSuper = true)
+public class InventoryFormMeter extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 项目id
+     */
+    @ApiModelProperty(value = "项目id")
+    private Long projectId;
+    /**
+     * 合同段id
+     */
+    @ApiModelProperty(value = "合同段id")
+    private Long contractId;
+    /**
+     * 合同工程清单id
+     */
+    @ApiModelProperty(value = "合同工程清单id")
+    private Long contractFormId;
+    /**
+     * 合同计量单元id
+     */
+    @ApiModelProperty(value = "合同计量单元id")
+    private Long contractMeterId;
+    /**
+     * 施工图数量
+     */
+    @ApiModelProperty(value = "施工图数量")
+    private Integer buildPictureTotal;
+
+
+}

+ 129 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/MaterialMeterForm.java

@@ -0,0 +1,129 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+import io.swagger.annotations.ApiModelProperty;
+import org.springblade.core.mp.base.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 材料计量单实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@TableName("s_material_meter_form")
+@EqualsAndHashCode(callSuper = true)
+public class MaterialMeterForm extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 项目id
+     */
+    @ApiModelProperty(value = "项目id")
+    private Long projectId;
+    /**
+     * 合同段id
+     */
+    @ApiModelProperty(value = "合同段id")
+    private Long contractId;
+    /**
+     * 材料到场编号
+     */
+    @ApiModelProperty(value = "材料到场编号")
+    private String materialArriveNumber;
+    /**
+     * 计量期id,s_meter_period
+     */
+    @ApiModelProperty(value = "计量期id,s_meter_period")
+    private Long meterPeriodId;
+    /**
+     * 合同材料id
+     */
+    @ApiModelProperty(value = "合同材料id")
+    private Long contractMaterialId;
+    /**
+     * 单价
+     */
+    @ApiModelProperty(value = "单价")
+    private BigDecimal price;
+    /**
+     * 计量数量
+     */
+    @ApiModelProperty(value = "计量数量")
+    private Integer meterAmount;
+    /**
+     * 计量金额
+     */
+    @ApiModelProperty(value = "计量金额")
+    private BigDecimal meterMoney;
+    /**
+     * 备料堆放地点
+     */
+    @ApiModelProperty(value = "备料堆放地点")
+    private String storagePlace;
+    /**
+     * 存储情况
+     */
+    @ApiModelProperty(value = "存储情况")
+    private String storageStatus;
+    /**
+     * 材料来源
+     */
+    @ApiModelProperty(value = "材料来源")
+    private String materialSource;
+    /**
+     * 材料是否符合0不符合1符合
+     */
+    @ApiModelProperty(value = "材料是否符合0不符合1符合")
+    private Integer materialConform;
+    /**
+     * 存储是否符合0不符合1符合
+     */
+    @ApiModelProperty(value = "存储是否符合0不符合1符合")
+    private Integer storageConform;
+    /**
+     * 合格证
+     */
+    @ApiModelProperty(value = "合格证")
+    private String certificate;
+    /**
+     * 备注
+     */
+    @ApiModelProperty(value = "备注")
+    private String remark;
+    /**
+     * 审批状态
+     */
+    @ApiModelProperty(value = "审批状态")
+    private Integer approveStatus;
+    /**
+     * 排序
+     */
+    @ApiModelProperty(value = "排序")
+    private Integer sort;
+
+
+}

+ 94 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/MaterialStartStatement.java

@@ -0,0 +1,94 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+import io.swagger.annotations.ApiModelProperty;
+import org.springblade.core.mp.base.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 材料和开工报表实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@TableName("s_material_start_statement")
+@EqualsAndHashCode(callSuper = true)
+public class MaterialStartStatement extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 项目id
+     */
+    @ApiModelProperty(value = "项目id")
+    private Long projectId;
+    /**
+     * 合同段id
+     */
+    @ApiModelProperty(value = "合同段id")
+    private Long contractId;
+    /**
+     * 计量期id,s_meter_period
+     */
+    @ApiModelProperty(value = "计量期id,s_meter_period")
+    private Long meterPeriodId;
+    /**
+     * 1材料2开工
+     */
+    @ApiModelProperty(value = "1材料2开工")
+    private Integer type;
+    /**
+     * 报表名称
+     */
+    @ApiModelProperty(value = "报表名称")
+    private String statementName;
+    /**
+     * 报表期
+     */
+    @ApiModelProperty(value = "报表期")
+    private String statementPeriod;
+    /**
+     * 打印日期
+     */
+    @ApiModelProperty(value = "打印日期")
+    private LocalDate printDate;
+    /**
+     * 清款理由
+     */
+    @ApiModelProperty(value = "清款理由")
+    private String repaymentCause;
+    /**
+     * 计算时间
+     */
+    @ApiModelProperty(value = "计算时间")
+    private LocalDate calculateDate;
+    /**
+     * 排序
+     */
+    @ApiModelProperty(value = "排序")
+    private Integer sort;
+
+
+}

+ 84 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/MeterPeriod.java

@@ -0,0 +1,84 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+import io.swagger.annotations.ApiModelProperty;
+import org.springblade.core.mp.base.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 材料开工计量期表实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@TableName("s_meter_period")
+@EqualsAndHashCode(callSuper = true)
+public class MeterPeriod extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 项目id
+     */
+    @ApiModelProperty(value = "s_meter_period")
+    private Long projectId;
+    /**
+     * 合同段id
+     */
+    @ApiModelProperty(value = "合同段id")
+    private Long contractId;
+    /**
+     * 1材料,2开工
+     */
+    @ApiModelProperty(value = "1材料,2开工")
+    private Integer type;
+    /**
+     * 期号
+     */
+    @ApiModelProperty(value = "期号")
+    private String periodNumber;
+    /**
+     * 期名称
+     */
+    @ApiModelProperty(value = "期名称")
+    private String periodName;
+    /**
+     * 年
+     */
+    @ApiModelProperty(value = "年")
+    private Integer periodYear;
+    /**
+     * 月
+     */
+    @ApiModelProperty(value = "月")
+    private Integer periodMonth;
+    /**
+     * 报表打印日期
+     */
+    @ApiModelProperty(value = "报表打印日期")
+    private LocalDate formPrintDate;
+
+
+}

+ 115 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/MiddleMeterApply.java

@@ -0,0 +1,115 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+import io.swagger.annotations.ApiModelProperty;
+import org.springblade.core.mp.base.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 中间计量申请表实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@TableName("s_middle_meter_apply")
+@EqualsAndHashCode(callSuper = true)
+public class MiddleMeterApply extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 项目id
+     */
+    @ApiModelProperty(value = "项目id")
+    private Long projectId;
+    /**
+     * 合同段id
+     */
+    @ApiModelProperty(value = "合同段id")
+    private Long contractId;
+    /**
+     * 合同计量单元id
+     */
+    @ApiModelProperty(value = "合同计量单元id")
+    private Long contractUnitId;
+    /**
+     * 合同计量期id
+     */
+    @ApiModelProperty(value = "合同计量期id")
+    private Long contractPeriodId;
+    /**
+     * 计量单编号
+     */
+    @ApiModelProperty(value = "计量单编号")
+    private String meterNumber;
+    /**
+     * 业务日期
+     */
+    @ApiModelProperty(value = "业务日期")
+    private LocalDate businessDate;
+    /**
+     * 工程划分
+     */
+    @ApiModelProperty(value = "工程划分")
+    private String engineerDivide;
+    /**
+     * 部位名称
+     */
+    @ApiModelProperty(value = "部位名称")
+    private String partName;
+    /**
+     * 交工证书编号
+     */
+    @ApiModelProperty(value = "交工证书编号")
+    private String certificateNumber;
+    /**
+     * 计量金额
+     */
+    @ApiModelProperty(value = "计量金额")
+    private BigDecimal meterMoney;
+    /**
+     * 收方单id
+     */
+    @ApiModelProperty(value = "收方单id")
+    private Long debitFormId;
+    /**
+     * 变更令id
+     */
+    @ApiModelProperty(value = "变更令id")
+    private Long changeTokenId;
+    /**
+     * 图片地址
+     */
+    @ApiModelProperty(value = "图片地址")
+    private String pictureUrl;
+    /**
+     * 计算式
+     */
+    @ApiModelProperty(value = "计算式")
+    private String calculateFormula;
+
+
+}

+ 89 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/PayCertificatePayItem.java

@@ -0,0 +1,89 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+import io.swagger.annotations.ApiModelProperty;
+import org.springblade.core.mp.base.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 合同中期支付证书	与合同中期支付项	中间表实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@TableName("s_pay_certificate_pay_item")
+@EqualsAndHashCode(callSuper = true)
+public class PayCertificatePayItem extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 项目id
+     */
+    @ApiModelProperty(value = "项目id")
+    private Long projectId;
+    /**
+     * 合同段id
+     */
+    @ApiModelProperty(value = "合同段id")
+    private Long contractId;
+    /**
+     * 中期支付证书id
+     */
+    @ApiModelProperty(value = "中期支付证书id")
+    private Long payStatementId;
+    /**
+     * 中期支付项id
+     */
+    @ApiModelProperty(value = "中期支付项id")
+    private Long payItemId;
+    /**
+     * 合同金额
+     */
+    @ApiModelProperty(value = "合同金额")
+    private BigDecimal contractMoney;
+    /**
+     * 变更后金额
+     */
+    @ApiModelProperty(value = "变更后金额")
+    private BigDecimal changeMoney;
+    /**
+     * 本期未累计完成
+     */
+    @ApiModelProperty(value = "本期未累计完成")
+    private BigDecimal currentUnfinished;
+    /**
+     * 上期未累计完成
+     */
+    @ApiModelProperty(value = "上期未累计完成")
+    private BigDecimal lastUnfinished;
+    /**
+     * 本期完成
+     */
+    @ApiModelProperty(value = "本期完成")
+    private BigDecimal currentFinished;
+
+
+}

+ 90 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/StartPayMeterForm.java

@@ -0,0 +1,90 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+import io.swagger.annotations.ApiModelProperty;
+import org.springblade.core.mp.base.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 开工预付款计量单实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@TableName("s_start_pay_meter_form")
+@EqualsAndHashCode(callSuper = true)
+public class StartPayMeterForm extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 项目id
+     */
+    @ApiModelProperty(value = "项目id")
+    private Long projectId;
+    /**
+     * 合同段id
+     */
+    @ApiModelProperty(value = "合同段id")
+    private Long contractId;
+    /**
+     * 计量期id,s_meter_period
+     */
+    @ApiModelProperty(value = "计量期id,s_meter_period")
+    private Long meterPeriodId;
+    /**
+     * 业务日期
+     */
+    @ApiModelProperty(value = "业务日期")
+    private LocalDate businessDate;
+    /**
+     * 计量金额
+     */
+    @ApiModelProperty(value = "计量金额")
+    private BigDecimal meterMoney;
+    /**
+     * 审批状态
+     */
+    @ApiModelProperty(value = "审批状态")
+    private Integer approveStatus;
+    /**
+     * 开工预付款总额
+     */
+    @ApiModelProperty(value = "开工预付款总额")
+    private BigDecimal startPayAmount;
+    /**
+     * 申请依据
+     */
+    @ApiModelProperty(value = "申请依据")
+    private String applyCause;
+    /**
+     * 排序
+     */
+    @ApiModelProperty(value = "排序")
+    private Integer sort;
+
+
+}

+ 78 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/StatementFileForm.java

@@ -0,0 +1,78 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+
+import io.swagger.annotations.ApiModelProperty;
+import org.springblade.core.mp.base.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 报表文件表实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@TableName("s_statement_file_form")
+@EqualsAndHashCode(callSuper = true)
+public class StatementFileForm extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 项目id
+     */
+    @ApiModelProperty(value = "项目id")
+    private Long projectId;
+    /**
+     * 合同段id
+     */
+    @ApiModelProperty(value = "合同段id")
+    private Long contractId;
+    /**
+     * 报表id
+     */
+    @ApiModelProperty(value = "报表id")
+    private Long statementId;
+    /**
+     * 报表类型:1中期支付2材料3看开工
+     */
+    @ApiModelProperty(value = "报表类型:1中期支付2材料3看开工")
+    private Integer type;
+    /**
+     * 报表名称
+     */
+    @ApiModelProperty(value = "报表名称")
+    private String statementName;
+    /**
+     * 报表pdf路径
+     */
+    @ApiModelProperty(value = "报表pdf路径")
+    private String statementPdfUrl;
+    /**
+     * 排序
+     */
+    @ApiModelProperty(value = "排序")
+    private Integer sort;
+
+
+}

+ 4 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/test.java

@@ -0,0 +1,4 @@
+package org.springblade.meter.entity;
+
+public class test {
+}

+ 4 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/feign/test.java

@@ -0,0 +1,4 @@
+package org.springblade.meter.feign;
+
+public class test {
+}

+ 34 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/AttachmentFormVO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.vo;
+
+import org.springblade.meter.entity.AttachmentForm;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 附件表视图实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class AttachmentFormVO extends AttachmentForm {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ChangeTokenFormVO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.vo;
+
+import org.springblade.meter.entity.ChangeTokenForm;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 变更令表视图实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ChangeTokenFormVO extends ChangeTokenForm {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ChangeTokenInventoryVO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.vo;
+
+import org.springblade.meter.entity.ChangeTokenInventory;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 变更令与合同工程清单	中间表视图实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ChangeTokenInventoryVO extends ChangeTokenInventory {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ChangeTokenMeterVO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.vo;
+
+import org.springblade.meter.entity.ChangeTokenMeter;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 变更令与合同计量单元	中间表视图实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ChangeTokenMeterVO extends ChangeTokenMeter {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ContractInventoryFormVO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.vo;
+
+import org.springblade.meter.entity.ContractInventoryForm;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 合同工程清单表视图实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ContractInventoryFormVO extends ContractInventoryForm {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ContractMaterialVO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.vo;
+
+import org.springblade.meter.entity.ContractMaterial;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 合同材料表视图实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ContractMaterialVO extends ContractMaterial {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ContractMeterPeriodVO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.vo;
+
+import org.springblade.meter.entity.ContractMeterPeriod;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 合同计量期表视图实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ContractMeterPeriodVO extends ContractMeterPeriod {
+	private static final long serialVersionUID = 1L;
+
+}

+ 61 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/FormTreeVO.java

@@ -0,0 +1,61 @@
+package org.springblade.meter.vo;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.tool.node.INode;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Param
+ * @Author wangwl
+ * @Date 2023/11/29 15:25
+ **/
+@Data
+public class FormTreeVO implements INode<FormTreeVO> {
+
+    /**
+     * 主键ID
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    /**
+     * 父节点ID
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long parentId;
+
+    /**
+     * 子孙节点
+     */
+    @JsonInclude(JsonInclude.Include.NON_EMPTY)
+    private List<FormTreeVO> children;
+
+    /**
+     * 是否有子孙节点
+     */
+    @JsonInclude(JsonInclude.Include.NON_EMPTY)
+    private Boolean hasChildren;
+
+    @Override
+    public List<FormTreeVO> getChildren() {
+        if (this.children == null) {
+            this.children = new ArrayList<>();
+        }
+        return this.children;
+    }
+
+    @ApiModelProperty(value = "ture有子节点,false没有子节点")
+    private Boolean hasChild;
+
+    @ApiModelProperty(value = "清单名称")
+    private String formName;
+
+
+}

+ 34 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/InterimPayCertificateVO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.vo;
+
+import org.springblade.meter.entity.InterimPayCertificate;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 中期支付证书视图实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class InterimPayCertificateVO extends InterimPayCertificate {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/InventoryFormApplyVO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.vo;
+
+import org.springblade.meter.entity.InventoryFormApply;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 工程清单与中间计量申请	中间表视图实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class InventoryFormApplyVO extends InventoryFormApply {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/InventoryFormMeterVO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.vo;
+
+import org.springblade.meter.entity.InventoryFormMeter;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 工程清单与合同计量单元	中间表视图实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class InventoryFormMeterVO extends InventoryFormMeter {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/MaterialMeterFormVO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.vo;
+
+import org.springblade.meter.entity.MaterialMeterForm;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 材料计量单视图实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class MaterialMeterFormVO extends MaterialMeterForm {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/MaterialStartStatementVO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.vo;
+
+import org.springblade.meter.entity.MaterialStartStatement;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 材料和开工报表视图实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class MaterialStartStatementVO extends MaterialStartStatement {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/MeterPeriodVO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.vo;
+
+import org.springblade.meter.entity.MeterPeriod;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 材料开工计量期表视图实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class MeterPeriodVO extends MeterPeriod {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/MiddleMeterApplyVO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.vo;
+
+import org.springblade.meter.entity.MiddleMeterApply;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 中间计量申请表视图实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class MiddleMeterApplyVO extends MiddleMeterApply {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/PayCertificatePayItemVO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.vo;
+
+import org.springblade.meter.entity.PayCertificatePayItem;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 合同中期支付证书	与合同中期支付项	中间表视图实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PayCertificatePayItemVO extends PayCertificatePayItem {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/StartPayMeterFormVO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.vo;
+
+import org.springblade.meter.entity.StartPayMeterForm;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 开工预付款计量单视图实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class StartPayMeterFormVO extends StartPayMeterForm {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/StatementFileFormVO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.vo;
+
+import org.springblade.meter.entity.StatementFileForm;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 报表文件表视图实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class StatementFileFormVO extends StatementFileForm {
+	private static final long serialVersionUID = 1L;
+
+}

+ 4 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/test.java

@@ -0,0 +1,4 @@
+package org.springblade.meter.vo;
+
+public class test {
+}

+ 1 - 0
blade-service-api/pom.xml

@@ -27,6 +27,7 @@
         <module>blade-archive-api</module>
         <module>blade-control-api</module>
         <module>blade-land-api</module>
+        <module>blade-meter-api</module>
     </modules>
 
     <dependencies>

+ 3 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveProjectConfigController.java

@@ -35,7 +35,9 @@ public class ArchiveProjectConfigController {
 
         archiveProjectConfig.setProjectType(config.getProjectType());
         archiveProjectConfig.setFactorType(config.getFactorType());
-
+        archiveProjectConfig.setIndexType(config.getIndexType());
+        archiveProjectConfig.setDirType(config.getDirType());
+        archiveProjectConfig.setIndexNum(config.getIndexNum());
         boolean result = archiveProjectConfigService.updateById(archiveProjectConfig);
         return R.status(result);
     }

+ 88 - 8
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -1770,10 +1770,8 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 
 		Integer indexType = 0;
 		ArchiveProjectConfig config = archiveProjectConfigService.getByProjectIdOrNew(projectId);
-		if (config!= null && config.bAutoIndexLen4()) {
-			indexType = 1;
-		}
-		this.refreshFileNumberNoSlipt(list,contractId,nodeId,bforce,indexType);
+
+		this.refreshFileNumberNoSlipt(list,contractId,nodeId,bforce,config.getIndexType(),config.getDirType(),config.getIndexNum());
 	}
 
 	/**
@@ -1782,11 +1780,19 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 	 * @param contractId
 	 * @param nodeId
 	 */
-	public void refreshFileNumberNoSlipt(List<ArchiveTreeContract> archiveTreeContracts,Long contractId,Long nodeId,boolean bforce,Integer indexType) {
+	public void refreshFileNumberNoSlipt(List<ArchiveTreeContract> archiveTreeContracts,Long contractId,Long nodeId,
+										 boolean bforce,Integer indexType, Integer dirType,Integer indexNum) {
 
 		List<ArchiveTreeContractVO2> subTreeList = new ArrayList<>();
 		List<List<ArchiveTreeContract>>  subGroupedList = new ArrayList<>();
-		ArchiveTreeUtil.getGroupedList(archiveTreeContracts,subTreeList,subGroupedList);
+
+
+		if (dirType == 1) {
+			ArchiveTreeUtil.getGroupedListSub(archiveTreeContracts,subTreeList,subGroupedList);
+		}else {
+			ArchiveTreeUtil.getGroupedList(archiveTreeContracts,subTreeList,subGroupedList);
+		}
+
 		Integer index = 1;
 
 		List<ArchivesAuto> changeList = new ArrayList<>();
@@ -1795,7 +1801,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		for (List<ArchiveTreeContract> subList: subGroupedList) {
 
 			//根据 authFilter函数过滤
-			subList = authFilter(subList,contractId,nodeId);
+			subList = authFilterNum(subList,contractId,nodeId);
 			List<Long> ids = subList.stream()
 					.map(ArchiveTreeContract::getId)
 					.collect(Collectors.toList());
@@ -1840,7 +1846,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 
 				String fileNumber = fileNumberPrefix +"_"+ index;
 				if (indexType == 1) {
-					String formattedIndex = String.format("%04d", index);
+					String formattedIndex = String.format("%0" + indexNum + "d", index);
 					fileNumber = fileNumberPrefix + "_" + formattedIndex;
 				}
 				if (bforce) {
@@ -2145,6 +2151,79 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 			return archiveTreeContracts;
 		}
 
+		for (ArchiveTreeContract contract : archiveTreeContracts) {
+			if (StringUtils.isEmpty(treeCode)) {
+				//业主合同段时treeCode为空串
+				if(StringUtils.isNotEmpty(nodeId)){
+					//如果还选择了节点
+					if (StringUtils.isNotEmpty(contract.getAncestors()) && contract.getAncestors().contains(nodeId)) {
+						result.add(contract);
+					}
+				}else{
+					if (StringUtils.isEmpty(contract.getTreeCode()) || contractId.toString().equals(contract.getTreeCode())  || contractId.equals(contract.getContractId())) {
+						result.add(contract);
+					}
+				}
+			} else {
+				if (treeCode.equals(contract.getTreeCode()) || contractId.toString().equals(contract.getTreeCode()) || contractId.equals(contract.getContractId())) {
+					if(StringUtils.isNotEmpty(nodeId)){
+						//如果还选择了节点
+						if (StringUtils.isNotEmpty(contract.getAncestors()) && contract.getAncestors().contains(nodeId)) {
+							result.add(contract);
+						}
+					}else{
+						result.add(contract);
+					}
+				}
+			}
+		}
+
+		return result;
+	}
+
+	/**
+	 * 带权限筛选的档案列表筛选函数
+	 * 规则,1. 合同段ID为空,则不过滤
+	 *      2. 业主或者管理员,treeCode为空,则按照nodeid过滤,nodeid为空,则不过滤
+	 *      3. 合同段用户,安装找contractId过滤,过滤该合同段所有节点。
+	 * @param archiveTreeContracts 档案列表archiveTreeContracts
+	 * @param contractId 合同编号,用于获取权限码
+	 * @param nodeId 筛选条件:节点编号
+	 * @return 符合条件的档案列表
+	 */
+	public List<ArchiveTreeContract> authFilterNum(List<ArchiveTreeContract> archiveTreeContracts, Long contractId, Long nodeId) {
+		//合同段ID为空则全部返回
+		if (contractId == null) {
+			return  archiveTreeContracts;
+		}
+
+		String treeCode = getAuthCode(contractId);
+		String strNodeId = "";
+		if (nodeId!= null) {
+			ArchiveTreeContract node = archiveTreeContractClient.getArchiveTreeContractById(nodeId);
+			strNodeId  = nodeId.toString();
+			if(node.getContractId()==null || node.getContractId()==-1){
+				treeCode="";
+			}
+		}
+
+		return archiveTreeContractFilterNum(archiveTreeContracts, treeCode, strNodeId,contractId);
+	}
+
+	/**
+	 * 对档案列表进行筛选
+	 * @param archiveTreeContracts 档案列表
+	 * @param treeCode 筛选条件:权限码
+	 * @param nodeId 筛选条件:节点编号
+	 * @return 符合条件的档案列表
+	 */
+	public List<ArchiveTreeContract> archiveTreeContractFilterNum(List<ArchiveTreeContract> archiveTreeContracts, String treeCode, String nodeId,Long contractId) {
+		List<ArchiveTreeContract> result = new ArrayList<>();
+
+		if (contractId==null) {
+			return archiveTreeContracts;
+		}
+
 		for (ArchiveTreeContract contract : archiveTreeContracts) {
 			if (StringUtils.isEmpty(treeCode)) {
 				//业主合同段时treeCode为空串
@@ -2168,6 +2247,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		return result;
 	}
 
+
 	public void test(){
 		String ids = "1654406079229165569";
 

+ 57 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/utils/ArchiveTreeUtil.java

@@ -72,4 +72,61 @@ public class ArchiveTreeUtil {
         }
     }
 
+    /**
+     * 得到分组,
+     *
+     * @param arList
+     * @param subTreeList    建设单位,施工单位各个合同段,监理单位各个合同段,电子档案的子节点这一层
+     * @param subGroupedList
+     */
+    public static void getGroupedListSub(List<ArchiveTreeContract> arList,
+                                      List<ArchiveTreeContractVO2> subTreeList, List<List<ArchiveTreeContract>> subGroupedList) {
+        List<ArchiveTreeContractVO2> voList = new ArrayList();
+        Map<Long, ArchiveTreeContract> map = new LinkedHashMap<>();
+
+
+        for (ArchiveTreeContract archiveTreeContract : arList) {
+            ArchiveTreeContractVO2 archiveTreeContractVO2 = new ArchiveTreeContractVO2(archiveTreeContract);
+            voList.add(archiveTreeContractVO2);
+            map.put(archiveTreeContract.getId(), archiveTreeContract);
+        }
+
+        List<ArchiveTreeContractVO2> trees = ForestNodeMergerEx.merge(voList);
+        if (trees == null || trees.size() == 0) {
+            return;
+        }
+        ArchiveTreeContractVO2 tree = trees.get(0);
+
+        for (ArchiveTreeContractVO2 subTree : tree.getChildren()) {
+            if (StringUtils.isEmpty(subTree.getTreeCode())) {
+                //同步
+                subTreeList.addAll(subTree.getChildren());
+
+            } else {
+                if (subTree.getChildren() == null || subTree.getChildren().size() == 0) {
+                    continue;
+                }
+                if (subTree.getChildren().get(0).getExtType() == 2) {
+                    for (ArchiveTreeContractVO2 contractNode : subTree.getChildren()) {
+                        subTreeList.addAll(contractNode.getChildren());
+                    }
+                } else {
+                    subTreeList.addAll(subTree.getChildren());
+                }
+
+            }
+        }
+
+        for (ArchiveTreeContractVO2 subTree : subTreeList) {
+            List<ArchiveTreeContractVO2> tmpList = new ArrayList();
+            List<ArchiveTreeContract> groupList = new ArrayList();
+            ForestNodeMergerEx.getTreeList(subTree, tmpList);
+            for (ArchiveTreeContractVO2 vo2 : tmpList) {
+                ArchiveTreeContract ar = map.get(vo2.getId());
+                groupList.add(ar);
+            }
+            subGroupedList.add(groupList);
+        }
+    }
+
 }

+ 5 - 2
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -1370,7 +1370,7 @@ public class InformationWriteQueryController extends BladeController {
     @PostMapping("/copyContractTreeNode")
     @ApiOperationSupport(order = 15)
     @ApiOperation(value = "复制节点(新)")
-    @TreeCodeUpdate(type =ArgType.PKD,value="#vo.needCopyPrimaryKeyId")
+    @TreeCodeUpdate(type = ArgType.PKD, value = "#vo.needCopyPrimaryKeyId")
     public R<Boolean> copyContractTreeNode(@RequestBody CopyContractTreeNodeVO vo) {
         //表单所属方
         String tabOwner = "";
@@ -2954,7 +2954,7 @@ public class InformationWriteQueryController extends BladeController {
     @PostMapping("/saveContractTreeNode")
     @ApiOperationSupport(order = 10)
     @ApiOperation(value = "新增节点及其子节点")
-    @TreeCodeUpdate(type=ArgType.CID,value = "#vo.contractId")
+    @TreeCodeUpdate(type = ArgType.CID, value = "#vo.contractId")
     public R<Boolean> saveContractTreeNode(@RequestBody AddContractTreeNodeVO vo) {
         //先获取当前节点的信息
         WbsTreeContract treeContract = this.wbsTreeContractClient.getContractWbsTreeByPrimaryKeyId(Long.parseLong(vo.getCurrentNodePrimaryKeyId()));
@@ -3563,6 +3563,9 @@ public class InformationWriteQueryController extends BladeController {
         //查询当前节点下的所有填报节点
         WbsTreeContract node = this.wbsTreeContractClient.getContractWbsTreeByPrimaryKeyId(vo.getWbsId());
         if (node == null) {
+            if (StringUtils.isEmpty(vo.getContractIdRelation())) {
+                return null;
+            }
             //这一步主要是为了兼容监理合同段
             node = this.wbsTreeContractClient.getContractWbsTreeByContractIdAndId(vo.getWbsId(), Long.parseLong(vo.getContractIdRelation()));
         }

+ 3 - 3
blade-service/blade-business/src/main/java/org/springblade/business/controller/TaskController.java

@@ -706,8 +706,8 @@ public class TaskController extends BladeController {
                                     dto.setProjectAndUserList(list);
                                     //单个保存专家信息
                                     R<Boolean> booleanR = userClient.saveUserDTO(dto);
-                                    if (booleanR.getData() == null ||  booleanR.getData() != true){
-                                        throw new ServiceException("保存专家账号失败");
+                                    if (booleanR.getData() == null ||  booleanR.isSuccess() != true){
+                                        throw new ServiceException(booleanR.getMsg());
                                     }
                                 }
                                 //修改档案类型
@@ -715,7 +715,7 @@ public class TaskController extends BladeController {
                                 if (StringUtils.isNotBlank(archiveIds)){
                                     List<Long> longs = Func.toLongList(archiveIds);
                                     R<Boolean> booleanR = archiveClient.batchUpdateIsApply(1, longs);
-                                    if (booleanR.getData() == null || booleanR.getData() != true){
+                                    if (booleanR.getData() == null || booleanR.isSuccess() != true){
                                         throw new ServiceException("修改档案类型失败");
                                     }
                                 }

+ 12 - 5
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractServiceImpl.java

@@ -1439,13 +1439,20 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 		if (one == null){
 			throw new ServiceException("未找到当前项目首节点");
 		}
-		Long userId = AuthUtil.getUserId();
-		//判断是否存在当前专家id
-		if (StringUtil.isNotBlank(one.getExpertId()) && one.getExpertId().contains(userId+"")){
-			return false;
+		BladeUser user = AuthUtil.getUser();
+		String roleId = user.getRoleId();
+		//判断当前用户是否为专家
+		if (roleId.contains("1656191696348082177") || roleId.contains("1656191770880864257")){
+			//判断是否存在当前专家id
+			if (StringUtil.isNotBlank(one.getExpertId()) && one.getExpertId().contains(user.getUserId()+"")){
+				return false;
+			}else {
+				return true;
+			}
 		}else {
-			return true;
+			throw new ServiceException("当前用户不是专家,不能抽检");
 		}
+
 	}
 
 

+ 51 - 33
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractSyncImpl.java

@@ -508,38 +508,42 @@ public class ArchiveTreeContractSyncImpl {
                 }
 
 
-                //归档文件里没有则新增
-                if ( archiveFile == null) {
-                    if (sort!= null) {
-                        info.setSort(sort);
+                try {
+                    //归档文件里没有则新增
+                    if ( archiveFile == null) {
+                        if (sort!= null) {
+                            info.setSort(sort);
+                        }
+                        newInformationQueryList.add(info);
+                    }//文件不同,则说明重签过,需要更新,顺序不同也更新
+                    else  if (info.getEVisaPdfUrl() != null && !info.getEVisaPdfUrl().equals(archiveFile.getPdfFileUrl())
+                            || sort != null && !sort.equals(archiveFile.getSort())) {
+
+                        if (updateMap.get(archiveFile.getId())!= null) {
+                            continue;
+                        }
+
+                        if (StringUtils.isEmpty(info.getEVisaPdfUrl())) {
+                            continue;
+                        }
+
+                        //需要更新的
+                        //todo 后续需增加判断已组件或者锁定的不要更新?
+                        archiveFile.setPdfFileUrl(info.getEVisaPdfUrl());
+                        archiveFile.setEVisaFile(info.getEVisaPdfUrl());
+
+                        archiveFile.setFilePage(info.getEVisaPdfPage());
+                        archiveFile.setFileSize(info.getEVisaPdfSize());
+                        archiveFile.setIsCertification(1);
+                        archiveFile.setCertificationTime(info.getBusinessTime());
+                        archiveFile.setFileTime(info.getBusinessTime());
+                        archiveFile.setSort(sort);
+                        updateArchiveFiles.add(archiveFile);
+
+                        updateMap.put(archiveFile.getId(),"1");
                     }
-                    newInformationQueryList.add(info);
-                }//文件不同,则说明重签过,需要更新,顺序不同也更新
-                else if (!archiveFile.getPdfFileUrl().equals(info.getEVisaPdfUrl())
-                        || (!sort.equals(archiveFile.getSort()))) {
-
-                    if (updateMap.get(archiveFile.getId())!= null) {
-                        continue;
-                    }
-
-                    if (StringUtils.isEmpty(info.getEVisaPdfUrl())) {
-                        continue;
-                    }
-
-                    //需要更新的
-                    //todo 后续需增加判断已组件或者锁定的不要更新?
-                    archiveFile.setPdfFileUrl(info.getEVisaPdfUrl());
-                    archiveFile.setEVisaFile(info.getEVisaPdfUrl());
-
-                    archiveFile.setFilePage(info.getEVisaPdfPage());
-                    archiveFile.setFileSize(info.getEVisaPdfSize());
-                    archiveFile.setIsCertification(1);
-                    archiveFile.setCertificationTime(info.getBusinessTime());
-                    archiveFile.setFileTime(info.getBusinessTime());
-                    archiveFile.setSort(sort);
-                    updateArchiveFiles.add(archiveFile);
-
-                    updateMap.put(archiveFile.getId(),"1");
+                } catch (Exception e) {
+                    e.printStackTrace();
                 }
             }
         }
@@ -652,14 +656,28 @@ public class ArchiveTreeContractSyncImpl {
         archiveFile.setStatus(2); // 这里是新增归档文件,所以状态为1(已完成)
         //TODO 文件题名规则,待补充
         archiveFile.setFileName(query.getName());
-        archiveFile.setFileTime(query.getBusinessTime());
+
+        String businessTime = query.getBusinessTime();
+
+        if (businessTime == null || "null".equals(businessTime)) {
+            archiveFile.setFileTime(null);
+        } else if (businessTime.length() > 10) {
+            String[] dates = businessTime.split("[,、]");
+            if (dates.length > 0) {
+                archiveFile.setFileTime(dates[0]);
+            } else {
+                archiveFile.setFileTime(null);
+            }
+        } else {
+            archiveFile.setFileTime(businessTime);
+        }
 
         archiveFile.setSourceType(1);
         archiveFile.setIsArchive(0);
 
         //设置认证
         archiveFile.setIsCertification(1);
-        archiveFile.setCertificationTime(query.getBusinessTime());
+        archiveFile.setCertificationTime(archiveFile.getFileTime());
 
         //责任人怎么取
         archiveFile.setDutyUser(contractIndfo.archivesUnit());

+ 6 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeServiceImpl.java

@@ -88,7 +88,12 @@ public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, A
             throw new ServiceException("根节点已存在,请先删除后再进行初始化");
         }
 
-        List<ArchiveTree> sysTrees = this.treeList(AuthUtil.getTenantId(), 0L, null, null);
+        String tenantId = AuthUtil.getTenantId();
+        if (StringUtils.isEmpty(tenantId)) {
+            tenantId = BladeConstant.ADMIN_TENANT_ID;
+        }
+
+        List<ArchiveTree> sysTrees = this.treeList(tenantId, 0L, null, null);
         if (sysTrees == null || sysTrees.size() == 0) {
             return false;
         }

+ 142 - 23
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -57,7 +57,7 @@ import javax.servlet.http.HttpServletRequest;
 import java.io.*;
 import java.math.BigInteger;
 import java.util.*;
-import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.*;
 import java.util.function.Function;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -68,6 +68,11 @@ import java.util.stream.Stream;
 @AllArgsConstructor
 public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractMapper, WbsTreeContract> implements IWbsTreeContractService {
 
+    static {
+        /*parallelStream并行流粒度*/
+        System.setProperty("java.util.concurrent.ForkJoinPool.common.parallelism", "4");
+    }
+
     private static final Logger logger = LoggerFactory.getLogger(WbsTreeContractServiceImpl.class);
     private final ConstructionLedgerFeignClient constructionLedgerFeign;
     private final WbsTreePrivateMapper wbsTreePrivateMapper;
@@ -732,13 +737,26 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
             if (contractInfo != null) {
                 /*施工合同段*/
                 if (new Integer(1).equals(contractInfo.getContractType())) {
-                    //获取本地缓存节点信息
-                    List<WbsTreeContractLazyVO> nodesAll = this.getNodeAll(contractId);
-
                     //获取当前层懒加载节点
                     String sql = "select p_key_id,contract_id,(SELECT id FROM u_contract_tree_drawings where process_id = p_key_id and is_deleted = 0 limit 1) AS drawingsId,id,parent_id,node_type,type,wbs_type,is_concrete,major_data_type,partition_code,old_id,contract_id_relation,is_concealed_works_node,CASE (SELECT count(1) FROM u_tree_contract_first AS tcf WHERE tcf.is_deleted = 0 AND tcf.wbs_node_id = a.p_key_id) WHEN 0 THEN 'false' ELSE 'true' END AS isFirst,IFNULL(if(length(trim(full_name))>0,full_name,node_name),node_name) AS title,(SELECT CASE WHEN count(1) > 0 THEN 1 ELSE 0 END FROM m_wbs_tree_contract b WHERE b.parent_id = a.id AND b.type = 1 and b.status = 1 AND b.contract_id = " + contractId + " AND b.is_deleted = 0 ) AS hasChildren from m_wbs_tree_contract a where a.node_type != 111 and a.type = 1 and a.status = 1 and a.is_deleted = 0 and parent_id = " + (StringUtils.isNotEmpty(id) ? id : 0) + " and contract_id = " + contractId + " ORDER BY a.sort,title,a.create_time";
                     List<WbsTreeContractLazyVO> lazyNodes = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(WbsTreeContractLazyVO.class));
-                    if (lazyNodes.size() > 0 && nodesAll.size() > 0) {
+                    if (lazyNodes.size() > 0) {
+
+                        /*根节点直接返回*/
+                        if (lazyNodes.stream().anyMatch(f -> f.getParentId().equals(0L))) {
+                            for (WbsTreeContractLazyVO lazyNode : lazyNodes) {
+                                lazyNode.setSubmitCounts(0);
+                                lazyNode.setColorStatus(2);
+                                lazyNode.setType(lazyNode.getNodeType());
+                                lazyNode.setNotExsitChild(!lazyNode.getHasChildren().equals(1));
+                                lazyNode.setPrimaryKeyId(lazyNode.getPKeyId());
+                                lazyNode.setTitle(contractInfo.getContractName());
+                            }
+                            return lazyNodes;
+                        }
+
+                        //获取本地缓存节点信息
+                        List<WbsTreeContractLazyVO> nodesAll = this.getNodeAll(contractId);
                         List<WbsTreeContractLazyVO> distinctNodesAll = nodesAll.stream()
                                 .collect(Collectors.collectingAndThen(
                                         Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(WbsTreeContractLazyVO::getPKeyId))),
@@ -765,6 +783,13 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                         //获取本地缓存节点数量统计
                         List<WbsTreeContractLazyVO> resultParentNodesTB = this.getCachedParentCountNodes(contractId, lowestNodeParentIdsTB, nodesAll, tableOwner);
 
+                        /*List<WbsTreeContractLazyVO> resultParentNodesTB = new ArrayList<>();
+                        long startTime1 = System.currentTimeMillis();
+                        this.recursiveGetParentNodes(resultParentNodesTB, lowestNodeParentIdsTB, nodesAll);
+                        long endTime1 = System.currentTimeMillis();
+                        long executionTime1 = endTime1 - startTime1;
+                        logger.info("合同段 " + contractId + " wbs节点树 数量计算 耗时:" + executionTime1 + " ms");*/
+
                         //最底层节点颜色构造后Map
                         Map<Long, WbsTreeContractLazyVO> lowestNodesMap = lowestNodesTB.stream()
                                 .peek(vo -> {
@@ -795,7 +820,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                         Map<Long, Integer> nodeColorStatusMap = nodeVOS.stream().collect(Collectors.toMap(NodeVO::getPKeyId, NodeVO::getStatus, (existing, replacement) -> existing));
                         long endTime = System.currentTimeMillis();
                         long executionTime = endTime - startTime;
-                        logger.info("处理颜色执行时间:" + executionTime + " ms");
+                        logger.info("合同段 " + contractId + " 处理颜色 执行时间:" + executionTime + " ms");
 
                         /*处理最终结果集*/
                         if (lazyNodes.size() > 0) {
@@ -861,10 +886,23 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                     for (String sgContractId : contractIds) {
                         ContractInfo sgContractInfo = jdbcTemplate.query("select contract_name from m_contract_info where id = " + sgContractId, new BeanPropertyRowMapper<>(ContractInfo.class)).stream().findAny().orElse(null);
                         if (sgContractInfo != null) {
-                            List<WbsTreeContractLazyVO> nodesAll = this.getNodeAll(sgContractId);
-
                             List<WbsTreeContractLazyVO> lazyNodes = jdbcTemplate.query("select p_key_id,contract_id,(SELECT id FROM u_contract_tree_drawings where process_id = p_key_id and is_deleted = 0 limit 1) AS drawingsId,id,parent_id,node_type,type,wbs_type,major_data_type,partition_code,old_id,contract_id_relation,is_concealed_works_node,CASE (SELECT count(1) FROM u_tree_contract_first AS tcf WHERE tcf.is_deleted = 0 AND tcf.wbs_node_id = a.p_key_id) WHEN 0 THEN 'false' ELSE 'true' END AS isFirst,IFNULL(if(length(trim(full_name))>0,full_name,node_name),node_name) AS title,(SELECT CASE WHEN count(1) > 0 THEN 1 ELSE 0 END FROM m_wbs_tree_contract b WHERE b.parent_id = a.id AND  b.type = 1 and b.status = 1 AND b.contract_id = " + sgContractId + " AND b.is_deleted = 0 ) AS hasChildren from m_wbs_tree_contract a where a.node_type != 111 and a.type = 1 and a.status = 1 and a.is_deleted = 0 and parent_id = " + (StringUtils.isNotEmpty(id) ? id : 0) + " and contract_id = " + sgContractId + " ORDER BY a.sort,title,a.create_time", new BeanPropertyRowMapper<>(WbsTreeContractLazyVO.class));
-                            if (lazyNodes.size() > 0 && nodesAll.size() > 0) {
+                            if (lazyNodes.size() > 0) {
+
+                                if (lazyNodes.stream().anyMatch(f -> f.getParentId().equals(0L))) {
+                                    for (WbsTreeContractLazyVO lazyNode : lazyNodes) {
+                                        lazyNode.setSubmitCounts(0);
+                                        lazyNode.setColorStatus(2);
+                                        lazyNode.setType(lazyNode.getNodeType());
+                                        lazyNode.setNotExsitChild(!lazyNode.getHasChildren().equals(1));
+                                        lazyNode.setPrimaryKeyId(lazyNode.getPKeyId());
+                                        lazyNode.setContractIdRelation(sgContractId);
+                                        lazyNode.setTitle(sgContractInfo.getContractName());
+                                    }
+                                    return lazyNodes;
+                                }
+
+                                List<WbsTreeContractLazyVO> nodesAll = this.getNodeAll(sgContractId);
                                 List<WbsTreeContractLazyVO> distinctNodesAll = nodesAll.stream()
                                         .collect(Collectors.collectingAndThen(
                                                 Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(WbsTreeContractLazyVO::getPKeyId))),
@@ -964,21 +1002,43 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
         //获取本地缓存
         List<WbsTreeContractLazyVO> nodesAll = localCacheNodes.get(contractId);
 
-        if (nodesAll == null || nodesAll.size() == 0) {
+        if (nodesAll == null || nodesAll.isEmpty()) {
             //从Redis获取数据
             Object data = redisTemplate.opsForValue().get("blade-manager::contract:wbstree:" + contractId);
             if (data != null) {
                 nodesAll = JSON.parseArray(data.toString(), WbsTreeContractLazyVO.class);
                 //更新本地缓存
                 localCacheNodes.put(contractId, nodesAll);
-
             } else {
                 //返回数据库数据
                 long startTime = System.currentTimeMillis();
-                nodesAll = jdbcTemplate.query("select a.p_key_id,a.id,a.parent_id from m_wbs_tree_contract a where a.type = 1 and a.status = 1 and a.is_deleted = 0 and a.contract_id = " + contractId, new BeanPropertyRowMapper<>(WbsTreeContractLazyVO.class));
+
+                /*分页查询,每次5000条*/
+                int pageSize = 5000;
+                int pageNumber = 1;
+                int offset;
+
+                nodesAll = new ArrayList<>();
+                List<WbsTreeContractLazyVO> nodesAllPage;
+                do {
+                    offset = (pageNumber - 1) * pageSize;
+                    nodesAllPage = jdbcTemplate.query(
+                            "SELECT p_key_id, id, parent_id FROM m_wbs_tree_contract " +
+                                    "WHERE type = 1 " +
+                                    "AND status = 1 " +
+                                    "AND is_deleted = 0 " +
+                                    "AND contract_id = ? " +
+                                    "LIMIT ? OFFSET ?",
+                            new Object[]{contractId, pageSize, offset},
+                            new BeanPropertyRowMapper<>(WbsTreeContractLazyVO.class)
+                    );
+                    nodesAll.addAll(nodesAllPage);
+                    pageNumber++;
+                } while (nodesAllPage.size() == pageSize);
+
                 long endTime = System.currentTimeMillis();
                 long executionTime = endTime - startTime;
-                logger.info("查询合同段 " + contractId + " 所有树执行时间:" + executionTime + " ms");
+                logger.info("合同段 " + contractId + " 查询所有wbs节点 执行时间:" + executionTime + " ms");
 
                 if (nodesAll.size() > 0) {
                     //判断是否有子级,赋值
@@ -994,6 +1054,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                             vo.setHasChildren(0);
                         }
                     }
+
                     //存储到Redis中
                     JSONArray array = JSONArray.parseArray(JSON.toJSONString(nodesAll));
                     redisTemplate.opsForValue().set("blade-manager::contract:wbstree:" + contractId, JSON.toJSON(array).toString());
@@ -1006,7 +1067,6 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
         return nodesAll;
     }
 
-
     /**
      * 获取节点数量统计缓存
      *
@@ -1033,10 +1093,12 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                 /*重新计算,进行递归获取父节点计数统计*/
                 resultParentNodesTB = new ArrayList<>();
                 long startTime = System.currentTimeMillis();
+
                 this.recursiveGetParentNodes(resultParentNodesTB, lowestNodeParentIdsTB, nodesAll);
+
                 long endTime = System.currentTimeMillis();
                 long executionTime = endTime - startTime;
-                logger.info("节点树数量统计计算耗时:" + executionTime + " ms");
+                logger.info("合同段 " + contractId + " wbs节点树 数量计算 耗时:" + executionTime + " ms");
 
                 if (resultParentNodesTB.size() > 0) {
                     //存储到Redis中
@@ -1072,7 +1134,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
         //从Redis获取数据
         Object dataInformationQuery = redisTemplate.opsForValue().get("blade-manager::contract:wbstree:byInformationQuery:" + cacheKey);
 
-        List<WbsTreeContractLazyQueryInfoVO> queryInfoList;
+        List<WbsTreeContractLazyQueryInfoVO> queryInfoList = new ArrayList<>();
         if (dataInformationQuery != null) {
             queryInfoList = JSON.parseArray(dataInformationQuery.toString(), WbsTreeContractLazyQueryInfoVO.class);
             //更新本地缓存
@@ -1081,13 +1143,33 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
         } else {
             //返回数据库数据
             long startTime = System.currentTimeMillis();
-            String querySql = "select wbs_id,status from u_information_query where type = 1 and contract_id = " + contractId + " and classify = " + tableOwner;
-            queryInfoList = jdbcTemplate.query(querySql, new BeanPropertyRowMapper<>(WbsTreeContractLazyQueryInfoVO.class));
+
+            /*分页查询,每次5000条*/
+            int pageSize = 5000;
+            int pageNumber = 1;
+            int offset;
+
+            List<WbsTreeContractLazyQueryInfoVO> queryInfoListPage;
+
+            do {
+                offset = (pageNumber - 1) * pageSize;
+                queryInfoListPage = jdbcTemplate.query(
+                        "SELECT wbs_id, status FROM u_information_query " +
+                                "WHERE type = 1 " +
+                                "AND contract_id = ? " +
+                                "AND classify = ? " +
+                                "LIMIT ? OFFSET ?",
+                        new Object[]{contractId, tableOwner, pageSize, offset},
+                        new BeanPropertyRowMapper<>(WbsTreeContractLazyQueryInfoVO.class));
+                queryInfoList.addAll(queryInfoListPage);
+                pageNumber++;
+            } while (queryInfoListPage.size() == pageSize);
+
             long endTime = System.currentTimeMillis();
             long executionTime = endTime - startTime;
-            logger.info("合同段资料信息查询耗时:" + executionTime + " ms");
+            logger.info("合同段 " + contractId + " 查询所有资料信息 执行时间:" + executionTime + " ms");
 
-            if (!queryInfoList.isEmpty()) {
+            if (queryInfoList.size() > 0) {
                 JSONArray array = JSONArray.parseArray(JSON.toJSONString(queryInfoList));
 
                 //存储到Redis中
@@ -1479,7 +1561,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
      * @param lowestNodeParentIds 最底层节点ParentIds
      * @param nodesAll            所有节点
      */
-    public void recursiveGetParentNodes(List<WbsTreeContractLazyVO> result, List<Long> lowestNodeParentIds, List<WbsTreeContractLazyVO> nodesAll) {
+    /*public void recursiveGetParentNodes(List<WbsTreeContractLazyVO> result, List<Long> lowestNodeParentIds, List<WbsTreeContractLazyVO> nodesAll) {
         if (lowestNodeParentIds.isEmpty()) {
             return;
         }
@@ -1491,14 +1573,14 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
         //批量查询单次节点
         List<WbsTreeContractLazyVO> parentNodes = parentIdGroup.entrySet().parallelStream()
                 .filter(entry -> entry.getValue() == 1L)
-                .flatMap(entry -> nodesAll.parallelStream()
+                .flatMap(entry -> nodesAll.stream()
                         .filter(f -> entry.getKey().equals(f.getId())))
                 .collect(Collectors.toList());
 
         //批量查询多次节点
         List<WbsTreeContractLazyVO> multipleParentNodes = parentIdGroup.entrySet().parallelStream()
                 .filter(entry -> entry.getValue() > 1L)
-                .flatMap(entry -> nodesAll.parallelStream()
+                .flatMap(entry -> nodesAll.stream()
                         .filter(f -> entry.getKey().equals(f.getId()))
                         .limit(1)
                         .flatMap(node -> Collections.nCopies(entry.getValue().intValue(), node).stream()))
@@ -1514,6 +1596,39 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
             result.addAll(multipleParentNodes);
             this.recursiveGetParentNodes(result, collect, nodesAll);
         }
+    }*/
+    public void recursiveGetParentNodes(List<WbsTreeContractLazyVO> result, List<Long> lowestNodeParentIds, List<WbsTreeContractLazyVO> nodesAll) {
+        if (lowestNodeParentIds.isEmpty()) {
+            return;
+        }
+
+        Map<Long, Long> parentIdGroup = lowestNodeParentIds.stream()
+                .collect(Collectors.groupingByConcurrent(Function.identity(), Collectors.counting()));
+
+        List<WbsTreeContractLazyVO> collectedNodes = parentIdGroup.entrySet().parallelStream()
+                .flatMap(entry -> {
+                    List<WbsTreeContractLazyVO> nodes = nodesAll.stream()
+                            .filter(f -> entry.getKey().equals(f.getId()))
+                            .collect(Collectors.toList());
+
+                    if (entry.getValue() > 1L) {
+                        nodes = nodes.stream().limit(1)
+                                .flatMap(node -> Collections.nCopies(entry.getValue().intValue(), node).stream())
+                                .collect(Collectors.toList());
+                    }
+
+                    return nodes.stream();
+                })
+                .collect(Collectors.toList());
+
+        List<Long> collect = collectedNodes.stream()
+                .map(WbsTreeContractLazyVO::getParentId)
+                .collect(Collectors.toList());
+
+        if (!collect.isEmpty()) {
+            result.addAll(collectedNodes);
+            this.recursiveGetParentNodes(result, collect, nodesAll);
+        }
     }
 
     @Override
@@ -2677,6 +2792,10 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                 iterator_2.remove();
             }
         }
+
+        /*更新缓存,主动清理后,重新加载进本地缓存中*/
+        this.getNodeAll(contractId);
+
     }
 
 }

+ 32 - 0
blade-service/blade-meter/pom.xml

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>blade-service</artifactId>
+        <groupId>org.springblade</groupId>
+        <version>2.9.1.RELEASE</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>blade-meter</artifactId>
+    <name>${project.artifactId}</name>
+    <version>${blade.project.version}</version>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-meter-api</artifactId>
+            <version>${bladex.project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-core-boot</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-starter-swagger</artifactId>
+        </dependency>
+    </dependencies>
+
+</project>

+ 20 - 0
blade-service/blade-meter/src/main/java/org/springblade/MeterApplication.java

@@ -0,0 +1,20 @@
+package org.springblade;
+
+import org.springblade.common.constant.LauncherConstant;
+import org.springblade.core.cloud.feign.EnableBladeFeign;
+import org.springblade.core.launch.BladeApplication;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.cloud.client.SpringCloudApplication;
+import org.springframework.scheduling.annotation.EnableAsync;
+
+@EnableBladeFeign
+@SpringCloudApplication
+@EnableAsync
+@EnableCaching
+public class MeterApplication {
+
+    public static void main(String[] args) {
+        BladeApplication.run(LauncherConstant.APPLICATION_METER_NAME, MeterApplication.class, args);
+    }
+
+}

+ 117 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/AttachmentFormController.java

@@ -0,0 +1,117 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.meter.entity.AttachmentForm;
+import org.springblade.meter.service.IAttachmentFormService;
+import org.springblade.core.boot.ctrl.BladeController;
+
+/**
+ * 附件表 控制器
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/attachmentForm")
+@Api(value = "附件表", tags = "附件表接口")
+public class AttachmentFormController extends BladeController {
+
+	private final IAttachmentFormService attachmentFormService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入attachmentForm")
+	public R<AttachmentForm> detail(AttachmentForm attachmentForm) {
+		AttachmentForm detail = attachmentFormService.getOne(Condition.getQueryWrapper(attachmentForm));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 附件表
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入attachmentForm")
+	public R<IPage<AttachmentForm>> list(AttachmentForm attachmentForm, Query query) {
+		IPage<AttachmentForm> pages = attachmentFormService.page(Condition.getPage(query), Condition.getQueryWrapper(attachmentForm));
+		return R.data(pages);
+	}
+
+
+
+	/**
+	 * 新增 附件表
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入attachmentForm")
+	public R save(@Valid @RequestBody AttachmentForm attachmentForm) {
+		return R.status(attachmentFormService.save(attachmentForm));
+	}
+
+	/**
+	 * 修改 附件表
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入attachmentForm")
+	public R update(@Valid @RequestBody AttachmentForm attachmentForm) {
+		return R.status(attachmentFormService.updateById(attachmentForm));
+	}
+
+	/**
+	 * 新增或修改 附件表
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入attachmentForm")
+	public R submit(@Valid @RequestBody AttachmentForm attachmentForm) {
+		return R.status(attachmentFormService.saveOrUpdate(attachmentForm));
+	}
+
+	
+	/**
+	 * 删除 附件表
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "逻辑删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(attachmentFormService.deleteLogic(Func.toLongList(ids)));
+	}
+
+	
+}

+ 117 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/ChangeTokenFormController.java

@@ -0,0 +1,117 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.meter.entity.ChangeTokenForm;
+import org.springblade.meter.service.IChangeTokenFormService;
+import org.springblade.core.boot.ctrl.BladeController;
+
+/**
+ * 变更令表 控制器
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/changeTokenForm")
+@Api(value = "变更令表", tags = "变更令表接口")
+public class ChangeTokenFormController extends BladeController {
+
+	private final IChangeTokenFormService changeTokenFormService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入changeTokenForm")
+	public R<ChangeTokenForm> detail(ChangeTokenForm changeTokenForm) {
+		ChangeTokenForm detail = changeTokenFormService.getOne(Condition.getQueryWrapper(changeTokenForm));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 变更令表
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入changeTokenForm")
+	public R<IPage<ChangeTokenForm>> list(ChangeTokenForm changeTokenForm, Query query) {
+		IPage<ChangeTokenForm> pages = changeTokenFormService.page(Condition.getPage(query), Condition.getQueryWrapper(changeTokenForm));
+		return R.data(pages);
+	}
+
+
+
+	/**
+	 * 新增 变更令表
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入changeTokenForm")
+	public R save(@Valid @RequestBody ChangeTokenForm changeTokenForm) {
+		return R.status(changeTokenFormService.save(changeTokenForm));
+	}
+
+	/**
+	 * 修改 变更令表
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入changeTokenForm")
+	public R update(@Valid @RequestBody ChangeTokenForm changeTokenForm) {
+		return R.status(changeTokenFormService.updateById(changeTokenForm));
+	}
+
+	/**
+	 * 新增或修改 变更令表
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入changeTokenForm")
+	public R submit(@Valid @RequestBody ChangeTokenForm changeTokenForm) {
+		return R.status(changeTokenFormService.saveOrUpdate(changeTokenForm));
+	}
+
+	
+	/**
+	 * 删除 变更令表
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "逻辑删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(changeTokenFormService.deleteLogic(Func.toLongList(ids)));
+	}
+
+	
+}

+ 117 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/ChangeTokenInventoryController.java

@@ -0,0 +1,117 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.meter.entity.ChangeTokenInventory;
+import org.springblade.meter.service.IChangeTokenInventoryService;
+import org.springblade.core.boot.ctrl.BladeController;
+
+/**
+ * 变更令与合同工程清单	中间表 控制器
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/changeTokenInventory")
+@Api(value = "变更令与合同工程清单	中间表", tags = "变更令与合同工程清单	中间表接口")
+public class ChangeTokenInventoryController extends BladeController {
+
+	private final IChangeTokenInventoryService changeTokenInventoryService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入changeTokenInventory")
+	public R<ChangeTokenInventory> detail(ChangeTokenInventory changeTokenInventory) {
+		ChangeTokenInventory detail = changeTokenInventoryService.getOne(Condition.getQueryWrapper(changeTokenInventory));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 变更令与合同工程清单	中间表
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入changeTokenInventory")
+	public R<IPage<ChangeTokenInventory>> list(ChangeTokenInventory changeTokenInventory, Query query) {
+		IPage<ChangeTokenInventory> pages = changeTokenInventoryService.page(Condition.getPage(query), Condition.getQueryWrapper(changeTokenInventory));
+		return R.data(pages);
+	}
+
+
+
+	/**
+	 * 新增 变更令与合同工程清单	中间表
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入changeTokenInventory")
+	public R save(@Valid @RequestBody ChangeTokenInventory changeTokenInventory) {
+		return R.status(changeTokenInventoryService.save(changeTokenInventory));
+	}
+
+	/**
+	 * 修改 变更令与合同工程清单	中间表
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入changeTokenInventory")
+	public R update(@Valid @RequestBody ChangeTokenInventory changeTokenInventory) {
+		return R.status(changeTokenInventoryService.updateById(changeTokenInventory));
+	}
+
+	/**
+	 * 新增或修改 变更令与合同工程清单	中间表
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入changeTokenInventory")
+	public R submit(@Valid @RequestBody ChangeTokenInventory changeTokenInventory) {
+		return R.status(changeTokenInventoryService.saveOrUpdate(changeTokenInventory));
+	}
+
+	
+	/**
+	 * 删除 变更令与合同工程清单	中间表
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "逻辑删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(changeTokenInventoryService.deleteLogic(Func.toLongList(ids)));
+	}
+
+	
+}

+ 117 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/ChangeTokenMeterController.java

@@ -0,0 +1,117 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.meter.entity.ChangeTokenMeter;
+import org.springblade.meter.service.IChangeTokenMeterService;
+import org.springblade.core.boot.ctrl.BladeController;
+
+/**
+ * 变更令与合同计量单元	中间表 控制器
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/changeTokenMeter")
+@Api(value = "变更令与合同计量单元	中间表", tags = "变更令与合同计量单元	中间表接口")
+public class ChangeTokenMeterController extends BladeController {
+
+	private final IChangeTokenMeterService changeTokenMeterService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入changeTokenMeter")
+	public R<ChangeTokenMeter> detail(ChangeTokenMeter changeTokenMeter) {
+		ChangeTokenMeter detail = changeTokenMeterService.getOne(Condition.getQueryWrapper(changeTokenMeter));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 变更令与合同计量单元	中间表
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入changeTokenMeter")
+	public R<IPage<ChangeTokenMeter>> list(ChangeTokenMeter changeTokenMeter, Query query) {
+		IPage<ChangeTokenMeter> pages = changeTokenMeterService.page(Condition.getPage(query), Condition.getQueryWrapper(changeTokenMeter));
+		return R.data(pages);
+	}
+
+
+
+	/**
+	 * 新增 变更令与合同计量单元	中间表
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入changeTokenMeter")
+	public R save(@Valid @RequestBody ChangeTokenMeter changeTokenMeter) {
+		return R.status(changeTokenMeterService.save(changeTokenMeter));
+	}
+
+	/**
+	 * 修改 变更令与合同计量单元	中间表
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入changeTokenMeter")
+	public R update(@Valid @RequestBody ChangeTokenMeter changeTokenMeter) {
+		return R.status(changeTokenMeterService.updateById(changeTokenMeter));
+	}
+
+	/**
+	 * 新增或修改 变更令与合同计量单元	中间表
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入changeTokenMeter")
+	public R submit(@Valid @RequestBody ChangeTokenMeter changeTokenMeter) {
+		return R.status(changeTokenMeterService.saveOrUpdate(changeTokenMeter));
+	}
+
+	
+	/**
+	 * 删除 变更令与合同计量单元	中间表
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "逻辑删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(changeTokenMeterService.deleteLogic(Func.toLongList(ids)));
+	}
+
+	
+}

+ 144 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/ContractInventoryFormController.java

@@ -0,0 +1,144 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.controller;
+
+import io.swagger.annotations.*;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.meter.vo.FormTreeVO;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.meter.entity.ContractInventoryForm;
+import org.springblade.meter.service.IContractInventoryFormService;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * 合同工程清单表 控制器
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/contractInventoryForm")
+@Api(value = "合同工程清单表", tags = "合同工程清单表接口")
+public class ContractInventoryFormController extends BladeController {
+
+	private final IContractInventoryFormService contractInventoryFormService;
+
+
+	/**
+	 * 获取合同清单树
+	 */
+	@GetMapping("getFormTree")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "获取合同清单树", notes = "返回全加载树")
+	@ApiImplicitParams(value = {
+			@ApiImplicitParam(name = "projectId", value = "projectId", required = true),
+			@ApiImplicitParam(name = "contractId", value = "contractId", required = true)
+	})
+	public R<List<FormTreeVO>> getFormTree(Long projectId, Long contractId){
+		List<FormTreeVO> treeAll = contractInventoryFormService.getFormTree(projectId,contractId);
+		return R.data(treeAll);
+	}
+
+
+	@PostMapping("importExcel")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "导入excel", notes = "导入excel")
+	public R<String> importExcel(@RequestParam("file") MultipartFile file,Long projectId, Long contractId) {
+		return contractInventoryFormService.importExcel(file,projectId,contractId);
+	}
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "详情", notes = "传入contractInventoryForm")
+	public R<ContractInventoryForm> detail(ContractInventoryForm contractInventoryForm) {
+		ContractInventoryForm detail = contractInventoryFormService.getOne(Condition.getQueryWrapper(contractInventoryForm));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 合同工程清单表
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入contractInventoryForm")
+	public R<IPage<ContractInventoryForm>> list(ContractInventoryForm contractInventoryForm, Query query) {
+		IPage<ContractInventoryForm> pages = contractInventoryFormService.page(Condition.getPage(query), Condition.getQueryWrapper(contractInventoryForm));
+		return R.data(pages);
+	}
+
+
+
+	/**
+	 * 新增 合同工程清单表
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入contractInventoryForm")
+	public R save(@Valid @RequestBody ContractInventoryForm contractInventoryForm) {
+		return R.status(contractInventoryFormService.save(contractInventoryForm));
+	}
+
+	/**
+	 * 修改 合同工程清单表
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入contractInventoryForm")
+	public R update(@Valid @RequestBody ContractInventoryForm contractInventoryForm) {
+		return R.status(contractInventoryFormService.updateById(contractInventoryForm));
+	}
+
+	/**
+	 * 新增或修改 合同工程清单表
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入contractInventoryForm")
+	public R submit(@Valid @RequestBody ContractInventoryForm contractInventoryForm) {
+		return R.status(contractInventoryFormService.saveOrUpdate(contractInventoryForm));
+	}
+
+	
+	/**
+	 * 删除 合同工程清单表
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "逻辑删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(contractInventoryFormService.deleteLogic(Func.toLongList(ids)));
+	}
+
+	
+}

+ 117 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/ContractMaterialController.java

@@ -0,0 +1,117 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.meter.entity.ContractMaterial;
+import org.springblade.meter.service.IContractMaterialService;
+import org.springblade.core.boot.ctrl.BladeController;
+
+/**
+ * 合同材料表 控制器
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/contractMaterial")
+@Api(value = "合同材料表", tags = "合同材料表接口")
+public class ContractMaterialController extends BladeController {
+
+	private final IContractMaterialService contractMaterialService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入contractMaterial")
+	public R<ContractMaterial> detail(ContractMaterial contractMaterial) {
+		ContractMaterial detail = contractMaterialService.getOne(Condition.getQueryWrapper(contractMaterial));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 合同材料表
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入contractMaterial")
+	public R<IPage<ContractMaterial>> list(ContractMaterial contractMaterial, Query query) {
+		IPage<ContractMaterial> pages = contractMaterialService.page(Condition.getPage(query), Condition.getQueryWrapper(contractMaterial));
+		return R.data(pages);
+	}
+
+
+
+	/**
+	 * 新增 合同材料表
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入contractMaterial")
+	public R save(@Valid @RequestBody ContractMaterial contractMaterial) {
+		return R.status(contractMaterialService.save(contractMaterial));
+	}
+
+	/**
+	 * 修改 合同材料表
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入contractMaterial")
+	public R update(@Valid @RequestBody ContractMaterial contractMaterial) {
+		return R.status(contractMaterialService.updateById(contractMaterial));
+	}
+
+	/**
+	 * 新增或修改 合同材料表
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入contractMaterial")
+	public R submit(@Valid @RequestBody ContractMaterial contractMaterial) {
+		return R.status(contractMaterialService.saveOrUpdate(contractMaterial));
+	}
+
+	
+	/**
+	 * 删除 合同材料表
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "逻辑删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(contractMaterialService.deleteLogic(Func.toLongList(ids)));
+	}
+
+	
+}

+ 117 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/ContractMeterPeriodController.java

@@ -0,0 +1,117 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.meter.entity.ContractMeterPeriod;
+import org.springblade.meter.service.IContractMeterPeriodService;
+import org.springblade.core.boot.ctrl.BladeController;
+
+/**
+ * 合同计量期表 控制器
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/contractMeterPeriod")
+@Api(value = "合同计量期表", tags = "合同计量期表接口")
+public class ContractMeterPeriodController extends BladeController {
+
+	private final IContractMeterPeriodService contractMeterPeriodService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入contractMeterPeriod")
+	public R<ContractMeterPeriod> detail(ContractMeterPeriod contractMeterPeriod) {
+		ContractMeterPeriod detail = contractMeterPeriodService.getOne(Condition.getQueryWrapper(contractMeterPeriod));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 合同计量期表
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入contractMeterPeriod")
+	public R<IPage<ContractMeterPeriod>> list(ContractMeterPeriod contractMeterPeriod, Query query) {
+		IPage<ContractMeterPeriod> pages = contractMeterPeriodService.page(Condition.getPage(query), Condition.getQueryWrapper(contractMeterPeriod));
+		return R.data(pages);
+	}
+
+
+
+	/**
+	 * 新增 合同计量期表
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入contractMeterPeriod")
+	public R save(@Valid @RequestBody ContractMeterPeriod contractMeterPeriod) {
+		return R.status(contractMeterPeriodService.save(contractMeterPeriod));
+	}
+
+	/**
+	 * 修改 合同计量期表
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入contractMeterPeriod")
+	public R update(@Valid @RequestBody ContractMeterPeriod contractMeterPeriod) {
+		return R.status(contractMeterPeriodService.updateById(contractMeterPeriod));
+	}
+
+	/**
+	 * 新增或修改 合同计量期表
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入contractMeterPeriod")
+	public R submit(@Valid @RequestBody ContractMeterPeriod contractMeterPeriod) {
+		return R.status(contractMeterPeriodService.saveOrUpdate(contractMeterPeriod));
+	}
+
+	
+	/**
+	 * 删除 合同计量期表
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "逻辑删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(contractMeterPeriodService.deleteLogic(Func.toLongList(ids)));
+	}
+
+	
+}

+ 117 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/InterimPayCertificateController.java

@@ -0,0 +1,117 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.meter.entity.InterimPayCertificate;
+import org.springblade.meter.service.IInterimPayCertificateService;
+import org.springblade.core.boot.ctrl.BladeController;
+
+/**
+ * 中期支付证书 控制器
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/interimPayCertificate")
+@Api(value = "中期支付证书", tags = "中期支付证书接口")
+public class InterimPayCertificateController extends BladeController {
+
+	private final IInterimPayCertificateService interimPayCertificateService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入interimPayCertificate")
+	public R<InterimPayCertificate> detail(InterimPayCertificate interimPayCertificate) {
+		InterimPayCertificate detail = interimPayCertificateService.getOne(Condition.getQueryWrapper(interimPayCertificate));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 中期支付证书
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入interimPayCertificate")
+	public R<IPage<InterimPayCertificate>> list(InterimPayCertificate interimPayCertificate, Query query) {
+		IPage<InterimPayCertificate> pages = interimPayCertificateService.page(Condition.getPage(query), Condition.getQueryWrapper(interimPayCertificate));
+		return R.data(pages);
+	}
+
+
+
+	/**
+	 * 新增 中期支付证书
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入interimPayCertificate")
+	public R save(@Valid @RequestBody InterimPayCertificate interimPayCertificate) {
+		return R.status(interimPayCertificateService.save(interimPayCertificate));
+	}
+
+	/**
+	 * 修改 中期支付证书
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入interimPayCertificate")
+	public R update(@Valid @RequestBody InterimPayCertificate interimPayCertificate) {
+		return R.status(interimPayCertificateService.updateById(interimPayCertificate));
+	}
+
+	/**
+	 * 新增或修改 中期支付证书
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入interimPayCertificate")
+	public R submit(@Valid @RequestBody InterimPayCertificate interimPayCertificate) {
+		return R.status(interimPayCertificateService.saveOrUpdate(interimPayCertificate));
+	}
+
+	
+	/**
+	 * 删除 中期支付证书
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "逻辑删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(interimPayCertificateService.deleteLogic(Func.toLongList(ids)));
+	}
+
+	
+}

+ 116 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/InventoryFormApplyController.java

@@ -0,0 +1,116 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.meter.entity.InventoryFormApply;
+import org.springblade.meter.service.IInventoryFormApplyService;
+import org.springblade.core.boot.ctrl.BladeController;
+
+/**
+ * 工程清单与中间计量申请	中间表 控制器
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/inventoryFormApply")
+@Api(value = "工程清单与中间计量申请	中间表", tags = "工程清单与中间计量申请	中间表接口")
+public class InventoryFormApplyController extends BladeController {
+
+	private final IInventoryFormApplyService inventoryFormApplyService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入inventoryFormApply")
+	public R<InventoryFormApply> detail(InventoryFormApply inventoryFormApply) {
+		InventoryFormApply detail = inventoryFormApplyService.getOne(Condition.getQueryWrapper(inventoryFormApply));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 工程清单与中间计量申请	中间表
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入inventoryFormApply")
+	public R<IPage<InventoryFormApply>> list(InventoryFormApply inventoryFormApply, Query query) {
+		IPage<InventoryFormApply> pages = inventoryFormApplyService.page(Condition.getPage(query), Condition.getQueryWrapper(inventoryFormApply));
+		return R.data(pages);
+	}
+
+
+	/**
+	 * 新增 工程清单与中间计量申请	中间表
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入inventoryFormApply")
+	public R save(@Valid @RequestBody InventoryFormApply inventoryFormApply) {
+		return R.status(inventoryFormApplyService.save(inventoryFormApply));
+	}
+
+	/**
+	 * 修改 工程清单与中间计量申请	中间表
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入inventoryFormApply")
+	public R update(@Valid @RequestBody InventoryFormApply inventoryFormApply) {
+		return R.status(inventoryFormApplyService.updateById(inventoryFormApply));
+	}
+
+	/**
+	 * 新增或修改 工程清单与中间计量申请	中间表
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入inventoryFormApply")
+	public R submit(@Valid @RequestBody InventoryFormApply inventoryFormApply) {
+		return R.status(inventoryFormApplyService.saveOrUpdate(inventoryFormApply));
+	}
+
+	
+	/**
+	 * 删除 工程清单与中间计量申请	中间表
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "逻辑删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(inventoryFormApplyService.deleteLogic(Func.toLongList(ids)));
+	}
+
+	
+}

+ 117 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/InventoryFormMeterController.java

@@ -0,0 +1,117 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.meter.entity.InventoryFormMeter;
+import org.springblade.meter.service.IInventoryFormMeterService;
+import org.springblade.core.boot.ctrl.BladeController;
+
+/**
+ * 工程清单与合同计量单元	中间表 控制器
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/inventoryFormMeter")
+@Api(value = "工程清单与合同计量单元	中间表", tags = "工程清单与合同计量单元	中间表接口")
+public class InventoryFormMeterController extends BladeController {
+
+	private final IInventoryFormMeterService inventoryFormMeterService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入inventoryFormMeter")
+	public R<InventoryFormMeter> detail(InventoryFormMeter inventoryFormMeter) {
+		InventoryFormMeter detail = inventoryFormMeterService.getOne(Condition.getQueryWrapper(inventoryFormMeter));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 工程清单与合同计量单元	中间表
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入inventoryFormMeter")
+	public R<IPage<InventoryFormMeter>> list(InventoryFormMeter inventoryFormMeter, Query query) {
+		IPage<InventoryFormMeter> pages = inventoryFormMeterService.page(Condition.getPage(query), Condition.getQueryWrapper(inventoryFormMeter));
+		return R.data(pages);
+	}
+
+
+
+	/**
+	 * 新增 工程清单与合同计量单元	中间表
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入inventoryFormMeter")
+	public R save(@Valid @RequestBody InventoryFormMeter inventoryFormMeter) {
+		return R.status(inventoryFormMeterService.save(inventoryFormMeter));
+	}
+
+	/**
+	 * 修改 工程清单与合同计量单元	中间表
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入inventoryFormMeter")
+	public R update(@Valid @RequestBody InventoryFormMeter inventoryFormMeter) {
+		return R.status(inventoryFormMeterService.updateById(inventoryFormMeter));
+	}
+
+	/**
+	 * 新增或修改 工程清单与合同计量单元	中间表
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入inventoryFormMeter")
+	public R submit(@Valid @RequestBody InventoryFormMeter inventoryFormMeter) {
+		return R.status(inventoryFormMeterService.saveOrUpdate(inventoryFormMeter));
+	}
+
+	
+	/**
+	 * 删除 工程清单与合同计量单元	中间表
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "逻辑删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(inventoryFormMeterService.deleteLogic(Func.toLongList(ids)));
+	}
+
+	
+}

+ 117 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/MaterialMeterFormController.java

@@ -0,0 +1,117 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.meter.entity.MaterialMeterForm;
+import org.springblade.meter.service.IMaterialMeterFormService;
+import org.springblade.core.boot.ctrl.BladeController;
+
+/**
+ * 材料计量单 控制器
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/materialMeterForm")
+@Api(value = "材料计量单", tags = "材料计量单接口")
+public class MaterialMeterFormController extends BladeController {
+
+	private final IMaterialMeterFormService materialMeterFormService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入materialMeterForm")
+	public R<MaterialMeterForm> detail(MaterialMeterForm materialMeterForm) {
+		MaterialMeterForm detail = materialMeterFormService.getOne(Condition.getQueryWrapper(materialMeterForm));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 材料计量单
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入materialMeterForm")
+	public R<IPage<MaterialMeterForm>> list(MaterialMeterForm materialMeterForm, Query query) {
+		IPage<MaterialMeterForm> pages = materialMeterFormService.page(Condition.getPage(query), Condition.getQueryWrapper(materialMeterForm));
+		return R.data(pages);
+	}
+
+
+
+	/**
+	 * 新增 材料计量单
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入materialMeterForm")
+	public R save(@Valid @RequestBody MaterialMeterForm materialMeterForm) {
+		return R.status(materialMeterFormService.save(materialMeterForm));
+	}
+
+	/**
+	 * 修改 材料计量单
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入materialMeterForm")
+	public R update(@Valid @RequestBody MaterialMeterForm materialMeterForm) {
+		return R.status(materialMeterFormService.updateById(materialMeterForm));
+	}
+
+	/**
+	 * 新增或修改 材料计量单
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入materialMeterForm")
+	public R submit(@Valid @RequestBody MaterialMeterForm materialMeterForm) {
+		return R.status(materialMeterFormService.saveOrUpdate(materialMeterForm));
+	}
+
+	
+	/**
+	 * 删除 材料计量单
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "逻辑删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(materialMeterFormService.deleteLogic(Func.toLongList(ids)));
+	}
+
+	
+}

+ 116 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/MaterialStartStatementController.java

@@ -0,0 +1,116 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.meter.entity.MaterialStartStatement;
+import org.springblade.meter.service.IMaterialStartStatementService;
+import org.springblade.core.boot.ctrl.BladeController;
+
+/**
+ * 材料和开工报表 控制器
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/materialStartStatement")
+@Api(value = "材料和开工报表", tags = "材料和开工报表接口")
+public class MaterialStartStatementController extends BladeController {
+
+	private final IMaterialStartStatementService materialStartStatementService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入materialStartStatement")
+	public R<MaterialStartStatement> detail(MaterialStartStatement materialStartStatement) {
+		MaterialStartStatement detail = materialStartStatementService.getOne(Condition.getQueryWrapper(materialStartStatement));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 材料和开工报表
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入materialStartStatement")
+	public R<IPage<MaterialStartStatement>> list(MaterialStartStatement materialStartStatement, Query query) {
+		IPage<MaterialStartStatement> pages = materialStartStatementService.page(Condition.getPage(query), Condition.getQueryWrapper(materialStartStatement));
+		return R.data(pages);
+	}
+
+
+	/**
+	 * 新增 材料和开工报表
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入materialStartStatement")
+	public R save(@Valid @RequestBody MaterialStartStatement materialStartStatement) {
+		return R.status(materialStartStatementService.save(materialStartStatement));
+	}
+
+	/**
+	 * 修改 材料和开工报表
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入materialStartStatement")
+	public R update(@Valid @RequestBody MaterialStartStatement materialStartStatement) {
+		return R.status(materialStartStatementService.updateById(materialStartStatement));
+	}
+
+	/**
+	 * 新增或修改 材料和开工报表
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入materialStartStatement")
+	public R submit(@Valid @RequestBody MaterialStartStatement materialStartStatement) {
+		return R.status(materialStartStatementService.saveOrUpdate(materialStartStatement));
+	}
+
+	
+	/**
+	 * 删除 材料和开工报表
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "逻辑删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(materialStartStatementService.deleteLogic(Func.toLongList(ids)));
+	}
+
+	
+}

+ 117 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/MeterPeriodController.java

@@ -0,0 +1,117 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.meter.entity.MeterPeriod;
+import org.springblade.meter.service.IMeterPeriodService;
+import org.springblade.core.boot.ctrl.BladeController;
+
+/**
+ * 材料开工计量期表 控制器
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/meterPeriod")
+@Api(value = "材料开工计量期表", tags = "材料开工计量期表接口")
+public class MeterPeriodController extends BladeController {
+
+	private final IMeterPeriodService meterPeriodService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入meterPeriod")
+	public R<MeterPeriod> detail(MeterPeriod meterPeriod) {
+		MeterPeriod detail = meterPeriodService.getOne(Condition.getQueryWrapper(meterPeriod));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 材料开工计量期表
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入meterPeriod")
+	public R<IPage<MeterPeriod>> list(MeterPeriod meterPeriod, Query query) {
+		IPage<MeterPeriod> pages = meterPeriodService.page(Condition.getPage(query), Condition.getQueryWrapper(meterPeriod));
+		return R.data(pages);
+	}
+
+
+
+	/**
+	 * 新增 材料开工计量期表
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入meterPeriod")
+	public R save(@Valid @RequestBody MeterPeriod meterPeriod) {
+		return R.status(meterPeriodService.save(meterPeriod));
+	}
+
+	/**
+	 * 修改 材料开工计量期表
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入meterPeriod")
+	public R update(@Valid @RequestBody MeterPeriod meterPeriod) {
+		return R.status(meterPeriodService.updateById(meterPeriod));
+	}
+
+	/**
+	 * 新增或修改 材料开工计量期表
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入meterPeriod")
+	public R submit(@Valid @RequestBody MeterPeriod meterPeriod) {
+		return R.status(meterPeriodService.saveOrUpdate(meterPeriod));
+	}
+
+	
+	/**
+	 * 删除 材料开工计量期表
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "逻辑删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(meterPeriodService.deleteLogic(Func.toLongList(ids)));
+	}
+
+	
+}

+ 116 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/MiddleMeterApplyController.java

@@ -0,0 +1,116 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.meter.entity.MiddleMeterApply;
+import org.springblade.meter.service.IMiddleMeterApplyService;
+import org.springblade.core.boot.ctrl.BladeController;
+
+/**
+ * 中间计量申请表 控制器
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/middleMeterApply")
+@Api(value = "中间计量申请表", tags = "中间计量申请表接口")
+public class MiddleMeterApplyController extends BladeController {
+
+	private final IMiddleMeterApplyService middleMeterApplyService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入middleMeterApply")
+	public R<MiddleMeterApply> detail(MiddleMeterApply middleMeterApply) {
+		MiddleMeterApply detail = middleMeterApplyService.getOne(Condition.getQueryWrapper(middleMeterApply));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 中间计量申请表
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入middleMeterApply")
+	public R<IPage<MiddleMeterApply>> list(MiddleMeterApply middleMeterApply, Query query) {
+		IPage<MiddleMeterApply> pages = middleMeterApplyService.page(Condition.getPage(query), Condition.getQueryWrapper(middleMeterApply));
+		return R.data(pages);
+	}
+
+
+	/**
+	 * 新增 中间计量申请表
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入middleMeterApply")
+	public R save(@Valid @RequestBody MiddleMeterApply middleMeterApply) {
+		return R.status(middleMeterApplyService.save(middleMeterApply));
+	}
+
+	/**
+	 * 修改 中间计量申请表
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入middleMeterApply")
+	public R update(@Valid @RequestBody MiddleMeterApply middleMeterApply) {
+		return R.status(middleMeterApplyService.updateById(middleMeterApply));
+	}
+
+	/**
+	 * 新增或修改 中间计量申请表
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入middleMeterApply")
+	public R submit(@Valid @RequestBody MiddleMeterApply middleMeterApply) {
+		return R.status(middleMeterApplyService.saveOrUpdate(middleMeterApply));
+	}
+
+	
+	/**
+	 * 删除 中间计量申请表
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "逻辑删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(middleMeterApplyService.deleteLogic(Func.toLongList(ids)));
+	}
+
+	
+}

+ 117 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/PayCertificatePayItemController.java

@@ -0,0 +1,117 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.meter.entity.PayCertificatePayItem;
+import org.springblade.meter.service.IPayCertificatePayItemService;
+import org.springblade.core.boot.ctrl.BladeController;
+
+/**
+ * 合同中期支付证书	与合同中期支付项	中间表 控制器
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/payCertificatePayItem")
+@Api(value = "合同中期支付证书	与合同中期支付项	中间表", tags = "合同中期支付证书	与合同中期支付项	中间表接口")
+public class PayCertificatePayItemController extends BladeController {
+
+	private final IPayCertificatePayItemService payCertificatePayItemService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入payCertificatePayItem")
+	public R<PayCertificatePayItem> detail(PayCertificatePayItem payCertificatePayItem) {
+		PayCertificatePayItem detail = payCertificatePayItemService.getOne(Condition.getQueryWrapper(payCertificatePayItem));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 合同中期支付证书	与合同中期支付项	中间表
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入payCertificatePayItem")
+	public R<IPage<PayCertificatePayItem>> list(PayCertificatePayItem payCertificatePayItem, Query query) {
+		IPage<PayCertificatePayItem> pages = payCertificatePayItemService.page(Condition.getPage(query), Condition.getQueryWrapper(payCertificatePayItem));
+		return R.data(pages);
+	}
+
+
+
+	/**
+	 * 新增 合同中期支付证书	与合同中期支付项	中间表
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入payCertificatePayItem")
+	public R save(@Valid @RequestBody PayCertificatePayItem payCertificatePayItem) {
+		return R.status(payCertificatePayItemService.save(payCertificatePayItem));
+	}
+
+	/**
+	 * 修改 合同中期支付证书	与合同中期支付项	中间表
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入payCertificatePayItem")
+	public R update(@Valid @RequestBody PayCertificatePayItem payCertificatePayItem) {
+		return R.status(payCertificatePayItemService.updateById(payCertificatePayItem));
+	}
+
+	/**
+	 * 新增或修改 合同中期支付证书	与合同中期支付项	中间表
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入payCertificatePayItem")
+	public R submit(@Valid @RequestBody PayCertificatePayItem payCertificatePayItem) {
+		return R.status(payCertificatePayItemService.saveOrUpdate(payCertificatePayItem));
+	}
+
+	
+	/**
+	 * 删除 合同中期支付证书	与合同中期支付项	中间表
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "逻辑删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(payCertificatePayItemService.deleteLogic(Func.toLongList(ids)));
+	}
+
+	
+}

+ 116 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/StartPayMeterFormController.java

@@ -0,0 +1,116 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.controller;
+
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.meter.entity.StartPayMeterForm;
+import org.springblade.meter.service.IStartPayMeterFormService;
+import org.springblade.core.boot.ctrl.BladeController;
+
+/**
+ * 开工预付款计量单 控制器
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/startPayMeterForm")
+@Api(value = "开工预付款计量单", tags = "开工预付款计量单接口")
+public class StartPayMeterFormController extends BladeController {
+
+	private final IStartPayMeterFormService startPayMeterFormService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入startPayMeterForm")
+	public R<StartPayMeterForm> detail(StartPayMeterForm startPayMeterForm) {
+		StartPayMeterForm detail = startPayMeterFormService.getOne(Condition.getQueryWrapper(startPayMeterForm));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 开工预付款计量单
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入startPayMeterForm")
+	public R<IPage<StartPayMeterForm>> list(StartPayMeterForm startPayMeterForm, Query query) {
+		IPage<StartPayMeterForm> pages = startPayMeterFormService.page(Condition.getPage(query), Condition.getQueryWrapper(startPayMeterForm));
+		return R.data(pages);
+	}
+
+
+	/**
+	 * 新增 开工预付款计量单
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入startPayMeterForm")
+	public R save(@Valid @RequestBody StartPayMeterForm startPayMeterForm) {
+		return R.status(startPayMeterFormService.save(startPayMeterForm));
+	}
+
+	/**
+	 * 修改 开工预付款计量单
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入startPayMeterForm")
+	public R update(@Valid @RequestBody StartPayMeterForm startPayMeterForm) {
+		return R.status(startPayMeterFormService.updateById(startPayMeterForm));
+	}
+
+	/**
+	 * 新增或修改 开工预付款计量单
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入startPayMeterForm")
+	public R submit(@Valid @RequestBody StartPayMeterForm startPayMeterForm) {
+		return R.status(startPayMeterFormService.saveOrUpdate(startPayMeterForm));
+	}
+
+	
+	/**
+	 * 删除 开工预付款计量单
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "逻辑删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(startPayMeterFormService.deleteLogic(Func.toLongList(ids)));
+	}
+
+	
+}

+ 117 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/StatementFileFormController.java

@@ -0,0 +1,117 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.meter.entity.StatementFileForm;
+import org.springblade.meter.service.IStatementFileFormService;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+import org.springblade.core.boot.ctrl.BladeController;
+
+/**
+ * 报表文件表 控制器
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/statementFileForm")
+@Api(value = "报表文件表", tags = "报表文件表接口")
+public class StatementFileFormController extends BladeController {
+
+	private final IStatementFileFormService statementFileFormService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入statementFileForm")
+	public R<StatementFileForm> detail(StatementFileForm statementFileForm) {
+		StatementFileForm detail = statementFileFormService.getOne(Condition.getQueryWrapper(statementFileForm));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 报表文件表
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入statementFileForm")
+	public R<IPage<StatementFileForm>> list(StatementFileForm statementFileForm, Query query) {
+		IPage<StatementFileForm> pages = statementFileFormService.page(Condition.getPage(query), Condition.getQueryWrapper(statementFileForm));
+		return R.data(pages);
+	}
+
+
+	/**
+	 * 新增 报表文件表
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入statementFileForm")
+	public R save(@Valid @RequestBody StatementFileForm statementFileForm) {
+		return R.status(statementFileFormService.save(statementFileForm));
+	}
+
+	/**
+	 * 修改 报表文件表
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入statementFileForm")
+	public R update(@Valid @RequestBody StatementFileForm statementFileForm) {
+		return R.status(statementFileFormService.updateById(statementFileForm));
+	}
+
+	/**
+	 * 新增或修改 报表文件表
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入statementFileForm")
+	public R submit(@Valid @RequestBody StatementFileForm statementFileForm) {
+		return R.status(statementFileFormService.saveOrUpdate(statementFileForm));
+	}
+
+	
+	/**
+	 * 删除 报表文件表
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "逻辑删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(statementFileFormService.deleteLogic(Func.toLongList(ids)));
+	}
+
+	
+}

+ 4 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/test.java

@@ -0,0 +1,4 @@
+package org.springblade.meter.controller;
+
+public class test {
+}

+ 32 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/AttachmentFormMapper.java

@@ -0,0 +1,32 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.mapper;
+
+import org.springblade.meter.entity.AttachmentForm;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 附件表 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+public interface AttachmentFormMapper extends BaseMapper<AttachmentForm> {
+
+
+
+}

+ 25 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/AttachmentFormMapper.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.meter.mapper.AttachmentFormMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="attachmentFormResultMap" type="org.springblade.meter.entity.AttachmentForm">
+        <result column="id" property="id"/>
+        <result column="create_time" property="createTime"/>
+        <result column="create_user" property="createUser"/>
+        <result column="update_user" property="updateUser"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="status" property="status"/>
+        <result column="create_dept" property="createDept"/>
+        <result column="project_id" property="projectId"/>
+        <result column="contract_id" property="contractId"/>
+        <result column="master_id" property="masterId"/>
+        <result column="file_name" property="fileName"/>
+        <result column="file_url" property="fileUrl"/>
+        <result column="file_pdf_url" property="filePdfUrl"/>
+    </resultMap>
+
+
+
+</mapper>

+ 31 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ChangeTokenFormMapper.java

@@ -0,0 +1,31 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.mapper;
+
+import org.springblade.meter.entity.ChangeTokenForm;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 变更令表 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+public interface ChangeTokenFormMapper extends BaseMapper<ChangeTokenForm> {
+
+
+}

+ 37 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ChangeTokenFormMapper.xml

@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.meter.mapper.ChangeTokenFormMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="changeTokenFormResultMap" type="org.springblade.meter.entity.ChangeTokenForm">
+        <result column="id" property="id"/>
+        <result column="create_time" property="createTime"/>
+        <result column="create_user" property="createUser"/>
+        <result column="update_user" property="updateUser"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="status" property="status"/>
+        <result column="create_dept" property="createDept"/>
+        <result column="project_id" property="projectId"/>
+        <result column="contract_id" property="contractId"/>
+        <result column="change_number" property="changeNumber"/>
+        <result column="change_name" property="changeName"/>
+        <result column="change_unit" property="changeUnit"/>
+        <result column="change_type" property="changeType"/>
+        <result column="business_date" property="businessDate"/>
+        <result column="lengthen_days" property="lengthenDays"/>
+        <result column="change_money" property="changeMoney"/>
+        <result column="design_date" property="designDate"/>
+        <result column="reality_change_number" property="realityChangeNumber"/>
+        <result column="change_approval_number" property="changeApprovalNumber"/>
+        <result column="change_classify" property="changeClassify"/>
+        <result column="change_approval_date" property="changeApprovalDate"/>
+        <result column="change_cause" property="changeCause"/>
+        <result column="approve_status" property="approveStatus"/>
+        <result column="command_status" property="commandStatus"/>
+    </resultMap>
+
+
+
+
+</mapper>

+ 31 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ChangeTokenInventoryMapper.java

@@ -0,0 +1,31 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.mapper;
+
+import org.springblade.meter.entity.ChangeTokenInventory;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 变更令与合同工程清单	中间表 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+public interface ChangeTokenInventoryMapper extends BaseMapper<ChangeTokenInventory> {
+
+
+}

+ 26 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ChangeTokenInventoryMapper.xml

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.meter.mapper.ChangeTokenInventoryMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="changeTokenInventoryResultMap" type="org.springblade.meter.entity.ChangeTokenInventory">
+        <result column="id" property="id"/>
+        <result column="create_time" property="createTime"/>
+        <result column="create_user" property="createUser"/>
+        <result column="update_user" property="updateUser"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="status" property="status"/>
+        <result column="create_dept" property="createDept"/>
+        <result column="project_id" property="projectId"/>
+        <result column="contract_id" property="contractId"/>
+        <result column="change_token_id" property="changeTokenId"/>
+        <result column="inventory_form_id" property="inventoryFormId"/>
+        <result column="change_before" property="changeBefore"/>
+        <result column="change_total" property="changeTotal"/>
+        <result column="change_after" property="changeAfter"/>
+    </resultMap>
+
+
+
+</mapper>

+ 31 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ChangeTokenMeterMapper.java

@@ -0,0 +1,31 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.mapper;
+
+import org.springblade.meter.entity.ChangeTokenMeter;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 变更令与合同计量单元	中间表 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+public interface ChangeTokenMeterMapper extends BaseMapper<ChangeTokenMeter> {
+
+
+}

+ 25 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ChangeTokenMeterMapper.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.meter.mapper.ChangeTokenMeterMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="changeTokenMeterResultMap" type="org.springblade.meter.entity.ChangeTokenMeter">
+        <result column="id" property="id"/>
+        <result column="create_time" property="createTime"/>
+        <result column="create_user" property="createUser"/>
+        <result column="update_user" property="updateUser"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="status" property="status"/>
+        <result column="create_dept" property="createDept"/>
+        <result column="project_id" property="projectId"/>
+        <result column="contract_id" property="contractId"/>
+        <result column="change_token_id" property="changeTokenId"/>
+        <result column="contract_meter_id" property="contractMeterId"/>
+        <result column="contract_picture" property="contractPicture"/>
+    </resultMap>
+
+
+
+
+</mapper>

+ 36 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractInventoryFormMapper.java

@@ -0,0 +1,36 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.mapper;
+
+import org.apache.ibatis.annotations.Param;
+import org.springblade.meter.entity.ContractInventoryForm;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.meter.vo.FormTreeVO;
+
+import java.util.List;
+
+/**
+ * 合同工程清单表 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+public interface ContractInventoryFormMapper extends BaseMapper<ContractInventoryForm> {
+
+
+    List<FormTreeVO> getAllNode(@Param("projectId") Long projectId,@Param("contractId") Long contractId);
+}

+ 48 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractInventoryFormMapper.xml

@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.meter.mapper.ContractInventoryFormMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="contractInventoryFormResultMap" type="org.springblade.meter.entity.ContractInventoryForm">
+        <result column="id" property="id"/>
+        <result column="create_time" property="createTime"/>
+        <result column="create_user" property="createUser"/>
+        <result column="update_user" property="updateUser"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="status" property="status"/>
+        <result column="create_dept" property="createDept"/>
+        <result column="project_id" property="projectId"/>
+        <result column="contract_id" property="contractId"/>
+        <result column="form_number" property="formNumber"/>
+        <result column="form_name" property="formName"/>
+        <result column="from_type" property="formType"/>
+        <result column="is_form_node" property="isFormNode"/>
+        <result column="unit" property="unit"/>
+        <result column="bid_price" property="bidPrice"/>
+        <result column="current_price" property="currentPrice"/>
+        <result column="change_price" property="changePrice"/>
+        <result column="chapter_number" property="chapterNumber"/>
+        <result column="contract_total" property="contractTotal"/>
+        <result column="change_total" property="changeTotal"/>
+        <result column="contract_money" property="contractMoney"/>
+        <result column="change_money" property="changeMoney"/>
+        <result column="form_tag" property="formTag"/>
+        <result column="parent_id" property="parentId"/>
+        <result column="ancestors" property="ancestors"/>
+        <result column="remark" property="remark"/>
+        <result column="sort" property="sort"/>
+        <result column="is_lock" property="isLock"/>
+        <result column="is_supplement" property="isSupplement"/>
+    </resultMap>
+    <select id="getAllNode" resultType="org.springblade.meter.vo.FormTreeVO">
+        select id,parent_id,
+               concat(scif.form_number, scif.form_name) as form_name,
+               (select COUNT(1) from s_contract_inventory_form
+                    WHERE contract_id = #{contractId} and is_deleted=0 and parent_id = scif.id) as hasChild
+        from s_contract_inventory_form scif
+        where project_id = #{projectId} and contract_id = #{contractId} and is_deleted = 0
+    </select>
+
+
+</mapper>

Vissa filer visades inte eftersom för många filer har ändrats