Prechádzať zdrojové kódy

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

yangyj 1 rok pred
rodič
commit
f7b3fc1ebc
32 zmenil súbory, kde vykonal 375 pridanie a 74 odobranie
  1. 3 3
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/ChangeTokenInventory.java
  2. 3 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/ChangeTokenMeter.java
  3. 14 2
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/InventoryFormMeter.java
  4. 3 3
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ChangeFormVO2.java
  5. 4 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ChangeNodeVO.java
  6. 35 12
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ContractFromVO.java
  7. 14 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/ChangeTokenFormController.java
  8. 3 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/ContractInventoryFormController.java
  9. 3 3
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/InventoryFormMeterController.java
  10. 11 3
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/MeterTreeController.java
  11. 16 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/MiddleMeterApplyController.java
  12. 4 4
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ChangeTokenFormMapper.xml
  13. 5 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ChangeTokenMeterMapper.java
  14. 3 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ChangeTokenMeterMapper.xml
  15. 3 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractInventoryFormMapper.java
  16. 24 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractInventoryFormMapper.xml
  17. 1 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MeterTreeContractMapper.java
  18. 6 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MeterTreeContractMapper.xml
  19. 3 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MiddleMeterApplyMapper.java
  20. 8 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MiddleMeterApplyMapper.xml
  21. 23 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/IChangeTokenFormService.java
  22. 7 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/IChangeTokenMeterService.java
  23. 5 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/IContractInventoryFormService.java
  24. 1 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/IInventoryFormMeterService.java
  25. 3 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/IMiddleMeterApplyService.java
  26. 2 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/MeterTreeContractService.java
  27. 53 26
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/ChangeTokenFormServiceImpl.java
  28. 14 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/ChangeTokenMeterServiceImpl.java
  29. 19 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/ContractInventoryFormServiceImpl.java
  30. 62 14
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/InventoryFormMeterServiceImpl.java
  31. 12 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MeterTreeContractServiceImpl.java
  32. 8 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MiddleMeterApplyServiceImpl.java

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

