From 05683f2b2bdbdbe21cf17ad523c21ab338bd1c54 Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期二, 19 七月 2022 21:49:55 +0800
Subject: [PATCH] 优化添加设备 功能

---
 service-fee/src/main/java/com/java110/fee/cmd/fee/ListFeeCmd.java |  112 ++++---------------------------------------------------
 1 files changed, 9 insertions(+), 103 deletions(-)

diff --git a/service-fee/src/main/java/com/java110/fee/cmd/fee/ListFeeCmd.java b/service-fee/src/main/java/com/java110/fee/cmd/fee/ListFeeCmd.java
index e62f401..718182b 100644
--- a/service-fee/src/main/java/com/java110/fee/cmd/fee/ListFeeCmd.java
+++ b/service-fee/src/main/java/com/java110/fee/cmd/fee/ListFeeCmd.java
@@ -8,8 +8,6 @@
 import com.java110.core.factory.CommunitySettingFactory;
 import com.java110.core.log.LoggerFactory;
 import com.java110.core.smo.IComputeFeeSMO;
-import com.java110.dto.fee.FeeAttrDto;
-import com.java110.dto.fee.FeeConfigDto;
 import com.java110.dto.fee.FeeDto;
 import com.java110.dto.owner.OwnerCarDto;
 import com.java110.dto.parking.ParkingSpaceDto;
@@ -206,6 +204,9 @@
             feeDto.setAmountOwed(df.format(curFeePrice));
             feeDto.setDeadlineTime(DateUtil.getCurrentDate());
         }
