Browse Source

Merge remote-tracking branch 'origin/master'

liuyc 1 year ago
parent
commit
bdb0294801
51 changed files with 946 additions and 236 deletions
  1. 10 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/ContractMeterPeriodDTO.java
  2. 7 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/MaterialMeterFormDTO.java
  3. 14 3
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/MeterPeriodDTO.java
  4. 7 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/StartPayMeterFormDTO.java
  5. 31 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/ContractMeterPeriod.java
  6. 14 1
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/MeterPeriod.java
  7. 51 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ContractMaterialTreeVO.java
  8. 13 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ContractMaterialVO.java
  9. 4 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ContractMeterPeriodVO.java
  10. 3 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/FormTreeVO.java
  11. 4 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/InventoryFormDetailVO.java
  12. 16 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/MaterialMeterFormVO.java
  13. 4 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/MeterPeriodVO.java
  14. 10 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/StartPayMeterFormVO.java
  15. 11 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/ContractInventoryFormController.java
  16. 11 11
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/ContractMaterialController.java
  17. 30 48
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/ContractMeterPeriodController.java
  18. 29 35
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/MaterialMeterFormController.java
  19. 17 45
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/MaterialStartStatementController.java
  20. 39 42
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/MeterPeriodController.java
  21. 52 36
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/StartPayMeterFormController.java
  22. 2 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/AttachmentFormMapper.java
  23. 4 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/AttachmentFormMapper.xml
  24. 4 2
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractInventoryFormMapper.xml
  25. 6 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractMaterialMapper.java
  26. 4 2
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractMaterialMapper.xml
  27. 10 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractMeterPeriodMapper.java
  28. 18 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractMeterPeriodMapper.xml
  29. 6 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MaterialMeterFormMapper.java
  30. 17 2
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MaterialMeterFormMapper.xml
  31. 3 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MaterialStartStatementMapper.java
  32. 8 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MaterialStartStatementMapper.xml
  33. 10 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MeterPeriodMapper.java
  34. 28 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MeterPeriodMapper.xml
  35. 6 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/StartPayMeterFormMapper.java
  36. 15 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/StartPayMeterFormMapper.xml
  37. 1 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/IAttachmentFormService.java
  38. 2 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/IContractMaterialService.java
  39. 13 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/IContractMeterPeriodService.java
  40. 11 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/IMaterialMeterFormService.java
  41. 3 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/IMaterialStartStatementService.java
  42. 15 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/IMeterPeriodService.java
  43. 11 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/IStartPayMeterFormService.java
  44. 4 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/AttachmentFormServiceImpl.java
  45. 1 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/ContractInventoryFormServiceImpl.java
  46. 28 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/ContractMaterialServiceImpl.java
  47. 77 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/ContractMeterPeriodServiceImpl.java
  48. 90 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MaterialMeterFormServiceImpl.java
  49. 8 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MaterialStartStatementServiceImpl.java
  50. 85 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MeterPeriodServiceImpl.java
  51. 79 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/StartPayMeterFormServiceImpl.java

+ 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;
 
+import io.swagger.annotations.ApiModelProperty;
 import org.springblade.meter.entity.ContractMeterPeriod;
 import lombok.Data;
 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 {
 	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;
 
+import io.swagger.annotations.ApiModelProperty;
+import org.springblade.meter.entity.AttachmentForm;
 import org.springblade.meter.entity.MaterialMeterForm;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.util.List;
+
 /**
  * 材料计量单数据传输对象实体类
  *
@@ -31,4 +35,7 @@ import lombok.EqualsAndHashCode;
 public class MaterialMeterFormDTO extends MaterialMeterForm {
 	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;
 
+import io.swagger.annotations.ApiModelProperty;
 import org.springblade.meter.entity.MeterPeriod;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.util.List;
+
 /**
  * 材料开工计量期表数据传输对象实体类
  *
@@ -27,8 +30,16 @@ import lombok.EqualsAndHashCode;
  * @since 2023-11-29
  */
 @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;
 
+import io.swagger.annotations.ApiModelProperty;
+import org.springblade.meter.entity.AttachmentForm;
 import org.springblade.meter.entity.StartPayMeterForm;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.util.List;
+
 /**
  * 开工预付款计量单数据传输对象实体类
  *
@@ -31,4 +35,7 @@ import lombok.EqualsAndHashCode;
 public class StartPayMeterFormDTO extends StartPayMeterForm {
 	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;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import com.baomidou.mybatisplus.annotation.TableName;
 
 import java.io.Serializable;
 import java.time.LocalDate;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import org.springblade.core.mp.base.BaseEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
 
 /**
  * 合同计量期表实体类
@@ -64,11 +67,39 @@ public class ContractMeterPeriod extends BaseEntity {
      */
     @ApiModelProperty(value = "月")
     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 = "报表打印日期")
     private LocalDate formPrintDate;
 
