From a26c074129afced8fe87e300fb501030fde0c056 Mon Sep 17 00:00:00 2001
From: chengf <2156125618@qq.com>
Date: 星期五, 04 七月 2025 18:38:29 +0800
Subject: [PATCH] 添加二级费用项

---
 service-fee/src/main/java/com/java110/fee/feeMonth/PayFeeMonthHelp.java |  301 +++++++++-----------------------------------------
 1 files changed, 55 insertions(+), 246 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 7244c9d..6fe0331 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
@@ -97,7 +97,17 @@
         Map feePriceAll = computeFeeSMOImpl.getFeePrice(feeDto);
 
         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();
         return feePrice;
     }
 
@@ -135,15 +145,7 @@
 
         for (FeeDetailDto feeDetailDto : feeDetailDtos) {
             // todo 閫愭潯鍘荤鏁�
-            try {
-                // 鑷劧鏈堝疄鏀跺鐞�
-                doDispersedFeeDetailNormalMonth(feeDetailDto, feeDto, payFeeMonthOwnerDto, feePrice);
-
-                //闈炶嚜鐒舵湀鎴栬�呬竴娆℃�ц垂鐢ㄥ鐞嗗凡缁忎氦杩囪垂鐨�
-                doDispersedFeeDetailUnNormalMonth(feeDetailDto, feeDto, payFeeMonthOwnerDto, feePrice);
-            }catch (Exception e){
-                e.printStackTrace();
-            }
+            doDispersedFeeDetail(feeDetailDto, feeDto, payFeeMonthOwnerDto, feePrice);
         }
     }
 
@@ -157,7 +159,7 @@
      * @param deadlineTime
      */
     @Override
-    public void waitDispersedOweFee(FeeDto feeDto, PayFeeMonthOwnerDto payFeeMonthOwnerDto, Double feePrice, Date deadlineTime, double oweMonth) {
+    public void waitDispersedOweFee(FeeDto feeDto, PayFeeMonthOwnerDto payFeeMonthOwnerDto, Double feePrice, Date deadlineTime) {
 
 
         // todo 娓呯悊 detailId 涓�-1 鐨勬暟鎹�
@@ -172,31 +174,6 @@
             return;
         }
 
-        // 鑷劧鏈堝懆鏈熸�ц垂鐢ㄨ绠�
-        waitDispersedOweFeeCycleNormalMonth(feeDto, payFeeMonthOwnerDto, feePrice, deadlineTime);
-
-        // 涓�娆℃�ф垨鑰呴潪鑷劧鏈堝鐞�
-        waitDispersedOweFeeOnceUnNormalMonth(feeDto, payFeeMonthOwnerDto, feePrice, deadlineTime, oweMonth);
-
-    }
-
-    /**
-     * 鑷劧鏈堝懆鏈熸�ц垂鐢ㄨ绠�
-     *
-     * @param feeDto
-     * @param payFeeMonthOwnerDto
-     * @param feePrice
-     * @param deadlineTime
-     */
-    private void waitDispersedOweFeeCycleNormalMonth(FeeDto feeDto, PayFeeMonthOwnerDto payFeeMonthOwnerDto, Double feePrice, Date deadlineTime) {
-        // 涓�娆℃�ц垂鐢ㄧ洿鎺ヨ繑鍥�
-        if (FeeDto.FEE_FLAG_ONCE.equals(feeDto.getFeeFlag())) {
-            return;
-        }
-        // 涓嶆槸鑷劧鏈� 璐圭敤鐩存帴杩斿洖
-        if (DateUtil.getDay(feeDto.getStartTime()) != 1) {
-            return;
-        }
         List<PayFeeDetailMonthPo> payFeeDetailMonthPos = new ArrayList<>();
         // todo 澶勭悊 寮�濮嬫椂闂村拰缁撴潫鏃堕棿
         Date startTime = DateUtil.timeToDate(feeDto.getEndTime());
@@ -205,6 +182,15 @@
         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), 8, BigDecimal.ROUND_HALF_UP);// 鏃� 搴旀敹
