浏览代码

财务结算bug

1021934019@qq.com 4 年之前
父节点
当前提交
821c3b7010

+ 19 - 2
blade-service/trade-finance/src/main/java/org/springblade/finance/service/impl/SettlementServiceImpl.java

@@ -156,7 +156,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 
 		}
 		//验证结算总金额是否超限
-	/*	if(settlementDTO.getBillType().equals("收费")||settlementDTO.getBillType().equals("付费"))
+		/*if(settlementDTO.getBillType().equals("收费")||settlementDTO.getBillType().equals("付费"))
 		{
            //查询账单明细 已结算金额, 累计是否大于原订单的总金额
 			LambdaQueryWrapper<Acc> accLambdaQueryWrapper=new LambdaQueryWrapper<>();
@@ -166,7 +166,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 			{
 				BigDecimal total = accs.stream().filter(e -> e.getSettlementAmount() != null).map(Acc::getSettlementAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 				Settlement settlement = baseMapper.selectById(model.getId());
-				Order order = iOrderDescClient.getByOrder(settlement.getSrcOrderno());
+				Order order = orderDescClient.getById(settlement.getSrcOrderno());
 				if(order==null)
 				{
 					throw new SecurityException("结算未发现订单信息");
@@ -191,6 +191,12 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 		}
 		//结算成功后,更新acc表金额,采购收费 销售付费
 		acc.setSettlementAmount(acc.getSettlementAmount()!=null?acc.getSettlementAmount().add(items.getThisAmount()):new BigDecimal("0").add(items.getThisAmount()));
+		BigDecimal settlementAmount = acc.getSettlementAmount();
+		BigDecimal amount = acc.getAmount();
+		if(settlementAmount.compareTo(amount)>0)
+		{
+			throw new SecurityException("结算金额超过账单明细总金额");
+		}
 		accMapper.updateById(acc);
 		//修改原业务表数据
 		Long srcParentId = acc.getSrcParentId();
@@ -201,6 +207,17 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 		}
 		client.setSettlmentAmount(client.getSettlmentAmount()!=null?client.getSettlmentAmount().add(items.getThisAmount()):new BigDecimal("0").add(items.getThisAmount()));
 		orderDescClient.updateOrder(client);
+		//验证结算总金额是否超限
+
+		/*BigDecimal orderAmount = client.getSettlmentAmount();
+		LambdaQueryWrapper<Acc> accLambdaQueryWrapper=new LambdaQueryWrapper<>();
+		accLambdaQueryWrapper.eq(Acc::getSrcParentId,items.getSrcParentId()).eq(Acc::getTenantId,AuthUtil.getTenantId());
+		List<Acc> accs = accMapper.selectList(accLambdaQueryWrapper);
+		BigDecimal accTotal = accs.stream().filter(e -> e.getSettlementAmount() != null).map(Acc::getSettlementAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		if(accTotal.compareTo(orderAmount)>1)
+		{
+			throw new SecurityException("订单号:"+client.getOrderNo()+",结算总金额大于原单据的总金额,--原单号金额为:"+client.getAmount()+",--当前累计结算总金额为:"+accTotal);
+		}*/
 	}
 
 	@Override