+    /**
+     * 排序
+     */
+    @ApiModelProperty(value = "排序")
+    private Integer sort;
+
 
 }

+ 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;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import com.baomidou.mybatisplus.annotation.TableName;
 
 import java.io.Serializable;
@@ -42,7 +43,7 @@ public class MeterPeriod extends BaseEntity {
     /**
      * 项目id
      */
-    @ApiModelProperty(value = "s_meter_period")
+    @ApiModelProperty(value = "项目id")
     private Long projectId;
     /**
      * 合同段id
@@ -80,5 +81,17 @@ public class MeterPeriod extends BaseEntity {
     @ApiModelProperty(value = "报表打印日期")
     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;
 
+import io.swagger.annotations.ApiModelProperty;
 import org.springblade.meter.entity.ContractMaterial;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.math.BigDecimal;
+
 /**
  * 合同材料表视图实体类
  *
@@ -31,4 +34,14 @@ import lombok.EqualsAndHashCode;
 public class ContractMaterialVO extends ContractMaterial {
 	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;
 
+import io.swagger.annotations.ApiModelProperty;
 import org.springblade.meter.entity.ContractMeterPeriod;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -31,4 +32,7 @@ import lombok.EqualsAndHashCode;
 public class ContractMeterPeriodVO extends ContractMeterPeriod {
 	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 = "章编号")
     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;
 
+import com.alibaba.excel.annotation.ExcelProperty;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -34,6 +35,9 @@ import java.util.List;
 public class InventoryFormDetailVO extends ContractInventoryForm {
 	private static final long serialVersionUID = 1L;
 
+	@ApiModelProperty(value = "清单类型")
+	private String formTypeName;
+
 	@ApiModelProperty(value = "下级节点集合")
 	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;
 
+import io.swagger.annotations.ApiModelProperty;
+import org.springblade.meter.entity.AttachmentForm;
 import org.springblade.meter.entity.MaterialMeterForm;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.util.List;
+
 /**
  * 材料计量单视图实体类
  *
@@ -31,4 +35,16 @@ import lombok.EqualsAndHashCode;
 public class MaterialMeterFormVO extends MaterialMeterForm {
 	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;
+
 }

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

+ 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")
 	@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) {
 		contractInventoryFormService.add(form);
 		return R.success("新增成功");
@@ -149,5 +149,15 @@ public class ContractInventoryFormController extends BladeController {
 		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.tool.api.R;
 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.RequestParam;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -74,17 +75,6 @@ public class ContractMaterialController extends BladeController {
 		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)));
 	}
 
+	/**
+	 * 材料树 合同材料表
+	 */
+	@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.tool.api.R;
 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.RequestParam;
 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.core.boot.ctrl.BladeController;
 
+import java.util.List;
+
 /**
  * 合同计量期表 控制器
  *
@@ -48,70 +53,47 @@ public class ContractMeterPeriodController extends BladeController {
 
 	private final IContractMeterPeriodService contractMeterPeriodService;
 
-	/**
-	 * 详情
-	 */
-	@GetMapping("/detail")
-	@ApiOperationSupport(order = 1)
-	@ApiOperation(value = "详情", notes = "传入contractMeterPeriod")
-	public R<ContractMeterPeriod> detail(ContractMeterPeriod contractMeterPeriod) {
-		ContractMeterPeriod detail = contractMeterPeriodService.getOne(Condition.getQueryWrapper(contractMeterPeriod));
-		return R.data(detail);
-	}
 
 	/**
-	 * 分页 合同计量期表
+	 * 分页
 	 */
-	@GetMapping("/list")
-	@ApiOperationSupport(order = 2)
-	@ApiOperation(value = "分页", notes = "传入contractMeterPeriod")
-	public R<IPage<ContractMeterPeriod>> list(ContractMeterPeriod contractMeterPeriod, Query query) {
-		IPage<ContractMeterPeriod> pages = contractMeterPeriodService.page(Condition.getPage(query), Condition.getQueryWrapper(contractMeterPeriod));
+	@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);
 	}
 
