소스 검색

update 声部更换乐保处理

周箭河 4 년 전
부모
커밋
11cfda9af8

+ 18 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SellOrderServiceImpl.java

@@ -57,6 +57,7 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
             balance = BigDecimal.ZERO;
         }
         StudentPaymentOrder order = studentPaymentOrderDao.get(orderId);
+        BigDecimal totalActualAmount = order.getActualAmount() == null ? BigDecimal.ZERO : order.getActualAmount();
         MusicGroup musicGroup = new MusicGroup();
         if (StringUtils.isNotBlank(musicGroupId)) {
             musicGroup = musicGroupDao.get(musicGroupId);
@@ -74,8 +75,14 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
             }
         }
 
+        //已分配的商品余额
         BigDecimal hasRouteBalance = BigDecimal.ZERO;
+        //已分配的商品现金
+        BigDecimal hasRouteActualAmount= BigDecimal.ZERO;
+        //商品占用的的余额
         BigDecimal goodsTotalBalance = totalAmount.compareTo(BigDecimal.ZERO) <= 0 ? BigDecimal.ZERO : goodsTotalPrice.multiply(balance).divide(totalAmount, 2, BigDecimal.ROUND_DOWN);
+        //商品占用的总现金
+        BigDecimal goodsTotalActualAmount = totalAmount.compareTo(BigDecimal.ZERO) <= 0 ? BigDecimal.ZERO : goodsTotalPrice.multiply(totalActualAmount).divide(totalAmount, 2, BigDecimal.ROUND_DOWN);
         AccountType accountType = sysPaymentConfigService.checkAccountType(PaymentChannelEnum.valueOf(order.getPaymentChannel()), order.getMerNos());
 
         List<SellOrder> sellOrderList = goodsService.subtractStock(goodsIds, accountType);
@@ -91,12 +98,19 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
             }
             goodsPrice = nowGoods.getDiscountPrice();
 
+            //当前商品占用的总余额
             BigDecimal goodsBalance = goodsTotalPrice.compareTo(BigDecimal.ZERO) <= 0 ? BigDecimal.ZERO :
                     goodsTotalBalance.multiply(goodsPrice).divide(goodsTotalPrice, 2, BigDecimal.ROUND_DOWN);
+            //当前商品占用的总现金
+            BigDecimal goodsActualAmount = goodsTotalPrice.compareTo(BigDecimal.ZERO) <= 0 ? BigDecimal.ZERO :
+                    goodsTotalActualAmount.multiply(goodsPrice).divide(goodsTotalPrice, 2, BigDecimal.ROUND_DOWN);
+
             if (i == goodsNum) {
                 goodsBalance = goodsTotalBalance.subtract(hasRouteBalance);
+                goodsActualAmount = goodsTotalActualAmount.subtract(hasRouteActualAmount);
             }
             hasRouteBalance = hasRouteBalance.add(goodsBalance);
+            hasRouteActualAmount = hasRouteActualAmount.add(hasRouteActualAmount);
             i++;
 
             int complementGoodsNum = nowGoods.getComplementGoodsIdList() == null ? 1 : nowGoods.getComplementGoodsIdList().split(",").length;
@@ -121,21 +135,21 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
                 BigDecimal sellOrderActualAmount = BigDecimal.ZERO;
                 BigDecimal sellOrderBalance = BigDecimal.ZERO;
                 if (complementPrice.compareTo(BigDecimal.ZERO) > 0) {
-                    sellOrderActualAmount = complementGoodsPrice.get(sellOrder.getGoodsId()).multiply(new BigDecimal(sellOrder.getNum())).multiply(goodsPrice).divide(complementPrice, 2, BigDecimal.ROUND_DOWN);
+                    sellOrderActualAmount = complementGoodsPrice.get(sellOrder.getGoodsId()).multiply(new BigDecimal(sellOrder.getNum())).multiply(goodsActualAmount).divide(complementPrice, 2, BigDecimal.ROUND_DOWN);
                     sellOrderBalance = complementGoodsPrice.get(sellOrder.getGoodsId()).multiply(new BigDecimal(sellOrder.getNum())).multiply(goodsBalance).divide(complementPrice, 2, BigDecimal.ROUND_DOWN);
                 }
 
                 complementGoodsNum = complementGoodsNum - sellOrder.getNum();
                 if (complementGoodsNum <= 0) {
-                    sellOrderActualAmount = goodsPrice.subtract(hasRouteSellOrderActualAmount);
+                    sellOrderActualAmount = goodsActualAmount.subtract(hasRouteSellOrderActualAmount);
                     sellOrderBalance = goodsBalance.subtract(hasRouteSellOrderBalance);
                 }
                 hasRouteSellOrderActualAmount = hasRouteSellOrderActualAmount.add(sellOrderActualAmount);
                 hasRouteSellOrderBalance = hasRouteSellOrderBalance.add(sellOrderBalance);
 
-                sellOrder.setExpectAmount(sellOrderActualAmount);
+                sellOrder.setExpectAmount(sellOrderActualAmount.add(sellOrderBalance));
                 sellOrder.setBalanceAmount(sellOrderBalance);
-                sellOrder.setActualAmount(sellOrderActualAmount.subtract(sellOrderBalance));
+                sellOrder.setActualAmount(sellOrderActualAmount);
                 sellOrder.setOrganId(order.getOrganId());
                 sellOrder.setCooperationOrganId(musicGroup.getCooperationOrganId());
                 sellOrder.setTransNo(order.getTransNo());

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRepairServiceImpl.java

@@ -1051,7 +1051,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
                 List<Goods> goods = JSONObject.parseArray(repairInfo.getGoodsJson(), Goods.class);
                 List<Integer> goodsIds = goods.stream().map(Goods::getId).collect(Collectors.toList());
                 if (goodsIds.size() > 0) {
-                    sellOrderService.addSellOrder(studentPaymentOrder.getId(), null, goodsIds, studentPaymentOrder.getExpectAmount(), studentPaymentOrder.getBalancePaymentAmount());
+                    sellOrderService.addSellOrder(studentPaymentOrder.getId(), null, goodsIds, studentPaymentOrder.getExpectAmount().add(repairInfo.getExemptionAmount()), studentPaymentOrder.getBalancePaymentAmount());
                 }
             }