Sfoglia il codice sorgente

update 分润做标识

周箭河 4 anni fa
parent
commit
5818fc49cd

+ 22 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/RouteScaleDto.java

@@ -23,6 +23,12 @@ public class RouteScaleDto {
 
     private BigDecimal balance = BigDecimal.ZERO;
 
+    //销售费用
+    private BigDecimal saleAmount = BigDecimal.ZERO;
+
+    //服务费用
+    private BigDecimal serviceAmount = BigDecimal.ZERO;
+
     public Integer getOrganId() {
         return organId;
     }
@@ -55,7 +61,6 @@ public class RouteScaleDto {
         this.feeFlag = feeFlag;
     }
 
-
     public Integer getScale() {
         return scale;
     }
@@ -87,4 +92,20 @@ public class RouteScaleDto {
     public void setBalance(BigDecimal balance) {
         this.balance = balance;
     }
+
+    public BigDecimal getSaleAmount() {
+        return saleAmount;
+    }
+
+    public void setSaleAmount(BigDecimal saleAmount) {
+        this.saleAmount = saleAmount;
+    }
+
+    public BigDecimal getServiceAmount() {
+        return serviceAmount;
+    }
+
+    public void setServiceAmount(BigDecimal serviceAmount) {
+        this.serviceAmount = serviceAmount;
+    }
 }

+ 10 - 19
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PayServiceImpl.java

@@ -308,6 +308,8 @@ public class PayServiceImpl implements PayService {
                 } else {
                     routeScaleDto.setAmount(routeScaleDto.getAmount().add(scaleDto.getAmount()));
                     routeScaleDto.setBalance(routeScaleDto.getBalance().add(scaleDto.getBalance()));
+                    routeScaleDto.setSaleAmount(routeScaleDto.getSaleAmount().add(scaleDto.getSaleAmount()));
+                    routeScaleDto.setServiceAmount(routeScaleDto.getServiceAmount().add(scaleDto.getServiceAmount()));
                 }
             }
             newRouteScaleDtos.add(routeScaleDto);