+        }
 
         // todo 瀵绘壘绗竴涓嚜鐒舵湀 涓�鏃�
         Calendar firstMonthDayCal = Calendar.getInstance();
@@ -226,7 +212,11 @@
             calendar.setTime(startMonthDayTime);
             curMonthMaxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
 
-            dayReceivableAmount = receivableAmount.divide(new BigDecimal(curMonthMaxDay), 8, BigDecimal.ROUND_HALF_UP);// 鏃� 瀹炴敹
+
+            //todo 鍛ㄦ湡鎬ц垂鐢� 鏃ュ簲鏀堕噸鏂扮畻
+            if (!FeeDto.FEE_FLAG_ONCE.equals(feeDto.getFeeFlag())) {
+                dayReceivableAmount = receivableAmount.divide(new BigDecimal(curMonthMaxDay), 8, BigDecimal.ROUND_HALF_UP);// 鏃� 瀹炴敹
+            }
             // todo 璁$畻 搴旀敹
             curMonthReceivableAmount = new BigDecimal(curDay).multiply(dayReceivableAmount).setScale(4, BigDecimal.ROUND_HALF_UP);
 
@@ -250,111 +240,25 @@
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(startMonthDayTime);
         curMonthMaxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
+        // todo 濡傛灉涓嶆槸鏁存湀锛屽垯杞崲涓烘寜澶╄绠�
+//        if (curDay != curMonthMaxDay) {
         //todo 鍛ㄦ湡鎬ц垂鐢� 鏃ュ簲鏀堕噸鏂扮畻
         if (!FeeDto.FEE_FLAG_ONCE.equals(feeDto.getFeeFlag())) {
             dayReceivableAmount = receivableAmount.divide(new BigDecimal(curMonthMaxDay), 8, BigDecimal.ROUND_HALF_UP);// 鏃� 瀹炴敹
         }
         // todo 璁$畻 搴旀敹
         curMonthReceivableAmount = new BigDecimal(curDay).multiply(dayReceivableAmount).setScale(4, BigDecimal.ROUND_HALF_UP);
-
+//        } else { // todo 濡傛灉鏄暣鏈� 閭e氨鎸夋湀璁$畻锛屼互鍏� 杞崲鎴愬ぉ鍐� 涔樹互澶╂暟鍚庣殑璇樊
+//            curMonthReceivableAmount = receivableAmount;
+//        }
         // todo 淇濆瓨鏁版嵁鍒皃ay_fee_detail_month
         toSavePayFeeDetailMonth(curMonthReceivableAmount.doubleValue(), 0, null, feeDto, payFeeMonthOwnerDto, payFeeDetailMonthPos, startMonthDayTime, deadlineTime);
         payFeeDetailMonthInnerServiceSMOImpl.savePayFeeDetailMonths(payFeeDetailMonthPos);
+
     }
 
