Selaa lähdekoodia

甬台温计量 超计逻辑补充

chenr 4 kuukautta sitten
vanhempi
commit
7cc094c6b6

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

@@ -82,6 +82,9 @@ public class MeterInventoryVO {
     @ApiModelProperty(value = "合同计量单元实际变更后施工图数量")
     private BigDecimal currentBuildChangeTotal;
 
+    @ApiModelProperty(value = "已分解量 = 其他节点分解量+变更后施工图数量")
+    private BigDecimal poseNum;
+
     @ApiModelProperty(value = "排序")
     private Integer sort;
 

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

@@ -63,6 +63,8 @@
                 and contract_meter_id = #{nodeId} and contract_form_id = cif.id) as upPayMoney,
                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(change_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,
                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,

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

@@ -184,10 +184,21 @@ public class MiddleMeterApplyServiceImpl extends BaseServiceImpl<MiddleMeterAppl
             vo.setOtherPayRatio(vo.getOtherMeterTotal().divide(vo.getChangeTotal(), 4, RoundingMode.DOWN).multiply(new BigDecimal(100)).setScale(2));
             //设置施工图数量是否大于合同数量
             vo.setIsBuildThanContract(vo.getChangeTotal().compareTo(vo.getContractChangeAllTotal()) == 1 ? 1 : 0);
+            //设置累计计量量是否超了
+            if(safeSubtract(vo.getContractChangeAllTotal(),vo.getPoseNum()).compareTo(BigDecimal.ZERO)<0){
+                vo.setIsBuildThanContract(1);
+            }
+
         }
         return vos;
     }
 
+    public static BigDecimal safeSubtract(BigDecimal a, BigDecimal b) {
+        // Treat null as zero for both parameters
+        BigDecimal num1 = (a != null) ? a : BigDecimal.ZERO;
+        BigDecimal num2 = (b != null) ? b : BigDecimal.ZERO;
+        return num1.subtract(num2);
+    }
     /**
      * 新增 中间计量申请表
      */