@@ -85,17 +85,17 @@ public class ChangeTokenInventory extends BaseEntity {
      * 变更前数量
      */
     @ApiModelProperty(value = "变更前数量")
-    private Integer changeBeforeTotal;
+    private BigDecimal changeBeforeTotal;
     /**
      * 变更数量
      */
     @ApiModelProperty(value = "变更数量")
-    private Integer changeTotal;
+    private BigDecimal changeTotal;
     /**
      * 变更后数量
      */
     @ApiModelProperty(value = "变更后数量")
-    private Integer changeAfterTotal;
+    private BigDecimal changeAfterTotal;
     /**
      * 变更前金额
      */

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

@@ -74,6 +74,9 @@ public class ChangeTokenMeter extends BaseEntity {
     @ApiModelProperty(value = "变更后金额")
     private BigDecimal changeMoney;
 
+    @ApiModelProperty(value = "变更前-变更后金额")
+    private BigDecimal beforeChangeMoney;
+
     @ApiModelProperty(value = "是否增补")
     private Integer isSupplement;
 

+ 14 - 2
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/InventoryFormMeter.java

@@ -22,6 +22,8 @@ import org.springblade.core.mp.base.BaseEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.math.BigDecimal;
+
 /**
  * 工程清单与合同计量单元	中间表实体类
  *
@@ -59,12 +61,22 @@ public class InventoryFormMeter extends BaseEntity {
      * 施工图数量
      */
     @ApiModelProperty(value = "施工图数量")
-    private Integer buildPictureTotal;
+    private BigDecimal buildPictureTotal;
     /**
      * 变更后施工图数量
      */
     @ApiModelProperty(value = "变更后施工图数量")
-    private Integer changeBuildPictureTotal;
+    private BigDecimal changeBuildPictureTotal;
+    /**
+     * 施工图金额
+     */
+    @ApiModelProperty(value = "施工图金额")
+    private BigDecimal buildPictureMoney;
+    /**
+     * 变更后施工图金额
+     */
+    @ApiModelProperty(value = "变更后施工图金额")
+    private BigDecimal changeBuildPictureMoney;
 
 
 }

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

@@ -30,13 +30,13 @@ public class ChangeFormVO2 {
     private BigDecimal currentPrice;
 
     @ApiModelProperty(value = "合同数量(变更前)")
-    private Integer contractTotal;
+    private BigDecimal contractTotal;
 
     @ApiModelProperty(value = "数量变更增减")
-    private Integer currentChangeTotal;
+    private BigDecimal currentChangeTotal;
 
     @ApiModelProperty(value = "合同变更后数量(变更后)")
-    private Integer changeTotal;
+    private BigDecimal changeTotal;
 
     @ApiModelProperty(value = "合同金额(变更前)")
     private BigDecimal contractMoney;

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

@@ -27,6 +27,9 @@ public class ChangeNodeVO {
     @ApiModelProperty(value = "合同图号")
     private String contractPicture;
 
+    @ApiModelProperty(value = "变更前-变更后金额")
+    private BigDecimal beforeChangeMoney;
+
     @ApiModelProperty(value = "变更后金额")
     private BigDecimal changeMoney;
 
@@ -47,6 +50,7 @@ public class ChangeNodeVO {
         return id.equals(that.id);
     }
 
+    //用于去重
     @Override
     public int hashCode() {
         return Objects.hash(id);

+ 35 - 12
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ContractFromVO.java

@@ -31,49 +31,69 @@ public class ContractFromVO {
      * 清单编号
      */
     @ApiModelProperty(value = "清单编号")
-    @ExcelProperty("清单编号")
     private String formNumber;
     /**
      * 清单名称
      */
     @ApiModelProperty(value = "清单名称")
-    @ExcelProperty("清单名称")
     private String formName;
 
     /**
      * 当前单价
      */
     @ApiModelProperty(value = "当前单价")
-    @ExcelIgnore
     private BigDecimal currentPrice;
 
     /**
      * 合同数量
      */
     @ApiModelProperty(value = "合同数量")
-    @ExcelProperty("数量")
-    private Integer contractTotal;
+    private BigDecimal contractTotal;
 
     /**
      * 变更后数量
      */
     @ApiModelProperty(value = "变更后数量")
-    @ExcelIgnore
-    private Integer changeTotal;
+    private BigDecimal changeTotal;
 
     /**
      * 已分解量
      */
-    @ApiModelProperty(value = "已分解量")
-    @ExcelIgnore
-    private Integer poseNum;
+    @ApiModelProperty(value = "已分解量 = 其他节点分解量+施工图数量")
+    private BigDecimal poseNum;
+
+    /**
+     * 已分解量
+     */
+    @ApiModelProperty(value = "其他节点分解量")
+    private BigDecimal otherPoseNum;
 
     /**
      * 剩余分解量
      */
     @ApiModelProperty(value = "剩余分解量")
-    @ExcelIgnore
-    private Integer residueNum;
+    private BigDecimal residueNum;
+
+    /**
+     * 施工图数量
+     */
+    @ApiModelProperty(value = "施工图数量")
+    private BigDecimal buildPictureTotal;
+    /**
+     * 变更后施工图数量
+     */
+    @ApiModelProperty(value = "变更后施工图数量")
+    private BigDecimal changeBuildPictureTotal;
+    /**
+     * 施工图金额
+     */
+    @ApiModelProperty(value = "施工图金额")
+    private BigDecimal buildPictureMoney;
+    /**
+     * 变更后施工图金额
+     */
+    @ApiModelProperty(value = "变更后施工图金额")
+    private BigDecimal changeBuildPictureMoney;
 
     /**
      * 是否增补
@@ -81,4 +101,7 @@ public class ContractFromVO {
     @ApiModelProperty(value = "是否增补")
     @ExcelIgnore
     private Integer isSupplement;
+
+    @ApiModelProperty(value = "引用状态,0未引用,1引用,被引用的施工图不允许修改删除")
+    private Integer citeStatus;
 }

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

@@ -188,5 +188,19 @@ public class ChangeTokenFormController extends BladeController {
 		return R.success("删除成功");
 	}
 
+	/**
+	 * 下达变更 变更令表
+	 */
+	@GetMapping("/executeChange")
+	@ApiOperationSupport(order = 9)
+	@ApiOperation(value = "下达变更", notes = "传入当前变更令id")
+	@ApiImplicitParams(value = {
+			@ApiImplicitParam(name = "id", value = "当前变更令id", required = true),
+	})
+	public R executeChange(Long id) {
+		changeTokenFormService.executeChange(id);
+		return R.success("下达成功");
+	}
+
 	
 }

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

@@ -198,7 +198,9 @@ public class ContractInventoryFormController extends BladeController {
 		if(meterId!=null && ObjectUtil.isEmpty(meterId)){
 			return R.fail("meterId不能为空");
 		}
-		List<ContractFromVO> treeAll = contractInventoryFormService.getContrFormAllByContrId(contractId,formNum,1,meterId);
+//		List<ContractFromVO> treeAll = contractInventoryFormService.getContrFormAllByContrId(contractId,formNum,1,meterId);
+		//获取分解列表,排除当前节点已经分解的
+		List<ContractFromVO> treeAll = contractInventoryFormService.getNotResolveForm(contractId,formNum,meterId);
 		return R.data(treeAll);
 	}
 	

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

@@ -142,13 +142,13 @@ public class InventoryFormMeterController extends BladeController {
 	@ApiOperation(value = "删除同合计量", notes = "传入")
 	@ApiImplicitParams(value = {
 			@ApiImplicitParam(name = "meterId", value = "合同计量单元id", required = true),
-			@ApiImplicitParam(name = "formIds", value = "合同工程清单ids,多个以,分割", required = true)
+			@ApiImplicitParam(name = "formIds", value = "单元-清单中间表id", required = true)
 	})
-	public R delInMeterInfo(String meterId,String formIds) {
+	public R delInMeterInfo(String meterId,Long formIds) {
 		if(meterId==null & StringUtils.isEmpty(meterId)){
 			R.fail("计量单元meterId不能为null");
 		}
-		if(formIds!=null & StringUtils.isNotEmpty(formIds)){
+		if(formIds!=null){
 			R.fail("合同工程清单formIds不能为null");
 		}
 		return inventoryFormMeterService.delInMeterInfo(meterId,formIds);

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

@@ -1,5 +1,6 @@
 package org.springblade.meter.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
@@ -671,9 +672,16 @@ public class MeterTreeController extends BladeController {
                     vo.setStakeTypeName(dict.getDictValue());
                 }
             }
-
-            List<ContractFromVO> contrFormAllByContrId = contractInventoryFormService.getContrFormAllByContrId(basicInfo.getContractId(), "", 2, basicInfo.getId());
-            vo.setDecompositionList(contrFormAllByContrId);
+            //判断是否为最底层节点,如果为最底层节点则直接查询清单,不为最底层节点则汇总子节点总和
+            long count = meterTreeContractService.count(new LambdaQueryWrapper<MeterTreeContract>()
+                    .eq(MeterTreeContract::getContractId, basicInfo.getContractId())
+                    .eq(MeterTreeContract::getParentId, basicInfo.getId()));
+            if (count == 0) {
+                List<ContractFromVO> contrFormAllByContrId = contractInventoryFormService.getNodeResolveForm(basicInfo.getContractId(), basicInfo.getId());
+                vo.setDecompositionList(contrFormAllByContrId);
+            }else {
+                meterTreeContractService.getAllChildNodeMoney(vo);
+            }
             return R.data(vo);
         }
         return R.data(null);

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

@@ -37,6 +37,7 @@ import org.springblade.meter.entity.MiddleMeterApply;
 import org.springblade.meter.service.IMiddleMeterApplyService;
 import org.springblade.core.boot.ctrl.BladeController;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -71,6 +72,7 @@ public class MiddleMeterApplyController extends BladeController {
 		return R.data(vos);
 	}
 
+
 	/**
 	 * 添加分解清单
 	 */
@@ -198,6 +200,20 @@ public class MiddleMeterApplyController extends BladeController {
 		return R.data(middleMeterApplyService.getMeterNumber(middleMeterApply));
 	}
 
+	/**
+	 * 获取本期计量总金额
+	 */
+	@GetMapping("/getCurrentMeterMoney")
+	@ApiOperationSupport(order = 12)
+	@ApiOperation(value = "获取本期计量总金额", notes = "传入合同id,合同计量期id,返回值为总金额")
+	@ApiImplicitParams(value = {
+			@ApiImplicitParam(name = "contractId", value = "合同id", required = true),
+			@ApiImplicitParam(name = "contractPeriodId", value = "合同计量期id", required = true)
+	})
+	public R<BigDecimal> getCurrentMeterMoney(MiddleMeterApply middleMeterApply) {
+		return R.data(middleMeterApplyService.getCurrentMeterMoney(middleMeterApply));
+	}
+
 
 	
 }

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

@@ -92,7 +92,7 @@
         GROUP BY contract_form_id
     </select>
     <select id="getChangeNode" resultType="org.springblade.meter.vo.ChangeNodeVO">
-        select id,node_name,change_picture as contractPicture,0 as change_money,ifnull(is_supplement,0) as isSupplement,
+        select id,node_name,change_picture as contractPicture,change_money,change_money as beforeChangeMoney,ifnull(is_supplement,0) as isSupplement,
                 if(is_supplement = 1,'是','否') as isSupplementName
         from s_meter_tree_contract mtc
         WHERE mtc.contract_id = #{contractId} and mtc.is_deleted = 0
@@ -102,7 +102,7 @@
             FIND_IN_SET(#{id} , mtc.ancestor)
         </foreach>
         union
-        select id,node_name,change_picture as contractPicture,0 as change_money,ifnull(is_supplement,0) as isSupplement,
+        select id,node_name,change_picture as contractPicture,change_money,change_money as beforeChangeMoney,ifnull(is_supplement,0) as isSupplement,
         if(is_supplement = 1,'是','否') as isSupplementName
         from s_meter_tree_contract mtc
         WHERE mtc.contract_id = #{contractId} and mtc.is_deleted = 0
@@ -132,7 +132,7 @@
         where id = #{id}
     </select>
     <select id="getNodeList" resultType="org.springblade.meter.vo.ChangeNodeVO">
-        select ctm.contract_meter_id as id,ctm.node_name,ctm.node_url,
+        select ctm.contract_meter_id as id,ctm.node_name,ctm.node_url,before_change_money,
                if(ctm.is_supplement = 1,'是','否') as isSupplementName,
                ctm.contract_picture,ctm.change_money
         from s_change_token_meter ctm
@@ -155,7 +155,7 @@
                     else '已废除' end as approveStatusName,
                0 as citeStatus
         from s_change_token_form ctf
-        where contract_id = #{contractId}
+        where contract_id = #{contractId} and is_deleted = 0
         order by change_approval_date desc
     </select>
 

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

@@ -19,6 +19,9 @@ package org.springblade.meter.mapper;
 import org.apache.ibatis.annotations.Param;
 import org.springblade.meter.entity.ChangeTokenMeter;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.meter.vo.ChangeNodeVO;
+
+import java.util.List;
 
 /**
  * 变更令与合同计量单元	中间表 Mapper 接口
@@ -30,4 +33,6 @@ public interface ChangeTokenMeterMapper extends BaseMapper<ChangeTokenMeter> {
 
 
     void deleteByTokenId(@Param("id") Long id);
+
+    List<ChangeNodeVO> getChangTokenAllNode(@Param("tokenId") Long tokenId,@Param("contractId") Long contractId);
 }

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

@@ -22,6 +22,9 @@
         DELETE FROM s_change_token_meter
         where change_token_id = #{id}
     </delete>
+    <select id="getChangTokenAllNode" resultType="org.springblade.meter.vo.ChangeNodeVO">
+
+    </select>
 
 
 </mapper>

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

@@ -66,4 +66,7 @@ public interface ContractInventoryFormMapper extends BaseMapper<ContractInventor
 
     Integer getNodeChangeInfo(@Param("id") Long id,@Param("contractId") Long contractId);
 
+    List<ContractFromVO> getNotResolveForm(@Param("contractId") Long contractId, @Param("formNum") String formNum,@Param("meterId") Long meterId);
+
+    List<ContractFromVO> getNodeResolveForm(@Param("contractId") Long contractId,@Param("meterId") Long meterId);
 }

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

@@ -131,5 +131,29 @@
                       from s_contract_inventory_form
                       where contract_id = #{contractId} and is_deleted = 0 and is_lock=0 and (id = #{id} or FIND_IN_SET(#{id},ancestors) > 0))
     </select>
+    <select id="getNotResolveForm" resultType="org.springblade.meter.vo.ContractFromVO">
+        select cif.id, cif.form_number,cif.form_name,cif.current_price,cif.contract_total,cif.change_total,cif.is_supplement,
+               IFNULL((SELECT SUM(build_picture_total) from s_inventory_form_meter
+                       WHERE contract_id = #{contractId} and contract_form_id = cif.id),0)  as poseNum
+        from s_contract_inventory_form cif
+        WHERE cif.contract_id = #{contractId} and cif.is_deleted = 0 and cif.is_form_node = 1
+            <if test="formNum != null and formNum != '' and type==1">
+                and cif.form_number like concat('%',#{formNum},'%')
+            </if>
+          and cif.id not in (SELECT contract_form_id from s_inventory_form_meter WHERE contract_id = #{contractId} and contract_meter_id = #{meterId} and is_deleted = 0)
+    </select>
+    <select id="getNodeResolveForm" resultType="org.springblade.meter.vo.ContractFromVO">
+        select ifm.id, cif.form_number,cif.form_name,cif.current_price,cif.contract_total,cif.change_total,cif.is_supplement,
+               ifm.build_picture_total,ifm.change_build_picture_total,ifm.build_picture_money,ifm.change_build_picture_money,
+               if(ifm.build_picture_total=ifm.change_build_picture_total,if((select count(1) from s_inventory_form_apply
+                   where contract_id = #{contractId} and is_deleted = 0 and contract_form_id = ifm.contract_form_id)=0,0,1),1) as citeStatus,
+            IFNULL((SELECT SUM(build_picture_total) from s_inventory_form_meter WHERE contract_id = #{contractId} and contract_form_id = cif.id
+                     and is_deleted = 0 and contract_meter_id and contract_meter_id != #{meterId}),0)  as otherPoseNum,
+            IFNULL((SELECT SUM(build_picture_total) from s_inventory_form_meter
+                WHERE contract_id = #{contractId} and is_deleted = 0 and contract_form_id = cif.id),0)  as poseNum
+        from s_inventory_form_meter ifm left join s_contract_inventory_form cif on ifm.contract_form_id = cif.id
+        WHERE ifm.contract_id = #{contractId} and ifm.is_deleted = 0
+        and ifm.contract_meter_id = #{meterId}
+    </select>
 
 </mapper>

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

@@ -10,4 +10,5 @@ public interface MeterTreeContractMapper extends BaseMapper<MeterTreeContract> {
     @Select("SELECT MAX(sort) FROM s_meter_tree_contract WHERE parent_id = #{parentId} AND status = 1 AND is_deleted = 0")
     Integer selectMaxSort(@Param("parentId") Long parentId);
 
+    MeterTreeContract getAllChildNodeMoney(@Param("contractId") Long contractId,@Param("id") Long id);
 }

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

@@ -2,4 +2,10 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.springblade.meter.mapper.MeterTreeContractMapper">
 
+    <select id="getAllChildNodeMoney" resultType="org.springblade.meter.entity.MeterTreeContract">
+        select sum(build_picture_money) as build_picture_money,
+               sum(change_money) as change_money
+        from s_meter_tree_contract
+        where contract_id = #{contractId} and is_deleted = 0 and  FIND_IN_SET(#{id}, ancestor)
+    </select>
 </mapper>

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

@@ -28,6 +28,7 @@ import org.springblade.meter.vo.MeterInventoryVO;
 import org.springblade.meter.vo.MiddleMeterApplyVO;
 import org.springblade.meter.vo.ResolveInventoryVO;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -62,4 +63,6 @@ public interface MiddleMeterApplyMapper extends BaseMapper<MiddleMeterApply> {
     Integer getNodeChild(@Param("contractId") Long contractId,@Param("nodeId") Long contractUnitId);
 
     List<Long> getNodeOtherFormId(@Param("contractId") Long contractId,@Param("contractPeriodId") Long contractPeriodId,@Param("nodeId") Long nodeId);
+
+    BigDecimal getCurrentMeterMoney(@Param("contractId") Long contractId,@Param("contractPeriodId") Long contractPeriodId);
 }

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

@@ -38,7 +38,9 @@
             </foreach>
     </select>
     <select id="getResolveFormInfo" resultType="org.springblade.meter.vo.MeterInventoryVO">
-        select id,form_number,form_name,current_price,change_total,
+        select id,form_number,form_name,current_price,
+               IFNULL((select sum(change_build_picture_total) from s_inventory_form_meter where is_deleted = 0
+                    and contract_meter_id = #{nodeId} and contract_form_id = cif.id),0) as change_total,
                IFNULL((select sum(build_picture_total) from s_inventory_form_meter where is_deleted = 0
                             and contract_meter_id = #{nodeId} and contract_form_id = cif.id),0) as resolveTotal,
                0 as currentMeterTotal,0 as containChangeTotal,0 as currentMeterMoney,
@@ -113,6 +115,11 @@
         select contract_form_id from s_inventory_form_apply
         where contract_id = #{contractId} and is_deleted = 0 and contract_period_id = #{contractPeriodId} and contract_meter_id = #{nodeId}
     </select>
+    <select id="getCurrentMeterMoney" resultType="java.math.BigDecimal">
+        select ifnull(sum(meter_money),0)
+        from s_middle_meter_apply
+        where contract_id = #{contractId} and is_deleted = 0 and contract_period_id = #{contractPeriodId} and approve_status != 3
+    </select>
 
 
 </mapper>

+ 23 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/IChangeTokenFormService.java

@@ -55,15 +55,38 @@ public interface IChangeTokenFormService extends BaseService<ChangeTokenForm> {
      */
     List<ChangeFormVO> addForm(ChangeTokenAddFormDTO dto);
 
+    /**
+     * 新增-确认选择清单
+     */
     List<ChangeFormVO2> selectForm(Long contractId,Long nodeId,String ids);
 
+    /**
+     * 新增 变更令
+     */
     List<ChangeNodeVO> getChangeNode(Long contractId,String ids,String changeIds);
 
+    /**
+     * 修改 变更令表
+     */
     void update2(ChangeTokenFormDTO dto);
 
+    /**
+     * 详情
+     */
     ChangeTokenFormVO detail(Long id);
 
+    /**
+     * 分页 变更令表
+     */
     IPage<ChangeTokenPageVO> page2(Long contractId, Query query);
 
+    /**
+     * 删除 变更令表
+     */
     void delete(String ids);
+
+    /**
+     * 下达变更 变更令表
+     */
+    void executeChange(Long id);
 }

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

@@ -18,6 +18,9 @@ package org.springblade.meter.service;
 
 import org.springblade.meter.entity.ChangeTokenMeter;
 import org.springblade.core.mp.base.BaseService;
+import org.springblade.meter.vo.ChangeNodeVO;
+
+import java.util.List;
 
 /**
  * 变更令与合同计量单元	中间表 服务类
@@ -28,5 +31,8 @@ import org.springblade.core.mp.base.BaseService;
 public interface IChangeTokenMeterService extends BaseService<ChangeTokenMeter> {
 
     //删除当前变更令下的清单
-    void deleteByTokenId(Long id);
+    void deleteByTokenId(Long tokenId);
+
+    //获取当前变更令下的所有节点
+    List<ChangeNodeVO> getChangTokenAllNode(Long tokenId,Long contractId);
 }

+ 5 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/IContractInventoryFormService.java

@@ -54,4 +54,9 @@ public interface IContractInventoryFormService extends BaseService<ContractInven
     //获取合同工程清单表
     List<ContractFromVO> getContrFormAllByContrId(Long contractId, String formNum,int type,Long meterId);
 
+    //获取未在当前节点下分解的清单
+    List<ContractFromVO> getNotResolveForm(Long contractId, String formNum, Long meterId);
+
+    //获取节点下分解的清单
+    List<ContractFromVO> getNodeResolveForm(Long contractId, Long id);
 }

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

@@ -46,5 +46,5 @@ public interface IInventoryFormMeterService extends BaseService<InventoryFormMet
     /**
      * 删除 同合计量 清单
      */
-    R delInMeterInfo(String meterId, String formIds);
+    R delInMeterInfo(String meterId, Long formIds);
 }

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

@@ -26,6 +26,7 @@ import org.springblade.meter.vo.MeterInventoryVO;
 import org.springblade.meter.vo.MiddleMeterApplyVO;
 import org.springblade.meter.vo.ResolveInventoryVO;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -58,4 +59,6 @@ public interface IMiddleMeterApplyService extends BaseService<MiddleMeterApply>
     MiddleMeterApplyVO detail(Long id);
 
     String getMeterNumber(MiddleMeterApply middleMeterApply);
+
+    BigDecimal getCurrentMeterMoney(MiddleMeterApply middleMeterApply);
 }

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

@@ -4,6 +4,7 @@ import org.springblade.core.mp.base.BaseService;
 import org.springblade.meter.dto.MeterTreeContractSaveBatchDTO;
 import org.springblade.meter.entity.MeterTreeContract;
 import org.springblade.meter.entity.MeterTreeProject;
+import org.springblade.meter.vo.MeterTreeContractVO;
 
 import java.util.List;
 
@@ -17,4 +18,5 @@ public interface MeterTreeContractService extends BaseService<MeterTreeContract>
 
     boolean contractSave(MeterTreeContractSaveBatchDTO dto);
 
+    void getAllChildNodeMoney(MeterTreeContractVO vo);
 }

+ 53 - 26
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/ChangeTokenFormServiceImpl.java

@@ -143,23 +143,24 @@ public class ChangeTokenFormServiceImpl extends BaseServiceImpl<ChangeTokenFormM
                 //设置部位基础信息,方便公式生成报表
                 meter.setNodeName(l.getNodeName());
                 meter.setNodeUrl(l.getNodeUrl());
-                meter.setChangeMoney(new BigDecimal(0));
+                meter.setChangeMoney(BigDecimal.ZERO);
+                meter.setBeforeChangeMoney(l.getBeforeChangeMoney());
                 meter.setIsSupplement(l.getIsSupplement());
                 List<ChangeFormVO2> list = l.getFormList();
-                BigDecimal big = new BigDecimal(0);
+                BigDecimal big = BigDecimal.ZERO;
                 if (list != null && list.size() != 0){
                     formList.addAll(list);
                     for (ChangeFormVO2 vo2 : list) {
-                        big = big.add(vo2.getChangeMoney());
+                        big = big.add(vo2.getCurrentChangeMoney());
                     }
                 }
-                meter.setChangeMoney(big);
+                meter.setChangeMoney(l.getBeforeChangeMoney().add(big));
                 return meter;
             }).collect(Collectors.toList());
             changeTokenMeterService.saveBatch(meterList);
         }
         //保存清单,并计算总变更金额设置进变更令