-
-
-	/**
-	 * 新增 合同计量期表
-	 */
-	@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;
 
-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 lombok.AllArgsConstructor;
 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.tool.api.R;
 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.RequestParam;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -48,38 +48,42 @@ public class MaterialMeterFormController extends BladeController {
 
 	private final IMaterialMeterFormService materialMeterFormService;
 
+
 	/**
-	 * 详情
+	 * 新增 材料计量单
 	 */
-	@GetMapping("/detail")
+	@PostMapping("/add")
 	@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)
-	@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);
 	}
 
-
-
 	/**
-	 * 新增 材料计量单
+	 * 详情
 	 */
-	@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")
 	@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;
 
-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 lombok.AllArgsConstructor;
 import javax.validation.Valid;
@@ -49,59 +47,33 @@ public class MaterialStartStatementController extends BladeController {
 	private final IMaterialStartStatementService materialStartStatementService;
 
 	/**
-	 * 详情
+	 * 新增或修改 材料和开工报表
 	 */
-	@GetMapping("/detail")
+	@PostMapping("/addOrUpdate")
 	@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)
-	@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);
 	}
 
-
-	/**
-	 * 新增 材料和开工报表
-	 */
-	@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.tool.api.R;
 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.RequestParam;
 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.core.boot.ctrl.BladeController;
 
+import java.util.List;
+
 /**
  * 材料开工计量期表 控制器
  *
@@ -48,70 +52,63 @@ public class MeterPeriodController extends BladeController {
 
 	private final IMeterPeriodService meterPeriodService;
 
-	/**
-	 * 详情
-	 */
-	@GetMapping("/detail")
-	@ApiOperationSupport(order = 1)
-	@ApiOperation(value = "详情", notes = "传入meterPeriod")
-	public R<MeterPeriod> detail(MeterPeriod meterPeriod) {
-		MeterPeriod detail = meterPeriodService.getOne(Condition.getQueryWrapper(meterPeriod));
-		return R.data(detail);
-	}
 
 	/**
 	 * 分页 材料开工计量期表
 	 */
-	@GetMapping("/list")
-	@ApiOperationSupport(order = 2)
-	@ApiOperation(value = "分页", notes = "传入meterPeriod")
-	public R<IPage<MeterPeriod>> list(MeterPeriod meterPeriod, Query query) {
-		IPage<MeterPeriod> pages = meterPeriodService.page(Condition.getPage(query), Condition.getQueryWrapper(meterPeriod));
+	@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);
 	}
 
-
-
 	/**
-	 * 新增 材料开工计量期表
+	 * 编辑计量期 材料开工计量期表
 	 */
-	@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));
 	}
 
+
+
+
+
 	
 }

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

@@ -17,23 +17,26 @@
 package org.springblade.meter.controller;
 
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
+import io.swagger.annotations.*;
 import lombok.AllArgsConstructor;
 import javax.validation.Valid;
 
-import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.meter.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.RequestParam;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.meter.entity.StartPayMeterForm;
 import org.springblade.meter.service.IStartPayMeterFormService;
 import org.springblade.core.boot.ctrl.BladeController;
 
+import java.math.BigDecimal;
+import java.util.List;
+
 /**
  * 开工预付款计量单 控制器
  *
@@ -48,57 +51,70 @@ public class StartPayMeterFormController extends BladeController {
 
 	private final IStartPayMeterFormService startPayMeterFormService;
 
+	private final JdbcTemplate jdbcTemplate;
+
 	/**
-	 * 详情
+	 * 开工预付款总额
 	 */
-	@GetMapping("/detail")
+	@GetMapping("/getStartAmount")
 	@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)
-	@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;
 
+import org.apache.ibatis.annotations.Param;
 import org.springblade.meter.entity.AttachmentForm;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
@@ -28,5 +29,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 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_pdf_url" property="filePdfUrl"/>
     </resultMap>
