From 4ed693f48d1435de7a6333df17c2b34154731429 Mon Sep 17 00:00:00 2001
From: Your Name <you@example.com>
Date: 星期三, 05 七月 2023 22:26:27 +0800
Subject: [PATCH] Merge branch 'master' of http://git.homecommunity.cn/supervip/MicroCommunity
---
service-fee/src/main/java/com/java110/fee/feeMonth/PayFeeMonthHelp.java | 209 ++++++++++++++++------------------------------------
1 files changed, 64 insertions(+), 145 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 be4bddb..7039961 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
@@ -5,14 +5,12 @@
import com.java110.dto.fee.FeeAttrDto;
import com.java110.dto.fee.FeeDetailDto;
import com.java110.dto.fee.FeeDto;
-import com.java110.dto.payFeeDetailMonth.PayFeeDetailMonthDto;
-import com.java110.dto.payFeeDetailMonth.PayFeeMonthOwnerDto;
+import com.java110.dto.payFee.PayFeeDetailMonthDto;
+import com.java110.dto.payFee.PayFeeMonthOwnerDto;
import com.java110.intf.community.IRoomInnerServiceSMO;
import com.java110.intf.fee.IPayFeeDetailMonthInnerServiceSMO;
-import com.java110.po.payFeeDetailMonth.PayFeeDetailMonthPo;
-import com.java110.utils.util.BeanConvertUtil;
+import com.java110.po.payFee.PayFeeDetailMonthPo;
import com.java110.utils.util.DateUtil;
-import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -54,62 +52,19 @@
Double feePrice = Double.parseDouble(feePriceAll.get("feePrice").toString());
//todo 濡傛灉鏄竴娆℃�ц垂鐢� 闄や互
- if (!FeeDto.FEE_FLAG_ONCE.equals(feeDto.getPayerObjType())) {
- return feePrice;
- }
- double maxMonth = Math.ceil(computeFeeSMOImpl.dayCompare(feeDto.getStartTime(), feeDto.getEndTime()));
- if (maxMonth <= 0) {
- return feePrice;
-
- }
- BigDecimal feePriceDec = new BigDecimal(feePrice).divide(new BigDecimal(maxMonth), 2, BigDecimal.ROUND_HALF_UP);
- feePrice = feePriceDec.doubleValue();
+// if (!FeeDto.FEE_FLAG_ONCE.equals(feeDto.getPayerObjType())) {
+// return feePrice;
+// }
+// double maxMonth = Math.ceil(computeFeeSMOImpl.dayCompare(feeDto.getStartTime(), feeDto.getEndTime()));
+// if (maxMonth <= 0) {
+// return feePrice;
+//
+// }
+// BigDecimal feePriceDec = new BigDecimal(feePrice).divide(new BigDecimal(maxMonth), 2, BigDecimal.ROUND_HALF_UP);
+// feePrice = feePriceDec.doubleValue();
return feePrice;
}
-
- 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), 4, BigDecimal.ROUND_HALF_UP);
-
- return priRecDec.doubleValue();
- }
@Override
public Double getDiscountAmount(Double feePrice, double receivedAmount, Date curDate, FeeDto feeDto) {
@@ -123,36 +78,14 @@
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();
- }
-
- @Override
- public String getFeeFeeTime(List<FeeDetailDto> feeDetailDtos, String detailId) {
-
- if (feeDetailDtos == null || feeDetailDtos.size() < 1) {
- return null;
- }
- for (FeeDetailDto feeDetailDto : feeDetailDtos) {
- if (feeDetailDto.getDetailId().equals(detailId)) {
- return DateUtil.getFormatTimeStringA(feeDetailDto.getCreateTime());
- }
- }
- return null;
- }
/**
- * 澶勭悊宸茬粡浜よ繃璐圭殑璁板綍澶勭悊
+ * 澶勭悊宸茬粡浜よ繃璐圭殑璁板綍澶勭悊
+ *
* @param feeDto
* @param payFeeMonthOwnerDto
*/
- @Autowired
+ @Override
public void waitDispersedFeeDetail(FeeDto feeDto, PayFeeMonthOwnerDto payFeeMonthOwnerDto) {
PayFeeDetailMonthDto payFeeDetailMonthDto = new PayFeeDetailMonthDto();
payFeeDetailMonthDto.setCommunityId(feeDto.getCommunityId());
@@ -163,6 +96,8 @@
return;
}
+
+
for (FeeDetailDto feeDetailDto : feeDetailDtos) {
// todo 閫愭潯鍘荤鏁�
doDispersedFeeDetail(feeDetailDto, feeDto, payFeeMonthOwnerDto);
@@ -172,16 +107,17 @@
/**
* 澶勭悊 娆犺垂 绂绘暎
+ *
* @param feeDto
* @param payFeeMonthOwnerDto
* @param feePrice
* @param deadlineTime
*/
- @Autowired
+ @Override
public void waitDispersedOweFee(FeeDto feeDto, PayFeeMonthOwnerDto payFeeMonthOwnerDto, Double feePrice, Date deadlineTime) {
// todo 璐圭敤宸茬粡缁撴潫
- if(FeeDto.STATE_FINISH.equals(feeDto.getState())){
- return ;
+ if (FeeDto.STATE_FINISH.equals(feeDto.getState())) {
+ return;
}
// todo 娓呯悊 detailId 涓�-1 鐨勬暟鎹�
@@ -198,6 +134,17 @@
BigDecimal receivableAmount = new BigDecimal(feePrice);
+ BigDecimal dayReceivableAmount = null;
+
+ //todo 涓�娆℃�ц垂鐢� 鏃ュ簲鏀惰绠�
+ if (FeeDto.FEE_FLAG_ONCE.equals(feeDto.getFeeFlag())) {
+ int day = DateUtil.daysBetween(endTime, startTime);
+ if (day < 1) {
+ day = 1;
+ }
+ dayReceivableAmount = receivableAmount.divide(new BigDecimal(day), 4, BigDecimal.ROUND_HALF_UP);// 鏃� 搴旀敹
+ }
+
// todo 瀵绘壘绗竴涓嚜鐒舵湀 涓�鏃�
Calendar firstMonthDayCal = Calendar.getInstance();
firstMonthDayCal.setTime(startTime);
@@ -210,20 +157,23 @@
int curDay = 0;
int curMonthMaxDay = 30;
BigDecimal curMonthReceivableAmount = null;
- BigDecimal dayReceivableAmount = null;
- while (firstMonthDayTime.getTime() > endTime.getTime()) {
+
+ while (firstMonthDayTime.getTime() < endTime.getTime()) {
curDay = DateUtil.daysBetween(firstMonthDayTime, startMonthDayTime);
- // todo 璁$畻褰撴湀澶╂暟
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(startMonthDayTime);
- curMonthMaxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
- dayReceivableAmount = receivableAmount.divide(new BigDecimal(curMonthMaxDay), 4, BigDecimal.ROUND_HALF_UP);// 鏃� 瀹炴敹
+ //todo 鍛ㄦ湡鎬ц垂鐢� 鏃ュ簲鏀堕噸鏂扮畻
+ if (!FeeDto.FEE_FLAG_ONCE.equals(feeDto.getFeeFlag())) {
+ // todo 璁$畻褰撴湀澶╂暟
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(startMonthDayTime);
+ curMonthMaxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
+ dayReceivableAmount = receivableAmount.divide(new BigDecimal(curMonthMaxDay), 4, BigDecimal.ROUND_HALF_UP);// 鏃� 瀹炴敹
+ }
// todo 璁$畻 搴旀敹
curMonthReceivableAmount = new BigDecimal(curDay).multiply(dayReceivableAmount).setScale(4, BigDecimal.ROUND_HALF_UP);
// todo 淇濆瓨鏁版嵁鍒皃ay_fee_detail_month
- toSavePayFeeDetailMonth(curMonthReceivableAmount.doubleValue(), 0, null, feeDto, payFeeMonthOwnerDto,payFeeDetailMonthPos,startMonthDayTime);
+ toSavePayFeeDetailMonth(curMonthReceivableAmount.doubleValue(), 0, null, feeDto, payFeeMonthOwnerDto, payFeeDetailMonthPos, startMonthDayTime,deadlineTime);
// todo 灏唖tartTime 淇敼涓� 涓嬫湀1鏃ユ椂闂�
startMonthDayTime = firstMonthDayTime;
@@ -238,17 +188,19 @@
}
curDay = DateUtil.daysBetween(endTime, startMonthDayTime);
-
- // todo 璁$畻褰撴湀澶╂暟
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(startMonthDayTime);
- curMonthMaxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
- dayReceivableAmount = receivableAmount.divide(new BigDecimal(curMonthMaxDay), 4, BigDecimal.ROUND_HALF_UP);// 鏃� 瀹炴敹
+ //todo 鍛ㄦ湡鎬ц垂鐢� 鏃ュ簲鏀堕噸鏂扮畻
+ if (!FeeDto.FEE_FLAG_ONCE.equals(feeDto.getFeeFlag())) {
+ // todo 璁$畻褰撴湀澶╂暟
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(startMonthDayTime);
+ curMonthMaxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
+ dayReceivableAmount = receivableAmount.divide(new BigDecimal(curMonthMaxDay), 4, BigDecimal.ROUND_HALF_UP);// 鏃� 瀹炴敹
+ }
// todo 璁$畻 搴旀敹
curMonthReceivableAmount = new BigDecimal(curDay).multiply(dayReceivableAmount).setScale(4, BigDecimal.ROUND_HALF_UP);
// todo 淇濆瓨鏁版嵁鍒皃ay_fee_detail_month
- toSavePayFeeDetailMonth(curMonthReceivableAmount.doubleValue(), 0, null, feeDto, payFeeMonthOwnerDto,payFeeDetailMonthPos,startMonthDayTime);
+ toSavePayFeeDetailMonth(curMonthReceivableAmount.doubleValue(), 0, null, feeDto, payFeeMonthOwnerDto, payFeeDetailMonthPos, startMonthDayTime,deadlineTime);
payFeeDetailMonthInnerServiceSMOImpl.savePayFeeDetailMonths(payFeeDetailMonthPos);
}
@@ -283,7 +235,7 @@
int curDay = 0;
BigDecimal curMonthReceivableAmount = null;
BigDecimal curMonthReceivedAmount = null;
- while (firstMonthDayTime.getTime() > endTime.getTime()) {
+ while (firstMonthDayTime.getTime() < endTime.getTime()) {
curDay = DateUtil.daysBetween(firstMonthDayTime, startMonthDayTime);
// todo 璁$畻 搴旀敹
curMonthReceivableAmount = new BigDecimal(curDay).multiply(dayReceivableAmount).setScale(4, BigDecimal.ROUND_HALF_UP);
@@ -291,7 +243,7 @@
curMonthReceivedAmount = new BigDecimal(curDay).multiply(dayReceivedAmount).setScale(4, BigDecimal.ROUND_HALF_UP);
// todo 淇濆瓨鏁版嵁鍒皃ay_fee_detail_month
- toSavePayFeeDetailMonth(curMonthReceivableAmount.doubleValue(), curMonthReceivedAmount.doubleValue(), feeDetailDto, feeDto, payFeeMonthOwnerDto,payFeeDetailMonthPos,startMonthDayTime);
+ toSavePayFeeDetailMonth(curMonthReceivableAmount.doubleValue(), curMonthReceivedAmount.doubleValue(), feeDetailDto, feeDto, payFeeMonthOwnerDto, payFeeDetailMonthPos, startMonthDayTime,endTime);
// todo 灏唖tartTime 淇敼涓� 涓嬫湀1鏃ユ椂闂�
startMonthDayTime = firstMonthDayTime;
@@ -312,7 +264,7 @@
curMonthReceivedAmount = new BigDecimal(curDay).multiply(dayReceivedAmount).setScale(4, BigDecimal.ROUND_HALF_UP);
// todo 淇濆瓨鏁版嵁鍒皃ay_fee_detail_month
- toSavePayFeeDetailMonth(curMonthReceivableAmount.doubleValue(), curMonthReceivedAmount.doubleValue(), feeDetailDto, feeDto, payFeeMonthOwnerDto,payFeeDetailMonthPos,startMonthDayTime);
+ toSavePayFeeDetailMonth(curMonthReceivableAmount.doubleValue(), curMonthReceivedAmount.doubleValue(), feeDetailDto, feeDto, payFeeMonthOwnerDto, payFeeDetailMonthPos, startMonthDayTime,endTime);
payFeeDetailMonthInnerServiceSMOImpl.savePayFeeDetailMonths(payFeeDetailMonthPos);
}
@@ -331,16 +283,17 @@
FeeDto feeDto,
PayFeeMonthOwnerDto payFeeMonthOwnerDto,
List<PayFeeDetailMonthPo> payFeeDetailMonthPos,
- Date curTime) {
+ Date curTime,
+ Date deadlineTime) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(curTime);
PayFeeDetailMonthPo tmpPayFeeDetailMonthPo = new PayFeeDetailMonthPo();
tmpPayFeeDetailMonthPo.setFeeId(feeDto.getFeeId());
tmpPayFeeDetailMonthPo.setCommunityId(feeDto.getCommunityId());
- if(feeDetailDto == null){
+ if (feeDetailDto == null) {
tmpPayFeeDetailMonthPo.setDetailId("-1");
- }else{ // todo 浜よ垂璁板綍 淇濆瓨鏃�
+ } else { // todo 浜よ垂璁板綍 淇濆瓨鏃�
tmpPayFeeDetailMonthPo.setDetailId(feeDetailDto.getDetailId());
}
tmpPayFeeDetailMonthPo.setDetailYear(calendar.get(Calendar.YEAR) + "");
@@ -352,7 +305,7 @@
getDiscountAmount(Double.parseDouble(tmpPayFeeDetailMonthPo.getReceivableAmount()),
Double.parseDouble(tmpPayFeeDetailMonthPo.getReceivedAmount()),
calendar.getTime(), feeDto) + "");
- tmpPayFeeDetailMonthPo.setMonthId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_monthId));
+ tmpPayFeeDetailMonthPo.setMonthId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_monthId,true));
tmpPayFeeDetailMonthPo.setRemark("绋嬪簭璁$畻鐢熸垚");
tmpPayFeeDetailMonthPo.setObjName(payFeeMonthOwnerDto.getObjName());
tmpPayFeeDetailMonthPo.setObjId(payFeeMonthOwnerDto.getObjId());
@@ -360,9 +313,10 @@
tmpPayFeeDetailMonthPo.setOwnerName(payFeeMonthOwnerDto.getOwnerName());
tmpPayFeeDetailMonthPo.setLink(payFeeMonthOwnerDto.getLink());
tmpPayFeeDetailMonthPo.setCurMonthTime(DateUtil.getFormatTimeStringB(calendar.getTime()));
- if(feeDetailDto == null){
+ tmpPayFeeDetailMonthPo.setDeadlineTime(DateUtil.getFormatTimeStringA(deadlineTime));
+ if (feeDetailDto == null) {
tmpPayFeeDetailMonthPo.setPayFeeTime(null);
- }else{ // todo 浜よ垂璁板綍 淇濆瓨鏃�
+ } else { // todo 浜よ垂璁板綍 淇濆瓨鏃�
tmpPayFeeDetailMonthPo.setPayFeeTime(DateUtil.getFormatTimeStringA(feeDetailDto.getCreateTime()));
}
tmpPayFeeDetailMonthPo.setState("W"); // todo 杩欓噷鏆傛椂鍐欐锛岀洰鍓嶇敤涓嶅埌锛岀畻鏄鐣欏瓧娈�
@@ -370,41 +324,6 @@
tmpPayFeeDetailMonthPo.setConfigId(feeDto.getConfigId());
payFeeDetailMonthPos.add(tmpPayFeeDetailMonthPo);
- }
-
- /**
- * 鑾峰彇褰撳墠缂磋垂璁板綍
- *
- * @param feeDetailDtos
- * @param curDate
- * @return
- */
- private FeeDetailDto getCurFeeDetail(List<FeeDetailDto> feeDetailDtos, Date curDate) {
- 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()) {
- tFeeDetailDtos.add(BeanConvertUtil.covertBean(feeDetailDto,FeeDetailDto.class));
- }
- }
-
- if (tFeeDetailDtos.size() < 1) {
- return null;
- }
- if (tFeeDetailDtos.size() == 1) {
- return tFeeDetailDtos.get(0);
- }
- //todo 杩欑搴旇鏄暟鎹紓甯� 涔熷氨鏄竴涓湀璐圭敤鍙樻洿鍚庨噸澶嶇即璐�
- BigDecimal cReceivedAmount = new BigDecimal(0.00);
- for (FeeDetailDto feeDetailDto : tFeeDetailDtos) {
- cReceivedAmount = cReceivedAmount.add(new BigDecimal(Double.parseDouble(feeDetailDto.getReceivedAmount()))).setScale(4, BigDecimal.ROUND_HALF_UP);
- }
-
- tFeeDetailDtos.get(0).setReceivedAmount(cReceivedAmount.doubleValue() + "");
-
- return tFeeDetailDtos.get(0);
}
--
Gitblit v1.8.0