From d7d9b601b2e4fdb663375993e2cfbdbd363df421 Mon Sep 17 00:00:00 2001
From: Your Name <you@example.com>
Date: 星期二, 11 七月 2023 22:17:37 +0800
Subject: [PATCH] Merge branch 'master' of http://git.homecommunity.cn/supervip/MicroCommunity

---
 service-fee/src/main/java/com/java110/fee/feeMonth/PayFeeMonthImpl.java |  280 +++++++++++++++++++++++++-------------------------------
 1 files changed, 125 insertions(+), 155 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 8c6793a..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,6 +47,86 @@
 
     public static final int DEFAULT_DEAL_COUNT = 200;
 
+    /**
+     * 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();
+        feeDto.setCommunityId(communityId);
+        int count = feeInnerServiceSMOImpl.queryFeesCount(feeDto);
+
+        int page = 1;
+        int max = 15;
+        if (count < DEFAULT_DEAL_COUNT) {
+            page = 1;
+            max = count;
+        } else {
+            page = (int) Math.ceil((double) count / (double) DEFAULT_DEAL_COUNT);
+            max = DEFAULT_DEAL_COUNT;
+        }
+
+        //todo  姣忔鎸�200鏉″鐞�
+        for (int pageIndex = 0; pageIndex < page; pageIndex++) {
+            feeDto.setPage(pageIndex + 1);
+            feeDto.setRow(max);
+            List<FeeDto> tmpFeeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
+            // 绂绘暎璐圭敤
+            doTmpFeeDtoMonths(communityId, tmpFeeDtos);
+        }
+
+
+    }
+
+    /**
+     * 2.0 鐗╀笟缂磋垂鏃剁鏁� 鎶ヨ〃鏁版嵁
+     *
+     * @param feeId
+     * @param detailId
+     * @param communityId
+     */
+    @Async
+    @Override
+    public void payFeeDetailRefreshFeeMonth(String feeId, String detailId, String communityId) {
+        // todo 鏌ヨ璐圭敤
+        FeeDto feeDto = new FeeDto();
+        feeDto.setCommunityId(communityId);
+        feeDto.setFeeId(feeId);
+        List<FeeDto> tmpFeeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
+
+        Assert.listOnlyOne(tmpFeeDtos, "璐圭敤涓嶅瓨鍦�");
+        feeDto = tmpFeeDtos.get(0);
+        //todo 鏌ヨ 缂磋垂鏄庣粏
+        FeeDetailDto feeDetailDto = new FeeDetailDto();
+        feeDetailDto.setCommunityId(feeDto.getCommunityId());
+        feeDetailDto.setFeeId(feeDto.getFeeId());
+        feeDetailDto.setDetailId(detailId);
+        List<FeeDetailDto> feeDetailDtos = feeDetailInnerServiceSMOImpl.queryFeeDetails(feeDetailDto);
+
+        Assert.listOnlyOne(feeDetailDtos, "缂磋垂璁板綍涓嶅瓨鍦�");
+
+        //todo 璁$畻姣忔湀鍗曚环
+        Double feePrice = payFeeMonthHelp.getMonthFeePrice(feeDto);
+
+        // todo 鍑嗗绂绘暎鐨勫熀纭�鏁版嵁
+        PayFeeMonthOwnerDto payFeeMonthOwnerDto = payFeeMonthHelp.generatorOwnerRoom(feeDto);
+
+        // todo 鍒犻櫎缂磋垂鏃堕棿鑼冨洿鍐呯殑鏁版嵁
+        doDeletePayFeeDetailInMonth(feeDto, feeDetailDtos.get(0));
+
+        // todo 鐢熸垚涓�娈垫椂闂村唴鐨勬暟鎹�
+        maxMonthDateToDeadlineTimeData(feeDto, payFeeMonthOwnerDto, feePrice);
+    }
 
     /**
      * 鐢熸垚鍗曚釜璐圭敤 骞� 绂绘暎鍒版湀
@@ -67,10 +148,39 @@
         doGeneratorOrRefreshFeeMonth(tmpFeeDtos.get(0), communityId);
     }
 
-    public void doGeneratorOrRefreshFeeMonth(FeeDto feeDto, String communityId) {
+    /**
+     * 鐢熸垚澶氫釜璐圭敤 骞� 绂绘暎鍒版湀
+     *
+     * @param feeIds
+     * @param communityId
+     */
+    @Override
+    @Async
+    public void doGeneratorFeeMonths(List<String> feeIds, String communityId) {
+        for (String feeId : feeIds) {
+            doGeneratorOrRefreshFeeMonth(feeId, communityId);
+        }
+    }
 
 
-        //todo 璁$畻姣忔湀鍗曚环
+    /**
+     * 鍒犻櫎鏈堣垂鐢�
+     *
+     * @param feeId
+     * @param communityId
+     */
+    @Override
+    public void deleteFeeMonth(String feeId, String communityId) {
+
+        PayFeeDetailMonthPo payFeeDetailMonthPo = new PayFeeDetailMonthPo();
+        payFeeDetailMonthPo.setFeeId(feeId);
+        payFeeDetailMonthPo.setCommunityId(communityId);
+        payFeeDetailMonthInnerServiceSMOImpl.deletePayFeeDetailMonth(payFeeDetailMonthPo);
+    }
+
+    private void doGeneratorOrRefreshFeeMonth(FeeDto feeDto, String communityId) {
+
+        // todo 璁$畻姣忔湀鍗曚环
         Double feePrice = payFeeMonthHelp.getMonthFeePrice(feeDto);
 
         // todo 鍑嗗绂绘暎鐨勫熀纭�鏁版嵁
@@ -84,165 +194,25 @@
 
     /**
      * 绂绘暎鏈�澶� 绂绘暎鏈堝埌 deadlineTime 鐨勬暟鎹�
+     * <p>
+     * 鏍稿績鏂规硶澶勭悊
      *
      * @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;
+
+        //todo 澶勭悊宸茬粡浜よ繃璐圭殑璁板綍澶勭悊
+        payFeeMonthHelp.waitDispersedFeeDetail(feeDto, payFeeMonthOwnerDto);
+
+
+        //todo 澶勭悊 endTime 鍒� deadlineTime 鐨勮垂鐢�
         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);
+        payFeeMonthHelp.waitDispersedOweFee(feeDto, payFeeMonthOwnerDto, feePrice, 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);
-    }
-
-    /**
-     * 灏忓尯鏁版嵁 绂绘暎涓� 鏈堟暟鎹�
-     *
-     * @param communityId
-     */
-    @Async
-    @Override
-    public void doGeneratorOrRefreshAllFeeMonth(String communityId) {
-
-
-        FeeDto feeDto = new FeeDto();
-        feeDto.setCommunityId(communityId);
-        int count = feeInnerServiceSMOImpl.queryFeesCount(feeDto);
-
-        int page = 1;
-        int max = 15;
-        if (count < DEFAULT_DEAL_COUNT) {
-            page = 1;
-            max = count;
-        } else {
-            page = (int) Math.ceil((double) count / (double) DEFAULT_DEAL_COUNT);
-            max = DEFAULT_DEAL_COUNT;
-        }
-
-        //todo  姣忔鎸�200鏉″鐞�
-        for (int pageIndex = 0; pageIndex < page; pageIndex++) {
-            feeDto.setPage(pageIndex * max + 1);
-            feeDto.setRow(max);
-            List<FeeDto> tmpFeeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
-            // 绂绘暎璐圭敤
-            doTmpFeeDtoMonths(communityId, tmpFeeDtos);
-        }
-
-
-    }
-
-    /**
-     * 鐗╀笟缂磋垂鏃剁鏁� 鎶ヨ〃鏁版嵁
-     *
-     * @param feeId
-     * @param detailId
-     * @param communityId
-     */
-    @Async
-    @Override
-    public void payFeeDetailRefreshFeeMonth(String feeId, String detailId, String communityId) {
-        // todo 鏌ヨ璐圭敤
-        FeeDto feeDto = new FeeDto();
-        feeDto.setCommunityId(communityId);
-        feeDto.setFeeId(feeId);
-        List<FeeDto> tmpFeeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
-
-        Assert.listOnlyOne(tmpFeeDtos, "璐圭敤涓嶅瓨鍦�");
-
-        //todo 鏌ヨ 缂磋垂鏄庣粏
-        FeeDetailDto feeDetailDto = new FeeDetailDto();
-        feeDetailDto.setCommunityId(feeDto.getCommunityId());
-        feeDetailDto.setFeeId(feeDto.getFeeId());
-        feeDetailDto.setDetailId(detailId);
-        List<FeeDetailDto> feeDetailDtos = feeDetailInnerServiceSMOImpl.queryFeeDetails(feeDetailDto);
-
-        Assert.listOnlyOne(feeDetailDtos, "缂磋垂璁板綍涓嶅瓨鍦�");
-
-        //todo 璁$畻姣忔湀鍗曚环
-        Double feePrice = payFeeMonthHelp.getMonthFeePrice(feeDto);
-
-        // todo 鍑嗗绂绘暎鐨勫熀纭�鏁版嵁
-        PayFeeMonthOwnerDto payFeeMonthOwnerDto = payFeeMonthHelp.generatorOwnerRoom(feeDto);
-
-        // todo 鍒犻櫎缂磋垂鏃堕棿鑼冨洿鍐呯殑鏁版嵁
-        doDeletePayFeeDetailInMonth(feeDto, feeDetailDtos.get(0));
-
-        // todo 鐢熸垚涓�娈垫椂闂村唴鐨勬暟鎹�
-        doGeneratorTimeMonthData(feeDto, payFeeMonthOwnerDto, feePrice, feeDetailDtos.get(0).getStartTime(), feeDetailDtos.get(0).getEndTime());
-    }
-
-    @Override
-    public void deleteFeeMonth(String feeId, String communityId) {
-
-        PayFeeDetailMonthPo payFeeDetailMonthPo = new PayFeeDetailMonthPo();
-        payFeeDetailMonthPo.setFeeId(feeId);
-        payFeeDetailMonthPo.setCommunityId(communityId);
-        payFeeDetailMonthInnerServiceSMOImpl.deletePayFeeDetailMonth(payFeeDetailMonthPo);
-    }
 
     /**
      * 鍒犻櫎缂磋垂鑼冨洿鍐呯殑鏁版嵁

--
Gitblit v1.8.0