From 7958f1dddb8a7f4e70d232b07a7703955ecedae0 Mon Sep 17 00:00:00 2001
From: Your Name <you@example.com>
Date: 星期六, 26 八月 2023 12:45:33 +0800
Subject: [PATCH] 优化diamante
---
service-fee/src/main/java/com/java110/fee/feeMonth/PayFeeMonthImpl.java | 212 ++++++++++++++++++++++------------------------------
1 files changed, 91 insertions(+), 121 deletions(-)
diff --git a/service-fee/src/main/java/com/java110/fee/feeMonth/PayFeeMonthImpl.java b/service-fee/src/main/java/com/java110/fee/feeMonth/PayFeeMonthImpl.java
index dd227e7..f05576f 100644
--- a/service-fee/src/main/java/com/java110/fee/feeMonth/PayFeeMonthImpl.java
+++ b/service-fee/src/main/java/com/java110/fee/feeMonth/PayFeeMonthImpl.java
@@ -1,15 +1,13 @@
package com.java110.fee.feeMonth;
import com.alibaba.fastjson.JSONObject;
-import com.java110.core.factory.GenerateCodeFactory;
import com.java110.core.log.LoggerFactory;
import com.java110.core.smo.IComputeFeeSMO;
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.PayFeeMonthOwnerDto;
import com.java110.intf.fee.*;
-import com.java110.po.payFeeDetailMonth.PayFeeDetailMonthPo;
+import com.java110.po.payFee.PayFeeDetailMonthPo;
import com.java110.utils.util.Assert;
import com.java110.utils.util.DateUtil;
import org.slf4j.Logger;
@@ -21,6 +19,9 @@
/**
* 璐圭敤绂绘暎涓烘湀 瀹炵幇绫�
+ * V2
+ * <p>
+ * case 1 瀹氭椂浠诲姟 璋冪敤
*/
@Service
public class PayFeeMonthImpl implements IPayFeeMonth {
@@ -46,127 +47,19 @@
public static final int DEFAULT_DEAL_COUNT = 200;
-
/**
- * 鐢熸垚鍗曚釜璐圭敤 骞� 绂绘暎鍒版湀
- *
- * @param feeId
- * @param communityId
- */
- @Override
- public void doGeneratorOrRefreshFeeMonth(String feeId, String communityId) {
-
- // todo 鏌ヨ璐圭敤
- FeeDto feeDto = new FeeDto();
- feeDto.setCommunityId(communityId);
- feeDto.setFeeId(feeId);
- List<FeeDto> tmpFeeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
-
- Assert.listOnlyOne(tmpFeeDtos, "璐圭敤涓嶅瓨鍦�");
-
- doGeneratorOrRefreshFeeMonth(tmpFeeDtos.get(0), communityId);
- }
-
- public void doGeneratorOrRefreshFeeMonth(FeeDto feeDto, String communityId) {
-
-
- //todo 璁$畻姣忔湀鍗曚环
- Double feePrice = payFeeMonthHelp.getMonthFeePrice(feeDto);
-
- // todo 鍑嗗绂绘暎鐨勫熀纭�鏁版嵁
- PayFeeMonthOwnerDto payFeeMonthOwnerDto = payFeeMonthHelp.generatorOwnerRoom(feeDto);
-
- //todo 绂绘暎start_time 鎴栬�� pay_fee_detail_month 鏈�澶ф湀浠� 鍒� deadlineTime 鐨勬暟鎹�
- maxMonthDateToDeadlineTimeData(feeDto, payFeeMonthOwnerDto, feePrice);
-
-
- }
-
- /**
- * 绂绘暎鏈�澶� 绂绘暎鏈堝埌 deadlineTime 鐨勬暟鎹�
- *
- * @param feeDto
- * @param payFeeMonthOwnerDto
- * @param feePrice
- */
- private void maxMonthDateToDeadlineTimeData(FeeDto feeDto, PayFeeMonthOwnerDto payFeeMonthOwnerDto, Double feePrice) {
- PayFeeDetailMonthDto payFeeDetailMonthDto = new PayFeeDetailMonthDto();
- payFeeDetailMonthDto.setCommunityId(feeDto.getCommunityId());
- payFeeDetailMonthDto.setFeeId(feeDto.getFeeId());
- List<PayFeeDetailMonthDto> payFeeDetailMonthDtos = payFeeDetailMonthInnerServiceSMOImpl.queryPayFeeDetailMaxMonths(payFeeDetailMonthDto);
- Date startTime = null;
- Date deadlineTime = computeFeeSMOImpl.getDeadlineTime(feeDto);
- if (payFeeDetailMonthDtos == null || payFeeDetailMonthDtos.size() < 1) {
- startTime = feeDto.getStartTime();
- } else {
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(DateUtil.getDateFromStringA(payFeeDetailMonthDtos.get(0).getCurMonthTime()));
- calendar.add(Calendar.MONTH, 1);
- startTime = calendar.getTime();
- }
-
- // todo 鐢熸垚涓�娈垫椂闂村唴鐨勬暟鎹�
- doGeneratorTimeMonthData(feeDto, payFeeMonthOwnerDto, feePrice, startTime, deadlineTime);
-
- }
-
- private void doGeneratorTimeMonthData(FeeDto feeDto, PayFeeMonthOwnerDto payFeeMonthOwnerDto, Double feePrice, Date startTime, Date endTime) {
- double maxMonth = Math.ceil(computeFeeSMOImpl.dayCompare(startTime, endTime));
-
- if (maxMonth < 1) {
- return;
- }
- //todo 鏌ヨ 缂磋垂鏄庣粏
- FeeDetailDto feeDetailDto = new FeeDetailDto();
- feeDetailDto.setCommunityId(feeDto.getCommunityId());
- feeDetailDto.setFeeId(feeDto.getFeeId());
- List<FeeDetailDto> feeDetailDtos = feeDetailInnerServiceSMOImpl.queryFeeDetails(feeDetailDto);
-
- //todo 鐢熸垚 鏈堢鏁f暟鎹�
- PayFeeDetailMonthPo tmpPayFeeDetailMonthPo;
- List<PayFeeDetailMonthPo> payFeeDetailMonthPos = new ArrayList<>();
- for (int month = 0; month < maxMonth; month++) {
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(startTime);
- calendar.add(Calendar.MONTH, month);
- //calendar.set(Calendar.DAY_OF_MONTH, 1);
- tmpPayFeeDetailMonthPo = new PayFeeDetailMonthPo();
- tmpPayFeeDetailMonthPo.setFeeId(feeDto.getFeeId());
- tmpPayFeeDetailMonthPo.setCommunityId(feeDto.getCommunityId());
- tmpPayFeeDetailMonthPo.setDetailId(payFeeMonthHelp.getFeeDetailId(feeDetailDtos, calendar.getTime()));
- tmpPayFeeDetailMonthPo.setDetailYear(calendar.get(Calendar.YEAR) + "");
- tmpPayFeeDetailMonthPo.setDetailMonth((calendar.get(Calendar.MONTH) + 1) + "");
- tmpPayFeeDetailMonthPo.setReceivableAmount(payFeeMonthHelp.getReceivableAmount(feeDetailDtos, feePrice, calendar.getTime(), feeDto) + "");
- tmpPayFeeDetailMonthPo.setReceivedAmount(payFeeMonthHelp.getReceivedAmount(feeDetailDtos, feePrice, calendar.getTime(), feeDto) + "");
- tmpPayFeeDetailMonthPo.setDiscountAmount(
- payFeeMonthHelp.getDiscountAmount(Double.parseDouble(tmpPayFeeDetailMonthPo.getReceivableAmount()),
- Double.parseDouble(tmpPayFeeDetailMonthPo.getReceivedAmount()),
- calendar.getTime(), feeDto) + "");
- tmpPayFeeDetailMonthPo.setMonthId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_monthId));
- tmpPayFeeDetailMonthPo.setRemark("绋嬪簭璁$畻鐢熸垚");
- tmpPayFeeDetailMonthPo.setObjName(payFeeMonthOwnerDto.getObjName());
- tmpPayFeeDetailMonthPo.setObjId(payFeeMonthOwnerDto.getObjId());
- tmpPayFeeDetailMonthPo.setOwnerId(payFeeMonthOwnerDto.getOwnerId());
- tmpPayFeeDetailMonthPo.setOwnerName(payFeeMonthOwnerDto.getOwnerName());
- tmpPayFeeDetailMonthPo.setLink(payFeeMonthOwnerDto.getLink());
- tmpPayFeeDetailMonthPo.setCurMonthTime(DateUtil.getFormatTimeStringB(calendar.getTime()));
- tmpPayFeeDetailMonthPo.setPayFeeTime(payFeeMonthHelp.getFeeFeeTime(feeDetailDtos, tmpPayFeeDetailMonthPo.getDetailId()));
- tmpPayFeeDetailMonthPo.setState("W"); // todo 杩欓噷鏆傛椂鍐欐锛岀洰鍓嶇敤涓嶅埌锛岀畻鏄鐣欏瓧娈�
- tmpPayFeeDetailMonthPo.setFeeName(feeDto.getFeeName());
- tmpPayFeeDetailMonthPo.setConfigId(feeDto.getConfigId());
- payFeeDetailMonthPos.add(tmpPayFeeDetailMonthPo);
- }
- payFeeDetailMonthInnerServiceSMOImpl.savePayFeeDetailMonths(payFeeDetailMonthPos);
- }
-
- /**
- * 灏忓尯鏁版嵁 绂绘暎涓� 鏈堟暟鎹�
+ * 1.0 瀹氭椂浠诲姟绂绘暎 灏忓尯鏁版嵁 绂绘暎涓� 鏈堟暟鎹�
*
* @param communityId
*/
@Async
@Override
public void doGeneratorOrRefreshAllFeeMonth(String communityId) {
+
+ //todo 娓呯悊 pay_fee_detail_month
+ PayFeeDetailMonthPo payFeeDetailMonthPo = new PayFeeDetailMonthPo();
+ payFeeDetailMonthPo.setCommunityId(communityId);
+ payFeeDetailMonthInnerServiceSMOImpl.deletePayFeeDetailMonth(payFeeDetailMonthPo);
FeeDto feeDto = new FeeDto();
@@ -196,7 +89,7 @@
}
/**
- * 鐗╀笟缂磋垂鏃剁鏁� 鎶ヨ〃鏁版嵁
+ * 2.0 鐗╀笟缂磋垂鏃剁鏁� 鎶ヨ〃鏁版嵁
*
* @param feeId
* @param detailId
@@ -212,7 +105,7 @@
List<FeeDto> tmpFeeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
Assert.listOnlyOne(tmpFeeDtos, "璐圭敤涓嶅瓨鍦�");
-
+ feeDto = tmpFeeDtos.get(0);
//todo 鏌ヨ 缂磋垂鏄庣粏
FeeDetailDto feeDetailDto = new FeeDetailDto();
feeDetailDto.setCommunityId(feeDto.getCommunityId());
@@ -232,9 +125,50 @@
doDeletePayFeeDetailInMonth(feeDto, feeDetailDtos.get(0));
// todo 鐢熸垚涓�娈垫椂闂村唴鐨勬暟鎹�
- doGeneratorTimeMonthData(feeDto, payFeeMonthOwnerDto, feePrice, feeDetailDtos.get(0).getStartTime(), feeDetailDtos.get(0).getEndTime());
+ maxMonthDateToDeadlineTimeData(feeDto, payFeeMonthOwnerDto, feePrice);
}
+ /**
+ * 鐢熸垚鍗曚釜璐圭敤 骞� 绂绘暎鍒版湀
+ *
+ * @param feeId
+ * @param communityId
+ */
+ @Override
+ public void doGeneratorOrRefreshFeeMonth(String feeId, String communityId) {
+
+ // todo 鏌ヨ璐圭敤
+ FeeDto feeDto = new FeeDto();
+ feeDto.setCommunityId(communityId);
+ feeDto.setFeeId(feeId);
+ List<FeeDto> tmpFeeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
+
+ Assert.listOnlyOne(tmpFeeDtos, "璐圭敤涓嶅瓨鍦�");
+
+ doGeneratorOrRefreshFeeMonth(tmpFeeDtos.get(0), communityId);
+ }
+
+ /**
+ * 鐢熸垚澶氫釜璐圭敤 骞� 绂绘暎鍒版湀
+ *
+ * @param feeIds
+ * @param communityId
+ */
+ @Override
+ @Async
+ public void doGeneratorFeeMonths(List<String> feeIds, String communityId) {
+ for (String feeId : feeIds) {
+ doGeneratorOrRefreshFeeMonth(feeId, communityId);
+ }
+ }
+
+
+ /**
+ * 鍒犻櫎鏈堣垂鐢�
+ *
+ * @param feeId
+ * @param communityId
+ */
@Override
public void deleteFeeMonth(String feeId, String communityId) {
@@ -244,6 +178,42 @@
payFeeDetailMonthInnerServiceSMOImpl.deletePayFeeDetailMonth(payFeeDetailMonthPo);
}
+ private void doGeneratorOrRefreshFeeMonth(FeeDto feeDto, String communityId) {
+
+ // todo 璁$畻姣忔湀鍗曚环
+ Double feePrice = payFeeMonthHelp.getMonthFeePrice(feeDto);
+
+ // todo 鍑嗗绂绘暎鐨勫熀纭�鏁版嵁
+ PayFeeMonthOwnerDto payFeeMonthOwnerDto = payFeeMonthHelp.generatorOwnerRoom(feeDto);
+
+ //todo 绂绘暎start_time 鎴栬�� pay_fee_detail_month 鏈�澶ф湀浠� 鍒� deadlineTime 鐨勬暟鎹�
+ maxMonthDateToDeadlineTimeData(feeDto, payFeeMonthOwnerDto, feePrice);
+
+
+ }
+
+ /**
+ * 绂绘暎鏈�澶� 绂绘暎鏈堝埌 deadlineTime 鐨勬暟鎹�
+ * <p>
+ * 鏍稿績鏂规硶澶勭悊
+ *
+ * @param feeDto
+ * @param payFeeMonthOwnerDto
+ * @param feePrice
+ */
+ private void maxMonthDateToDeadlineTimeData(FeeDto feeDto, PayFeeMonthOwnerDto payFeeMonthOwnerDto, Double feePrice) {
+
+ //todo 澶勭悊宸茬粡浜よ繃璐圭殑璁板綍澶勭悊
+ payFeeMonthHelp.waitDispersedFeeDetail(feeDto, payFeeMonthOwnerDto);
+
+
+ //todo 澶勭悊 endTime 鍒� deadlineTime 鐨勮垂鐢�
+ Date deadlineTime = computeFeeSMOImpl.getDeadlineTime(feeDto);
+ payFeeMonthHelp.waitDispersedOweFee(feeDto, payFeeMonthOwnerDto, feePrice, deadlineTime);
+
+ }
+
+
/**
* 鍒犻櫎缂磋垂鑼冨洿鍐呯殑鏁版嵁
*
--
Gitblit v1.8.0