-        BigDecimal big = new BigDecimal(0);
+        BigDecimal big = BigDecimal.ZERO;
         if (formList.size() != 0){
             List<ChangeTokenInventory> inventoryList = new ArrayList<>();
             for (ChangeFormVO2 vo2 : formList) {
@@ -178,27 +179,27 @@ public class ChangeTokenFormServiceImpl extends BaseServiceImpl<ChangeTokenFormM
                     throw new ServiceException("未找到清单("+vo2.getFormName()+")的部位id");
                 }
                 //如果是负变更,判断当前节点下是否存在当前清单
-                if (vo2.getCurrentChangeTotal() < 0){
+                if (vo2.getCurrentChangeTotal().compareTo(BigDecimal.ZERO) == -1){
                     //获取当前节点下当前清单的分解信息
                     InventoryFormMeter meter = inventoryFormMeterService.getOne(new LambdaQueryWrapper<InventoryFormMeter>()
                             .eq(InventoryFormMeter::getContractFormId, vo2.getId())
                             .eq(InventoryFormMeter::getContractMeterId, vo2.getContractMeterId()));
-                    if (meter == null || (meter.getBuildPictureTotal()+vo2.getCurrentChangeTotal() < 0)){
+                    if (meter == null || (meter.getBuildPictureTotal().add(vo2.getCurrentChangeTotal()).compareTo(BigDecimal.ZERO) == -1)){
                         throw new ServiceException(voMap.get(vo2.getContractMeterId()).getNodeName()+"部位下,未找到清单("+vo2.getFormName()+")的分解信息,不能负变更");
                     }
-                }else if (vo2.getCurrentChangeTotal() == 0){
+                }else if (vo2.getCurrentChangeTotal().compareTo(BigDecimal.ZERO) == 0){
                     throw new ServiceException(voMap.get(vo2.getContractMeterId()).getNodeName()+"部位下,清单("+vo2.getFormName()+")的变更数量为0,请确认后再提交");
                 }
                 //设置节点id
                 inventory.setContractMeterId(vo2.getContractMeterId());
                 //计算变更后
-                inventory.setChangeAfterTotal(inventory.getChangeBeforeTotal() + inventory.getChangeTotal());
+                inventory.setChangeAfterTotal(inventory.getChangeBeforeTotal().add(inventory.getChangeTotal()));
                 inventory.setChangeBeforeMoney(vo2.getContractMoney());
                 //计算变更增减金额
-                inventory.setChangeMoney(vo2.getCurrentPrice().multiply(new BigDecimal(inventory.getChangeTotal())));
-                big = big.add(inventory.getChangeMoney());
+                inventory.setChangeMoney(vo2.getCurrentPrice().multiply(inventory.getChangeTotal()));
+                big = big.add(vo2.getCurrentChangeMoney());
                 //计算变更后金额
-                inventory.setChangeAfterMoney(vo2.getCurrentPrice().multiply(new BigDecimal(inventory.getChangeAfterTotal())));
+                inventory.setChangeAfterMoney(vo2.getCurrentPrice().multiply(inventory.getChangeAfterTotal()));
                 inventoryList.add(inventory);
             }
             changeTokenInventoryService.saveBatch(inventoryList);
@@ -259,10 +260,10 @@ public class ChangeTokenFormServiceImpl extends BaseServiceImpl<ChangeTokenFormM
         vos = baseMapper.selectForm(contractId,longs,nodeId);
         for (ChangeFormVO2 vo : vos) {
             vo.setContractMeterId(nodeId);
-            vo.setCurrentChangeTotal(0);
+            vo.setCurrentChangeTotal(BigDecimal.ZERO);
             vo.setChangeTotal(vo.getContractTotal());
-            vo.setContractMoney(vo.getCurrentPrice().multiply(new BigDecimal(vo.getContractTotal())));
-            vo.setCurrentChangeMoney(new BigDecimal(0));
+            vo.setContractMoney(vo.getCurrentPrice().multiply(vo.getContractTotal()));
+            vo.setCurrentChangeMoney(BigDecimal.ZERO);
             vo.setChangeMoney(vo.getContractMoney());
         }
         return vos;
@@ -322,17 +323,18 @@ public class ChangeTokenFormServiceImpl extends BaseServiceImpl<ChangeTokenFormM
                 //设置部位基础信息,方便公式生成报表
                 meter.setNodeName(l.getNodeName());
                 meter.setNodeUrl(l.getNodeUrl());
-                meter.setChangeMoney(new BigDecimal(0));
+                meter.setChangeMoney(BigDecimal.ZERO);
+                meter.setBeforeChangeMoney(l.getBeforeChangeMoney());
                 meter.setIsSupplement(l.getIsSupplement());
                 List<ChangeFormVO2> list = l.getFormList();
-                BigDecimal big = new BigDecimal(0);
+                BigDecimal big = BigDecimal.ZERO;
                 if (list != null && list.size() != 0){
                     formList.addAll(list);
                     for (ChangeFormVO2 vo2 : list) {
-                        big = big.add(vo2.getChangeMoney());
+                        big = big.add(vo2.getCurrentChangeMoney());
                     }
                 }
-                meter.setChangeMoney(big);
+                meter.setChangeMoney(l.getBeforeChangeMoney().add(big));
                 return meter;
             }).collect(Collectors.toList());
             changeTokenMeterService.saveBatch(meterList);
