Browse Source

Merge branch 'master' of http://121.41.40.202:3000/zhuwei/bladex

huangtf 1 year ago
parent
commit
289eed31c3
77 changed files with 1531 additions and 302 deletions
  1. 16 4
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ProjectInfo.java
  2. 10 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/ContractMeterPeriodDTO.java
  3. 7 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/MaterialMeterFormDTO.java
  4. 14 3
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/MeterPeriodDTO.java
  5. 7 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/StartPayMeterFormDTO.java
  6. 31 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/ContractMeterPeriod.java
  7. 6 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/MeterMidPayItemContract.java
  8. 6 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/MeterMidPayItemProject.java
  9. 6 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/MeterMidPayItemSystem.java
  10. 14 1
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/MeterPeriod.java
  11. 51 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ContractMaterialTreeVO.java
  12. 13 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ContractMaterialVO.java
  13. 4 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ContractMeterPeriodVO.java
  14. 3 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/FormTreeVO.java
  15. 4 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/InventoryFormDetailVO.java
  16. 16 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/MaterialMeterFormVO.java
  17. 18 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/MeterMidPayItemContractVO.java
  18. 18 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/MeterMidPayItemProjectVO.java
  19. 18 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/MeterMidPayItemSystemVO.java
  20. 4 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/MeterPeriodVO.java
  21. 10 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/StartPayMeterFormVO.java
  22. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ProjectInfoMapper.java
  23. 27 49
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ProjectInfoMapper.xml
  24. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java
  25. 54 9
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java
  26. 1 0
      blade-service/blade-meter/pom.xml
  27. 11 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/ContractInventoryFormController.java
  28. 11 11
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/ContractMaterialController.java
  29. 30 48
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/ContractMeterPeriodController.java
  30. 29 35
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/MaterialMeterFormController.java
  31. 17 45
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/MaterialStartStatementController.java
  32. 39 42
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/MeterPeriodController.java
  33. 3 3
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/MeterTreeController.java
  34. 307 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/MidPayItemController.java
  35. 52 36
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/StartPayMeterFormController.java
  36. 2 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/AttachmentFormMapper.java
  37. 4 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/AttachmentFormMapper.xml
  38. 4 2
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractInventoryFormMapper.xml
  39. 6 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractMaterialMapper.java
  40. 4 2
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractMaterialMapper.xml
  41. 10 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractMeterPeriodMapper.java
  42. 18 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractMeterPeriodMapper.xml
  43. 6 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MaterialMeterFormMapper.java
  44. 17 2
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MaterialMeterFormMapper.xml
  45. 3 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MaterialStartStatementMapper.java
  46. 8 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MaterialStartStatementMapper.xml
  47. 10 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MeterPeriodMapper.java
  48. 28 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MeterPeriodMapper.xml
  49. 8 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MidPayItemContractMapper.java
  50. 5 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MidPayItemContractMapper.xml
  51. 8 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MidPayItemProjectMapper.java
  52. 5 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MidPayItemProjectMapper.xml
  53. 8 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MidPayItemSystemMapper.java
  54. 5 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MidPayItemSystemMapper.xml
  55. 6 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/StartPayMeterFormMapper.java
  56. 15 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/StartPayMeterFormMapper.xml
  57. 1 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/IAttachmentFormService.java
  58. 2 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/IContractMaterialService.java
  59. 13 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/IContractMeterPeriodService.java
  60. 11 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/IMaterialMeterFormService.java
  61. 3 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/IMaterialStartStatementService.java
  62. 15 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/IMeterPeriodService.java
  63. 11 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/IStartPayMeterFormService.java
  64. 7 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/MidPayItemContractService.java
  65. 7 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/MidPayItemProjectService.java
  66. 7 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/MidPayItemSystemService.java
  67. 4 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/AttachmentFormServiceImpl.java
  68. 1 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/ContractInventoryFormServiceImpl.java
  69. 28 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/ContractMaterialServiceImpl.java
  70. 77 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/ContractMeterPeriodServiceImpl.java
  71. 90 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MaterialMeterFormServiceImpl.java
  72. 8 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MaterialStartStatementServiceImpl.java
  73. 85 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MeterPeriodServiceImpl.java
  74. 14 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MidPayItemContractServiceImpl.java
  75. 14 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MidPayItemProjectServiceImpl.java
  76. 14 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MidPayItemSystemServiceImpl.java
  77. 79 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/StartPayMeterFormServiceImpl.java

+ 16 - 4
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ProjectInfo.java

@@ -156,15 +156,15 @@ public class ProjectInfo extends BaseEntity {
     private Integer isArchivesAuto;
     private Integer isArchivesAuto;
 
 
     /**
     /**
-     * wbs私有树引用wbs模板类型--征拆
+     * wbs私有树引用wbs模板id--征拆
      */
      */
-    @ApiModelProperty(value = "wbs私有树引用wbs模板类型--征拆")
+    @ApiModelProperty(value = "wbs私有树引用wbs模板id--征拆")
     private Long referenceWbsTemplateIdLar;
     private Long referenceWbsTemplateIdLar;
 
 
     /**
     /**
-     * wbs私有树引用wbs模板id--征拆
+     * wbs私有树引用wbs模板类型--征拆
      */
      */
-    @ApiModelProperty(value = "wbs私有树引用wbs模板id--征拆")
+    @ApiModelProperty(value = "wbs私有树引用wbs模板类型")
     private String referenceWbsTemplateTypeLar;
     private String referenceWbsTemplateTypeLar;
 
 
     /**
     /**
@@ -179,4 +179,16 @@ public class ProjectInfo extends BaseEntity {
     @ApiModelProperty(value = "系统计量单元模板id")
     @ApiModelProperty(value = "系统计量单元模板id")
     private Long meterTemplateId;
     private Long meterTemplateId;
 
 
+    /**
+     * wbs私有树引用wbs模板id-计量
+     */
+    @ApiModelProperty(value = "wbs私有树引用wbs模板id-计量")
+    private Long referenceWbsTemplateIdMeter;
+
+    /**
+     * wbs私有树引用wbs模板类型-征拆
+     */
+    @ApiModelProperty(value = "wbs私有树引用wbs模板类型-征拆")
+    private String referenceWbsTemplateTypeMeter;
+
 }
 }

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

@@ -16,9 +16,13 @@
  */
  */
 package org.springblade.meter.dto;
 package org.springblade.meter.dto;
 
 
+import io.swagger.annotations.ApiModelProperty;
 import org.springblade.meter.entity.ContractMeterPeriod;
 import org.springblade.meter.entity.ContractMeterPeriod;
 import lombok.Data;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.EqualsAndHashCode;
+import org.springblade.meter.entity.MeterPeriod;
+
+import java.util.List;
 
 
 /**
 /**
  * 合同计量期表数据传输对象实体类
  * 合同计量期表数据传输对象实体类
@@ -31,4 +35,10 @@ import lombok.EqualsAndHashCode;
 public class ContractMeterPeriodDTO extends ContractMeterPeriod {
 public class ContractMeterPeriodDTO extends ContractMeterPeriod {
 	private static final long serialVersionUID = 1L;
 	private static final long serialVersionUID = 1L;
 
 
+	@ApiModelProperty(value = "合同段id")
+	private Long contractId;
+
+	@ApiModelProperty(value = "计量期集合")
+	private List<ContractMeterPeriod> list;
+
 }
 }

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

@@ -16,10 +16,14 @@
  */
  */
 package org.springblade.meter.dto;
 package org.springblade.meter.dto;
 
 
+import io.swagger.annotations.ApiModelProperty;
+import org.springblade.meter.entity.AttachmentForm;
 import org.springblade.meter.entity.MaterialMeterForm;
 import org.springblade.meter.entity.MaterialMeterForm;
 import lombok.Data;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.EqualsAndHashCode;
 
 
+import java.util.List;
+
 /**
 /**
  * 材料计量单数据传输对象实体类
  * 材料计量单数据传输对象实体类
  *
  *
@@ -31,4 +35,7 @@ import lombok.EqualsAndHashCode;
 public class MaterialMeterFormDTO extends MaterialMeterForm {
 public class MaterialMeterFormDTO extends MaterialMeterForm {
 	private static final long serialVersionUID = 1L;
 	private static final long serialVersionUID = 1L;
 
 
+	@ApiModelProperty(value = "附件集合")
+	private List<AttachmentForm> fileList;
+
 }
 }

+ 14 - 3
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/MeterPeriodDTO.java

@@ -16,10 +16,13 @@
  */
  */
 package org.springblade.meter.dto;
 package org.springblade.meter.dto;
 
 
+import io.swagger.annotations.ApiModelProperty;
 import org.springblade.meter.entity.MeterPeriod;
 import org.springblade.meter.entity.MeterPeriod;
 import lombok.Data;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.EqualsAndHashCode;
 
 
+import java.util.List;
+
 /**
 /**
  * 材料开工计量期表数据传输对象实体类
  * 材料开工计量期表数据传输对象实体类
  *
  *
@@ -27,8 +30,16 @@ import lombok.EqualsAndHashCode;
  * @since 2023-11-29
  * @since 2023-11-29
  */
  */
 @Data
 @Data
-@EqualsAndHashCode(callSuper = true)
-public class MeterPeriodDTO extends MeterPeriod {
-	private static final long serialVersionUID = 1L;
+public class MeterPeriodDTO {
+
+	@ApiModelProperty(value = "合同段id")
+	private Long contractId;
+
+	@ApiModelProperty(value = "1材料,2开工")
+	private Integer type;
+
+	@ApiModelProperty(value = "计量期集合")
+	private List<MeterPeriod> list;
+
 
 
 }
 }

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

@@ -16,10 +16,14 @@
  */
  */
 package org.springblade.meter.dto;
 package org.springblade.meter.dto;
 
 
+import io.swagger.annotations.ApiModelProperty;
+import org.springblade.meter.entity.AttachmentForm;
 import org.springblade.meter.entity.StartPayMeterForm;
 import org.springblade.meter.entity.StartPayMeterForm;
 import lombok.Data;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.EqualsAndHashCode;
 
 
+import java.util.List;
+
 /**
 /**
  * 开工预付款计量单数据传输对象实体类
  * 开工预付款计量单数据传输对象实体类
  *
  *
@@ -31,4 +35,7 @@ import lombok.EqualsAndHashCode;
 public class StartPayMeterFormDTO extends StartPayMeterForm {
 public class StartPayMeterFormDTO extends StartPayMeterForm {
 	private static final long serialVersionUID = 1L;
 	private static final long serialVersionUID = 1L;
 
 
+	@ApiModelProperty(value = "附件集合")
+	private List<AttachmentForm> fileList;
+
 }
 }

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

@@ -16,15 +16,18 @@
  */
  */
 package org.springblade.meter.entity;
 package org.springblade.meter.entity;
 
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.TableName;
 
 
 import java.io.Serializable;
 import java.io.Serializable;
 import java.time.LocalDate;
 import java.time.LocalDate;
 
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 import org.springblade.core.mp.base.BaseEntity;
 import org.springblade.core.mp.base.BaseEntity;
 import lombok.Data;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
 
 
 /**
 /**
  * 合同计量期表实体类
  * 合同计量期表实体类
@@ -64,11 +67,39 @@ public class ContractMeterPeriod extends BaseEntity {
      */
      */
     @ApiModelProperty(value = "月")
     @ApiModelProperty(value = "月")
     private Integer periodMonth;
     private Integer periodMonth;
+    /**
+     * 开始日期
+     */
+    @DateTimeFormat(
+            pattern = "yyyy-MM-dd"
+    )
+    @JsonFormat(
+            pattern = "yyyy-MM-dd"
+    )
+    @ApiModelProperty(value = "开始日期")
+    private LocalDate startDate;
+    /**
+     * 结束日期
+     */
+    @DateTimeFormat(
+            pattern = "yyyy-MM-dd"
+    )
+    @JsonFormat(
+            pattern = "yyyy-MM-dd"
+    )
+    @ApiModelProperty(value = "结束日期")
+    private LocalDate endDate;
     /**
     /**
      * 报表打印日期
      * 报表打印日期
      */
      */
     @ApiModelProperty(value = "报表打印日期")
     @ApiModelProperty(value = "报表打印日期")
     private LocalDate formPrintDate;
     private LocalDate formPrintDate;
 
 
+    /**
+     * 排序
+     */
+    @ApiModelProperty(value = "排序")
+    private Integer sort;
+
 
 
 }
 }

+ 6 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/MeterMidPayItemContract.java

@@ -60,4 +60,10 @@ public class MeterMidPayItemContract extends BaseEntity {
     @ApiModelProperty(value = "排序")
     @ApiModelProperty(value = "排序")
     private Integer sort;
     private Integer sort;
 
 
+    @ApiModelProperty(value = "数据源类型 1=原始引用、2=新增")
+    private Integer dataSourceType;
+
+    @ApiModelProperty(value = "备注")
+    private String remarks;
+
 }
 }

+ 6 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/MeterMidPayItemProject.java

@@ -57,4 +57,10 @@ public class MeterMidPayItemProject extends BaseEntity {
     @ApiModelProperty(value = "排序")
     @ApiModelProperty(value = "排序")
     private Integer sort;
     private Integer sort;
 
 
+    @ApiModelProperty(value = "是否被引用 0=否 1=是")
+    private Integer isReferenced;
+
+    @ApiModelProperty(value = "备注")
+    private String remarks;
+
 }
 }

+ 6 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/MeterMidPayItemSystem.java

@@ -54,4 +54,10 @@ public class MeterMidPayItemSystem extends BaseEntity {
     @ApiModelProperty(value = "排序")
     @ApiModelProperty(value = "排序")
     private Integer sort;
     private Integer sort;
 
 
+    @ApiModelProperty(value = "是否被引用 0=否 1=是")
+    private Integer isReferenced;
+
+    @ApiModelProperty(value = "备注")
+    private String remarks;
+
 }
 }

+ 14 - 1
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/MeterPeriod.java

@@ -16,6 +16,7 @@
  */
  */
 package org.springblade.meter.entity;
 package org.springblade.meter.entity;
 
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.TableName;
 
 
 import java.io.Serializable;
 import java.io.Serializable;
@@ -42,7 +43,7 @@ public class MeterPeriod extends BaseEntity {
     /**
     /**
      * 项目id
      * 项目id
      */
      */
-    @ApiModelProperty(value = "s_meter_period")
+    @ApiModelProperty(value = "项目id")
     private Long projectId;
     private Long projectId;
     /**
     /**
      * 合同段id
      * 合同段id
@@ -80,5 +81,17 @@ public class MeterPeriod extends BaseEntity {
     @ApiModelProperty(value = "报表打印日期")
     @ApiModelProperty(value = "报表打印日期")
     private LocalDate formPrintDate;
     private LocalDate formPrintDate;
 
 
+    /**
+     * 是否锁定
+     */
+    @ApiModelProperty(value = "是否锁定")
+    private Integer isLock;
+
+    /**
+     * 排序
+     */
+    @ApiModelProperty(value = "排序")
+    private Integer sort;
+
 
 
 }
 }

+ 51 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ContractMaterialTreeVO.java

@@ -0,0 +1,51 @@
+/*
+ *      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 io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.meter.entity.ContractMaterial;
+
+import java.util.List;
+
+/**
+ * 合同材料树
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+public class ContractMaterialTreeVO{
+
+	@ApiModelProperty(value = "id")
+	private Long id;
+
+	@ApiModelProperty(value = "子集合")
+	private List<ContractMaterialVO> children;
+
+	@ApiModelProperty(value = "ture有子节点,false没有子节点")
+	private Boolean hasChild;
+
+	@ApiModelProperty(value = "节点名称")
+	private String nodeName;
+
+
+
+
+
+}

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

@@ -16,10 +16,13 @@
  */
  */
 package org.springblade.meter.vo;
 package org.springblade.meter.vo;
 
 
+import io.swagger.annotations.ApiModelProperty;
 import org.springblade.meter.entity.ContractMaterial;
 import org.springblade.meter.entity.ContractMaterial;
 import lombok.Data;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.EqualsAndHashCode;
 
 
+import java.math.BigDecimal;
+
 /**
 /**
  * 合同材料表视图实体类
  * 合同材料表视图实体类
  *
  *
@@ -31,4 +34,14 @@ import lombok.EqualsAndHashCode;
 public class ContractMaterialVO extends ContractMaterial {
 public class ContractMaterialVO extends ContractMaterial {
 	private static final long serialVersionUID = 1L;
 	private static final long serialVersionUID = 1L;
 
 
+	@ApiModelProperty(value = "节点名称")
+	private String nodeName;
+
+	@ApiModelProperty(value = "ture有子节点,false没有子节点")
+	private Boolean hasChild;
+
+	@ApiModelProperty(value = "计量金额")
+	private BigDecimal meterMoney;
+
+
 }
 }

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

@@ -16,6 +16,7 @@
  */
  */
 package org.springblade.meter.vo;
 package org.springblade.meter.vo;
 
 
