From 91ff9f520b66fc38a0ce8e7e2e06bdd54487ae1e Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期五, 22 七月 2022 00:01:05 +0800
Subject: [PATCH] 优化 间歇费用 相关bug

---
 service-fee/src/main/java/com/java110/fee/cmd/fee/PayFeeCmd.java |   36 ++++++++++++++++++++++++------------
 1 files changed, 24 insertions(+), 12 deletions(-)

diff --git a/service-fee/src/main/java/com/java110/fee/cmd/fee/PayFeeCmd.java b/service-fee/src/main/java/com/java110/fee/cmd/fee/PayFeeCmd.java
index dec693f..2c81f42 100644
--- a/service-fee/src/main/java/com/java110/fee/cmd/fee/PayFeeCmd.java
+++ b/service-fee/src/main/java/com/java110/fee/cmd/fee/PayFeeCmd.java
@@ -247,7 +247,7 @@
             }
             for (int columnIndex = 0; columnIndex < jsonArray.size(); columnIndex++) {
                 JSONObject param = jsonArray.getJSONObject(columnIndex);
-                if (!StringUtil.isEmpty(param.getString("acctType")) && param.getString("acctType").equals("2004")) { //绉垎璐︽埛
+                if (AccountDto.ACCT_TYPE_INTEGRAL.equals(param.getString("acctType"))) { //绉垎璐︽埛
                     //璐︽埛閲戦
                     BigDecimal amount = new BigDecimal(param.getString("amount"));
                     //鑾峰彇鏈�澶ф姷鎵gН鍒�
@@ -590,32 +590,44 @@
             targetEndTime = endCalender.getTime();
             paramInJson.put("tmpCycles", cycles.doubleValue());
             businessFeeDetail.put("cycles", cycles.doubleValue());
-            businessFeeDetail.put("receivableAmount", receivedAmount.doubleValue());
-        } else if ("-103".equals(paramInJson.getString("cycles"))) {
-            String custEndTime = paramInJson.getString("custEndTime");
-            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
-            Date endDates = null;
-            try {
-                endDates = format.parse(custEndTime);
-            } catch (ParseException e) {
-                e.printStackTrace();
+            //澶勭悊 鍙兘杩樺瓨鍦� 瀹炴敹鎵嬪伐鍑忓厤鐨勬儏鍐�
+            if(paramInJson.containsKey("receivableAmount") && !StringUtil.isEmpty(paramInJson.getString("receivableAmount"))){
+                businessFeeDetail.put("receivableAmount", paramInJson.getString("receivableAmount"));
+            }else {
+                businessFeeDetail.put("receivableAmount", receivedAmount.doubleValue());
             }
+        } else if ("-103".equals(paramInJson.getString("cycles"))) { //杩欓噷鎸夌即璐圭粨鏉熸椂闂寸即璐�
+            String custEndTime = paramInJson.getString("custEndTime");
+            Date endDates = DateUtil.getDateFromStringB(custEndTime);
             Calendar c = Calendar.getInstance();
             c.setTime(endDates);
             c.add(Calendar.DAY_OF_MONTH, 1);
             endDates = c.getTime();//杩欐槸鏄庡ぉ
             targetEndTime = endDates;
-            BigDecimal receivedAmount1 = new BigDecimal(Double.parseDouble(paramInJson.getString("receivedAmount")));
+            BigDecimal receivedAmount1 =  new BigDecimal(Double.parseDouble(paramInJson.getString("receivedAmount")));
             cycles = receivedAmount1.divide(feePrice, 4, BigDecimal.ROUND_HALF_EVEN);
             paramInJson.put("tmpCycles", cycles.doubleValue());
             businessFeeDetail.put("cycles", cycles.doubleValue());
             BigDecimal receivedAmount = new BigDecimal(Double.parseDouble(paramInJson.getString("receivedAmount")));
-            businessFeeDetail.put("receivableAmount", receivedAmount.doubleValue());
+            //澶勭悊 鍙兘杩樺瓨鍦� 瀹炴敹鎵嬪伐鍑忓厤鐨勬儏鍐�
+            if(paramInJson.containsKey("receivableAmount") && !StringUtil.isEmpty(paramInJson.getString("receivableAmount"))){
+                businessFeeDetail.put("receivableAmount", paramInJson.getString("receivableAmount"));
+            }else {
+                businessFeeDetail.put("receivableAmount", receivedAmount.doubleValue());
+            }
         } else {
             targetEndTime = computeFeeSMOImpl.getFeeEndTimeByCycles(feeDto, paramInJson.getString("cycles"));//鏍规嵁缂磋垂鍛ㄦ湡璁$畻 缁撴潫鏃堕棿
             cycles = new BigDecimal(Double.parseDouble(paramInJson.getString("cycles")));
             double tmpReceivableAmount = cycles.multiply(feePrice).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
             businessFeeDetail.put("receivableAmount", tmpReceivableAmount);
+
+            //鍑虹閫掑闂澶勭悊
+            if (FeeConfigDto.COMPUTING_FORMULA_RANT_RATE.equals(feeDto.getComputingFormula())) {
+                computeFeeSMOImpl.dealRentRateCycle(feeDto,cycles.doubleValue());
+                if(feeDto.getOweFee()> 0){
+                    businessFeeDetail.put("receivableAmount", feeDto.getOweFee());
+                }
+            }
         }
         businessFeeDetail.put("endTime", DateUtil.getFormatTimeString(targetEndTime, DateUtil.DATE_FORMATE_STRING_A));
         paramInJson.put("feeInfo", feeDto);

--
Gitblit v1.8.0