@@ -359,27 +361,27 @@ public class ChangeTokenFormServiceImpl extends BaseServiceImpl<ChangeTokenFormM
                     throw new ServiceException("未找到清单("+vo2.getFormName()+")的部位id");
                 }
                 //如果是负变更,判断当前节点下是否存在当前清单
-                if (vo2.getCurrentChangeTotal() < 0){
+                if (vo2.getCurrentChangeTotal().compareTo(BigDecimal.ZERO) == -1){
                     //获取当前节点下当前清单的分解信息
                     InventoryFormMeter meter = inventoryFormMeterService.getOne(new LambdaQueryWrapper<InventoryFormMeter>()
                             .eq(InventoryFormMeter::getContractFormId, vo2.getId())
                             .eq(InventoryFormMeter::getContractMeterId, vo2.getContractMeterId()));
-                    if (meter == null || (meter.getBuildPictureTotal()+vo2.getCurrentChangeTotal() < 0)){
+                    if (meter == null || (meter.getBuildPictureTotal().add(vo2.getCurrentChangeTotal()).compareTo(BigDecimal.ZERO) == -1)){
                         throw new ServiceException(voMap.get(vo2.getContractMeterId()).getNodeName()+"部位下,未找到清单["+vo2.getFormName()+"]的分解信息,不能负变更");
                     }
-                }else if (vo2.getCurrentChangeTotal() == 0){
+                }else if (vo2.getCurrentChangeTotal().compareTo(BigDecimal.ZERO) == 0){
                     throw new ServiceException(voMap.get(vo2.getContractMeterId()).getNodeName()+"部位下,清单["+vo2.getFormName()+"]的变更数量为0,请确认后再提交");
                 }
                 //设置节点id
                 inventory.setContractMeterId(vo2.getContractMeterId());
                 //计算变更后
-                inventory.setChangeAfterTotal(inventory.getChangeBeforeTotal() + inventory.getChangeTotal());
+                inventory.setChangeAfterTotal(inventory.getChangeBeforeTotal().add(inventory.getChangeTotal()));
                 inventory.setChangeBeforeMoney(vo2.getContractMoney());
                 //计算变更增减金额
-                inventory.setChangeMoney(vo2.getCurrentPrice().multiply(new BigDecimal(inventory.getChangeTotal())));
-                big = big.add(inventory.getChangeMoney());
+                inventory.setChangeMoney(vo2.getCurrentPrice().multiply(inventory.getChangeTotal()));
+                big = big.add(vo2.getCurrentChangeMoney());
                 //计算变更后金额
-                inventory.setChangeAfterMoney(vo2.getCurrentPrice().multiply(new BigDecimal(inventory.getChangeAfterTotal())));
+                inventory.setChangeAfterMoney(vo2.getCurrentPrice().multiply(inventory.getChangeAfterTotal()));
                 inventoryList.add(inventory);
             }
             changeTokenInventoryService.saveBatch(inventoryList);
@@ -463,4 +465,29 @@ public class ChangeTokenFormServiceImpl extends BaseServiceImpl<ChangeTokenFormM
             attachmentFormService.deleteByMasterId(id);
         }
     }