-
-    /**
-     * 涓�娆℃�ф垨鑰呴潪鑷劧鏈堝鐞�
-     *
-     * @param feeDto
-     * @param payFeeMonthOwnerDto
-     * @param deadlineTime
-     * @param oweMonth
-     */
-    private void waitDispersedOweFeeOnceUnNormalMonth(FeeDto feeDto, PayFeeMonthOwnerDto payFeeMonthOwnerDto, double feePrice, Date deadlineTime, double oweMonth) {
-
-        // 涓嶆槸涓�娆℃�ц垂鐢� 骞朵笖鏄� 鑷劧鏈堝氨杩斿洖
-        if (!FeeDto.FEE_FLAG_ONCE.equals(feeDto.getFeeFlag()) && DateUtil.getDay(feeDto.getStartTime()) == 1) {
-            return;
-        }
-        List<PayFeeDetailMonthPo> payFeeDetailMonthPos = new ArrayList<>();
-        // todo 澶勭悊 寮�濮嬫椂闂村拰缁撴潫鏃堕棿
-        Date startTime = DateUtil.timeToDate(feeDto.getEndTime());
-        Date endTime = DateUtil.deadTimeToDate(deadlineTime);
-
-
-        BigDecimal receivableAmount = new BigDecimal(feePrice).multiply(new BigDecimal(oweMonth)).setScale(8, BigDecimal.ROUND_HALF_UP);
-
-        BigDecimal dayReceivableAmount = null;
-
-
-        int day = DateUtil.daysBetween(endTime, startTime);
-        if (day < 1) {
-            day = 1;
-        }
-        dayReceivableAmount = receivableAmount.divide(new BigDecimal(day), 8, BigDecimal.ROUND_HALF_UP);// 鏃� 搴旀敹
-
-        // todo 瀵绘壘绗竴涓嚜鐒舵湀 涓�鏃�
-        Calendar firstMonthDayCal = Calendar.getInstance();
-        firstMonthDayCal.setTime(startTime);
-        firstMonthDayCal.add(Calendar.MONTH, 1);
-        firstMonthDayCal.set(Calendar.DAY_OF_MONTH, 1);
-        Date firstMonthDayTime = firstMonthDayCal.getTime();
-
-        Date startMonthDayTime = startTime;
-        // todo  寰幆锛屽彧鍒� firstMonthDayTime 澶т簬 endTime
-        int curDay = 0;
-        int curMonthMaxDay = 30;
-        BigDecimal curMonthReceivableAmount = null;
-
-        while (firstMonthDayTime.getTime() < endTime.getTime()) {
-            curDay = DateUtil.daysBetween(firstMonthDayTime, startMonthDayTime);
-            // 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, deadlineTime);
-
-            // todo 灏唖tartTime 淇敼涓� 涓嬫湀1鏃ユ椂闂�
-            startMonthDayTime = firstMonthDayTime;
-            firstMonthDayCal.add(Calendar.MONTH, 1);
-            firstMonthDayTime = firstMonthDayCal.getTime();
-        }
-
-        //todo 鏈�鍚庡鐞� 鏈�鍚� startMonthDayTime 鍒癳ndTime 鐨�
-        if (startMonthDayTime.getTime() >= endTime.getTime()) {
-            payFeeDetailMonthInnerServiceSMOImpl.savePayFeeDetailMonths(payFeeDetailMonthPos);
-            return;
-        }
-        curDay = DateUtil.daysBetween(endTime, startMonthDayTime);
-        // 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, deadlineTime);
-        payFeeDetailMonthInnerServiceSMOImpl.savePayFeeDetailMonths(payFeeDetailMonthPos);
-    }
-
-
-
-
-    /**
-     * 鑷劧鏈堝鐞嗗凡缁忎氦杩囪垂鐨�
-     *
-     * @param feeDetailDto
-     * @param feeDto
-     * @param payFeeMonthOwnerDto
-     * @param feePrice
-     */
-    private void doDispersedFeeDetailNormalMonth(FeeDetailDto feeDetailDto, FeeDto feeDto, PayFeeMonthOwnerDto
+    private void doDispersedFeeDetail(FeeDetailDto feeDetailDto, FeeDto feeDto, PayFeeMonthOwnerDto
             payFeeMonthOwnerDto, Double feePrice) {
-        // 涓�娆℃�ц垂鐢ㄧ洿鎺ヨ繑鍥�
-        if (FeeDto.FEE_FLAG_ONCE.equals(feeDto.getFeeFlag())) {
-            return;
-        }
-        // 涓嶆槸鑷劧鏈� 璐圭敤鐩存帴杩斿洖
-        if (DateUtil.getDay(feeDto.getStartTime()) != 1) {
-            return;
-        }
         List<PayFeeDetailMonthPo> payFeeDetailMonthPos = new ArrayList<>();
 
         // todo 鍘婚櫎 寮�濮嬫椂闂村拰 缁撴潫鏃堕棿鐨� 灏忔椂 鍒嗛挓 绉�
@@ -369,119 +273,8 @@
         }
         double month = DateUtil.dayCompare(feeDetailDto.getStartTime(), feeDetailDto.getEndTime(), true);
 
-        BigDecimal receivableAmount = new BigDecimal(feeDetailDto.getReceivableAmount());
-        BigDecimal receivedAmount = new BigDecimal(feeDetailDto.getReceivedAmount());
-        BigDecimal monthReceivableAmount = receivableAmount.divide(new BigDecimal(month + ""), 8, BigDecimal.ROUND_HALF_UP);
-        BigDecimal monthReceivedAmount = receivedAmount.divide(new BigDecimal(month + ""), 8, BigDecimal.ROUND_HALF_UP);
-
-        BigDecimal dayReceivableAmount = null;
-        BigDecimal dayReceivedAmount = null;
-
-        // todo 瀵绘壘绗竴涓嚜鐒舵湀 涓�鏃�
-        Calendar firstMonthDayCal = Calendar.getInstance();
-        firstMonthDayCal.setTime(startTime);
-        firstMonthDayCal.add(Calendar.MONTH, 1);
-        firstMonthDayCal.set(Calendar.DAY_OF_MONTH, 1);
-        Date firstMonthDayTime = firstMonthDayCal.getTime();
-
-        Date startMonthDayTime = startTime;
-        // todo  寰幆锛屽彧鍒� firstMonthDayTime 澶т簬 endTime
-        int curDay = 0;
-        BigDecimal curMonthReceivableAmount = null;
-        BigDecimal curMonthReceivedAmount = null;
-        int curMonthMaxDay = 30;
-        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 = monthReceivableAmount.divide(new BigDecimal(curMonthMaxDay), 8, BigDecimal.ROUND_HALF_UP);// 鏃� 瀹炴敹
-            dayReceivedAmount = monthReceivedAmount.divide(new BigDecimal(curMonthMaxDay), 8, BigDecimal.ROUND_HALF_UP);// 鏃� 瀹炴敹
-            // todo 璁$畻 搴旀敹
-            curMonthReceivableAmount = new BigDecimal(curDay).multiply(dayReceivableAmount).setScale(4, BigDecimal.ROUND_HALF_UP);
-            // todo 璁$畻 瀹炴敹
-            curMonthReceivedAmount = new BigDecimal(curDay).multiply(dayReceivedAmount).setScale(4, BigDecimal.ROUND_HALF_UP);
-            if(curMonthReceivableAmount.doubleValue() > receivableAmount.doubleValue()){
-                curMonthReceivableAmount = receivableAmount;
-            }
-            if(curMonthReceivedAmount.doubleValue() > receivedAmount.doubleValue()){
-                curMonthReceivedAmount = receivedAmount;
-            }
-            // todo 淇濆瓨鏁版嵁鍒皃ay_fee_detail_month
-            toSavePayFeeDetailMonth(curMonthReceivableAmount.doubleValue(), curMonthReceivedAmount.doubleValue(), feeDetailDto, feeDto, payFeeMonthOwnerDto, payFeeDetailMonthPos, startMonthDayTime, endTime);
-
-            // todo 灏唖tartTime 淇敼涓� 涓嬫湀1鏃ユ椂闂�
-            startMonthDayTime = firstMonthDayTime;
-            firstMonthDayCal.add(Calendar.MONTH, 1);
-            firstMonthDayTime = firstMonthDayCal.getTime();
-
-            receivableAmount = receivableAmount.subtract(curMonthReceivableAmount);
-            receivedAmount = receivedAmount.subtract(curMonthReceivedAmount);
-        }
-
-        //todo 鏈�鍚庡鐞� 鏈�鍚� startMonthDayTime 鍒癳ndTime 鐨�
-        if (startMonthDayTime.getTime() >= endTime.getTime()) {
-            payFeeDetailMonthInnerServiceSMOImpl.savePayFeeDetailMonths(payFeeDetailMonthPos);
-            return;
-        }
-
-        curDay = DateUtil.daysBetween(endTime, startMonthDayTime);
-        // todo 璁$畻褰撴湀澶╂暟
-        Calendar calendar = Calendar.getInstance();
-        calendar.setTime(startMonthDayTime);
-        curMonthMaxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
-        dayReceivableAmount = monthReceivableAmount.divide(new BigDecimal(curMonthMaxDay), 8, BigDecimal.ROUND_HALF_UP);// 鏃� 瀹炴敹
-        dayReceivedAmount = monthReceivedAmount.divide(new BigDecimal(curMonthMaxDay), 8, BigDecimal.ROUND_HALF_UP);// 鏃� 瀹炴敹
-
-        // todo 璁$畻 搴旀敹
-        curMonthReceivableAmount = new BigDecimal(curDay).multiply(dayReceivableAmount).setScale(4, BigDecimal.ROUND_HALF_UP);
-        // todo 璁$畻 瀹炴敹
-        curMonthReceivedAmount = new BigDecimal(curDay).multiply(dayReceivedAmount).setScale(4, BigDecimal.ROUND_HALF_UP);
-
-        if(curMonthReceivableAmount.doubleValue() > receivableAmount.doubleValue()){
-            curMonthReceivableAmount = receivableAmount;
-        }
-        if(curMonthReceivedAmount.doubleValue() > receivedAmount.doubleValue()){
-            curMonthReceivedAmount = receivedAmount;
-        }
-
-        // todo 淇濆瓨鏁版嵁鍒皃ay_fee_detail_month
-        toSavePayFeeDetailMonth(curMonthReceivableAmount.doubleValue(), curMonthReceivedAmount.doubleValue(), feeDetailDto, feeDto, payFeeMonthOwnerDto, payFeeDetailMonthPos, startMonthDayTime, endTime);
-        payFeeDetailMonthInnerServiceSMOImpl.savePayFeeDetailMonths(payFeeDetailMonthPos);
-    }
-
-
-    /**
-     * 闈炶嚜鐒舵湀鎴栬�呬竴娆℃�ц垂鐢ㄥ鐞嗗凡缁忎氦杩囪垂鐨�
-     *
-     * @param feeDetailDto
-     * @param feeDto
-     * @param payFeeMonthOwnerDto
-     * @param feePrice
-     */
-    private void doDispersedFeeDetailUnNormalMonth(FeeDetailDto feeDetailDto, FeeDto feeDto, PayFeeMonthOwnerDto
-            payFeeMonthOwnerDto, Double feePrice) {
-        // 涓嶆槸涓�娆℃�ц垂鐢� 骞朵笖鏄� 鑷劧鏈堝氨杩斿洖
-        if (!FeeDto.FEE_FLAG_ONCE.equals(feeDto.getFeeFlag()) && DateUtil.getDay(feeDto.getStartTime()) == 1) {
-            return;
-        }
-
-        List<PayFeeDetailMonthPo> payFeeDetailMonthPos = new ArrayList<>();
-
-        // todo 鍘婚櫎 寮�濮嬫椂闂村拰 缁撴潫鏃堕棿鐨� 灏忔椂 鍒嗛挓 绉�
-        Date startTime = DateUtil.timeToDate(feeDetailDto.getStartTime());
-        Date endTime = feeDetailDto.getEndTime();
-        endTime = DateUtil.getNextSecDateTime(endTime);
-        endTime = DateUtil.timeToDate(endTime);
-
-        int day = DateUtil.daysBetween(endTime, startTime);
-        if (day < 1) {
-            day = 1;
-        }
-
-        BigDecimal receivableAmount = new BigDecimal(feeDetailDto.getReceivableAmount());
-        BigDecimal receivedAmount = new BigDecimal(feeDetailDto.getReceivedAmount());
+        BigDecimal receivableAmount = new BigDecimal(feePrice + "");
+        BigDecimal receivedAmount = new BigDecimal(Double.parseDouble(feeDetailDto.getReceivedAmount()));
 
         BigDecimal dayReceivableAmount = receivableAmount.divide(new BigDecimal(day), 8, BigDecimal.ROUND_HALF_UP);// 鏃� 搴旀敹
         BigDecimal dayReceivedAmount = receivedAmount.divide(new BigDecimal(day), 8, BigDecimal.ROUND_HALF_UP);// 鏃� 瀹炴敹
@@ -501,6 +294,15 @@
         int curMonthMaxDay = 30;
         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);