@@ -327,7 +329,6 @@ public class PayServiceImpl implements PayService {
         List<Map<String, Object>> tempRoutingList = new ArrayList<>();
 
         PaymentChannelEnum payType = null;
-        boolean feeFlag = false;
         Set<String> routingMerNoSet = new HashSet<>();
         for (RouteScaleDto routeScaleDto : routeScaleDtos) {
             payType = routeScaleDto.getPayType();
@@ -382,6 +383,8 @@ public class PayServiceImpl implements PayService {
             studentPaymentRouteOrder.setRouteAmount(routingMoney);
             studentPaymentRouteOrder.setRouteBalanceAmount(routeBalanceAmount);
             studentPaymentRouteOrder.setMerNo(routeScaleDto.getMerNo());
+            studentPaymentRouteOrder.setSaleAmount(routeScaleDto.getSaleAmount());
+            studentPaymentRouteOrder.setServiceAmount(routeScaleDto.getServiceAmount());
             RouteOrders.add(studentPaymentRouteOrder);
             routingMerNoSet.add(routeScaleDto.getMerNo());
         }
@@ -470,9 +473,11 @@ public class PayServiceImpl implements PayService {
             if (routeScaleDto.getFeeType().equals(FeeTypeEnum.SERVICE)) {
                 serviceHasRouteMoney = serviceHasRouteMoney.add(routingMoney);
                 serviceHasRouteBalance = serviceHasRouteBalance.add(routingBalance);
+                routeScaleDto.setServiceAmount(routingMoney);
             } else {
                 sellHasRouteMoney = sellHasRouteMoney.add(routingMoney);
                 sellHasRouteBalance = sellHasRouteBalance.add(routingBalance);
+                routeScaleDto.setSaleAmount(routingMoney);
             }
 
             if (routeScaleDto.getAmount().compareTo(BigDecimal.ZERO) <= 0) {
@@ -492,7 +497,6 @@ public class PayServiceImpl implements PayService {
         Map<String, List<RouteScaleDto>> routeScaleDtosMap = routeScaleDtos.stream().collect(Collectors.groupingBy(RouteScaleDto::getMerNo));
 
         //合并同账号的数据
-        BigDecimal maxAmount = BigDecimal.ZERO;
         List<RouteScaleDto> newRouteScaleDtos = new ArrayList<>();
         for (Map.Entry<String, List<RouteScaleDto>> groupRouteScaleDtos : routeScaleDtosMap.entrySet()) {
             RouteScaleDto routeScaleDto = null;
@@ -502,24 +506,12 @@ public class PayServiceImpl implements PayService {
                 } else {
                     routeScaleDto.setAmount(routeScaleDto.getAmount().add(scaleDto.getAmount()));
                     routeScaleDto.setBalance(routeScaleDto.getBalance().add(scaleDto.getBalance()));
+                    routeScaleDto.setSaleAmount(routeScaleDto.getSaleAmount().add(scaleDto.getSaleAmount()));
+                    routeScaleDto.setServiceAmount(routeScaleDto.getServiceAmount().add(scaleDto.getServiceAmount()));
                 }
             }
-            if (routeScaleDto != null && routeScaleDto.getAmount().compareTo(maxAmount) > 0) {
-                maxAmount = routeScaleDto.getAmount();
-            }
             newRouteScaleDtos.add(routeScaleDto);
         }
-
-        //金额最大的账号承担手续费
-        boolean hasFeeFlag = false;
-        for (RouteScaleDto routeScaleDto : newRouteScaleDtos) {
-            if (!hasFeeFlag && routeScaleDto.getAmount().compareTo(maxAmount) == 0) {
-                routeScaleDto.setFeeFlag("Y");
-                hasFeeFlag = true;
-            } else {
-                routeScaleDto.setFeeFlag("N");
-            }
-        }
         return newRouteScaleDtos;
     }
 
@@ -556,14 +548,13 @@ public class PayServiceImpl implements PayService {
 //                redisTemplate.expire(key, 600, TimeUnit.SECONDS);// 保留10分钟内的key
 //            }
 //        }else {
-            BigDecimal monthHasReceipt = studentPaymentRouteOrderDao.getRouteOrderAmount(routeScaleDto.getOrganId(), paymentChannelList, dayStartTime);
-            monthHasReceipt = monthHasReceipt == null ? BigDecimal.ZERO : monthHasReceipt;
+        BigDecimal monthHasReceipt = studentPaymentRouteOrderDao.getRouteOrderAmount(routeScaleDto.getOrganId(), paymentChannelList, dayStartTime);
+        monthHasReceipt = monthHasReceipt == null ? BigDecimal.ZERO : monthHasReceipt;
 //            monthHasReceipt.multiply(new BigDecimal(100));
 //
 //        }
 
 
-
         if (routeScaleDto.getAmount().add(monthHasReceipt).compareTo(monthMaxReceipt) > 0) {
             routeScaleDto.setMerNo(hfmember.getRouteMemberId());
             routeScaleDto.setOrganId(hfmember.getRouteOrganId());

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

@@ -78,7 +78,7 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
         //已分配的商品余额
         BigDecimal hasRouteBalance = BigDecimal.ZERO;
         //已分配的商品现金
-        BigDecimal hasRouteActualAmount= BigDecimal.ZERO;
+        BigDecimal hasRouteActualAmount = BigDecimal.ZERO;
         //商品占用的的余额
         BigDecimal goodsTotalBalance = totalAmount.compareTo(BigDecimal.ZERO) <= 0 ? BigDecimal.ZERO : goodsTotalPrice.multiply(balance).divide(totalAmount, 2, BigDecimal.ROUND_DOWN);
         //商品占用的总现金
@@ -396,6 +396,13 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
                 return sellAmount;
             }
 
+            BigDecimal totalAmount = order.getExpectAmount().add(repairInfo.getExemptionAmount());
+            if (totalAmount.compareTo(BigDecimal.ZERO) <= 0) {
+                sellAmount.put("actualAmount", BigDecimal.ZERO);
+                sellAmount.put("balance", BigDecimal.ZERO);
+                return sellAmount;
+            }
+
             BigDecimal goodsTotalPrice = BigDecimal.ZERO;
             goodies = goodsDao.getGoodies(goodsIds);
             int i = 1;
@@ -408,8 +415,10 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
                 }
             }
             BigDecimal balance = order.getBalancePaymentAmount() == null ? BigDecimal.ZERO : order.getBalancePaymentAmount();
-            BigDecimal goodsTotalBalance = goodsTotalPrice.multiply(balance).divide(order.getExpectAmount(), 2, BigDecimal.ROUND_HALF_UP);
-            sellAmount.put("actualAmount", goodsTotalPrice.subtract(goodsTotalBalance));
+
+            BigDecimal goodsTotalBalance = goodsTotalPrice.multiply(balance).divide(totalAmount, 2, BigDecimal.ROUND_DOWN);
+            BigDecimal goodsTotalActualAmount = goodsTotalPrice.multiply(order.getActualAmount()).divide(totalAmount, 2, BigDecimal.ROUND_DOWN);
+            sellAmount.put("actualAmount", goodsTotalActualAmount);
             sellAmount.put("balance", goodsTotalBalance);
             return sellAmount;
         }
@@ -424,7 +433,7 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
             //商品总付款
             BigDecimal detailTotalPrice = orderDetails.stream().map(StudentPaymentOrderDetail::getPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
             //商品销售占的余额
-            BigDecimal detailTotalBalance = detailTotalPrice.multiply(totalBalance).divide(totalPrice, 2, BigDecimal.ROUND_HALF_UP);
+            BigDecimal detailTotalBalance = detailTotalPrice.multiply(totalBalance).divide(totalPrice, 2, BigDecimal.ROUND_DOWN);
 
             sellAmount.put("actualAmount", detailTotalPrice.subtract(detailTotalBalance));
             sellAmount.put("balance", detailTotalBalance);