-
+    <delete id="deleteByMasterId">
+        DELETE FROM s_attachment_form
+        where master_id = #{masterId}
+    </delete>
 
 
 </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)
     </update>
     <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,
                (select COUNT(1) from s_contract_inventory_form
                     WHERE contract_id = #{contractId} and is_deleted=0 and parent_id = scif.id) as hasChild
@@ -53,7 +53,9 @@
         order by sort
     </select>
     <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 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,

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

@@ -16,8 +16,13 @@
  */
 package org.springblade.meter.mapper;
 
+import org.apache.ibatis.annotations.Param;
 import org.springblade.meter.entity.ContractMaterial;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.meter.vo.ContractMaterialTreeVO;
+import org.springblade.meter.vo.ContractMaterialVO;
+
+import java.util.List;
 
 /**
  * 合同材料表 Mapper 接口
@@ -28,4 +33,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 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="amount" property="amount"/>
     </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>

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

@@ -16,8 +16,13 @@
  */
 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 com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.meter.vo.ContractMeterPeriodVO;
+
+import java.util.List;
 
 /**
  * 合同计量期表 Mapper 接口
@@ -28,4 +33,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 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="form_print_date" property="formPrintDate"/>
     </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>

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

@@ -16,8 +16,11 @@
  */
 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 com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.meter.vo.MaterialMeterFormVO;
 
 /**
  * 材料计量单 Mapper 接口
@@ -28,4 +31,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 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="sort" property="sort"/>
     </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>

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

@@ -16,6 +16,8 @@
  */
 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 com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
@@ -28,4 +30,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 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="sort" property="sort"/>
     </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>

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

@@ -16,8 +16,13 @@
  */
 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 com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.meter.vo.MeterPeriodVO;
+
+import java.util.List;
 
 /**
  * 材料开工计量期表 Mapper 接口
@@ -28,4 +33,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 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="form_print_date" property="formPrintDate"/>
     </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>

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

@@ -16,8 +16,11 @@
  */
 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 com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.meter.vo.StartPayMeterFormVO;
 
 /**
  * 开工预付款计量单 Mapper 接口
@@ -28,4 +31,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 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="sort" property="sort"/>
     </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>

+ 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> {
 
 
+    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.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> {
 
 
+    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;
 
+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.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> {
 
 
+    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;
 
+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.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> {
 
 
+    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;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.core.mp.support.Query;
 import org.springblade.meter.entity.MaterialStartStatement;
 import org.springblade.core.mp.base.BaseService;
 
@@ -28,4 +30,5 @@ import org.springblade.core.mp.base.BaseService;
 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;
 
+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.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> {
 
 
+    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;
 
+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.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> {
 
 
+    void add(StartPayMeterFormDTO dto);
+
+    void update2(StartPayMeterFormDTO dto);
+
+    IPage<StartPayMeterFormVO> page2(Long contractId, Long meterPeriodId, Query query);
+
+    StartPayMeterFormVO detail(Long id);
 }

+ 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 {
 
 
-
+    @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())){
                 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.service.IContractMaterialService;
 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 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 {
 
 
-
+    /**
+     * 材料树 合同材料表
+     */
+    @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;
 
+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.MeterPeriod;
 import org.springblade.meter.mapper.ContractMeterPeriodMapper;
 import org.springblade.meter.service.IContractMeterPeriodService;
 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.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 {
 
 
+    /**
+     * 编辑计量期
+     */
+    @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;
 
+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.mapper.MaterialMeterFormMapper;
+import org.springblade.meter.service.IAttachmentFormService;
 import org.springblade.meter.service.IMaterialMeterFormService;
 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.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.util.List;
 
 /**
  * 材料计量单 服务实现类
@@ -29,8 +44,83 @@ import org.springframework.stereotype.Service;
  * @since 2023-11-29
  */
 @Service
+@AllArgsConstructor
 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;
 
+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.mapper.MaterialStartStatementMapper;
 import org.springblade.meter.service.IMaterialStartStatementService;
@@ -32,4 +35,9 @@ import org.springframework.stereotype.Service;
 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;
 
+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.mapper.MeterPeriodMapper;
+import org.springblade.meter.service.IMaterialMeterFormService;
+import org.springblade.meter.service.IMaterialStartStatementService;
 import org.springblade.meter.service.IMeterPeriodService;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.meter.vo.MeterPeriodVO;
 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
  */
 @Service
+@AllArgsConstructor
 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);
+    }
 }

+ 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;
 
+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.mapper.StartPayMeterFormMapper;
+import org.springblade.meter.service.IAttachmentFormService;
 import org.springblade.meter.service.IStartPayMeterFormService;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.meter.vo.StartPayMeterFormVO;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * 开工预付款计量单 服务实现类
  *
@@ -29,8 +42,74 @@ import org.springframework.stereotype.Service;
  * @since 2023-11-29
  */
 @Service
+@AllArgsConstructor
 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;
+    }
 }