+import io.swagger.annotations.ApiModelProperty;
 import org.springblade.meter.entity.ContractMeterPeriod;
 import org.springblade.meter.entity.ContractMeterPeriod;
 import lombok.Data;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.EqualsAndHashCode;
@@ -31,4 +32,7 @@ import lombok.EqualsAndHashCode;
 public class ContractMeterPeriodVO extends ContractMeterPeriod {
 public class ContractMeterPeriodVO extends ContractMeterPeriod {
 	private static final long serialVersionUID = 1L;
 	private static final long serialVersionUID = 1L;
 
 
+	@ApiModelProperty(value = "引用状态,0未引用,1引用")
+	private Integer citeStatus;
+
 }
 }

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

@@ -65,5 +65,8 @@ public class FormTreeVO implements INode<FormTreeVO> {
     @ApiModelProperty(value = "章编号")
     @ApiModelProperty(value = "章编号")
     private String chapterNumber;
     private String chapterNumber;
 
 
+    @ApiModelProperty(value = "清单类型")
+    private Integer formType;
+
 
 
 }
 }

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

@@ -16,6 +16,7 @@
  */
  */
 package org.springblade.meter.vo;
 package org.springblade.meter.vo;
 
 
+import com.alibaba.excel.annotation.ExcelProperty;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.EqualsAndHashCode;
@@ -34,6 +35,9 @@ import java.util.List;
 public class InventoryFormDetailVO extends ContractInventoryForm {
 public class InventoryFormDetailVO extends ContractInventoryForm {
 	private static final long serialVersionUID = 1L;
 	private static final long serialVersionUID = 1L;
 
 
+	@ApiModelProperty(value = "清单类型")
+	private String formTypeName;
+
 	@ApiModelProperty(value = "下级节点集合")
 	@ApiModelProperty(value = "下级节点集合")
 	private List<ContractInventoryFormVO> list;
 	private List<ContractInventoryFormVO> list;
 
 

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

@@ -16,10 +16,14 @@
  */
  */
 package org.springblade.meter.vo;
 package org.springblade.meter.vo;
 
 
+import io.swagger.annotations.ApiModelProperty;
+import org.springblade.meter.entity.AttachmentForm;
 import org.springblade.meter.entity.MaterialMeterForm;
 import org.springblade.meter.entity.MaterialMeterForm;
 import lombok.Data;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.EqualsAndHashCode;
 
 
+import java.util.List;
+
 /**
 /**
  * 材料计量单视图实体类
  * 材料计量单视图实体类
  *
  *
@@ -31,4 +35,16 @@ import lombok.EqualsAndHashCode;
 public class MaterialMeterFormVO extends MaterialMeterForm {
 public class MaterialMeterFormVO extends MaterialMeterForm {
 	private static final long serialVersionUID = 1L;
 	private static final long serialVersionUID = 1L;
 
 
+	@ApiModelProperty(value = "审批状态名称")
+	private String approveStatusName;
+
+	@ApiModelProperty(value = "材料是否符合要求名称")
+	private String materialConformName;
+
+	@ApiModelProperty(value = "存放是否符合要求名称")
+	private String storageConformName;
+
+	@ApiModelProperty(value = "附件列表")
+	private List<AttachmentForm> fileList;
+
 }
 }

+ 18 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/MeterMidPayItemContractVO.java

@@ -0,0 +1,18 @@
+package org.springblade.meter.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springblade.meter.entity.MeterMidPayItemContract;
+
+import java.util.List;
+
+/**
+ * 合同段中期支付项信息VO
+ */
+@Data
+public class MeterMidPayItemContractVO extends MeterMidPayItemContract {
+
+    @ApiModelProperty(value = "汇总项列表信息")
+    private List<MeterMidPayItemContract> summaryItemList;
+
+}

+ 18 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/MeterMidPayItemProjectVO.java

@@ -0,0 +1,18 @@
+package org.springblade.meter.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springblade.meter.entity.MeterMidPayItemProject;
+
+import java.util.List;
+
+/**
+ * 项目中期支付项信息VO
+ */
+@Data
+public class MeterMidPayItemProjectVO extends MeterMidPayItemProject {
+
+    @ApiModelProperty(value = "汇总项列表信息")
+    private List<MeterMidPayItemProject> summaryItemList;
+
+}

+ 18 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/MeterMidPayItemSystemVO.java

@@ -0,0 +1,18 @@
+package org.springblade.meter.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springblade.meter.entity.MeterMidPayItemSystem;
+
+import java.util.List;
+
+/**
+ * 系统中期支付项信息VO
+ */
+@Data
+public class MeterMidPayItemSystemVO extends MeterMidPayItemSystem {
+
+    @ApiModelProperty(value = "汇总项列表信息")
+    private List<MeterMidPayItemSystem> summaryItemList;
+
+}

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

@@ -16,6 +16,7 @@
  */
  */
 package org.springblade.meter.vo;
 package org.springblade.meter.vo;
 
 
+import io.swagger.annotations.ApiModelProperty;
 import org.springblade.meter.entity.MeterPeriod;
 import org.springblade.meter.entity.MeterPeriod;
 import lombok.Data;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.EqualsAndHashCode;
@@ -31,4 +32,7 @@ import lombok.EqualsAndHashCode;
 public class MeterPeriodVO extends MeterPeriod {
 public class MeterPeriodVO extends MeterPeriod {
 	private static final long serialVersionUID = 1L;
 	private static final long serialVersionUID = 1L;
 
 
+	@ApiModelProperty(value = "引用状态,0未引用,1引用")
+	private Integer citeStatus;
+
 }
 }

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

@@ -16,10 +16,14 @@
  */
  */
 package org.springblade.meter.vo;
 package org.springblade.meter.vo;
 
 
+import io.swagger.annotations.ApiModelProperty;
+import org.springblade.meter.entity.AttachmentForm;
 import org.springblade.meter.entity.StartPayMeterForm;
 import org.springblade.meter.entity.StartPayMeterForm;
 import lombok.Data;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.EqualsAndHashCode;
 
 
+import java.util.List;
+
 /**
 /**
  * 开工预付款计量单视图实体类
  * 开工预付款计量单视图实体类
  *
  *
@@ -31,4 +35,10 @@ import lombok.EqualsAndHashCode;
 public class StartPayMeterFormVO extends StartPayMeterForm {
 public class StartPayMeterFormVO extends StartPayMeterForm {
 	private static final long serialVersionUID = 1L;
 	private static final long serialVersionUID = 1L;
 
 
+	@ApiModelProperty(value = "审批状态名称")
+	private String approveStatusName;
+
+	@ApiModelProperty(value = "附件列表")
+	private List<AttachmentForm> fileList;
+
 }
 }

+ 2 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ProjectInfoMapper.java

@@ -24,6 +24,8 @@ public interface ProjectInfoMapper extends BaseMapper<ProjectInfo> {
 
 
     void updateTemplateInfoTrial(String projectId, String referencePrivateWbsProjectId, String type);
     void updateTemplateInfoTrial(String projectId, String referencePrivateWbsProjectId, String type);
 
 
+    void updateTemplateInfoMeter(String projectId, String referencePrivateWbsProjectId, String type);
+
     void updateTemplateInfoLar(String projectId, String referencePrivateWbsProjectId, String type);
     void updateTemplateInfoLar(String projectId, String referencePrivateWbsProjectId, String type);
 
 
     ProjectInfo selectOneAndWbsTypeById(Long id);
     ProjectInfo selectOneAndWbsTypeById(Long id);

+ 27 - 49
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ProjectInfoMapper.xml

@@ -56,55 +56,24 @@
     </resultMap>
     </resultMap>
 
 
     <select id="queryProjectUserAmount" resultMap="projectUserAmount">
     <select id="queryProjectUserAmount" resultMap="projectUserAmount">
-        /*select mpi.project_alias,
-               (select COUNT(DISTINCT user_id) end
-        from m_project_assignment_user
-        where is_deleted = 0
-          and project_id = mpi.id
-          and role_id in
-            (select id from blade_role where is_deleted = 0
-          and (id = '1537247986361782274'
-           or parent_id =
-            '1537247986361782274' ))) as contractor
-            , (
-        select COUNT (DISTINCT user_id) end
-        from m_project_assignment_user
-        where is_deleted = 0
-          and project_id = mpi.id
-          and role_id in
-            (select id from blade_role where is_deleted = 0
-          and (id = '1537246384519335938'
-           or parent_id =
-            '1537246384519335938'))) as supervision
-            , (
-        select COUNT (DISTINCT user_id) end
-        from m_project_assignment_user
-        where is_deleted = 0
-          and project_id = mpi.id
-          and role_id in
-            (select id from blade_role where is_deleted = 0
-          and (id = '1537246243393589249'
-           or parent_id =
-            '1537246243393589249'))) as owner
-        from
-            m_project_info as mpi*/
-
-        SELECT
-            mpi.project_alias,
-            mpi.create_time,
-            COUNT(DISTINCT CASE WHEN m.role_id = '1537247986361782274' OR r1.parent_id = '1537247986361782274' THEN m.user_id END) AS contractor,
-            COUNT(DISTINCT CASE WHEN m.role_id = '1537246384519335938' OR r2.parent_id = '1537246384519335938' THEN m.user_id END) AS supervision,
-            COUNT(DISTINCT CASE WHEN m.role_id = '1537246243393589249' OR r3.parent_id = '1537246243393589249' THEN m.user_id END) AS owner
-        FROM
-            m_project_info AS mpi
-                LEFT JOIN m_project_assignment_user AS m ON mpi.id = m.project_id AND m.is_deleted = 0
-                LEFT JOIN blade_role AS r1 ON m.role_id = r1.id AND r1.is_deleted = 0
-                LEFT JOIN blade_role AS r2 ON m.role_id = r2.id AND r2.is_deleted = 0
-                LEFT JOIN blade_role AS r3 ON m.role_id = r3.id AND r3.is_deleted = 0
-        GROUP BY
-            mpi.project_alias
-        ORDER BY
-            mpi.create_time;
+        SELECT mpi.project_alias,
+               mpi.create_time,
+               COUNT(DISTINCT CASE
+                                  WHEN m.role_id = '1537247986361782274' OR r1.parent_id = '1537247986361782274'
+                                      THEN m.user_id END) AS contractor,
+               COUNT(DISTINCT CASE
+                                  WHEN m.role_id = '1537246384519335938' OR r2.parent_id = '1537246384519335938'
+                                      THEN m.user_id END) AS supervision,
+               COUNT(DISTINCT CASE
+                                  WHEN m.role_id = '1537246243393589249' OR r3.parent_id = '1537246243393589249'
+                                      THEN m.user_id END) AS owner
+        FROM m_project_info AS mpi
+                 LEFT JOIN m_project_assignment_user AS m ON mpi.id = m.project_id AND m.is_deleted = 0
+                 LEFT JOIN blade_role AS r1 ON m.role_id = r1.id AND r1.is_deleted = 0
+                 LEFT JOIN blade_role AS r2 ON m.role_id = r2.id AND r2.is_deleted = 0
+                 LEFT JOIN blade_role AS r3 ON m.role_id = r3.id AND r3.is_deleted = 0
+        GROUP BY mpi.project_alias
+        ORDER BY mpi.create_time;
 
 
     </select>
     </select>
 
 
@@ -153,6 +122,15 @@
           AND status = 1
           AND status = 1
     </update>
     </update>
 
 
+    <update id="updateTemplateInfoMeter">
+        UPDATE m_project_info
+        SET reference_wbs_template_id_meter   = #{referencePrivateWbsProjectId},
+            reference_wbs_template_type_meter = #{type}
+        WHERE id = #{projectId}
+          AND is_deleted = 0
+          AND status = 1
+    </update>
+
     <update id="updateTemplateInfoLar">
     <update id="updateTemplateInfoLar">
         UPDATE m_project_info
         UPDATE m_project_info
         SET reference_wbs_template_id_lar   = #{referencePrivateWbsProjectId},
         SET reference_wbs_template_id_lar   = #{referencePrivateWbsProjectId},

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

@@ -89,7 +89,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
             //公有引用
             //公有引用
             return ForestNodeMerger.merge(baseMapper.tree(wbsId, projectId, wbsInfo.getWbsType()));
             return ForestNodeMerger.merge(baseMapper.tree(wbsId, projectId, wbsInfo.getWbsType()));
         } else {
         } else {
-            //私有引用
+            //私有引用`
             WbsTreePrivate nodeRoot = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getWbsId, wbsId).eq(WbsTreePrivate::getProjectId, projectId).eq(WbsTreePrivate::getParentId, 0L));
             WbsTreePrivate nodeRoot = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getWbsId, wbsId).eq(WbsTreePrivate::getProjectId, projectId).eq(WbsTreePrivate::getParentId, 0L));
             if (nodeRoot != null) {
             if (nodeRoot != null) {
                 return ForestNodeMerger.merge(baseMapper.tree(wbsId, projectId, Integer.valueOf(nodeRoot.getWbsType())));
                 return ForestNodeMerger.merge(baseMapper.tree(wbsId, projectId, Integer.valueOf(nodeRoot.getWbsType())));

+ 54 - 9
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -323,7 +323,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         ProjectInfo projectInfo = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(ProjectInfo.class)).stream().findAny().orElse(null);
         ProjectInfo projectInfo = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(ProjectInfo.class)).stream().findAny().orElse(null);
         if (projectInfo != null) {
         if (projectInfo != null) {
             if (("1").equals(wbsTreePrivate.getWbsType())) {
             if (("1").equals(wbsTreePrivate.getWbsType())) {
-                //TODO =====质检公有=====
+                /*=====质检公有=====*/
                 if (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateId()) && (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateType()) && ("public").equals(projectInfo.getReferenceWbsTemplateType()))) {
                 if (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateId()) && (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateType()) && ("public").equals(projectInfo.getReferenceWbsTemplateType()))) {
                     //获取引用的公有树节点信息,没有元素表
                     //获取引用的公有树节点信息,没有元素表
                     WbsTree wbsTree = wbsTreeMapper.selectOne(Wrappers.<WbsTree>lambdaQuery().eq(WbsTree::getId, wbsTreePrivate.getId()).eq(WbsTree::getStatus, 1));
                     WbsTree wbsTree = wbsTreeMapper.selectOne(Wrappers.<WbsTree>lambdaQuery().eq(WbsTree::getId, wbsTreePrivate.getId()).eq(WbsTree::getStatus, 1));
@@ -342,7 +342,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                     this.asyncUpdateWbsPublic(childNodesAllPublic, childNodesAllNowProjectNodes, wbsTreePrivate.getProjectId(), Integer.parseInt(wbsTreePrivate.getWbsType()));
                     this.asyncUpdateWbsPublic(childNodesAllPublic, childNodesAllNowProjectNodes, wbsTreePrivate.getProjectId(), Integer.parseInt(wbsTreePrivate.getWbsType()));
 
 
                 } else if (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateId()) && ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateType()) && ("private").equals(projectInfo.getReferenceWbsTemplateType())) {
                 } else if (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateId()) && ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateType()) && ("private").equals(projectInfo.getReferenceWbsTemplateType())) {
-                    //TODO =====质检私有=====
+                    /*=====质检私有=====*/
                     //获取私有引用根节点
                     //获取私有引用根节点
                     WbsTreePrivate wbsTreePrivateRecord = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().select(WbsTreePrivate::getProjectId, WbsTreePrivate::getWbsId).eq(WbsTreePrivate::getPKeyId, projectInfo.getReferenceWbsTemplateId()));
                     WbsTreePrivate wbsTreePrivateRecord = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().select(WbsTreePrivate::getProjectId, WbsTreePrivate::getWbsId).eq(WbsTreePrivate::getPKeyId, projectInfo.getReferenceWbsTemplateId()));
 
 