+
+        //鑰冭檻绉熼噾閫掑
+        computeFeeSMOImpl.dealRentRate(feeDto);
     }
 
     /**
@@ -225,114 +226,16 @@
         //鍔ㄦ�佽垂鐢�
         if ("4004".equals(computingFormula)
                 && FeeDto.FEE_FLAG_ONCE.equals(feeDto.getFeeFlag())
-                && !FeeDto.STATE_FINISH.equals(feeDto.getState())) {
-            feeDto.setAmountOwed(df.format(curFeePrice) + "");
+                && !FeeDto.STATE_FINISH.equals(feeDto.getState())
+                && feeDto.getDeadlineTime() == null) {
             feeDto.setDeadlineTime(DateUtil.getCurrentDate());
         }
 
         //鑰冭檻绉熼噾閫掑
-        dealRentRate(feeDto, oweMonth);
+        computeFeeSMOImpl.dealRentRate(feeDto);
 
     }
 
-    /**
-     * 绉熼噾澶勭悊
-     *
-     * @param feeDto
-     * @param oweMonth
-     */
-    private void dealRentRate(FeeDto feeDto, double oweMonth) {
-        if (!FeeConfigDto.COMPUTING_FORMULA_RANT_RATE.equals(feeDto.getComputingFormula())) {
-            return;
-        }
-
-        if (!FeeDto.STATE_DOING.equals(feeDto.getState())) {
-            return;
-        }
-
-        //鏌ヨ閫掑淇℃伅
-        FeeAttrDto feeAttrDto = new FeeAttrDto();
-        feeAttrDto.setFeeId(feeDto.getFeeId());
-        feeAttrDto.setCommunityId(feeDto.getCommunityId());
-        List<FeeAttrDto> feeAttrDtos = feeAttrInnerServiceSMOImpl.queryFeeAttrs(feeAttrDto);
-
-        if (feeAttrDtos == null || feeAttrDtos.size() < 1) {
-            return;
-        }
-        int rateCycle = 0;
-        double rate = 0.0;
-        Date rateStartTime = null;
-        try {
-            for (FeeAttrDto tmpFeeAttrDto : feeAttrDtos) {
-                if (FeeAttrDto.SPEC_CD_RATE.equals(tmpFeeAttrDto.getSpecCd())) {
-                    feeDto.setRate(tmpFeeAttrDto.getValue());
-                    rate = Double.parseDouble(tmpFeeAttrDto.getValue());
-                }
-                if (FeeAttrDto.SPEC_CD_RATE_CYCLE.equals(tmpFeeAttrDto.getSpecCd())) {
-                    feeDto.setRateCycle(tmpFeeAttrDto.getValue());
-                    rateCycle = Integer.parseInt(tmpFeeAttrDto.getValue());
-                }
-                if (FeeAttrDto.SPEC_CD_RATE_START_TIME.equals(tmpFeeAttrDto.getSpecCd())) {
-                    rateStartTime = DateUtil.getDateFromString(tmpFeeAttrDto.getValue(), DateUtil.DATE_FORMATE_STRING_B);
-                }
-            }
-        } catch (Exception e) {
-            logger.error("绉熼噾閫掑寮傚父", e);
-            return;
-        }
-
-        if (rateCycle == 0 || rate == 0) {
-            return;
-        }
-
-        if (feeDto.getDeadlineTime().getTime() <= rateStartTime.getTime()) {
-            return;
-        }
-
-        BigDecimal oweAmountDec = new BigDecimal(0);
-        //璁$畻 璁¤垂璧峰鏃堕棿 鍒� rateStartTime 鏃剁殑璐圭敤
-        double curOweMonth = 0;
-        BigDecimal curFeePrice = new BigDecimal(feeDto.getFeePrice());
-        if(feeDto.getEndTime().getTime() < rateStartTime.getTime()){
-            curOweMonth = computeFeeSMOImpl.dayCompare(feeDto.getEndTime(),rateStartTime);
-            oweAmountDec = curFeePrice.multiply(new BigDecimal(curOweMonth));
-        }
-
-         curOweMonth = computeFeeSMOImpl.dayCompare(rateStartTime,feeDto.getDeadlineTime());
-
-        double maxCycle = Math.floor(curOweMonth/rateCycle);
-
-        //鍩哄噯
-        BigDecimal firstAmount = curFeePrice.multiply(new BigDecimal(rateCycle));
-        BigDecimal preCycleAmount = firstAmount;
-        BigDecimal rateDec = null;
-        BigDecimal lastRateAmountDec = null;
-        double curCycle = 0;
-        for(int cycleIndex = 0; cycleIndex < maxCycle; maxCycle ++){
-            rateDec = preCycleAmount.multiply(new BigDecimal(rate));
-            //澧為暱鍛ㄦ湡鐨勫�嶆暟
-            curCycle = (cycleIndex +1) * rateCycle;
-            if(curCycle > curOweMonth){
-                rateDec = new BigDecimal(curOweMonth/rateCycle -Math.ceil(curOweMonth/rateCycle)).multiply(rateDec);
-                lastRateAmountDec = new BigDecimal(curOweMonth/rateCycle -Math.ceil(curOweMonth/rateCycle)).multiply(rateDec);
-                firstAmount = firstAmount.add(rateDec).add(preCycleAmount);
-                continue;
-            }
-            firstAmount = firstAmount.add(rateDec).add(preCycleAmount);
-            preCycleAmount = preCycleAmount.add(rateDec);
-        }
-        // 1.0 杩樻病鏈夊埌 閫掑寮�濮嬫椂闂�
-        //2.0 5.3 涓湀 24涓湀 涓�涓�掑鍛ㄦ湡
-        // 200 * 5.3 + 0.03 * (24 * 200) * (5.3/24)
-
-        // 200* 24
-
-
-
-
-
-
-    }
 
     /**
      * 鏍规嵁鍚堝悓鏉ョ畻鍗曚环
@@ -355,5 +258,8 @@
             feeDto.setAmountOwed(df.format(curFeePrice) + "");
             feeDto.setDeadlineTime(DateUtil.getCurrentDate());
         }
+
+        //鑰冭檻绉熼噾閫掑
+        computeFeeSMOImpl.dealRentRate(feeDto);
     }
 }

--
Gitblit v1.8.0