java110 лет назад: 2
Родитель
Сommit
ec524bebbf

+ 23 - 6
service-fee/src/main/java/com/java110/fee/feeMonth/PayFeeMonthHelp.java

@@ -11,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -99,7 +100,7 @@ public class PayFeeMonthHelp implements IPayFeeMonthHelp {
 
         BigDecimal totalRecDec = new BigDecimal(feeDetailDto.getReceivedAmount());
         //每月平均值
-        BigDecimal priRecDec = totalRecDec.divide(new BigDecimal(maxMonth), 2, BigDecimal.ROUND_HALF_EVEN);
+        BigDecimal priRecDec = totalRecDec.divide(new BigDecimal(maxMonth), 4, BigDecimal.ROUND_HALF_UP);
 
         return priRecDec.doubleValue();
     }
@@ -112,7 +113,7 @@ public class PayFeeMonthHelp implements IPayFeeMonthHelp {
             return 0.00;
         }
 
-        BigDecimal discountAmountDec = new BigDecimal(feePrice).subtract(new BigDecimal(receivedAmount)).setScale(2, BigDecimal.ROUND_HALF_UP);
+        BigDecimal discountAmountDec = new BigDecimal(feePrice).subtract(new BigDecimal(receivedAmount)).setScale(4, BigDecimal.ROUND_HALF_UP);
         return discountAmountDec.doubleValue();
     }
 
@@ -129,7 +130,7 @@ public class PayFeeMonthHelp implements IPayFeeMonthHelp {
     @Override
     public String getFeeFeeTime(List<FeeDetailDto> feeDetailDtos, String detailId) {
 
-        if(feeDetailDtos == null || feeDetailDtos.size() < 1){
+        if (feeDetailDtos == null || feeDetailDtos.size() < 1) {
             return null;
         }
         for (FeeDetailDto feeDetailDto : feeDetailDtos) {
@@ -148,15 +149,31 @@ public class PayFeeMonthHelp implements IPayFeeMonthHelp {
      * @return
      */
     private FeeDetailDto getCurFeeDetail(List<FeeDetailDto> feeDetailDtos, Date curDate) {
-        if(feeDetailDtos == null || feeDetailDtos.size() < 1){
+        if (feeDetailDtos == null || feeDetailDtos.size() < 1) {
             return null;
         }
+        List<FeeDetailDto> tFeeDetailDtos = new ArrayList<>();
         for (FeeDetailDto feeDetailDto : feeDetailDtos) {
             if (feeDetailDto.getStartTime().getTime() <= curDate.getTime() && feeDetailDto.getEndTime().getTime() > curDate.getTime()) {
-                return feeDetailDto;
+                tFeeDetailDtos.add(feeDetailDto);
             }
         }
-        return null;
+
+        if (tFeeDetailDtos.size() < 1) {
+            return null;
+        }
+        if (tFeeDetailDtos.size() == 1) {
+            return tFeeDetailDtos.get(0);
+        }
+        //todo 这种应该是数据异常 也就是一个月费用变更后重复缴费
+        BigDecimal cReceivedAmount = new BigDecimal(0.00);
+        for (FeeDetailDto feeDetailDto : feeDetailDtos) {
+            cReceivedAmount = cReceivedAmount.add(new BigDecimal(Double.parseDouble(feeDetailDto.getReceivedAmount()))).setScale(4, BigDecimal.ROUND_HALF_UP);
+        }
+
+        feeDetailDtos.get(0).setReceivedAmount(cReceivedAmount.doubleValue() + "");
+
+        return feeDetailDtos.get(0);
     }
 
 

+ 1 - 0
service-fee/src/main/java/com/java110/fee/feeMonth/PayFeeMonthImpl.java

@@ -120,6 +120,7 @@ public class PayFeeMonthImpl implements IPayFeeMonth {
         FeeDetailDto feeDetailDto = new FeeDetailDto();
         feeDetailDto.setCommunityId(feeDto.getCommunityId());
         feeDetailDto.setFeeId(feeDto.getFeeId());
+        feeDetailDto.setStates(new String[]{FeeDetailDto.STATE_NORMAL,FeeDetailDto.STATE_RETURNING});
         List<FeeDetailDto> feeDetailDtos = feeDetailInnerServiceSMOImpl.queryFeeDetails(feeDetailDto);
 
         //todo 生成 月离散数据