+
+    /**
+     * 下达变更 变更令表
+     */
+    @Override
+    @Transactional
+    public void executeChange(Long id) {
+        ChangeTokenForm form = this.getById(id);
+        if (form.getCommandStatus() == 1){
+            throw new ServiceException("当前变更任务已经下达,请勿重复下达");
+        }
+        //获取当前变更令的变更节点
+
+        //获取当前变更令的所有变更清单
+        //清单放入节点中
+        //修改合同清单
+            // 此条清单的变更后数量和变更后金额
+
+        //修改清单与合同计量单元,当前节点下当前清单
+            // 修改施工图数量和施工图变更后数量,施工图金额和施工图变更后金额,并且重新计算节点金额
+        //修改清单与中间计量申请,当前节点下当前清单
+            // 只修改业务日期在今天之后的,并且未上报的,修改分解数量与变更后数量
+
+
+    }
 }

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

@@ -20,8 +20,11 @@ import org.springblade.meter.entity.ChangeTokenMeter;
 import org.springblade.meter.mapper.ChangeTokenMeterMapper;
 import org.springblade.meter.service.IChangeTokenMeterService;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.meter.vo.ChangeNodeVO;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * 变更令与合同计量单元	中间表 服务实现类
  *
@@ -36,4 +39,15 @@ public class ChangeTokenMeterServiceImpl extends BaseServiceImpl<ChangeTokenMete
     public void deleteByTokenId(Long id) {
         baseMapper.deleteByTokenId(id);
     }