@@ -363,7 +363,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                 }
                 }
 
 
             } else if (("2").equals(wbsTreePrivate.getWbsType())) {
             } else if (("2").equals(wbsTreePrivate.getWbsType())) {
-                //TODO =====试验公有=====
+                /*=====试验公有=====*/
                 if (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateIdTrial()) && (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateTypeTrial()) && ("public").equals(projectInfo.getReferenceWbsTemplateTypeTrial()))) {
                 if (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateIdTrial()) && (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateTypeTrial()) && ("public").equals(projectInfo.getReferenceWbsTemplateTypeTrial()))) {
                     //获取引用的公有树节点信息,没有元素表
                     //获取引用的公有树节点信息,没有元素表
                     WbsTree wbsTree = wbsTreeMapper.selectOne(Wrappers.<WbsTree>lambdaQuery().eq(WbsTree::getId, wbsTreePrivate.getId()).eq(WbsTree::getWbsId, projectInfo.getReferenceWbsTemplateIdTrial()).eq(WbsTree::getStatus, 1));
                     WbsTree wbsTree = wbsTreeMapper.selectOne(Wrappers.<WbsTree>lambdaQuery().eq(WbsTree::getId, wbsTreePrivate.getId()).eq(WbsTree::getWbsId, projectInfo.getReferenceWbsTemplateIdTrial()).eq(WbsTree::getStatus, 1));
@@ -381,7 +381,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                     this.asyncUpdateWbsPublic(childNodesAllPublic, childNodesAllNowProjectNodes, wbsTreePrivate.getProjectId(), Integer.parseInt(wbsTreePrivate.getWbsType()));
                     this.asyncUpdateWbsPublic(childNodesAllPublic, childNodesAllNowProjectNodes, wbsTreePrivate.getProjectId(), Integer.parseInt(wbsTreePrivate.getWbsType()));
 
 
                 } else if (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateIdTrial()) && (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateTypeTrial()) && ("private").equals(projectInfo.getReferenceWbsTemplateTypeTrial()))) {
                 } else if (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateIdTrial()) && (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateTypeTrial()) && ("private").equals(projectInfo.getReferenceWbsTemplateTypeTrial()))) {
-                    //TODO =====试验私有=====
+                    /*=====试验私有=====*/
                     //私有引用试验根节点
                     //私有引用试验根节点
                     WbsTreePrivate wbsTreePrivateRecord = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().select(WbsTreePrivate::getProjectId, WbsTreePrivate::getWbsId).eq(WbsTreePrivate::getPKeyId, projectInfo.getReferenceWbsTemplateIdTrial()).eq(WbsTreePrivate::getStatus, 1));
                     WbsTreePrivate wbsTreePrivateRecord = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().select(WbsTreePrivate::getProjectId, WbsTreePrivate::getWbsId).eq(WbsTreePrivate::getPKeyId, projectInfo.getReferenceWbsTemplateIdTrial()).eq(WbsTreePrivate::getStatus, 1));
                     //引用模板的对应节点
                     //引用模板的对应节点
@@ -398,6 +398,42 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
 
 
                     this.asyncUpdateWbsPrivate(childNodesAllRecordProject, childNodesAllNowProject, wbsTreePrivate.getProjectId(), projectInfo.getReferenceWbsTemplateIdTrial().toString(), Integer.parseInt(wbsTreePrivate.getWbsType()));
                     this.asyncUpdateWbsPrivate(childNodesAllRecordProject, childNodesAllNowProject, wbsTreePrivate.getProjectId(), projectInfo.getReferenceWbsTemplateIdTrial().toString(), Integer.parseInt(wbsTreePrivate.getWbsType()));
                 }
                 }
+            } else if (("3").equals(wbsTreePrivate.getWbsType())) {
+                /*=====计量公有=====*/
+                if (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateIdMeter()) && (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateTypeMeter()) && ("public").equals(projectInfo.getReferenceWbsTemplateTypeMeter()))) {
+                    //获取引用的公有树节点信息,没有元素表
+                    WbsTree wbsTree = wbsTreeMapper.selectOne(Wrappers.<WbsTree>lambdaQuery().eq(WbsTree::getId, wbsTreePrivate.getId()).eq(WbsTree::getWbsId, projectInfo.getReferenceWbsTemplateIdMeter()).eq(WbsTree::getStatus, 1));
+                    List<WbsTree> childNodesAllPublic = this.getChildNodes(wbsTree);
+                    if (childNodesAllPublic == null) {
+                        childNodesAllPublic = new ArrayList<>();
+                    }
+                    childNodesAllPublic.add(wbsTree);
+
+                    //获取当前项目私节点、元素表
+                    List<WbsTreePrivate> childNodesAllNowProject = this.getChildNodesAllNowProject(wbsTreePrivate);
+                    //公有引用,由于没有关联清表,html_url不存在,所以不同步表的html_url信息
+                    List<WbsTreePrivate> childNodesAllNowProjectNodes = childNodesAllNowProject.stream().filter(f -> new Integer(1).equals(f.getType())).collect(Collectors.toList());
+
+                    this.asyncUpdateWbsPublic(childNodesAllPublic, childNodesAllNowProjectNodes, wbsTreePrivate.getProjectId(), Integer.parseInt(wbsTreePrivate.getWbsType()));
+
+                } else if (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateIdMeter()) && (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateTypeMeter()) && ("private").equals(projectInfo.getReferenceWbsTemplateTypeMeter()))) {
+                    /*=====计量私有=====*/
+                    //私有引用计量根节点
+                    WbsTreePrivate wbsTreePrivateRecord = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().select(WbsTreePrivate::getProjectId, WbsTreePrivate::getWbsId).eq(WbsTreePrivate::getPKeyId, projectInfo.getReferenceWbsTemplateIdMeter()).eq(WbsTreePrivate::getStatus, 1));
+                    //引用模板的对应节点
+                    WbsTreePrivate recordSelectNode = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getId, wbsTreePrivate.getId()).eq(WbsTreePrivate::getProjectId, wbsTreePrivateRecord.getProjectId()).eq(WbsTreePrivate::getWbsId, wbsTreePrivateRecord.getWbsId()));
+                    //关联项目的对应节点的所有子级
+                    List<WbsTreePrivate> childNodesAllRecordProject = this.getChildNodes(recordSelectNode);
+                    if (childNodesAllRecordProject == null) {
+                        childNodesAllRecordProject = new ArrayList<>();
+                    }
+                    childNodesAllRecordProject.add(recordSelectNode);
+
+                    //获取当前项目私节点、元素表
+                    List<WbsTreePrivate> childNodesAllNowProject = this.getChildNodesAllNowProject(wbsTreePrivate);
+
+                    this.asyncUpdateWbsPrivate(childNodesAllRecordProject, childNodesAllNowProject, wbsTreePrivate.getProjectId(), projectInfo.getReferenceWbsTemplateIdMeter().toString(), Integer.parseInt(wbsTreePrivate.getWbsType()));
+                }
             }
             }
         }
         }
         return true;
         return true;
@@ -946,7 +982,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                     //映射新老pKeyId,用于保存表单配置
                     //映射新老pKeyId,用于保存表单配置
                     Map<Long, Long> map = new HashMap<>();
                     Map<Long, Long> map = new HashMap<>();
                     //是否存在独立库表,true为不存在,不存在才同步
                     //是否存在独立库表,true为不存在,不存在才同步
-                    Boolean isExist = true;
+                    boolean isExist = true;
 
 
                     if (pawDTO.getReferenceType().equals("public")) {
                     if (pawDTO.getReferenceType().equals("public")) {
                         //获取当前树下所有节点、表信息
                         //获取当前树下所有节点、表信息
@@ -998,7 +1034,10 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
 
 
                             if (isType10WithParentIdMinus10) {
                             if (isType10WithParentIdMinus10) {
                                 //判断是否存在独立表单,不存在则添加
                                 //判断是否存在独立表单,不存在则添加
-                                boolean existsInWbsTreePrivatesTableDL = wbsTreePrivatesTableDL.stream().anyMatch(t -> t.getId().equals(wbsTreePrivate.getId()));
+                                boolean existsInWbsTreePrivatesTableDL = false;
+                                if (wbsTreePrivatesTableDL != null) {
+                                    existsInWbsTreePrivatesTableDL = wbsTreePrivatesTableDL.stream().anyMatch(t -> t.getId().equals(wbsTreePrivate.getId()));
+                                }
                                 if (!existsInWbsTreePrivatesTableDL) {
                                 if (!existsInWbsTreePrivatesTableDL) {
                                     addListData.add(wbsTreePrivate);
                                     addListData.add(wbsTreePrivate);
                                 }
                                 }
@@ -1034,13 +1073,16 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                         for (List<WbsTreePrivate> addList : partition1) {
                         for (List<WbsTreePrivate> addList : partition1) {
                             wbsTreePrivateService.insertBatch(addList, 1000);
                             wbsTreePrivateService.insertBatch(addList, 1000);
                         }
                         }
-                        if (pawDTO.getWbsType() == 1) {
+                        if (pawDTO.getWbsType() == 1) { //质检
                             projectInfoMapper.updateTemplateInfoQuality(pawDTO.getProjectId(), pawDTO.getWbsId(), "public");
                             projectInfoMapper.updateTemplateInfoQuality(pawDTO.getProjectId(), pawDTO.getWbsId(), "public");
                         }
                         }
-                        if (pawDTO.getWbsType() == 2) {
+                        if (pawDTO.getWbsType() == 2) { //试验
                             projectInfoMapper.updateTemplateInfoTrial(pawDTO.getProjectId(), pawDTO.getWbsId(), "public");
                             projectInfoMapper.updateTemplateInfoTrial(pawDTO.getProjectId(), pawDTO.getWbsId(), "public");
                         }
                         }
-                        if (pawDTO.getWbsType() == 5) {
+                        if (pawDTO.getWbsType() == 3) { //计量
+                            projectInfoMapper.updateTemplateInfoMeter(pawDTO.getProjectId(), pawDTO.getWbsId(), "public");
+                        }
+                        if (pawDTO.getWbsType() == 5) { //征拆
                             projectInfoMapper.updateTemplateInfoLar(pawDTO.getProjectId(), pawDTO.getWbsId(), "public");
                             projectInfoMapper.updateTemplateInfoLar(pawDTO.getProjectId(), pawDTO.getWbsId(), "public");
                         }
                         }
                     } else if (pawDTO.getReferenceType().equals("private")) {
                     } else if (pawDTO.getReferenceType().equals("private")) {
@@ -1062,6 +1104,9 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                         if (pawDTO.getWbsType() == 2) {
                         if (pawDTO.getWbsType() == 2) {
                             projectInfoMapper.updateTemplateInfoTrial(pawDTO.getProjectId(), pawDTO.getPrimaryKeyId(), "private");
                             projectInfoMapper.updateTemplateInfoTrial(pawDTO.getProjectId(), pawDTO.getPrimaryKeyId(), "private");
                         }
                         }
+                        if (pawDTO.getWbsType() == 3) { //计量
+                            projectInfoMapper.updateTemplateInfoMeter(pawDTO.getProjectId(), pawDTO.getPrimaryKeyId(), "private");
+                        }
                         if (pawDTO.getWbsType() == 5) {
                         if (pawDTO.getWbsType() == 5) {
                             projectInfoMapper.updateTemplateInfoLar(pawDTO.getProjectId(), pawDTO.getWbsId(), "private");
                             projectInfoMapper.updateTemplateInfoLar(pawDTO.getProjectId(), pawDTO.getWbsId(), "private");
                         }
                         }

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

@@ -12,6 +12,7 @@
     <artifactId>blade-meter</artifactId>
     <artifactId>blade-meter</artifactId>
     <name>${project.artifactId}</name>
     <name>${project.artifactId}</name>
     <version>${blade.project.version}</version>
     <version>${blade.project.version}</version>
+    <packaging>jar</packaging>
 
 
     <dependencies>
     <dependencies>
         <dependency>
         <dependency>

+ 11 - 1
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/ContractInventoryFormController.java

@@ -109,7 +109,7 @@ public class ContractInventoryFormController extends BladeController {
 	 */
 	 */
 	@PostMapping("/add")
 	@PostMapping("/add")
 	@ApiOperationSupport(order = 4)
 	@ApiOperationSupport(order = 4)
-	@ApiOperation(value = "新增", notes = "传入整个节点信息,普通新增isSupplement传0,增补传1")
+	@ApiOperation(value = "新增", notes = "传入整个节点信息,普通新增isSupplement传0,增补传1。parentId传当前节点id")
 	public R<String> add(@Valid @RequestBody ContractInventoryForm form) {
 	public R<String> add(@Valid @RequestBody ContractInventoryForm form) {
 		contractInventoryFormService.add(form);
 		contractInventoryFormService.add(form);
 		return R.success("新增成功");
 		return R.success("新增成功");
@@ -149,5 +149,15 @@ public class ContractInventoryFormController extends BladeController {
 		return R.success("删除成功");
 		return R.success("删除成功");
 	}
 	}
 
 
+	/**
+	 * 获取导入模板 合同工程清单表
+	 */
+	@GetMapping("/getImportTemplate")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "获取导入模板", notes = "返回导入模板URL")
+	public R<String> getImportTemplate() {
+		return R.data("https://bladex-chongqing-info.oss-cn-hangzhou.aliyuncs.com//upload/20231201/853cebb7e9c89c982dd15f842fed42a3.xls");
+	}
+
 	
 	
 }
 }

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

@@ -25,6 +25,7 @@ import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.meter.vo.ContractMaterialTreeVO;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RequestParam;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -74,17 +75,6 @@ public class ContractMaterialController extends BladeController {
 		return R.data(pages);
 		return R.data(pages);
 	}
 	}
 
 
-//	/**
-//	 * 详情
-//	 */
-//	@GetMapping("/detail")
-//	@ApiOperationSupport(order = 3)
-//	@ApiOperation(value = "详情", notes = "传入contractMaterial")
-//	public R<ContractMaterial> detail(ContractMaterial contractMaterial) {
-//		ContractMaterial detail = contractMaterialService.getOne(Condition.getQueryWrapper(contractMaterial));
-//		return R.data(detail);
-//	}
-
 	
 	
 	/**
 	/**
 	 * 删除 合同材料表
 	 * 删除 合同材料表
@@ -96,5 +86,15 @@ public class ContractMaterialController extends BladeController {
 		return R.status(contractMaterialService.deleteLogic(Func.toLongList(ids)));
 		return R.status(contractMaterialService.deleteLogic(Func.toLongList(ids)));
 	}
 	}
 
 
+	/**
+	 * 材料树 合同材料表
+	 */
+	@GetMapping("/materialTree")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "材料树", notes = "传入合同id")
+	public R<ContractMaterialTreeVO> materialTree(Long contractId) {
+		return R.data(contractMaterialService.materialTree(contractId));
+	}
+
 	
 	
 }
 }

+ 30 - 48
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/ContractMeterPeriodController.java

@@ -27,6 +27,9 @@ import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.meter.dto.ContractMeterPeriodDTO;
+import org.springblade.meter.entity.MeterPeriod;
+import org.springblade.meter.vo.ContractMeterPeriodVO;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RequestParam;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -34,6 +37,8 @@ import org.springblade.meter.entity.ContractMeterPeriod;
 import org.springblade.meter.service.IContractMeterPeriodService;
 import org.springblade.meter.service.IContractMeterPeriodService;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.boot.ctrl.BladeController;
 
 
+import java.util.List;
+
 /**
 /**
  * 合同计量期表 控制器
  * 合同计量期表 控制器
  *
  *
@@ -48,70 +53,47 @@ public class ContractMeterPeriodController extends BladeController {
 
 
 	private final IContractMeterPeriodService contractMeterPeriodService;
 	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));
+	@GetMapping("/periodPage")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "合同计量期分页", notes = "参数合同id和分页条件,返回citeStatus判断是否可以编辑")
+	public R<IPage<ContractMeterPeriodVO>> periodPage(Long contractId, Query query) {
+		IPage<ContractMeterPeriodVO> pages = contractMeterPeriodService.periodPage(contractId,query);
 		return R.data(pages);
 		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("/edit")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "编辑合同计量期", notes = "传入合同段id与计量期集合")
+	public R edit(@Valid @RequestBody ContractMeterPeriodDTO dto) {
+		contractMeterPeriodService.edit(dto);
+		return R.success("保存成功");
 	}
 	}
 
 
 	/**
 	/**
-	 * 新增或修改 合同计量期表
+	 * 计量期列表-全部 材料开工计量期表
 	 */
 	 */
-	@PostMapping("/submit")
-	@ApiOperationSupport(order = 6)
-	@ApiOperation(value = "新增或修改", notes = "传入contractMeterPeriod")
-	public R submit(@Valid @RequestBody ContractMeterPeriod contractMeterPeriod) {
-		return R.status(contractMeterPeriodService.saveOrUpdate(contractMeterPeriod));
+	@GetMapping("/allPeriod")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "合同计量期列表-全部", notes = "传入contractId")
+	public R<List<ContractMeterPeriod>> allPeriod(Long contractId) {
+		return R.data(contractMeterPeriodService.allPeriod(contractId));
 	}
 	}
 
 
