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