+
+    /**
+     *     //获取当前变更令下的所有节点
+     * @param tokenId
+     * @param contractId
+     * @return
+     */
+    @Override
+    public List<ChangeNodeVO> getChangTokenAllNode(Long tokenId, Long contractId) {
+        return baseMapper.getChangTokenAllNode(tokenId,contractId);
+    }
 }

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

@@ -566,6 +566,25 @@ public class ContractInventoryFormServiceImpl extends BaseServiceImpl<ContractIn
         return  baseMapper.getContrFormAllByContrId(contractId,formNum,type,meterId);
     }
 
+    //获取分解列表,排除当前节点已经分解的
+    @Override
+    public List<ContractFromVO> getNotResolveForm(Long contractId, String formNum, Long meterId) {
+        return baseMapper.getNotResolveForm(contractId,formNum,meterId);
+    }
+
+    /**
+     * 获取节点下分解的清单
+     * @return
+     */
+    @Override
+    public List<ContractFromVO> getNodeResolveForm(Long contractId, Long id) {
+        List<ContractFromVO> vos = baseMapper.getNodeResolveForm(contractId, id);
+        for (ContractFromVO vo : vos) {
+            vo.setResidueNum(vo.getChangeTotal().subtract(vo.getPoseNum()));
+        }
+        return vos;
+    }
+
     /**
      * 判断当前节点是否已经分解或变更过,变更过返回true
      */

