|
@@ -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()) {
|