Ver Fonte

开票订单金额校验

skyline há 2 anos atrás
pai
commit
a63602c938

+ 11 - 3
service/src/main/java/com/kym/service/miniapp/impl/InvoiceServiceImpl.java

@@ -75,6 +75,7 @@ public class InvoiceServiceImpl extends ServiceImpl<InvoiceMapper, Invoice> impl
             throw new BusinessException("存在已开票或开票中的订单");
         }
 
+
         var orderDetails = orders.stream().map(item -> new InvoiceOrderDetail()
                         .setStartChargeSeq(item.getStartChargeSeq())
                         .setTotalPower(item.getTotalPower()).setTotalMoney(item.getTotalMoney())
@@ -82,15 +83,22 @@ public class InvoiceServiceImpl extends ServiceImpl<InvoiceMapper, Invoice> impl
                         .setServiceMoneyDiscount(item.getServiceMoneyDiscount()))
                 .toList();
 
+        // TODO: 2023-11-04 校验开票金额大于0
+        var totalMoney = orders.stream().mapToInt(ChargeOrder::getTotalMoney).sum();
+        var elecMoney = orders.stream().mapToInt(ChargeOrder::getElecMoney).sum();
+        var serviceMoney = orders.stream().mapToInt(ChargeOrder::getServiceMoney).sum();
+        if (!(totalMoney > 0 && elecMoney > 0 && serviceMoney > 0)) {
+            throw new BusinessException("订单总金额或总电费或总服务费金额异常");
+        }
         // 组装invoice
         var invoice = new Invoice()
                 .setUserId(userId)
                 .setOpenid(StpUtil.getSession().getString("openid"))
                 .setApplyId(OrderUtils.getOrderNo())
                 .setOrderDetails(orderDetails) // 订单信息
-                .setInvoiceAmount(orders.stream().mapToInt(ChargeOrder::getTotalMoney).sum())   // 总金额
-                .setElecMoney(orders.stream().mapToInt(ChargeOrder::getElecMoney).sum())    // 电费
-                .setElecMoney(orders.stream().mapToInt(ChargeOrder::getServiceMoney).sum())    // 服务费
+                .setInvoiceAmount(totalMoney)   // 总金额
+                .setElecMoney(elecMoney)    // 电费
+                .setElecMoney(serviceMoney)    // 服务费
                 .setTotalPower(orders.stream().mapToDouble(ChargeOrder::getTotalPower).sum())   // 总电量
                 .setServiceMoneyDiscount(orders.stream().mapToInt(ChargeOrder::getServiceMoneyDiscount).sum()); //总优惠服务费
         baseMapper.insert(invoice);