-	
 	/**
 	/**
-	 * 删除 合同计量期表
+	 * 计量期列表-未关联报表 材料开工计量期表
 	 */
 	 */
-	@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)));
+	@GetMapping("/conditionPeriod")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "合同计量期列表-未关联报表", notes = "传入contractId")
+	public R<List<ContractMeterPeriod>> conditionPeriod(Long contractId) {
+		return R.data(contractMeterPeriodService.conditionPeriod(contractId));
 	}
 	}
-
 	
 	
 }
 }

+ 29 - 35
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/MaterialMeterFormController.java

@@ -16,9 +16,7 @@
  */
  */
 package org.springblade.meter.controller;
 package org.springblade.meter.controller;
 
 
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
+import io.swagger.annotations.*;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import javax.validation.Valid;
 import javax.validation.Valid;
@@ -27,6 +25,8 @@ import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.meter.dto.MaterialMeterFormDTO;
+import org.springblade.meter.vo.MaterialMeterFormVO;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RequestParam;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -48,38 +48,42 @@ public class MaterialMeterFormController extends BladeController {
 
 
 	private final IMaterialMeterFormService materialMeterFormService;
 	private final IMaterialMeterFormService materialMeterFormService;
 
 
+
 	/**
 	/**
-	 * 详情
+	 * 新增 材料计量单
 	 */
 	 */
-	@GetMapping("/detail")
+	@PostMapping("/add")
 	@ApiOperationSupport(order = 1)
 	@ApiOperationSupport(order = 1)
-	@ApiOperation(value = "详情", notes = "传入materialMeterForm")
-	public R<MaterialMeterForm> detail(MaterialMeterForm materialMeterForm) {
-		MaterialMeterForm detail = materialMeterFormService.getOne(Condition.getQueryWrapper(materialMeterForm));
-		return R.data(detail);
+	@ApiOperation(value = "新增", notes = "传入materialMeterFormDTO")
+	public R add(@Valid @RequestBody MaterialMeterFormDTO dto) {
+		materialMeterFormService.add(dto);
+		return R.success("新增成功");
 	}
 	}
 
 
 	/**
 	/**
 	 * 分页 材料计量单
 	 * 分页 材料计量单
 	 */
 	 */
-	@GetMapping("/list")
+	@GetMapping("/meterPage")
 	@ApiOperationSupport(order = 2)
 	@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));
+	@ApiOperation(value = "分页", notes = "传入计量期id与合同id和分页信息,不传计量期id代表查询所有")
+	@ApiImplicitParams(value = {
+			@ApiImplicitParam(name = "meterPeriodId", value = "计量期id", required = false),
+			@ApiImplicitParam(name = "contractId", value = "合同id", required = true)
+	})
+	public R<IPage<MaterialMeterFormVO>> meterPage(Long contractId, Long meterPeriodId, Query query) {
+		IPage<MaterialMeterFormVO> pages = materialMeterFormService.meterPage(contractId,meterPeriodId,query);
 		return R.data(pages);
 		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));
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "详情", notes = "传入id")
+	public R<MaterialMeterFormVO> detail(Long id) {
+		MaterialMeterFormVO detail = materialMeterFormService.detail(id);
+		return R.data(detail);
 	}
 	}
 
 
 	/**
 	/**
@@ -87,22 +91,12 @@ public class MaterialMeterFormController extends BladeController {
 	 */
 	 */
 	@PostMapping("/update")
 	@PostMapping("/update")
 	@ApiOperationSupport(order = 5)
 	@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));
+	@ApiOperation(value = "修改", notes = "传入materialMeterFormDTO")
+	public R update(@Valid @RequestBody MaterialMeterFormDTO dto) {
+		materialMeterFormService.update2(dto);
+		return R.success("修改成功");
 	}
 	}
 
 
-	
 	/**
 	/**
 	 * 删除 材料计量单
 	 * 删除 材料计量单
 	 */
 	 */

+ 17 - 45
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/MaterialStartStatementController.java

@@ -16,9 +16,7 @@
  */
  */
 package org.springblade.meter.controller;
 package org.springblade.meter.controller;
 
 
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
+import io.swagger.annotations.*;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import javax.validation.Valid;
 import javax.validation.Valid;
@@ -49,59 +47,33 @@ public class MaterialStartStatementController extends BladeController {
 	private final IMaterialStartStatementService materialStartStatementService;
 	private final IMaterialStartStatementService materialStartStatementService;
 
 
 	/**
 	/**
-	 * 详情
+	 * 新增或修改 材料和开工报表
 	 */
 	 */
-	@GetMapping("/detail")
+	@PostMapping("/addOrUpdate")
 	@ApiOperationSupport(order = 1)
 	@ApiOperationSupport(order = 1)
-	@ApiOperation(value = "详情", notes = "传入materialStartStatement")
-	public R<MaterialStartStatement> detail(MaterialStartStatement materialStartStatement) {
-		MaterialStartStatement detail = materialStartStatementService.getOne(Condition.getQueryWrapper(materialStartStatement));
-		return R.data(detail);
+	@ApiOperation(value = "新增或修改", notes = "传入materialStartStatement,type:1材料2开工")
+	public R addOrUpdate(@Valid @RequestBody MaterialStartStatement materialStartStatement) {
+		return R.status(materialStartStatementService.saveOrUpdate(materialStartStatement));
 	}
 	}
 
 
+
 	/**
 	/**
 	 * 分页 材料和开工报表
 	 * 分页 材料和开工报表
 	 */
 	 */
-	@GetMapping("/list")
+	@GetMapping("/page")
 	@ApiOperationSupport(order = 2)
 	@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));
+	@ApiOperation(value = "分页", notes = "传入合同id和type,type:1材料2开工")
+	@ApiImplicitParams(value = {
+			@ApiImplicitParam(name = "type", value = "1材料2开工", required = true),
+			@ApiImplicitParam(name = "contractId", value = "合同id", required = true),
+			@ApiImplicitParam(name = "current", value = "当前页", required = true),
+			@ApiImplicitParam(name = "size", value = "每页数量", required = true)
+	})
+	public R<IPage<MaterialStartStatement>> page(MaterialStartStatement statement, Query query) {
+		IPage<MaterialStartStatement> pages = materialStartStatementService.page2(statement,query);
 		return R.data(pages);
 		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));
-	}
-
-	
 	/**
 	/**
 	 * 删除 材料和开工报表
 	 * 删除 材料和开工报表
 	 */
 	 */

+ 39 - 42
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/MeterPeriodController.java

@@ -27,6 +27,8 @@ import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.meter.dto.MeterPeriodDTO;
+import org.springblade.meter.vo.MeterPeriodVO;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RequestParam;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -34,6 +36,8 @@ import org.springblade.meter.entity.MeterPeriod;
 import org.springblade.meter.service.IMeterPeriodService;
 import org.springblade.meter.service.IMeterPeriodService;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.boot.ctrl.BladeController;
 
 
+import java.util.List;
+
 /**
 /**
  * 材料开工计量期表 控制器
  * 材料开工计量期表 控制器
  *
  *
@@ -48,70 +52,63 @@ public class MeterPeriodController extends BladeController {
 
 
 	private final IMeterPeriodService meterPeriodService;
 	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));
+	@GetMapping("/periodPage")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "分页", notes = "合同id和分页条件和type:材料传1开工传2,返回citeStatus判断是否可以编辑")
+	public R<IPage<MeterPeriodVO>> periodPage(Long contractId,Integer type, Query query) {
+		IPage<MeterPeriodVO> pages = meterPeriodService.periodPage(contractId,query,type);
 		return R.data(pages);
 		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("/edit")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "编辑计量期", notes = "传入合同段id与计量期集合,材料type传1,开工type传2")
+	public R edit(@Valid @RequestBody MeterPeriodDTO dto) {
+		meterPeriodService.edit(dto);
+		return R.success("保存成功");
 	}
 	}
 
 
 	/**
 	/**
-	 * 修改 材料开工计量期表
+	 * 锁定 材料开工计量期表
 	 */
 	 */
-	@PostMapping("/update")
-	@ApiOperationSupport(order = 5)
-	@ApiOperation(value = "修改", notes = "传入meterPeriod")
-	public R update(@Valid @RequestBody MeterPeriod meterPeriod) {
-		return R.status(meterPeriodService.updateById(meterPeriod));
+	@GetMapping("/locking")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "锁定", notes = "传入id和isLock,锁定isLock传0,取消锁定传1")
+	public R<String> locking(Long id,Integer isLock) {
+		meterPeriodService.locking(id,isLock);
+		return R.data("操作成功");
 	}
 	}
 
 
 	/**
 	/**
-	 * 新增或修改 材料开工计量期表
+	 * 计量期列表-全部 材料开工计量期表
 	 */
 	 */
-	@PostMapping("/submit")
-	@ApiOperationSupport(order = 6)
-	@ApiOperation(value = "新增或修改", notes = "传入meterPeriod")
-	public R submit(@Valid @RequestBody MeterPeriod meterPeriod) {
-		return R.status(meterPeriodService.saveOrUpdate(meterPeriod));
+	@GetMapping("/allPeriod")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "计量期列表-全部", notes = "传入contractId,type:材料传1开工传2")
+	public R<List<MeterPeriod>> allPeriod(Long contractId,Integer type) {
+		return R.data(meterPeriodService.allPeriod(contractId,type));
 	}
 	}
 
 
-	
 	/**
 	/**
-	 * 删除 材料开工计量期表
+	 * 计量期列表-未关联报表 材料开工计量期表
 	 */
 	 */
-	@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)));
+	@GetMapping("/conditionPeriod")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "计量期列表-未关联报表", notes = "传入contractId,type:材料传1开工传2")
+	public R<List<MeterPeriod>> conditionPeriod(Long contractId,Integer type) {
+		return R.data(meterPeriodService.conditionPeriod(contractId,type));
 	}
 	}
 
 
+
+
+
+
 	
 	
 }
 }

+ 3 - 3
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/MeterTreeController.java

