Prechádzať zdrojové kódy

中间计量申请,新增根据是否自动计量来设置最大支付比例

qianxb 1 rok pred
rodič
commit
ff43e75422

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

@@ -135,6 +135,6 @@ public class MiddleMeterApply extends BaseEntity {
     @ApiModelProperty(value = "是否关联质检资料1是0否")
     private Integer isLinkData;
 
-    @ApiModelProperty(value = "是否自动计量生成1是0否")
+    @ApiModelProperty(value = "是否自动计量生成1(自动批量计量生成)0(手动新增)")
     private Integer isAutoBuild;
 }

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

@@ -630,7 +630,6 @@ public class MeterTreeController extends BladeController {
             boolean b1 = false;
             boolean b2 = false;
             try {
-//                b1 = meterTreeContractService.updateById(dto);
                 b1 = meterTreeContractService.contractUpdate(dto);
                 b2 = inventoryFormMeterService.updateInfo(dto);
                 transactionManager.commit(status);

+ 41 - 4
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MiddleMeterApplyServiceImpl.java

@@ -132,11 +132,46 @@ public class MiddleMeterApplyServiceImpl extends BaseServiceImpl<MiddleMeterAppl
         if (StringUtils.isBlank(ids) || nodeId == null){
             return vos;
         }
-        //获取清单和分解信息
+        //获取所以清单和分解信息
         List<Long> longs = Func.toLongList(ids);
         vos = baseMapper.getResolveFormInfo(contractId,nodeId,longs);
-        vos = vos.stream().filter(l-> !l.getAllMeterTotal().equals(l.getChangeTotal()) && l.getChangeTotal().compareTo(BigDecimal.ZERO) != 0)
-                            .collect(Collectors.toList());
+        if (vos.size() == 0){
+            return vos;
+        }
+        //获取节点信息
+        MeterTreeContract treeContract = meterTreeContractService.getById(nodeId);
+        //如果是自动计量节点,则直接使用后管设置的支付比例
+        if (treeContract.getIsAutoMeter() == 1){
+            MeterContractInfo one = meterContractInfoService.getOne(new LambdaQueryWrapper<MeterContractInfo>()
+                    .eq(MeterContractInfo::getContractId, treeContract.getContractId()));
+            if (one == null || one.getMiddlePayRatio() == null){
+                throw new ServiceException("合同段未配置支付比例,新增自动计量节点的计量单,必须先设置支付比例");
+            }
+            vos.stream().forEach(l->l.setUpPayRatio(one.getMiddlePayRatio()));
+
+        }
+        //过滤没有计量数量的清单
+        vos = vos.stream().filter(l->{
+            //变更后数量不能为0
+            if (l.getChangeTotal().compareTo(BigDecimal.ZERO) == 0){
+                return false;
+            }
+            //有比例,则判断 当前已计量数量 是否大于等于 比例*变更后数量
+            if (l.getUpPayRatio() != null){
+                if (l.getAllMeterTotal().compareTo(l.getChangeTotal().multiply(l.getUpPayRatio()).divide(new BigDecimal(100))) >= 0){
+                    return false;
+                }else {
+                    return true;
+                }
+            }else {
+                //没有比例,直接判断已计量数量是否大于等于变更后数量
+                if (l.getAllMeterTotal().compareTo(l.getChangeTotal()) >= 0){
+                    return false;
+                }else {
+                    return true;
+                }
+            }
+        }).collect(Collectors.toList());
         for (MeterInventoryVO vo : vos) {
             //如果合同计量单元填写了比例,则默认分解清单的比例为0
             if (vo.getUpPayRatio() != null) {
@@ -146,7 +181,7 @@ public class MiddleMeterApplyServiceImpl extends BaseServiceImpl<MiddleMeterAppl
             vo.setOtherMeterTotal(vo.getAllMeterTotal().subtract(vo.getCurrentMeterTotal()));
             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);
+            vo.setIsBuildThanContract(vo.getChangeTotal().compareTo(vo.getContractChangeAllTotal()) == 1 ? 1 : 0);
         }
         return vos;
     }
@@ -757,8 +792,10 @@ public class MiddleMeterApplyServiceImpl extends BaseServiceImpl<MiddleMeterAppl
         }
         List<String> list = vos.stream().map(l -> l.getId()+"").collect(Collectors.toList());
         String join = String.join(",", list);
+        //获取符合条件的分解清单
         voList = this.addResolveForm(apply.getContractId(), apply.getContractUnitId(), join);
         if (voList.size() > 1){
+            //按照合同计量单元部位排序
             Map<String, MeterInventoryVO> map = voList.stream().collect(Collectors.toMap(MeterInventoryVO::getFormNumber, l -> l));
             List<String> list2 = inventoryFormService.getAllFormNumberBySort(apply.getContractId());
             for (String s : map.keySet()) {