From 672b30c82edac9bf0c0e6b63761aa4ca5b69d8cc Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期四, 11 五月 2023 17:40:58 +0800
Subject: [PATCH] optimize pay fee to month

---
 service-fee/src/main/java/com/java110/fee/feeMonth/PayFeeMonthHelp.java |   85 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 84 insertions(+), 1 deletions(-)

diff --git a/service-fee/src/main/java/com/java110/fee/feeMonth/PayFeeMonthHelp.java b/service-fee/src/main/java/com/java110/fee/feeMonth/PayFeeMonthHelp.java
index 9876012..633db93 100644
--- a/service-fee/src/main/java/com/java110/fee/feeMonth/PayFeeMonthHelp.java
+++ b/service-fee/src/main/java/com/java110/fee/feeMonth/PayFeeMonthHelp.java
@@ -1,8 +1,8 @@
 package com.java110.fee.feeMonth;
 
 import com.java110.core.smo.IComputeFeeSMO;
-import com.java110.dto.RoomDto;
 import com.java110.dto.fee.FeeAttrDto;
+import com.java110.dto.fee.FeeDetailDto;
 import com.java110.dto.fee.FeeDto;
 import com.java110.dto.payFeeDetailMonth.PayFeeMonthOwnerDto;
 import com.java110.intf.community.IRoomInnerServiceSMO;
@@ -10,6 +10,7 @@
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -59,4 +60,86 @@
     }
 
 
+    public Double getReceivableAmount(List<FeeDetailDto> feeDetailDtos, Double feePrice, Date curDate, FeeDto feeDto) {
+        FeeDetailDto feeDetailDto = getCurFeeDetail(feeDetailDtos, curDate);
+
+        if (feeDetailDto == null && curDate.getTime() < feeDto.getEndTime().getTime()) {
+            return 0.00;
+        }
+
+        return feePrice;
+    }
+
+    @Override
+    public Double getReceivedAmount(List<FeeDetailDto> feeDetailDtos, Double feePrice, Date curDate, FeeDto feeDto) {
+        //todo 杩欑鎯呭喌涓嬪簲璇� 瀹炴敹涓�0
+        if (curDate.getTime() >= feeDto.getEndTime().getTime()) {
+            return 0.00;
+        }
+        //todo 濡傛灉 fee 涓虹┖
+        if (feeDetailDtos == null) {
+            return feePrice;
+        }
+        FeeDetailDto feeDetailDto = getCurFeeDetail(feeDetailDtos, curDate);
+
+        if (feeDetailDto == null && curDate.getTime() < feeDto.getEndTime().getTime()) {
+            return 0.00;
+        }
+
+        if (feeDetailDto == null) {
+            return feePrice;
+        }
+
+        double maxMonth = Math.ceil(computeFeeSMOImpl.dayCompare(feeDetailDto.getStartTime(), feeDetailDto.getEndTime()));
+
+        if (maxMonth < 1) {
+            return Double.parseDouble(feeDetailDto.getReceivedAmount());
+        }
+
+        BigDecimal totalRecDec = new BigDecimal(feeDetailDto.getReceivedAmount());
+        //姣忔湀骞冲潎鍊�
+        BigDecimal priRecDec = totalRecDec.divide(new BigDecimal(maxMonth), 2, BigDecimal.ROUND_HALF_EVEN);
+
+        return priRecDec.doubleValue();
+    }
+
+    @Override
+    public Double getDiscountAmount(Double feePrice, double parseDouble, Date curDate, FeeDto feeDto) {
+
+        //todo 杩欑鎯呭喌涓嬪簲璇� 浼樻儬涓�0
+        if (curDate.getTime() >= feeDto.getEndTime().getTime()) {
+            return 0.00;
+        }
+
+        BigDecimal discountAmountDec = new BigDecimal(feePrice).subtract(new BigDecimal(parseDouble)).setScale(2, BigDecimal.ROUND_HALF_UP);
+        return discountAmountDec.doubleValue();
+    }
+
+    @Override
+    public String getFeeDetailId(List<FeeDetailDto> feeDetailDtos, Date curDate) {
+        FeeDetailDto feeDetailDto = getCurFeeDetail(feeDetailDtos, curDate);
+
+        if (feeDetailDto == null) {
+            return "-1";
+        }
+        return feeDetailDto.getDetailId();
+    }
+
+    /**
+     * 鑾峰彇褰撳墠缂磋垂璁板綍
+     *
+     * @param feeDetailDtos
+     * @param curDate
+     * @return
+     */
+    private FeeDetailDto getCurFeeDetail(List<FeeDetailDto> feeDetailDtos, Date curDate) {
+        for (FeeDetailDto feeDetailDto : feeDetailDtos) {
+            if (feeDetailDto.getStartTime().getTime() < curDate.getTime() && feeDetailDto.getEndTime().getTime() > curDate.getTime()) {
+                return feeDetailDto;
+            }
+        }
+        return null;
+    }
+
+
 }

--
Gitblit v1.8.0