Răsfoiți Sursa

变更管理所有接口

qianxb 1 an în urmă
părinte
comite
ecc592afa1
39 a modificat fișierele cu 585 adăugiri și 129 ștergeri
  1. 6 4
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/ChangeTokenFormDTO.java
  2. 1 1
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/ChangeTokenForm.java
  3. 18 2
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/ChangeTokenInventory.java
  4. 35 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ChangeNodeVO.java
  5. 19 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ChangeTokenFormVO.java
  6. 25 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ChangeTokenPageVO.java
  7. 4 1
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ContractMeterPeriodVO.java
  8. 3 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/InventoryFormDetailVO.java
  9. 52 56
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/ChangeTokenFormController.java
  10. 1 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/ContractMeterPeriodController.java
  11. 1 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/MeterPeriodController.java
  12. 15 2
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ChangeTokenFormMapper.java
  13. 51 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ChangeTokenFormMapper.xml
  14. 2 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ChangeTokenInventoryMapper.java
  15. 7 4
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ChangeTokenInventoryMapper.xml
  16. 2 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ChangeTokenMeterMapper.java
  17. 4 2
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ChangeTokenMeterMapper.xml
  18. 2 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractMeterPeriodMapper.java
  19. 10 2
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractMeterPeriodMapper.xml
  20. 2 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/InventoryFormApplyMapper.java
  21. 4 3
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/InventoryFormApplyMapper.xml
  22. 2 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MeterPeriodMapper.java
  23. 18 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MeterPeriodMapper.xml
  24. 3 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MiddleMeterApplyMapper.java
  25. 6 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MiddleMeterApplyMapper.xml
  26. 14 4
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/IChangeTokenFormService.java
  27. 2 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/IChangeTokenInventoryService.java
  28. 2 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/IChangeTokenMeterService.java
  29. 1 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/IContractMeterPeriodService.java
  30. 1 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/IInventoryFormApplyService.java
  31. 1 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/IMeterPeriodService.java
  32. 228 10
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/ChangeTokenFormServiceImpl.java
  33. 4 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/ChangeTokenInventoryServiceImpl.java
  34. 4 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/ChangeTokenMeterServiceImpl.java
  35. 13 8
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/ContractInventoryFormServiceImpl.java
  36. 2 4
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/ContractMeterPeriodServiceImpl.java
  37. 4 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/InventoryFormApplyServiceImpl.java
  38. 2 5
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MeterPeriodServiceImpl.java
  39. 14 11
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MiddleMeterApplyServiceImpl.java

+ 6 - 4
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/ChangeTokenFormDTO.java

@@ -21,6 +21,8 @@ import org.springblade.meter.entity.AttachmentForm;
 import org.springblade.meter.entity.ChangeTokenForm;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.springblade.meter.vo.ChangeFormVO2;
+import org.springblade.meter.vo.ChangeNodeVO;
 
 import java.util.List;
 
