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