+ 62 - 14
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/InventoryFormMeterServiceImpl.java

@@ -16,20 +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.toolkit.Wrappers;
+import lombok.AllArgsConstructor;
+import org.apache.commons.lang.StringUtils;
+import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.manager.entity.WbsTree;
 import org.springblade.meter.entity.ContractInventoryForm;
+import org.springblade.meter.entity.InventoryFormApply;
 import org.springblade.meter.entity.InventoryFormMeter;
+import org.springblade.meter.entity.MeterTreeContract;
 import org.springblade.meter.mapper.InventoryFormMeterMapper;
+import org.springblade.meter.service.IInventoryFormApplyService;
 import org.springblade.meter.service.IInventoryFormMeterService;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.meter.service.MeterTreeContractService;
 import org.springblade.meter.vo.ContractFromVO;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -39,8 +48,12 @@ import java.util.List;
  * @since 2023-11-29
  */
 @Service
+@AllArgsConstructor
 public class InventoryFormMeterServiceImpl extends BaseServiceImpl<InventoryFormMeterMapper, InventoryFormMeter> implements IInventoryFormMeterService {
 
+    private final MeterTreeContractService meterTreeContractService;
+
+    private final IInventoryFormApplyService inventoryFormApplyService;
 
     @Override
     public List<Long> getNodeAllForm(Long nodeId) {
@@ -59,11 +72,14 @@ public class InventoryFormMeterServiceImpl extends BaseServiceImpl<InventoryForm
             if(inventoryFormMeter==null && ObjectUtil.isEmpty(inventoryFormMeter)){
                 ContractInventoryForm inventoryForm = baseMapper.dadainfo(forid);
                 InventoryFormMeter data =new InventoryFormMeter();
-                data.setContractId(inventoryForm.getContractId());
                 data.setProjectId(inventoryForm.getProjectId());
+                data.setContractId(inventoryForm.getContractId());
                 data.setContractFormId(forid);
                 data.setContractMeterId(Func.toLong(meterId));
-                data.setBuildPictureTotal(0);
+                data.setBuildPictureTotal(BigDecimal.ZERO);
+                data.setChangeBuildPictureTotal(BigDecimal.ZERO);
+                data.setBuildPictureMoney(BigDecimal.ZERO);
+                data.setChangeBuildPictureMoney(BigDecimal.ZERO);
                 baseMapper.insert(data);
             }
         }
@@ -72,24 +88,56 @@ public class InventoryFormMeterServiceImpl extends BaseServiceImpl<InventoryForm
 
     @Override
     public boolean updateInfo(List<ContractFromVO> dataInfo,Long meterId) {
-        for (ContractFromVO data:dataInfo){
-            LambdaUpdateWrapper<InventoryFormMeter> updateWrapper = new LambdaUpdateWrapper<InventoryFormMeter>();
-            updateWrapper.set(InventoryFormMeter::getBuildPictureTotal, data.getPoseNum());
-            updateWrapper.eq(InventoryFormMeter::getContractMeterId, meterId);
-            updateWrapper.eq(InventoryFormMeter::getContractFormId, data.getId());
-            baseMapper.update(null, updateWrapper);
+        //统计施工图金额和变更后施工图金额
+        BigDecimal b1 = BigDecimal.ZERO;
+        BigDecimal b2 = BigDecimal.ZERO;
+        for (ContractFromVO vo:dataInfo){
+            if (vo.getBuildPictureTotal() == null){
+                throw new ServiceException("请填写施工图数量");
+            }
+            //统计
+            vo.setBuildPictureMoney(vo.getCurrentPrice().multiply(vo.getBuildPictureTotal()));
+            vo.setChangeBuildPictureMoney(vo.getCurrentPrice().multiply(vo.getChangeBuildPictureTotal()));
+            b1 = b1.add(vo.getBuildPictureMoney());
+            b2 = b2.add(vo.getChangeBuildPictureMoney());
+            //修改,如果是已经被引用则跳过
+            if (vo.getCiteStatus() == 0){
+               this.update(new LambdaUpdateWrapper<InventoryFormMeter>()
+                       .eq(InventoryFormMeter::getId,vo.getId())
+                       .set(InventoryFormMeter::getBuildPictureTotal,vo.getBuildPictureTotal())
+                       .set(InventoryFormMeter::getChangeBuildPictureTotal,vo.getChangeBuildPictureTotal())
+                       .set(InventoryFormMeter::getBuildPictureMoney,vo.getBuildPictureMoney())
+                       .set(InventoryFormMeter::getChangeBuildPictureMoney,vo.getChangeBuildPictureMoney())
+               );
+            }
         }
+        //修改节点的统计值
+        meterTreeContractService.update(new LambdaUpdateWrapper<MeterTreeContract>()
+            .eq(MeterTreeContract::getId,meterId)
+            .set(MeterTreeContract::getBuildPictureMoney,b1)
+            .set(MeterTreeContract::getChangeMoney,b2));
         return true;
     }
 
+    /**
+     * 删除 同合计量 清单
+     */
     @Override
-    public R delInMeterInfo(String meterId, String formIds) {
-        List<Long> longList = Func.toLongList(formIds);
-        for(Long forid:longList) {
-            baseMapper.delete(Wrappers.<InventoryFormMeter>query().lambda()
-                    .eq(InventoryFormMeter::getContractMeterId, meterId)
-                    .eq(InventoryFormMeter::getContractFormId, forid));
+    public R delInMeterInfo(String meterId, Long formIds) {
+        //判断当前清单是否被变更
+        InventoryFormMeter meter = this.getById(formIds);
+        if (meter.getBuildPictureTotal().compareTo(meter.getChangeBuildPictureTotal()) != 0){
+            throw new ServiceException("当前清单已经变更,不能删除");
+        }
+        //判断当前清单是否被计量
+        List<InventoryFormApply> list = inventoryFormApplyService.list(new LambdaQueryWrapper<InventoryFormApply>()
+                .eq(InventoryFormApply::getContractId, meter.getContractId())
+                .eq(InventoryFormApply::getContractFormId, meter.getContractFormId()));
+        if (list.size() > 0){
+            throw new ServiceException("当前清单已经计量,不能删除");
         }
+        //删除
+        this.removeById(formIds);
         return R.success("成功");
     }
 }

+ 12 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MeterTreeContractServiceImpl.java

@@ -15,6 +15,7 @@ import org.springblade.meter.entity.MeterTreeProject;
 import org.springblade.meter.mapper.MeterTreeContractMapper;
 import org.springblade.meter.mapper.MeterTreeProjectMapper;
 import org.springblade.meter.service.MeterTreeContractService;
+import org.springblade.meter.vo.MeterTreeContractVO;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -522,6 +523,17 @@ public class MeterTreeContractServiceImpl extends BaseServiceImpl<MeterTreeContr
         return true;
     }
 
+    /**
+     * 获取所有子节点金额
+     * @param vo
+     */
+    @Override
+    public void getAllChildNodeMoney(MeterTreeContractVO vo) {
+        MeterTreeContract m = baseMapper.getAllChildNodeMoney(vo.getContractId(),vo.getId());
+        vo.setBuildPictureMoney(m.getBuildPictureMoney());
+        vo.setChangeMoney(m.getChangeMoney());
+    }
+
     /**
      * 获取对应的父级的ancestor字段
      *

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

@@ -399,4 +399,12 @@ public class MiddleMeterApplyServiceImpl extends BaseServiceImpl<MiddleMeterAppl
         str.append(count+1);
         return str.toString();
     }
+
+    /**
+     * 获取本期计量总金额
+     */
+    @Override
+    public BigDecimal getCurrentMeterMoney(MiddleMeterApply middleMeterApply) {
+        return baseMapper.getCurrentMeterMoney(middleMeterApply.getContractId(),middleMeterApply.getContractPeriodId());
+    }
 }