@@ -35,11 +37,11 @@ import java.util.List;
 public class ChangeTokenFormDTO extends ChangeTokenForm {
 	private static final long serialVersionUID = 1L;
 
-	@ApiModelProperty(value = "附件集合")
-	private List<AttachmentForm> nodeList;
+	@ApiModelProperty(value = "部位集合")
+	private List<ChangeNodeVO> nodeList;
 
-	@ApiModelProperty(value = "附件集合")
-	private List<AttachmentForm> formList;
+	@ApiModelProperty(value = "清单集合")
+	private List<ChangeFormVO2> formList;
 
 	@ApiModelProperty(value = "附件集合")
 	private List<AttachmentForm> fileList;

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

@@ -83,7 +83,7 @@ public class ChangeTokenForm extends BaseEntity {
     /**
      * 变更申请金额
      */
-    @ApiModelProperty(value = "项目id")
+    @ApiModelProperty(value = "变更申请金额")
     private BigDecimal changeMoney;
     /**
      * 设计完成时间

+ 18 - 2
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/ChangeTokenInventory.java

@@ -19,6 +19,7 @@ package org.springblade.meter.entity;
 import com.baomidou.mybatisplus.annotation.TableName;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 
 import io.swagger.annotations.ApiModelProperty;
 import org.springblade.core.mp.base.BaseEntity;
@@ -62,7 +63,7 @@ public class ChangeTokenInventory extends BaseEntity {
      * 变更前数量
      */
     @ApiModelProperty(value = "变更前数量")
-    private Integer changeBefore;
+    private Integer changeBeforeTotal;
     /**
      * 变更数量
      */
@@ -72,7 +73,22 @@ public class ChangeTokenInventory extends BaseEntity {
      * 变更后数量
      */
     @ApiModelProperty(value = "变更后数量")
-    private Integer changeAfter;
+    private Integer changeAfterTotal;
+    /**
+     * 变更前金额
+     */
+    @ApiModelProperty(value = "变更前金额")
+    private BigDecimal changeBeforeMoney;
+    /**
+     * 变更金额
+     */
+    @ApiModelProperty(value = "变更金额")
+    private BigDecimal changeMoney;
+    /**
+     * 变更后金额
+     */
+    @ApiModelProperty(value = "变更后金额")
+    private BigDecimal changeAfterMoney;
 
 
 }

+ 35 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ChangeNodeVO.java

@@ -0,0 +1,35 @@
+package org.springblade.meter.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @Param   变更部位视图类-变更令用
+ * @Author wangwl
+ * @Date 2023/12/11 10:12
+ **/
+@Data
+public class ChangeNodeVO {
+
+    @ApiModelProperty(value = "id")
+    private Long id;
+
+    @ApiModelProperty(value = "工程名称")
+    private String nodeName;
+
+    @ApiModelProperty(value = "节点路径")
+    private String nodeUrl;
+
+    @ApiModelProperty(value = "合同图号")
+    private String contractPicture;
+
+    @ApiModelProperty(value = "变更后金额")
+    private BigDecimal changeMoney;
+
+    @ApiModelProperty(value = "是否增补")
+    private String isSupplementName;
+
+
+}

+ 19 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ChangeTokenFormVO.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.ChangeTokenForm;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.util.List;
+
 /**
  * 变更令表视图实体类
  *
@@ -31,4 +35,19 @@ import lombok.EqualsAndHashCode;
 public class ChangeTokenFormVO extends ChangeTokenForm {
 	private static final long serialVersionUID = 1L;
 
+	@ApiModelProperty(value = "变更类型名称")
+	private String changeTypeName;
+
+	@ApiModelProperty(value = "变更归类名称")
+	private String changeClassifyName;
+
+	@ApiModelProperty(value = "部位集合")
+	private List<ChangeNodeVO> nodeList;
+
+	@ApiModelProperty(value = "清单集合")
+	private List<ChangeFormVO2> formList;
+
+	@ApiModelProperty(value = "附件集合")
+	private List<AttachmentForm> fileList;
+
 }

+ 25 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ChangeTokenPageVO.java

@@ -0,0 +1,25 @@
+package org.springblade.meter.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.meter.entity.ChangeTokenForm;
+
+/**
+ * @Param
+ * @Author wangwl
+ * @Date 2023/12/11 18:09
+ **/
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ChangeTokenPageVO extends ChangeTokenForm {
+    private static final long serialVersionUID = 2L;
+
+    @ApiModelProperty(value = "变更类型名称")
+    private String changeTypeName;
+
+    @ApiModelProperty(value = "审批状态名称")
+    private String approveStatusName;
+
+
+}

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

@@ -32,7 +32,10 @@ import lombok.EqualsAndHashCode;
 public class ContractMeterPeriodVO extends ContractMeterPeriod {
 	private static final long serialVersionUID = 1L;
 
-	@ApiModelProperty(value = "引用状态,0未引用,1引用")
+	@ApiModelProperty(value = "存在数据状态,0不存在,1已存在。如果存在数据则不能删除可以修改")
+	private Integer dataStatus;
+
+	@ApiModelProperty(value = "引用状态,0未引用,1引用。如果被引用就不能删除不能修改")
 	private Integer citeStatus;
 
 }

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

@@ -41,4 +41,7 @@ public class InventoryFormDetailVO extends ContractInventoryForm {
 	@ApiModelProperty(value = "下级节点集合")
 	private List<ContractInventoryFormVO> list;
 
+	@ApiModelProperty(value = "引用状态,0未引用,1引用")
+	private Integer citeStatus;
+
 }

+ 52 - 56
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/ChangeTokenFormController.java

@@ -27,9 +27,7 @@ import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.meter.dto.ChangeTokenAddFormDTO;
 import org.springblade.meter.dto.ChangeTokenFormDTO;
-import org.springblade.meter.vo.ChangeFormVO;
-import org.springblade.meter.vo.ChangeFormVO2;
-import org.springblade.meter.vo.ZeroChangeVO;
+import org.springblade.meter.vo.*;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.RequestParam;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -82,11 +80,26 @@ public class ChangeTokenFormController extends BladeController {
 		return R.data(vos);
 	}
 
+	/**
+	 * 新增-获取变更申请部位
+	 */
+	@GetMapping("/getChangeNode")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "新增-获取变更申请部位", notes = "传入合同id和选中的节点id,返回变更申请部位集合")
+	@ApiImplicitParams(value = {
+			@ApiImplicitParam(name = "contractId", value = "合同id", required = true),
+			@ApiImplicitParam(name = "ids", value = "选中的清单id,逗号拼接", required = true)
+	})
+	public R<List<ChangeNodeVO>> getChangeNode(Long contractId,String ids) {
+		List<ChangeNodeVO> vos = changeTokenFormService.getChangeNode(contractId,ids);
+		return R.data(vos);
+	}
+
 	/**
 	 * 新增-添加清单
 	 */
 	@GetMapping("/addForm")
-	@ApiOperationSupport(order = 1)
+	@ApiOperationSupport(order = 4)
 	@ApiOperation(value = "新增添加清单", notes = "传入合同id,显示类型1显示所有2显示已分解,节点id,搜索值,返回清单集合")
 	@ApiImplicitParams(value = {
 			@ApiImplicitParam(name = "contractId", value = "合同id", required = true),
@@ -104,90 +117,73 @@ public class ChangeTokenFormController extends BladeController {
 	 * 新增-确认选择清单
 	 */
 	@GetMapping("/selectForm")
-	@ApiOperationSupport(order = 1)
+	@ApiOperationSupport(order = 5)
 	@ApiOperation(value = "新增确认选择清单", notes = "传入选中的清单id,返回变更申请清单集合")
 	@ApiImplicitParams(value = {
+			@ApiImplicitParam(name = "contractId", value = "合同id", required = true),
 			@ApiImplicitParam(name = "ids", value = "选中的清单id,逗号拼接", required = true)
 	})
-	public R<List<ChangeFormVO2>> selectForm(String ids) {
-		List<ChangeFormVO2> vos = changeTokenFormService.selectForm(ids);
+	public R<List<ChangeFormVO2>> selectForm(Long contractId,String ids) {
+		List<ChangeFormVO2> vos = changeTokenFormService.selectForm(contractId,ids);
 		return R.data(vos);
 	}
 
 	/**
-	 * 新增 变更令
+	 * 新增 变更令
 	 */
 	@PostMapping("/add")
-	@ApiOperationSupport(order = 3)
-	@ApiOperation(value = "新增变更令", notes = "传入changeTokenFormDTO")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增变更令", notes = "传入changeTokenFormDTO,包含基础信息,部位集合,清单集合,附件集合")
 	public R add(@Valid @RequestBody ChangeTokenFormDTO dto) {
 		changeTokenFormService.add(dto);
 		return R.success("新增成功");
 	}
 
+	/**
+	 * 修改 变更令表
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "修改", notes = "传入changeTokenFormDTO,包含基础信息,部位集合,清单集合,附件集合")
+	public R update(@Valid @RequestBody ChangeTokenFormDTO dto) {
+		changeTokenFormService.update2(dto);
+		return R.success("修改成功");
+	}
+
 	/**
 	 * 详情
 	 */
 	@GetMapping("/detail")
-	@ApiOperationSupport(order = 1)
-	@ApiOperation(value = "详情", notes = "传入changeTokenForm")
-	public R<ChangeTokenForm> detail(ChangeTokenForm changeTokenForm) {
-		ChangeTokenForm detail = changeTokenFormService.getOne(Condition.getQueryWrapper(changeTokenForm));
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "详情", notes = "传入变更令id")
+	public R<ChangeTokenFormVO> detail(Long id) {
+		ChangeTokenFormVO detail = changeTokenFormService.detail(id);
 		return R.data(detail);
 	}
 
 	/**
 	 * 分页 变更令表
 	 */
-	@GetMapping("/list")
-	@ApiOperationSupport(order = 2)
-	@ApiOperation(value = "分页", notes = "传入changeTokenForm")
-	public R<IPage<ChangeTokenForm>> list(ChangeTokenForm changeTokenForm, Query query) {
-		IPage<ChangeTokenForm> pages = changeTokenFormService.page(Condition.getPage(query), Condition.getQueryWrapper(changeTokenForm));
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 9)
+	@ApiOperation(value = "分页", notes = "传入合同id和分页信息")
+	@ApiImplicitParams(value = {
+			@ApiImplicitParam(name = "contractId", value = "合同id", required = true),
+	})
+	public R<IPage<ChangeTokenPageVO>> page(Long contractId, Query query) {
+		IPage<ChangeTokenPageVO> pages = changeTokenFormService.page2(contractId,query);
 		return R.data(pages);
 	}
-
-
-
-	/**
-	 * 新增 变更令表
-	 */
-	@PostMapping("/save")
-	@ApiOperationSupport(order = 4)
-	@ApiOperation(value = "新增", notes = "传入changeTokenForm")
-	public R save(@Valid @RequestBody ChangeTokenForm changeTokenForm) {
-		return R.status(changeTokenFormService.save(changeTokenForm));
-	}
-
-	/**
-	 * 修改 变更令表
-	 */
-	@PostMapping("/update")
-	@ApiOperationSupport(order = 5)
-	@ApiOperation(value = "修改", notes = "传入changeTokenForm")
-	public R update(@Valid @RequestBody ChangeTokenForm changeTokenForm) {
-		return R.status(changeTokenFormService.updateById(changeTokenForm));
-	}
-
-	/**
-	 * 新增或修改 变更令表
-	 */
-	@PostMapping("/submit")
-	@ApiOperationSupport(order = 6)
-	@ApiOperation(value = "新增或修改", notes = "传入changeTokenForm")
-	public R submit(@Valid @RequestBody ChangeTokenForm changeTokenForm) {
-		return R.status(changeTokenFormService.saveOrUpdate(changeTokenForm));
-	}
-
 	
 	/**
 	 * 删除 变更令表
 	 */
-	@PostMapping("/remove")
-	@ApiOperationSupport(order = 7)
+	@PostMapping("/delete")
+	@ApiOperationSupport(order = 10)
 	@ApiOperation(value = "逻辑删除", notes = "传入ids")
-	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
-		return R.status(changeTokenFormService.deleteLogic(Func.toLongList(ids)));
+	public R delete(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		changeTokenFormService.delete(ids);
+		return R.success("删除成功");
 	}
 
 	

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

@@ -82,7 +82,7 @@ public class ContractMeterPeriodController extends BladeController {
 	@GetMapping("/allPeriod")
 	@ApiOperationSupport(order = 3)
 	@ApiOperation(value = "合同计量期列表-全部", notes = "传入contractId")
-	public R<List<ContractMeterPeriod>> allPeriod(Long contractId) {
+	public R<List<ContractMeterPeriodVO>> allPeriod(Long contractId) {
 		return R.data(contractMeterPeriodService.allPeriod(contractId));
 	}
 

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

@@ -92,7 +92,7 @@ public class MeterPeriodController extends BladeController {
 	@GetMapping("/allPeriod")
 	@ApiOperationSupport(order = 3)
 	@ApiOperation(value = "计量期列表-全部", notes = "传入contractId,type:材料传1开工传2")
-	public R<List<MeterPeriod>> allPeriod(Long contractId,Integer type) {
+	public R<List<MeterPeriodVO>> allPeriod(Long contractId,Integer type) {
 		return R.data(meterPeriodService.allPeriod(contractId,type));
 	}
 

+ 15 - 2
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ChangeTokenFormMapper.java

@@ -16,12 +16,12 @@
  */
 package org.springblade.meter.mapper;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
 import org.springblade.meter.entity.ChangeTokenForm;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.springblade.meter.entity.ContractInventoryForm;
-import org.springblade.meter.vo.ChangeFormVO;
-import org.springblade.meter.vo.ZeroChangeVO;
+import org.springblade.meter.vo.*;
 
 import java.util.List;
 
@@ -43,4 +43,17 @@ public interface ChangeTokenFormMapper extends BaseMapper<ChangeTokenForm> {
     List<ChangeFormVO> getChangeNodeForm(@Param("contractId") Long contractId,@Param("ids")  List<Long> ids,@Param("searchValue") String searchValue);
 
     List<Long> getNodeForm(@Param("contractId") Long contractId,@Param("nodeId") Long nodeId);
+
+    List<ChangeNodeVO> getChangeNode(@Param("contractId") Long contractId,@Param("ids") List<Long> longs);
+
+    List<ChangeFormVO2> selectForm(@Param("contractId") Long contractId,@Param("ids") List<Long> longs);
+
+    ChangeTokenFormVO detail(@Param("id") Long id);
+
+    List<ChangeNodeVO> getNodeList(@Param("contractId") Long contractId,@Param("id") Long id);
+
+    List<ChangeFormVO2> getFormList(@Param("contractId") Long contractId,@Param("id") Long id);
+
+    IPage<ChangeTokenPageVO> page2(IPage<ChangeTokenPageVO> page,@Param("contractId") Long contractId);
+
 }

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

@@ -91,6 +91,57 @@
                             and (mtc.id = #{nodeId} or FIND_IN_SET(#{nodeId}, ancestor) > 0))
         GROUP BY contract_form_id
     </select>
+    <select id="getChangeNode" resultType="org.springblade.meter.vo.ChangeNodeVO">
+        select id,node_name,contract_picture,change_money,
+                if(is_supplement = 1,'是','否') as isSupplementName
+        from s_meter_tree_contract where id in
+        <foreach collection="ids" item="id" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </select>
+    <select id="selectForm" resultType="org.springblade.meter.vo.ChangeFormVO2">
+        select id,form_number,form_name,current_price,contract_total,0 as currentChangeTotal,contract_total as change_total,
+                change_money as contractMoney, 0 as currentChangeMoney,change_money as changeMoney
+        from s_contract_inventory_form cif
+        where contract_id = #{contractId}
+        and id in
+        <foreach collection="ids" item="id" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </select>
+    <select id="detail" resultType="org.springblade.meter.vo.ChangeTokenFormVO">
+        select *,
+               (select dict_value from blade_dict where is_deleted = 0 and code = 'meter_change_type' and dict_key = ctf.change_type) as changeTypeName,
+               (select dict_value from blade_dict where is_deleted = 0 and code = 'meter_change_classify' and dict_key = ctf.change_classify) as changeClassifyName
+        from s_change_token_form ctf
+        where id = #{id}
+    </select>
+    <select id="getNodeList" resultType="org.springblade.meter.vo.ChangeNodeVO">
+        select mtc.id,mtc.node_name,mtc.change_money,
+               if(mtc.is_supplement = 1,'是','否') as isSupplementName,
+               ctm.contract_picture
+        from s_change_token_meter ctm left join s_meter_tree_contract mtc on ctm.contract_meter_id = mtc.id
+        where ctm.contract_id = #{contractId} and ctm.is_deleted = 0
+          AND ctm.change_token_id = #{id}
+    </select>
+    <select id="getFormList" resultType="org.springblade.meter.vo.ChangeFormVO2">
+        select cif.id,cif.form_number,cif.form_name,cif.current_price,
+               cti.change_before_total as contractTotal,cti.change_total as currentChangeTotal,
+               cti.change_after_total as changeTotal,cti.change_before_money as contractMoney,
+               cti.change_money as currentChangeMoney,cti.change_after_money as changeMoney
+        from s_change_token_inventory cti left join s_contract_inventory_form cif on cti.contract_form_id = cif.id
+        where cti.contract_id = #{contractId} and cti.is_deleted = 0
+          AND cti.change_token_id = #{id}
+    </select>
+    <select id="page2" resultType="org.springblade.meter.vo.ChangeTokenPageVO">
+        select *,
+               (select dict_value from blade_dict where is_deleted = 0 and code = 'meter_change_type' and dict_key = ctf.change_type) as changeTypeName,
+               CASE when approve_status = 0 then '未上报' when approve_status = 1 then '待审批' when approve_status = 2 then '已审批'
+                    else '已废除' end as approveStatusName
+        from s_change_token_form ctf
+        where contract_id = #{contractId}
+        order by change_approval_date desc
+    </select>
 
 
 </mapper>

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

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

+ 7 - 4
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ChangeTokenInventoryMapper.xml

@@ -15,12 +15,15 @@
         <result column="project_id" property="projectId"/>
         <result column="contract_id" property="contractId"/>
         <result column="change_token_id" property="changeTokenId"/>
-        <result column="inventory_form_id" property="inventoryFormId"/>
-        <result column="change_before" property="changeBefore"/>
+        <result column="contract_form_id" property="contractFormId"/>
+        <result column="change_before_total" property="changeBeforeTotal"/>
         <result column="change_total" property="changeTotal"/>
-        <result column="change_after" property="changeAfter"/>
+        <result column="change_after_total" property="changeAfterTotal"/>
     </resultMap>
-
+    <delete id="deleteByTokenId">
+        DELETE FROM s_change_token_inventory
+        where change_token_id = #{id}
+    </delete>
 
 
 </mapper>

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

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

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

@@ -18,8 +18,10 @@
         <result column="contract_meter_id" property="contractMeterId"/>
         <result column="contract_picture" property="contractPicture"/>
     </resultMap>
-
-
+    <delete id="deleteByTokenId">
+        DELETE FROM s_change_token_meter
+        where change_token_id = #{id}
+    </delete>
 
 
 </mapper>

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

@@ -38,4 +38,6 @@ public interface ContractMeterPeriodMapper extends BaseMapper<ContractMeterPerio
     IPage<ContractMeterPeriodVO> periodPage(IPage<ContractMeterPeriodVO> page, @Param("contractId") Long contractId);
 
     List<ContractMeterPeriod> conditionPeriod(@Param("contractId") Long contractId);
+
+    List<ContractMeterPeriodVO> allPeriod(@Param("contractId")Long contractId);
 }

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

@@ -25,8 +25,8 @@
     </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
+            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,0,1) as dataStatus,
+            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) as citeStatus
         from s_contract_meter_period cmp
         where is_deleted = 0 and contract_id = #{contractId}
         ORDER BY sort
@@ -37,6 +37,14 @@
         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>
+    <select id="allPeriod" 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,0,1) as dataStatus,
+               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) as citeStatus
+        from s_contract_meter_period cmp
+        where is_deleted = 0 and contract_id = #{contractId}
+        ORDER BY sort
+    </select>
 
 
 </mapper>

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

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

+ 4 - 3
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/InventoryFormApplyMapper.xml

@@ -18,8 +18,9 @@
         <result column="middle_meter_id" property="middleMeterId"/>
         <result column="current_meter_total" property="currentMeterTotal"/>
     </resultMap>
+    <delete id="deleteByMiddleId">
+        DELETE FROM s_inventory_form_apply
+        where middle_meter_id = #{id}
+    </delete>
 
-    <select id="dadainfo" >
-
-    </select>
 </mapper>

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

@@ -38,4 +38,6 @@ public interface MeterPeriodMapper extends BaseMapper<MeterPeriod> {
     void remove(@Param("contractId") Long contractId,@Param("type") Integer type);
 
     List<MeterPeriod> conditionPeriod(@Param("contractId") Long contractId,@Param("type") Integer type);
+
+    List<MeterPeriodVO> allPeriod(Long contractId, Integer type);
 }

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

@@ -49,6 +49,24 @@
         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>
+    <select id="allPeriod" 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>
 
 
 </mapper>

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

@@ -18,6 +18,7 @@ package org.springblade.meter.mapper;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
+import org.springblade.meter.entity.ChangeTokenForm;
 import org.springblade.meter.entity.ChangeTokenMeter;
 import org.springblade.meter.entity.MeterTreeContract;
 import org.springblade.meter.entity.MiddleMeterApply;
@@ -53,4 +54,6 @@ public interface MiddleMeterApplyMapper extends BaseMapper<MiddleMeterApply> {
     MiddleMeterApplyVO getById(@Param("id") Long id);
 
     List<MeterInventoryVO> getForm(@Param("id") Long id,@Param("contractId") Long contractId);
+
+    ChangeTokenForm getTokenById(@Param("id") Long id);
 }

+ 6 - 1
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MiddleMeterApplyMapper.xml

@@ -49,7 +49,8 @@
         </foreach>
     </select>
     <select id="getNodeToken" resultType="org.springblade.meter.entity.ChangeTokenMeter">
-        select * from s_change_token_meter where is_deleted = 0 and contract_meter_id = #{nodeId} and command_status = 1 limit 1
+        select * from s_change_token_meter
+        where is_deleted = 0 and contract_meter_id = #{nodeId} limit 1
     </select>
     <select id="getNodeDivide" resultType="org.springblade.meter.entity.MeterTreeContract">
         select *
@@ -95,6 +96,10 @@
         where ifa.contract_id = #{contractId} and ifa.is_deleted = 0
         AND ifa.middle_meter_id = #{id}
     </select>
+    <select id="getTokenById" resultType="org.springblade.meter.entity.ChangeTokenForm">
+        select *
+        from s_change_token_form where id = #{id}
+    </select>
 
 
 </mapper>

+ 14 - 4
blade-service/blade-meter/src/main/java/org/springblade/meter/service/IChangeTokenFormService.java

@@ -16,13 +16,13 @@
  */
 package org.springblade.meter.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.core.mp.support.Query;
 import org.springblade.meter.dto.ChangeTokenAddFormDTO;
 import org.springblade.meter.dto.ChangeTokenFormDTO;
 import org.springblade.meter.entity.ChangeTokenForm;
 import org.springblade.core.mp.base.BaseService;
-import org.springblade.meter.vo.ChangeFormVO;
-import org.springblade.meter.vo.ChangeFormVO2;
-import org.springblade.meter.vo.ZeroChangeVO;
+import org.springblade.meter.vo.*;
 
 import java.util.List;
 
@@ -55,5 +55,15 @@ public interface IChangeTokenFormService extends BaseService<ChangeTokenForm> {
      */
     List<ChangeFormVO> addForm(ChangeTokenAddFormDTO dto);
 
-    List<ChangeFormVO2> selectForm(String ids);
+    List<ChangeFormVO2> selectForm(Long contractId,String ids);
+
+    List<ChangeNodeVO> getChangeNode(Long contractId,String ids);
+
+    void update2(ChangeTokenFormDTO dto);
+
+    ChangeTokenFormVO detail(Long id);
+
+    IPage<ChangeTokenPageVO> page2(Long contractId, Query query);
+
+    void delete(String ids);
 }

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

@@ -27,5 +27,6 @@ import org.springblade.core.mp.base.BaseService;
  */
 public interface IChangeTokenInventoryService extends BaseService<ChangeTokenInventory> {
 
-
+    //删除当前变更令下的清单
+    void deleteByTokenId(Long id);
 }

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

@@ -27,5 +27,6 @@ import org.springblade.core.mp.base.BaseService;
  */
 public interface IChangeTokenMeterService extends BaseService<ChangeTokenMeter> {
 
-
+    //删除当前变更令下的清单
+    void deleteByTokenId(Long id);
 }

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

@@ -38,7 +38,7 @@ public interface IContractMeterPeriodService extends BaseService<ContractMeterPe
 
     IPage<ContractMeterPeriodVO> periodPage(Long contractId, Query query);
 
-    List<ContractMeterPeriod> allPeriod(Long contractId);
+    List<ContractMeterPeriodVO> allPeriod(Long contractId);
 
     List<ContractMeterPeriod> conditionPeriod(Long contractId);
 }

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

@@ -27,5 +27,6 @@ import org.springblade.core.mp.base.BaseService;
  */
 public interface IInventoryFormApplyService extends BaseService<InventoryFormApply> {
 
+    void deleteByMiddleId(Long id);
 
 }

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

@@ -40,7 +40,7 @@ public interface IMeterPeriodService extends BaseService<MeterPeriod> {
 
     void locking(Long id, Integer isLock);
 
-    List<MeterPeriod> allPeriod(Long contractId,Integer type);
+    List<MeterPeriodVO> allPeriod(Long contractId,Integer type);
 
     List<MeterPeriod> conditionPeriod(Long contractId, Integer type);
 }

+ 228 - 10
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/ChangeTokenFormServiceImpl.java

@@ -16,22 +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.apache.commons.lang.StringUtils;
+import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.meter.dto.ChangeTokenAddFormDTO;
 import org.springblade.meter.dto.ChangeTokenFormDTO;
-import org.springblade.meter.entity.ChangeTokenForm;
-import org.springblade.meter.entity.ContractInventoryForm;
+import org.springblade.meter.entity.*;
 import org.springblade.meter.mapper.ChangeTokenFormMapper;
-import org.springblade.meter.service.IChangeTokenFormService;
+import org.springblade.meter.service.*;
 import org.springblade.core.mp.base.BaseServiceImpl;
-import org.springblade.meter.service.IContractInventoryFormService;
-import org.springblade.meter.vo.ChangeFormVO;
-import org.springblade.meter.vo.ChangeFormVO2;
-import org.springblade.meter.vo.ZeroChangeVO;
+import org.springblade.meter.vo.*;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
@@ -48,8 +51,21 @@ import java.util.stream.Collectors;
 @AllArgsConstructor
 public class ChangeTokenFormServiceImpl extends BaseServiceImpl<ChangeTokenFormMapper, ChangeTokenForm> implements IChangeTokenFormService {
 
+    //合同清单
     private final IContractInventoryFormService contractInventoryFormService;
 
+    //中间计量申请
+    private final IMiddleMeterApplyService middleMeterApplyService;
+
+    //附件
+    private final IAttachmentFormService attachmentFormService;
+
+    //变更令与合同计量单元中间表
+    private final IChangeTokenMeterService changeTokenMeterService;
+
+    //变更令与合同清单中间表
+    private final IChangeTokenInventoryService changeTokenInventoryService;
+
 
     /**
      * 一键生成零号变更  统计每个清单节点当前分解量,设置进清单的划分数量
@@ -93,8 +109,64 @@ public class ChangeTokenFormServiceImpl extends BaseServiceImpl<ChangeTokenFormM
      * 新增 变更令表
      */
     @Override
+    @Transactional
     public void add(ChangeTokenFormDTO dto) {
-
+        //复制出基础数据
+        Long id = SnowFlakeUtil.getId();
+        dto.setId(id);
+        ChangeTokenForm form = new ChangeTokenForm();
+        BeanUtils.copyProperties(dto,form);
+        //保存部位
+        List<ChangeNodeVO> nodeList = dto.getNodeList();
+        if (nodeList.size() != 0){
+            List<ChangeTokenMeter> meterList = nodeList.stream().map(l -> {
+                ChangeTokenMeter meter = new ChangeTokenMeter();
+                meter.setProjectId(dto.getProjectId());
+                meter.setContractId(dto.getContractId());
+                meter.setChangeTokenId(id);
+                meter.setContractMeterId(l.getId());
+                meter.setContractPicture(l.getContractPicture());
+                return meter;
+            }).collect(Collectors.toList());
+            changeTokenMeterService.saveBatch(meterList);
+        }
+        //保存清单,并计算总变更金额设置进变更令
+        List<ChangeFormVO2> formList = dto.getFormList();
+        if (formList.size() != 0){
+            List<ChangeTokenInventory> inventoryList = new ArrayList<>();
+            BigDecimal big = new BigDecimal(0);
+            for (ChangeFormVO2 vo2 : formList) {
+                ChangeTokenInventory inventory = new ChangeTokenInventory();
+                inventory.setProjectId(dto.getProjectId());
+                inventory.setContractId(dto.getContractId());
+                inventory.setChangeTokenId(id);
+                inventory.setContractFormId(vo2.getId());
+                inventory.setChangeBeforeTotal(vo2.getContractTotal());
+                inventory.setChangeTotal(vo2.getCurrentChangeTotal());
+                //计算变更后
+                inventory.setChangeAfterTotal(inventory.getChangeBeforeTotal() + inventory.getChangeTotal());
+                inventory.setChangeBeforeMoney(vo2.getContractMoney());
+                //计算变更增减金额
+                inventory.setChangeMoney(vo2.getCurrentPrice().multiply(new BigDecimal(inventory.getChangeTotal())));
+                big = big.add(inventory.getChangeMoney());
+                //计算变更后金额
+                inventory.setChangeAfterMoney(vo2.getCurrentPrice().multiply(new BigDecimal(inventory.getChangeAfterTotal())));
+                inventoryList.add(inventory);
+            }
+            form.setChangeMoney(big);
+            changeTokenInventoryService.saveBatch(inventoryList);
+        }
+        this.save(form);
+        //保存附件
+        List<AttachmentForm> fileList = dto.getFileList();
+        if (fileList != null && fileList.size() != 0) {
+            for (AttachmentForm file : fileList) {
+                file.setProjectId(dto.getProjectId());
+                file.setContractId(dto.getContractId());
+                file.setMasterId(id);
+            }
+            attachmentFormService.saveBatch(fileList);
+        }
     }
 
     /**
@@ -130,7 +202,153 @@ public class ChangeTokenFormServiceImpl extends BaseServiceImpl<ChangeTokenFormM
      * 新增-确认选择清单
      */
     @Override
-    public List<ChangeFormVO2> selectForm(String ids) {
-        return null;
+    public List<ChangeFormVO2> selectForm(Long contractId,String ids) {
+        List<ChangeFormVO2> vos = new ArrayList<>();
+        if (StringUtils.isBlank(ids)){
+            return vos;
+        }
+        List<Long> longs = Func.toLongList(ids);
+        vos = baseMapper.selectForm(contractId,longs);
+        return vos;
+    }
+
+    /**
+     * 新增-获取变更申请部位
+     */
+    @Override
+    public List<ChangeNodeVO> getChangeNode(Long contractId,String ids) {
+        List<ChangeNodeVO> vos = new ArrayList<>();
+        if (StringUtils.isBlank(ids)){
+            return vos;
+        }
+        List<Long> longs = Func.toLongList(ids);
+        //暂时使用循环单条查询
+        vos = baseMapper.getChangeNode(contractId,longs);
+        for (ChangeNodeVO vo : vos) {
+            vo.setNodeUrl(middleMeterApplyService.getNodeDivide(vo.getId()));
+        }
+        return vos;
+    }
+
+    /**
+     * 修改 变更令表
+     */
+    @Override
+    public void update2(ChangeTokenFormDTO dto) {
+        //复制出基础数据
+        ChangeTokenForm form = new ChangeTokenForm();
+        BeanUtils.copyProperties(dto,form);
+        //修改部位
+        List<ChangeNodeVO> nodeList = dto.getNodeList();
+        //删除当前变更令下的部位
+        changeTokenMeterService.deleteByTokenId(dto.getId());
+        if (nodeList.size() != 0){
+            List<ChangeTokenMeter> meterList = nodeList.stream().map(l -> {
+                ChangeTokenMeter meter = new ChangeTokenMeter();
+                meter.setProjectId(dto.getProjectId());
+                meter.setContractId(dto.getContractId());
+                meter.setChangeTokenId(dto.getId());
+                meter.setContractMeterId(l.getId());
+                meter.setContractPicture(l.getContractPicture());
+                return meter;
+            }).collect(Collectors.toList());
+            changeTokenMeterService.saveBatch(meterList);
+        }
+        //保存清单,并计算总变更金额设置进变更令
+        List<ChangeFormVO2> formList = dto.getFormList();
+        //删除当前变更令下的清单
+        changeTokenInventoryService.deleteByTokenId(dto.getId());
+        if (formList.size() != 0){
+            List<ChangeTokenInventory> inventoryList = new ArrayList<>();
+            BigDecimal big = new BigDecimal(0);
+            for (ChangeFormVO2 vo2 : formList) {
+                ChangeTokenInventory inventory = new ChangeTokenInventory();
+                inventory.setProjectId(dto.getProjectId());
+                inventory.setContractId(dto.getContractId());
+                inventory.setChangeTokenId(dto.getId());
+                inventory.setContractFormId(vo2.getId());
+                inventory.setChangeBeforeTotal(vo2.getContractTotal());
+                inventory.setChangeTotal(vo2.getCurrentChangeTotal());
+                //计算变更后
+                inventory.setChangeAfterTotal(inventory.getChangeBeforeTotal() + inventory.getChangeTotal());
+                inventory.setChangeBeforeMoney(vo2.getContractMoney());
+                //计算变更增减金额
+                inventory.setChangeMoney(vo2.getCurrentPrice().multiply(new BigDecimal(inventory.getChangeTotal())));
+                big = big.add(inventory.getChangeMoney());
+                //计算变更后金额
+                inventory.setChangeAfterMoney(vo2.getCurrentPrice().multiply(new BigDecimal(inventory.getChangeAfterTotal())));
+                inventoryList.add(inventory);
+            }
+            form.setChangeMoney(big);
+            changeTokenInventoryService.saveBatch(inventoryList);
+        }
+        this.updateById(form);
+        //删除附件信息
+        attachmentFormService.deleteByMasterId(form.getId());
+        //保存附件
+        List<AttachmentForm> fileList = dto.getFileList();
+        if (fileList != null && fileList.size() != 0) {
+            for (AttachmentForm file : fileList) {
+                file.setProjectId(dto.getProjectId());
+                file.setContractId(dto.getContractId());
+                file.setMasterId(dto.getId());
+            }
+            attachmentFormService.saveBatch(fileList);
+        }
+    }
+
+    /**
+     * 详情
+     */
+    @Override
+    public ChangeTokenFormVO detail(Long id) {
+        //查询变更令信息
+        ChangeTokenFormVO vo = baseMapper.detail(id);
+        //查询节点信息
+        List<ChangeNodeVO> nodeList = baseMapper.getNodeList(vo.getContractId(),vo.getId());
+        if (nodeList.size() != 0) {
+            for (ChangeNodeVO nodeVO : nodeList) {
+                nodeVO.setNodeUrl(middleMeterApplyService.getNodeDivide(nodeVO.getId()));
+            }
+            vo.setNodeList(nodeList);
+        }
+        //查询清单信息
+        List<ChangeFormVO2> formList = baseMapper.getFormList(vo.getContractId(),vo.getId());
+        vo.setFormList(formList);
+        //查询附件信息
+        List<AttachmentForm> list = attachmentFormService.list(new LambdaQueryWrapper<AttachmentForm>()
+                .eq(AttachmentForm::getContractId, vo.getContractId())
+                .eq(AttachmentForm::getMasterId, id));
+        vo.setFileList(list);
+        return vo;
+    }
+
+    /**
+     * 分页 变更令表
+     */
+    @Override
+    public IPage<ChangeTokenPageVO> page2(Long contractId, Query query) {
+        IPage<ChangeTokenPageVO> page = new Page<>(query.getCurrent(),query.getSize());
+        page = baseMapper.page2(page,contractId);
+        return page;
+    }
+
+    /**
+     * 删除 变更令表
+     */
+    @Override
+    @Transactional
+    public void delete(String ids) {
+        List<Long> longs = Func.toLongList(ids);
+        for (Long id : longs) {
+            //删除变更令
+            this.removeById(id);
+            //删除部位
+            changeTokenMeterService.deleteByTokenId(id);
+            //删除清单
+            changeTokenInventoryService.deleteByTokenId(id);
+            //删除附件
+            attachmentFormService.deleteByMasterId(id);
+        }
     }
 }

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

@@ -32,5 +32,8 @@ import org.springframework.stereotype.Service;
 public class ChangeTokenInventoryServiceImpl extends BaseServiceImpl<ChangeTokenInventoryMapper, ChangeTokenInventory> implements IChangeTokenInventoryService {
 
 
-
+    @Override
+    public void deleteByTokenId(Long id) {
+        baseMapper.deleteByTokenId(id);
+    }
 }

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

@@ -32,5 +32,8 @@ import org.springframework.stereotype.Service;
 public class ChangeTokenMeterServiceImpl extends BaseServiceImpl<ChangeTokenMeterMapper, ChangeTokenMeter> implements IChangeTokenMeterService {
 
 
-
+    @Override
+    public void deleteByTokenId(Long id) {
+        baseMapper.deleteByTokenId(id);
+    }
 }

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

@@ -277,6 +277,11 @@ public class ContractInventoryFormServiceImpl extends BaseServiceImpl<ContractIn
         InventoryFormDetailVO vo = baseMapper.getById(id);
         //如果是清单节点就直接返回
         if (vo.getIsFormNode() == 1){
+           if (this.nodeIsChange(id)){
+               vo.setCiteStatus(1);
+           }else {
+               vo.setCiteStatus(0);
+           }
             return vo;
         }
         //查询下级节点集合,并统计合同金额,变更后金额
@@ -381,7 +386,7 @@ public class ContractInventoryFormServiceImpl extends BaseServiceImpl<ContractIn
             //相同则先判断修改后节点类型是否为清单类型
             if (form.getIsFormNode().equals(1)){
                 //判断是否已经被分解或者被变更,包括零号变更
-                Boolean isChange = this.nodeIsChange(nodeInfo);
+                Boolean isChange = this.nodeIsChange(nodeInfo.getId());
                 //发生过变更,就去判断单价和数量。没被变更或者修改过,就不去判断单价和数量是否发生改变
                 if (isChange) {
                     //判断单价和数量是否发生改变
@@ -411,7 +416,7 @@ public class ContractInventoryFormServiceImpl extends BaseServiceImpl<ContractIn
                 }
             }else {
                 //不为清单节点:判断当前节点是否被分解或者被变更,包括零号变更
-                Boolean isChange = this.nodeIsChange(nodeInfo);
+                Boolean isChange = this.nodeIsChange(nodeInfo.getId());
                 if (isChange){
                     throw new ServiceException("当前节点已被分解或变更,不能修改为非清单节点");
                 }
@@ -482,17 +487,17 @@ public class ContractInventoryFormServiceImpl extends BaseServiceImpl<ContractIn
     /**
      * 判断当前节点是否已经分解或变更过,变更过返回true
      */
-    private Boolean nodeIsChange(ContractInventoryForm form) {
-        if (form.getBuildChangeTotal() != null) {
-            return true;
-        }
+    private Boolean nodeIsChange(Long id) {
+//        if (form.getBuildChangeTotal() != null) {
+//            return true;
+//        }
         long count = formMeterService.count(new LambdaQueryWrapper<InventoryFormMeter>()
-                .eq(InventoryFormMeter::getContractFormId, form.getId()));
+                .eq(InventoryFormMeter::getContractFormId, id));
         if (count > 0) {
             return true;
         }
         long count1 = tokenInventoryService.count(new LambdaQueryWrapper<ChangeTokenInventory>()
-                .eq(ChangeTokenInventory::getContractFormId, form.getId()));
+                .eq(ChangeTokenInventory::getContractFormId, id));
         if (count1 > 0) {
             return true;
         }

+ 2 - 4
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/ContractMeterPeriodServiceImpl.java

@@ -97,10 +97,8 @@ public class ContractMeterPeriodServiceImpl extends BaseServiceImpl<ContractMete
      * 计量期列表-全部 材料开工计量期表
      */
     @Override
-    public List<ContractMeterPeriod> allPeriod(Long contractId) {
-        return this.list(new LambdaQueryWrapper<ContractMeterPeriod>()
-                .eq(ContractMeterPeriod::getContractId,contractId)
-                .orderByAsc(ContractMeterPeriod::getSort));
+    public List<ContractMeterPeriodVO> allPeriod(Long contractId) {
+        return baseMapper.allPeriod(contractId);
     }
 
     /**

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

@@ -32,5 +32,8 @@ import org.springframework.stereotype.Service;
 public class InventoryFormApplyServiceImpl extends BaseServiceImpl<InventoryFormApplyMapper, InventoryFormApply> implements IInventoryFormApplyService {
 
 
-
+    @Override
+    public void deleteByMiddleId(Long id) {
+        baseMapper.deleteByMiddleId(id);
+    }
 }

+ 2 - 5
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MeterPeriodServiceImpl.java

@@ -110,11 +110,8 @@ public class MeterPeriodServiceImpl extends BaseServiceImpl<MeterPeriodMapper, M
     }
 
     @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));
+    public List<MeterPeriodVO> allPeriod(Long contractId, Integer type) {
+        return baseMapper.allPeriod(contractId,type);
     }
 
     @Override

+ 14 - 11
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MiddleMeterApplyServiceImpl.java

@@ -56,8 +56,6 @@ public class MiddleMeterApplyServiceImpl extends BaseServiceImpl<MiddleMeterAppl
 
     private final IInventoryFormMeterService formMeterService;
 
-    private final IChangeTokenFormService changeTokenFormService;
-
     private final MeterTreeContractService meterTreeContractService;
 
     private final IInventoryFormApplyService inventoryFormApplyService;
@@ -167,7 +165,7 @@ public class MiddleMeterApplyServiceImpl extends BaseServiceImpl<MiddleMeterAppl
             return null;
         }
         //获取变更令
-        ChangeTokenForm tokenForm = changeTokenFormService.getById(nodeToken.getId());
+        ChangeTokenForm tokenForm = baseMapper.getTokenById(nodeToken.getId());
         return tokenForm.getChangeNumber();
     }
 
@@ -180,11 +178,18 @@ public class MiddleMeterApplyServiceImpl extends BaseServiceImpl<MiddleMeterAppl
         MeterTreeContract contract = meterTreeContractService.getById(nodeId);
         //获取祖级节点
         String ancestor = contract.getAncestor();
-        List<Long> ids = Func.toLongList(ancestor);
-        List<MeterTreeContract> list = baseMapper.getNodeDivide(contract.getContractId(), ids);
+        if (StringUtils.isBlank(ancestor)){
+            throw new ServiceException("当前节点未找到祖级节点");
+        }
         StringBuilder str = new StringBuilder();
-        for (MeterTreeContract c : list) {
-            str.append(c.getNodeName()+"-");
+        //不是1,2级节点,才去查询拼接
+        if (ancestor.split(",").length > 2) {
+            ancestor = ancestor.substring(ancestor.indexOf(",",2)+1);
+            List<Long> ids = Func.toLongList(ancestor);
+            List<MeterTreeContract> list = baseMapper.getNodeDivide(contract.getContractId(), ids);
+            for (MeterTreeContract c : list) {
+                str.append(c.getNodeName() + "-");
+            }
         }
         str.append(contract.getNodeName());
         return str.toString();
@@ -202,12 +207,10 @@ public class MiddleMeterApplyServiceImpl extends BaseServiceImpl<MiddleMeterAppl
         apply.setMeterMoney(null);
         //保存计量清单
         List<MeterInventoryVO> formList = dto.getFormList();
+        //删除当前节点本期清单
+        inventoryFormApplyService.deleteByMiddleId(dto.getId());
         if (formList.size() != 0){
             BigDecimal big = new BigDecimal(0);
-            //删除当前节点本期清单
-            inventoryFormApplyService.remove(new LambdaQueryWrapper<InventoryFormApply>()
-                    .eq(InventoryFormApply::getMiddleMeterId,dto.getId())
-                    .eq(InventoryFormApply::getContractPeriodId,dto.getContractPeriodId()));
             //保存清单
             List<InventoryFormApply> formApplies = formList.stream().map(l -> {
                 InventoryFormApply formApply = new InventoryFormApply();