+            if (!FeeDto.FEE_FLAG_ONCE.equals(feeDto.getFeeFlag())) {
+                dayReceivableAmount = receivableAmount.divide(new BigDecimal(curMonthMaxDay), 8, BigDecimal.ROUND_HALF_UP);// 鏃� 瀹炴敹
+                dayReceivedAmount = receivedAmount.divide(new BigDecimal(month + ""), 8, BigDecimal.ROUND_HALF_UP);// 鏃� 瀹炴敹
+                dayReceivedAmount = dayReceivedAmount.divide(new BigDecimal(curMonthMaxDay), 8, BigDecimal.ROUND_HALF_UP);// 鏃� 瀹炴敹
+            }
             // todo 璁$畻 搴旀敹
             curMonthReceivableAmount = new BigDecimal(curDay).multiply(dayReceivableAmount).setScale(4, BigDecimal.ROUND_HALF_UP);
             // todo 璁$畻 瀹炴敹
@@ -521,6 +323,15 @@
         }
 
         curDay = DateUtil.daysBetween(endTime, startMonthDayTime);
+        // todo 璁$畻褰撴湀澶╂暟
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(startMonthDayTime);
+        curMonthMaxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
+        if (!FeeDto.FEE_FLAG_ONCE.equals(feeDto.getFeeFlag())) {
+            dayReceivableAmount = receivableAmount.divide(new BigDecimal(curMonthMaxDay), 8, BigDecimal.ROUND_HALF_UP);// 鏃� 瀹炴敹
+            dayReceivedAmount = receivedAmount.divide(new BigDecimal(month + ""), 8, BigDecimal.ROUND_HALF_UP);// 鏃� 瀹炴敹
+            dayReceivedAmount = dayReceivedAmount.divide(new BigDecimal(curMonthMaxDay), 8, BigDecimal.ROUND_HALF_UP);// 鏃� 瀹炴敹
+        }
         // todo 璁$畻 搴旀敹
         curMonthReceivableAmount = new BigDecimal(curDay).multiply(dayReceivableAmount).setScale(4, BigDecimal.ROUND_HALF_UP);
         // todo 璁$畻 瀹炴敹
@@ -531,6 +342,7 @@
         payFeeDetailMonthInnerServiceSMOImpl.savePayFeeDetailMonths(payFeeDetailMonthPos);
 
     }
+
     /**
      * 淇濆瓨鏁版嵁
      *
@@ -567,9 +379,6 @@
                 getDiscountAmount(Double.parseDouble(tmpPayFeeDetailMonthPo.getReceivableAmount()),
                         Double.parseDouble(tmpPayFeeDetailMonthPo.getReceivedAmount()),
                         calendar.getTime(), feeDto) + "");
-        if (feeDetailDto == null) {
-            tmpPayFeeDetailMonthPo.setDiscountAmount("0");
-        }
         tmpPayFeeDetailMonthPo.setMonthId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_monthId, true));
         tmpPayFeeDetailMonthPo.setRemark("绋嬪簭璁$畻鐢熸垚");
         tmpPayFeeDetailMonthPo.setObjName(payFeeMonthOwnerDto.getObjName());

--
Gitblit v1.8.0