@@ -227,7 +227,7 @@ public class MeterTreeController extends BladeController {
     @PostMapping("/system/sort")
     @PostMapping("/system/sort")
     @ApiOperationSupport(order = 10)
     @ApiOperationSupport(order = 10)
     @ApiOperation(value = "系统树节点同级排序", notes = "传入节点ids逗号拼接字符串,按照顺序从上到下")
     @ApiOperation(value = "系统树节点同级排序", notes = "传入节点ids逗号拼接字符串,按照顺序从上到下")
-    public R<Object> systemSort(@RequestBody String ids) {
+    public R<Object> systemSort(@RequestParam String ids) {
         if (StringUtils.isNotEmpty(ids)) {
         if (StringUtils.isNotEmpty(ids)) {
             String[] split = ids.split(",");
             String[] split = ids.split(",");
             int sort = 1;
             int sort = 1;
@@ -400,7 +400,7 @@ public class MeterTreeController extends BladeController {
     @PostMapping("/project/sort")
     @PostMapping("/project/sort")
     @ApiOperationSupport(order = 19)
     @ApiOperationSupport(order = 19)
     @ApiOperation(value = "项目树节点同级排序", notes = "传入节点ids逗号拼接字符串,按照顺序从上到下")
     @ApiOperation(value = "项目树节点同级排序", notes = "传入节点ids逗号拼接字符串,按照顺序从上到下")
-    public R<Object> projectSort(@RequestBody String ids) {
+    public R<Object> projectSort(@RequestParam String ids) {
         if (StringUtils.isNotEmpty(ids)) {
         if (StringUtils.isNotEmpty(ids)) {
             String[] split = ids.split(",");
             String[] split = ids.split(",");
             int sort = 1;
             int sort = 1;
@@ -595,7 +595,7 @@ public class MeterTreeController extends BladeController {
     @PostMapping("/contract/sort")
     @PostMapping("/contract/sort")
     @ApiOperationSupport(order = 28)
     @ApiOperationSupport(order = 28)
     @ApiOperation(value = "合同段树节点同级排序", notes = "传入节点ids逗号拼接字符串,按照顺序从上到下")
     @ApiOperation(value = "合同段树节点同级排序", notes = "传入节点ids逗号拼接字符串,按照顺序从上到下")
-    public R<Object> contractSort(@RequestBody String ids) {
+    public R<Object> contractSort(@RequestParam String ids) {
         if (StringUtils.isNotEmpty(ids)) {
         if (StringUtils.isNotEmpty(ids)) {
             String[] split = ids.split(",");
             String[] split = ids.split(",");
             int sort = 1;
             int sort = 1;

+ 307 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/MidPayItemController.java

@@ -0,0 +1,307 @@
+package org.springblade.meter.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springblade.common.utils.SnowFlakeUtil;
+import org.springblade.core.boot.ctrl.BladeController;
+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.BeanUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.meter.entity.*;
+import org.springblade.meter.service.MidPayItemContractService;
+import org.springblade.meter.service.MidPayItemProjectService;
+import org.springblade.meter.service.MidPayItemSystemService;
+import org.springblade.meter.vo.MeterMidPayItemContractVO;
+import org.springblade.meter.vo.MeterMidPayItemProjectVO;
+import org.springblade.meter.vo.MeterMidPayItemSystemVO;
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/mid/pay/item")
+@Api(value = "计量中期支付项接口", tags = "计量中期支付项接口")
+public class MidPayItemController extends BladeController {
+
+    private final JdbcTemplate jdbcTemplate;
+    private final MidPayItemSystemService payItemSystemService;
+    private final MidPayItemProjectService payItemProjectService;
+    private final MidPayItemContractService payItemContractService;
+
+    @GetMapping("/system/detail")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation(value = "系统中期支付项详情", notes = "传入id")
+    public R<MeterMidPayItemSystemVO> systemDetail(@RequestParam String id) {
+        if (StringUtils.isNotEmpty(id)) {
+            MeterMidPayItemSystem obj = payItemSystemService.getById(id);
+            MeterMidPayItemSystemVO vo = new MeterMidPayItemSystemVO();
+            BeanUtil.copyProperties(obj, vo);
+            List<MeterMidPayItemRelation> recordInfos = jdbcTemplate.query("SELECT * FROM s_meter_mid_pay_item_relation WHERE mid_pay_id = " + id, new BeanPropertyRowMapper<>(MeterMidPayItemRelation.class));
+            if (recordInfos.size() > 0) {
+                Set<Long> ids = recordInfos.stream().map(MeterMidPayItemRelation::getMidPayIdRelation).collect(Collectors.toSet());
+                List<MeterMidPayItemSystem> recordList = payItemSystemService.listByIds(ids);
+                vo.setSummaryItemList(recordList);
+            }
+            return R.data(vo);
+        }
+        return R.data(null);
+    }
+
+    @PostMapping("/system/submit")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "系统中期支付项新增或修改", notes = "传入MeterMidPayItemSystem对象")
+    public R<Object> systemSubmit(@RequestBody MeterMidPayItemSystem obj) {
+        return R.data(payItemSystemService.saveOrUpdate(obj));
+    }
+
+    @GetMapping("/system/remove")
+    @ApiOperationSupport(order = 3)
+    @ApiOperation(value = "系统中期支付项删除", notes = "传入id")
+    public R<Object> systemRemove(@RequestParam String id) {
+        return R.data(payItemSystemService.removeById(id));
+    }
+
+    @PostMapping("/system/page")
+    @ApiOperationSupport(order = 4)
+    @ApiOperation(value = "系统中期支付项分页", notes = "传入MeterMidPayItemSystem、Query")
+    public R<IPage<MeterMidPayItemSystem>> systemPage(@RequestBody MeterMidPayItemSystem meterMidPayItemSystem, @RequestBody Query query) {
+        IPage<MeterMidPayItemSystem> pages = payItemSystemService.page(Condition.getPage(query), Condition.getQueryWrapper(meterMidPayItemSystem));
+        List<MeterMidPayItemSystem> sortResult = pages.getRecords().stream()
+                .sorted(Comparator.comparing(MeterMidPayItemSystem::getCreateTime))
+                .collect(Collectors.toList());
+        return R.data(pages.setRecords(sortResult));
+    }
+
+    @PostMapping("/system/list")
+    @ApiOperationSupport(order = 5)
+    @ApiOperation(value = "系统中期支付项列表", notes = "type=0(未被引用),type=1(已引用),type=空(全部)")
+    public R<List<MeterMidPayItemSystem>> systemList(@RequestParam String type) {
+        LambdaQueryWrapper<MeterMidPayItemSystem> queryWrapper = Wrappers.lambdaQuery();
+        if (type != null) {
+            queryWrapper.eq(MeterMidPayItemSystem::getIsReferenced, type);
+        }
+        queryWrapper.orderByAsc(MeterMidPayItemSystem::getCreateTime);
+        return R.data(payItemSystemService.getBaseMapper().selectList(queryWrapper));
+    }
+
+    @GetMapping("/project/detail")
+    @ApiOperationSupport(order = 6)
+    @ApiOperation(value = "项目中期支付项详情", notes = "传入id")
+    public R<MeterMidPayItemProjectVO> projectDetail(@RequestParam String id) {
+        if (StringUtils.isNotEmpty(id)) {
+            MeterMidPayItemProject obj = payItemProjectService.getById(id);
+            MeterMidPayItemProjectVO vo = new MeterMidPayItemProjectVO();
+            BeanUtil.copyProperties(obj, vo);
+            List<MeterMidPayItemRelation> recordInfos = jdbcTemplate.query("SELECT * FROM s_meter_mid_pay_item_relation WHERE mid_pay_id = " + id, new BeanPropertyRowMapper<>(MeterMidPayItemRelation.class));
+            if (recordInfos.size() > 0) {
+                Set<Long> ids = recordInfos.stream().map(MeterMidPayItemRelation::getMidPayIdRelation).collect(Collectors.toSet());
+                List<MeterMidPayItemProject> recordList = payItemProjectService.listByIds(ids);
+                vo.setSummaryItemList(recordList);
+            }
+            return R.data(vo);
+        }
+        return R.data(null);
+    }
+
+    @PostMapping("/project/referenced")
+    @ApiOperationSupport(order = 7)
+    @ApiOperation(value = "项目中期支付项引用系统级数据", notes = "传入数据id逗号拼接ids、projectId")
+    public R<Object> projectReferenced(@RequestParam String ids, @RequestParam Long projectId) {
+        if (StringUtils.isNotEmpty(ids)) {
+            List<Long> systemIds = Func.toLongList(ids);
+            List<MeterMidPayItemSystem> meterMidPayItemSystems = payItemSystemService.getBaseMapper().selectList(Wrappers.<MeterMidPayItemSystem>lambdaQuery().in(MeterMidPayItemSystem::getId, systemIds).orderByAsc(MeterMidPayItemSystem::getCreateTime));
+            List<MeterMidPayItemProject> meterMidPayItemProjects = new ArrayList<>();
+            for (MeterMidPayItemSystem systemPay : meterMidPayItemSystems) {
+                MeterMidPayItemProject projectPay = BeanUtil.copyProperties(systemPay, MeterMidPayItemProject.class);
+                if (projectPay != null) {
+                    projectPay.setId(SnowFlakeUtil.getId());
+                    projectPay.setProjectId(projectId);
+                    meterMidPayItemProjects.add(projectPay);
+                }
+            }
+            if (meterMidPayItemProjects.size() > 0) {
+                /*批量修改状态为被引用*/
+                UpdateWrapper<MeterMidPayItemSystem> updateWrapper = new UpdateWrapper<>();
+                updateWrapper.in("id", systemIds);
+                MeterMidPayItemSystem updateEntity = new MeterMidPayItemSystem();
+                updateEntity.setIsReferenced(1);
+                boolean b1 = payItemSystemService.update(updateEntity, updateWrapper);
+                boolean b2 = payItemProjectService.saveBatch(meterMidPayItemProjects, 1000);
+                if (b1 && b2) {
+                    return R.success("操作成功");
+                }
+            }
+        }
+        return R.fail("操作失败");
+    }
+
+    @PostMapping("/project/update")
+    @ApiOperationSupport(order = 8)
+    @ApiOperation(value = "项目中期支付项修改", notes = "传入MeterMidPayItemProject对象")
+    public R<Object> projectUpdate(@RequestBody MeterMidPayItemProject obj) {
+        return R.data(payItemProjectService.updateById(obj));
+    }
+
+    @GetMapping("/project/remove")
+    @ApiOperationSupport(order = 9)
+    @ApiOperation(value = "项目中期支付项删除", notes = "传入id")
+    public R<Object> projectRemove(@RequestParam String id) {
+        return R.data(payItemProjectService.removeById(id));
+    }
+
+    @PostMapping("/project/page")
+    @ApiOperationSupport(order = 10)
+    @ApiOperation(value = "项目中期支付项分页", notes = "传入MeterMidPayItemProject、Query")
+    public R<IPage<MeterMidPayItemProject>> projectPage(@RequestBody MeterMidPayItemProject meterMidPayItemProject, @RequestBody Query query) {
+        IPage<MeterMidPayItemProject> pages = payItemProjectService.page(Condition.getPage(query), Condition.getQueryWrapper(meterMidPayItemProject));
+        List<MeterMidPayItemProject> sortResult = pages.getRecords().stream()
+                .sorted(Comparator.comparing(MeterMidPayItemProject::getCreateTime))
+                .collect(Collectors.toList());
+        return R.data(pages.setRecords(sortResult));
+    }
+
+    @PostMapping("/project/list")
+    @ApiOperationSupport(order = 11)
+    @ApiOperation(value = "项目中期支付项列表", notes = "传入type=0(未被引用),type=1(已引用),type=空(全部)、projectId")
+    public R<List<MeterMidPayItemProject>> projectList(@RequestParam String type, @RequestParam String projectId) {
+        LambdaQueryWrapper<MeterMidPayItemProject> queryWrapper = Wrappers.lambdaQuery();
+        if (type != null) {
+            queryWrapper.eq(MeterMidPayItemProject::getIsReferenced, type);
+        }
+        queryWrapper.eq(MeterMidPayItemProject::getProjectId, projectId);
+        queryWrapper.orderByAsc(MeterMidPayItemProject::getCreateTime);
+        return R.data(payItemProjectService.getBaseMapper().selectList(queryWrapper));
+    }
+
+    @GetMapping("/contract/detail")
+    @ApiOperationSupport(order = 12)
+    @ApiOperation(value = "合同段中期支付项详情", notes = "传入id")
+    public R<MeterMidPayItemContractVO> contractDetail(@RequestParam String id) {
+        if (StringUtils.isNotEmpty(id)) {
+            MeterMidPayItemContract obj = payItemContractService.getById(id);
+            MeterMidPayItemContractVO vo = new MeterMidPayItemContractVO();
+            BeanUtil.copyProperties(obj, vo);
+            List<MeterMidPayItemRelation> recordInfos = jdbcTemplate.query("SELECT * FROM s_meter_mid_pay_item_relation WHERE mid_pay_id = " + id, new BeanPropertyRowMapper<>(MeterMidPayItemRelation.class));
+            if (recordInfos.size() > 0) {
+                Set<Long> ids = recordInfos.stream().map(MeterMidPayItemRelation::getMidPayIdRelation).collect(Collectors.toSet());
+                List<MeterMidPayItemContract> recordList = payItemContractService.listByIds(ids);
+                vo.setSummaryItemList(recordList);
+            }
+            return R.data(vo);
+        }
+        return R.data(null);
+    }
+
+    @PostMapping("/contract/referenced")
+    @ApiOperationSupport(order = 13)
+    @ApiOperation(value = "合同段中期支付项引用项目级数据", notes = "传入数据id逗号拼接ids、projectId、contractId")
+    public R<Object> contractReferenced(@RequestParam String ids, @RequestParam Long projectId, @RequestParam Long contractId) {
+        if (StringUtils.isNotEmpty(ids)) {
+            List<Long> projectIds = Func.toLongList(ids);
+            List<MeterMidPayItemProject> meterMidPayItemProjects = payItemProjectService.getBaseMapper().selectList(Wrappers.<MeterMidPayItemProject>lambdaQuery().in(MeterMidPayItemProject::getId, projectIds).orderByAsc(MeterMidPayItemProject::getCreateTime));
+            List<MeterMidPayItemContract> meterMidPayItemContracts = new ArrayList<>();
+            for (MeterMidPayItemProject projectPay : meterMidPayItemProjects) {
+                MeterMidPayItemContract contractPay = BeanUtil.copyProperties(projectPay, MeterMidPayItemContract.class);
+                if (contractPay != null) {
+                    contractPay.setId(SnowFlakeUtil.getId());
+                    contractPay.setProjectId(projectId);
+                    contractPay.setContractId(contractId);
+                    meterMidPayItemContracts.add(contractPay);
+                }
+            }
+            if (meterMidPayItemContracts.size() > 0) {
+                /*批量修改状态为被引用*/
+                UpdateWrapper<MeterMidPayItemProject> updateWrapper = new UpdateWrapper<>();
+                updateWrapper.in("id", projectIds);
+                MeterMidPayItemProject updateEntity = new MeterMidPayItemProject();
+                updateEntity.setIsReferenced(1);
+                boolean b1 = payItemProjectService.update(updateEntity, updateWrapper);
+                boolean b2 = payItemContractService.saveBatch(meterMidPayItemContracts, 1000);
+                if (b1 && b2) {
+                    return R.success("操作成功");
+                }
+            }
+        }
+        return R.fail("操作失败");
+    }
+
+    @PostMapping("/contract/update")
+    @ApiOperationSupport(order = 14)
+    @ApiOperation(value = "合同段中期支付项修改", notes = "传入MeterMidPayItemContract对象")
+    public R<Object> contractUpdate(@RequestBody MeterMidPayItemContract obj) {
+        return R.data(payItemContractService.updateById(obj));
+    }
+
+    @GetMapping("/contract/remove")
+    @ApiOperationSupport(order = 15)
+    @ApiOperation(value = "合同段中期支付项删除", notes = "传入id")
+    public R<Object> contractRemove(@RequestParam String id) {
+        return R.data(payItemContractService.removeById(id));
+    }
+
+    @PostMapping("/contract/page")
+    @ApiOperationSupport(order = 16)
+    @ApiOperation(value = "合同段中期支付项分页", notes = "传入MeterMidPayItemContract、Query")
+    public R<IPage<MeterMidPayItemContract>> contractPage(@RequestBody MeterMidPayItemContract meterMidPayItemContract, @RequestBody Query query) {
+        IPage<MeterMidPayItemContract> pages = payItemContractService.page(Condition.getPage(query), Condition.getQueryWrapper(meterMidPayItemContract));
+        List<MeterMidPayItemContract> sortResult = pages.getRecords().stream()
+                .sorted(Comparator.comparing(MeterMidPayItemContract::getCreateTime))
+                .collect(Collectors.toList());
+        return R.data(pages.setRecords(sortResult));
+    }
+
+    @PostMapping("/contract/all-list")
+    @ApiOperationSupport(order = 17)
+    @ApiOperation(value = "合同段中期支付项列表(全部)", notes = "传入contractId")
+    public R<List<MeterMidPayItemContract>> contractAllList(@RequestParam String contractId) {
+        return R.data(payItemContractService.getBaseMapper().selectList(Wrappers.<MeterMidPayItemContract>lambdaQuery().eq(MeterMidPayItemContract::getContractId, contractId).orderByAsc(MeterMidPayItemContract::getCreateTime)));
+    }
+
+    @PostMapping("/bind/submit")
+    @ApiOperationSupport(order = 18)
+    @ApiOperation(value = "中期支付项添加汇总项", notes = "传入id、汇总项列表id逗号拼接成bindIds")
+    public R<Object> bind(@RequestParam String id, @RequestParam String bindIds) {
+        if (StringUtils.isNotEmpty(id)) {
+            if (StringUtils.isEmpty(bindIds)) {
+                /*删除*/
+                jdbcTemplate.execute("DELETE FROM s_meter_mid_pay_item_relation WHERE mid_pay_id = " + id);
+            } else {
+                /*绑定*/
+                for (String bindId : bindIds.split(",")) {
+                    jdbcTemplate.execute("DELETE FROM s_meter_mid_pay_item_relation WHERE mid_pay_id = " + id + " AND mid_pay_id_relation = " + bindId);
+                    jdbcTemplate.execute("INSERT INTO s_meter_mid_pay_item_relation(id,mid_pay_id,mid_pay_id_relation) VALUES (" + SnowFlakeUtil.getId() + "," + id + "," + bindId + ")");
+                }
+            }
+            return R.success("操作成功");
+        }
+        return R.fail("操作失败");
+    }
+
+    @PostMapping("/bind/remove")
+    @ApiOperationSupport(order = 19)
+    @ApiOperation(value = "中期支付项删除汇总项", notes = "传入id、汇总项列表bindId")
+    public R<Object> bindRemove(@RequestParam String id, @RequestParam String bindId) {
+        if (StringUtils.isNotEmpty(id) && StringUtils.isNotEmpty(bindId)) {
+            jdbcTemplate.execute("DELETE FROM s_meter_mid_pay_item_relation WHERE mid_pay_id = " + id + " AND mid_pay_id_relation = " + bindId);
+            return R.success("操作成功");
+        }
+        return R.fail("操作失败");
+    }
+
+}

+ 52 - 36
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/StartPayMeterFormController.java

@@ -17,23 +17,26 @@
 package org.springblade.meter.controller;
 package org.springblade.meter.controller;
 
 
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
+import io.swagger.annotations.*;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import javax.validation.Valid;
 import javax.validation.Valid;
 
 
-import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.meter.dto.StartPayMeterFormDTO;
+import org.springblade.meter.entity.MeterContractInfo;
+import org.springblade.meter.vo.StartPayMeterFormVO;
+import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RequestParam;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.meter.entity.StartPayMeterForm;
 import org.springblade.meter.service.IStartPayMeterFormService;
 import org.springblade.meter.service.IStartPayMeterFormService;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.boot.ctrl.BladeController;
 
 
+import java.math.BigDecimal;
+import java.util.List;
+
 /**
 /**
  * 开工预付款计量单 控制器
  * 开工预付款计量单 控制器
  *
  *
@@ -48,57 +51,70 @@ public class StartPayMeterFormController extends BladeController {
 
 
 	private final IStartPayMeterFormService startPayMeterFormService;
 	private final IStartPayMeterFormService startPayMeterFormService;
 
 
+	private final JdbcTemplate jdbcTemplate;
+
 	/**
 	/**
-	 * 详情
+	 * 开工预付款总额
 	 */
 	 */
-	@GetMapping("/detail")
+	@GetMapping("/getStartAmount")
 	@ApiOperationSupport(order = 1)
 	@ApiOperationSupport(order = 1)
-	@ApiOperation(value = "详情", notes = "传入startPayMeterForm")
-	public R<StartPayMeterForm> detail(StartPayMeterForm startPayMeterForm) {
-		StartPayMeterForm detail = startPayMeterFormService.getOne(Condition.getQueryWrapper(startPayMeterForm));
-		return R.data(detail);
+	@ApiOperation(value = "开工预付款总额", notes = "传入contractId")
+	public R<BigDecimal> getStartAmount(Long contractId) {
+		List<MeterContractInfo> list = jdbcTemplate.queryForList("select dy_total_amount from s_meter_contract_info where contract_id = " + contractId, MeterContractInfo.class);
+		if (list.size() == 0){
+			return R.data(null);
+		}else {
+			return R.data(list.get(0).getDyTotalAmount());
+		}
 	}
 	}
 
 
+
 	/**
 	/**
-	 * 分页 开工预付款计量单
+	 * 新增 开工预付款计量单
 	 */
 	 */
-	@GetMapping("/list")
+	@PostMapping("/add")
 	@ApiOperationSupport(order = 2)
 	@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);
+	@ApiOperation(value = "新增", notes = "传入startPayMeterFormDTO")
+	public R add(@Valid @RequestBody StartPayMeterFormDTO dto) {
+		startPayMeterFormService.add(dto);
+		return R.success("新增成功");
 	}
 	}
 
 
-
 	/**
 	/**
-	 * 新增 开工预付款计量单
+	 * 修改 开工预付款计量单
 	 */
 	 */
-	@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 = 3)
+	@ApiOperation(value = "修改", notes = "传入startPayMeterFormDTO")
+	public R update(@Valid @RequestBody StartPayMeterFormDTO dto) {
+		startPayMeterFormService.update2(dto);
+		return R.success("修改成功");
 	}
 	}
 
 
 	/**
 	/**
-	 * 修改 开工预付款计量单
+	 * 分页 开工预付款计量单
 	 */
 	 */
-	@PostMapping("/update")
-	@ApiOperationSupport(order = 5)
-	@ApiOperation(value = "修改", notes = "传入startPayMeterForm")
-	public R update(@Valid @RequestBody StartPayMeterForm startPayMeterForm) {
-		return R.status(startPayMeterFormService.updateById(startPayMeterForm));
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "分页", notes = "传入计量期id与合同id和分页信息,不传计量期id代表查询所有")
+	@ApiImplicitParams(value = {
+			@ApiImplicitParam(name = "meterPeriodId", value = "计量期id", required = false),
+			@ApiImplicitParam(name = "contractId", value = "合同id", required = true)
+	})
+	public R<IPage<StartPayMeterFormVO>> page(Long contractId, Long meterPeriodId, Query query) {
+		IPage<StartPayMeterFormVO> pages = startPayMeterFormService.page2(contractId,meterPeriodId,query);
+		return R.data(pages);
 	}
 	}
 
 
 	/**
 	/**
-	 * 新增或修改 开工预付款计量单
+	 * 详情
 	 */
 	 */
-	@PostMapping("/submit")
-	@ApiOperationSupport(order = 6)
-	@ApiOperation(value = "新增或修改", notes = "传入startPayMeterForm")
-	public R submit(@Valid @RequestBody StartPayMeterForm startPayMeterForm) {
-		return R.status(startPayMeterFormService.saveOrUpdate(startPayMeterForm));
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "详情", notes = "传入id")
+	public R<StartPayMeterFormVO> detail(Long id) {
+		StartPayMeterFormVO detail = startPayMeterFormService.detail(id);
+		return R.data(detail);
 	}
 	}
 
 
 	
 	

+ 2 - 1
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/AttachmentFormMapper.java

@@ -16,6 +16,7 @@
  */
  */
 package org.springblade.meter.mapper;
 package org.springblade.meter.mapper;
 
 
+import org.apache.ibatis.annotations.Param;
 import org.springblade.meter.entity.AttachmentForm;
 import org.springblade.meter.entity.AttachmentForm;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
 
@@ -28,5 +29,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 public interface AttachmentFormMapper extends BaseMapper<AttachmentForm> {
 public interface AttachmentFormMapper extends BaseMapper<AttachmentForm> {
 
 
 
 
-
+    void deleteByMasterId(@Param("masterId") Long masterId);
 }
 }

+ 4 - 1
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/AttachmentFormMapper.xml

@@ -19,7 +19,10 @@
         <result column="file_url" property="fileUrl"/>
         <result column="file_url" property="fileUrl"/>
         <result column="file_pdf_url" property="filePdfUrl"/>
         <result column="file_pdf_url" property="filePdfUrl"/>
     </resultMap>
     </resultMap>
-
+    <delete id="deleteByMasterId">
+        DELETE FROM s_attachment_form
+        where master_id = #{masterId}
+    </delete>
 
 
 
 
 </mapper>
 </mapper>

+ 4 - 2
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractInventoryFormMapper.xml

@@ -44,7 +44,7 @@
             contract_id = #{contractId} and (id = #{id} or FIND_IN_SET(#{id},ancestors) > 0)
             contract_id = #{contractId} and (id = #{id} or FIND_IN_SET(#{id},ancestors) > 0)
     </update>
     </update>
     <select id="getAllNode" resultType="org.springblade.meter.vo.FormTreeVO">
     <select id="getAllNode" resultType="org.springblade.meter.vo.FormTreeVO">
-        select id,parent_id,is_lock,chapter_number,
+        select id,parent_id,is_lock,chapter_number,form_type,
                if(scif.is_supplement=0,concat(scif.form_number, scif.form_name),concat(scif.form_number, scif.form_name,'[增补]')) as form_name,
                if(scif.is_supplement=0,concat(scif.form_number, scif.form_name),concat(scif.form_number, scif.form_name,'[增补]')) as form_name,
                (select COUNT(1) from s_contract_inventory_form
                (select COUNT(1) from s_contract_inventory_form
                     WHERE contract_id = #{contractId} and is_deleted=0 and parent_id = scif.id) as hasChild
                     WHERE contract_id = #{contractId} and is_deleted=0 and parent_id = scif.id) as hasChild
@@ -53,7 +53,9 @@
         order by sort
         order by sort
     </select>
     </select>
     <select id="getById" resultType="org.springblade.meter.vo.InventoryFormDetailVO">
     <select id="getById" resultType="org.springblade.meter.vo.InventoryFormDetailVO">
-        select * from s_contract_inventory_form where id = #{id}
+        select *,
+                if(scif.form_type=0,'',(select dict_value from blade_dict where is_deleted = 0 and code = 'meter_form_type' and dict_key = scif.form_type))  as formTypeName
+        from s_contract_inventory_form scif where id = #{id}
     </select>
     </select>
     <select id="getChildList" resultType="org.springblade.meter.vo.ContractInventoryFormVO">
     <select id="getChildList" resultType="org.springblade.meter.vo.ContractInventoryFormVO">
         select form_number,unit,current_price,contract_total,change_price,change_total,if(is_supplement=0,'否','是') as isSupplementName,
         select form_number,unit,current_price,contract_total,change_price,change_total,if(is_supplement=0,'否','是') as isSupplementName,

+ 6 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractMaterialMapper.java

@@ -16,8 +16,13 @@
  */
  */
 package org.springblade.meter.mapper;
 package org.springblade.meter.mapper;
 
 
+import org.apache.ibatis.annotations.Param;
 import org.springblade.meter.entity.ContractMaterial;
 import org.springblade.meter.entity.ContractMaterial;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.meter.vo.ContractMaterialTreeVO;
+import org.springblade.meter.vo.ContractMaterialVO;
+
+import java.util.List;
 
 
 /**
 /**
  * 合同材料表 Mapper 接口
  * 合同材料表 Mapper 接口
@@ -28,4 +33,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 public interface ContractMaterialMapper extends BaseMapper<ContractMaterial> {
 public interface ContractMaterialMapper extends BaseMapper<ContractMaterial> {
 
 
 
 
+    List<ContractMaterialVO> getALLMaterial(@Param("contractId") Long contractId);
 }
 }

+ 4 - 2
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractMaterialMapper.xml

@@ -21,8 +21,10 @@
         <result column="price" property="price"/>
         <result column="price" property="price"/>
         <result column="amount" property="amount"/>
         <result column="amount" property="amount"/>
     </resultMap>
     </resultMap>
-
-
+    <select id="getALLMaterial" resultType="org.springblade.meter.vo.ContractMaterialVO">
+        select *,concat(material_name, '[',material_number,']') as nodeName,false as hasChild
+        from s_contract_material where is_deleted = 0 and contract_id = #{contractId}
+    </select>
 
 
 
 
 </mapper>
 </mapper>

+ 10 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractMeterPeriodMapper.java

@@ -16,8 +16,13 @@
  */
  */
 package org.springblade.meter.mapper;
 package org.springblade.meter.mapper;
 
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
 import org.springblade.meter.entity.ContractMeterPeriod;
 import org.springblade.meter.entity.ContractMeterPeriod;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.meter.vo.ContractMeterPeriodVO;
+
+import java.util.List;
 
 
 /**
 /**
  * 合同计量期表 Mapper 接口
  * 合同计量期表 Mapper 接口
@@ -28,4 +33,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 public interface ContractMeterPeriodMapper extends BaseMapper<ContractMeterPeriod> {
 public interface ContractMeterPeriodMapper extends BaseMapper<ContractMeterPeriod> {
 
 
 
 
+    void remove(@Param("contractId") Long contractId);
+
+    IPage<ContractMeterPeriodVO> periodPage(IPage<ContractMeterPeriodVO> page, @Param("contractId") Long contractId);
+
+    List<ContractMeterPeriod> conditionPeriod(@Param("contractId") Long contractId);
 }
 }

+ 18 - 1
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractMeterPeriodMapper.xml

@@ -19,7 +19,24 @@
         <result column="period_month" property="periodMonth"/>
         <result column="period_month" property="periodMonth"/>
         <result column="form_print_date" property="formPrintDate"/>
         <result column="form_print_date" property="formPrintDate"/>
     </resultMap>
     </resultMap>
-
+    <delete id="remove">
+        DELETE FROM s_contract_meter_period
+        WHERE contract_id = #{contractId}
+    </delete>
+    <select id="periodPage" resultType="org.springblade.meter.vo.ContractMeterPeriodVO">
+        select *,
+            if((select count(1) from s_middle_meter_apply mma where contract_id = #{contractId} and is_deleted = 0 and mma.contract_period_id = cmp.id)=0,
+                                     if((select count(1) from s_interim_pay_certificate ipc where contract_id = #{contractId} and is_deleted = 0 and ipc.contract_period_id = cmp.id)=0,0,1),1) as citeStatus
+        from s_contract_meter_period cmp
+        where is_deleted = 0 and contract_id = #{contractId}
+        ORDER BY sort
+    </select>
+    <select id="conditionPeriod" resultType="org.springblade.meter.entity.ContractMeterPeriod">
+        SELECT *
+        from s_contract_meter_period cmp
+        WHERE contract_id = #{contractId} and is_deleted = 0
+          and id not in (SELECT contract_period_id from s_interim_pay_certificate WHERE is_deleted=0 and contract_id = #{contractId})
+    </select>
 
 
 
 
 </mapper>
 </mapper>

+ 6 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MaterialMeterFormMapper.java

@@ -16,8 +16,11 @@
  */
  */
 package org.springblade.meter.mapper;
 package org.springblade.meter.mapper;
 
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
 import org.springblade.meter.entity.MaterialMeterForm;
 import org.springblade.meter.entity.MaterialMeterForm;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.meter.vo.MaterialMeterFormVO;
 
 
 /**
 /**
  * 材料计量单 Mapper 接口
  * 材料计量单 Mapper 接口
@@ -28,4 +31,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 public interface MaterialMeterFormMapper extends BaseMapper<MaterialMeterForm> {
 public interface MaterialMeterFormMapper extends BaseMapper<MaterialMeterForm> {
 
 
 
 
+    IPage<MaterialMeterFormVO> meterPage(IPage<MaterialMeterFormVO> page, @Param("contractId") Long contractId,@Param("meterPeriodId") Long meterPeriodId);
+
+    MaterialMeterFormVO detail(@Param("id") Long id);
 }
 }

+ 17 - 2
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MaterialMeterFormMapper.xml

@@ -30,8 +30,23 @@
         <result column="approve_status" property="approveStatus"/>
         <result column="approve_status" property="approveStatus"/>
         <result column="sort" property="sort"/>
         <result column="sort" property="sort"/>
     </resultMap>
     </resultMap>
-
-
+    <select id="meterPage" resultType="org.springblade.meter.vo.MaterialMeterFormVO">
+        select *,
+            CASE when approve_status = 0 then '未上报' when approve_status = 1 then '待审批' when approve_status = 2 then '已审批'
+                 else '已废除' end as approveStatusName
+        from s_material_meter_form
+        where contract_id = #{contractId} and is_deleted = 0
+        <if test="meterPeriodId!=null and meterPeriodId!=''">
+            and meter_period_id = #{meterPeriodId}
+        </if>
+    </select>
+    <select id="detail" resultType="org.springblade.meter.vo.MaterialMeterFormVO">
+        select *,
+            if(material_conform = 0,'否','是') as materialConformName,
+            if(storage_conform = 0,'否','是') as storageConformName
+        from s_material_meter_form
+        where id = #{id}
+    </select>
 
 
 
 
 </mapper>
 </mapper>

+ 3 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MaterialStartStatementMapper.java

@@ -16,6 +16,8 @@
  */
  */
 package org.springblade.meter.mapper;
 package org.springblade.meter.mapper;
 
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
 import org.springblade.meter.entity.MaterialStartStatement;
 import org.springblade.meter.entity.MaterialStartStatement;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
 
@@ -28,4 +30,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 public interface MaterialStartStatementMapper extends BaseMapper<MaterialStartStatement> {
 public interface MaterialStartStatementMapper extends BaseMapper<MaterialStartStatement> {
 
 
 
 
+    IPage<MaterialStartStatement> page2(IPage<MaterialStartStatement> page,@Param("statement") MaterialStartStatement statement);
 }
 }

+ 8 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MaterialStartStatementMapper.xml

@@ -23,6 +23,14 @@
         <result column="calculate_date" property="calculateDate"/>
         <result column="calculate_date" property="calculateDate"/>
         <result column="sort" property="sort"/>
         <result column="sort" property="sort"/>
     </resultMap>
     </resultMap>
+    <select id="page2" resultType="org.springblade.meter.entity.MaterialStartStatement">
+        select id,meter_period_id,statement_name,repayment_cause,
+               (select period_name from s_meter_period smp where smp.id = mss.statement_period) as statement_period,
+               (select form_print_date from s_meter_period smp where smp.id = mss.statement_period) as print_date
+        from s_material_start_statement mss
+        where contract_id = #{statement.contractId} and type = #{statement.type} and is_deleted = 0
+        order by sort
+    </select>
 
 
 
 
 </mapper>
 </mapper>

+ 10 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MeterPeriodMapper.java

@@ -16,8 +16,13 @@
  */
  */
 package org.springblade.meter.mapper;
 package org.springblade.meter.mapper;
 
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
 import org.springblade.meter.entity.MeterPeriod;
 import org.springblade.meter.entity.MeterPeriod;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.meter.vo.MeterPeriodVO;
+
+import java.util.List;
 
 
 /**
 /**
  * 材料开工计量期表 Mapper 接口
  * 材料开工计量期表 Mapper 接口
@@ -28,4 +33,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 public interface MeterPeriodMapper extends BaseMapper<MeterPeriod> {
 public interface MeterPeriodMapper extends BaseMapper<MeterPeriod> {
 
 
 
 
+    IPage<MeterPeriodVO> periodPage(IPage<MeterPeriodVO> page,@Param("contractId") Long contractId,@Param("type") Integer type);
+
+    void remove(@Param("contractId") Long contractId,@Param("type") Integer type);
+
+    List<MeterPeriod> conditionPeriod(@Param("contractId") Long contractId,@Param("type") Integer type);
 }
 }

+ 28 - 1
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MeterPeriodMapper.xml

@@ -21,7 +21,34 @@
         <result column="period_month" property="periodMonth"/>
         <result column="period_month" property="periodMonth"/>
         <result column="form_print_date" property="formPrintDate"/>
         <result column="form_print_date" property="formPrintDate"/>
     </resultMap>
     </resultMap>
-
+    <delete id="remove">
+        DELETE FROM s_meter_period
+        WHERE contract_id = #{contractId} and type = #{type}
+    </delete>
+    <select id="periodPage" resultType="org.springblade.meter.vo.MeterPeriodVO">
+        <if test="type == 1">
+            select *,
+                if(smp.is_lock = 0,if((select count(1) from s_material_meter_form mmf where contract_id = #{contractId} and is_deleted = 0 and mmf.meter_period_id = smp.id)=0,
+                    if((select count(1) from s_material_start_statement mss where contract_id = #{contractId} and is_deleted = 0 and mss.meter_period_id = smp.id)=0,0,1),1),1) as citeStatus
+            from s_meter_period smp
+            where is_deleted = 0 and contract_id = #{contractId} and type = 1
+            ORDER BY sort
+        </if>
+        <if test="type == 2">
+            select *,
+                if(smp.is_lock = 0,if((select count(1) from s_start_pay_meter_form smf where contract_id = #{contractId} and is_deleted = 0 and smf.meter_period_id = smp.id)=0,
+                    if((select count(1) from s_material_start_statement mss where contract_id = #{contractId} and is_deleted = 0 and mss.meter_period_id = smp.id)=0,0,1),1),1) as citeStatus
+            from s_meter_period smp
+            where is_deleted = 0 and contract_id = #{contractId} and type = 2
+            ORDER BY sort
+        </if>
+    </select>
+    <select id="conditionPeriod" resultType="org.springblade.meter.entity.MeterPeriod">
+        SELECT *
+        from s_meter_period smp
+        WHERE contract_id = #{contractId} and is_deleted = 0 and type = #{type}
+          and id not in (SELECT meter_period_id from s_material_start_statement WHERE is_deleted=0 and contract_id = #{contractId} and type = #{type})
+    </select>
 
 
 
 
 </mapper>
 </mapper>

+ 8 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MidPayItemContractMapper.java

@@ -0,0 +1,8 @@
+package org.springblade.meter.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.meter.entity.MeterMidPayItemContract;
+
+public interface MidPayItemContractMapper extends BaseMapper<MeterMidPayItemContract> {
+
+}

+ 5 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MidPayItemContractMapper.xml

@@ -0,0 +1,5 @@
+<?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.MidPayItemContractMapper">
+
+</mapper>

+ 8 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MidPayItemProjectMapper.java

@@ -0,0 +1,8 @@
+package org.springblade.meter.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.meter.entity.MeterMidPayItemProject;
+
+public interface MidPayItemProjectMapper extends BaseMapper<MeterMidPayItemProject> {
+
+}

+ 5 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MidPayItemProjectMapper.xml

@@ -0,0 +1,5 @@
+<?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.MidPayItemProjectMapper">
+
+</mapper>

+ 8 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MidPayItemSystemMapper.java

@@ -0,0 +1,8 @@
+package org.springblade.meter.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.meter.entity.MeterMidPayItemSystem;
+
+public interface MidPayItemSystemMapper extends BaseMapper<MeterMidPayItemSystem> {
+
+}

+ 5 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MidPayItemSystemMapper.xml

@@ -0,0 +1,5 @@
+<?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.MidPayItemSystemMapper">
+
+</mapper>

+ 6 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/StartPayMeterFormMapper.java

@@ -16,8 +16,11 @@
  */
  */
 package org.springblade.meter.mapper;
 package org.springblade.meter.mapper;
 
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
 import org.springblade.meter.entity.StartPayMeterForm;
 import org.springblade.meter.entity.StartPayMeterForm;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.meter.vo.StartPayMeterFormVO;
 
 
 /**
 /**
  * 开工预付款计量单 Mapper 接口
  * 开工预付款计量单 Mapper 接口
@@ -28,4 +31,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 public interface StartPayMeterFormMapper extends BaseMapper<StartPayMeterForm> {
 public interface StartPayMeterFormMapper extends BaseMapper<StartPayMeterForm> {
 
 
 
 
+    IPage<StartPayMeterFormVO> meterPage(IPage<StartPayMeterFormVO> page, @Param("contractId") Long contractId,@Param("meterPeriodId") Long meterPeriodId);
+
+    StartPayMeterFormVO detail(@Param("id") Long id);
 }
 }

+ 15 - 1
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/StartPayMeterFormMapper.xml

@@ -22,7 +22,21 @@
         <result column="apply_cause" property="applyCause"/>
         <result column="apply_cause" property="applyCause"/>
         <result column="sort" property="sort"/>
         <result column="sort" property="sort"/>
     </resultMap>
     </resultMap>
-
+    <select id="meterPage" resultType="org.springblade.meter.vo.StartPayMeterFormVO">
+        select *,
+            CASE when approve_status = 0 then '未上报' when approve_status = 1 then '待审批' when approve_status = 2 then '已审批'
+            else '已废除' end as approveStatusName
+        from s_start_pay_meter_form
+        where contract_id = #{contractId} and is_deleted = 0
+        <if test="meterPeriodId!=null and meterPeriodId!=''">
+            and meter_period_id = #{meterPeriodId}
+        </if>
+    </select>
+    <select id="detail" resultType="org.springblade.meter.vo.StartPayMeterFormVO">
+        select *
+        from s_start_pay_meter_form
+        where id = #{id}
+    </select>
 
 
 
 
 </mapper>
 </mapper>

+ 1 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/IAttachmentFormService.java

@@ -28,4 +28,5 @@ import org.springblade.core.mp.base.BaseService;
 public interface IAttachmentFormService extends BaseService<AttachmentForm> {
 public interface IAttachmentFormService extends BaseService<AttachmentForm> {
 
 
 
 
+    void deleteByMasterId(Long masterId);
 }
 }

+ 2 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/IContractMaterialService.java

@@ -18,6 +18,7 @@ package org.springblade.meter.service;
 
 
 import org.springblade.meter.entity.ContractMaterial;
 import org.springblade.meter.entity.ContractMaterial;
 import org.springblade.core.mp.base.BaseService;
 import org.springblade.core.mp.base.BaseService;
+import org.springblade.meter.vo.ContractMaterialTreeVO;
 
 
 /**
 /**
  * 合同材料表 服务类
  * 合同材料表 服务类
@@ -28,4 +29,5 @@ import org.springblade.core.mp.base.BaseService;
 public interface IContractMaterialService extends BaseService<ContractMaterial> {
 public interface IContractMaterialService extends BaseService<ContractMaterial> {
 
 
 
 
+    ContractMaterialTreeVO materialTree(Long contractId);
 }
 }

+ 13 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/IContractMeterPeriodService.java

@@ -16,8 +16,14 @@
  */
  */
 package org.springblade.meter.service;
 package org.springblade.meter.service;
 
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.core.mp.support.Query;
+import org.springblade.meter.dto.ContractMeterPeriodDTO;
 import org.springblade.meter.entity.ContractMeterPeriod;
 import org.springblade.meter.entity.ContractMeterPeriod;
 import org.springblade.core.mp.base.BaseService;
 import org.springblade.core.mp.base.BaseService;
+import org.springblade.meter.vo.ContractMeterPeriodVO;
+
+import java.util.List;
 
 
 /**
 /**
  * 合同计量期表 服务类
  * 合同计量期表 服务类
@@ -28,4 +34,11 @@ import org.springblade.core.mp.base.BaseService;
 public interface IContractMeterPeriodService extends BaseService<ContractMeterPeriod> {
 public interface IContractMeterPeriodService extends BaseService<ContractMeterPeriod> {
 
 
 
 
+    void edit(ContractMeterPeriodDTO dto);
+
+    IPage<ContractMeterPeriodVO> periodPage(Long contractId, Query query);
+
+    List<ContractMeterPeriod> allPeriod(Long contractId);
+
+    List<ContractMeterPeriod> conditionPeriod(Long contractId);
 }
 }

+ 11 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/IMaterialMeterFormService.java

@@ -16,8 +16,12 @@
  */
  */
 package org.springblade.meter.service;
 package org.springblade.meter.service;
 
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.core.mp.support.Query;
+import org.springblade.meter.dto.MaterialMeterFormDTO;
 import org.springblade.meter.entity.MaterialMeterForm;
 import org.springblade.meter.entity.MaterialMeterForm;
 import org.springblade.core.mp.base.BaseService;
 import org.springblade.core.mp.base.BaseService;
+import org.springblade.meter.vo.MaterialMeterFormVO;
 
 
 /**
 /**
  * 材料计量单 服务类
  * 材料计量单 服务类
@@ -28,4 +32,11 @@ import org.springblade.core.mp.base.BaseService;
 public interface IMaterialMeterFormService extends BaseService<MaterialMeterForm> {
 public interface IMaterialMeterFormService extends BaseService<MaterialMeterForm> {
 
 
 
 
+    void add(MaterialMeterFormDTO dto);
+
+    IPage<MaterialMeterFormVO> meterPage(Long contractId, Long meterPeriodId, Query query);
+
+    MaterialMeterFormVO detail(Long id);
+
+    void update2(MaterialMeterFormDTO dto);
 }
 }

+ 3 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/IMaterialStartStatementService.java

@@ -16,6 +16,8 @@
  */
  */
 package org.springblade.meter.service;
 package org.springblade.meter.service;
 
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.core.mp.support.Query;
 import org.springblade.meter.entity.MaterialStartStatement;
 import org.springblade.meter.entity.MaterialStartStatement;
 import org.springblade.core.mp.base.BaseService;
 import org.springblade.core.mp.base.BaseService;
 
 
@@ -28,4 +30,5 @@ import org.springblade.core.mp.base.BaseService;
 public interface IMaterialStartStatementService extends BaseService<MaterialStartStatement> {
 public interface IMaterialStartStatementService extends BaseService<MaterialStartStatement> {
 
 
 
 
+    IPage<MaterialStartStatement> page2(MaterialStartStatement statement, Query query);
 }
 }

+ 15 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/IMeterPeriodService.java

@@ -16,8 +16,14 @@
  */
  */
 package org.springblade.meter.service;
 package org.springblade.meter.service;
 
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.core.mp.support.Query;
+import org.springblade.meter.dto.MeterPeriodDTO;
 import org.springblade.meter.entity.MeterPeriod;
 import org.springblade.meter.entity.MeterPeriod;
 import org.springblade.core.mp.base.BaseService;
 import org.springblade.core.mp.base.BaseService;
+import org.springblade.meter.vo.MeterPeriodVO;
+
+import java.util.List;
 
 
 /**
 /**
  * 材料开工计量期表 服务类
  * 材料开工计量期表 服务类
@@ -28,4 +34,13 @@ import org.springblade.core.mp.base.BaseService;
 public interface IMeterPeriodService extends BaseService<MeterPeriod> {
 public interface IMeterPeriodService extends BaseService<MeterPeriod> {
 
 
 
 
+    void edit(MeterPeriodDTO dto);
+
+    IPage<MeterPeriodVO> periodPage(Long contractId, Query query,Integer type);
+
+    void locking(Long id, Integer isLock);
+
+    List<MeterPeriod> allPeriod(Long contractId,Integer type);
+
+    List<MeterPeriod> conditionPeriod(Long contractId, Integer type);
 }
 }

+ 11 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/IStartPayMeterFormService.java

@@ -16,8 +16,12 @@
  */
  */
 package org.springblade.meter.service;
 package org.springblade.meter.service;
 
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.core.mp.support.Query;
+import org.springblade.meter.dto.StartPayMeterFormDTO;
 import org.springblade.meter.entity.StartPayMeterForm;
 import org.springblade.meter.entity.StartPayMeterForm;
 import org.springblade.core.mp.base.BaseService;
 import org.springblade.core.mp.base.BaseService;
+import org.springblade.meter.vo.StartPayMeterFormVO;
 
 
 /**
 /**
  * 开工预付款计量单 服务类
  * 开工预付款计量单 服务类
@@ -28,4 +32,11 @@ import org.springblade.core.mp.base.BaseService;
 public interface IStartPayMeterFormService extends BaseService<StartPayMeterForm> {
 public interface IStartPayMeterFormService extends BaseService<StartPayMeterForm> {
 
 
 
 
+    void add(StartPayMeterFormDTO dto);
+
+    void update2(StartPayMeterFormDTO dto);
+
+    IPage<StartPayMeterFormVO> page2(Long contractId, Long meterPeriodId, Query query);
+
+    StartPayMeterFormVO detail(Long id);
 }
 }

+ 7 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/MidPayItemContractService.java

@@ -0,0 +1,7 @@
+package org.springblade.meter.service;
+
+import org.springblade.core.mp.base.BaseService;
+import org.springblade.meter.entity.MeterMidPayItemContract;
+
+public interface MidPayItemContractService extends BaseService<MeterMidPayItemContract> {
+}

+ 7 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/MidPayItemProjectService.java

@@ -0,0 +1,7 @@
+package org.springblade.meter.service;
+
+import org.springblade.core.mp.base.BaseService;
+import org.springblade.meter.entity.MeterMidPayItemProject;
+
+public interface MidPayItemProjectService extends BaseService<MeterMidPayItemProject> {
+}

+ 7 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/MidPayItemSystemService.java

@@ -0,0 +1,7 @@
+package org.springblade.meter.service;
+
+import org.springblade.core.mp.base.BaseService;
+import org.springblade.meter.entity.MeterMidPayItemSystem;
+
+public interface MidPayItemSystemService extends BaseService<MeterMidPayItemSystem> {
+}

+ 4 - 1
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/AttachmentFormServiceImpl.java

@@ -32,5 +32,8 @@ import org.springframework.stereotype.Service;
 public class AttachmentFormServiceImpl extends BaseServiceImpl<AttachmentFormMapper, AttachmentForm> implements IAttachmentFormService {
 public class AttachmentFormServiceImpl extends BaseServiceImpl<AttachmentFormMapper, AttachmentForm> implements IAttachmentFormService {
 
 
 
 
-
+    @Override
+    public void deleteByMasterId(Long masterId) {
+        baseMapper.deleteByMasterId(masterId);
+    }
 }
 }

+ 1 - 1
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/ContractInventoryFormServiceImpl.java

@@ -327,7 +327,7 @@ public class ContractInventoryFormServiceImpl extends BaseServiceImpl<ContractIn
             }
             }
         }
         }
         //如果父节点有清单类型,则判断当前节点清单类型是否与父节点一致
         //如果父节点有清单类型,则判断当前节点清单类型是否与父节点一致
-        if (parentNode.getFormType() != null){
+        if (parentNode.getFormType() != 0){
             if (!parentNode.getFormType().equals(form.getFormType())){
             if (!parentNode.getFormType().equals(form.getFormType())){
                 throw new ServiceException("子节点的清单类型,必须与父节点的清单类型相同");
                 throw new ServiceException("子节点的清单类型,必须与父节点的清单类型相同");
             }
             }

+ 28 - 1
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/ContractMaterialServiceImpl.java

@@ -20,8 +20,13 @@ import org.springblade.meter.entity.ContractMaterial;
 import org.springblade.meter.mapper.ContractMaterialMapper;
 import org.springblade.meter.mapper.ContractMaterialMapper;
 import org.springblade.meter.service.IContractMaterialService;
 import org.springblade.meter.service.IContractMaterialService;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.meter.vo.ContractMaterialTreeVO;
+import org.springblade.meter.vo.ContractMaterialVO;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import java.math.BigDecimal;
+import java.util.List;
+
 /**
 /**
  * 合同材料表 服务实现类
  * 合同材料表 服务实现类
  *
  *
@@ -32,5 +37,27 @@ import org.springframework.stereotype.Service;
 public class ContractMaterialServiceImpl extends BaseServiceImpl<ContractMaterialMapper, ContractMaterial> implements IContractMaterialService {
 public class ContractMaterialServiceImpl extends BaseServiceImpl<ContractMaterialMapper, ContractMaterial> implements IContractMaterialService {
 
 
 
 
-
+    /**
+     * 材料树 合同材料表
+     */
+    @Override
+    public ContractMaterialTreeVO materialTree(Long contractId) {
+        ContractMaterialTreeVO vo = new ContractMaterialTreeVO();
+        vo.setId(-1L);
+        vo.setNodeName("材料清单");
+        //查询出当前合同材料集合
+        List<ContractMaterialVO> voList = baseMapper.getALLMaterial(contractId);
+        if (voList.size() == 0){
+            vo.setHasChild(false);
+        }else {
+            for (ContractMaterialVO materialVO : voList) {
+                if (materialVO.getPrice() != null && materialVO.getAmount() != null){
+                    materialVO.setMeterMoney(materialVO.getPrice().multiply(new BigDecimal(materialVO.getAmount())));
+                }
+            }
+            vo.setHasChild(true);
+            vo.setChildren(voList);
+        }
+        return vo;
+    }
 }
 }

+ 77 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/ContractMeterPeriodServiceImpl.java

@@ -16,11 +16,24 @@
  */
  */
 package org.springblade.meter.service.impl;
 package org.springblade.meter.service.impl;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.mp.support.Query;
+import org.springblade.meter.dto.ContractMeterPeriodDTO;
 import org.springblade.meter.entity.ContractMeterPeriod;
 import org.springblade.meter.entity.ContractMeterPeriod;
+import org.springblade.meter.entity.MeterPeriod;
 import org.springblade.meter.mapper.ContractMeterPeriodMapper;
 import org.springblade.meter.mapper.ContractMeterPeriodMapper;
 import org.springblade.meter.service.IContractMeterPeriodService;
 import org.springblade.meter.service.IContractMeterPeriodService;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.meter.vo.ContractMeterPeriodVO;
+import org.springblade.meter.vo.MeterPeriodVO;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDate;
+import java.util.List;
 
 
 /**
 /**
  * 合同计量期表 服务实现类
  * 合同计量期表 服务实现类
@@ -32,5 +45,69 @@ import org.springframework.stereotype.Service;
 public class ContractMeterPeriodServiceImpl extends BaseServiceImpl<ContractMeterPeriodMapper, ContractMeterPeriod> implements IContractMeterPeriodService {
 public class ContractMeterPeriodServiceImpl extends BaseServiceImpl<ContractMeterPeriodMapper, ContractMeterPeriod> implements IContractMeterPeriodService {
 
 
 
 
+    /**
+     * 编辑计量期
+     */
+    @Override
+    @Transactional
+    public void edit(ContractMeterPeriodDTO dto) {
+        List<ContractMeterPeriod> list = dto.getList();
+        //如果为空,直接删除
+        if (list.size() == 0){
+            this.remove(new LambdaQueryWrapper<ContractMeterPeriod>()
+                    .eq(ContractMeterPeriod::getContractId,dto.getContractId()));
+        }else {
+            //存在数据,先删再存,循环排序
+            baseMapper.remove(dto.getContractId());
+            LocalDate lastDate = null;
+            for (int i = 0; i < list.size(); i++) {
+                ContractMeterPeriod period = list.get(i);
+                //校验开始结束日期
+                if (period.getPeriodYear() == null || period.getPeriodMonth() == null || period.getStartDate() == null || period.getEndDate() == null) {
+                    throw new ServiceException("请检查年份、月份、开始日期、结束日期,是否填写");
+                }
+                //判断本次开始日期是否是上次结束日期后一天
+                if (lastDate != null) {
+                    if (lastDate.plusDays(1).compareTo(period.getStartDate()) != 0) {
+                        throw new ServiceException("上一期结束日期和下一期的开始日期必须连续");
+                    }
+                }
+                //判断判断开始日期是否大于结束日期
+                if (period.getEndDate().compareTo(period.getStartDate()) == -1){
+                    throw new ServiceException("结束日期必须大于开始日期");
+                }
+                lastDate = period.getEndDate();
+                period.setSort(i);
+            }
+            this.saveOrUpdateBatch(list);
+        }
+    }
+
+    /**
+     * 分页
+     */
+    @Override
+    public IPage<ContractMeterPeriodVO> periodPage(Long contractId, Query query) {
+        IPage<ContractMeterPeriodVO> page = new Page<>(query.getCurrent(),query.getSize());
+        page = baseMapper.periodPage(page,contractId);
+        return page;
+    }
+
+    /**
+     * 计量期列表-全部 材料开工计量期表
+     */
+    @Override
+    public List<ContractMeterPeriod> allPeriod(Long contractId) {
+        return this.list(new LambdaQueryWrapper<ContractMeterPeriod>()
+                .eq(ContractMeterPeriod::getContractId,contractId)
+                .orderByAsc(ContractMeterPeriod::getSort));
+    }
 
 
+    /**
+     * 计量期列表-未关联报表 材料开工计量期表
+     */
+    @Override
+    public List<ContractMeterPeriod> conditionPeriod(Long contractId) {
+        return baseMapper.conditionPeriod(contractId);
+    }
 }
 }

+ 90 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MaterialMeterFormServiceImpl.java

@@ -16,11 +16,26 @@
  */
  */
 package org.springblade.meter.service.impl;
 package org.springblade.meter.service.impl;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.AllArgsConstructor;
+import org.springblade.common.utils.SnowFlakeUtil;
+import org.springblade.core.mp.support.Query;
+import org.springblade.meter.dto.MaterialMeterFormDTO;
+import org.springblade.meter.entity.AttachmentForm;
 import org.springblade.meter.entity.MaterialMeterForm;
 import org.springblade.meter.entity.MaterialMeterForm;
 import org.springblade.meter.mapper.MaterialMeterFormMapper;
 import org.springblade.meter.mapper.MaterialMeterFormMapper;
+import org.springblade.meter.service.IAttachmentFormService;
 import org.springblade.meter.service.IMaterialMeterFormService;
 import org.springblade.meter.service.IMaterialMeterFormService;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.meter.vo.MaterialMeterFormVO;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.util.List;
 
 
 /**
 /**
  * 材料计量单 服务实现类
  * 材料计量单 服务实现类
@@ -29,8 +44,83 @@ import org.springframework.stereotype.Service;
  * @since 2023-11-29
  * @since 2023-11-29
  */
  */
 @Service
 @Service
+@AllArgsConstructor
 public class MaterialMeterFormServiceImpl extends BaseServiceImpl<MaterialMeterFormMapper, MaterialMeterForm> implements IMaterialMeterFormService {
 public class MaterialMeterFormServiceImpl extends BaseServiceImpl<MaterialMeterFormMapper, MaterialMeterForm> implements IMaterialMeterFormService {
 
 
+    private final IAttachmentFormService attachmentFormService;
+
+
+    /**
+     * 新增 材料计量单
+     */
+    @Override
+    @Transactional
+    public void add(MaterialMeterFormDTO dto) {
+        //保存材料计量单信息
+        MaterialMeterForm form = new MaterialMeterForm();
+        BeanUtils.copyProperties(dto,form);
+        Long id = SnowFlakeUtil.getId();
+        form.setId(id);
+        if (form.getPrice() != null && form.getMeterAmount() != null){
+            form.setMeterMoney(form.getPrice().multiply(new BigDecimal(form.getMeterAmount())));
+        }
+        this.save(form);
+        //保存附件信息
+        List<AttachmentForm> fileList = dto.getFileList();
+        if (fileList != null && fileList.size() != 0) {
+            for (AttachmentForm file : fileList) {
+                file.setMasterId(id);
+            }
+            attachmentFormService.saveBatch(fileList);
+        }
+    }
+
+    /**
+     * 分页 材料计量单
+     */
+    @Override
+    public IPage<MaterialMeterFormVO> meterPage(Long contractId, Long meterPeriodId, Query query) {
+        IPage<MaterialMeterFormVO> page = new Page<>(query.getCurrent(),query.getSize());
+        return baseMapper.meterPage(page,contractId,meterPeriodId);
+    }
 
 
+    /**
+     * 详情
+     */
+    @Override
+    public MaterialMeterFormVO detail(Long id) {
+        //材料计量单id
+        MaterialMeterFormVO vo = baseMapper.detail(id);
+        //查询附件信息
+        List<AttachmentForm> list = attachmentFormService.list(new LambdaQueryWrapper<AttachmentForm>()
+                .eq(AttachmentForm::getContractId, vo.getContractId())
+                .eq(AttachmentForm::getMasterId, id));
+        vo.setFileList(list);
+        return vo;
+    }
 
 
+    /**
+     * 修改 材料计量单
+     */
+    @Override
+    @Transactional
+    public void update2(MaterialMeterFormDTO dto) {
+        //保存材料计量单信息
+        MaterialMeterForm form = new MaterialMeterForm();
+        BeanUtils.copyProperties(dto,form);
+        if (form.getPrice() != null && form.getMeterAmount() != null){
+            form.setMeterMoney(form.getPrice().multiply(new BigDecimal(form.getMeterAmount())));
+        }
+        this.updateById(form);
+        //删除附件信息
+        attachmentFormService.deleteByMasterId(form.getId());
+        //保存附件信息
+        List<AttachmentForm> fileList = dto.getFileList();
+        if (fileList != null && fileList.size() != 0) {
+            for (AttachmentForm file : fileList) {
+                file.setMasterId(form.getId());
+            }
+            attachmentFormService.saveBatch(fileList);
+        }
+    }
 }
 }

+ 8 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MaterialStartStatementServiceImpl.java

@@ -16,6 +16,9 @@
  */
  */
 package org.springblade.meter.service.impl;
 package org.springblade.meter.service.impl;
 
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springblade.core.mp.support.Query;
 import org.springblade.meter.entity.MaterialStartStatement;
 import org.springblade.meter.entity.MaterialStartStatement;
 import org.springblade.meter.mapper.MaterialStartStatementMapper;
 import org.springblade.meter.mapper.MaterialStartStatementMapper;
 import org.springblade.meter.service.IMaterialStartStatementService;
 import org.springblade.meter.service.IMaterialStartStatementService;
@@ -32,4 +35,9 @@ import org.springframework.stereotype.Service;
 public class MaterialStartStatementServiceImpl extends BaseServiceImpl<MaterialStartStatementMapper, MaterialStartStatement> implements IMaterialStartStatementService {
 public class MaterialStartStatementServiceImpl extends BaseServiceImpl<MaterialStartStatementMapper, MaterialStartStatement> implements IMaterialStartStatementService {
 
 
 
 
+    @Override
+    public IPage<MaterialStartStatement> page2(MaterialStartStatement statement, Query query) {
+        IPage<MaterialStartStatement> page = new Page<>(query.getCurrent(),query.getSize());
+        return baseMapper.page2(page,statement);
+    }
 }
 }

+ 85 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MeterPeriodServiceImpl.java

@@ -16,11 +16,29 @@
  */
  */
 package org.springblade.meter.service.impl;
 package org.springblade.meter.service.impl;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.AllArgsConstructor;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.mp.support.Query;
+import org.springblade.meter.dto.MeterPeriodDTO;
+import org.springblade.meter.entity.MaterialMeterForm;
+import org.springblade.meter.entity.MaterialStartStatement;
 import org.springblade.meter.entity.MeterPeriod;
 import org.springblade.meter.entity.MeterPeriod;
 import org.springblade.meter.mapper.MeterPeriodMapper;
 import org.springblade.meter.mapper.MeterPeriodMapper;
+import org.springblade.meter.service.IMaterialMeterFormService;
+import org.springblade.meter.service.IMaterialStartStatementService;
 import org.springblade.meter.service.IMeterPeriodService;
 import org.springblade.meter.service.IMeterPeriodService;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.meter.vo.MeterPeriodVO;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDate;
+import java.util.List;
+import java.util.stream.Collectors;
 
 
 /**
 /**
  * 材料开工计量期表 服务实现类
  * 材料开工计量期表 服务实现类
@@ -29,8 +47,75 @@ import org.springframework.stereotype.Service;
  * @since 2023-11-29
  * @since 2023-11-29
  */
  */
 @Service
 @Service
+@AllArgsConstructor
 public class MeterPeriodServiceImpl extends BaseServiceImpl<MeterPeriodMapper, MeterPeriod> implements IMeterPeriodService {
 public class MeterPeriodServiceImpl extends BaseServiceImpl<MeterPeriodMapper, MeterPeriod> implements IMeterPeriodService {
 
 
 
 
+    /**
+     * 编辑计量期 材料开工计量期表
+     */
+    @Override
+    @Transactional
+    public void edit(MeterPeriodDTO dto) {
+        List<MeterPeriod> list = dto.getList();
+        //如果为空,直接删除
+        if (list.size() == 0){
+            this.remove(new LambdaQueryWrapper<MeterPeriod>()
+                    .eq(MeterPeriod::getContractId,dto.getContractId())
+                    .eq(MeterPeriod::getType,dto.getType()));
+        }else {
+            //存在数据,先删再存,循环排序
+            baseMapper.remove(dto.getContractId(),dto.getType());
+            for (int i = 0; i < list.size(); i++) {
+                MeterPeriod period = list.get(i);
+                //校验开始结束日期
+                if (period.getPeriodYear() == null || period.getPeriodMonth() == null) {
+                    throw new ServiceException("请填写年份、月份");
+                }
+                period.setSort(i);
+            }
+            this.saveOrUpdateBatch(list);
+        }
+
+
+    }
+
+    /**
+     * 分页查询,带引用状态
+     */
+    @Override
+    public IPage<MeterPeriodVO> periodPage(Long contractId, Query query,Integer type) {
+        IPage<MeterPeriodVO> page = new Page<>(query.getCurrent(),query.getSize());
+        page = baseMapper.periodPage(page,contractId,type);
+        return page;
+    }
+
+    /**
+     * 锁定 材料开工计量期表
+     */
+    @Override
+    public void locking(Long id, Integer isLock) {
+        Integer type;
+        if (isLock == 0){
+            type = 1;
+        }else {
+            type = 0;
+        }
+        this.update(new LambdaUpdateWrapper<MeterPeriod>()
+                .eq(MeterPeriod::getId,id)
+                .set(MeterPeriod::getIsLock,type));
+    }
+
+    @Override
+    public List<MeterPeriod> allPeriod(Long contractId, Integer type) {
+        return this.list(new LambdaQueryWrapper<MeterPeriod>()
+                .eq(MeterPeriod::getContractId,contractId)
+                .eq(MeterPeriod::getType,type)
+                .orderByAsc(MeterPeriod::getSort));
+    }
 
 
+    @Override
+    public List<MeterPeriod> conditionPeriod(Long contractId, Integer type) {
+        return baseMapper.conditionPeriod(contractId,type);
+    }
 }
 }

+ 14 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MidPayItemContractServiceImpl.java

@@ -0,0 +1,14 @@
+package org.springblade.meter.service.impl;
+
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.meter.entity.MeterMidPayItemContract;
+import org.springblade.meter.mapper.MidPayItemContractMapper;
+import org.springblade.meter.service.MidPayItemContractService;
+import org.springframework.stereotype.Service;
+
+@Service
+@AllArgsConstructor
+public class MidPayItemContractServiceImpl extends BaseServiceImpl<MidPayItemContractMapper, MeterMidPayItemContract> implements MidPayItemContractService {
+
+}

+ 14 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MidPayItemProjectServiceImpl.java

@@ -0,0 +1,14 @@
+package org.springblade.meter.service.impl;
+
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.meter.entity.MeterMidPayItemProject;
+import org.springblade.meter.mapper.MidPayItemProjectMapper;
+import org.springblade.meter.service.MidPayItemProjectService;
+import org.springframework.stereotype.Service;
+
+@Service
+@AllArgsConstructor
+public class MidPayItemProjectServiceImpl extends BaseServiceImpl<MidPayItemProjectMapper, MeterMidPayItemProject> implements MidPayItemProjectService {
+
+}

+ 14 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MidPayItemSystemServiceImpl.java

@@ -0,0 +1,14 @@
+package org.springblade.meter.service.impl;
+
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.meter.entity.MeterMidPayItemSystem;
+import org.springblade.meter.mapper.MidPayItemSystemMapper;
+import org.springblade.meter.service.MidPayItemSystemService;
+import org.springframework.stereotype.Service;
+
+@Service
+@AllArgsConstructor
+public class MidPayItemSystemServiceImpl extends BaseServiceImpl<MidPayItemSystemMapper, MeterMidPayItemSystem> implements MidPayItemSystemService {
+
+}

+ 79 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/StartPayMeterFormServiceImpl.java

@@ -16,12 +16,25 @@
  */
  */
 package org.springblade.meter.service.impl;
 package org.springblade.meter.service.impl;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.AllArgsConstructor;
+import org.springblade.common.utils.SnowFlakeUtil;
+import org.springblade.core.mp.support.Query;
+import org.springblade.meter.dto.StartPayMeterFormDTO;
+import org.springblade.meter.entity.AttachmentForm;
 import org.springblade.meter.entity.StartPayMeterForm;
 import org.springblade.meter.entity.StartPayMeterForm;
 import org.springblade.meter.mapper.StartPayMeterFormMapper;
 import org.springblade.meter.mapper.StartPayMeterFormMapper;
+import org.springblade.meter.service.IAttachmentFormService;
 import org.springblade.meter.service.IStartPayMeterFormService;
 import org.springblade.meter.service.IStartPayMeterFormService;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.meter.vo.StartPayMeterFormVO;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import java.util.List;
+
 /**
 /**
  * 开工预付款计量单 服务实现类
  * 开工预付款计量单 服务实现类
  *
  *
@@ -29,8 +42,74 @@ import org.springframework.stereotype.Service;
  * @since 2023-11-29
  * @since 2023-11-29
  */
  */
 @Service
 @Service
+@AllArgsConstructor
 public class StartPayMeterFormServiceImpl extends BaseServiceImpl<StartPayMeterFormMapper, StartPayMeterForm> implements IStartPayMeterFormService {
 public class StartPayMeterFormServiceImpl extends BaseServiceImpl<StartPayMeterFormMapper, StartPayMeterForm> implements IStartPayMeterFormService {
 
 
+    private final IAttachmentFormService attachmentFormService;
+
+    /**
+     * 新增 开工预付款计量单
+     */
+    @Override
+    public void add(StartPayMeterFormDTO dto) {
+        //保存材料计量单信息
+        StartPayMeterForm form = new StartPayMeterForm();
+        BeanUtils.copyProperties(dto,form);
+        Long id = SnowFlakeUtil.getId();
+        form.setId(id);
+        this.save(form);
+        //保存附件信息
+        List<AttachmentForm> fileList = dto.getFileList();
+        if (fileList != null && fileList.size() != 0) {
+            for (AttachmentForm file : fileList) {
+                file.setMasterId(id);
+            }
+            attachmentFormService.saveBatch(fileList);
+        }
+    }
+
+    /**
+     * 修改 开工预付款计量单
+     */
+    @Override
+    public void update2(StartPayMeterFormDTO dto) {
+        //保存材料计量单信息
+        StartPayMeterForm form = new StartPayMeterForm();
+        BeanUtils.copyProperties(dto,form);
+        this.updateById(form);
+        //删除附件信息
+        attachmentFormService.deleteByMasterId(form.getId());
+        //保存附件信息
+        List<AttachmentForm> fileList = dto.getFileList();
+        if (fileList != null && fileList.size() != 0) {
+            for (AttachmentForm file : fileList) {
+                file.setMasterId(form.getId());
+            }
+            attachmentFormService.saveBatch(fileList);
+        }
+    }
 
 
+    /**
+     * 分页 开工预付款计量单
+     */
+    @Override
+    public IPage<StartPayMeterFormVO> page2(Long contractId, Long meterPeriodId, Query query) {
+        IPage<StartPayMeterFormVO> page = new Page<>(query.getCurrent(),query.getSize());
+        return baseMapper.meterPage(page,contractId,meterPeriodId);
+    }
 
 
+    /**
+     * 详情
+     */
+    @Override
+    public StartPayMeterFormVO detail(Long id) {
+        //开工计量单id
+        StartPayMeterFormVO vo = baseMapper.detail(id);
+        //查询附件信息
+        List<AttachmentForm> list = attachmentFormService.list(new LambdaQueryWrapper<AttachmentForm>()
+                .eq(AttachmentForm::getContractId, vo.getContractId())
+                .eq(AttachmentForm::getMasterId, id));
+        vo.setFileList(list);
+        return vo;
+    }
 }
 }